--- /dev/null
+log
+*.log
+*.o
+*~
+*.bak
+*.ok
+.gdb_history
+core
+a.out
+*.unfiltered
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.i
CC=gcc-4.1.1
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=bad-code.c
CC=powerpc-gentoo-linux-uclibc-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=seed48_r.i
CC=hppa2.0-unknown-linux-gnu-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.ii
CC=g++
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.ii
CC=g++-3.4.6
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.ii
CC=g++-3.4.6
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.ii
CC=g++
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=jsmath.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.ii
CC=g++
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.i
CC=gcc-3.4.6
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.i
CC=gcc-3.4.6
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.ii
CC=g++
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=vartest.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=gconf.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=gdevpdfe.i
CC=${CC:-gcc}
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=pic.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=fp_mul_comba.c
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.i
CC=sh4-unknown-linux-gnu-gcc-4.1.1
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.i
CC=arm-unknown-linux-gnu-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.i
CC=powerpc64-unknown-linux-gnu-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=video_out_dfb.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=sigsuspend.s
CC=/usr/powerpc-unknown-linux-gnu/alpha-unknown-linux-gnu/binutils-bin/2.17.50.0.6/as
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=test.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=xorg.i
CC=gcc-4.2.2
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.ii
CC=g++
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=mandel.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.ii
CC=g++-4.1.2
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ice.ii
CC=g++
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=gtk.i
CC=sh4-unknown-linux-gnu-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=af_volnorm.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=test.mi
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=texenvprogram.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=test.i
CC=gcc
--- /dev/null
+ enum yytokentype {
+ keyword_class = 258,
+ keyword_module = 259,
+ keyword_def = 260,
+ keyword_undef = 261,
+ keyword_begin = 262,
+ keyword_rescue = 263,
+ keyword_ensure = 264,
+ keyword_end = 265,
+ keyword_if = 266,
+ keyword_unless = 267,
+ keyword_then = 268,
+ keyword_elsif = 269,
+ keyword_else = 270,
+ keyword_case = 271,
+ keyword_when = 272,
+ keyword_while = 273,
+ keyword_until = 274,
+ keyword_for = 275,
+ keyword_break = 276,
+ keyword_next = 277,
+ keyword_redo = 278,
+ keyword_retry = 279,
+ keyword_in = 280,
+ keyword_do = 281,
+ keyword_do_cond = 282,
+ keyword_do_block = 283,
+ keyword_do_LAMBDA = 284,
+ keyword_return = 285,
+ keyword_yield = 286,
+ keyword_super = 287,
+ keyword_self = 288,
+ keyword_nil = 289,
+ keyword_true = 290,
+ keyword_false = 291,
+ keyword_and = 292,
+ keyword_or = 293,
+ keyword_not = 294,
+ modifier_if = 295,
+ modifier_unless = 296,
+ modifier_while = 297,
+ modifier_until = 298,
+ modifier_rescue = 299,
+ keyword_alias = 300,
+ keyword_defined = 301,
+ keyword_BEGIN = 302,
+ keyword_END = 303,
+ keyword__LINE__ = 304,
+ keyword__FILE__ = 305,
+ keyword__ENCODING__ = 306,
+ tIDENTIFIER = 307,
+ tFID = 308,
+ tGVAR = 309,
+ tIVAR = 310,
+ tCONSTANT = 311,
+ tCVAR = 312,
+ tLABEL = 313,
+ tINTEGER = 314,
+ tFLOAT = 315,
+ tSTRING_CONTENT = 316,
+ tCHAR = 317,
+ tNTH_REF = 318,
+ tBACK_REF = 319,
+ tREGEXP_END = 320,
+ tUPLUS = 321,
+ tUMINUS = 322,
+ tPOW = 323,
+ tCMP = 324,
+ tEQ = 325,
+ tEQQ = 326,
+ tNEQ = 327,
+ tGEQ = 328,
+ tLEQ = 329,
+ tANDOP = 330,
+ tOROP = 331,
+ tMATCH = 332,
+ tNMATCH = 333,
+ tDOT2 = 334,
+ tDOT3 = 335,
+ tAREF = 336,
+ tASET = 337,
+ tLSHFT = 338,
+ tRSHFT = 339,
+ tCOLON2 = 340,
+ tCOLON3 = 341,
+ tOP_ASGN = 342,
+ tASSOC = 343,
+ tLPAREN = 344,
+ tLPAREN_ARG = 345,
+ tRPAREN = 346,
+ tLBRACK = 347,
+ tLBRACE = 348,
+ tLBRACE_ARG = 349,
+ tSTAR = 350,
+ tAMPER = 351,
+ tLAMBDA = 352,
+ tSYMBEG = 353,
+ tSTRING_BEG = 354,
+ tXSTRING_BEG = 355,
+ tREGEXP_BEG = 356,
+ tWORDS_BEG = 357,
+ tQWORDS_BEG = 358,
+ tSTRING_DBEG = 359,
+ tSTRING_DVAR = 360,
+ tSTRING_END = 361,
+ tLAMBEG = 362,
+ tLOWEST = 363,
+ tUMINUS_NUM = 364,
+ idNULL = 365,
+ idRespond_to = 366,
+ idIFUNC = 367,
+ idCFUNC = 368,
+ idThrowState = 369,
+ id_core_set_method_alias = 370,
+ id_core_set_variable_alias = 371,
+ id_core_undef_method = 372,
+ id_core_define_method = 373,
+ id_core_define_singleton_method = 374,
+ id_core_set_postexe = 375,
+ tLAST_TOKEN = 376
+ };
+typedef unsigned int size_t;
+typedef int wchar_t;
+union wait
+ {
+ int w_status;
+ struct
+ {
+ unsigned int __w_termsig:7;
+ unsigned int __w_coredump:1;
+ unsigned int __w_retcode:8;
+ unsigned int:16;
+ } __wait_terminated;
+ struct
+ {
+ unsigned int __w_stopval:8;
+ unsigned int __w_stopsig:8;
+ unsigned int:16;
+ } __wait_stopped;
+ };
+typedef union
+ {
+ union wait *__uptr;
+ int *__iptr;
+ } __WAIT_STATUS __attribute__ ((__transparent_union__));
+typedef struct
+ {
+ int quot;
+ int rem;
+ } div_t;
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } ldiv_t;
+__extension__ typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } lldiv_t;
+extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;
+extern double atof (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern int atoi (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern long int atol (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__ extern long long int atoll (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern double strtod (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern float strtof (__const char *__restrict __nptr,
+ char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern long double strtold (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern long int strtol (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+typedef struct __locale_struct
+{
+ struct locale_data *__locales[13];
+ const unsigned short int *__ctype_b;
+ const int *__ctype_tolower;
+ const int *__ctype_toupper;
+ const char *__names[13];
+} *__locale_t;
+extern long int strtol_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base,
+ __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
+extern unsigned long int strtoul_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
+__extension__
+extern long long int strtoll_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
+__extension__
+extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
+extern double strtod_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
+extern float strtof_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
+extern long double strtold_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
+extern __inline double
+__attribute__ ((__nothrow__)) atof (__const char *__nptr)
+{
+ return strtod (__nptr, (char **) ((void *)0));
+}
+extern __inline int
+__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
+{
+ return (int) strtol (__nptr, (char **) ((void *)0), 10);
+}
+extern __inline long int
+__attribute__ ((__nothrow__)) atol (__const char *__nptr)
+{
+ return strtol (__nptr, (char **) ((void *)0), 10);
+}
+__extension__ extern __inline long long int
+__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
+{
+ return strtoll (__nptr, (char **) ((void *)0), 10);
+}
+extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
+extern long int a64l (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+__extension__ typedef signed long long int __int64_t;
+__extension__ typedef unsigned long long int __uint64_t;
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
+__extension__ typedef __u_quad_t __dev_t;
+__extension__ typedef unsigned int __uid_t;
+__extension__ typedef unsigned int __gid_t;
+__extension__ typedef unsigned long int __ino_t;
+__extension__ typedef __u_quad_t __ino64_t;
+__extension__ typedef unsigned int __mode_t;
+__extension__ typedef unsigned int __nlink_t;
+__extension__ typedef long int __off_t;
+__extension__ typedef __quad_t __off64_t;
+__extension__ typedef int __pid_t;
+__extension__ typedef struct { int __val[2]; } __fsid_t;
+__extension__ typedef long int __clock_t;
+__extension__ typedef unsigned long int __rlim_t;
+__extension__ typedef __u_quad_t __rlim64_t;
+__extension__ typedef unsigned int __id_t;
+__extension__ typedef long int __time_t;
+__extension__ typedef unsigned int __useconds_t;
+__extension__ typedef long int __suseconds_t;
+__extension__ typedef int __daddr_t;
+__extension__ typedef long int __swblk_t;
+__extension__ typedef int __key_t;
+__extension__ typedef int __clockid_t;
+__extension__ typedef void * __timer_t;
+__extension__ typedef long int __blksize_t;
+__extension__ typedef long int __blkcnt_t;
+__extension__ typedef __quad_t __blkcnt64_t;
+__extension__ typedef unsigned long int __fsblkcnt_t;
+__extension__ typedef __u_quad_t __fsblkcnt64_t;
+__extension__ typedef unsigned long int __fsfilcnt_t;
+__extension__ typedef __u_quad_t __fsfilcnt64_t;
+__extension__ typedef int __ssize_t;
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+__extension__ typedef int __intptr_t;
+__extension__ typedef unsigned int __socklen_t;
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+typedef __loff_t loff_t;
+typedef __ino64_t ino_t;
+typedef __ino64_t ino64_t;
+typedef __dev_t dev_t;
+typedef __gid_t gid_t;
+typedef __mode_t mode_t;
+typedef __nlink_t nlink_t;
+typedef __uid_t uid_t;
+typedef __off64_t off_t;
+typedef __off64_t off64_t;
+typedef __pid_t pid_t;
+typedef __id_t id_t;
+typedef __ssize_t ssize_t;
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+typedef __key_t key_t;
+typedef __clock_t clock_t;
+typedef __time_t time_t;
+typedef __clockid_t clockid_t;
+typedef __timer_t timer_t;
+typedef __useconds_t useconds_t;
+typedef __suseconds_t suseconds_t;
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+typedef int int8_t __attribute__ ((__mode__ (__QI__)));
+typedef int int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int int32_t __attribute__ ((__mode__ (__SI__)));
+typedef int int64_t __attribute__ ((__mode__ (__DI__)));
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+typedef int __sig_atomic_t;
+typedef struct
+ {
+ unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+ } __sigset_t;
+typedef __sigset_t sigset_t;
+struct timespec
+ {
+ __time_t tv_sec;
+ long int tv_nsec;
+ };
+struct timeval
+ {
+ __time_t tv_sec;
+ __suseconds_t tv_usec;
+ };
+typedef long int __fd_mask;
+typedef struct
+ {
+ __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
+ } fd_set;
+typedef __fd_mask fd_mask;
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ struct timeval *__restrict __timeout);
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+ const __sigset_t *__restrict __sigmask);
+__extension__
+extern unsigned int gnu_dev_major (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned int gnu_dev_minor (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned long long int gnu_dev_makedev (unsigned int __major,
+ unsigned int __minor)
+ __attribute__ ((__nothrow__));
+__extension__ extern __inline unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
+{
+ return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
+}
+__extension__ extern __inline unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
+{
+ return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
+}
+__extension__ extern __inline unsigned long long int
+__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
+{
+ return ((__minor & 0xff) | ((__major & 0xfff) << 8)
+ | (((unsigned long long int) (__minor & ~0xff)) << 12)
+ | (((unsigned long long int) (__major & ~0xfff)) << 32));
+}
+typedef __blksize_t blksize_t;
+typedef __blkcnt64_t blkcnt_t;
+typedef __fsblkcnt64_t fsblkcnt_t;
+typedef __fsfilcnt64_t fsfilcnt_t;
+typedef __blkcnt64_t blkcnt64_t;
+typedef __fsblkcnt64_t fsblkcnt64_t;
+typedef __fsfilcnt64_t fsfilcnt64_t;
+typedef unsigned long int pthread_t;
+typedef union
+{
+ char __size[36];
+ long int __align;
+} pthread_attr_t;
+typedef struct __pthread_internal_slist
+{
+ struct __pthread_internal_slist *__next;
+} __pthread_slist_t;
+typedef union
+{
+ struct __pthread_mutex_s
+ {
+ int __lock;
+ unsigned int __count;
+ int __owner;
+ int __kind;
+ unsigned int __nusers;
+ __extension__ union
+ {
+ int __spins;
+ __pthread_slist_t __list;
+ };
+ } __data;
+ char __size[24];
+ long int __align;
+} pthread_mutex_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_mutexattr_t;
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __futex;
+ __extension__ unsigned long long int __total_seq;
+ __extension__ unsigned long long int __wakeup_seq;
+ __extension__ unsigned long long int __woken_seq;
+ void *__mutex;
+ unsigned int __nwaiters;
+ unsigned int __broadcast_seq;
+ } __data;
+ char __size[48];
+ __extension__ long long int __align;
+} pthread_cond_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_condattr_t;
+typedef unsigned int pthread_key_t;
+typedef int pthread_once_t;
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __nr_readers;
+ unsigned int __readers_wakeup;
+ unsigned int __writer_wakeup;
+ unsigned int __nr_readers_queued;
+ unsigned int __nr_writers_queued;
+ unsigned char __flags;
+ unsigned char __shared;
+ unsigned char __pad1;
+ unsigned char __pad2;
+ int __writer;
+ } __data;
+ char __size[32];
+ long int __align;
+} pthread_rwlock_t;
+typedef union
+{
+ char __size[8];
+ long int __align;
+} pthread_rwlockattr_t;
+typedef volatile int pthread_spinlock_t;
+typedef union
+{
+ char __size[20];
+ long int __align;
+} pthread_barrier_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_barrierattr_t;
+extern long int random (void) __attribute__ ((__nothrow__));
+extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
+extern char *initstate (unsigned int __seed, char *__statebuf,
+ size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+struct random_data
+ {
+ int32_t *fptr;
+ int32_t *rptr;
+ int32_t *state;
+ int rand_type;
+ int rand_deg;
+ int rand_sep;
+ int32_t *end_ptr;
+ };
+extern int random_r (struct random_data *__restrict __buf,
+ int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+ size_t __statelen,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int rand (void) __attribute__ ((__nothrow__));
+extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
+extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
+extern double drand48 (void) __attribute__ ((__nothrow__));
+extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern long int lrand48 (void) __attribute__ ((__nothrow__));
+extern long int nrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern long int mrand48 (void) __attribute__ ((__nothrow__));
+extern long int jrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+struct drand48_data
+ {
+ unsigned short int __x[3];
+ unsigned short int __old_x[3];
+ unsigned short int __c;
+ unsigned short int __init;
+ unsigned long long int __a;
+ };
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int seed48_r (unsigned short int __seed16v[3],
+ struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int lcong48_r (unsigned short int __param[7],
+ struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern void *calloc (size_t __nmemb, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern void *realloc (void *__ptr, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern void free (void *__ptr) __attribute__ ((__nothrow__));
+extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
+extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
+extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern char *__secure_getenv (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
+extern int clearenv (void) __attribute__ ((__nothrow__));
+extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int mkstemp (char *__template) __asm__ ("" "mkstemp64")
+ __attribute__ ((__nonnull__ (1))) ;
+extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
+extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64")
+ __attribute__ ((__nonnull__ (1))) ;
+extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
+extern int system (__const char *__command) ;
+extern char *canonicalize_file_name (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern char *realpath (__const char *__restrict __name,
+ char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+typedef __compar_fn_t comparison_fn_t;
+extern void *bsearch (__const void *__key, __const void *__base,
+ size_t __nmemb, size_t __size, __compar_fn_t __compar)
+ __attribute__ ((__nonnull__ (1, 2, 5))) ;
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+ __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+__extension__ extern long long int llabs (long long int __x)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern div_t div (int __numer, int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern ldiv_t ldiv (long int __numer, long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+__extension__ extern lldiv_t lldiv (long long int __numer,
+ long long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+extern char *qecvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *qfcvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *qgcvt (long double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qecvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qfcvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
+extern int mbtowc (wchar_t *__restrict __pwc,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
+extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
+extern size_t mbstowcs (wchar_t *__restrict __pwcs,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
+extern size_t wcstombs (char *__restrict __s,
+ __const wchar_t *__restrict __pwcs, size_t __n)
+ __attribute__ ((__nothrow__));
+extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int getsubopt (char **__restrict __optionp,
+ char *__const *__restrict __tokens,
+ char **__restrict __valuep)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) ;
+extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int posix_openpt (int __oflag) ;
+extern int grantpt (int __fd) __attribute__ ((__nothrow__));
+extern int unlockpt (int __fd) __attribute__ ((__nothrow__));
+extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) ;
+extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int getpt (void);
+extern int getloadavg (double __loadavg[], int __nelem)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void *memcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memmove (void *__dest, __const void *__src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
+ int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern void *rawmemchr (__const void *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern void *memrchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
+ size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strcmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strcoll (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strxfrm (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
+ __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+extern char *strdup (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+extern char *strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+extern char *strchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strrchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strchrnul (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern size_t strcspn (__const char *__s, __const char *__reject)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strspn (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strpbrk (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strstr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *__strtok_r (char *__restrict __s,
+ __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern char *strcasestr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memmem (__const void *__haystack, size_t __haystacklen,
+ __const void *__needle, size_t __needlelen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
+extern void *__mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strlen (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern size_t strnlen (__const char *__string, size_t __maxlen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
+extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__));
+extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void bcopy (__const void *__src, void *__dest, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *index (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *rindex (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+__extension__ extern int ffsll (long long int __ll)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int strcasecmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strcasecmp_l (__const char *__s1, __const char *__s2,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+extern int strncasecmp_l (__const char *__s1, __const char *__s2,
+ size_t __n, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
+extern char *strsep (char **__restrict __stringp,
+ __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strverscmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strsignal (int __sig) __attribute__ ((__nothrow__));
+extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *__stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void *__rawmemchr (const void *__s, int __c);
+extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
+extern __inline size_t
+__strcspn_c1 (__const char *__s, int __reject)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
+ int __reject2);
+extern __inline size_t
+__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
+ int __reject2, int __reject3);
+extern __inline size_t
+__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
+ int __reject3)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2 && __s[__result] != __reject3)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
+extern __inline size_t
+__strspn_c1 (__const char *__s, int __accept)
+{
+ register size_t __result = 0;
+ while (__s[__result] == __accept)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline size_t
+__strspn_c2 (__const char *__s, int __accept1, int __accept2)
+{
+ register size_t __result = 0;
+ while (__s[__result] == __accept1 || __s[__result] == __accept2)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline size_t
+__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
+{
+ register size_t __result = 0;
+ while (__s[__result] == __accept1 || __s[__result] == __accept2
+ || __s[__result] == __accept3)
+ ++__result;
+ return __result;
+}
+extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline char *
+__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
+{
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline char *
+__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
+ int __accept3)
+{
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
+ && *__s != __accept3)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
+extern __inline char *
+__strtok_r_1c (char *__s, char __sep, char **__nextp)
+{
+ char *__result;
+ if (__s == ((void *)0))
+ __s = *__nextp;
+ while (*__s == __sep)
+ ++__s;
+ __result = ((void *)0);
+ if (*__s != '\0')
+ {
+ __result = __s++;
+ while (*__s != '\0')
+ if (*__s++ == __sep)
+ {
+ __s[-1] = '\0';
+ break;
+ }
+ *__nextp = __s;
+ }
+ return __result;
+}
+extern char *__strsep_g (char **__stringp, __const char *__delim);
+extern __inline char *__strsep_1c (char **__s, char __reject);
+extern __inline char *
+__strsep_1c (char **__s, char __reject)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
+ *(*__s)++ = '\0';
+ return __retval;
+}
+extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
+extern __inline char *
+__strsep_2c (char **__s, char __reject1, char __reject2)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
+ char __reject3);
+extern __inline char *
+__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+extern char *__strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned int uint32_t;
+__extension__
+typedef unsigned long long int uint64_t;
+typedef signed char int_least8_t;
+typedef short int int_least16_t;
+typedef int int_least32_t;
+__extension__
+typedef long long int int_least64_t;
+typedef unsigned char uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int uint_least32_t;
+__extension__
+typedef unsigned long long int uint_least64_t;
+typedef signed char int_fast8_t;
+typedef int int_fast16_t;
+typedef int int_fast32_t;
+__extension__
+typedef long long int int_fast64_t;
+typedef unsigned char uint_fast8_t;
+typedef unsigned int uint_fast16_t;
+typedef unsigned int uint_fast32_t;
+__extension__
+typedef unsigned long long int uint_fast64_t;
+typedef int intptr_t;
+typedef unsigned int uintptr_t;
+__extension__
+typedef long long int intmax_t;
+__extension__
+typedef unsigned long long int uintmax_t;
+typedef int __gwchar_t;
+typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } imaxdiv_t;
+extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern intmax_t strtoimax (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base) __attribute__ ((__nothrow__));
+extern uintmax_t strtoumax (__const char *__restrict __nptr,
+ char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__));
+extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr,
+ __gwchar_t **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__));
+extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
+ __gwchar_t ** __restrict __endptr, int __base)
+ __attribute__ ((__nothrow__));
+__extension__
+extern long long int __strtoll_internal (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern __inline intmax_t
+__attribute__ ((__nothrow__)) strtoimax (__const char *__restrict nptr, char **__restrict endptr, int base)
+{
+ return __strtoll_internal (nptr, endptr, base, 0);
+}
+__extension__
+extern unsigned long long int __strtoull_internal (__const char *
+ __restrict __nptr,
+ char **
+ __restrict __endptr,
+ int __base,
+ int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern __inline uintmax_t
+__attribute__ ((__nothrow__)) strtoumax (__const char *__restrict nptr, char **__restrict endptr, int base)
+{
+ return __strtoull_internal (nptr, endptr, base, 0);
+}
+__extension__
+extern long long int __wcstoll_internal (__const __gwchar_t *
+ __restrict __nptr,
+ __gwchar_t **__restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern __inline intmax_t
+__attribute__ ((__nothrow__)) wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
+{
+ return __wcstoll_internal (nptr, endptr, base, 0);
+}
+__extension__
+extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
+ __restrict __nptr,
+ __gwchar_t **
+ __restrict __endptr,
+ int __base,
+ int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern __inline uintmax_t
+__attribute__ ((__nothrow__)) wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
+{
+ return __wcstoull_internal (nptr, endptr, base, 0);
+}
+typedef int ptrdiff_t;
+struct _IO_FILE;
+typedef struct _IO_FILE FILE;
+typedef struct _IO_FILE __FILE;
+typedef struct
+{
+ int __count;
+ union
+ {
+ unsigned int __wch;
+ char __wchb[4];
+ } __value;
+} __mbstate_t;
+typedef struct
+{
+ __off_t __pos;
+ __mbstate_t __state;
+} _G_fpos_t;
+typedef struct
+{
+ __off64_t __pos;
+ __mbstate_t __state;
+} _G_fpos64_t;
+typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
+typedef __builtin_va_list __gnuc_va_list;
+struct _IO_jump_t; struct _IO_FILE;
+typedef void _IO_lock_t;
+struct _IO_marker {
+ struct _IO_marker *_next;
+ struct _IO_FILE *_sbuf;
+ int _pos;
+};
+enum __codecvt_result
+{
+ __codecvt_ok,
+ __codecvt_partial,
+ __codecvt_error,
+ __codecvt_noconv
+};
+struct _IO_FILE {
+ int _flags;
+ char* _IO_read_ptr;
+ char* _IO_read_end;
+ char* _IO_read_base;
+ char* _IO_write_base;
+ char* _IO_write_ptr;
+ char* _IO_write_end;
+ char* _IO_buf_base;
+ char* _IO_buf_end;
+ char *_IO_save_base;
+ char *_IO_backup_base;
+ char *_IO_save_end;
+ struct _IO_marker *_markers;
+ struct _IO_FILE *_chain;
+ int _fileno;
+ int _flags2;
+ __off_t _old_offset;
+ unsigned short _cur_column;
+ signed char _vtable_offset;
+ char _shortbuf[1];
+ _IO_lock_t *_lock;
+ __off64_t _offset;
+ void *__pad1;
+ void *__pad2;
+ void *__pad3;
+ void *__pad4;
+ size_t __pad5;
+ int _mode;
+ char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+};
+typedef struct _IO_FILE _IO_FILE;
+struct _IO_FILE_plus;
+extern struct _IO_FILE_plus _IO_2_1_stdin_;
+extern struct _IO_FILE_plus _IO_2_1_stdout_;
+extern struct _IO_FILE_plus _IO_2_1_stderr_;
+typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
+typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
+ size_t __n);
+typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
+typedef int __io_close_fn (void *__cookie);
+typedef __io_read_fn cookie_read_function_t;
+typedef __io_write_fn cookie_write_function_t;
+typedef __io_seek_fn cookie_seek_function_t;
+typedef __io_close_fn cookie_close_function_t;
+typedef struct
+{
+ __io_read_fn *read;
+ __io_write_fn *write;
+ __io_seek_fn *seek;
+ __io_close_fn *close;
+} _IO_cookie_io_functions_t;
+typedef _IO_cookie_io_functions_t cookie_io_functions_t;
+struct _IO_cookie_file;
+extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
+ void *__cookie, _IO_cookie_io_functions_t __fns);
+extern int __underflow (_IO_FILE *);
+extern int __uflow (_IO_FILE *);
+extern int __overflow (_IO_FILE *, int);
+extern int _IO_getc (_IO_FILE *__fp);
+extern int _IO_putc (int __c, _IO_FILE *__fp);
+extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_peekc_locked (_IO_FILE *__fp);
+extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
+ __gnuc_va_list, int *__restrict);
+extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
+ __gnuc_va_list);
+extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
+extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
+extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
+extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
+extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
+typedef __gnuc_va_list va_list;
+typedef _G_fpos64_t fpos_t;
+typedef _G_fpos64_t fpos64_t;
+extern struct _IO_FILE *stdin;
+extern struct _IO_FILE *stdout;
+extern struct _IO_FILE *stderr;
+extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
+extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
+extern int renameat (int __oldfd, __const char *__old, int __newfd,
+ __const char *__new) __attribute__ ((__nothrow__));
+extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") ;
+extern FILE *tmpfile64 (void) ;
+extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;
+extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern int fclose (FILE *__stream);
+extern int fflush (FILE *__stream);
+extern int fflush_unlocked (FILE *__stream);
+extern int fcloseall (void);
+extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) __asm__ ("" "fopen64")
+ ;
+extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64")
+ ;
+extern FILE *fopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes) ;
+extern FILE *freopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) ;
+extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
+extern FILE *fopencookie (void *__restrict __magic_cookie,
+ __const char *__restrict __modes,
+ _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__)) ;
+extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
+ __attribute__ ((__nothrow__)) ;
+extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) ;
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+ int __modes, size_t __n) __attribute__ ((__nothrow__));
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+ size_t __size) __attribute__ ((__nothrow__));
+extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
+extern int fprintf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...);
+extern int printf (__const char *__restrict __format, ...);
+extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg);
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg) __attribute__ ((__nothrow__));
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
+ __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) ;
+extern int __asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
+extern int asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) ;
+extern int scanf (__const char *__restrict __format, ...) ;
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 2, 0))) ;
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 1, 0))) ;
+extern int vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+extern int getchar (void);
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+extern int fgetc_unlocked (FILE *__stream);
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+extern int putchar (int __c);
+extern int fputc_unlocked (int __c, FILE *__stream);
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+extern int getw (FILE *__stream);
+extern int putw (int __w, FILE *__stream);
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+ ;
+extern char *gets (char *__s) ;
+extern char *fgets_unlocked (char *__restrict __s, int __n,
+ FILE *__restrict __stream) ;
+extern __ssize_t __getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+extern __ssize_t getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+extern __ssize_t getline (char **__restrict __lineptr,
+ size_t *__restrict __n,
+ FILE *__restrict __stream) ;
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+extern int puts (__const char *__s);
+extern int ungetc (int __c, FILE *__stream);
+extern size_t fread (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __s) ;
+extern int fputs_unlocked (__const char *__restrict __s,
+ FILE *__restrict __stream);
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern int fseek (FILE *__stream, long int __off, int __whence);
+extern long int ftell (FILE *__stream) ;
+extern void rewind (FILE *__stream);
+extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64");
+extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64");
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64");
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __asm__ ("" "fsetpos64");
+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
+extern __off64_t ftello64 (FILE *__stream) ;
+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
+extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern void perror (__const char *__s);
+extern int sys_nerr;
+extern __const char *__const sys_errlist[];
+extern int _sys_nerr;
+extern __const char *__const _sys_errlist[];
+extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern FILE *popen (__const char *__command, __const char *__modes) ;
+extern int pclose (FILE *__stream);
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+extern char *cuserid (char *__s);
+struct obstack;
+extern int obstack_printf (struct obstack *__restrict __obstack,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int obstack_vprintf (struct obstack *__restrict __obstack,
+ __const char *__restrict __format,
+ __gnuc_va_list __args)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
+extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
+extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
+extern __inline int
+vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
+{
+ return vfprintf (stdout, __fmt, __arg);
+}
+extern __inline int
+getchar (void)
+{
+ return _IO_getc (stdin);
+}
+extern __inline int
+fgetc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+extern __inline int
+getc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+extern __inline int
+getchar_unlocked (void)
+{
+ return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
+}
+extern __inline int
+putchar (int __c)
+{
+ return _IO_putc (__c, stdout);
+}
+extern __inline int
+fputc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+extern __inline int
+putc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+extern __inline int
+putchar_unlocked (int __c)
+{
+ return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
+}
+extern __inline __ssize_t
+getline (char **__lineptr, size_t *__n, FILE *__stream)
+{
+ return __getdelim (__lineptr, __n, '\n', __stream);
+}
+extern __inline int
+__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x10) != 0);
+}
+extern __inline int
+__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x20) != 0);
+}
+void *ruby_xmalloc(size_t);
+void *ruby_xmalloc2(size_t,size_t);
+void *ruby_xcalloc(size_t,size_t);
+void *ruby_xrealloc(void*,size_t);
+void *ruby_xrealloc2(void*,size_t,size_t);
+void ruby_xfree(void*);
+typedef unsigned long VALUE;
+typedef unsigned long ID;
+VALUE rb_int2inum(long);
+VALUE rb_uint2inum(VALUE);
+VALUE rb_ll2inum(long long);
+VALUE rb_ull2inum(unsigned long long);
+enum ruby_special_consts {
+ RUBY_Qfalse = 0,
+ RUBY_Qtrue = 2,
+ RUBY_Qnil = 4,
+ RUBY_Qundef = 6,
+ RUBY_IMMEDIATE_MASK = 0x03,
+ RUBY_FIXNUM_FLAG = 0x01,
+ RUBY_SYMBOL_FLAG = 0x0e,
+ RUBY_SPECIAL_SHIFT = 8
+};
+enum ruby_value_type {
+ RUBY_T_NONE = 0x00,
+ RUBY_T_OBJECT = 0x01,
+ RUBY_T_CLASS = 0x02,
+ RUBY_T_MODULE = 0x03,
+ RUBY_T_FLOAT = 0x04,
+ RUBY_T_STRING = 0x05,
+ RUBY_T_REGEXP = 0x06,
+ RUBY_T_ARRAY = 0x07,
+ RUBY_T_HASH = 0x08,
+ RUBY_T_STRUCT = 0x09,
+ RUBY_T_BIGNUM = 0x0a,
+ RUBY_T_FILE = 0x0b,
+ RUBY_T_DATA = 0x0c,
+ RUBY_T_MATCH = 0x0d,
+ RUBY_T_COMPLEX = 0x0e,
+ RUBY_T_RATIONAL = 0x0f,
+ RUBY_T_NIL = 0x11,
+ RUBY_T_TRUE = 0x12,
+ RUBY_T_FALSE = 0x13,
+ RUBY_T_SYMBOL = 0x14,
+ RUBY_T_FIXNUM = 0x15,
+ RUBY_T_UNDEF = 0x1b,
+ RUBY_T_NODE = 0x1c,
+ RUBY_T_ICLASS = 0x1d,
+ RUBY_T_ZOMBIE = 0x1e,
+ RUBY_T_MASK = 0x1f
+};
+void rb_check_type(VALUE,int);
+VALUE rb_str_to_str(VALUE);
+VALUE rb_string_value(volatile VALUE*);
+char *rb_string_value_ptr(volatile VALUE*);
+char *rb_string_value_cstr(volatile VALUE*);
+void rb_check_safe_obj(VALUE);
+void rb_check_safe_str(VALUE);
+VALUE rb_str_export(VALUE);
+VALUE rb_str_export_locale(VALUE);
+VALUE rb_get_path(VALUE);
+VALUE rb_get_path_no_checksafe(VALUE);
+void rb_secure(int);
+int rb_safe_level(void);
+void rb_set_safe_level(int);
+void rb_set_safe_level_force(int);
+void rb_secure_update(VALUE);
+VALUE rb_errinfo(void);
+void rb_set_errinfo(VALUE);
+long rb_num2long(VALUE);
+VALUE rb_num2ulong(VALUE);
+static inline long
+NUM2LONG(VALUE x)
+{
+ return (((long)(x))&RUBY_FIXNUM_FLAG) ? (((long)x)>>(int)1) : rb_num2long(x);
+}
+long long rb_num2ll(VALUE);
+unsigned long long rb_num2ull(VALUE);
+static inline long long
+NUM2LL(VALUE x)
+{
+ return (((long)(x))&RUBY_FIXNUM_FLAG) ? (((long)x)>>(int)1) : rb_num2ll(x);
+}
+double rb_num2dbl(VALUE);
+VALUE rb_uint2big(VALUE);
+VALUE rb_int2big(long);
+static inline VALUE
+INT2NUM(int v)
+{
+ if (!(((v) < (2147483647L>>1)+1) && ((v) >= (((long)(-2147483647L - 1L))>>(int)1))))
+ return rb_int2big(v);
+ return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
+}
+static inline VALUE
+UINT2NUM(unsigned int v)
+{
+ if (!((v) < (2147483647L>>1)+1))
+ return rb_uint2big(v);
+ return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
+}
+static inline VALUE
+LONG2NUM(long v)
+{
+ if ((((v) < (2147483647L>>1)+1) && ((v) >= (((long)(-2147483647L - 1L))>>(int)1)))) return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
+ return rb_int2big(v);
+}
+static inline VALUE
+ULONG2NUM(unsigned long v)
+{
+ if (((v) < (2147483647L>>1)+1)) return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
+ return rb_uint2big(v);
+}
+char *rb_str2cstr(VALUE,long*);
+VALUE rb_newobj(void);
+struct RBasic {
+ VALUE flags;
+ VALUE klass;
+};
+struct RObject {
+ struct RBasic basic;
+ union {
+ struct {
+ long numiv;
+ VALUE *ivptr;
+ struct st_table *iv_index_tbl;
+ } heap;
+ VALUE ary[3];
+ } as;
+};
+typedef struct {
+ VALUE super;
+ struct st_table *iv_tbl;
+} rb_classext_t;
+struct RClass {
+ struct RBasic basic;
+ rb_classext_t *ptr;
+ struct st_table *m_tbl;
+ struct st_table *iv_index_tbl;
+};
+struct RFloat {
+ struct RBasic basic;
+ double float_value;
+};
+struct RString {
+ struct RBasic basic;
+ union {
+ struct {
+ long len;
+ char *ptr;
+ union {
+ long capa;
+ VALUE shared;
+ } aux;
+ } heap;
+ char ary[((sizeof(VALUE)*3)/sizeof(char)-1) + 1];
+ } as;
+};
+struct RArray {
+ struct RBasic basic;
+ union {
+ struct {
+ long len;
+ union {
+ long capa;
+ VALUE shared;
+ } aux;
+ VALUE *ptr;
+ } heap;
+ VALUE ary[3];
+ } as;
+};
+struct RRegexp {
+ struct RBasic basic;
+ struct re_pattern_buffer *ptr;
+ VALUE src;
+ unsigned long usecnt;
+};
+struct RHash {
+ struct RBasic basic;
+ struct st_table *ntbl;
+ int iter_lev;
+ VALUE ifnone;
+};
+struct RFile {
+ struct RBasic basic;
+ struct rb_io_t *fptr;
+};
+struct RRational {
+ struct RBasic basic;
+ VALUE num;
+ VALUE den;
+};
+struct RComplex {
+ struct RBasic basic;
+ VALUE real;
+ VALUE imag;
+};
+struct RData {
+ struct RBasic basic;
+ void (*dmark)(void*);
+ void (*dfree)(void*);
+ void *data;
+};
+typedef void (*RUBY_DATA_FUNC)(void*);
+VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
+struct RStruct {
+ struct RBasic basic;
+ union {
+ struct {
+ long len;
+ VALUE *ptr;
+ } heap;
+ VALUE ary[3];
+ } as;
+};
+struct RBignum {
+ struct RBasic basic;
+ union {
+ struct {
+ long len;
+ unsigned int *digits;
+ } heap;
+ unsigned int ary[((sizeof(VALUE)*3)/sizeof(unsigned int))];
+ } as;
+};
+void rb_obj_infect(VALUE,VALUE);
+typedef int ruby_glob_func(const char*,VALUE, void*);
+void rb_glob(const char*,void(*)(const char*,VALUE,void*),VALUE);
+int ruby_glob(const char*,int,ruby_glob_func*,VALUE);
+int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE);
+VALUE rb_define_class(const char*,VALUE);
+VALUE rb_define_module(const char*);
+VALUE rb_define_class_under(VALUE, const char*, VALUE);
+VALUE rb_define_module_under(VALUE, const char*);
+void rb_include_module(VALUE,VALUE);
+void rb_extend_object(VALUE,VALUE);
+struct rb_global_variable;
+typedef VALUE rb_gvar_getter_t(ID id, void *data, struct rb_global_variable *gvar);
+typedef void rb_gvar_setter_t(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+typedef void rb_gvar_marker_t(VALUE *var);
+VALUE rb_gvar_undef_getter(ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_undef_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_undef_marker(VALUE *var);
+VALUE rb_gvar_val_getter(ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_val_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_val_marker(VALUE *var);
+VALUE rb_gvar_var_getter(ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_var_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_var_marker(VALUE *var);
+void rb_gvar_readonly_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+void rb_define_variable(const char*,VALUE*);
+void rb_define_virtual_variable(const char*,VALUE(*)(),void(*)());
+void rb_define_hooked_variable(const char*,VALUE*,VALUE(*)(),void(*)());
+void rb_define_readonly_variable(const char*,VALUE*);
+void rb_define_const(VALUE,const char*,VALUE);
+void rb_define_global_const(const char*,VALUE);
+void rb_define_method(VALUE,const char*,VALUE(*)(),int);
+void rb_define_module_function(VALUE,const char*,VALUE(*)(),int);
+void rb_define_global_function(const char*,VALUE(*)(),int);
+void rb_undef_method(VALUE,const char*);
+void rb_define_alias(VALUE,const char*,const char*);
+void rb_define_attr(VALUE,const char*,int,int);
+void rb_global_variable(VALUE*);
+void rb_gc_register_mark_object(VALUE);
+void rb_gc_register_address(VALUE*);
+void rb_gc_unregister_address(VALUE*);
+ID rb_intern(const char*);
+ID rb_intern2(const char*, long);
+ID rb_intern_str(VALUE str);
+const char *rb_id2name(ID);
+ID rb_to_id(VALUE);
+VALUE rb_id2str(ID);
+const char *rb_class2name(VALUE);
+const char *rb_obj_classname(VALUE);
+void rb_p(VALUE);
+VALUE rb_eval_string(const char*);
+VALUE rb_eval_string_protect(const char*, int*);
+VALUE rb_eval_string_wrap(const char*, int*);
+VALUE rb_funcall(VALUE, ID, int, ...);
+VALUE rb_funcall2(VALUE, ID, int, const VALUE*);
+VALUE rb_funcall3(VALUE, ID, int, const VALUE*);
+int rb_scan_args(int, const VALUE*, const char*, ...);
+VALUE rb_call_super(int, const VALUE*);
+VALUE rb_gv_set(const char*, VALUE);
+VALUE rb_gv_get(const char*);
+VALUE rb_iv_get(VALUE, const char*);
+VALUE rb_iv_set(VALUE, const char*, VALUE);
+VALUE rb_equal(VALUE,VALUE);
+VALUE *rb_ruby_verbose_ptr(void);
+VALUE *rb_ruby_debug_ptr(void);
+__attribute__ ((noreturn)) void rb_raise(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
+__attribute__ ((noreturn)) void rb_fatal(const char*, ...) __attribute__((format(printf, 1, 2)));
+__attribute__ ((noreturn)) void rb_bug(const char*, ...) __attribute__((format(printf, 1, 2)));
+__attribute__ ((noreturn)) void rb_sys_fail(const char*);
+__attribute__ ((noreturn)) void rb_iter_break(void);
+__attribute__ ((noreturn)) void rb_exit(int);
+__attribute__ ((noreturn)) void rb_notimplement(void);
+void rb_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
+void rb_compile_warning(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
+void rb_sys_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
+void rb_warn(const char*, ...) __attribute__((format(printf, 1, 2)));
+void rb_compile_warn(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
+typedef VALUE rb_block_call_func(VALUE, VALUE, int, VALUE*);
+VALUE rb_each(VALUE);
+VALUE rb_yield(VALUE);
+VALUE rb_yield_values(int n, ...);
+VALUE rb_yield_values2(int n, const VALUE *argv);
+VALUE rb_yield_splat(VALUE);
+int rb_block_given_p(void);
+void rb_need_block(void);
+VALUE rb_iterate(VALUE(*)(VALUE),VALUE,VALUE(*)(),VALUE);
+VALUE rb_block_call(VALUE,ID,int,VALUE*,VALUE(*)(),VALUE);
+VALUE rb_rescue(VALUE(*)(),VALUE,VALUE(*)(),VALUE);
+VALUE rb_rescue2(VALUE(*)(),VALUE,VALUE(*)(),VALUE,...);
+VALUE rb_ensure(VALUE(*)(),VALUE,VALUE(*)(),VALUE);
+VALUE rb_catch(const char*,VALUE(*)(),VALUE);
+VALUE rb_catch_obj(VALUE,VALUE(*)(),VALUE);
+__attribute__ ((noreturn)) void rb_throw(const char*,VALUE);
+__attribute__ ((noreturn)) void rb_throw_obj(VALUE,VALUE);
+VALUE rb_require(const char*);
+void ruby_init_stack(VALUE*);
+void ruby_init(void);
+void *ruby_options(int, char**);
+int ruby_run_node(void *);
+extern VALUE rb_mKernel;
+extern VALUE rb_mComparable;
+extern VALUE rb_mEnumerable;
+extern VALUE rb_mErrno;
+extern VALUE rb_mFileTest;
+extern VALUE rb_mGC;
+extern VALUE rb_mMath;
+extern VALUE rb_mProcess;
+extern VALUE rb_cBasicObject;
+extern VALUE rb_cObject;
+extern VALUE rb_cArray;
+extern VALUE rb_cBignum;
+extern VALUE rb_cBinding;
+extern VALUE rb_cClass;
+extern VALUE rb_cCont;
+extern VALUE rb_cDir;
+extern VALUE rb_cData;
+extern VALUE rb_cFalseClass;
+extern VALUE rb_cEncoding;
+extern VALUE rb_cEnumerator;
+extern VALUE rb_cFile;
+extern VALUE rb_cFixnum;
+extern VALUE rb_cFloat;
+extern VALUE rb_cHash;
+extern VALUE rb_cInteger;
+extern VALUE rb_cIO;
+extern VALUE rb_cMatch;
+extern VALUE rb_cMethod;
+extern VALUE rb_cModule;
+extern VALUE rb_cNameErrorMesg;
+extern VALUE rb_cNilClass;
+extern VALUE rb_cNumeric;
+extern VALUE rb_cProc;
+extern VALUE rb_cRange;
+extern VALUE rb_cRational;
+extern VALUE rb_cComplex;
+extern VALUE rb_cRegexp;
+extern VALUE rb_cStat;
+extern VALUE rb_cString;
+extern VALUE rb_cStruct;
+extern VALUE rb_cSymbol;
+extern VALUE rb_cThread;
+extern VALUE rb_cTime;
+extern VALUE rb_cTrueClass;
+extern VALUE rb_cUnboundMethod;
+extern VALUE rb_eException;
+extern VALUE rb_eStandardError;
+extern VALUE rb_eSystemExit;
+extern VALUE rb_eInterrupt;
+extern VALUE rb_eSignal;
+extern VALUE rb_eFatal;
+extern VALUE rb_eArgError;
+extern VALUE rb_eEOFError;
+extern VALUE rb_eIndexError;
+extern VALUE rb_eStopIteration;
+extern VALUE rb_eKeyError;
+extern VALUE rb_eRangeError;
+extern VALUE rb_eIOError;
+extern VALUE rb_eRuntimeError;
+extern VALUE rb_eSecurityError;
+extern VALUE rb_eSystemCallError;
+extern VALUE rb_eThreadError;
+extern VALUE rb_eTypeError;
+extern VALUE rb_eZeroDivError;
+extern VALUE rb_eNotImpError;
+extern VALUE rb_eNoMemError;
+extern VALUE rb_eNoMethodError;
+extern VALUE rb_eFloatDomainError;
+extern VALUE rb_eLocalJumpError;
+extern VALUE rb_eSysStackError;
+extern VALUE rb_eRegexpError;
+extern VALUE rb_eEncodingError;
+extern VALUE rb_eEncCompatError;
+extern VALUE rb_eScriptError;
+extern VALUE rb_eNameError;
+extern VALUE rb_eSyntaxError;
+extern VALUE rb_eLoadError;
+extern VALUE rb_stdin, rb_stdout, rb_stderr;
+static inline VALUE
+rb_class_of(VALUE obj)
+{
+ if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
+ if ((((long)(obj))&RUBY_FIXNUM_FLAG)) return rb_cFixnum;
+ if (obj == ((VALUE)RUBY_Qtrue)) return rb_cTrueClass;
+ if ((((VALUE)(obj)&~(~(VALUE)0<<RUBY_SPECIAL_SHIFT))==RUBY_SYMBOL_FLAG)) return rb_cSymbol;
+ }
+ else if (!(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0)) {
+ if (obj == ((VALUE)RUBY_Qnil)) return rb_cNilClass;
+ if (obj == ((VALUE)RUBY_Qfalse)) return rb_cFalseClass;
+ }
+ return ((struct RBasic*)(obj))->klass;
+}
+static inline int
+rb_type(VALUE obj)
+{
+ if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
+ if ((((long)(obj))&RUBY_FIXNUM_FLAG)) return RUBY_T_FIXNUM;
+ if (obj == ((VALUE)RUBY_Qtrue)) return RUBY_T_TRUE;
+ if ((((VALUE)(obj)&~(~(VALUE)0<<RUBY_SPECIAL_SHIFT))==RUBY_SYMBOL_FLAG)) return RUBY_T_SYMBOL;
+ if (obj == ((VALUE)RUBY_Qundef)) return RUBY_T_UNDEF;
+ }
+ else if (!(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0)) {
+ if (obj == ((VALUE)RUBY_Qnil)) return RUBY_T_NIL;
+ if (obj == ((VALUE)RUBY_Qfalse)) return RUBY_T_FALSE;
+ }
+ return (((struct RBasic*)(obj))->flags & RUBY_T_MASK);
+}
+static inline int
+rb_special_const_p(VALUE obj)
+{
+ if ((((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0))) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+struct timezone
+ {
+ int tz_minuteswest;
+ int tz_dsttime;
+ };
+typedef struct timezone *__restrict __timezone_ptr_t;
+extern int gettimeofday (struct timeval *__restrict __tv,
+ __timezone_ptr_t __tz) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int settimeofday (__const struct timeval *__tv,
+ __const struct timezone *__tz)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int adjtime (__const struct timeval *__delta,
+ struct timeval *__olddelta) __attribute__ ((__nothrow__));
+enum __itimer_which
+ {
+ ITIMER_REAL = 0,
+ ITIMER_VIRTUAL = 1,
+ ITIMER_PROF = 2
+ };
+struct itimerval
+ {
+ struct timeval it_interval;
+ struct timeval it_value;
+ };
+typedef enum __itimer_which __itimer_which_t;
+extern int getitimer (__itimer_which_t __which,
+ struct itimerval *__value) __attribute__ ((__nothrow__));
+extern int setitimer (__itimer_which_t __which,
+ __const struct itimerval *__restrict __new,
+ struct itimerval *__restrict __old) __attribute__ ((__nothrow__));
+extern int utimes (__const char *__file, __const struct timeval __tvp[2])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int futimes (int __fd, __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
+extern int futimesat (int __fd, __const char *__file,
+ __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
+extern size_t strlcpy(char *, const char*, size_t);
+extern size_t strlcat(char *, const char*, size_t);
+typedef unsigned long st_data_t;
+typedef struct st_table st_table;
+typedef int st_compare_func(st_data_t, st_data_t);
+typedef int st_hash_func(st_data_t);
+struct st_hash_type {
+ int (*compare)( );
+ int (*hash)( );
+};
+typedef st_data_t st_index_t;
+struct st_table {
+ const struct st_hash_type *type;
+ st_index_t num_bins;
+ unsigned int entries_packed : 1;
+ __extension__
+ st_index_t num_entries : (sizeof(st_index_t) * 8) - 1;
+ struct st_table_entry **bins;
+ struct st_table_entry *head;
+};
+enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
+st_table *st_init_table(const struct st_hash_type *);
+st_table *st_init_table_with_size(const struct st_hash_type *, int);
+st_table *st_init_numtable(void);
+st_table *st_init_numtable_with_size(int);
+st_table *st_init_strtable(void);
+st_table *st_init_strtable_with_size(int);
+st_table *st_init_strcasetable(void);
+st_table *st_init_strcasetable_with_size(int);
+int st_delete(st_table *, st_data_t *, st_data_t *);
+int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
+int st_insert(st_table *, st_data_t, st_data_t);
+int st_lookup(st_table *, st_data_t, st_data_t *);
+int st_get_key(st_table *, st_data_t, st_data_t *);
+int st_foreach(st_table *, int (*)(), st_data_t);
+int st_reverse_foreach(st_table *, int (*)(), st_data_t);
+void st_add_direct(st_table *, st_data_t, st_data_t);
+void st_free_table(st_table *);
+void st_cleanup_safe(st_table *, st_data_t);
+void st_clear(st_table *);
+st_table *st_copy(st_table *);
+int st_numcmp(st_data_t, st_data_t);
+int st_numhash(st_data_t);
+int st_strcasecmp(const char *s1, const char *s2);
+int st_strncasecmp(const char *s1, const char *s2, size_t n);
+void rb_mem_clear(register VALUE*, register long);
+VALUE rb_assoc_new(VALUE, VALUE);
+VALUE rb_check_array_type(VALUE);
+VALUE rb_ary_new(void);
+VALUE rb_ary_new2(long);
+VALUE rb_ary_new3(long,...);
+VALUE rb_ary_new4(long, const VALUE *);
+VALUE rb_ary_tmp_new(long);
+void rb_ary_free(VALUE);
+VALUE rb_ary_freeze(VALUE);
+VALUE rb_ary_aref(int, VALUE*, VALUE);
+VALUE rb_ary_subseq(VALUE, long, long);
+void rb_ary_store(VALUE, long, VALUE);
+VALUE rb_ary_dup(VALUE);
+VALUE rb_ary_to_ary(VALUE);
+VALUE rb_ary_to_s(VALUE);
+VALUE rb_ary_push(VALUE, VALUE);
+VALUE rb_ary_pop(VALUE);
+VALUE rb_ary_shift(VALUE);
+VALUE rb_ary_unshift(VALUE, VALUE);
+VALUE rb_ary_entry(VALUE, long);
+VALUE rb_ary_each(VALUE);
+VALUE rb_ary_join(VALUE, VALUE);
+VALUE rb_ary_print_on(VALUE, VALUE);
+VALUE rb_ary_reverse(VALUE);
+VALUE rb_ary_sort(VALUE);
+VALUE rb_ary_sort_bang(VALUE);
+VALUE rb_ary_delete(VALUE, VALUE);
+VALUE rb_ary_delete_at(VALUE, long);
+VALUE rb_ary_clear(VALUE);
+VALUE rb_ary_plus(VALUE, VALUE);
+VALUE rb_ary_concat(VALUE, VALUE);
+VALUE rb_ary_assoc(VALUE, VALUE);
+VALUE rb_ary_rassoc(VALUE, VALUE);
+VALUE rb_ary_includes(VALUE, VALUE);
+VALUE rb_ary_cmp(VALUE, VALUE);
+VALUE rb_ary_replace(VALUE copy, VALUE orig);
+VALUE rb_get_values_at(VALUE, long, int, VALUE*, VALUE(*)(VALUE,long));
+VALUE rb_big_clone(VALUE);
+void rb_big_2comp(VALUE);
+VALUE rb_big_norm(VALUE);
+void rb_big_resize(VALUE big, long len);
+VALUE rb_uint2big(VALUE);
+VALUE rb_int2big(long);
+VALUE rb_uint2inum(VALUE);
+VALUE rb_int2inum(long);
+VALUE rb_cstr_to_inum(const char*, int, int);
+VALUE rb_str_to_inum(VALUE, int, int);
+VALUE rb_cstr2inum(const char*, int);
+VALUE rb_str2inum(VALUE, int);
+VALUE rb_big2str(VALUE, int);
+VALUE rb_big2str0(VALUE, int, int);
+long rb_big2long(VALUE);
+VALUE rb_big2ulong(VALUE);
+VALUE rb_ll2inum(long long);
+VALUE rb_ull2inum(unsigned long long);
+long long rb_big2ll(VALUE);
+unsigned long long rb_big2ull(VALUE);
+void rb_quad_pack(char*,VALUE);
+VALUE rb_quad_unpack(const char*,int);
+int rb_uv_to_utf8(char[6],unsigned long);
+VALUE rb_dbl2big(double);
+double rb_big2dbl(VALUE);
+VALUE rb_big_cmp(VALUE, VALUE);
+VALUE rb_big_eq(VALUE, VALUE);
+VALUE rb_big_plus(VALUE, VALUE);
+VALUE rb_big_minus(VALUE, VALUE);
+VALUE rb_big_mul(VALUE, VALUE);
+VALUE rb_big_div(VALUE, VALUE);
+VALUE rb_big_modulo(VALUE, VALUE);
+VALUE rb_big_divmod(VALUE, VALUE);
+VALUE rb_big_pow(VALUE, VALUE);
+VALUE rb_big_and(VALUE, VALUE);
+VALUE rb_big_or(VALUE, VALUE);
+VALUE rb_big_xor(VALUE, VALUE);
+VALUE rb_big_lshift(VALUE, VALUE);
+VALUE rb_big_rshift(VALUE, VALUE);
+VALUE rb_rational_raw(VALUE, VALUE);
+VALUE rb_rational_new(VALUE, VALUE);
+VALUE rb_Rational(VALUE, VALUE);
+VALUE rb_complex_raw(VALUE, VALUE);
+VALUE rb_complex_new(VALUE, VALUE);
+VALUE rb_complex_polar(VALUE, VALUE);
+VALUE rb_Complex(VALUE, VALUE);
+VALUE rb_class_boot(VALUE);
+VALUE rb_class_new(VALUE);
+VALUE rb_mod_init_copy(VALUE, VALUE);
+VALUE rb_class_init_copy(VALUE, VALUE);
+VALUE rb_singleton_class_clone(VALUE);
+void rb_singleton_class_attached(VALUE,VALUE);
+VALUE rb_make_metaclass(VALUE, VALUE);
+void rb_check_inheritable(VALUE);
+VALUE rb_class_inherited(VALUE, VALUE);
+VALUE rb_define_class_id(ID, VALUE);
+VALUE rb_module_new(void);
+VALUE rb_define_module_id(ID);
+VALUE rb_mod_included_modules(VALUE);
+VALUE rb_mod_include_p(VALUE, VALUE);
+VALUE rb_mod_ancestors(VALUE);
+VALUE rb_class_instance_methods(int, VALUE*, VALUE);
+VALUE rb_class_public_instance_methods(int, VALUE*, VALUE);
+VALUE rb_class_protected_instance_methods(int, VALUE*, VALUE);
+VALUE rb_class_private_instance_methods(int, VALUE*, VALUE);
+VALUE rb_obj_singleton_methods(int, VALUE*, VALUE);
+void rb_define_method_id(VALUE, ID, VALUE (*)(), int);
+void rb_frozen_class_p(VALUE);
+void rb_undef(VALUE, ID);
+void rb_define_protected_method(VALUE, const char*, VALUE (*)(), int);
+void rb_define_private_method(VALUE, const char*, VALUE (*)(), int);
+void rb_define_singleton_method(VALUE, const char*, VALUE(*)(), int);
+VALUE rb_singleton_class(VALUE);
+int rb_cmpint(VALUE, VALUE, VALUE);
+__attribute__ ((noreturn)) void rb_cmperr(VALUE, VALUE);
+VALUE rb_fiber_new(VALUE (*)(), VALUE);
+VALUE rb_fiber_resume(VALUE fib, int argc, VALUE *args);
+VALUE rb_fiber_yield(int argc, VALUE *args);
+VALUE rb_fiber_current(void);
+VALUE rb_fiber_alive_p(VALUE);
+VALUE rb_enumeratorize(VALUE, VALUE, int, VALUE *);
+VALUE rb_exc_new(VALUE, const char*, long);
+VALUE rb_exc_new2(VALUE, const char*);
+VALUE rb_exc_new3(VALUE, VALUE);
+__attribute__ ((noreturn)) void rb_loaderror(const char*, ...) __attribute__((format(printf, 1, 2)));
+__attribute__ ((noreturn)) void rb_name_error(ID, const char*, ...) __attribute__((format(printf, 2, 3)));
+__attribute__ ((noreturn)) void rb_invalid_str(const char*, const char*);
+void rb_compile_error(const char*, int, const char*, ...) __attribute__((format(printf, 3, 4)));
+void rb_compile_error_append(const char*, ...) __attribute__((format(printf, 1, 2)));
+__attribute__ ((noreturn)) void rb_load_fail(const char*);
+__attribute__ ((noreturn)) void rb_error_frozen(const char*);
+void rb_check_frozen(VALUE);
+int rb_sourceline(void);
+const char *rb_sourcefile(void);
+typedef struct {
+ int maxfd;
+ fd_set *fdset;
+} rb_fdset_t;
+void rb_fd_init(volatile rb_fdset_t *);
+void rb_fd_term(rb_fdset_t *);
+void rb_fd_zero(rb_fdset_t *);
+void rb_fd_set(int, rb_fdset_t *);
+void rb_fd_clr(int, rb_fdset_t *);
+int rb_fd_isset(int, const rb_fdset_t *);
+void rb_fd_copy(rb_fdset_t *, const fd_set *, int);
+int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
+__attribute__ ((noreturn)) void rb_exc_raise(VALUE);
+__attribute__ ((noreturn)) void rb_exc_fatal(VALUE);
+VALUE rb_f_exit(int,VALUE*);
+VALUE rb_f_abort(int,VALUE*);
+void rb_remove_method(VALUE, const char*);
+typedef VALUE (*rb_alloc_func_t)(VALUE);
+void rb_define_alloc_func(VALUE, rb_alloc_func_t);
+void rb_undef_alloc_func(VALUE);
+rb_alloc_func_t rb_get_alloc_func(VALUE);
+void rb_clear_cache(void);
+void rb_clear_cache_by_class(VALUE);
+void rb_alias(VALUE, ID, ID);
+void rb_attr(VALUE,ID,int,int,int);
+int rb_method_boundp(VALUE, ID, int);
+int rb_method_basic_definition_p(VALUE, ID);
+VALUE rb_eval_cmd(VALUE, VALUE, int);
+int rb_obj_respond_to(VALUE, ID, int);
+int rb_respond_to(VALUE, ID);
+void rb_interrupt(void);
+VALUE rb_apply(VALUE, ID, VALUE);
+void rb_backtrace(void);
+ID rb_frame_this_func(void);
+VALUE rb_obj_instance_eval(int, VALUE*, VALUE);
+VALUE rb_obj_instance_exec(int, VALUE*, VALUE);
+VALUE rb_mod_module_eval(int, VALUE*, VALUE);
+VALUE rb_mod_module_exec(int, VALUE*, VALUE);
+void rb_load(VALUE, int);
+void rb_load_protect(VALUE, int, int*);
+__attribute__ ((noreturn)) void rb_jump_tag(int);
+int rb_provided(const char*);
+int rb_feature_provided(const char *, const char **);
+void rb_provide(const char*);
+VALUE rb_f_require(VALUE, VALUE);
+VALUE rb_require_safe(VALUE, int);
+void rb_obj_call_init(VALUE, int, VALUE*);
+VALUE rb_class_new_instance(int, VALUE*, VALUE);
+VALUE rb_block_proc(void);
+VALUE rb_f_lambda(void);
+VALUE rb_proc_new(VALUE (*)( ), VALUE);
+VALUE rb_proc_call(VALUE, VALUE);
+VALUE rb_proc_call_with_block(VALUE, int argc, VALUE *argv, VALUE);
+int rb_proc_arity(VALUE);
+VALUE rb_binding_new(void);
+VALUE rb_obj_method(VALUE, VALUE);
+VALUE rb_method_call(int, VALUE*, VALUE);
+int rb_mod_method_arity(VALUE, ID);
+int rb_obj_method_arity(VALUE, ID);
+VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*);
+void rb_set_end_proc(void (*)(VALUE), VALUE);
+void rb_mark_end_proc(void);
+void rb_exec_end_proc(void);
+void Init_jump(void);
+void ruby_finalize(void);
+__attribute__ ((noreturn)) void ruby_stop(int);
+int ruby_cleanup(int);
+void rb_gc_mark_threads(void);
+void rb_thread_schedule(void);
+void rb_thread_wait_fd(int);
+int rb_thread_fd_writable(int);
+void rb_thread_fd_close(int);
+int rb_thread_alone(void);
+void rb_thread_polling(void);
+void rb_thread_sleep(int);
+void rb_thread_sleep_forever(void);
+VALUE rb_thread_stop(void);
+VALUE rb_thread_wakeup(VALUE);
+VALUE rb_thread_run(VALUE);
+VALUE rb_thread_kill(VALUE);
+VALUE rb_thread_create(VALUE (*)(), void*);
+void rb_thread_signal_raise(void *, int);
+void rb_thread_signal_exit(void *);
+int rb_thread_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
+void rb_thread_wait_for(struct timeval);
+VALUE rb_thread_current(void);
+VALUE rb_thread_main(void);
+VALUE rb_thread_local_aref(VALUE, ID);
+VALUE rb_thread_local_aset(VALUE, ID, VALUE);
+void rb_thread_atfork(void);
+void rb_thread_atfork_before_exec(void);
+VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE);
+VALUE rb_file_s_expand_path(int, VALUE *);
+VALUE rb_file_expand_path(VALUE, VALUE);
+VALUE rb_file_s_absolute_path(int, VALUE *);
+VALUE rb_file_absolute_path(VALUE, VALUE);
+void rb_file_const(const char*, VALUE);
+int rb_find_file_ext(VALUE*, const char* const*);
+VALUE rb_find_file(VALUE);
+char *rb_path_next(const char *);
+char *rb_path_skip_prefix(const char *);
+char *rb_path_last_separator(const char *);
+char *rb_path_end(const char *);
+VALUE rb_file_directory_p(VALUE,VALUE);
+void ruby_set_stack_size(size_t);
+__attribute__ ((noreturn)) void rb_memerror(void);
+int ruby_stack_check(void);
+size_t ruby_stack_length(VALUE**);
+int rb_during_gc(void);
+void rb_gc_mark_locations(VALUE*, VALUE*);
+void rb_mark_tbl(struct st_table*);
+void rb_mark_set(struct st_table*);
+void rb_mark_hash(struct st_table*);
+void rb_gc_mark_maybe(VALUE);
+void rb_gc_mark(VALUE);
+void rb_gc_force_recycle(VALUE);
+void rb_gc(void);
+void rb_gc_copy_finalizer(VALUE,VALUE);
+void rb_gc_finalize_deferred(void);
+void rb_gc_call_finalizer_at_exit(void);
+VALUE rb_gc_enable(void);
+VALUE rb_gc_disable(void);
+VALUE rb_gc_start(void);
+void st_foreach_safe(struct st_table *, int (*)(), st_data_t);
+void rb_hash_foreach(VALUE, int (*)(), VALUE);
+VALUE rb_hash(VALUE);
+VALUE rb_hash_new(void);
+VALUE rb_hash_dup(VALUE);
+VALUE rb_hash_freeze(VALUE);
+VALUE rb_hash_aref(VALUE, VALUE);
+VALUE rb_hash_lookup(VALUE, VALUE);
+VALUE rb_hash_lookup2(VALUE, VALUE, VALUE);
+VALUE rb_hash_fetch(VALUE, VALUE);
+VALUE rb_hash_aset(VALUE, VALUE, VALUE);
+VALUE rb_hash_delete_if(VALUE);
+VALUE rb_hash_delete(VALUE,VALUE);
+struct st_table *rb_hash_tbl(VALUE);
+int rb_path_check(const char*);
+int rb_env_path_tainted(void);
+VALUE rb_env_clear(void);
+extern VALUE rb_fs;
+extern VALUE rb_output_fs;
+extern VALUE rb_rs;
+extern VALUE rb_default_rs;
+extern VALUE rb_output_rs;
+VALUE rb_io_write(VALUE, VALUE);
+VALUE rb_io_gets(VALUE);
+VALUE rb_io_getbyte(VALUE);
+VALUE rb_io_ungetc(VALUE, VALUE);
+VALUE rb_io_ungetbyte(VALUE, VALUE);
+VALUE rb_io_close(VALUE);
+VALUE rb_io_flush(VALUE);
+VALUE rb_io_eof(VALUE);
+VALUE rb_io_binmode(VALUE);
+VALUE rb_io_ascii8bit_binmode(VALUE);
+VALUE rb_io_addstr(VALUE, VALUE);
+VALUE rb_io_printf(int, VALUE*, VALUE);
+VALUE rb_io_print(int, VALUE*, VALUE);
+VALUE rb_io_puts(int, VALUE*, VALUE);
+VALUE rb_io_fdopen(int, int, const char*);
+VALUE rb_file_open(const char*, const char*);
+VALUE rb_file_open_str(VALUE, const char*);
+VALUE rb_gets(void);
+void rb_write_error(const char*);
+void rb_write_error2(const char*, long);
+void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
+int rb_pipe(int *pipes);
+VALUE rb_marshal_dump(VALUE, VALUE);
+VALUE rb_marshal_load(VALUE);
+void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE));
+void rb_num_zerodiv(void);
+VALUE rb_num_coerce_bin(VALUE, VALUE, ID);
+VALUE rb_num_coerce_cmp(VALUE, VALUE, ID);
+VALUE rb_num_coerce_relop(VALUE, VALUE, ID);
+VALUE rb_float_new(double);
+VALUE rb_num2fix(VALUE);
+VALUE rb_fix2str(VALUE, int);
+VALUE rb_dbl_cmp(double, double);
+int rb_eql(VALUE, VALUE);
+VALUE rb_any_to_s(VALUE);
+VALUE rb_inspect(VALUE);
+VALUE rb_obj_is_instance_of(VALUE, VALUE);
+VALUE rb_obj_is_kind_of(VALUE, VALUE);
+VALUE rb_obj_alloc(VALUE);
+VALUE rb_obj_clone(VALUE);
+VALUE rb_obj_dup(VALUE);
+VALUE rb_obj_init_copy(VALUE,VALUE);
+VALUE rb_obj_taint(VALUE);
+VALUE rb_obj_tainted(VALUE);
+VALUE rb_obj_untaint(VALUE);
+VALUE rb_obj_freeze(VALUE);
+VALUE rb_obj_frozen_p(VALUE);
+VALUE rb_obj_id(VALUE);
+VALUE rb_obj_class(VALUE);
+VALUE rb_class_real(VALUE);
+VALUE rb_class_inherited_p(VALUE, VALUE);
+VALUE rb_convert_type(VALUE,int,const char*,const char*);
+VALUE rb_check_convert_type(VALUE,int,const char*,const char*);
+VALUE rb_check_to_integer(VALUE, const char *);
+VALUE rb_to_int(VALUE);
+VALUE rb_Integer(VALUE);
+VALUE rb_Float(VALUE);
+VALUE rb_String(VALUE);
+VALUE rb_Array(VALUE);
+double rb_cstr_to_dbl(const char*, int);
+double rb_str_to_dbl(VALUE, int);
+extern int ruby_sourceline;
+extern char *ruby_sourcefile;
+ID rb_id_attrset(ID);
+void rb_gc_mark_parser(void);
+int rb_is_const_id(ID);
+int rb_is_instance_id(ID);
+int rb_is_class_id(ID);
+int rb_is_local_id(ID);
+int rb_is_junk_id(ID);
+int rb_symname_p(const char*);
+int rb_sym_interned_p(VALUE);
+void rb_gc_mark_symbols(void);
+VALUE rb_backref_get(void);
+void rb_backref_set(VALUE);
+VALUE rb_lastline_get(void);
+void rb_lastline_set(VALUE);
+VALUE rb_sym_all_symbols(void);
+void rb_last_status_set(int status, pid_t pid);
+VALUE rb_last_status_get(void);
+struct rb_exec_arg {
+ int argc;
+ VALUE *argv;
+ const char *prog;
+ VALUE options;
+ VALUE redirect_fds;
+};
+int rb_proc_exec_n(int, VALUE*, const char*);
+int rb_proc_exec(const char*);
+VALUE rb_exec_arg_init(int argc, VALUE *argv, int accept_shell, struct rb_exec_arg *e);
+int rb_exec_arg_addopt(struct rb_exec_arg *e, VALUE key, VALUE val);
+void rb_exec_arg_fixup(struct rb_exec_arg *e);
+int rb_run_exec_options(const struct rb_exec_arg *e, struct rb_exec_arg *s);
+int rb_exec(const struct rb_exec_arg*);
+pid_t rb_fork(int*, int (*)(void*), void*, VALUE);
+VALUE rb_f_exec(int,VALUE*);
+pid_t rb_waitpid(pid_t pid, int *status, int flags);
+void rb_syswait(pid_t pid);
+pid_t rb_spawn(int, VALUE*);
+VALUE rb_proc_times(VALUE);
+VALUE rb_detach_process(pid_t pid);
+VALUE rb_range_new(VALUE, VALUE, int);
+VALUE rb_range_beg_len(VALUE, long*, long*, long, int);
+unsigned long rb_genrand_int32(void);
+double rb_genrand_real(void);
+void rb_reset_random_seed(void);
+int rb_memcicmp(const void*,const void*,long);
+void rb_match_busy(VALUE);
+VALUE rb_reg_nth_defined(int, VALUE);
+VALUE rb_reg_nth_match(int, VALUE);
+VALUE rb_reg_last_match(VALUE);
+VALUE rb_reg_match_pre(VALUE);
+VALUE rb_reg_match_post(VALUE);
+VALUE rb_reg_match_last(VALUE);
+VALUE rb_reg_new_str(VALUE, int);
+VALUE rb_reg_new(const char *, long, int);
+VALUE rb_reg_match(VALUE, VALUE);
+VALUE rb_reg_match2(VALUE);
+int rb_reg_options(VALUE);
+void rb_set_kcode(const char*);
+const char* rb_get_kcode(void);
+extern VALUE rb_argv0;
+VALUE rb_get_argv(void);
+void *rb_load_file(const char*);
+void ruby_script(const char*);
+void ruby_prog_init(void);
+void ruby_set_argv(int, char**);
+void *ruby_process_options(int, char**);
+void ruby_init_loadpath(void);
+void ruby_incpush(const char*);
+VALUE rb_f_kill(int, VALUE*);
+void rb_gc_mark_trap_list(void);
+void (*ruby_posix_signal(int, void (*)(int)))(int);
+void ruby_sig_finalize(void);
+void rb_trap_exit(void);
+void rb_trap_exec(void);
+const char *ruby_signal_name(int);
+void ruby_default_signal(int);
+VALUE rb_f_sprintf(int, const VALUE*);
+VALUE rb_sprintf(const char*, ...) __attribute__((format(printf, 1, 2)));
+VALUE rb_vsprintf(const char*, va_list);
+VALUE rb_str_catf(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
+VALUE rb_str_vcatf(VALUE, const char*, va_list);
+VALUE rb_str_format(int, const VALUE *, VALUE);
+VALUE rb_str_new(const char*, long);
+VALUE rb_str_new_cstr(const char*);
+VALUE rb_str_new2(const char*);
+VALUE rb_str_new_shared(VALUE);
+VALUE rb_str_new3(VALUE);
+VALUE rb_str_new_frozen(VALUE);
+VALUE rb_str_new4(VALUE);
+VALUE rb_str_new_with_class(VALUE, const char*, long);
+VALUE rb_str_new5(VALUE, const char*, long);
+VALUE rb_tainted_str_new_cstr(const char*);
+VALUE rb_tainted_str_new(const char*, long);
+VALUE rb_tainted_str_new2(const char*);
+VALUE rb_external_str_new(const char*, long);
+VALUE rb_external_str_new_cstr(const char*);
+VALUE rb_locale_str_new(const char*, long);
+VALUE rb_locale_str_new_cstr(const char*);
+VALUE rb_str_buf_new(long);
+VALUE rb_str_buf_new_cstr(const char*);
+VALUE rb_str_buf_new2(const char*);
+VALUE rb_str_tmp_new(long);
+VALUE rb_usascii_str_new(const char*, long);
+VALUE rb_usascii_str_new_cstr(const char*);
+VALUE rb_usascii_str_new2(const char*);
+void rb_str_free(VALUE);
+void rb_str_shared_replace(VALUE, VALUE);
+VALUE rb_str_buf_append(VALUE, VALUE);
+VALUE rb_str_buf_cat(VALUE, const char*, long);
+VALUE rb_str_buf_cat2(VALUE, const char*);
+VALUE rb_str_buf_cat_ascii(VALUE, const char*);
+VALUE rb_obj_as_string(VALUE);
+VALUE rb_check_string_type(VALUE);
+VALUE rb_str_dup(VALUE);
+VALUE rb_str_locktmp(VALUE);
+VALUE rb_str_unlocktmp(VALUE);
+VALUE rb_str_dup_frozen(VALUE);
+VALUE rb_str_plus(VALUE, VALUE);
+VALUE rb_str_times(VALUE, VALUE);
+long rb_str_sublen(VALUE, long);
+VALUE rb_str_substr(VALUE, long, long);
+VALUE rb_str_subseq(VALUE, long, long);
+void rb_str_modify(VALUE);
+VALUE rb_str_freeze(VALUE);
+void rb_str_set_len(VALUE, long);
+VALUE rb_str_resize(VALUE, long);
+VALUE rb_str_cat(VALUE, const char*, long);
+VALUE rb_str_cat2(VALUE, const char*);
+VALUE rb_str_append(VALUE, VALUE);
+VALUE rb_str_concat(VALUE, VALUE);
+int rb_memhash(const void *ptr, long len);
+int rb_str_hash(VALUE);
+int rb_str_hash_cmp(VALUE,VALUE);
+int rb_str_comparable(VALUE, VALUE);
+int rb_str_cmp(VALUE, VALUE);
+VALUE rb_str_equal(VALUE str1, VALUE str2);
+VALUE rb_str_drop_bytes(VALUE, long);
+void rb_str_update(VALUE, long, long, VALUE);
+VALUE rb_str_inspect(VALUE);
+VALUE rb_str_dump(VALUE);
+VALUE rb_str_split(VALUE, const char*);
+void rb_str_associate(VALUE, VALUE);
+VALUE rb_str_associated(VALUE);
+void rb_str_setter(VALUE, ID, VALUE*);
+VALUE rb_str_intern(VALUE);
+VALUE rb_sym_to_s(VALUE);
+VALUE rb_str_length(VALUE);
+size_t rb_str_capacity(VALUE);
+VALUE rb_struct_new(VALUE, ...);
+VALUE rb_struct_define(const char*, ...);
+VALUE rb_struct_alloc(VALUE, VALUE);
+VALUE rb_struct_initialize(VALUE, VALUE);
+VALUE rb_struct_aref(VALUE, VALUE);
+VALUE rb_struct_aset(VALUE, VALUE, VALUE);
+VALUE rb_struct_getmember(VALUE, ID);
+VALUE rb_struct_iv_get(VALUE, const char*);
+VALUE rb_struct_s_members(VALUE);
+VALUE rb_struct_members(VALUE);
+VALUE rb_struct_alloc_noinit(VALUE);
+VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t, ...);
+typedef void rb_unblock_function_t(void *);
+typedef VALUE rb_blocking_function_t(void *);
+void rb_thread_check_ints(void);
+int rb_thread_interrupted(VALUE thval);
+VALUE rb_thread_blocking_region(rb_blocking_function_t *func, void *data1,
+ rb_unblock_function_t *ubf, void *data2);
+VALUE rb_mutex_new(void);
+VALUE rb_mutex_locked_p(VALUE mutex);
+VALUE rb_mutex_try_lock(VALUE mutex);
+VALUE rb_mutex_lock(VALUE mutex);
+VALUE rb_mutex_unlock(VALUE mutex);
+VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
+VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);
+VALUE rb_barrier_new(void);
+VALUE rb_barrier_wait(VALUE self);
+VALUE rb_barrier_release(VALUE self);
+VALUE rb_barrier_destroy(VALUE self);
+VALUE rb_time_new(time_t, long);
+VALUE rb_time_nano_new(time_t, long);
+VALUE rb_mod_name(VALUE);
+VALUE rb_class_path(VALUE);
+void rb_set_class_path(VALUE, VALUE, const char*);
+VALUE rb_path2class(const char*);
+void rb_name_class(VALUE, ID);
+VALUE rb_class_name(VALUE);
+void rb_autoload(VALUE, ID, const char*);
+VALUE rb_autoload_load(VALUE, ID);
+VALUE rb_autoload_p(VALUE, ID);
+void rb_gc_mark_global_tbl(void);
+VALUE rb_f_trace_var(int, VALUE*);
+VALUE rb_f_untrace_var(int, VALUE*);
+VALUE rb_f_global_variables(void);
+void rb_alias_variable(ID, ID);
+struct st_table* rb_generic_ivar_table(VALUE);
+void rb_copy_generic_ivar(VALUE,VALUE);
+void rb_mark_generic_ivar(VALUE);
+void rb_mark_generic_ivar_tbl(void);
+void rb_free_generic_ivar(VALUE);
+VALUE rb_ivar_get(VALUE, ID);
+VALUE rb_ivar_set(VALUE, ID, VALUE);
+VALUE rb_ivar_defined(VALUE, ID);
+void rb_ivar_foreach(VALUE, int (*)(), st_data_t);
+VALUE rb_iv_set(VALUE, const char*, VALUE);
+VALUE rb_iv_get(VALUE, const char*);
+VALUE rb_attr_get(VALUE, ID);
+VALUE rb_obj_instance_variables(VALUE);
+VALUE rb_obj_remove_instance_variable(VALUE, VALUE);
+void *rb_mod_const_at(VALUE, void*);
+void *rb_mod_const_of(VALUE, void*);
+VALUE rb_const_list(void*);
+VALUE rb_mod_constants(int, VALUE *, VALUE);
+VALUE rb_mod_remove_const(VALUE, VALUE);
+int rb_const_defined(VALUE, ID);
+int rb_const_defined_at(VALUE, ID);
+int rb_const_defined_from(VALUE, ID);
+VALUE rb_const_get(VALUE, ID);
+VALUE rb_const_get_at(VALUE, ID);
+VALUE rb_const_get_from(VALUE, ID);
+void rb_const_set(VALUE, ID, VALUE);
+VALUE rb_mod_const_missing(VALUE,VALUE);
+VALUE rb_cvar_defined(VALUE, ID);
+void rb_cvar_set(VALUE, ID, VALUE);
+VALUE rb_cvar_get(VALUE, ID);
+void rb_cv_set(VALUE, const char*, VALUE);
+VALUE rb_cv_get(VALUE, const char*);
+void rb_define_class_variable(VALUE, const char*, VALUE);
+VALUE rb_mod_class_variables(VALUE);
+VALUE rb_mod_remove_cvar(VALUE, VALUE);
+void ruby_show_version(void);
+void ruby_show_copyright(void);
+ID rb_frame_callee(void);
+VALUE rb_str_succ(VALUE);
+VALUE rb_time_succ(VALUE);
+void rb_frame_pop(void);
+int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
+void ruby_sysinit(int *, char ***);
+int ruby_native_thread_p(void);
+typedef unsigned int rb_event_flag_t;
+typedef void (*rb_event_hook_func_t)(rb_event_flag_t, VALUE data, VALUE, ID, VALUE klass);
+typedef struct rb_event_hook_struct {
+ rb_event_flag_t flag;
+ rb_event_hook_func_t func;
+ VALUE data;
+ struct rb_event_hook_struct *next;
+} rb_event_hook_t;
+void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
+ VALUE data);
+int rb_remove_event_hook(rb_event_hook_func_t func);
+int rb_isalnum(int c);
+int rb_isalpha(int c);
+int rb_isblank(int c);
+int rb_iscntrl(int c);
+int rb_isdigit(int c);
+int rb_isgraph(int c);
+int rb_islower(int c);
+int rb_isprint(int c);
+int rb_ispunct(int c);
+int rb_isspace(int c);
+int rb_isupper(int c);
+int rb_isxdigit(int c);
+int rb_tolower(int c);
+int rb_toupper(int c);
+int st_strcasecmp(const char *s1, const char *s2);
+int st_strncasecmp(const char *s1, const char *s2, size_t n);
+unsigned long ruby_strtoul(const char *str, char **endptr, int base);
+typedef unsigned char OnigUChar;
+typedef unsigned int OnigCodePoint;
+typedef unsigned int OnigCtype;
+typedef unsigned int OnigDistance;
+typedef unsigned int OnigCaseFoldType;
+extern OnigCaseFoldType OnigDefaultCaseFoldFlag;
+typedef struct {
+ int byte_len;
+ int code_len;
+ OnigCodePoint code[3];
+} OnigCaseFoldCodeItem;
+typedef struct {
+ OnigCodePoint esc;
+ OnigCodePoint anychar;
+ OnigCodePoint anytime;
+ OnigCodePoint zero_or_one_time;
+ OnigCodePoint one_or_more_time;
+ OnigCodePoint anychar_anytime;
+} OnigMetaCharTableType;
+typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg);
+typedef struct OnigEncodingTypeST {
+ int (*precise_mbc_enc_len)(const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc);
+ const char* name;
+ int max_enc_len;
+ int min_enc_len;
+ int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
+ OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
+ int (*code_to_mbclen)(OnigCodePoint code, struct OnigEncodingTypeST* enc);
+ int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf, struct OnigEncodingTypeST* enc);
+ int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, struct OnigEncodingTypeST* enc);
+ int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, struct OnigEncodingTypeST* enc);
+ int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[], struct OnigEncodingTypeST* enc);
+ int (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end);
+ int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, struct OnigEncodingTypeST* enc);
+ int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], struct OnigEncodingTypeST* enc);
+ OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
+ int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
+ int ruby_encoding_index;
+} OnigEncodingType;
+typedef OnigEncodingType* OnigEncoding;
+extern OnigEncodingType OnigEncodingASCII;
+extern
+int onigenc_mbclen_approximate (const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc);
+extern
+OnigUChar* onigenc_step_back (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n);
+extern
+int onigenc_init (void);
+extern
+int onigenc_set_default_encoding (OnigEncoding enc);
+extern
+OnigEncoding onigenc_get_default_encoding (void);
+extern
+void onigenc_set_default_caseconv_table (const OnigUChar* table);
+extern
+OnigUChar* onigenc_get_right_adjust_char_head_with_prev (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev);
+extern
+OnigUChar* onigenc_get_prev_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
+extern
+OnigUChar* onigenc_get_left_adjust_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
+extern
+OnigUChar* onigenc_get_right_adjust_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
+extern
+int onigenc_strlen (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
+extern
+int onigenc_strlen_null (OnigEncoding enc, const OnigUChar* p);
+extern
+int onigenc_str_bytelen_null (OnigEncoding enc, const OnigUChar* p);
+typedef unsigned int OnigOptionType;
+typedef struct {
+ unsigned int op;
+ unsigned int op2;
+ unsigned int behavior;
+ OnigOptionType options;
+ OnigMetaCharTableType meta_char_table;
+} OnigSyntaxType;
+extern const OnigSyntaxType OnigSyntaxASIS;
+extern const OnigSyntaxType OnigSyntaxPosixBasic;
+extern const OnigSyntaxType OnigSyntaxPosixExtended;
+extern const OnigSyntaxType OnigSyntaxEmacs;
+extern const OnigSyntaxType OnigSyntaxGrep;
+extern const OnigSyntaxType OnigSyntaxGnuRegex;
+extern const OnigSyntaxType OnigSyntaxJava;
+extern const OnigSyntaxType OnigSyntaxPerl;
+extern const OnigSyntaxType OnigSyntaxPerl_NG;
+extern const OnigSyntaxType OnigSyntaxRuby;
+extern const OnigSyntaxType* OnigDefaultSyntax;
+typedef struct OnigCaptureTreeNodeStruct {
+ int group;
+ int beg;
+ int end;
+ int allocated;
+ int num_childs;
+ struct OnigCaptureTreeNodeStruct** childs;
+} OnigCaptureTreeNode;
+struct re_registers {
+ int allocated;
+ int num_regs;
+ int* beg;
+ int* end;
+ OnigCaptureTreeNode* history_root;
+};
+typedef struct re_registers OnigRegion;
+typedef struct {
+ OnigEncoding enc;
+ OnigUChar* par;
+ OnigUChar* par_end;
+} OnigErrorInfo;
+typedef struct {
+ int lower;
+ int upper;
+} OnigRepeatRange;
+typedef void (*OnigWarnFunc) (const char* s);
+extern void onig_null_warn (const char* s);
+typedef struct re_pattern_buffer {
+ unsigned char* p;
+ unsigned int used;
+ unsigned int alloc;
+ int state;
+ int num_mem;
+ int num_repeat;
+ int num_null_check;
+ int num_comb_exp_check;
+ int num_call;
+ unsigned int capture_history;
+ unsigned int bt_mem_start;
+ unsigned int bt_mem_end;
+ int stack_pop_level;
+ int repeat_range_alloc;
+ OnigRepeatRange* repeat_range;
+ OnigEncoding enc;
+ OnigOptionType options;
+ const OnigSyntaxType* syntax;
+ OnigCaseFoldType case_fold_flag;
+ void* name_table;
+ int optimize;
+ int threshold_len;
+ int anchor;
+ OnigDistance anchor_dmin;
+ OnigDistance anchor_dmax;
+ int sub_anchor;
+ unsigned char *exact;
+ unsigned char *exact_end;
+ unsigned char map[256];
+ int *int_map;
+ int *int_map_backward;
+ OnigDistance dmin;
+ OnigDistance dmax;
+ struct re_pattern_buffer* chain;
+} OnigRegexType;
+typedef OnigRegexType* OnigRegex;
+ typedef OnigRegexType regex_t;
+typedef struct {
+ int num_of_elements;
+ OnigEncoding pattern_enc;
+ OnigEncoding target_enc;
+ OnigSyntaxType* syntax;
+ OnigOptionType option;
+ OnigCaseFoldType case_fold_flag;
+} OnigCompileInfo;
+extern
+int onig_init (void);
+extern
+int onig_error_code_to_str (OnigUChar* s, int err_code, ...);
+extern
+void onig_set_warn_func (OnigWarnFunc f);
+extern
+void onig_set_verb_warn_func (OnigWarnFunc f);
+extern
+int onig_new (OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
+extern
+int onig_new_deluxe (OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
+extern
+void onig_free (OnigRegex);
+extern
+int onig_recompile (OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo);
+extern
+int onig_recompile_deluxe (OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
+extern
+int onig_search (OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
+extern
+int onig_match (OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option);
+extern
+OnigRegion* onig_region_new (void);
+extern
+void onig_region_init (OnigRegion* region);
+extern
+void onig_region_free (OnigRegion* region, int free_self);
+extern
+void onig_region_copy (OnigRegion* to, OnigRegion* from);
+extern
+void onig_region_clear (OnigRegion* region);
+extern
+int onig_region_resize (OnigRegion* region, int n);
+extern
+int onig_region_set (OnigRegion* region, int at, int beg, int end);
+extern
+int onig_name_to_group_numbers (OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums);
+extern
+int onig_name_to_backref_number (OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region);
+extern
+int onig_foreach_name (OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg);
+extern
+int onig_number_of_names (OnigRegex reg);
+extern
+int onig_number_of_captures (OnigRegex reg);
+extern
+int onig_number_of_capture_histories (OnigRegex reg);
+extern
+OnigCaptureTreeNode* onig_get_capture_tree (OnigRegion* region);
+extern
+int onig_capture_tree_traverse (OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg);
+extern
+int onig_noname_group_capture_is_active (OnigRegex reg);
+extern
+OnigEncoding onig_get_encoding (OnigRegex reg);
+extern
+OnigOptionType onig_get_options (OnigRegex reg);
+extern
+OnigCaseFoldType onig_get_case_fold_flag (OnigRegex reg);
+extern
+const OnigSyntaxType* onig_get_syntax (OnigRegex reg);
+extern
+int onig_set_default_syntax (const OnigSyntaxType* syntax);
+extern
+void onig_copy_syntax (OnigSyntaxType* to, const OnigSyntaxType* from);
+extern
+unsigned int onig_get_syntax_op (OnigSyntaxType* syntax);
+extern
+unsigned int onig_get_syntax_op2 (OnigSyntaxType* syntax);
+extern
+unsigned int onig_get_syntax_behavior (OnigSyntaxType* syntax);
+extern
+OnigOptionType onig_get_syntax_options (OnigSyntaxType* syntax);
+extern
+void onig_set_syntax_op (OnigSyntaxType* syntax, unsigned int op);
+extern
+void onig_set_syntax_op2 (OnigSyntaxType* syntax, unsigned int op2);
+extern
+void onig_set_syntax_behavior (OnigSyntaxType* syntax, unsigned int behavior);
+extern
+void onig_set_syntax_options (OnigSyntaxType* syntax, OnigOptionType options);
+extern
+int onig_set_meta_char (OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code);
+extern
+void onig_copy_encoding (OnigEncoding to, OnigEncoding from);
+extern
+OnigCaseFoldType onig_get_default_case_fold_flag (void);
+extern
+int onig_set_default_case_fold_flag (OnigCaseFoldType case_fold_flag);
+extern
+unsigned int onig_get_match_stack_limit_size (void);
+extern
+int onig_set_match_stack_limit_size (unsigned int size);
+extern
+int onig_end (void);
+extern
+const char* onig_version (void);
+extern
+const char* onig_copyright (void);
+typedef OnigEncodingType rb_encoding;
+int rb_enc_replicate(const char *, rb_encoding *);
+int rb_define_dummy_encoding(const char *);
+int rb_enc_get_index(VALUE obj);
+void rb_enc_set_index(VALUE obj, int encindex);
+int rb_enc_find_index(const char *name);
+int rb_to_encoding_index(VALUE);
+rb_encoding* rb_to_encoding(VALUE);
+rb_encoding* rb_enc_get(VALUE);
+rb_encoding* rb_enc_compatible(VALUE,VALUE);
+rb_encoding* rb_enc_check(VALUE,VALUE);
+VALUE rb_enc_associate_index(VALUE, int);
+VALUE rb_enc_associate(VALUE, rb_encoding*);
+void rb_enc_copy(VALUE dst, VALUE src);
+VALUE rb_enc_str_new(const char*, long, rb_encoding*);
+VALUE rb_enc_reg_new(const char*, long, rb_encoding*, int);
+VALUE rb_enc_sprintf(rb_encoding *, const char*, ...) __attribute__((format(printf, 2, 3)));
+VALUE rb_enc_vsprintf(rb_encoding *, const char*, va_list);
+long rb_enc_strlen(const char*, const char*, rb_encoding*);
+char* rb_enc_nth(const char*, const char*, int, rb_encoding*);
+VALUE rb_obj_encoding(VALUE);
+VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc);
+VALUE rb_external_str_new_with_enc(const char *ptr, long len, rb_encoding *);
+VALUE rb_str_export_to_enc(VALUE, rb_encoding *);
+VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to);
+rb_encoding* rb_enc_from_index(int idx);
+rb_encoding * rb_enc_find(const char *name);
+int rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc);
+int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc);
+int rb_enc_ascget(const char *p, const char *e, int *len, rb_encoding *enc);
+unsigned int rb_enc_codepoint(const char *p, const char *e, rb_encoding *enc);
+int rb_enc_codelen(int code, rb_encoding *enc);
+int rb_enc_casefold(char *to, const char *p, const char *e, rb_encoding *enc);
+int rb_enc_toupper(int c, rb_encoding *enc);
+int rb_enc_tolower(int c, rb_encoding *enc);
+ID rb_intern3(const char*, long, rb_encoding*);
+ID rb_interned_id_p(const char *, long, rb_encoding *);
+int rb_enc_symname_p(const char*, rb_encoding*);
+int rb_enc_str_coderange(VALUE);
+long rb_str_coderange_scan_restartable(const char*, const char*, rb_encoding*, int*);
+int rb_enc_str_asciionly_p(VALUE);
+VALUE rb_enc_from_encoding(rb_encoding *enc);
+rb_encoding *rb_ascii8bit_encoding(void);
+rb_encoding *rb_utf8_encoding(void);
+rb_encoding *rb_usascii_encoding(void);
+rb_encoding *rb_locale_encoding(void);
+rb_encoding *rb_filesystem_encoding(void);
+rb_encoding *rb_default_external_encoding(void);
+rb_encoding *rb_default_internal_encoding(void);
+int rb_ascii8bit_encindex(void);
+int rb_utf8_encindex(void);
+int rb_usascii_encindex(void);
+VALUE rb_enc_default_external(void);
+VALUE rb_enc_default_internal(void);
+void rb_enc_set_default_external(VALUE encoding);
+void rb_enc_set_default_internal(VALUE encoding);
+VALUE rb_locale_charmap(VALUE klass);
+long rb_memsearch(const void*,long,const void*,long,rb_encoding*);
+extern VALUE rb_cEncoding;
+static inline int
+rb_enc_dummy_p(rb_encoding *enc)
+{
+ return ((enc)->ruby_encoding_index & (1<<24)) != 0;
+}
+typedef enum {
+ econv_invalid_byte_sequence,
+ econv_undefined_conversion,
+ econv_destination_buffer_full,
+ econv_source_buffer_empty,
+ econv_finished,
+ econv_after_output,
+ econv_incomplete_input
+} rb_econv_result_t;
+typedef struct rb_econv_t rb_econv_t;
+VALUE rb_str_encode(VALUE str, VALUE to, int ecflags, VALUE ecopts);
+int rb_econv_has_convpath_p(const char* from_encoding, const char* to_encoding);
+int rb_econv_prepare_opts(VALUE opthash, VALUE *ecopts);
+rb_econv_t *rb_econv_open(const char *source_encoding, const char *destination_encoding, int ecflags);
+rb_econv_t *rb_econv_open_opts(const char *source_encoding, const char *destination_encoding, int ecflags, VALUE ecopts);
+rb_econv_result_t rb_econv_convert(rb_econv_t *ec,
+ const unsigned char **source_buffer_ptr, const unsigned char *source_buffer_end,
+ unsigned char **destination_buffer_ptr, unsigned char *destination_buffer_end,
+ int flags);
+void rb_econv_close(rb_econv_t *ec);
+int rb_econv_set_replacement(rb_econv_t *ec, const unsigned char *str, size_t len, const char *encname);
+int rb_econv_decorate_at_first(rb_econv_t *ec, const char *decorator_name);
+int rb_econv_decorate_at_last(rb_econv_t *ec, const char *decorator_name);
+VALUE rb_econv_open_exc(const char *senc, const char *denc, int ecflags);
+int rb_econv_insert_output(rb_econv_t *ec,
+ const unsigned char *str, size_t len, const char *str_encoding);
+const char *rb_econv_encoding_to_insert_output(rb_econv_t *ec);
+void rb_econv_check_error(rb_econv_t *ec);
+VALUE rb_econv_make_exception(rb_econv_t *ec);
+int rb_econv_putbackable(rb_econv_t *ec);
+void rb_econv_putback(rb_econv_t *ec, unsigned char *p, int n);
+const char *rb_econv_asciicompat_encoding(const char *encname);
+VALUE rb_econv_str_convert(rb_econv_t *ec, VALUE src, int flags);
+VALUE rb_econv_substr_convert(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, int flags);
+VALUE rb_econv_str_append(rb_econv_t *ec, VALUE src, VALUE dst, int flags);
+VALUE rb_econv_substr_append(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, VALUE dst, int flags);
+void rb_econv_binmode(rb_econv_t *ec);
+enum node_type {
+ NODE_METHOD,
+ NODE_FBODY,
+ NODE_CFUNC,
+ NODE_SCOPE,
+ NODE_BLOCK,
+ NODE_IF,
+ NODE_CASE,
+ NODE_WHEN,
+ NODE_OPT_N,
+ NODE_WHILE,
+ NODE_UNTIL,
+ NODE_ITER,
+ NODE_FOR,
+ NODE_BREAK,
+ NODE_NEXT,
+ NODE_REDO,
+ NODE_RETRY,
+ NODE_BEGIN,
+ NODE_RESCUE,
+ NODE_RESBODY,
+ NODE_ENSURE,
+ NODE_AND,
+ NODE_OR,
+ NODE_MASGN,
+ NODE_LASGN,
+ NODE_DASGN,
+ NODE_DASGN_CURR,
+ NODE_GASGN,
+ NODE_IASGN,
+ NODE_IASGN2,
+ NODE_CDECL,
+ NODE_CVASGN,
+ NODE_CVDECL,
+ NODE_OP_ASGN1,
+ NODE_OP_ASGN2,
+ NODE_OP_ASGN_AND,
+ NODE_OP_ASGN_OR,
+ NODE_CALL,
+ NODE_FCALL,
+ NODE_VCALL,
+ NODE_SUPER,
+ NODE_ZSUPER,
+ NODE_ARRAY,
+ NODE_ZARRAY,
+ NODE_VALUES,
+ NODE_HASH,
+ NODE_RETURN,
+ NODE_YIELD,
+ NODE_LVAR,
+ NODE_DVAR,
+ NODE_GVAR,
+ NODE_IVAR,
+ NODE_CONST,
+ NODE_CVAR,
+ NODE_NTH_REF,
+ NODE_BACK_REF,
+ NODE_MATCH,
+ NODE_MATCH2,
+ NODE_MATCH3,
+ NODE_LIT,
+ NODE_STR,
+ NODE_DSTR,
+ NODE_XSTR,
+ NODE_DXSTR,
+ NODE_EVSTR,
+ NODE_DREGX,
+ NODE_DREGX_ONCE,
+ NODE_ARGS,
+ NODE_ARGS_AUX,
+ NODE_OPT_ARG,
+ NODE_POSTARG,
+ NODE_ARGSCAT,
+ NODE_ARGSPUSH,
+ NODE_SPLAT,
+ NODE_TO_ARY,
+ NODE_BLOCK_ARG,
+ NODE_BLOCK_PASS,
+ NODE_DEFN,
+ NODE_DEFS,
+ NODE_ALIAS,
+ NODE_VALIAS,
+ NODE_UNDEF,
+ NODE_CLASS,
+ NODE_MODULE,
+ NODE_SCLASS,
+ NODE_COLON2,
+ NODE_COLON3,
+ NODE_DOT2,
+ NODE_DOT3,
+ NODE_FLIP2,
+ NODE_FLIP3,
+ NODE_ATTRSET,
+ NODE_SELF,
+ NODE_NIL,
+ NODE_TRUE,
+ NODE_FALSE,
+ NODE_ERRINFO,
+ NODE_DEFINED,
+ NODE_POSTEXE,
+ NODE_ALLOCA,
+ NODE_BMETHOD,
+ NODE_MEMO,
+ NODE_IFUNC,
+ NODE_DSYM,
+ NODE_ATTRASGN,
+ NODE_PRELUDE,
+ NODE_LAMBDA,
+ NODE_OPTBLOCK,
+ NODE_LAST
+};
+typedef struct RNode {
+ unsigned long flags;
+ char *nd_file;
+ union {
+ struct RNode *node;
+ ID id;
+ VALUE value;
+ VALUE (*cfunc)();
+ ID *tbl;
+ } u1;
+ union {
+ struct RNode *node;
+ ID id;
+ long argc;
+ VALUE value;
+ } u2;
+ union {
+ struct RNode *node;
+ ID id;
+ long state;
+ struct global_entry *entry;
+ long cnt;
+ VALUE value;
+ } u3;
+} NODE;
+VALUE rb_parser_new(void);
+VALUE rb_parser_end_seen_p(VALUE);
+VALUE rb_parser_encoding(VALUE);
+NODE *rb_parser_compile_cstr(volatile VALUE, const char*, const char*, int, int);
+NODE *rb_parser_compile_string(volatile VALUE, const char*, VALUE, int);
+NODE *rb_parser_compile_file(volatile VALUE, const char*, VALUE, int);
+NODE *rb_compile_cstr(const char*, const char*, int, int);
+NODE *rb_compile_string(const char*, VALUE, int);
+NODE *rb_compile_file(const char*, VALUE, int);
+void rb_add_method(VALUE, ID, NODE *, int);
+NODE *rb_node_newnode(enum node_type,VALUE,VALUE,VALUE);
+NODE* rb_method_node(VALUE klass, ID id);
+int rb_node_arity(NODE* node);
+struct global_entry *rb_global_entry(ID);
+VALUE rb_gvar_get(struct global_entry *);
+VALUE rb_gvar_set(struct global_entry *, VALUE);
+VALUE rb_gvar_defined(struct global_entry *);
+typedef union YYSTYPE
+{
+ VALUE val;
+ NODE *node;
+ ID id;
+ int num;
+}
+ YYSTYPE;
+enum ruby_method_ids {
+ idPLUS = '+',
+ idMINUS = '-',
+ idMULT = '*',
+ idDIV = '/',
+ idMOD = '%',
+ idLT = '<',
+ idLTLT = 338,
+ idLE = 329,
+ idGT = '>',
+ idGE = 328,
+ idEq = 325,
+ idEqq = 326,
+ idNeq = 327,
+ idNot = '!',
+ idBackquote = '`',
+ idEqTilde = 332,
+ idAREF = 336,
+ idASET = 337,
+ idLAST_TOKEN = 376 >> 3,
+ tIntern,
+ tMethodMissing,
+ tLength,
+ tGets,
+ tSucc,
+ tEach,
+ tLambda,
+ tSend,
+ t__send__,
+ tInitialize,
+ tLAST_ID,
+ idIntern = ((tIntern<<3)|0x00),
+ idMethodMissing = ((tMethodMissing<<3)|0x00),
+ idLength = ((tLength<<3)|0x00),
+ idGets = ((tGets<<3)|0x00),
+ idSucc = ((tSucc<<3)|0x00),
+ idEach = ((tEach<<3)|0x00),
+ idLambda = ((tLambda<<3)|0x00),
+ idSend = ((tSend<<3)|0x00),
+ id__send__ = ((t__send__<<3)|0x00),
+ idInitialize = ((tInitialize<<3)|0x00)
+};
+struct ruby_method_ids_check {
+int checking_for_tUPLUS[321 == 321 ? 1 : -1];
+int checking_for_tUMINUS[322 == 322 ? 1 : -1];
+int checking_for_tPOW[323 == 323 ? 1 : -1];
+int checking_for_tCMP[324 == 324 ? 1 : -1];
+int checking_for_tEQ[325 == 325 ? 1 : -1];
+int checking_for_tEQQ[326 == 326 ? 1 : -1];
+int checking_for_tNEQ[327 == 327 ? 1 : -1];
+int checking_for_tGEQ[328 == 328 ? 1 : -1];
+int checking_for_tLEQ[329 == 329 ? 1 : -1];
+int checking_for_tANDOP[330 == 330 ? 1 : -1];
+int checking_for_tOROP[331 == 331 ? 1 : -1];
+int checking_for_tMATCH[332 == 332 ? 1 : -1];
+int checking_for_tNMATCH[333 == 333 ? 1 : -1];
+int checking_for_tDOT2[334 == 334 ? 1 : -1];
+int checking_for_tDOT3[335 == 335 ? 1 : -1];
+int checking_for_tAREF[336 == 336 ? 1 : -1];
+int checking_for_tASET[337 == 337 ? 1 : -1];
+int checking_for_tLSHFT[338 == 338 ? 1 : -1];
+int checking_for_tRSHFT[339 == 339 ? 1 : -1];
+int checking_for_tLAMBDA[352 == 352 ? 1 : -1];
+int checking_for_idNULL[365 == 365 ? 1 : -1];
+int checking_for_idRespond_to[366 == 366 ? 1 : -1];
+int checking_for_idIFUNC[367 == 367 ? 1 : -1];
+int checking_for_idCFUNC[368 == 368 ? 1 : -1];
+int checking_for_idThrowState[369 == 369 ? 1 : -1];
+int checking_for_id_core_set_method_alias[370 == 370 ? 1 : -1];
+int checking_for_id_core_set_variable_alias[371 == 371 ? 1 : -1];
+int checking_for_id_core_undef_method[372 == 372 ? 1 : -1];
+int checking_for_id_core_define_method[373 == 373 ? 1 : -1];
+int checking_for_id_core_define_singleton_method[374 == 374 ? 1 : -1];
+int checking_for_id_core_set_postexe[375 == 375 ? 1 : -1];
+int checking_for_tLAST_TOKEN[376 == 376 ? 1 : -1];
+};
+typedef struct {
+ OnigCodePoint from;
+ OnigCodePoint to;
+} OnigPairCaseFoldCodes;
+typedef struct {
+ OnigUChar *name;
+ int ctype;
+ short int len;
+} PosixBracketEntryType;
+extern int onigenc_ascii_apply_all_case_fold (OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc);
+extern int onigenc_ascii_get_case_fold_codes_by_str (OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[], OnigEncoding enc);
+extern int onigenc_apply_all_case_fold_with_map (int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg);
+extern int onigenc_get_case_fold_codes_by_str_with_map (int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]);
+extern int onigenc_not_support_get_ctype_code_range (OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], OnigEncoding enc);
+extern int onigenc_is_mbc_newline_0x0a (const OnigUChar* p, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_ascii_mbc_case_fold (OnigCaseFoldType flag, const OnigUChar** p, const OnigUChar* end, OnigUChar* lower, OnigEncoding enc);
+extern int onigenc_single_byte_mbc_enc_len (const OnigUChar* p, const OnigUChar* e, OnigEncoding enc);
+extern OnigCodePoint onigenc_single_byte_mbc_to_code (const OnigUChar* p, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_single_byte_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
+extern int onigenc_single_byte_code_to_mbc (OnigCodePoint code, OnigUChar *buf, OnigEncoding enc);
+extern OnigUChar* onigenc_single_byte_left_adjust_char_head (const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_always_true_is_allowed_reverse_match (const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_always_false_is_allowed_reverse_match (const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_ascii_is_code_ctype (OnigCodePoint code, unsigned int ctype, OnigEncoding enc);
+extern OnigCodePoint onigenc_mbn_mbc_to_code (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
+extern int onigenc_mbn_mbc_case_fold (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar** p, const OnigUChar* end, OnigUChar* lower);
+extern int onigenc_mb2_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
+extern int onigenc_mb2_code_to_mbc (OnigEncoding enc, OnigCodePoint code, OnigUChar *buf);
+extern int onigenc_minimum_property_name_to_ctype (OnigEncoding enc, OnigUChar* p, OnigUChar* end);
+extern int onigenc_unicode_property_name_to_ctype (OnigEncoding enc, OnigUChar* p, OnigUChar* end);
+extern int onigenc_mb2_is_code_ctype (OnigEncoding enc, OnigCodePoint code, unsigned int ctype);
+extern int onigenc_mb4_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
+extern int onigenc_mb4_code_to_mbc (OnigEncoding enc, OnigCodePoint code, OnigUChar *buf);
+extern int onigenc_mb4_is_code_ctype (OnigEncoding enc, OnigCodePoint code, unsigned int ctype);
+extern int onigenc_unicode_is_code_ctype (OnigCodePoint code, unsigned int ctype, OnigEncoding enc);
+extern int onigenc_utf16_32_get_ctype_code_range (OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[], OnigEncoding enc);
+extern int onigenc_unicode_ctype_code_range (int ctype, const OnigCodePoint* ranges[]);
+extern int onigenc_unicode_get_case_fold_codes_by_str (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]);
+extern int onigenc_unicode_mbc_case_fold (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* fold);
+extern int onigenc_unicode_apply_all_case_fold (OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc);
+extern const OnigUChar OnigEncISO_8859_1_ToLowerCaseTable[];
+extern const OnigUChar OnigEncISO_8859_1_ToUpperCaseTable[];
+extern int
+onigenc_with_ascii_strncmp (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end, const OnigUChar* sascii , int n);
+extern OnigUChar*
+onigenc_step (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end, int n);
+extern int onig_is_in_code_range (const OnigUChar* p, OnigCodePoint code);
+extern OnigEncoding OnigEncDefaultCharEncoding;
+extern const OnigUChar OnigEncAsciiToLowerCaseTable[];
+extern const OnigUChar OnigEncAsciiToUpperCaseTable[];
+extern const unsigned short OnigEncAsciiCtypeTable[];
+extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern char *program_invocation_name, *program_invocation_short_name;
+typedef int error_t;
+enum
+{
+ _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
+ _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
+ _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
+ _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
+ _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
+ _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
+ _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
+ _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
+ _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
+ _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
+ _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
+ _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
+};
+extern __const unsigned short int **__ctype_b_loc (void)
+ __attribute__ ((__const));
+extern __const __int32_t **__ctype_tolower_loc (void)
+ __attribute__ ((__const));
+extern __const __int32_t **__ctype_toupper_loc (void)
+ __attribute__ ((__const));
+extern int isalnum (int) __attribute__ ((__nothrow__));
+extern int isalpha (int) __attribute__ ((__nothrow__));
+extern int iscntrl (int) __attribute__ ((__nothrow__));
+extern int isdigit (int) __attribute__ ((__nothrow__));
+extern int islower (int) __attribute__ ((__nothrow__));
+extern int isgraph (int) __attribute__ ((__nothrow__));
+extern int isprint (int) __attribute__ ((__nothrow__));
+extern int ispunct (int) __attribute__ ((__nothrow__));
+extern int isspace (int) __attribute__ ((__nothrow__));
+extern int isupper (int) __attribute__ ((__nothrow__));
+extern int isxdigit (int) __attribute__ ((__nothrow__));
+extern int tolower (int __c) __attribute__ ((__nothrow__));
+extern int toupper (int __c) __attribute__ ((__nothrow__));
+extern int isblank (int) __attribute__ ((__nothrow__));
+extern int isctype (int __c, int __mask) __attribute__ ((__nothrow__));
+extern int isascii (int __c) __attribute__ ((__nothrow__));
+extern int toascii (int __c) __attribute__ ((__nothrow__));
+extern int _toupper (int) __attribute__ ((__nothrow__));
+extern int _tolower (int) __attribute__ ((__nothrow__));
+extern __inline int
+__attribute__ ((__nothrow__)) tolower (int __c)
+{
+ return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
+}
+extern __inline int
+__attribute__ ((__nothrow__)) toupper (int __c)
+{
+ return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
+}
+extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+static ID register_symid(ID, const char *, long, rb_encoding *);
+static void
+Init_id(void)
+{
+ rb_encoding *enc = rb_usascii_encoding();
+ register_symid(365, "", strlen(""), enc);
+ register_symid(367, "<IFUNC>", strlen("<IFUNC>"), enc),
+ register_symid(368, "<CFUNC>", strlen("<CFUNC>"), enc),
+ register_symid(366, "respond_to?", strlen("respond_to?"), enc),
+ register_symid(369, "#__ThrowState__", strlen("#__ThrowState__"), enc),
+ register_symid(370, "core#set_method_alias", strlen("core#set_method_alias"), enc),
+ register_symid(371, "core#set_variable_alias", strlen("core#set_variable_alias"), enc),
+ register_symid(372, "core#undef_method", strlen("core#undef_method"), enc),
+ register_symid(373, "core#define_method", strlen("core#define_method"), enc),
+ register_symid(374, "core#define_singleton_method", strlen("core#define_singleton_method"), enc),
+ register_symid(375, "core#set_postexe", strlen("core#set_postexe"), enc),
+ register_symid(idEach, "each", strlen("each"), enc);
+ register_symid(idLength, "length", strlen("length"), enc);
+ register_symid(idLambda, "lambda", strlen("lambda"), enc);
+ register_symid(idIntern, "intern", strlen("intern"), enc);
+ register_symid(idGets, "gets", strlen("gets"), enc);
+ register_symid(idSucc, "succ", strlen("succ"), enc);
+ register_symid(idMethodMissing, "method_missing", strlen("method_missing"), enc);
+ register_symid(idSend, "send", strlen("send"), enc);
+ register_symid(id__send__, "__send__", strlen("__send__"), enc);
+ register_symid(idInitialize, "initialize", strlen("initialize"), enc);
+}
+enum lex_state_e {
+ EXPR_BEG,
+ EXPR_END,
+ EXPR_ENDARG,
+ EXPR_ARG,
+ EXPR_CMDARG,
+ EXPR_MID,
+ EXPR_FNAME,
+ EXPR_DOT,
+ EXPR_CLASS,
+ EXPR_VALUE
+};
+typedef unsigned long long stack_type;
+struct vtable {
+ ID *tbl;
+ int pos;
+ int capa;
+ struct vtable *prev;
+};
+struct local_vars {
+ struct vtable *args;
+ struct vtable *vars;
+ struct local_vars *prev;
+};
+static int
+vtable_size(const struct vtable *tbl)
+{
+ if (((VALUE)(tbl) & ~(VALUE)3)) {
+ return tbl->pos;
+ }
+ else {
+ return 0;
+ }
+}
+static struct vtable *
+vtable_alloc(struct vtable *prev)
+{
+ struct vtable *tbl = (struct vtable*)ruby_xmalloc(sizeof(struct vtable));
+ tbl->pos = 0;
+ tbl->capa = 8;
+ tbl->tbl = (ID*)ruby_xmalloc2((tbl->capa),sizeof(ID));
+ tbl->prev = prev;
+ if (0) printf("vtable_alloc: %p\n", (void *)tbl);
+ return tbl;
+}
+static void
+vtable_free(struct vtable *tbl)
+{
+ if (0)printf("vtable_free: %p\n", (void *)tbl);
+ if (((VALUE)(tbl) & ~(VALUE)3)) {
+ if (tbl->tbl) {
+ ruby_xfree(tbl->tbl);
+ }
+ ruby_xfree(tbl);
+ }
+}
+static void
+vtable_add(struct vtable *tbl, ID id)
+{
+ if (!((VALUE)(tbl) & ~(VALUE)3)) {
+ rb_bug("vtable_add: vtable is not allocated (%p)", (void *)tbl);
+ }
+ if (0) printf("vtable_add: %p, %s\n", (void *)tbl, rb_id2name(id));
+ if (tbl->pos == tbl->capa) {
+ tbl->capa = tbl->capa * 2;
+ (tbl->tbl)=(ID*)ruby_xrealloc2((char*)(tbl->tbl),(tbl->capa),sizeof(ID));
+ }
+ tbl->tbl[tbl->pos++] = id;
+}
+static int
+vtable_included(const struct vtable * tbl, ID id)
+{
+ int i;
+ if (((VALUE)(tbl) & ~(VALUE)3)) {
+ for (i = 0; i < tbl->pos; i++) {
+ if (tbl->tbl[i] == id) {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+typedef struct token_info {
+ const char *token;
+ int linenum;
+ int column;
+ int nonspc;
+ struct token_info *next;
+} token_info;
+struct parser_params {
+ int is_ripper;
+ NODE *heap;
+ YYSTYPE *parser_yylval;
+ VALUE eofp;
+ NODE *parser_lex_strterm;
+ enum lex_state_e parser_lex_state;
+ stack_type parser_cond_stack;
+ stack_type parser_cmdarg_stack;
+ int parser_class_nest;
+ int parser_paren_nest;
+ int parser_lpar_beg;
+ int parser_in_single;
+ int parser_in_def;
+ int parser_compile_for_eval;
+ VALUE parser_cur_mid;
+ int parser_in_defined;
+ char *parser_tokenbuf;
+ int parser_tokidx;
+ int parser_toksiz;
+ VALUE parser_lex_input;
+ VALUE parser_lex_lastline;
+ VALUE parser_lex_nextline;
+ const char *parser_lex_pbeg;
+ const char *parser_lex_p;
+ const char *parser_lex_pend;
+ int parser_heredoc_end;
+ int parser_command_start;
+ NODE *parser_deferred_nodes;
+ int parser_lex_gets_ptr;
+ VALUE (*parser_lex_gets)(struct parser_params*,VALUE);
+ struct local_vars *parser_lvtbl;
+ int parser_ruby__end__seen;
+ int line_count;
+ int has_shebang;
+ char *parser_ruby_sourcefile;
+ int parser_ruby_sourceline;
+ rb_encoding *enc;
+ rb_encoding *utf8;
+ int parser_yydebug;
+ NODE *parser_eval_tree_begin;
+ NODE *parser_eval_tree;
+ VALUE debug_lines;
+ VALUE coverage;
+ int nerr;
+ token_info *parser_token_info;
+};
+void *rb_parser_malloc(struct parser_params *, size_t);
+void *rb_parser_realloc(struct parser_params *, void *, size_t);
+void *rb_parser_calloc(struct parser_params *, size_t, size_t);
+void rb_parser_free(struct parser_params *, void *);
+static int parser_yyerror(struct parser_params*, const char*);
+static int yylex(void*, void*);
+static NODE* node_newnode(struct parser_params *, enum node_type, VALUE, VALUE, VALUE);
+static NODE *cond_gen(struct parser_params*,NODE*);
+static NODE *logop_gen(struct parser_params*,enum node_type,NODE*,NODE*);
+static NODE *newline_node(NODE*);
+static void fixpos(NODE*,NODE*);
+static int value_expr_gen(struct parser_params*,NODE*);
+static void void_expr_gen(struct parser_params*,NODE*);
+static NODE *remove_begin(NODE*);
+static void void_stmts_gen(struct parser_params*,NODE*);
+static void reduce_nodes_gen(struct parser_params*,NODE**);
+static void block_dup_check_gen(struct parser_params*,NODE*,NODE*);
+static NODE *block_append_gen(struct parser_params*,NODE*,NODE*);
+static NODE *list_append_gen(struct parser_params*,NODE*,NODE*);
+static NODE *list_concat_gen(struct parser_params*,NODE*,NODE*);
+static NODE *arg_append_gen(struct parser_params*,NODE*,NODE*);
+static NODE *arg_concat_gen(struct parser_params*,NODE*,NODE*);
+static NODE *literal_concat_gen(struct parser_params*,NODE*,NODE*);
+static NODE *new_evstr_gen(struct parser_params*,NODE*);
+static NODE *evstr2dstr_gen(struct parser_params*,NODE*);
+static NODE *splat_array(NODE*);
+static NODE *call_bin_op_gen(struct parser_params*,NODE*,ID,NODE*);
+static NODE *call_uni_op_gen(struct parser_params*,NODE*,ID);
+static NODE *new_args_gen(struct parser_params*,NODE*,NODE*,ID,NODE*,ID);
+static void shadowing_lvar_gen(struct parser_params*,ID);
+static NODE *negate_lit(NODE*);
+static NODE *ret_args_gen(struct parser_params*,NODE*);
+static NODE *arg_blk_pass(NODE*,NODE*);
+static NODE *new_yield_gen(struct parser_params*,NODE*);
+static NODE *gettable_gen(struct parser_params*,ID);
+static NODE *assignable_gen(struct parser_params*,ID,NODE*);
+static void new_bv_gen(struct parser_params*,ID);
+static NODE *aryset_gen(struct parser_params*,NODE*,NODE*);
+static NODE *attrset_gen(struct parser_params*,NODE*,ID);
+static void rb_backref_error_gen(struct parser_params*,NODE*);
+static NODE *node_assign_gen(struct parser_params*,NODE*,NODE*);
+static NODE *match_op_gen(struct parser_params*,NODE*,NODE*);
+static void local_push_gen(struct parser_params*,int);
+static void local_pop_gen(struct parser_params*);
+static int local_var_gen(struct parser_params*, ID);
+static int arg_var_gen(struct parser_params*, ID);
+static int local_id_gen(struct parser_params*, ID);
+static ID *local_tbl_gen(struct parser_params*);
+static ID internal_id_gen(struct parser_params*);
+static void dyna_push_gen(struct parser_params*);
+static void dyna_pop_gen(struct parser_params*);
+static int dyna_in_block_gen(struct parser_params*);
+static int dvar_defined_gen(struct parser_params*,ID);
+static int dvar_curr_gen(struct parser_params*,ID);
+static void fixup_nodes(NODE **);
+extern int rb_dvar_defined(ID);
+extern int rb_local_defined(ID);
+extern int rb_parse_in_eval(void);
+static VALUE reg_compile_gen(struct parser_params*, VALUE, int);
+static void reg_fragment_setenc_gen(struct parser_params*, VALUE, int);
+static void reg_fragment_check_gen(struct parser_params*, VALUE, int);
+static NODE *reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match);
+int rb_enc_symname2_p(const char *, int, rb_encoding *);
+static int lvar_defined_gen(struct parser_params*, ID);
+static void token_info_push(struct parser_params*, const char *token);
+static void token_info_pop(struct parser_params*, const char *token);
+typedef unsigned char yytype_uint8;
+typedef signed char yytype_int8;
+typedef unsigned short int yytype_uint16;
+typedef short int yytype_int16;
+union yyalloc
+{
+ yytype_int16 yyss;
+ YYSTYPE yyvs;
+ };
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 148, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 147, 123, 2, 2, 2, 121, 116, 2,
+ 143, 144, 119, 117, 141, 118, 140, 120, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 111, 146,
+ 113, 109, 112, 110, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 139, 2, 145, 115, 2, 142, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 137, 114, 138, 124, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 122, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136
+};
+static const yytype_uint16 yyprhs[] =
+{
+ 0, 0, 3, 4, 7, 12, 15, 17, 19, 23,
+ 26, 27, 32, 36, 40, 44, 47, 51, 55, 59,
+ 63, 67, 68, 74, 79, 83, 87, 91, 98, 104,
+ 110, 116, 120, 124, 128, 132, 134, 136, 140, 144,
+ 148, 151, 153, 155, 157, 159, 162, 165, 168, 170,
+ 175, 180, 181, 187, 190, 194, 199, 205, 210, 216,
+ 219, 222, 224, 228, 230, 234, 236, 239, 243, 249,
+ 252, 257, 260, 265, 267, 271, 273, 277, 280, 284,
+ 286, 290, 292, 297, 301, 305, 309, 313, 316, 318,
+ 320, 325, 329, 333, 337, 341, 344, 346, 348, 350,
+ 353, 355, 359, 361, 363, 365, 367, 369, 371, 373,
+ 375, 377, 379, 380, 385, 387, 389, 391, 393, 395,
+ 397, 399, 401, 403, 405, 407, 409, 411, 413, 415,
+ 417, 419, 421, 423, 425, 427, 429, 431, 433, 435,
+ 437, 439, 441, 443, 445, 447, 449, 451, 453, 455,
+ 457, 459, 461, 463, 465, 467, 469, 471, 473, 475,
+ 477, 479, 481, 483, 485, 487, 489, 491, 493, 495,
+ 497, 499, 501, 503, 505, 507, 509, 511, 513, 515,
+ 517, 519, 521, 523, 525, 529, 535, 539, 545, 552,
+ 558, 564, 570, 576, 581, 585, 589, 593, 597, 601,
+ 605, 609, 613, 617, 622, 627, 630, 633, 637, 641,
+ 645, 649, 653, 657, 661, 665, 669, 673, 677, 681,
+ 685, 688, 691, 695, 699, 703, 707, 708, 713, 720,
+ 722, 724, 726, 729, 734, 737, 741, 743, 745, 747,
+ 749, 751, 754, 757, 762, 764, 765, 768, 771, 774,
+ 776, 778, 780, 783, 787, 792, 796, 801, 804, 806,
+ 808, 810, 812, 814, 816, 818, 820, 822, 823, 828,
+ 829, 834, 838, 842, 845, 849, 853, 855, 860, 864,
+ 866, 867, 874, 879, 883, 886, 888, 891, 894, 901,
+ 908, 909, 910, 918, 919, 920, 928, 934, 939, 940,
+ 941, 951, 952, 959, 960, 961, 970, 971, 977, 978,
+ 985, 986, 987, 997, 999, 1001, 1003, 1005, 1007, 1009,
+ 1011, 1013, 1015, 1017, 1019, 1021, 1023, 1025, 1027, 1029,
+ 1031, 1033, 1036, 1038, 1040, 1042, 1048, 1050, 1053, 1055,
+ 1057, 1059, 1063, 1065, 1069, 1071, 1076, 1083, 1087, 1093,
+ 1096, 1101, 1103, 1107, 1114, 1123, 1128, 1135, 1140, 1143,
+ 1150, 1153, 1158, 1165, 1168, 1173, 1176, 1181, 1183, 1185,
+ 1187, 1191, 1193, 1198, 1200, 1203, 1205, 1209, 1211, 1213,
+ 1214, 1218, 1223, 1225, 1229, 1233, 1234, 1240, 1243, 1248,
+ 1253, 1256, 1261, 1266, 1270, 1274, 1278, 1281, 1283, 1288,
+ 1289, 1295, 1296, 1302, 1308, 1310, 1312, 1319, 1321, 1323,
+ 1325, 1327, 1330, 1332, 1335, 1337, 1339, 1341, 1343, 1345,
+ 1347, 1349, 1352, 1356, 1360, 1364, 1368, 1372, 1373, 1377,
+ 1379, 1382, 1386, 1390, 1391, 1395, 1396, 1399, 1400, 1403,
+ 1405, 1406, 1410, 1411, 1416, 1418, 1420, 1422, 1424, 1427,
+ 1429, 1431, 1433, 1435, 1439, 1441, 1443, 1446, 1449, 1451,
+ 1453, 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469, 1471,
+ 1473, 1475, 1477, 1479, 1481, 1483, 1484, 1489, 1492, 1496,
+ 1499, 1506, 1515, 1520, 1527, 1532, 1539, 1542, 1547, 1554,
+ 1557, 1562, 1565, 1570, 1572, 1573, 1575, 1577, 1579, 1581,
+ 1583, 1585, 1587, 1591, 1593, 1597, 1601, 1605, 1607, 1611,
+ 1613, 1617, 1619, 1621, 1624, 1626, 1628, 1630, 1633, 1636,
+ 1638, 1640, 1641, 1646, 1648, 1651, 1653, 1657, 1661, 1664,
+ 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, 1682, 1684,
+ 1686, 1688, 1689, 1691, 1692, 1694, 1697, 1700, 1701, 1703,
+ 1705, 1707, 1709, 1711, 1714
+};
+static const yytype_int16 yyrhs[] =
+{
+ 150, 0, -1, -1, 151, 153, -1, 153, 252, 228,
+ 255, -1, 154, 307, -1, 314, -1, 155, -1, 154,
+ 313, 155, -1, 1, 155, -1, -1, 45, 177, 156,
+ 177, -1, 45, 54, 54, -1, 45, 54, 64, -1,
+ 45, 54, 63, -1, 6, 178, -1, 155, 40, 159,
+ -1, 155, 41, 159, -1, 155, 42, 159, -1, 155,
+ 43, 159, -1, 155, 44, 155, -1, -1, 47, 157,
+ 137, 153, 138, -1, 48, 137, 153, 138, -1, 172,
+ 109, 160, -1, 165, 109, 160, -1, 279, 87, 160,
+ -1, 213, 139, 188, 310, 87, 160, -1, 213, 140,
+ 52, 87, 160, -1, 213, 140, 56, 87, 160, -1,
+ 213, 85, 52, 87, 160, -1, 280, 87, 160, -1,
+ 172, 109, 195, -1, 165, 109, 184, -1, 165, 109,
+ 195, -1, 158, -1, 160, -1, 158, 37, 158, -1,
+ 158, 38, 158, -1, 39, 308, 158, -1, 123, 160,
+ -1, 182, -1, 158, -1, 164, -1, 161, -1, 30,
+ 189, -1, 21, 189, -1, 22, 189, -1, 245, -1,
+ 245, 140, 304, 190, -1, 245, 85, 304, 190, -1,
+ -1, 94, 163, 234, 153, 138, -1, 303, 190, -1,
+ 303, 190, 162, -1, 213, 140, 304, 190, -1, 213,
+ 140, 304, 190, 162, -1, 213, 85, 304, 190, -1,
+ 213, 85, 304, 190, 162, -1, 32, 190, -1, 31,
+ 190, -1, 167, -1, 89, 166, 309, -1, 167, -1,
+ 89, 166, 309, -1, 169, -1, 169, 168, -1, 169,
+ 95, 171, -1, 169, 95, 171, 141, 170, -1, 169,
+ 95, -1, 169, 95, 141, 170, -1, 95, 171, -1,
+ 95, 171, 141, 170, -1, 95, -1, 95, 141, 170,
+ -1, 171, -1, 89, 166, 309, -1, 168, 141, -1,
+ 169, 168, 141, -1, 168, -1, 170, 141, 168, -1,
+ 277, -1, 213, 139, 188, 310, -1, 213, 140, 52,
+ -1, 213, 85, 52, -1, 213, 140, 56, -1, 213,
+ 85, 56, -1, 86, 56, -1, 280, -1, 277, -1,
+ 213, 139, 188, 310, -1, 213, 140, 52, -1, 213,
+ 85, 52, -1, 213, 140, 56, -1, 213, 85, 56,
+ -1, 86, 56, -1, 280, -1, 52, -1, 56, -1,
+ 86, 173, -1, 173, -1, 213, 85, 173, -1, 52,
+ -1, 56, -1, 53, -1, 180, -1, 181, -1, 175,
+ -1, 273, -1, 176, -1, 275, -1, 177, -1, -1,
+ 178, 141, 179, 177, -1, 114, -1, 115, -1, 116,
+ -1, 69, -1, 70, -1, 71, -1, 77, -1, 78,
+ -1, 112, -1, 73, -1, 113, -1, 74, -1, 72,
+ -1, 83, -1, 84, -1, 117, -1, 118, -1, 119,
+ -1, 95, -1, 120, -1, 121, -1, 68, -1, 123,
+ -1, 124, -1, 66, -1, 67, -1, 81, -1, 82,
+ -1, 142, -1, 49, -1, 50, -1, 51, -1, 47,
+ -1, 48, -1, 45, -1, 37, -1, 7, -1, 21,
+ -1, 16, -1, 3, -1, 5, -1, 46, -1, 26,
+ -1, 15, -1, 14, -1, 10, -1, 9, -1, 36,
+ -1, 20, -1, 25, -1, 4, -1, 22, -1, 34,
+ -1, 39, -1, 38, -1, 23, -1, 8, -1, 24,
+ -1, 30, -1, 33, -1, 32, -1, 13, -1, 35,
+ -1, 6, -1, 17, -1, 31, -1, 11, -1, 12,
+ -1, 18, -1, 19, -1, 172, 109, 182, -1, 172,
+ 109, 182, 44, 182, -1, 279, 87, 182, -1, 279,
+ 87, 182, 44, 182, -1, 213, 139, 188, 310, 87,
+ 182, -1, 213, 140, 52, 87, 182, -1, 213, 140,
+ 56, 87, 182, -1, 213, 85, 52, 87, 182, -1,
+ 213, 85, 56, 87, 182, -1, 86, 56, 87, 182,
+ -1, 280, 87, 182, -1, 182, 79, 182, -1, 182,
+ 80, 182, -1, 182, 117, 182, -1, 182, 118, 182,
+ -1, 182, 119, 182, -1, 182, 120, 182, -1, 182,
+ 121, 182, -1, 182, 68, 182, -1, 122, 59, 68,
+ 182, -1, 122, 60, 68, 182, -1, 66, 182, -1,
+ 67, 182, -1, 182, 114, 182, -1, 182, 115, 182,
+ -1, 182, 116, 182, -1, 182, 69, 182, -1, 182,
+ 112, 182, -1, 182, 73, 182, -1, 182, 113, 182,
+ -1, 182, 74, 182, -1, 182, 70, 182, -1, 182,
+ 71, 182, -1, 182, 72, 182, -1, 182, 77, 182,
+ -1, 182, 78, 182, -1, 123, 182, -1, 124, 182,
+ -1, 182, 83, 182, -1, 182, 84, 182, -1, 182,
+ 75, 182, -1, 182, 76, 182, -1, -1, 46, 308,
+ 183, 182, -1, 182, 110, 182, 308, 111, 182, -1,
+ 196, -1, 182, -1, 314, -1, 194, 311, -1, 194,
+ 141, 301, 311, -1, 301, 311, -1, 143, 188, 309,
+ -1, 314, -1, 186, -1, 314, -1, 189, -1, 164,
+ -1, 194, 193, -1, 301, 193, -1, 194, 141, 301,
+ 193, -1, 192, -1, -1, 191, 189, -1, 96, 184,
+ -1, 141, 192, -1, 141, -1, 314, -1, 184, -1,
+ 95, 184, -1, 194, 141, 184, -1, 194, 141, 95,
+ 184, -1, 194, 141, 184, -1, 194, 141, 95, 184,
+ -1, 95, 184, -1, 256, -1, 257, -1, 260, -1,
+ 261, -1, 262, -1, 265, -1, 278, -1, 280, -1,
+ 53, -1, -1, 214, 197, 152, 224, -1, -1, 90,
+ 158, 198, 309, -1, 89, 153, 144, -1, 213, 85,
+ 56, -1, 86, 56, -1, 92, 185, 145, -1, 93,
+ 300, 138, -1, 30, -1, 31, 143, 189, 309, -1,
+ 31, 143, 309, -1, 31, -1, -1, 46, 308, 143,
+ 199, 158, 309, -1, 39, 143, 158, 309, -1, 39,
+ 143, 309, -1, 303, 247, -1, 246, -1, 246, 247,
+ -1, 97, 239, -1, 215, 159, 225, 153, 227, 224,
+ -1, 216, 159, 225, 153, 228, 224, -1, -1, -1,
+ 217, 200, 159, 226, 201, 153, 224, -1, -1, -1,
+ 218, 202, 159, 226, 203, 153, 224, -1, 219, 159,
+ 307, 250, 224, -1, 219, 307, 250, 224, -1, -1,
+ -1, 220, 229, 25, 204, 159, 226, 205, 153, 224,
+ -1, -1, 221, 174, 281, 206, 152, 224, -1, -1,
+ -1, 221, 83, 158, 207, 312, 208, 152, 224, -1,
+ -1, 222, 174, 209, 152, 224, -1, -1, 223, 175,
+ 210, 283, 152, 224, -1, -1, -1, 223, 298, 306,
+ 211, 175, 212, 283, 152, 224, -1, 21, -1, 22,
+ -1, 23, -1, 24, -1, 196, -1, 7, -1, 11,
+ -1, 12, -1, 18, -1, 19, -1, 16, -1, 20,
+ -1, 3, -1, 4, -1, 5, -1, 10, -1, 312,
+ -1, 13, -1, 312, 13, -1, 312, -1, 27, -1,
+ 228, -1, 14, 159, 225, 153, 227, -1, 314, -1,
+ 15, 153, -1, 172, -1, 165, -1, 286, -1, 89,
+ 232, 309, -1, 230, -1, 231, 141, 230, -1, 231,
+ -1, 231, 141, 95, 286, -1, 231, 141, 95, 286,
+ 141, 231, -1, 231, 141, 95, -1, 231, 141, 95,
+ 141, 231, -1, 95, 286, -1, 95, 286, 141, 231,
+ -1, 95, -1, 95, 141, 231, -1, 288, 141, 291,
+ 141, 294, 297, -1, 288, 141, 291, 141, 294, 141,
+ 288, 297, -1, 288, 141, 291, 297, -1, 288, 141,
+ 291, 141, 288, 297, -1, 288, 141, 294, 297, -1,
+ 288, 141, -1, 288, 141, 294, 141, 288, 297, -1,
+ 288, 297, -1, 291, 141, 294, 297, -1, 291, 141,
+ 294, 141, 288, 297, -1, 291, 297, -1, 291, 141,
+ 288, 297, -1, 294, 297, -1, 294, 141, 288, 297,
+ -1, 296, -1, 314, -1, 235, -1, 114, 236, 114,
+ -1, 76, -1, 114, 233, 236, 114, -1, 314, -1,
+ 146, 237, -1, 238, -1, 237, 141, 238, -1, 52,
+ -1, 285, -1, -1, 240, 241, 242, -1, 143, 284,
+ 236, 309, -1, 284, -1, 107, 153, 138, -1, 29,
+ 153, 10, -1, -1, 28, 244, 234, 153, 10, -1,
+ 164, 243, -1, 245, 140, 304, 187, -1, 245, 85,
+ 304, 187, -1, 303, 186, -1, 213, 140, 304, 187,
+ -1, 213, 85, 304, 186, -1, 213, 85, 305, -1,
+ 213, 140, 186, -1, 213, 85, 186, -1, 32, 186,
+ -1, 32, -1, 213, 139, 188, 310, -1, -1, 137,
+ 248, 234, 153, 138, -1, -1, 26, 249, 234, 153,
+ 10, -1, 17, 194, 225, 153, 251, -1, 228, -1,
+ 250, -1, 8, 253, 254, 225, 153, 252, -1, 314,
+ -1, 184, -1, 195, -1, 314, -1, 88, 172, -1,
+ 314, -1, 9, 153, -1, 314, -1, 276, -1, 273,
+ -1, 275, -1, 258, -1, 62, -1, 259, -1, 258,
+ 259, -1, 99, 267, 106, -1, 100, 268, 106, -1,
+ 101, 268, 65, -1, 102, 147, 106, -1, 102, 263,
+ 106, -1, -1, 263, 264, 147, -1, 269, -1, 264,
+ 269, -1, 103, 147, 106, -1, 103, 266, 106, -1,
+ -1, 266, 61, 147, -1, -1, 267, 269, -1, -1,
+ 268, 269, -1, 61, -1, -1, 105, 270, 272, -1,
+ -1, 104, 271, 153, 138, -1, 54, -1, 55, -1,
+ 57, -1, 280, -1, 98, 274, -1, 175, -1, 55,
+ -1, 54, -1, 57, -1, 98, 268, 106, -1, 59,
+ -1, 60, -1, 122, 59, -1, 122, 60, -1, 52,
+ -1, 55, -1, 54, -1, 56, -1, 57, -1, 34,
+ -1, 33, -1, 35, -1, 36, -1, 50, -1, 49,
+ -1, 51, -1, 277, -1, 277, -1, 63, -1, 64,
+ -1, 312, -1, -1, 113, 282, 159, 312, -1, 1,
+ 312, -1, 143, 284, 309, -1, 284, 312, -1, 288,
+ 141, 292, 141, 294, 297, -1, 288, 141, 292, 141,
+ 294, 141, 288, 297, -1, 288, 141, 292, 297, -1,
+ 288, 141, 292, 141, 288, 297, -1, 288, 141, 294,
+ 297, -1, 288, 141, 294, 141, 288, 297, -1, 288,
+ 297, -1, 292, 141, 294, 297, -1, 292, 141, 294,
+ 141, 288, 297, -1, 292, 297, -1, 292, 141, 288,
+ 297, -1, 294, 297, -1, 294, 141, 288, 297, -1,
+ 296, -1, -1, 56, -1, 55, -1, 54, -1, 57,
+ -1, 285, -1, 52, -1, 286, -1, 89, 232, 309,
+ -1, 287, -1, 288, 141, 287, -1, 52, 109, 184,
+ -1, 52, 109, 213, -1, 290, -1, 291, 141, 290,
+ -1, 289, -1, 292, 141, 289, -1, 119, -1, 95,
+ -1, 293, 52, -1, 293, -1, 116, -1, 96, -1,
+ 295, 52, -1, 141, 296, -1, 314, -1, 278, -1,
+ -1, 143, 299, 158, 309, -1, 314, -1, 301, 311,
+ -1, 302, -1, 301, 141, 302, -1, 184, 88, 184,
+ -1, 58, 184, -1, 52, -1, 56, -1, 53, -1,
+ 52, -1, 56, -1, 53, -1, 180, -1, 52, -1,
+ 53, -1, 180, -1, 140, -1, 85, -1, -1, 313,
+ -1, -1, 148, -1, 308, 144, -1, 308, 145, -1,
+ -1, 148, -1, 141, -1, 146, -1, 148, -1, 312,
+ -1, 313, 146, -1, -1
+};
+static const yytype_uint16 yyrline[] =
+{
+ 0, 763, 763, 763, 793, 826, 837, 846, 854, 862,
+ 868, 868, 876, 884, 895, 905, 913, 922, 931, 944,
+ 957, 967, 966, 988, 1000, 1009, 1019, 1048, 1069, 1086,
+ 1103, 1120, 1130, 1139, 1148, 1157, 1160, 1161, 1169, 1177,
+ 1185, 1193, 1196, 1208, 1209, 1210, 1218, 1226, 1236, 1237,
+ 1246, 1258, 1257, 1279, 1288, 1300, 1309, 1321, 1330, 1342,
+ 1351, 1362, 1363, 1373, 1374, 1384, 1392, 1400, 1408, 1416,
+ 1424, 1432, 1440, 1448, 1456, 1466, 1467, 1477, 1485, 1495,
+ 1503, 1513, 1521, 1529, 1537, 1545, 1553, 1565, 1575, 1587,
+ 1595, 1603, 1611, 1619, 1627, 1640, 1653, 1664, 1672, 1675,
+ 1683, 1691, 1701, 1702, 1703, 1704, 1714, 1726, 1727, 1730,
+ 1738, 1741, 1749, 1749, 1759, 1760, 1761, 1762, 1763, 1764,
+ 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774,
+ 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784,
+ 1785, 1786, 1787, 1790, 1790, 1790, 1791, 1791, 1792, 1792,
+ 1792, 1793, 1793, 1793, 1793, 1794, 1794, 1794, 1794, 1795,
+ 1795, 1795, 1796, 1796, 1796, 1796, 1797, 1797, 1797, 1797,
+ 1798, 1798, 1798, 1798, 1799, 1799, 1799, 1799, 1800, 1800,
+ 1800, 1800, 1801, 1801, 1804, 1813, 1823, 1852, 1883, 1904,
+ 1921, 1938, 1955, 1966, 1977, 1988, 2002, 2016, 2024, 2032,
+ 2040, 2048, 2056, 2064, 2073, 2082, 2090, 2098, 2106, 2114,
+ 2122, 2130, 2138, 2146, 2154, 2162, 2170, 2178, 2186, 2197,
+ 2205, 2213, 2221, 2229, 2237, 2245, 2253, 2253, 2263, 2273,
+ 2279, 2291, 2292, 2296, 2304, 2314, 2324, 2325, 2328, 2329,
+ 2332, 2340, 2348, 2358, 2367, 2376, 2376, 2388, 2398, 2402,
+ 2406, 2412, 2420, 2428, 2442, 2458, 2472, 2487, 2497, 2498,
+ 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2514, 2513, 2538,
+ 2538, 2547, 2555, 2563, 2571, 2584, 2592, 2600, 2608, 2616,
+ 2624, 2624, 2634, 2642, 2650, 2661, 2662, 2673, 2677, 2689,
+ 2701, 2701, 2701, 2712, 2712, 2712, 2723, 2734, 2743, 2745,
+ 2742, 2809, 2808, 2830, 2835, 2829, 2857, 2856, 2878, 2877,
+ 2904, 2905, 2904, 2929, 2937, 2945, 2953, 2963, 2975, 2982,
+ 2989, 2996, 3003, 3010, 3017, 3024, 3031, 3038, 3045, 3052,
+ 3057, 3058, 3065, 3070, 3073, 3074, 3087, 3088, 3098, 3099,
+ 3102, 3110, 3120, 3128, 3138, 3146, 3154, 3162, 3170, 3178,
+ 3186, 3197, 3205, 3215, 3223, 3231, 3239, 3247, 3255, 3264,
+ 3272, 3280, 3288, 3296, 3304, 3312, 3320, 3328, 3338, 3339,
+ 3345, 3354, 3363, 3374, 3375, 3385, 3392, 3401, 3409, 3415,
+ 3415, 3437, 3445, 3455, 3459, 3466, 3465, 3486, 3502, 3511,
+ 3522, 3531, 3541, 3551, 3559, 3570, 3581, 3589, 3597, 3612,
+ 3611, 3633, 3632, 3653, 3665, 3666, 3669, 3688, 3691, 3699,
+ 3707, 3710, 3714, 3717, 3725, 3728, 3729, 3737, 3740, 3757,
+ 3758, 3759, 3769, 3779, 3806, 3848, 3856, 3863, 3870, 3880,
+ 3888, 3898, 3906, 3913, 3920, 3931, 3938, 3949, 3956, 3966,
+ 3968, 3967, 3984, 3983, 4005, 4013, 4021, 4029, 4032, 4044,
+ 4045, 4046, 4047, 4050, 4081, 4082, 4083, 4091, 4101, 4102,
+ 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4112,
+ 4115, 4125, 4135, 4136, 4139, 4148, 4147, 4155, 4167, 4179,
+ 4185, 4193, 4201, 4209, 4217, 4225, 4233, 4241, 4249, 4257,
+ 4265, 4273, 4281, 4289, 4298, 4307, 4316, 4325, 4334, 4345,
+ 4346, 4358, 4366, 4385, 4392, 4405, 4419, 4433, 4441, 4457,
+ 4465, 4481, 4482, 4485, 4497, 4508, 4509, 4512, 4528, 4532,
+ 4542, 4552, 4552, 4581, 4582, 4592, 4599, 4609, 4617, 4627,
+ 4628, 4629, 4632, 4633, 4634, 4635, 4638, 4639, 4640, 4643,
+ 4648, 4655, 4656, 4659, 4660, 4663, 4666, 4669, 4670, 4671,
+ 4674, 4675, 4678, 4679, 4683
+};
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "keyword_class", "keyword_module",
+ "keyword_def", "keyword_undef", "keyword_begin", "keyword_rescue",
+ "keyword_ensure", "keyword_end", "keyword_if", "keyword_unless",
+ "keyword_then", "keyword_elsif", "keyword_else", "keyword_case",
+ "keyword_when", "keyword_while", "keyword_until", "keyword_for",
+ "keyword_break", "keyword_next", "keyword_redo", "keyword_retry",
+ "keyword_in", "keyword_do", "keyword_do_cond", "keyword_do_block",
+ "keyword_do_LAMBDA", "keyword_return", "keyword_yield", "keyword_super",
+ "keyword_self", "keyword_nil", "keyword_true", "keyword_false",
+ "keyword_and", "keyword_or", "keyword_not", "modifier_if",
+ "modifier_unless", "modifier_while", "modifier_until", "modifier_rescue",
+ "keyword_alias", "keyword_defined", "keyword_BEGIN", "keyword_END",
+ "keyword__LINE__", "keyword__FILE__", "keyword__ENCODING__",
+ "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tCVAR", "tLABEL",
+ "tINTEGER", "tFLOAT", "tSTRING_CONTENT", "tCHAR", "tNTH_REF",
+ "tBACK_REF", "tREGEXP_END", "tUPLUS", "tUMINUS", "tPOW", "tCMP", "tEQ",
+ "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH",
+ "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2",
+ "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN_ARG", "tRPAREN",
+ "tLBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tAMPER", "tLAMBDA",
+ "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tWORDS_BEG",
+ "tQWORDS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tLAMBEG",
+ "tLOWEST", "'='", "'?'", "':'", "'>'", "'<'", "'|'", "'^'", "'&'", "'+'",
+ "'-'", "'*'", "'/'", "'%'", "tUMINUS_NUM", "'!'", "'~'", "idNULL",
+ "idRespond_to", "idIFUNC", "idCFUNC", "idThrowState",
+ "id_core_set_method_alias", "id_core_set_variable_alias",
+ "id_core_undef_method", "id_core_define_method",
+ "id_core_define_singleton_method", "id_core_set_postexe", "tLAST_TOKEN",
+ "'{'", "'}'", "'['", "'.'", "','", "'`'", "'('", "')'", "']'", "';'",
+ "' '", "'\\n'", "$accept", "program", "@1", "bodystmt", "compstmt",
+ "stmts", "stmt", "@2", "@3", "expr", "expr_value", "command_call",
+ "block_command", "cmd_brace_block", "@4", "command", "mlhs",
+ "mlhs_inner", "mlhs_basic", "mlhs_item", "mlhs_head", "mlhs_post",
+ "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym", "fitem",
+ "undef_list", "@5", "op", "reswords", "arg", "@6", "arg_value",
+ "aref_args", "paren_args", "opt_paren_args", "opt_call_args",
+ "call_args", "command_args", "@7", "block_arg", "opt_block_arg", "args",
+ "mrhs", "primary", "@8", "@9", "@10", "@11", "@12", "@13", "@14", "@15",
+ "@16", "@17", "@18", "@19", "@20", "@21", "@22", "@23", "primary_value",
+ "k_begin", "k_if", "k_unless", "k_while", "k_until", "k_case", "k_for",
+ "k_class", "k_module", "k_def", "k_end", "then", "do", "if_tail",
+ "opt_else", "for_var", "f_marg", "f_marg_list", "f_margs", "block_param",
+ "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls", "bvar",
+ "lambda", "@24", "f_larglist", "lambda_body", "do_block", "@25",
+ "block_call", "method_call", "brace_block", "@26", "@27", "case_body",
+ "cases", "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal",
+ "strings", "string", "string1", "xstring", "regexp", "words",
+ "word_list", "word", "qwords", "qword_list", "string_contents",
+ "xstring_contents", "string_content", "@28", "@29", "string_dvar",
+ "symbol", "sym", "dsym", "numeric", "variable", "var_ref", "var_lhs",
+ "backref", "superclass", "@30", "f_arglist", "f_args", "f_bad_arg",
+ "f_norm_arg", "f_arg_item", "f_arg", "f_opt", "f_block_opt",
+ "f_block_optarg", "f_optarg", "restarg_mark", "f_rest_arg",
+ "blkarg_mark", "f_block_arg", "opt_f_block_arg", "singleton", "@31",
+ "assoc_list", "assocs", "assoc", "operation", "operation2", "operation3",
+ "dot_or_colon", "opt_terms", "opt_nl", "rparen", "rbracket", "trailer",
+ "term", "terms", "none", 0
+};
+static const yytype_uint16 yyr1[] =
+{
+ 0, 149, 151, 150, 152, 153, 154, 154, 154, 154,
+ 156, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+ 155, 157, 155, 155, 155, 155, 155, 155, 155, 155,
+ 155, 155, 155, 155, 155, 155, 158, 158, 158, 158,
+ 158, 158, 159, 160, 160, 160, 160, 160, 161, 161,
+ 161, 163, 162, 164, 164, 164, 164, 164, 164, 164,
+ 164, 165, 165, 166, 166, 167, 167, 167, 167, 167,
+ 167, 167, 167, 167, 167, 168, 168, 169, 169, 170,
+ 170, 171, 171, 171, 171, 171, 171, 171, 171, 172,
+ 172, 172, 172, 172, 172, 172, 172, 173, 173, 174,
+ 174, 174, 175, 175, 175, 175, 175, 176, 176, 177,
+ 177, 178, 179, 178, 180, 180, 180, 180, 180, 180,
+ 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
+ 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
+ 180, 180, 180, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 181, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 183, 182, 182, 182,
+ 184, 185, 185, 185, 185, 186, 187, 187, 188, 188,
+ 189, 189, 189, 189, 189, 191, 190, 192, 193, 193,
+ 193, 194, 194, 194, 194, 195, 195, 195, 196, 196,
+ 196, 196, 196, 196, 196, 196, 196, 197, 196, 198,
+ 196, 196, 196, 196, 196, 196, 196, 196, 196, 196,
+ 199, 196, 196, 196, 196, 196, 196, 196, 196, 196,
+ 200, 201, 196, 202, 203, 196, 196, 196, 204, 205,
+ 196, 206, 196, 207, 208, 196, 209, 196, 210, 196,
+ 211, 212, 196, 196, 196, 196, 196, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 225, 225, 226, 226, 227, 227, 228, 228, 229, 229,
+ 230, 230, 231, 231, 232, 232, 232, 232, 232, 232,
+ 232, 232, 232, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 234, 234,
+ 235, 235, 235, 236, 236, 237, 237, 238, 238, 240,
+ 239, 241, 241, 242, 242, 244, 243, 245, 245, 245,
+ 246, 246, 246, 246, 246, 246, 246, 246, 246, 248,
+ 247, 249, 247, 250, 251, 251, 252, 252, 253, 253,
+ 253, 254, 254, 255, 255, 256, 256, 256, 257, 258,
+ 258, 258, 259, 260, 261, 262, 262, 263, 263, 264,
+ 264, 265, 265, 266, 266, 267, 267, 268, 268, 269,
+ 270, 269, 271, 269, 272, 272, 272, 272, 273, 274,
+ 274, 274, 274, 275, 276, 276, 276, 276, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
+ 278, 279, 280, 280, 281, 282, 281, 281, 283, 283,
+ 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 284, 284, 284, 285, 285, 285, 285, 286,
+ 286, 287, 287, 288, 288, 289, 290, 291, 291, 292,
+ 292, 293, 293, 294, 294, 295, 295, 296, 297, 297,
+ 298, 299, 298, 300, 300, 301, 301, 302, 302, 303,
+ 303, 303, 304, 304, 304, 304, 305, 305, 305, 306,
+ 306, 307, 307, 308, 308, 309, 310, 311, 311, 311,
+ 312, 312, 313, 313, 314
+};
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 0, 2, 4, 2, 1, 1, 3, 2,
+ 0, 4, 3, 3, 3, 2, 3, 3, 3, 3,
+ 3, 0, 5, 4, 3, 3, 3, 6, 5, 5,
+ 5, 3, 3, 3, 3, 1, 1, 3, 3, 3,
+ 2, 1, 1, 1, 1, 2, 2, 2, 1, 4,
+ 4, 0, 5, 2, 3, 4, 5, 4, 5, 2,
+ 2, 1, 3, 1, 3, 1, 2, 3, 5, 2,
+ 4, 2, 4, 1, 3, 1, 3, 2, 3, 1,
+ 3, 1, 4, 3, 3, 3, 3, 2, 1, 1,
+ 4, 3, 3, 3, 3, 2, 1, 1, 1, 2,
+ 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 0, 4, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 5, 3, 5, 6, 5,
+ 5, 5, 5, 4, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 4, 4, 2, 2, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 2, 2, 3, 3, 3, 3, 0, 4, 6, 1,
+ 1, 1, 2, 4, 2, 3, 1, 1, 1, 1,
+ 1, 2, 2, 4, 1, 0, 2, 2, 2, 1,
+ 1, 1, 2, 3, 4, 3, 4, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 0, 4, 0,
+ 4, 3, 3, 2, 3, 3, 1, 4, 3, 1,
+ 0, 6, 4, 3, 2, 1, 2, 2, 6, 6,
+ 0, 0, 7, 0, 0, 7, 5, 4, 0, 0,
+ 9, 0, 6, 0, 0, 8, 0, 5, 0, 6,
+ 0, 0, 9, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 1, 1, 5, 1, 2, 1, 1,
+ 1, 3, 1, 3, 1, 4, 6, 3, 5, 2,
+ 4, 1, 3, 6, 8, 4, 6, 4, 2, 6,
+ 2, 4, 6, 2, 4, 2, 4, 1, 1, 1,
+ 3, 1, 4, 1, 2, 1, 3, 1, 1, 0,
+ 3, 4, 1, 3, 3, 0, 5, 2, 4, 4,
+ 2, 4, 4, 3, 3, 3, 2, 1, 4, 0,
+ 5, 0, 5, 5, 1, 1, 6, 1, 1, 1,
+ 1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 2, 3, 3, 3, 3, 3, 0, 3, 1,
+ 2, 3, 3, 0, 3, 0, 2, 0, 2, 1,
+ 0, 3, 0, 4, 1, 1, 1, 1, 2, 1,
+ 1, 1, 1, 3, 1, 1, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 0, 4, 2, 3, 2,
+ 6, 8, 4, 6, 4, 6, 2, 4, 6, 2,
+ 4, 2, 4, 1, 0, 1, 1, 1, 1, 1,
+ 1, 1, 3, 1, 3, 3, 3, 1, 3, 1,
+ 3, 1, 1, 2, 1, 1, 1, 2, 2, 1,
+ 1, 0, 4, 1, 2, 1, 3, 3, 2, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 0, 1, 0, 1, 2, 2, 0, 1, 1,
+ 1, 1, 1, 2, 0
+};
+static const yytype_uint16 yydefact[] =
+{
+ 2, 0, 0, 1, 0, 325, 326, 327, 0, 318,
+ 319, 320, 323, 321, 322, 324, 313, 314, 315, 316,
+ 276, 245, 245, 464, 463, 465, 466, 543, 0, 543,
+ 21, 0, 468, 467, 469, 458, 531, 460, 459, 461,
+ 462, 454, 455, 419, 472, 473, 0, 0, 0, 0,
+ 0, 554, 554, 73, 379, 437, 435, 437, 437, 427,
+ 433, 0, 0, 0, 3, 541, 7, 35, 36, 44,
+ 43, 0, 61, 0, 65, 75, 0, 41, 229, 0,
+ 267, 0, 0, 290, 293, 541, 0, 0, 0, 0,
+ 48, 285, 258, 259, 418, 420, 260, 261, 262, 263,
+ 416, 417, 415, 470, 264, 0, 265, 245, 6, 9,
+ 153, 164, 154, 177, 150, 170, 160, 159, 180, 181,
+ 175, 158, 157, 152, 178, 182, 183, 162, 151, 165,
+ 169, 171, 163, 156, 172, 179, 174, 173, 166, 176,
+ 161, 149, 168, 167, 148, 155, 146, 147, 143, 144,
+ 145, 102, 104, 103, 138, 139, 135, 117, 118, 119,
+ 126, 123, 125, 120, 121, 140, 141, 127, 128, 132,
+ 122, 124, 114, 115, 116, 129, 130, 131, 133, 134,
+ 136, 137, 142, 107, 109, 111, 15, 105, 106, 108,
+ 110, 313, 314, 276, 0, 0, 0, 0, 0, 0,
+ 0, 240, 0, 230, 251, 46, 244, 554, 0, 470,
+ 0, 265, 554, 525, 47, 45, 543, 60, 0, 554,
+ 396, 59, 543, 544, 0, 0, 10, 226, 0, 0,
+ 279, 397, 205, 0, 0, 206, 273, 0, 0, 543,
+ 63, 269, 0, 547, 547, 231, 0, 0, 547, 523,
+ 543, 0, 0, 0, 71, 317, 0, 81, 88, 287,
+ 494, 451, 450, 452, 449, 0, 448, 0, 0, 0,
+ 0, 0, 0, 0, 456, 457, 40, 220, 221, 550,
+ 551, 5, 552, 542, 0, 0, 0, 0, 0, 0,
+ 0, 385, 387, 0, 77, 0, 69, 66, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 554, 0, 0, 42,
+ 0, 0, 0, 0, 541, 0, 542, 0, 339, 338,
+ 0, 0, 470, 265, 97, 98, 0, 0, 100, 0,
+ 0, 470, 265, 306, 173, 166, 176, 161, 143, 144,
+ 145, 102, 103, 521, 308, 520, 0, 0, 0, 401,
+ 399, 286, 421, 0, 0, 390, 53, 284, 112, 528,
+ 273, 252, 247, 0, 0, 249, 241, 250, 0, 554,
+ 0, 0, 0, 249, 242, 543, 0, 278, 246, 543,
+ 239, 238, 543, 283, 39, 12, 14, 13, 0, 280,
+ 0, 0, 0, 0, 0, 0, 543, 271, 62, 543,
+ 274, 549, 548, 232, 549, 234, 275, 524, 0, 87,
+ 456, 457, 79, 74, 0, 0, 554, 0, 500, 497,
+ 496, 495, 498, 0, 512, 516, 515, 511, 494, 0,
+ 382, 499, 501, 503, 554, 509, 554, 514, 554, 0,
+ 493, 439, 442, 440, 453, 438, 422, 436, 423, 424,
+ 425, 426, 0, 429, 431, 0, 432, 0, 0, 553,
+ 8, 16, 17, 18, 19, 20, 37, 38, 554, 0,
+ 25, 33, 0, 34, 543, 0, 67, 78, 24, 184,
+ 251, 32, 202, 210, 215, 216, 217, 212, 214, 224,
+ 225, 218, 219, 195, 196, 222, 223, 543, 211, 213,
+ 207, 208, 209, 197, 198, 199, 200, 201, 532, 537,
+ 533, 538, 395, 245, 393, 543, 532, 534, 533, 535,
+ 394, 245, 0, 554, 330, 0, 329, 0, 0, 0,
+ 0, 0, 0, 273, 0, 554, 0, 298, 303, 97,
+ 98, 99, 0, 475, 301, 474, 0, 554, 0, 0,
+ 0, 494, 540, 539, 310, 532, 533, 245, 245, 554,
+ 554, 26, 186, 31, 194, 51, 54, 0, 184, 527,
+ 0, 253, 248, 554, 536, 533, 543, 532, 533, 526,
+ 277, 545, 235, 282, 11, 0, 227, 0, 23, 0,
+ 554, 193, 64, 270, 547, 0, 72, 84, 86, 543,
+ 532, 533, 0, 500, 0, 351, 342, 344, 543, 340,
+ 554, 0, 0, 380, 0, 486, 519, 0, 489, 513,
+ 0, 491, 517, 0, 0, 428, 430, 434, 203, 204,
+ 371, 554, 0, 369, 368, 257, 0, 76, 70, 0,
+ 0, 0, 0, 0, 392, 57, 0, 398, 0, 0,
+ 237, 391, 55, 236, 328, 268, 554, 554, 407, 554,
+ 331, 554, 333, 291, 332, 294, 0, 0, 297, 536,
+ 272, 543, 532, 533, 0, 0, 477, 0, 0, 97,
+ 98, 101, 543, 0, 543, 494, 0, 0, 0, 389,
+ 50, 388, 49, 0, 0, 0, 554, 113, 254, 243,
+ 0, 398, 0, 0, 543, 22, 233, 80, 82, 505,
+ 543, 0, 349, 0, 502, 0, 543, 373, 0, 0,
+ 504, 554, 554, 518, 554, 510, 554, 554, 0, 444,
+ 445, 446, 441, 447, 500, 554, 0, 554, 507, 554,
+ 554, 367, 0, 0, 255, 68, 185, 0, 30, 191,
+ 192, 58, 546, 0, 28, 189, 29, 190, 56, 408,
+ 409, 554, 410, 0, 554, 336, 0, 0, 334, 0,
+ 0, 0, 296, 0, 0, 398, 0, 304, 0, 0,
+ 398, 307, 522, 543, 0, 479, 311, 0, 0, 187,
+ 0, 0, 281, 341, 352, 0, 347, 343, 377, 374,
+ 375, 378, 381, 384, 383, 0, 482, 0, 484, 0,
+ 490, 0, 487, 492, 443, 0, 0, 370, 358, 360,
+ 0, 363, 0, 365, 386, 256, 228, 27, 188, 0,
+ 0, 412, 337, 0, 4, 414, 0, 288, 289, 0,
+ 0, 253, 554, 299, 0, 476, 302, 478, 309, 494,
+ 402, 400, 0, 0, 350, 0, 345, 0, 554, 554,
+ 554, 554, 0, 506, 372, 554, 554, 554, 508, 554,
+ 554, 0, 411, 0, 89, 96, 0, 413, 0, 292,
+ 295, 404, 405, 403, 0, 0, 0, 52, 348, 0,
+ 376, 483, 0, 480, 485, 488, 273, 0, 0, 355,
+ 0, 357, 364, 0, 361, 366, 95, 0, 554, 0,
+ 554, 554, 0, 305, 0, 346, 554, 536, 272, 554,
+ 554, 554, 554, 536, 94, 543, 532, 533, 406, 335,
+ 300, 312, 481, 356, 0, 353, 359, 362, 398, 554,
+ 354
+};
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 1, 2, 542, 543, 65, 66, 408, 228, 67,
+ 330, 68, 69, 586, 716, 70, 71, 239, 72, 73,
+ 74, 433, 75, 202, 348, 349, 183, 184, 185, 186,
+ 587, 539, 188, 77, 410, 204, 242, 532, 671, 399,
+ 400, 217, 218, 206, 386, 207, 493, 78, 328, 419,
+ 605, 332, 790, 333, 791, 694, 904, 698, 695, 864,
+ 569, 571, 708, 869, 233, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 675, 545, 683, 787, 788,
+ 341, 626, 627, 628, 755, 652, 653, 736, 819, 820,
+ 259, 260, 449, 633, 292, 488, 90, 91, 377, 580,
+ 579, 552, 903, 677, 781, 850, 854, 92, 93, 94,
+ 95, 96, 97, 98, 271, 472, 99, 273, 267, 265,
+ 465, 644, 643, 752, 100, 266, 101, 102, 209, 104,
+ 210, 211, 564, 697, 706, 707, 451, 452, 453, 454,
+ 455, 758, 759, 456, 457, 458, 459, 743, 635, 366,
+ 570, 247, 212, 213, 234, 609, 534, 574, 281, 396,
+ 397, 667, 423, 546, 336, 108
+};
+static const yytype_int16 yypact[] =
+{
+ -747, 103, 2364, -747, 6711, -747, -747, -747, 6222, -747,
+ -747, -747, -747, -747, -747, -747, 6820, 6820, -747, -747,
+ 6820, 3057, 2631, -747, -747, -747, -747, 282, 6082, -24,
+ -747, 64, -747, -747, -747, 5317, 2773, -747, -747, 5445,
+ -747, -747, -747, -747, -747, -747, 8019, 8019, 74, 4131,
+ 8128, 7038, 7365, 6487, -747, 5942, -747, -747, -747, 142,
+ 154, 84, 8237, 8019, -747, 473, 925, 71, -747, -747,
+ 238, 234, -747, 205, 8346, -747, 268, 2472, 31, 46,
+ -747, 8128, 8128, -747, -747, 4792, 8451, 8556, 8661, 5189,
+ 14, 70, -747, -747, 290, -747, -747, -747, -747, -747,
+ -747, -747, -747, 26, -747, 366, 355, 210, -747, 925,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, 321, -747, -747, -747,
+ -747, -747, -747, -747, 328, 8019, 433, 4262, 8019, 8019,
+ 8019, -747, 403, 2472, 440, -747, -747, 418, 300, 13,
+ 457, 24, 437, -747, -747, -747, 4670, -747, 6820, 6820,
+ -747, -747, 4923, -747, 8128, 438, -747, 436, 449, 4393,
+ 452, 463, -747, 346, 210, 546, 451, 4131, 474, -24,
+ 525, 71, 477, 165, 276, -747, 440, 498, 276, -747,
+ -24, 582, 250, 8766, 501, -747, 374, 384, 394, -747,
+ 933, -747, -747, -747, -747, 595, -747, 659, 673, 76,
+ 552, 721, 553, 43, 584, 596, -747, -747, -747, -747,
+ -747, -747, -747, 5045, 8128, 8128, 8128, 8128, 6711, 8128,
+ 8128, -747, -747, 7474, -747, 4131, 6599, 524, 7474, 8019,
+ 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019,
+ 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019,
+ 8019, 8019, 8019, 8019, 8019, 9033, 6820, 9111, 3431, 71,
+ 119, 119, 8128, 8128, 473, 652, 528, 614, -747, -747,
+ 424, 654, 56, 92, 335, 344, 8128, 131, -747, 42,
+ 444, -747, -747, -747, 33, 35, 53, 217, 227, 235,
+ 265, 298, 333, -747, -747, -747, 358, 10047, 10047, -747,
+ -747, -747, -747, 8237, 8237, -747, 587, -747, -747, -747,
+ 305, -747, -747, 8019, 8019, 6929, -747, -747, 9189, 6820,
+ 9267, 8019, 8019, 7147, -747, -24, 540, -747, -747, -24,
+ -747, -747, 242, -747, -747, -747, -747, -747, 6222, -747,
+ 8019, 4393, 555, 9189, 9267, 8019, -24, -747, 556, -24,
+ -747, 7256, -747, -747, 7365, -747, -747, -747, 436, 470,
+ -747, -747, -747, 557, 8766, 9345, 6820, 9423, 585, -747,
+ -747, -747, -747, 843, -747, -747, -747, -747, 835, 49,
+ -747, -747, -747, -747, 564, -747, 565, 658, 572, 662,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, 21, -747, -747, 569, -747, 8019, 8019, -747,
+ 925, -747, -747, -747, -747, -747, -747, -747, 38, 8019,
+ -747, 577, 578, -747, -24, 8766, 581, -747, -747, 2225,
+ -747, -747, 546, 2143, 2143, 2143, 2143, 1115, 1115, 2614,
+ 2024, 2143, 2143, 1738, 1738, 718, 718, 1856, 1115, 1115,
+ 619, 619, 692, 274, 274, 546, 546, 546, 3199, 5687,
+ 3285, 5801, -747, 463, -747, -24, 460, -747, 471, -747,
+ -747, 2915, 715, 734, -747, 3577, 713, 3869, 175, 175,
+ 652, 7583, 715, 96, 9501, 6820, 9579, -747, 71, -747,
+ 470, -747, 473, -747, -747, -747, 9657, 6820, 9735, 3431,
+ 8128, 1108, -747, -747, -747, -747, -747, 996, 996, 38,
+ 38, -747, 2242, -747, 2472, -747, -747, 6222, 10104, -747,
+ 8019, 440, -747, 437, 5573, 2489, -24, 367, 390, -747,
+ -747, -747, -747, -747, -747, 8128, 2472, 605, -747, 463,
+ 463, 2472, -7, -747, 276, 8766, 557, 500, 267, -24,
+ 48, 50, 8019, -747, 843, 592, -747, 603, -24, -747,
+ 600, 4539, 4393, -747, 835, -747, -747, 835, -747, -747,
+ 634, -747, -747, 4393, 865, -747, -747, -747, 546, 546,
+ -747, 411, 4539, -747, -747, 607, 7692, -747, 557, 8766,
+ 8019, 644, 8237, 8019, -747, 587, 612, 544, 8237, 8237,
+ -747, -747, 587, -747, -747, -747, 7801, 744, -747, 413,
+ -747, 744, -747, -747, -747, -747, 715, 208, -747, 62,
+ 85, -24, 117, 120, 8128, 473, -747, 8128, 3431, 500,
+ 267, -747, -24, 715, 242, 835, 3431, 473, 6362, -747,
+ -747, -747, -747, 4539, 4393, 8019, 38, -747, -747, -747,
+ 8019, 432, 8019, 8019, 242, -747, -747, -747, 465, -747,
+ -24, 788, 620, 854, -747, 885, -24, -747, 756, 631,
+ -747, 629, 633, -747, 639, -747, 642, 639, 657, -747,
+ -747, -747, -747, -747, 681, 600, 683, 665, -747, 666,
+ 676, -747, 789, 8019, 680, 557, 2472, 8019, -747, 2472,
+ 2472, -747, -747, 8237, -747, 2472, -747, 2472, -747, 577,
+ -747, 710, -747, 4000, 814, -747, 8128, 715, -747, 715,
+ 4539, 4539, -747, 7910, 3723, 133, 175, -747, 473, 715,
+ -747, -747, -747, -24, 715, -747, -747, 822, 696, 2472,
+ 4393, 8019, -747, -747, 700, 788, 621, -747, -747, 705,
+ -747, -747, -747, -747, -747, 835, -747, 634, -747, 634,
+ -747, 634, -747, -747, -747, 8871, 736, -747, 1125, -747,
+ 1125, -747, 634, -747, -747, 711, 2472, -747, 2472, 8976,
+ 119, -747, -747, 4539, -747, -747, 119, -747, -747, 715,
+ 715, -747, 505, -747, 3431, -747, -747, -747, -747, 1108,
+ -747, -747, 717, 788, 700, 788, 716, 885, 639, 720,
+ 639, 639, 807, 487, -747, 725, 726, 639, -747, 728,
+ 639, 815, -747, 522, 384, 394, 3431, -747, 3577, -747,
+ -747, -747, -747, -747, 4539, 715, 3431, -747, 700, 788,
+ -747, -747, 634, -747, -747, -747, -747, 9813, 1125, -747,
+ 634, -747, -747, 634, -747, -747, 470, 9891, 6820, 9969,
+ 734, 413, 715, -747, 715, 700, 639, 727, 730, 639,
+ 738, 639, 639, 212, 267, -24, 152, 187, -747, -747,
+ -747, -747, -747, -747, 634, -747, -747, -747, 193, 639,
+ -747
+};
+static const yytype_int16 yypgoto[] =
+{
+ -747, -747, -747, -537, 976, -747, 20, -747, -747, -14,
+ 30, -45, -747, -133, -747, 22, 772, -149, 9, -69,
+ -747, -400, -4, 1540, -303, 793, -54, -747, -12, -747,
+ -747, 0, -747, 802, -747, -48, -747, -16, -29, -313,
+ 81, 55, -747, -245, -192, -41, -272, -34, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -2, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -31, -319, -519, -49, -607,
+ -747, -664, -641, 260, -747, -487, -747, -532, -747, 8,
+ -747, -747, -747, -747, -747, -747, -747, -747, 795, -747,
+ -747, -528, -747, -42, -747, -747, -747, -747, -747, -747,
+ 799, -747, -747, -747, -747, -747, -747, -747, -747, 513,
+ -208, -747, -747, -747, -5, -747, 29, -747, 1251, 816,
+ 747, 1369, -747, -747, 47, -235, -673, -393, -569, -40,
+ -576, -746, 69, 278, -747, -474, -747, -249, 959, -747,
+ -747, -747, -6, -288, 162, -261, -747, -747, -56, -20,
+ 17, -563, -217, -44, 850, 752
+};
+static const yytype_int16 yytable[] =
+{
+ 79, 264, 79, 189, 246, 297, 220, 224, 187, 227,
+ 243, 460, 547, 535, 208, 208, 226, 276, 208, 255,
+ 394, 282, 686, 189, 109, 450, 501, 425, 187, 335,
+ 685, 427, 703, 721, 616, 364, 241, 190, 201, 201,
+ 255, 282, 201, 562, 561, 244, 248, 79, 208, 254,
+ 629, 256, 255, 255, 255, 187, 728, 190, 240, 467,
+ 208, 745, 821, 473, 533, 740, 541, 329, 329, 817,
+ 784, 329, 256, -83, 789, -85, 596, 221, 631, 208,
+ 208, -89, 461, 208, 340, 350, 350, -92, 416, 187,
+ 814, 375, 713, 714, 888, 658, 369, 205, 214, 367,
+ -471, 215, -62, 3, 475, 599, 577, 578, 289, 290,
+ -94, 392, 331, -471, 650, 334, -317, -96, -464, 756,
+ -463, -95, -89, 619, 223, 462, 463, 533, 795, 541,
+ 236, 325, 544, -96, -76, -89, 599, 461, -465, 800,
+ 592, 469, -91, 274, 275, -93, 494, 379, 592, 476,
+ 381, 382, 651, 610, 368, 563, 632, -83, -90, -85,
+ 742, 799, 376, 746, 107, -91, 107, -81, 645, 804,
+ -317, -317, 888, -464, 874, -463, 610, 760, 107, 107,
+ 462, 463, 107, 559, 432, 326, 327, 560, 279, -83,
+ 280, -85, -83, -465, -85, 79, -83, -81, -85, 460,
+ -93, 229, 682, -84, 821, -532, -90, 370, 402, 817,
+ 404, 107, 107, 630, 208, 220, 208, 208, 375, 255,
+ 208, 544, 208, 836, 107, -92, -86, 79, -533, 810,
+ 428, 629, 732, -88, 908, 79, 369, -87, 201, 403,
+ 201, 201, 691, 107, 107, 491, 240, 107, 490, 745,
+ 500, 256, 492, 498, 702, 901, 418, 492, -83, 765,
+ 740, -85, 255, 701, 646, 279, 291, 280, 935, 740,
+ 329, 329, 329, 329, -82, 486, 487, 863, 550, 289,
+ 290, 79, 208, 208, 208, 208, 79, 208, 208, 270,
+ 282, 208, 496, 79, 256, 610, 208, 395, -91, 398,
+ -91, 272, -466, 480, 240, 565, 421, 610, 485, 430,
+ 431, 540, -468, 422, 481, 482, 483, 484, 329, 329,
+ -467, 279, 460, 280, 208, 531, 79, 905, 581, 583,
+ 208, 208, 558, -93, 902, -93, 589, 591, 629, -90,
+ 629, -90, 299, 293, 208, 246, 294, 370, 201, 793,
+ -469, 879, -272, 219, 279, -532, 280, -466, -92, 107,
+ -92, -529, 548, 549, 886, 432, 889, -468, 794, 934,
+ -530, 208, 208, 591, 540, -467, 246, 298, 107, 593,
+ 107, 107, 958, -458, 107, 388, 107, 208, 531, 56,
+ 223, 107, 415, 322, 323, 324, 604, 726, 540, 107,
+ 255, 719, 761, 189, 780, -469, -272, -272, 187, 79,
+ -533, 201, 600, 531, -95, 614, 602, 424, -461, 603,
+ -458, 540, 629, 876, 422, 222, 432, 786, 783, -461,
+ 223, 413, 256, 612, 208, 531, 613, 190, -458, 389,
+ 390, 655, 374, 572, 940, 107, 107, 107, 107, 107,
+ 107, 107, 107, 373, 722, 107, 460, 107, 201, 435,
+ 107, 255, 378, 754, -96, 439, 440, 441, 442, -470,
+ 803, 222, -529, -461, -458, -458, -91, 723, -529, -265,
+ 629, -530, 629, -461, -461, 389, 414, -530, 107, 380,
+ 107, -398, 405, 256, 107, 107, -88, 661, 573, -93,
+ 443, 406, 407, 500, 684, 684, 444, 445, 107, 554,
+ 687, 657, 383, 436, 437, 666, 629, 664, 696, 811,
+ 783, 688, 551, -470, -470, 670, -536, 446, 384, 566,
+ 447, 896, 771, -265, -265, 107, 107, 898, 415, 778,
+ 540, -90, 718, 79, 391, 79, 727, 668, 709, 711,
+ -398, 107, 540, 208, 531, -273, 704, 735, 669, 385,
+ -95, 670, 670, 555, 556, 208, 531, 79, 208, -91,
+ 268, 269, 917, 107, 729, 717, 666, 201, 393, 409,
+ -93, 255, 189, 567, 568, -536, 411, 187, 665, 201,
+ 432, 724, -87, 664, 670, 216, 672, 744, 107, 666,
+ 747, -83, -398, 208, -398, -398, 219, 927, 764, -273,
+ -273, 757, -85, 256, 299, 945, 190, 768, 417, 279,
+ 460, 280, 420, 774, 776, 255, 567, 568, 779, 79,
+ 79, 773, 710, 712, -61, 492, 426, -536, 429, -536,
+ -536, 79, 434, -532, 623, 734, 439, 440, 441, 442,
+ 79, 797, 477, -90, 806, 792, 461, 256, 470, 474,
+ 208, 928, 929, 805, 478, 497, 208, 208, 610, 551,
+ 553, 666, 801, 623, 479, 439, 440, 441, 442, 557,
+ 329, 585, 666, 329, 601, -82, 623, 299, 439, 440,
+ 441, 442, 208, 608, 622, 208, 79, -76, 615, 462,
+ 463, 464, 312, 313, 79, 634, 637, 107, 187, 107,
+ 639, 79, 79, 640, 642, 845, 647, 107, -251, 656,
+ 461, 802, 659, 443, 796, 674, 680, 798, 847, 107,
+ 445, 107, 107, 731, 461, 319, 320, 321, 322, 323,
+ 324, 812, 676, 725, 733, 861, 735, 813, -252, 105,
+ 446, 105, 684, 822, 865, 767, 857, 772, 858, 783,
+ 299, 815, 875, 462, 463, 466, 823, 107, 866, 824,
+ 825, 208, 329, 868, 827, 312, 313, 462, 463, 468,
+ 829, 79, 461, 831, 208, 878, 299, 880, 79, 79,
+ 835, 881, 79, 107, 107, 834, 105, 837, 849, 844,
+ 887, 255, 890, 245, 249, 107, 838, 840, 79, 320,
+ 321, 322, 323, 324, 107, 255, 856, 842, 203, 203,
+ 867, -253, 203, 853, 107, 462, 463, 471, 899, 900,
+ 107, 107, 870, 883, 871, 320, 321, 322, 323, 324,
+ 623, 873, 439, 440, 441, 442, 877, 893, 232, 235,
+ 884, 79, -254, 203, 203, 907, 107, 909, 338, 107,
+ 107, 912, 79, 916, 277, 278, 918, 920, 107, 923,
+ -532, 926, 936, -533, 933, 107, 107, 624, 939, 954,
+ 941, 353, 949, 942, 730, 910, 371, 438, 948, 439,
+ 440, 441, 442, 372, 79, 623, 79, 439, 440, 441,
+ 442, 950, 79, 951, 79, 365, 623, 885, 439, 440,
+ 441, 442, 741, 540, 959, 283, 906, 531, 0, 749,
+ 750, 0, 751, 0, 443, 666, 208, 531, 44, 45,
+ 444, 445, 624, 0, 0, 107, 0, 818, 625, 439,
+ 440, 441, 442, 624, 105, 107, 0, 0, 107, 816,
+ 201, 446, 107, 107, 447, 0, 107, 0, 0, 387,
+ 0, 0, 0, 0, 387, 284, 285, 286, 287, 288,
+ 0, 401, 107, 0, 0, 0, 105, 0, 64, 0,
+ 0, 0, 0, 0, 105, 438, 0, 439, 440, 441,
+ 442, 0, 0, 0, 0, 0, -554, 203, 0, 0,
+ 203, 203, 277, 0, -554, -554, -554, 0, 0, -554,
+ -554, -554, 0, -554, 0, 107, 0, 0, 203, 0,
+ 203, 203, 443, -554, 0, 238, 107, 0, 444, 445,
+ 105, 0, 0, -554, -554, 105, -554, -554, -554, -554,
+ -554, 0, 105, 0, 0, 0, 0, 0, 0, 446,
+ 0, 0, 447, 0, 0, 0, 0, 0, 107, 0,
+ 107, 0, 0, 0, 0, 0, 107, 0, 107, 0,
+ 0, 0, 0, 0, 0, 105, 448, 0, 401, 0,
+ 0, -554, 0, 0, 0, 0, 0, 0, 0, 0,
+ 107, 0, 0, 0, 0, 203, 0, 0, 0, 0,
+ 499, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 0, 203, 0,
+ 0, 0, 0, 0, -554, 0, -554, 0, 0, 219,
+ -554, 401, -554, 0, -554, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 105, 0,
+ 438, 0, 439, 440, 441, 442, 0, 0, 0, 0,
+ 0, 0, 0, 238, 0, 582, 584, 754, 0, 439,
+ 440, 441, 442, 299, 0, 588, 203, 203, 401, 0,
+ 0, 203, 0, 582, 584, 203, 0, 443, 312, 313,
+ 0, 0, 0, 444, 445, 412, 636, 0, 636, 0,
+ 636, 0, 606, 238, 443, 0, 0, 611, 0, 0,
+ 444, 445, 0, 203, 446, 0, 203, 447, 0, 317,
+ 318, 319, 320, 321, 322, 323, 324, 0, 203, 0,
+ 654, 446, 0, 0, 447, 0, 0, 0, 0, 0,
+ 0, 705, 0, 103, 0, 103, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 238, 0, 0, 0, 0, 0, 0, 0, 648,
+ 649, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 203, 105, 673, 105, 678, 0, 0, 0, 0,
+ 103, 0, 0, 0, 257, 0, 0, 401, 0, 0,
+ 0, 0, 0, 0, 0, 0, 105, 0, 0, 401,
+ 0, 0, 0, 0, 0, 257, 0, 0, 0, 673,
+ 673, 654, 654, 0, 0, 0, 0, 342, 351, 351,
+ 351, 0, 0, 0, 0, 387, 0, 0, 0, 0,
+ 0, 0, 0, 203, 0, 0, 0, 203, 0, 0,
+ 0, 0, 673, 0, 0, 0, 0, 0, 0, 203,
+ 0, 106, 0, 106, 0, 0, 0, 0, 105, 105,
+ 0, 0, 737, 0, 0, 0, 0, 607, 0, 0,
+ 105, 0, 203, 0, 0, 0, 0, 0, 0, 105,
+ 0, 0, 0, 737, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 638, 0, 641, 106, 0,
+ 0, 0, 258, 0, 203, 0, 0, 0, 782, 785,
+ 0, 785, 0, 785, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 258, 0, 105, 0, 0, 103, 0,
+ 0, 0, 0, 105, 0, 343, 352, 352, 203, 0,
+ 105, 105, 766, 0, 769, 770, 0, 0, 654, 0,
+ 775, 777, 0, 0, 0, 0, 0, 0, 203, 0,
+ 103, 0, 0, 0, 0, 0, 0, 0, 103, 0,
+ 0, 0, 0, 636, 636, 0, 636, 0, 636, 636,
+ 0, 0, 0, 0, 257, 0, 0, 737, 0, 636,
+ 0, 636, 636, 0, 0, 0, 0, 809, 0, 0,
+ 0, 679, 769, 681, 775, 777, 0, 0, 0, 0,
+ 105, 0, 0, 851, 103, 0, 855, 105, 105, 103,
+ 0, 105, 76, 0, 76, 0, 103, 257, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 105, 0, 0,
+ 0, 0, 0, 0, 0, 203, 106, 0, 0, 846,
+ 0, 0, 0, 0, 0, 848, 0, 0, 0, 103,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,
+ 0, 0, 0, 0, 0, 203, 0, 0, 106, 0,
+ 105, 0, 0, 0, 0, 0, 106, 738, 739, 0,
+ 0, 105, 0, 848, 785, 0, 0, 0, 0, 748,
+ 0, 0, 258, 0, 0, 0, 339, 0, 762, 0,
+ 636, 636, 636, 636, 0, 0, 0, 636, 636, 636,
+ 0, 636, 636, 105, 0, 105, 0, 0, 0, 0,
+ 0, 105, 106, 105, 0, 0, 0, 106, 0, 0,
+ 0, 0, 103, 0, 106, 258, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 401, 0, 678, 785, 0, 257, 0, 0, 636, 807,
+ 808, 636, 636, 636, 636, 0, 0, 106, 0, 0,
+ 826, 828, 0, 830, 0, 832, 833, 0, 0, 0,
+ 0, 636, 0, 0, 0, 0, 839, 0, 841, 843,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 203, 0, 0, 0, 0, 0, 0, 76, 0, 0,
+ 0, 0, 0, 0, 0, 0, 257, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 852,
+ 0, 0, 0, 0, 0, 0, 859, 860, 0, 76,
+ 862, 0, 0, 0, 0, 0, 0, 76, 0, 0,
+ 106, 0, 0, 0, 0, 0, 872, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 103, 0, 103, 0,
+ 0, 0, 0, 258, 0, 0, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, -555, -555, 0,
+ 103, 312, 313, 76, 0, 0, 0, 0, 76, 897,
+ 0, 0, 0, 0, 0, 76, 0, 911, 913, 914,
+ 915, 0, 0, 0, 919, 921, 922, 0, 924, 925,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 0, 0, 0, 0, 258, 0, 257, 0, 76, 0,
+ 0, 0, 930, 0, 931, 0, 0, 0, 0, 0,
+ 932, 0, 103, 103, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 103, 952, 0, 0, 953, 955,
+ 956, 957, 0, 103, 0, 0, 0, 0, 0, 0,
+ 257, 0, 0, 0, 106, 0, 106, 0, 960, 0,
+ 0, 0, 0, 0, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 0, 106, 312,
+ 313, 0, 0, 0, 0, 0, 0, 0, 0, 103,
+ 0, 76, 0, 0, 0, 0, 0, 103, 0, 0,
+ 0, 0, 0, 0, 103, 103, 314, 0, 315, 316,
+ 317, 318, 319, 320, 321, 322, 323, 324, 0, 0,
+ 0, 0, 0, 0, 258, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 106, 106, 0, 0, 223, 0, 0, 0, 0, 0,
+ 0, 0, 106, 753, 0, 0, 0, 0, 0, 0,
+ 0, 106, 0, 0, 0, 0, 0, 0, 258, 0,
+ 0, 0, 0, 0, 103, 0, 0, 0, 0, 0,
+ 0, 103, 103, 0, 0, 103, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 103, 0, 0, 0, 0, 0, 106, 0, 0,
+ 0, 0, 0, 0, 0, 106, 0, 0, 0, 0,
+ 0, 0, 106, 106, 0, 76, 351, 76, 0, 0,
+ 0, 0, 299, 300, 301, 302, 303, 304, 305, 306,
+ 894, 308, 309, 0, 103, 0, 0, 312, 313, 76,
+ 0, 0, 0, 0, 0, 103, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324, 0, 103, 0, 103,
+ 0, 0, 106, 0, 0, 103, 0, 103, 0, 106,
+ 106, 0, 0, 106, 0, 0, 0, 0, 0, 0,
+ 0, 76, 76, 0, 0, 0, 0, 0, 0, 106,
+ 0, 0, 0, 76, 0, 0, 0, 0, 0, 0,
+ 0, 0, 76, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 352, 0, 0, 0, 0, 0,
+ 0, 299, -555, -555, -555, -555, 304, 305, 895, 0,
+ -555, -555, 106, 0, 0, 0, 312, 313, 0, 0,
+ 0, 0, 0, 106, 0, 0, 0, 0, 76, 0,
+ 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
+ 0, 0, 0, 76, 76, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 106, 0, 106, 0, 660,
+ 0, 0, 0, 106, 0, 106, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 715, 0, 0, 0,
+ 0, 0, 0, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 0, 0, 312, 313,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 76, 0, 312, 313, 0, 0, 0,
+ 76, 76, 0, 0, 76, 314, 0, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 0, 0, 0,
+ 76, 0, 314, 0, 315, 316, 317, 318, 319, 320,
+ 321, 322, 323, 324, -554, 4, -230, 5, 6, 7,
+ 8, 9, 0, 0, 0, 10, 11, 0, 0, 0,
+ 12, 0, 13, 14, 15, 16, 17, 18, 19, 892,
+ 0, 0, 0, 76, 20, 21, 22, 23, 24, 25,
+ 26, 0, 0, 27, 76, 0, 0, 0, 0, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
+ 46, 47, 0, 0, 0, 0, 76, 0, 76, 0,
+ 0, 0, 0, 0, 76, 0, 76, 0, 0, 0,
+ 48, 0, 0, 49, 50, 0, 51, 52, 0, 53,
+ 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 61, 62, 63, -272,
+ 0, 0, 0, 0, 0, 0, 0, -272, -272, -272,
+ 0, 0, -272, -272, -272, 0, -272, 0, 0, 0,
+ -554, 0, -554, 0, 0, 0, -272, -272, -272, 0,
+ 0, 0, 0, 0, 0, 0, -272, -272, 0, -272,
+ -272, -272, -272, -272, 0, 0, 0, 0, 0, 0,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 0, 0, 312, 313, -272, -272, -272,
+ -272, -272, -272, -272, -272, -272, -272, -272, -272, -272,
+ 0, 0, -272, -272, -272, 0, 663, -272, 0, 0,
+ 0, 0, 314, -272, 315, 316, 317, 318, 319, 320,
+ 321, 322, 323, 324, 0, 0, -272, 0, -94, -272,
+ -272, -272, -272, -272, -272, -272, -272, -272, -272, -272,
+ -272, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -272, -272, -272,
+ -272, -397, 0, -272, -272, -272, 0, -272, 0, -397,
+ -397, -397, 0, 0, -397, -397, -397, 0, -397, 0,
+ 0, 0, 0, 0, 0, 0, 0, -397, -397, -397,
+ 0, 0, 0, 0, 0, 0, 0, 0, -397, -397,
+ 0, -397, -397, -397, -397, -397, 0, 0, 0, 0,
+ 0, 0, 299, 300, 301, 302, 303, 304, 305, 0,
+ 0, 308, 309, 0, 0, 0, 0, 312, 313, -397,
+ -397, -397, -397, -397, -397, -397, -397, -397, -397, -397,
+ -397, -397, 0, 0, -397, -397, -397, 0, 0, -397,
+ 0, 0, 0, 0, 0, -397, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324, 0, 0, 0, 0,
+ 0, -397, 0, -397, -397, -397, -397, -397, -397, -397,
+ -397, -397, -397, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -397, -397,
+ -397, -397, -397, -266, 219, -397, -397, -397, 0, -397,
+ 0, -266, -266, -266, 0, 0, -266, -266, -266, 0,
+ -266, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -266, -266, -266, 0, 0, 0, 0, 0, 0, 0,
+ -266, -266, 0, -266, -266, -266, -266, -266, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -266, -266, -266, -266, -266, -266, -266, -266, -266,
+ -266, -266, -266, -266, 0, 0, -266, -266, -266, 0,
+ 0, -266, 0, 0, 0, 0, 0, -266, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -266, 0, 0, -266, -266, -266, -266, -266, -266, -266,
+ -266, -266, -266, -266, -266, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -266, -266, -266, -266, -554, 0, -266, -266, -266,
+ 0, -266, 0, -554, -554, -554, 0, 0, -554, -554,
+ -554, 0, -554, 0, 0, 0, 0, 0, 0, 0,
+ 0, -554, -554, -554, 0, 0, 0, 0, 0, 0,
+ 0, 0, -554, -554, 0, -554, -554, -554, -554, -554,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -554, -554, -554, -554, -554, -554, -554,
+ -554, -554, -554, -554, -554, -554, 0, 0, -554, -554,
+ -554, 0, 0, -554, 0, 0, 0, 0, 0, -554,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -554, 0, -554, -554, -554,
+ -554, -554, -554, -554, -554, -554, -554, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -554, -554, -554, -554, -554, -279, 219, -554,
+ -554, -554, 0, -554, 0, -279, -279, -279, 0, 0,
+ -279, -279, -279, 0, -279, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -279, -279, 0, 0, 0, 0,
+ 0, 0, 0, 0, -279, -279, 0, -279, -279, -279,
+ -279, -279, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -279, -279, -279, -279, -279,
+ -279, -279, -279, -279, -279, -279, -279, -279, 0, 0,
+ -279, -279, -279, 0, 0, -279, 0, 0, 0, 0,
+ 0, -279, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -279, 0, -279,
+ -279, -279, -279, -279, -279, -279, -279, -279, -279, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -279, -279, -279, -279, -536,
+ 216, -279, -279, -279, 0, -279, 0, -536, -536, -536,
+ 0, 0, 0, -536, -536, 0, -536, 0, 0, 0,
+ 0, 0, 0, 0, 0, -536, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -536, -536, 0, -536,
+ -536, -536, -536, -536, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -536, -536, -536,
+ -536, -536, -536, -536, -536, -536, -536, -536, -536, -536,
+ 0, 0, -536, -536, -536, -272, 662, 0, 0, 0,
+ 0, 0, 0, -272, -272, -272, 0, 0, 0, -272,
+ -272, 0, -272, 0, 0, 0, 0, 0, -92, -536,
+ 0, -536, -536, -536, -536, -536, -536, -536, -536, -536,
+ -536, 0, -272, -272, 0, -272, -272, -272, -272, -272,
+ 0, 0, 0, 0, 0, 0, -536, -536, -536, -536,
+ -84, 0, 0, -536, 0, -536, 0, -536, 0, 0,
+ 0, 0, 0, -272, -272, -272, -272, -272, -272, -272,
+ -272, -272, -272, -272, -272, -272, 0, 0, -272, -272,
+ -272, 0, 663, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -94, -272, 0, -272, -272, -272,
+ -272, -272, -272, -272, -272, -272, -272, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -272, -272, -272, -86, 0, 0, -272,
+ 0, -272, 4, -272, 5, 6, 7, 8, 9, -554,
+ -554, -554, 10, 11, 0, 0, -554, 12, 0, 13,
+ 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
+ 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
+ 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
+ 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 61, 62, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -554, 4, -554,
+ 5, 6, 7, 8, 9, 0, 0, -554, 10, 11,
+ 0, -554, -554, 12, 0, 13, 14, 15, 16, 17,
+ 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
+ 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
+ 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
+ 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 48, 0, 0, 49, 50, 0, 51,
+ 52, 0, 53, 0, 54, 55, 56, 57, 58, 59,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,
+ 62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -554, 4, -554, 5, 6, 7, 8,
+ 9, 0, 0, -554, 10, 11, 0, 0, -554, 12,
+ -554, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
+ 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
+ 0, 0, 49, 50, 0, 51, 52, 0, 53, 0,
+ 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 61, 62, 63, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -554,
+ 4, -554, 5, 6, 7, 8, 9, 0, 0, -554,
+ 10, 11, 0, 0, -554, 12, 0, 13, 14, 15,
+ 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
+ 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
+ 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
+ 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
+ 0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
+ 0, 4, 0, 5, 6, 7, 8, 9, 0, -554,
+ -554, 10, 11, 0, 0, -554, 12, -554, 13, 14,
+ 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
+ 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
+ 0, 0, 0, 0, 0, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
+ 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 48, 0, 0, 49,
+ 50, 0, 51, 52, 0, 53, 0, 54, 55, 56,
+ 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 61, 62, 63, 0, 0, 0, 0, 0,
+ 0, 0, 4, 0, 5, 6, 7, 8, 9, 0,
+ 0, 0, 10, 11, 0, 0, -554, 12, -554, 13,
+ 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
+ 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
+ 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
+ 237, 50, 0, 51, 52, 0, 53, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 61, 62, 63, 0, 0, 0, 0,
+ 0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
+ 0, 0, 0, 10, 11, -554, 0, -554, 12, -554,
+ 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
+ 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
+ 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 48, 0,
+ 0, 49, 50, 0, 51, 52, 0, 53, 0, 54,
+ 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 62, 63, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 5, 6, 7, 8,
+ 9, 0, 0, 0, 10, 11, -554, 0, -554, 12,
+ -554, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
+ 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
+ 0, 0, 49, 50, 0, 51, 52, 0, 53, 0,
+ 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 61, 62, 63, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -554, 0, 0, 0, 0, 0, 0, 0, -554,
+ 4, -554, 5, 6, 7, 8, 9, 0, 0, -554,
+ 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
+ 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
+ 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
+ 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
+ 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
+ 0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
+ 0, 10, 11, 0, 0, -554, 12, -554, 13, 14,
+ 15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
+ 193, 21, 22, 23, 24, 25, 26, 0, 0, 194,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 195, 41,
+ 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
+ 50, 0, 51, 52, 0, 198, 199, 54, 55, 56,
+ 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 61, 200, 63, 5, 6, 7, 0, 9,
+ 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
+ 13, 14, 15, 16, 17, 18, 19, 0, 223, 0,
+ 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
+ 0, 27, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 196, 0,
+ 0, 197, 50, 0, 51, 52, 0, 0, 0, 54,
+ 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 62, 63, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
+ 9, 0, 0, 0, 10, 11, 0, 0, 279, 12,
+ 280, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
+ 0, 0, 27, 0, 0, 0, 0, 0, 0, 29,
+ 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
+ 0, 0, 197, 50, 0, 51, 52, 0, 0, 0,
+ 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 61, 62, 63, 5, 6,
+ 7, 8, 9, 0, 0, 0, 10, 11, 0, 0,
+ 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
+ 0, 223, 0, 0, 0, 20, 21, 22, 23, 24,
+ 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 0, 41, 42, 0, 43, 44, 45,
+ 0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 48, 0, 0, 49, 50, 0, 51, 52, 0,
+ 53, 0, 54, 55, 56, 57, 58, 59, 60, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 479, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 0, 0, 0, 134,
+ 135, 136, 354, 355, 356, 357, 141, 142, 143, 0,
+ 0, 0, 0, 0, 144, 145, 146, 147, 358, 359,
+ 360, 361, 152, 37, 38, 362, 40, 0, 0, 0,
+ 0, 0, 0, 0, 0, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
+ 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 181, 0, 0, 0, 0, 0, 0,
+ -529, -529, -529, 0, -529, 0, 0, 0, -529, -529,
+ 0, 182, 363, -529, 0, -529, -529, -529, -529, -529,
+ -529, -529, 0, -529, 0, 0, 0, -529, -529, -529,
+ -529, -529, -529, -529, 0, 0, -529, 0, 0, 0,
+ 0, 0, 0, -529, 0, 0, -529, -529, -529, -529,
+ -529, -529, -529, -529, -529, -529, -529, -529, 0, -529,
+ -529, -529, 0, -529, -529, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -529, 0, 0, -529, -529, 0, -529,
+ -529, 0, -529, -529, -529, -529, -529, -529, -529, -529,
+ -529, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -529,
+ -529, -529, 0, 0, 0, 0, 0, 0, -530, -530,
+ -530, 0, -530, 0, -529, 0, -530, -530, 0, 0,
+ -529, -530, 0, -530, -530, -530, -530, -530, -530, -530,
+ 0, -530, 0, 0, 0, -530, -530, -530, -530, -530,
+ -530, -530, 0, 0, -530, 0, 0, 0, 0, 0,
+ 0, -530, 0, 0, -530, -530, -530, -530, -530, -530,
+ -530, -530, -530, -530, -530, -530, 0, -530, -530, -530,
+ 0, -530, -530, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -530, 0, 0, -530, -530, 0, -530, -530, 0,
+ -530, -530, -530, -530, -530, -530, -530, -530, -530, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -530, -530, -530,
+ 0, 0, 0, 0, 0, 0, -532, -532, -532, 0,
+ -532, 0, -530, 0, -532, -532, 0, 0, -530, -532,
+ 0, -532, -532, -532, -532, -532, -532, -532, 0, 0,
+ 0, 0, 0, -532, -532, -532, -532, -532, -532, -532,
+ 0, 0, -532, 0, 0, 0, 0, 0, 0, -532,
+ 0, 0, -532, -532, -532, -532, -532, -532, -532, -532,
+ -532, -532, -532, -532, 0, -532, -532, -532, 0, -532,
+ -532, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -532,
+ 720, 0, -532, -532, 0, -532, -532, 0, -532, -532,
+ -532, -532, -532, -532, -532, -532, -532, 0, 0, 0,
+ 0, 0, -92, 0, 0, 0, 0, 0, 0, 0,
+ -534, -534, -534, 0, -534, -532, -532, -532, -534, -534,
+ 0, 0, 0, -534, 0, -534, -534, -534, -534, -534,
+ -534, -534, 0, 0, 0, 0, -532, -534, -534, -534,
+ -534, -534, -534, -534, 0, 0, -534, 0, 0, 0,
+ 0, 0, 0, -534, 0, 0, -534, -534, -534, -534,
+ -534, -534, -534, -534, -534, -534, -534, -534, 0, -534,
+ -534, -534, 0, -534, -534, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -534, 0, 0, -534, -534, 0, -534,
+ -534, 0, -534, -534, -534, -534, -534, -534, -534, -534,
+ -534, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -535, -535, -535, 0, -535, -534,
+ -534, -534, -535, -535, 0, 0, 0, -535, 0, -535,
+ -535, -535, -535, -535, -535, -535, 0, 0, 0, 0,
+ -534, -535, -535, -535, -535, -535, -535, -535, 0, 0,
+ -535, 0, 0, 0, 0, 0, 0, -535, 0, 0,
+ -535, -535, -535, -535, -535, -535, -535, -535, -535, -535,
+ -535, -535, 0, -535, -535, -535, 0, -535, -535, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -535, 0, 0,
+ -535, -535, 0, -535, -535, 0, -535, -535, -535, -535,
+ -535, -535, -535, -535, -535, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -535, -535, -535, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -535, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
+ 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 261, 262, 153, 263,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
+ 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
+ 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 225, 0, 153, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
+ 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
+ 55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
+ 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 0, 0, 153, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
+ 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
+ 55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
+ 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 0, 0, 153, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
+ 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
+ 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
+ 0, 0, 0, 12, 182, 13, 14, 15, 191, 192,
+ 18, 19, 0, 0, 0, 0, 0, 193, 230, 231,
+ 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
+ 0, 0, 0, 250, 0, 0, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
+ 44, 45, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 251, 0, 0, 197, 50, 0, 51,
+ 52, 0, 0, 0, 54, 55, 56, 57, 58, 59,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 6, 7, 0, 9, 0, 0, 252,
+ 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
+ 191, 192, 18, 19, 0, 0, 0, 0, 253, 193,
+ 230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
+ 0, 0, 0, 0, 0, 250, 0, 0, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
+ 0, 43, 44, 45, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 251, 0, 0, 197, 50,
+ 0, 51, 52, 0, 0, 0, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 6, 7, 8, 9, 0,
+ 0, 252, 10, 11, 0, 0, 0, 12, 0, 13,
+ 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
+ 495, 20, 21, 22, 23, 24, 25, 26, 0, 0,
+ 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
+ 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
+ 0, 10, 11, 61, 62, 63, 12, 0, 13, 14,
+ 15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
+ 193, 21, 22, 23, 24, 25, 26, 0, 0, 194,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 195, 41,
+ 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
+ 50, 0, 51, 52, 0, 198, 199, 54, 55, 56,
+ 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
+ 10, 11, 61, 200, 63, 12, 0, 13, 14, 15,
+ 191, 192, 18, 19, 0, 0, 0, 0, 0, 193,
+ 230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
+ 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 195, 41, 42,
+ 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
+ 0, 51, 52, 0, 590, 199, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
+ 11, 61, 200, 63, 12, 0, 13, 14, 15, 191,
+ 192, 18, 19, 0, 0, 0, 0, 0, 193, 230,
+ 231, 23, 24, 25, 26, 0, 0, 194, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 195, 41, 42, 0,
+ 43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
+ 51, 52, 0, 198, 0, 54, 55, 56, 57, 58,
+ 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
+ 61, 200, 63, 12, 0, 13, 14, 15, 191, 192,
+ 18, 19, 0, 0, 0, 0, 0, 193, 230, 231,
+ 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 195, 41, 42, 0, 43,
+ 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 196, 0, 0, 197, 50, 0, 51,
+ 52, 0, 0, 199, 54, 55, 56, 57, 58, 59,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
+ 200, 63, 12, 0, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 195, 41, 42, 0, 43, 44,
+ 45, 0, 46, 47, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 196, 0, 0, 197, 50, 0, 51, 52,
+ 0, 590, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
+ 7, 0, 9, 0, 0, 0, 10, 11, 61, 200,
+ 63, 12, 0, 13, 14, 15, 191, 192, 18, 19,
+ 0, 0, 0, 0, 0, 193, 230, 231, 23, 24,
+ 25, 26, 0, 0, 194, 0, 0, 0, 0, 0,
+ 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 195, 41, 42, 0, 43, 44, 45,
+ 0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 196, 0, 0, 197, 50, 0, 51, 52, 0,
+ 0, 0, 54, 55, 56, 57, 58, 59, 60, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
+ 0, 9, 0, 0, 0, 10, 11, 61, 200, 63,
+ 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
+ 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
+ 26, 0, 0, 194, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
+ 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 196, 0, 0, 197, 50, 0, 51, 52, 0, 489,
+ 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
+ 9, 0, 0, 0, 10, 11, 61, 200, 63, 12,
+ 0, 13, 14, 15, 191, 192, 18, 19, 0, 0,
+ 0, 0, 0, 193, 230, 231, 23, 24, 25, 26,
+ 0, 0, 194, 0, 0, 0, 0, 0, 0, 29,
+ 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
+ 0, 0, 197, 50, 0, 51, 52, 0, 198, 0,
+ 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
+ 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
+ 0, 0, 0, 10, 11, 61, 200, 63, 12, 0,
+ 13, 14, 15, 191, 192, 18, 19, 0, 0, 0,
+ 0, 0, 193, 230, 231, 23, 24, 25, 26, 0,
+ 0, 194, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 196, 0,
+ 0, 197, 50, 0, 51, 52, 0, 763, 0, 54,
+ 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
+ 0, 0, 10, 11, 61, 200, 63, 12, 0, 13,
+ 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
+ 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
+ 194, 0, 0, 0, 0, 0, 0, 29, 0, 0,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 196, 0, 0,
+ 197, 50, 0, 51, 52, 0, 489, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
+ 0, 10, 11, 61, 200, 63, 12, 0, 13, 14,
+ 15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
+ 193, 230, 231, 23, 24, 25, 26, 0, 0, 194,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
+ 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
+ 50, 0, 51, 52, 0, 590, 0, 54, 55, 56,
+ 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
+ 10, 11, 61, 200, 63, 12, 0, 13, 14, 15,
+ 191, 192, 18, 19, 0, 0, 0, 0, 0, 193,
+ 230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
+ 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
+ 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
+ 0, 51, 52, 0, 0, 0, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
+ 11, 61, 200, 63, 12, 0, 13, 14, 15, 16,
+ 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
+ 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 0, 41, 42, 0,
+ 43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
+ 51, 52, 0, 0, 0, 54, 55, 56, 57, 58,
+ 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
+ 61, 62, 63, 12, 0, 13, 14, 15, 16, 17,
+ 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
+ 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
+ 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 196, 0, 0, 197, 50, 0, 51,
+ 52, 0, 0, 0, 54, 55, 56, 57, 58, 59,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
+ 200, 63, 12, 0, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 251, 0, 0, 295, 50, 0, 51, 52,
+ 0, 296, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
+ 0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
+ 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
+ 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
+ 194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 337, 0, 0,
+ 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
+ 0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 250, 0, 0, 32, 33, 34, 344, 36,
+ 37, 38, 345, 40, 0, 41, 42, 0, 43, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 346,
+ 0, 0, 347, 0, 0, 197, 50, 0, 51, 52,
+ 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
+ 0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
+ 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
+ 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
+ 194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+ 32, 33, 34, 344, 36, 37, 38, 345, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 347, 0, 0,
+ 197, 50, 0, 51, 52, 0, 0, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
+ 0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 251, 0, 0, 295, 50, 0, 51, 52,
+ 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
+ 0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
+ 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
+ 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
+ 194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 882, 0, 0,
+ 197, 50, 0, 51, 52, 0, 0, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
+ 0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 891, 0, 0, 197, 50, 0, 51, 52,
+ 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 0, 528, 529, 0, 0, 530,
+ 0, 0, 0, 0, 0, 0, 0, 0, 252, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
+ 163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
+ 0, 0, 0, 536, 537, 0, 0, 538, 0, 0,
+ 0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
+ 0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
+ 0, 594, 529, 0, 0, 595, 0, 0, 0, 0,
+ 0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
+ 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 181, 0, 0, 0, 0, 0, 597,
+ 537, 0, 0, 598, 0, 0, 0, 0, 0, 0,
+ 0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
+ 167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
+ 180, 181, 0, 0, 0, 0, 0, 617, 529, 0,
+ 0, 618, 0, 0, 0, 0, 0, 0, 0, 182,
+ 219, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 0, 0, 163, 164, 0, 0, 165, 166, 167, 168,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 0, 180, 181,
+ 0, 0, 0, 0, 0, 620, 537, 0, 0, 621,
+ 0, 0, 0, 0, 0, 0, 0, 182, 219, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
+ 163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
+ 0, 0, 0, 689, 529, 0, 0, 690, 0, 0,
+ 0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
+ 0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
+ 0, 692, 537, 0, 0, 693, 0, 0, 0, 0,
+ 0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
+ 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 181, 0, 0, 0, 0, 0, 699,
+ 529, 0, 0, 700, 0, 0, 0, 0, 0, 0,
+ 0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
+ 167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
+ 180, 181, 0, 0, 0, 0, 0, 575, 537, 0,
+ 0, 576, 0, 0, 0, 0, 0, 0, 0, 182,
+ 219, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 0, 0, 163, 164, 0, 0, 165, 166, 167, 168,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 0, 180, 181,
+ 0, 0, 0, 0, 0, 937, 529, 0, 0, 938,
+ 0, 0, 0, 0, 0, 0, 0, 182, 219, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
+ 163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
+ 0, 0, 0, 943, 529, 0, 0, 944, 0, 0,
+ 0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
+ 0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
+ 0, 946, 537, 0, 0, 947, 0, 0, 0, 0,
+ 0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
+ 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 181, 0, 0, 0, 0, 0, 575,
+ 537, 0, 0, 576, 0, 0, 0, 0, 0, 0,
+ 0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
+ 167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 0, 0, 0, 0, 0, 660, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
+ 180, 181, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 0, 0, 312, 313, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 314, 0, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324
+};
+static const yytype_int16 yycheck[] =
+{
+ 2, 55, 4, 8, 52, 74, 22, 27, 8, 29,
+ 51, 260, 331, 326, 16, 17, 28, 62, 20, 53,
+ 212, 65, 550, 28, 4, 260, 298, 244, 28, 85,
+ 549, 248, 569, 596, 434, 89, 50, 8, 16, 17,
+ 74, 85, 20, 1, 347, 51, 52, 49, 50, 53,
+ 443, 53, 86, 87, 88, 55, 619, 28, 49, 267,
+ 62, 637, 735, 271, 325, 634, 327, 81, 82, 733,
+ 677, 85, 74, 25, 681, 25, 389, 22, 29, 81,
+ 82, 25, 61, 85, 86, 87, 88, 25, 237, 89,
+ 731, 107, 579, 580, 840, 495, 26, 16, 17, 85,
+ 87, 20, 109, 0, 61, 393, 367, 368, 37, 38,
+ 25, 87, 82, 87, 76, 85, 85, 25, 85, 651,
+ 85, 25, 109, 436, 148, 104, 105, 388, 691, 390,
+ 56, 85, 13, 109, 141, 109, 424, 61, 85, 702,
+ 385, 65, 25, 59, 60, 25, 295, 195, 393, 106,
+ 198, 199, 114, 414, 140, 113, 107, 109, 25, 109,
+ 634, 698, 107, 637, 2, 13, 4, 141, 147, 706,
+ 139, 140, 918, 140, 815, 140, 437, 651, 16, 17,
+ 104, 105, 20, 52, 253, 139, 140, 56, 146, 141,
+ 148, 141, 144, 140, 144, 197, 148, 141, 148, 448,
+ 13, 137, 27, 141, 877, 143, 13, 137, 222, 873,
+ 224, 49, 50, 448, 216, 231, 218, 219, 234, 253,
+ 222, 13, 224, 755, 62, 13, 141, 229, 143, 716,
+ 250, 624, 625, 141, 875, 237, 26, 141, 216, 222,
+ 218, 219, 555, 81, 82, 293, 237, 85, 293, 825,
+ 298, 253, 293, 298, 567, 862, 239, 298, 141, 659,
+ 829, 141, 296, 566, 472, 146, 28, 148, 909, 838,
+ 284, 285, 286, 287, 141, 289, 290, 796, 334, 37,
+ 38, 283, 284, 285, 286, 287, 288, 289, 290, 147,
+ 334, 293, 296, 295, 296, 556, 298, 216, 146, 218,
+ 148, 147, 85, 283, 295, 349, 141, 568, 288, 59,
+ 60, 327, 85, 148, 284, 285, 286, 287, 332, 333,
+ 85, 146, 571, 148, 326, 325, 328, 864, 373, 374,
+ 332, 333, 346, 146, 862, 148, 384, 385, 731, 146,
+ 733, 148, 68, 109, 346, 393, 141, 137, 326, 141,
+ 85, 825, 85, 143, 146, 143, 148, 140, 146, 197,
+ 148, 26, 332, 333, 838, 434, 840, 140, 687, 906,
+ 26, 373, 374, 421, 390, 140, 424, 109, 216, 385,
+ 218, 219, 945, 85, 222, 85, 224, 389, 388, 99,
+ 148, 229, 87, 119, 120, 121, 408, 614, 414, 237,
+ 434, 593, 651, 408, 676, 140, 139, 140, 408, 411,
+ 143, 389, 395, 413, 109, 421, 399, 141, 85, 402,
+ 85, 437, 815, 816, 148, 143, 495, 14, 15, 85,
+ 148, 85, 434, 416, 436, 435, 419, 408, 140, 139,
+ 140, 489, 87, 85, 918, 283, 284, 285, 286, 287,
+ 288, 289, 290, 87, 87, 293, 705, 295, 436, 85,
+ 298, 495, 141, 52, 109, 54, 55, 56, 57, 85,
+ 705, 143, 137, 140, 139, 140, 109, 87, 143, 85,
+ 873, 137, 875, 139, 140, 139, 140, 143, 326, 56,
+ 328, 26, 54, 495, 332, 333, 141, 517, 140, 109,
+ 89, 63, 64, 551, 548, 549, 95, 96, 346, 85,
+ 551, 494, 109, 139, 140, 535, 909, 533, 562, 87,
+ 15, 552, 17, 139, 140, 541, 26, 116, 88, 85,
+ 119, 850, 665, 139, 140, 373, 374, 856, 87, 672,
+ 556, 109, 590, 545, 87, 547, 615, 87, 577, 578,
+ 85, 389, 568, 555, 554, 85, 570, 146, 87, 141,
+ 109, 577, 578, 139, 140, 567, 566, 569, 570, 109,
+ 57, 58, 85, 411, 622, 587, 596, 555, 141, 143,
+ 109, 615, 587, 139, 140, 85, 137, 587, 533, 567,
+ 659, 605, 141, 609, 610, 143, 541, 637, 436, 619,
+ 640, 141, 137, 605, 139, 140, 143, 85, 656, 139,
+ 140, 651, 141, 615, 68, 928, 587, 662, 144, 146,
+ 869, 148, 145, 668, 669, 659, 139, 140, 676, 631,
+ 632, 87, 577, 578, 109, 676, 138, 137, 56, 139,
+ 140, 643, 141, 143, 52, 628, 54, 55, 56, 57,
+ 652, 695, 68, 109, 708, 686, 61, 659, 106, 106,
+ 662, 139, 140, 707, 68, 141, 668, 669, 929, 17,
+ 56, 691, 703, 52, 146, 54, 55, 56, 57, 25,
+ 694, 94, 702, 697, 144, 141, 52, 68, 54, 55,
+ 56, 57, 694, 138, 109, 697, 698, 141, 141, 104,
+ 105, 106, 83, 84, 706, 141, 141, 545, 708, 547,
+ 52, 713, 714, 141, 52, 763, 147, 555, 141, 141,
+ 61, 704, 141, 89, 694, 10, 13, 697, 773, 567,
+ 96, 569, 570, 141, 61, 116, 117, 118, 119, 120,
+ 121, 724, 8, 138, 141, 793, 146, 730, 141, 2,
+ 116, 4, 796, 736, 798, 111, 787, 145, 789, 15,
+ 68, 141, 141, 104, 105, 106, 10, 605, 799, 138,
+ 141, 773, 786, 804, 141, 83, 84, 104, 105, 106,
+ 141, 783, 61, 141, 786, 825, 68, 827, 790, 791,
+ 109, 831, 794, 631, 632, 138, 49, 114, 88, 10,
+ 840, 835, 842, 51, 52, 643, 141, 141, 810, 117,
+ 118, 119, 120, 121, 652, 849, 786, 141, 16, 17,
+ 803, 141, 20, 9, 662, 104, 105, 106, 859, 860,
+ 668, 669, 10, 835, 138, 117, 118, 119, 120, 121,
+ 52, 141, 54, 55, 56, 57, 141, 849, 46, 47,
+ 114, 853, 141, 51, 52, 138, 694, 141, 86, 697,
+ 698, 141, 864, 56, 62, 63, 141, 141, 706, 141,
+ 143, 56, 912, 143, 905, 713, 714, 89, 918, 141,
+ 920, 88, 931, 923, 624, 877, 91, 52, 930, 54,
+ 55, 56, 57, 94, 896, 52, 898, 54, 55, 56,
+ 57, 932, 904, 934, 906, 89, 52, 838, 54, 55,
+ 56, 57, 634, 929, 954, 65, 869, 917, -1, 54,
+ 55, -1, 57, -1, 89, 945, 928, 927, 63, 64,
+ 95, 96, 89, -1, -1, 773, -1, 52, 95, 54,
+ 55, 56, 57, 89, 197, 783, -1, -1, 786, 95,
+ 928, 116, 790, 791, 119, -1, 794, -1, -1, 207,
+ -1, -1, -1, -1, 212, 40, 41, 42, 43, 44,
+ -1, 219, 810, -1, -1, -1, 229, -1, 2, -1,
+ -1, -1, -1, -1, 237, 52, -1, 54, 55, 56,
+ 57, -1, -1, -1, -1, -1, 0, 195, -1, -1,
+ 198, 199, 200, -1, 8, 9, 10, -1, -1, 13,
+ 14, 15, -1, 17, -1, 853, -1, -1, 216, -1,
+ 218, 219, 89, 27, -1, 49, 864, -1, 95, 96,
+ 283, -1, -1, 37, 38, 288, 40, 41, 42, 43,
+ 44, -1, 295, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, 119, -1, -1, -1, -1, -1, 896, -1,
+ 898, -1, -1, -1, -1, -1, 904, -1, 906, -1,
+ -1, -1, -1, -1, -1, 328, 143, -1, 326, -1,
+ -1, 85, -1, -1, -1, -1, -1, -1, -1, -1,
+ 928, -1, -1, -1, -1, 293, -1, -1, -1, -1,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, -1, 326, -1,
+ -1, -1, -1, -1, 138, -1, 140, -1, -1, 143,
+ 144, 389, 146, -1, 148, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 411, -1,
+ 52, -1, 54, 55, 56, 57, -1, -1, -1, -1,
+ -1, -1, -1, 197, -1, 373, 374, 52, -1, 54,
+ 55, 56, 57, 68, -1, 383, 384, 385, 436, -1,
+ -1, 389, -1, 391, 392, 393, -1, 89, 83, 84,
+ -1, -1, -1, 95, 96, 229, 454, -1, 456, -1,
+ 458, -1, 410, 237, 89, -1, -1, 415, -1, -1,
+ 95, 96, -1, 421, 116, -1, 424, 119, -1, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, 436, -1,
+ 488, 116, -1, -1, 119, -1, -1, -1, -1, -1,
+ -1, 143, -1, 2, -1, 4, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 295, -1, -1, -1, -1, -1, -1, -1, 477,
+ 478, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 489, 545, 541, 547, 543, -1, -1, -1, -1,
+ 49, -1, -1, -1, 53, -1, -1, 555, -1, -1,
+ -1, -1, -1, -1, -1, -1, 569, -1, -1, 567,
+ -1, -1, -1, -1, -1, 74, -1, -1, -1, 577,
+ 578, 579, 580, -1, -1, -1, -1, 86, 87, 88,
+ 89, -1, -1, -1, -1, 593, -1, -1, -1, -1,
+ -1, -1, -1, 551, -1, -1, -1, 555, -1, -1,
+ -1, -1, 610, -1, -1, -1, -1, -1, -1, 567,
+ -1, 2, -1, 4, -1, -1, -1, -1, 631, 632,
+ -1, -1, 630, -1, -1, -1, -1, 411, -1, -1,
+ 643, -1, 590, -1, -1, -1, -1, -1, -1, 652,
+ -1, -1, -1, 651, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 456, -1, 458, 49, -1,
+ -1, -1, 53, -1, 622, -1, -1, -1, 676, 677,
+ -1, 679, -1, 681, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 74, -1, 698, -1, -1, 197, -1,
+ -1, -1, -1, 706, -1, 86, 87, 88, 656, -1,
+ 713, 714, 660, -1, 662, 663, -1, -1, 716, -1,
+ 668, 669, -1, -1, -1, -1, -1, -1, 676, -1,
+ 229, -1, -1, -1, -1, -1, -1, -1, 237, -1,
+ -1, -1, -1, 741, 742, -1, 744, -1, 746, 747,
+ -1, -1, -1, -1, 253, -1, -1, 755, -1, 757,
+ -1, 759, 760, -1, -1, -1, -1, 715, -1, -1,
+ -1, 545, 720, 547, 722, 723, -1, -1, -1, -1,
+ 783, -1, -1, 781, 283, -1, 784, 790, 791, 288,
+ -1, 794, 2, -1, 4, -1, 295, 296, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 810, -1, -1,
+ -1, -1, -1, -1, -1, 763, 197, -1, -1, 767,
+ -1, -1, -1, -1, -1, 773, -1, -1, -1, 328,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 49,
+ -1, -1, -1, -1, -1, 793, -1, -1, 229, -1,
+ 853, -1, -1, -1, -1, -1, 237, 631, 632, -1,
+ -1, 864, -1, 811, 862, -1, -1, -1, -1, 643,
+ -1, -1, 253, -1, -1, -1, 86, -1, 652, -1,
+ 878, 879, 880, 881, -1, -1, -1, 885, 886, 887,
+ -1, 889, 890, 896, -1, 898, -1, -1, -1, -1,
+ -1, 904, 283, 906, -1, -1, -1, 288, -1, -1,
+ -1, -1, 411, -1, 295, 296, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 928, -1, 930, 931, -1, 434, -1, -1, 936, 713,
+ 714, 939, 940, 941, 942, -1, -1, 328, -1, -1,
+ 741, 742, -1, 744, -1, 746, 747, -1, -1, -1,
+ -1, 959, -1, -1, -1, -1, 757, -1, 759, 760,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 928, -1, -1, -1, -1, -1, -1, 197, -1, -1,
+ -1, -1, -1, -1, -1, -1, 495, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 783,
+ -1, -1, -1, -1, -1, -1, 790, 791, -1, 229,
+ 794, -1, -1, -1, -1, -1, -1, 237, -1, -1,
+ 411, -1, -1, -1, -1, -1, 810, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 545, -1, 547, -1,
+ -1, -1, -1, 434, -1, -1, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, -1,
+ 569, 83, 84, 283, -1, -1, -1, -1, 288, 853,
+ -1, -1, -1, -1, -1, 295, -1, 878, 879, 880,
+ 881, -1, -1, -1, 885, 886, 887, -1, 889, 890,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ -1, -1, -1, -1, 495, -1, 615, -1, 328, -1,
+ -1, -1, 896, -1, 898, -1, -1, -1, -1, -1,
+ 904, -1, 631, 632, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 643, 936, -1, -1, 939, 940,
+ 941, 942, -1, 652, -1, -1, -1, -1, -1, -1,
+ 659, -1, -1, -1, 545, -1, 547, -1, 959, -1,
+ -1, -1, -1, -1, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, -1, 569, 83,
+ 84, -1, -1, -1, -1, -1, -1, -1, -1, 698,
+ -1, 411, -1, -1, -1, -1, -1, 706, -1, -1,
+ -1, -1, -1, -1, 713, 714, 110, -1, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, -1, -1,
+ -1, -1, -1, -1, 615, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 631, 632, -1, -1, 148, -1, -1, -1, -1, -1,
+ -1, -1, 643, 644, -1, -1, -1, -1, -1, -1,
+ -1, 652, -1, -1, -1, -1, -1, -1, 659, -1,
+ -1, -1, -1, -1, 783, -1, -1, -1, -1, -1,
+ -1, 790, 791, -1, -1, 794, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 810, -1, -1, -1, -1, -1, 698, -1, -1,
+ -1, -1, -1, -1, -1, 706, -1, -1, -1, -1,
+ -1, -1, 713, 714, -1, 545, 835, 547, -1, -1,
+ -1, -1, 68, 69, 70, 71, 72, 73, 74, 75,
+ 849, 77, 78, -1, 853, -1, -1, 83, 84, 569,
+ -1, -1, -1, -1, -1, 864, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, -1, 896, -1, 898,
+ -1, -1, 783, -1, -1, 904, -1, 906, -1, 790,
+ 791, -1, -1, 794, -1, -1, -1, -1, -1, -1,
+ -1, 631, 632, -1, -1, -1, -1, -1, -1, 810,
+ -1, -1, -1, 643, -1, -1, -1, -1, -1, -1,
+ -1, -1, 652, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 835, -1, -1, -1, -1, -1,
+ -1, 68, 69, 70, 71, 72, 73, 74, 849, -1,
+ 77, 78, 853, -1, -1, -1, 83, 84, -1, -1,
+ -1, -1, -1, 864, -1, -1, -1, -1, 698, -1,
+ -1, -1, -1, -1, -1, -1, 706, -1, -1, -1,
+ -1, -1, -1, 713, 714, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 896, -1, 898, -1, 44,
+ -1, -1, -1, 904, -1, 906, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 44, -1, -1, -1,
+ -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 783, -1, 83, 84, -1, -1, -1,
+ 790, 791, -1, -1, 794, 110, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
+ 810, -1, 110, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 0, 1, 141, 3, 4, 5,
+ 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
+ 16, -1, 18, 19, 20, 21, 22, 23, 24, 849,
+ -1, -1, -1, 853, 30, 31, 32, 33, 34, 35,
+ 36, -1, -1, 39, 864, -1, -1, -1, -1, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
+ 66, 67, -1, -1, -1, -1, 896, -1, 898, -1,
+ -1, -1, -1, -1, 904, -1, 906, -1, -1, -1,
+ 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
+ -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 122, 123, 124, 0,
+ -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
+ -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
+ 146, -1, 148, -1, -1, -1, 27, 28, 29, -1,
+ -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
+ 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, -1, -1, 83, 84, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ -1, -1, 83, 84, 85, -1, 87, 88, -1, -1,
+ -1, -1, 110, 94, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, -1, 107, -1, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
+ 141, 0, -1, 144, 145, 146, -1, 148, -1, 8,
+ 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
+ -1, -1, -1, -1, -1, -1, -1, 26, 27, 28,
+ -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
+ -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
+ -1, -1, 68, 69, 70, 71, 72, 73, 74, -1,
+ -1, 77, 78, -1, -1, -1, -1, 83, 84, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, -1, -1, 83, 84, 85, -1, -1, 88,
+ -1, -1, -1, -1, -1, 94, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, -1, -1, -1, -1,
+ -1, 110, -1, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
+ 139, 140, 141, 0, 143, 144, 145, 146, -1, 148,
+ -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
+ 17, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
+ 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, -1, -1, 83, 84, 85, -1,
+ -1, 88, -1, -1, -1, -1, -1, 94, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 138, 139, 140, 141, 0, -1, 144, 145, 146,
+ -1, 148, -1, 8, 9, 10, -1, -1, 13, 14,
+ 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
+ -1, 26, 27, 28, -1, -1, -1, -1, -1, -1,
+ -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
+ 85, -1, -1, 88, -1, -1, -1, -1, -1, 94,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 110, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 137, 138, 139, 140, 141, 0, 143, 144,
+ 145, 146, -1, 148, -1, 8, 9, 10, -1, -1,
+ 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 27, 28, -1, -1, -1, -1,
+ -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
+ 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, -1, -1,
+ 83, 84, 85, -1, -1, 88, -1, -1, -1, -1,
+ -1, 94, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 110, -1, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 138, 139, 140, 141, 0,
+ 143, 144, 145, 146, -1, 148, -1, 8, 9, 10,
+ -1, -1, -1, 14, 15, -1, 17, -1, -1, -1,
+ -1, -1, -1, -1, -1, 26, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
+ 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ -1, -1, 83, 84, 85, 0, 87, -1, -1, -1,
+ -1, -1, -1, 8, 9, 10, -1, -1, -1, 14,
+ 15, -1, 17, -1, -1, -1, -1, -1, 109, 110,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 37, 38, -1, 40, 41, 42, 43, 44,
+ -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
+ 141, -1, -1, 144, -1, 146, -1, 148, -1, -1,
+ -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
+ 85, -1, 87, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 109, 110, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 138, 139, 140, 141, -1, -1, 144,
+ -1, 146, 1, 148, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, -1, -1, 15, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 146, 1, 148,
+ 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
+ -1, 14, 15, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, 95, -1, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 122,
+ 123, 124, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 146, 1, 148, 3, 4, 5, 6,
+ 7, -1, -1, 10, 11, 12, -1, -1, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 122, 123, 124, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 146,
+ 1, 148, 3, 4, 5, 6, 7, -1, -1, 10,
+ 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
+ -1, 1, -1, 3, 4, 5, 6, 7, -1, 9,
+ 10, 11, 12, -1, -1, 146, 16, 148, 18, 19,
+ 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
+ -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
+ 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
+ 90, -1, 92, 93, -1, 95, -1, 97, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 122, 123, 124, -1, -1, -1, -1, -1,
+ -1, -1, 1, -1, 3, 4, 5, 6, 7, -1,
+ -1, -1, 11, 12, -1, -1, 146, 16, 148, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
+ -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
+ -1, -1, -1, 11, 12, 144, -1, 146, 16, 148,
+ 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
+ -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
+ -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
+ 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 122, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
+ 7, -1, -1, -1, 11, 12, 144, -1, 146, 16,
+ 148, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 122, 123, 124, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 138, -1, -1, -1, -1, -1, -1, -1, 146,
+ 1, 148, 3, 4, 5, 6, 7, -1, -1, 10,
+ 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
+ -1, 11, 12, -1, -1, 146, 16, 148, 18, 19,
+ 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
+ -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
+ 90, -1, 92, 93, -1, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 122, 123, 124, 3, 4, 5, -1, 7,
+ -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
+ 18, 19, 20, 21, 22, 23, 24, -1, 148, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
+ -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
+ -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
+ -1, 89, 90, -1, 92, 93, -1, -1, -1, 97,
+ 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 122, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
+ 7, -1, -1, -1, 11, 12, -1, -1, 146, 16,
+ 148, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
+ -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ -1, -1, 89, 90, -1, 92, 93, -1, -1, -1,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 122, 123, 124, 3, 4,
+ 5, 6, 7, -1, -1, -1, 11, 12, -1, -1,
+ -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
+ -1, 148, -1, -1, -1, 30, 31, 32, 33, 34,
+ 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, -1, 59, 60, -1, 62, 63, 64,
+ -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
+ 95, -1, 97, 98, 99, 100, 101, 102, 103, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 146, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
+ -1, -1, -1, -1, -1, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
+ 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 123, 124, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
+ -1, 142, 143, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, 26, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 122,
+ 123, 124, -1, -1, -1, -1, -1, -1, 3, 4,
+ 5, -1, 7, -1, 137, -1, 11, 12, -1, -1,
+ 143, 16, -1, 18, 19, 20, 21, 22, 23, 24,
+ -1, 26, -1, -1, -1, 30, 31, 32, 33, 34,
+ 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
+ -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, -1, 62, 63, 64,
+ -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
+ -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
+ 7, -1, 137, -1, 11, 12, -1, -1, 143, 16,
+ -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
+ -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ 87, -1, 89, 90, -1, 92, 93, -1, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, 109, -1, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, 7, 122, 123, 124, 11, 12,
+ -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, 143, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, 122,
+ 123, 124, 11, 12, -1, -1, -1, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ 143, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 143, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
+ 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, -1, 56, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
+ 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
+ 98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
+ 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
+ 98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
+ 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
+ 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
+ -1, -1, -1, 16, 142, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
+ 63, 64, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, -1, -1, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3, 4, 5, -1, 7, -1, -1, 122,
+ 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, 141, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ -1, 62, 63, 64, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, -1, -1, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3, 4, 5, 6, 7, -1,
+ -1, 122, 11, 12, -1, -1, -1, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ 141, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
+ -1, 11, 12, 122, 123, 124, 16, -1, 18, 19,
+ 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
+ -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
+ 90, -1, 92, 93, -1, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
+ 11, 12, 122, 123, 124, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
+ 12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
+ 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
+ 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
+ -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
+ 62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
+ 92, 93, -1, 95, -1, 97, 98, 99, 100, 101,
+ 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
+ 122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, -1, 96, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, 122,
+ 123, 124, 16, -1, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, -1, 62, 63,
+ 64, -1, 66, 67, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, 95, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
+ 5, -1, 7, -1, -1, -1, 11, 12, 122, 123,
+ 124, 16, -1, 18, 19, 20, 21, 22, 23, 24,
+ -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
+ 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
+ -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, -1, 62, 63, 64,
+ -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
+ -1, -1, 97, 98, 99, 100, 101, 102, 103, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
+ -1, 7, -1, -1, -1, 11, 12, 122, 123, 124,
+ 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
+ -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
+ 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
+ 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
+ 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
+ -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
+ 7, -1, -1, -1, 11, 12, 122, 123, 124, 16,
+ -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
+ -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
+ -1, -1, -1, 11, 12, 122, 123, 124, 16, -1,
+ 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
+ -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
+ -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
+ -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
+ 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
+ -1, -1, 11, 12, 122, 123, 124, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
+ -1, 11, 12, 122, 123, 124, 16, -1, 18, 19,
+ 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
+ -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
+ 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
+ 90, -1, 92, 93, -1, 95, -1, 97, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
+ 11, 12, 122, 123, 124, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, -1, -1, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
+ 12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
+ 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
+ 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
+ -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, -1, 59, 60, -1,
+ 62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
+ 92, 93, -1, -1, -1, 97, 98, 99, 100, 101,
+ 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
+ 122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, -1, -1, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, 122,
+ 123, 124, 16, -1, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, 95, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
+ -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
+ -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 83,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
+ -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, -1, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
+ -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
+ -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, -1, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
+ -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
+ -1, -1, -1, -1, -1, -1, -1, -1, 122, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
+ 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
+ -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
+ -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
+ -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
+ -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
+ -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
+ 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
+ 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
+ -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
+ 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 95, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
+ 123, 124, -1, -1, -1, -1, -1, 52, 53, -1,
+ -1, 56, -1, -1, -1, -1, -1, -1, -1, 142,
+ 143, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
+ -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
+ -1, -1, -1, -1, -1, -1, -1, 142, 143, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
+ 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
+ -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
+ -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
+ -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
+ -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
+ -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
+ 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
+ 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
+ -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
+ 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 95, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
+ 123, 124, -1, -1, -1, -1, -1, 52, 53, -1,
+ -1, 56, -1, -1, -1, -1, -1, -1, -1, 142,
+ 143, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
+ -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
+ -1, -1, -1, -1, -1, -1, -1, 142, 143, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
+ 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
+ -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
+ -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
+ -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
+ -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
+ -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
+ 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
+ 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
+ -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
+ 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 95, -1, -1, -1, -1, -1, 44, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
+ 123, 124, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, -1, -1, 83, 84, 142,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 110, -1, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121
+};
+static const yytype_uint16 yystos[] =
+{
+ 0, 150, 151, 0, 1, 3, 4, 5, 6, 7,
+ 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
+ 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 59, 60, 62, 63, 64, 66, 67, 86, 89,
+ 90, 92, 93, 95, 97, 98, 99, 100, 101, 102,
+ 103, 122, 123, 124, 153, 154, 155, 158, 160, 161,
+ 164, 165, 167, 168, 169, 171, 172, 182, 196, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 245, 246, 256, 257, 258, 259, 260, 261, 262, 265,
+ 273, 275, 276, 277, 278, 279, 280, 303, 314, 155,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 56, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 77, 78, 81, 82, 83, 84, 95,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 123, 124, 142, 175, 176, 177, 178, 180, 181, 273,
+ 275, 21, 22, 30, 39, 58, 86, 89, 95, 96,
+ 123, 164, 172, 182, 184, 189, 192, 194, 213, 277,
+ 279, 280, 301, 302, 189, 189, 143, 190, 191, 143,
+ 186, 190, 143, 148, 308, 54, 177, 308, 157, 137,
+ 31, 32, 182, 213, 303, 182, 56, 89, 153, 166,
+ 167, 158, 185, 194, 301, 314, 184, 300, 301, 314,
+ 46, 86, 122, 141, 171, 196, 213, 277, 280, 239,
+ 240, 54, 55, 57, 175, 268, 274, 267, 268, 268,
+ 147, 263, 147, 266, 59, 60, 160, 182, 182, 146,
+ 148, 307, 312, 313, 40, 41, 42, 43, 44, 37,
+ 38, 28, 243, 109, 141, 89, 95, 168, 109, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 83, 84, 110, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 85, 139, 140, 197, 158,
+ 159, 159, 200, 202, 159, 307, 313, 86, 165, 172,
+ 213, 229, 277, 280, 52, 56, 83, 86, 173, 174,
+ 213, 277, 280, 174, 33, 34, 35, 36, 49, 50,
+ 51, 52, 56, 143, 175, 278, 298, 85, 140, 26,
+ 137, 247, 259, 87, 87, 186, 190, 247, 141, 184,
+ 56, 184, 184, 109, 88, 141, 193, 314, 85, 139,
+ 140, 87, 87, 141, 193, 189, 308, 309, 189, 188,
+ 189, 314, 158, 309, 158, 54, 63, 64, 156, 143,
+ 183, 137, 153, 85, 140, 87, 166, 144, 309, 198,
+ 145, 141, 148, 311, 141, 311, 138, 311, 308, 56,
+ 59, 60, 168, 170, 141, 85, 139, 140, 52, 54,
+ 55, 56, 57, 89, 95, 96, 116, 119, 143, 241,
+ 284, 285, 286, 287, 288, 289, 292, 293, 294, 295,
+ 296, 61, 104, 105, 106, 269, 106, 269, 106, 65,
+ 106, 106, 264, 269, 106, 61, 106, 68, 68, 146,
+ 155, 159, 159, 159, 159, 155, 158, 158, 244, 95,
+ 160, 184, 194, 195, 166, 141, 171, 141, 160, 182,
+ 184, 195, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 52, 53,
+ 56, 180, 186, 304, 305, 188, 52, 53, 56, 180,
+ 186, 304, 152, 153, 13, 225, 312, 225, 159, 159,
+ 307, 17, 250, 56, 85, 139, 140, 25, 158, 52,
+ 56, 173, 1, 113, 281, 312, 85, 139, 140, 209,
+ 299, 210, 85, 140, 306, 52, 56, 304, 304, 249,
+ 248, 160, 182, 160, 182, 94, 162, 179, 182, 184,
+ 95, 184, 192, 301, 52, 56, 188, 52, 56, 302,
+ 309, 144, 309, 309, 177, 199, 182, 153, 138, 304,
+ 304, 182, 309, 309, 301, 141, 170, 52, 56, 188,
+ 52, 56, 109, 52, 89, 95, 230, 231, 232, 286,
+ 284, 29, 107, 242, 141, 297, 314, 141, 297, 52,
+ 141, 297, 52, 271, 270, 147, 269, 147, 182, 182,
+ 76, 114, 234, 235, 314, 184, 141, 309, 170, 141,
+ 44, 308, 87, 87, 186, 190, 308, 310, 87, 87,
+ 186, 187, 190, 314, 10, 224, 8, 252, 314, 153,
+ 13, 153, 27, 226, 312, 226, 250, 194, 224, 52,
+ 56, 188, 52, 56, 204, 207, 312, 282, 206, 52,
+ 56, 173, 188, 152, 158, 143, 283, 284, 211, 187,
+ 190, 187, 190, 234, 234, 44, 163, 177, 184, 193,
+ 87, 310, 87, 87, 158, 138, 311, 168, 310, 184,
+ 232, 141, 286, 141, 309, 146, 236, 314, 153, 153,
+ 287, 292, 294, 296, 288, 289, 294, 288, 153, 54,
+ 55, 57, 272, 280, 52, 233, 236, 288, 290, 291,
+ 294, 296, 153, 95, 184, 170, 182, 111, 160, 182,
+ 182, 162, 145, 87, 160, 182, 160, 182, 162, 184,
+ 195, 253, 314, 15, 228, 314, 14, 227, 228, 228,
+ 201, 203, 224, 141, 225, 310, 159, 312, 159, 152,
+ 310, 224, 309, 284, 152, 312, 175, 153, 153, 182,
+ 234, 87, 309, 309, 231, 141, 95, 230, 52, 237,
+ 238, 285, 309, 10, 138, 141, 297, 141, 297, 141,
+ 297, 141, 297, 297, 138, 109, 236, 114, 141, 297,
+ 141, 297, 141, 297, 10, 184, 182, 160, 182, 88,
+ 254, 314, 153, 9, 255, 314, 159, 224, 224, 153,
+ 153, 184, 153, 226, 208, 312, 224, 309, 224, 212,
+ 10, 138, 153, 141, 231, 141, 286, 141, 288, 294,
+ 288, 288, 86, 213, 114, 291, 294, 288, 290, 294,
+ 288, 86, 172, 213, 277, 280, 225, 153, 225, 224,
+ 224, 228, 250, 251, 205, 152, 283, 138, 231, 141,
+ 238, 297, 141, 297, 297, 297, 56, 85, 141, 297,
+ 141, 297, 297, 141, 297, 297, 56, 85, 139, 140,
+ 153, 153, 153, 224, 152, 231, 288, 52, 56, 288,
+ 294, 288, 288, 52, 56, 188, 52, 56, 252, 227,
+ 224, 224, 297, 297, 141, 297, 297, 297, 310, 288,
+ 297
+};
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_params *parser)
+{
+ if (!yyvaluep)
+ return;
+ ((void) (parser));
+ ((void) (yyoutput));
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_params *parser)
+{
+ if (yytype < 149)
+ fprintf (yyoutput, "token %s (", yytname[yytype]);
+ else
+ fprintf (yyoutput, "nterm %s (", yytname[yytype]);
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, parser);
+ fprintf (yyoutput, ")");
+}
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+{
+ fprintf (stderr, "Stack now");
+ for (; bottom <= top; ++bottom)
+ fprintf (stderr, " %d", *bottom);
+ fprintf (stderr, "\n");
+}
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule, struct parser_params *parser)
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ fprintf (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ , parser);
+ fprintf (stderr, "\n");
+ }
+}
+static unsigned int
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ unsigned int yyn = 0;
+ char const *yyp = yystr;
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+ if (! yyres)
+ return strlen (yystr);
+ return __builtin_stpcpy (yyres, yystr) - yyres;
+}
+static unsigned int
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+ if (! (-747 < yyn && yyn <= 10225))
+ return 0;
+ else
+ {
+ int yytype = ((unsigned int) (yychar) <= 376 ? yytranslate[yychar] : 2);
+ unsigned int yysize0 = yytnamerr (0, yytname[yytype]);
+ unsigned int yysize = yysize0;
+ unsigned int yysize1;
+ int yysize_overflow = 0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ int yychecklim = 10225 - yyn + 1;
+ int yyxend = yychecklim < 149 ? yychecklim : 149;
+ int yycount = 1;
+ yyarg[0] = yytname[yytype];
+ yyfmt = __builtin_stpcpy (yyformat, yyunexpected);
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != 1)
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+ yyfmt = __builtin_stpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
+ }
+ yyf = yyformat;
+ yysize1 = yysize + strlen (yyf);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+ if (yysize_overflow)
+ return ((unsigned int) -1);
+ if (yyresult)
+ {
+ char *yyp = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct parser_params *parser)
+{
+ ((void) (yyvaluep));
+ ((void) (parser));
+ if (!yymsg)
+ yymsg = "Deleting";
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", yymsg); yy_symbol_print (stderr, yytype, yyvaluep, parser); fprintf (stderr, "\n"); } } while ((0));
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+int ruby_yyparse (struct parser_params *parser);
+int
+ruby_yyparse (struct parser_params *parser)
+{
+int yychar;
+YYSTYPE yylval;
+int yynerrs;
+ int yystate;
+ int yyn;
+ int yyresult;
+ int yyerrstatus;
+ int yytoken = 0;
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ unsigned int yymsg_alloc = sizeof yymsgbuf;
+ yytype_int16 yyssa[200];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
+ YYSTYPE yyvsa[200];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+ unsigned int yystacksize = 200;
+ YYSTYPE yyval;
+ int yylen = 0;
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Starting parse\n"); } while ((0));
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = (-2);
+ yyssp = yyss;
+ yyvsp = yyvs;
+ goto yysetstate;
+ yynewstate:
+ yyssp++;
+ yysetstate:
+ *yyssp = yystate;
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ unsigned int yysize = yyssp - yyss + 1;
+ if (10000 <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (10000 < yystacksize)
+ yystacksize = 10000;
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) rb_parser_malloc(parser, ((yystacksize) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) + (sizeof (union yyalloc) - 1)));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ do { unsigned int yynewbytes; __builtin_memcpy (&yyptr->yyss, yyss, (yysize) * sizeof (*(yyss))); yyss = &yyptr->yyss; yynewbytes = yystacksize * sizeof (*yyss) + (sizeof (union yyalloc) - 1); yyptr += yynewbytes / sizeof (*yyptr); } while ((0));
+ do { unsigned int yynewbytes; __builtin_memcpy (&yyptr->yyvs, yyvs, (yysize) * sizeof (*(yyvs))); yyvs = &yyptr->yyvs; yynewbytes = yystacksize * sizeof (*yyvs) + (sizeof (union yyalloc) - 1); yyptr += yynewbytes / sizeof (*yyptr); } while ((0));
+ if (yyss1 != yyssa)
+ rb_parser_free(parser, yyss1);
+ }
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize); } while ((0));
+ if (yyss + yystacksize - 1 <= yyssp)
+ goto yyabortlab;
+ }
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Entering state %d\n", yystate); } while ((0));
+ goto yybackup;
+yybackup:
+ yyn = yypact[yystate];
+ if (yyn == -747)
+ goto yydefault;
+ if (yychar == (-2))
+ {
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Reading a token: "); } while ((0));
+ yychar = yylex (&yylval, parser);
+ }
+ if (yychar <= 0)
+ {
+ yychar = yytoken = 0;
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Now at end of input.\n"); } while ((0));
+ }
+ else
+ {
+ yytoken = ((unsigned int) (yychar) <= 376 ? yytranslate[yychar] : 2);
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Next token is"); yy_symbol_print (stderr, yytoken, &yylval, parser); fprintf (stderr, "\n"); } } while ((0));
+ }
+ yyn += yytoken;
+ if (yyn < 0 || 10225 < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yyn == 0 || yyn == -555)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ if (yyn == 3)
+ goto yyacceptlab;
+ if (yyerrstatus)
+ yyerrstatus--;
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Shifting"); yy_symbol_print (stderr, yytoken, &yylval, parser); fprintf (stderr, "\n"); } } while ((0));
+ if (yychar != 0)
+ yychar = (-2);
+ yystate = yyn;
+ *++yyvsp = yylval;
+ goto yynewstate;
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+yyreduce:
+ yylen = yyr2[yyn];
+ yyval = yyvsp[1-yylen];
+ do { if ((parser->parser_yydebug)) yy_reduce_print (yyvsp, yyn, parser); } while ((0));
+ switch (yyn)
+ {
+ case 2:
+ {
+ (parser->parser_lex_state) = EXPR_BEG;
+ local_push_gen(parser,(parser->parser_compile_for_eval));
+ ;}
+ break;
+ case 3:
+ {
+ if ((yyvsp[(2) - (2)].node) && !(parser->parser_compile_for_eval)) {
+ if (((int) (((((struct RNode*)((yyvsp[(2) - (2)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) void_expr_gen(parser, (((yyvsp[(2) - (2)].node)) = remove_begin((yyvsp[(2) - (2)].node))));
+ else {
+ NODE *node = (yyvsp[(2) - (2)].node);
+ while (node->u3.node) {
+ node = node->u3.node;
+ }
+ void_expr_gen(parser, ((node->u1.node) = remove_begin(node->u1.node)));
+ }
+ }
+ (parser->parser_eval_tree) = node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)(block_append_gen(parser,(parser->parser_eval_tree),(yyvsp[(2) - (2)].node))), (VALUE)(0));
+ local_pop_gen(parser);
+ ;}
+ break;
+ case 4:
+ {
+ (yyval.node) = (yyvsp[(1) - (4)].node);
+ if ((yyvsp[(2) - (4)].node)) {
+ (yyval.node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].node)));
+ }
+ else if ((yyvsp[(3) - (4)].node)) {
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "else without rescue is useless");
+ (yyval.node) = block_append_gen(parser,(yyval.node),(yyvsp[(3) - (4)].node));
+ }
+ if ((yyvsp[(4) - (4)].node)) {
+ if ((yyval.node)) {
+ (yyval.node) = node_newnode(parser, (NODE_ENSURE), (VALUE)((yyval.node)), (VALUE)(0), (VALUE)((yyvsp[(4) - (4)].node)));
+ }
+ else {
+ (yyval.node) = block_append_gen(parser,(yyvsp[(4) - (4)].node),node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0)));
+ }
+ }
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+ ;}
+ break;
+ case 5:
+ {
+ void_stmts_gen(parser, (yyvsp[(1) - (2)].node));
+ fixup_nodes(&(parser->parser_deferred_nodes));
+ (yyval.node) = (yyvsp[(1) - (2)].node);
+ ;}
+ break;
+ case 6:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 7:
+ {
+ (yyval.node) = newline_node((yyvsp[(1) - (1)].node));
+ ;}
+ break;
+ case 8:
+ {
+ (yyval.node) = block_append_gen(parser,(yyvsp[(1) - (3)].node),newline_node((yyvsp[(3) - (3)].node)));
+ ;}
+ break;
+ case 9:
+ {
+ (yyval.node) = remove_begin((yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 10:
+ {(parser->parser_lex_state) = EXPR_FNAME;;}
+ break;
+ case 11:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ALIAS), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0));
+ ;}
+ break;
+ case 12:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_VALIAS), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 13:
+ {
+ char buf[3];
+ sprintf(buf, "$%c", (char)(yyvsp[(3) - (3)].node)->u2.argc);
+ (yyval.node) = node_newnode(parser, (NODE_VALIAS), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)((__builtin_constant_p(buf) ? __extension__ (rb_intern2(buf, strlen(buf))) : (rb_intern)(buf))), (VALUE)(0));
+ ;}
+ break;
+ case 14:
+ {
+ parser_yyerror(parser, "can't make alias for the number variables");
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 15:
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 16:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))), (VALUE)(0));
+ fixpos((yyval.node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 17:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)(0), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))));
+ fixpos((yyval.node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 18:
+ {
+ if ((yyvsp[(1) - (3)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN) {
+ (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)->u2.node), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1));
+ }
+ ;}
+ break;
+ case 19:
+ {
+ if ((yyvsp[(1) - (3)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN) {
+ (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)->u2.node), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1));
+ }
+ ;}
+ break;
+ case 20:
+ {
+ NODE *resq = node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)(remove_begin((yyvsp[(3) - (3)].node))), (VALUE)(0));
+ (yyval.node) = node_newnode(parser, (NODE_RESCUE), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))), (VALUE)(resq), (VALUE)(0));
+ ;}
+ break;
+ case 21:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single)) {
+ parser_yyerror(parser, "BEGIN in method");
+ }
+ ;}
+ break;
+ case 22:
+ {
+ (parser->parser_eval_tree_begin) = block_append_gen(parser,(parser->parser_eval_tree_begin),(yyvsp[(4) - (5)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 23:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single)) {
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "END in method; use at_exit");
+ }
+ (yyval.node) = node_newnode(parser, (NODE_POSTEXE), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0))), (VALUE)(0));
+ ;}
+ break;
+ case 24:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 25:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ ;}
+ break;
+ case 26:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ if ((yyvsp[(1) - (3)].node)) {
+ ID vid = (yyvsp[(1) - (3)].node)->u1.id;
+ if ((yyvsp[(2) - (3)].id) == 331) {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
+ if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
+ (yyval.node)->u3.id = vid;
+ }
+ }
+ else if ((yyvsp[(2) - (3)].id) == 330) {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ (yyval.node)->u2.node = node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(1), (VALUE)(0))));
+ }
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ ;}
+ break;
+ case 27:
+ {
+ NODE *args;
+ value_expr_gen(parser, ((yyvsp[(6) - (6)].node)) = remove_begin((yyvsp[(6) - (6)].node)));
+ if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ args = arg_concat_gen(parser,(yyvsp[(6) - (6)].node),(yyvsp[(3) - (6)].node));
+ if ((yyvsp[(5) - (6)].id) == 331) {
+ (yyvsp[(5) - (6)].id) = 0;
+ }
+ else if ((yyvsp[(5) - (6)].id) == 330) {
+ (yyvsp[(5) - (6)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN1), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].id)), (VALUE)(args));
+ fixpos((yyval.node), (yyvsp[(1) - (6)].node));
+ ;}
+ break;
+ case 28:
+ {
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 29:
+ {
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 30:
+ {
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 31:
+ {
+ rb_backref_error_gen(parser,(yyvsp[(1) - (3)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 32:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 33:
+ {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ ;}
+ break;
+ case 34:
+ {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ ;}
+ break;
+ case 37:
+ {
+ (yyval.node) = logop_gen(parser, NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 38:
+ {
+ (yyval.node) = logop_gen(parser, NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 39:
+ {
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(3) - (3)].node)),'!');
+ ;}
+ break;
+ case 40:
+ {
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(2) - (2)].node)),'!');
+ ;}
+ break;
+ case 42:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 45:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_RETURN), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 46:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_BREAK), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 47:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_NEXT), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 49:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ ;}
+ break;
+ case 50:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ ;}
+ break;
+ case 51:
+ {
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 52:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ dyna_pop_gen(parser);
+ ;}
+ break;
+ case 53:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)((yyvsp[(2) - (2)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 54:
+ {
+ block_dup_check_gen(parser,(yyvsp[(2) - (3)].node),(yyvsp[(3) - (3)].node));
+ (yyvsp[(3) - (3)].node)->u3.node = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (3)].id)), (VALUE)((yyvsp[(2) - (3)].node)));
+ (yyval.node) = (yyvsp[(3) - (3)].node);
+ fixpos((yyval.node), (yyvsp[(2) - (3)].node));
+ ;}
+ break;
+ case 55:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+ ;}
+ break;
+ case 56:
+ {
+ block_dup_check_gen(parser,(yyvsp[(4) - (5)].node),(yyvsp[(5) - (5)].node));
+ (yyvsp[(5) - (5)].node)->u3.node = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].node)));
+ (yyval.node) = (yyvsp[(5) - (5)].node);
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 57:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+ ;}
+ break;
+ case 58:
+ {
+ block_dup_check_gen(parser,(yyvsp[(4) - (5)].node),(yyvsp[(5) - (5)].node));
+ (yyvsp[(5) - (5)].node)->u3.node = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].node)));
+ (yyval.node) = (yyvsp[(5) - (5)].node);
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 59:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_SUPER), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 60:
+ {
+ (yyval.node) = new_yield_gen(parser, (yyvsp[(2) - (2)].node));
+ fixpos((yyval.node), (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 62:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 64:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(2) - (3)].node)), (VALUE)(1), (VALUE)(0))), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 65:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 66:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(list_append_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 67:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0), (VALUE)((yyvsp[(3) - (3)].node)));
+ ;}
+ break;
+ case 68:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 69:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(-1));
+ ;}
+ break;
+ case 70:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 71:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
+ ;}
+ break;
+ case 72:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 73:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(-1));
+ ;}
+ break;
+ case 74:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 76:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 77:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 78:
+ {
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(2) - (3)].node));
+ ;}
+ break;
+ case 79:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 80:
+ {
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 81:
+ {
+ (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
+ ;}
+ break;
+ case 82:
+ {
+ (yyval.node) = aryset_gen(parser, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
+ ;}
+ break;
+ case 83:
+ {
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+ ;}
+ break;
+ case 84:
+ {
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+ ;}
+ break;
+ case 85:
+ {
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+ ;}
+ break;
+ case 86:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0))));
+ ;}
+ break;
+ case 87:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0))));
+ ;}
+ break;
+ case 88:
+ {
+ rb_backref_error_gen(parser,(yyvsp[(1) - (1)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 89:
+ {
+ if (!((yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0))) (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 90:
+ {
+ (yyval.node) = aryset_gen(parser, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
+ ;}
+ break;
+ case 91:
+ {
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+ ;}
+ break;
+ case 92:
+ {
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+ ;}
+ break;
+ case 93:
+ {
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+ ;}
+ break;
+ case 94:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0))));
+ ;}
+ break;
+ case 95:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0))));
+ ;}
+ break;
+ case 96:
+ {
+ rb_backref_error_gen(parser,(yyvsp[(1) - (1)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 97:
+ {
+ parser_yyerror(parser, "class/module name must be CONSTANT");
+ ;}
+ break;
+ case 99:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 100:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)(0), (VALUE)((yyval.node)), (VALUE)(0));
+ ;}
+ break;
+ case 101:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 105:
+ {
+ (parser->parser_lex_state) = EXPR_END;
+ (yyval.id) = (yyvsp[(1) - (1)].id);
+ ;}
+ break;
+ case 106:
+ {
+ (parser->parser_lex_state) = EXPR_END;
+ (yyval.id) = (yyvsp[(1) - (1)].id);
+ ;}
+ break;
+ case 109:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (1)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 111:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_UNDEF), (VALUE)(0), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0));
+ ;}
+ break;
+ case 112:
+ {(parser->parser_lex_state) = EXPR_FNAME;;}
+ break;
+ case 113:
+ {
+ (yyval.node) = block_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_UNDEF), (VALUE)(0), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0)));
+ ;}
+ break;
+ case 114:
+ { (yyval.id) = '|'; ;}
+ break;
+ case 115:
+ { (yyval.id) = '^'; ;}
+ break;
+ case 116:
+ { (yyval.id) = '&'; ;}
+ break;
+ case 117:
+ { (yyval.id) = 324; ;}
+ break;
+ case 118:
+ { (yyval.id) = 325; ;}
+ break;
+ case 119:
+ { (yyval.id) = 326; ;}
+ break;
+ case 120:
+ { (yyval.id) = 332; ;}
+ break;
+ case 121:
+ { (yyval.id) = 333; ;}
+ break;
+ case 122:
+ { (yyval.id) = '>'; ;}
+ break;
+ case 123:
+ { (yyval.id) = 328; ;}
+ break;
+ case 124:
+ { (yyval.id) = '<'; ;}
+ break;
+ case 125:
+ { (yyval.id) = 329; ;}
+ break;
+ case 126:
+ { (yyval.id) = 327; ;}
+ break;
+ case 127:
+ { (yyval.id) = 338; ;}
+ break;
+ case 128:
+ { (yyval.id) = 339; ;}
+ break;
+ case 129:
+ { (yyval.id) = '+'; ;}
+ break;
+ case 130:
+ { (yyval.id) = '-'; ;}
+ break;
+ case 131:
+ { (yyval.id) = '*'; ;}
+ break;
+ case 132:
+ { (yyval.id) = '*'; ;}
+ break;
+ case 133:
+ { (yyval.id) = '/'; ;}
+ break;
+ case 134:
+ { (yyval.id) = '%'; ;}
+ break;
+ case 135:
+ { (yyval.id) = 323; ;}
+ break;
+ case 136:
+ { (yyval.id) = '!'; ;}
+ break;
+ case 137:
+ { (yyval.id) = '~'; ;}
+ break;
+ case 138:
+ { (yyval.id) = 321; ;}
+ break;
+ case 139:
+ { (yyval.id) = 322; ;}
+ break;
+ case 140:
+ { (yyval.id) = 336; ;}
+ break;
+ case 141:
+ { (yyval.id) = 337; ;}
+ break;
+ case 142:
+ { (yyval.id) = '`'; ;}
+ break;
+ case 184:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 185:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (5)].node)) = remove_begin((yyvsp[(3) - (5)].node)));
+ (yyvsp[(3) - (5)].node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))), (VALUE)(0));
+ (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node));
+ ;}
+ break;
+ case 186:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ if ((yyvsp[(1) - (3)].node)) {
+ ID vid = (yyvsp[(1) - (3)].node)->u1.id;
+ if ((yyvsp[(2) - (3)].id) == 331) {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
+ if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
+ (yyval.node)->u3.id = vid;
+ }
+ }
+ else if ((yyvsp[(2) - (3)].id) == 330) {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ (yyval.node)->u2.node = node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(1), (VALUE)(0))));
+ }
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ ;}
+ break;
+ case 187:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (5)].node)) = remove_begin((yyvsp[(3) - (5)].node)));
+ (yyvsp[(3) - (5)].node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))), (VALUE)(0));
+ if ((yyvsp[(1) - (5)].node)) {
+ ID vid = (yyvsp[(1) - (5)].node)->u1.id;
+ if ((yyvsp[(2) - (5)].id) == 331) {
+ (yyvsp[(1) - (5)].node)->u2.node = (yyvsp[(3) - (5)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0));
+ if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
+ (yyval.node)->u3.id = vid;
+ }
+ }
+ else if ((yyvsp[(2) - (5)].id) == 330) {
+ (yyvsp[(1) - (5)].node)->u2.node = (yyvsp[(3) - (5)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = (yyvsp[(1) - (5)].node);
+ (yyval.node)->u2.node = node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(2) - (5)].id)), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)(1), (VALUE)(0))));
+ }
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ ;}
+ break;
+ case 188:
+ {
+ NODE *args;
+ value_expr_gen(parser, ((yyvsp[(6) - (6)].node)) = remove_begin((yyvsp[(6) - (6)].node)));
+ if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ args = arg_concat_gen(parser,(yyvsp[(6) - (6)].node),(yyvsp[(3) - (6)].node));
+ if ((yyvsp[(5) - (6)].id) == 331) {
+ (yyvsp[(5) - (6)].id) = 0;
+ }
+ else if ((yyvsp[(5) - (6)].id) == 330) {
+ (yyvsp[(5) - (6)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN1), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].id)), (VALUE)(args));
+ fixpos((yyval.node), (yyvsp[(1) - (6)].node));
+ ;}
+ break;
+ case 189:
+ {
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 190:
+ {
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 191:
+ {
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 192:
+ {
+ parser_yyerror(parser, "constant re-assignment");
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 193:
+ {
+ parser_yyerror(parser, "constant re-assignment");
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 194:
+ {
+ rb_backref_error_gen(parser,(yyvsp[(1) - (3)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 195:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (3)].node)) = remove_begin((yyvsp[(1) - (3)].node)));
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_newnode(parser, (NODE_DOT2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0));
+ if (((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(1) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG) &&
+ ((int) (((((struct RNode*)((yyvsp[(3) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(3) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG)) {
+ (parser->parser_deferred_nodes) = list_append_gen(parser,(parser->parser_deferred_nodes),(yyval.node));
+ }
+ ;}
+ break;
+ case 196:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (3)].node)) = remove_begin((yyvsp[(1) - (3)].node)));
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_newnode(parser, (NODE_DOT3), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0));
+ if (((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(1) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG) &&
+ ((int) (((((struct RNode*)((yyvsp[(3) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(3) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG)) {
+ (parser->parser_deferred_nodes) = list_append_gen(parser,(parser->parser_deferred_nodes),(yyval.node));
+ }
+ ;}
+ break;
+ case 197:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'+',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 198:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'-',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 199:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'*',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 200:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'/',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 201:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'%',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 202:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),323,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 203:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)(call_bin_op_gen(parser, (yyvsp[(2) - (4)].node),323,(yyvsp[(4) - (4)].node))), (VALUE)(322), (VALUE)(0));
+ ;}
+ break;
+ case 204:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)(call_bin_op_gen(parser, (yyvsp[(2) - (4)].node),323,(yyvsp[(4) - (4)].node))), (VALUE)(322), (VALUE)(0));
+ ;}
+ break;
+ case 205:
+ {
+ (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),321);
+ ;}
+ break;
+ case 206:
+ {
+ (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),322);
+ ;}
+ break;
+ case 207:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'|',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 208:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'^',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 209:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'&',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 210:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),324,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 211:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'>',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 212:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),328,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 213:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'<',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 214:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),329,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 215:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),325,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 216:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),326,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 217:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),327,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 218:
+ {
+ (yyval.node) = match_op_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ if (((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && rb_type((VALUE)((yyvsp[(1) - (3)].node)->u1.value)) == RUBY_T_REGEXP) {
+ (yyval.node) = reg_named_capture_assign_gen(parser,(yyvsp[(1) - (3)].node)->u1.value,(yyval.node));
+ }
+ ;}
+ break;
+ case 219:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),333,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 220:
+ {
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(2) - (2)].node)),'!');
+ ;}
+ break;
+ case 221:
+ {
+ (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),'~');
+ ;}
+ break;
+ case 222:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),338,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 223:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),339,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 224:
+ {
+ (yyval.node) = logop_gen(parser, NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 225:
+ {
+ (yyval.node) = logop_gen(parser, NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 226:
+ {(parser->parser_in_defined) = 1;;}
+ break;
+ case 227:
+ {
+ (parser->parser_in_defined) = 0;
+ (yyval.node) = node_newnode(parser, (NODE_DEFINED), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 228:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (6)].node)) = remove_begin((yyvsp[(1) - (6)].node)));
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(1) - (6)].node))), (VALUE)((yyvsp[(3) - (6)].node)), (VALUE)((yyvsp[(6) - (6)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (6)].node));
+ ;}
+ break;
+ case 229:
+ {
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ ;}
+ break;
+ case 230:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 232:
+ {
+ (yyval.node) = (yyvsp[(1) - (2)].node);
+ ;}
+ break;
+ case 233:
+ {
+ (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0), (VALUE)(0)));
+ ;}
+ break;
+ case 234:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 235:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 240:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 241:
+ {
+ (yyval.node) = arg_blk_pass((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 242:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
+ (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 243:
+ {
+ (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0), (VALUE)(0)));
+ (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(4) - (4)].node));
+ ;}
+ break;
+ case 245:
+ {
+ (yyval.num) = (parser->parser_cmdarg_stack);
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((1)&1));
+ ;}
+ break;
+ case 246:
+ {
+ (parser->parser_cmdarg_stack) = (yyvsp[(1) - (2)].num);
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 247:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_BLOCK_PASS), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0));
+ ;}
+ break;
+ case 248:
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 249:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 250:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 251:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 252:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_SPLAT), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 253:
+ {
+ NODE *n1;
+ if ((n1 = splat_array((yyvsp[(1) - (3)].node))) != 0) {
+ (yyval.node) = list_append_gen(parser,n1,(yyvsp[(3) - (3)].node));
+ }
+ else {
+ (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+ }
+ ;}
+ break;
+ case 254:
+ {
+ NODE *n1;
+ if ((((int) (((((struct RNode*)((yyvsp[(4) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) && (n1 = splat_array((yyvsp[(1) - (4)].node))) != 0) {
+ (yyval.node) = list_concat_gen(parser,n1,(yyvsp[(4) - (4)].node));
+ }
+ else {
+ (yyval.node) = arg_concat_gen(parser,(yyvsp[(1) - (4)].node),(yyvsp[(4) - (4)].node));
+ }
+ ;}
+ break;
+ case 255:
+ {
+ NODE *n1;
+ if ((n1 = splat_array((yyvsp[(1) - (3)].node))) != 0) {
+ (yyval.node) = list_append_gen(parser,n1,(yyvsp[(3) - (3)].node));
+ }
+ else {
+ (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+ }
+ ;}
+ break;
+ case 256:
+ {
+ NODE *n1;
+ if (((int) (((((struct RNode*)((yyvsp[(4) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY &&
+ (n1 = splat_array((yyvsp[(1) - (4)].node))) != 0) {
+ (yyval.node) = list_concat_gen(parser,n1,(yyvsp[(4) - (4)].node));
+ }
+ else {
+ (yyval.node) = arg_concat_gen(parser,(yyvsp[(1) - (4)].node),(yyvsp[(4) - (4)].node));
+ }
+ ;}
+ break;
+ case 257:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_SPLAT), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 266:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 267:
+ {
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 268:
+ {
+ if ((yyvsp[(3) - (4)].node) == ((void *)0)) {
+ (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ if (((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_RESCUE ||
+ ((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ENSURE)
+ ((struct RNode*)((yyvsp[(3) - (4)].node)))->flags=((((struct RNode*)((yyvsp[(3) - (4)].node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (4)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0));
+ }
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (4)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ ;}
+ break;
+ case 269:
+ {(parser->parser_lex_state) = EXPR_ENDARG;;}
+ break;
+ case 270:
+ {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "(...) interpreted as grouped expression");
+ (yyval.node) = (yyvsp[(2) - (4)].node);
+ ;}
+ break;
+ case 271:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 272:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 273:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 274:
+ {
+ if ((yyvsp[(2) - (3)].node) == 0) {
+ (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ }
+ ;}
+ break;
+ case 275:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(2) - (3)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 276:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_RETURN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 277:
+ {
+ (yyval.node) = new_yield_gen(parser, (yyvsp[(3) - (4)].node));
+ ;}
+ break;
+ case 278:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_YIELD), (VALUE)(0), (VALUE)(0), (VALUE)(((VALUE)RUBY_Qfalse)));
+ ;}
+ break;
+ case 279:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_YIELD), (VALUE)(0), (VALUE)(0), (VALUE)(((VALUE)RUBY_Qfalse)));
+ ;}
+ break;
+ case 280:
+ {(parser->parser_in_defined) = 1;;}
+ break;
+ case 281:
+ {
+ (parser->parser_in_defined) = 0;
+ (yyval.node) = node_newnode(parser, (NODE_DEFINED), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 282:
+ {
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(3) - (4)].node)),'!');
+ ;}
+ break;
+ case 283:
+ {
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0))),'!');
+ ;}
+ break;
+ case 284:
+ {
+ (yyvsp[(2) - (2)].node)->u3.node = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)(0));
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ fixpos((yyvsp[(2) - (2)].node)->u3.node, (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 286:
+ {
+ block_dup_check_gen(parser,(yyvsp[(1) - (2)].node)->u3.node,(yyvsp[(2) - (2)].node));
+ (yyvsp[(2) - (2)].node)->u3.node = (yyvsp[(1) - (2)].node);
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ fixpos((yyval.node), (yyvsp[(1) - (2)].node));
+ ;}
+ break;
+ case 287:
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 288:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(2) - (6)].node))), (VALUE)((yyvsp[(4) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (6)].node));
+ ;}
+ break;
+ case 289:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(2) - (6)].node))), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)((yyvsp[(4) - (6)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (6)].node));
+ ;}
+ break;
+ case 290:
+ {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
+ break;
+ case 291:
+ {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
+ break;
+ case 292:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (7)].node))), (VALUE)((yyvsp[(6) - (7)].node)), (VALUE)(1));
+ fixpos((yyval.node), (yyvsp[(3) - (7)].node));
+ ;}
+ break;
+ case 293:
+ {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
+ break;
+ case 294:
+ {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
+ break;
+ case 295:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (7)].node))), (VALUE)((yyvsp[(6) - (7)].node)), (VALUE)(1));
+ fixpos((yyval.node), (yyvsp[(3) - (7)].node));
+ ;}
+ break;
+ case 296:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CASE), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)(0));
+ fixpos((yyval.node), (yyvsp[(2) - (5)].node));
+ ;}
+ break;
+ case 297:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CASE), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0));
+ ;}
+ break;
+ case 298:
+ {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
+ break;
+ case 299:
+ {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
+ break;
+ case 300:
+ {
+ ID id = internal_id_gen(parser);
+ ID *tbl = (ID*)ruby_xmalloc2((2),sizeof(ID));
+ NODE *m = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ NODE *args, *scope;
+ if (((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_MASGN) {
+ NODE *one = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(1))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
+ NODE *zero = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
+ m->u3.node = block_append_gen(parser,node_newnode(parser, (NODE_IF), (VALUE)(node_newnode(parser, (NODE_AND), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))), (VALUE)((__builtin_constant_p("length") ? __extension__ (rb_intern2("length", strlen("length"))) : (rb_intern)("length"))), (VALUE)(0))), (VALUE)((__builtin_constant_p("==") ? __extension__ (rb_intern2("==", strlen("=="))) : (rb_intern)("=="))), (VALUE)(one))), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))), (VALUE)((__builtin_constant_p("[]") ? __extension__ (rb_intern2("[]", strlen("[]"))) : (rb_intern)("[]"))), (VALUE)(zero))), (VALUE)((__builtin_constant_p("kind_of?") ? __extension__ (rb_intern2("kind_of?", strlen("kind_of?"))) : (rb_intern)("kind_of?"))), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(rb_cArray), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0))))), (VALUE)(0))), (VALUE)(node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))), (VALUE)((__builtin_constant_p("[]") ? __extension__ (rb_intern2("[]", strlen("[]"))) : (rb_intern)("[]"))), (VALUE)(zero))), (VALUE)(0))), (VALUE)(0)),node_assign_gen(parser, (yyvsp[(2) - (9)].node), node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))));
+ args = new_args_gen(parser, m,0,id,0,0);
+ }
+ else {
+ if (((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LASGN ||
+ ((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DASGN ||
+ ((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DASGN_CURR) {
+ (yyvsp[(2) - (9)].node)->u2.node = node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ m->u2.argc = 1;
+ m->u3.node = (yyvsp[(2) - (9)].node);
+ args = new_args_gen(parser, m,0,0,0,0);
+ }
+ else {
+ m->u3.node = node_assign_gen(parser, node_newnode(parser, (NODE_MASGN), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(2) - (9)].node)), (VALUE)(1), (VALUE)(0))), (VALUE)(0), (VALUE)(0)), node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0)));
+ args = new_args_gen(parser, m,0,id,0,0);
+ }
+ }
+ scope = node_newnode(parser, (NODE_SCOPE), (VALUE)(tbl), (VALUE)((yyvsp[(8) - (9)].node)), (VALUE)(args));
+ tbl[0] = 1; tbl[1] = id;
+ (yyval.node) = node_newnode(parser, (NODE_FOR), (VALUE)(0), (VALUE)(scope), (VALUE)((yyvsp[(5) - (9)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (9)].node));
+ ;}
+ break;
+ case 301:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "class definition in method body");
+ local_push_gen(parser,0);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 302:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CLASS), (VALUE)((yyvsp[(2) - (6)].node)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)(0))), (VALUE)(((yyvsp[(3) - (6)].node))));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(4) - (6)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ local_pop_gen(parser);
+ ;}
+ break;
+ case 303:
+ {
+ (yyval.num) = (parser->parser_in_def);
+ (parser->parser_in_def) = 0;
+ ;}
+ break;
+ case 304:
+ {
+ (yyval.num) = (parser->parser_in_single);
+ (parser->parser_in_single) = 0;
+ local_push_gen(parser,0);
+ ;}
+ break;
+ case 305:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_SCLASS), (VALUE)((yyvsp[(3) - (8)].node)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(7) - (8)].node)), (VALUE)(0))), (VALUE)(0));
+ fixpos((yyval.node), (yyvsp[(3) - (8)].node));
+ local_pop_gen(parser);
+ (parser->parser_in_def) = (yyvsp[(4) - (8)].num);
+ (parser->parser_in_single) = (yyvsp[(6) - (8)].num);
+ ;}
+ break;
+ case 306:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "module definition in method body");
+ local_push_gen(parser,0);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 307:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MODULE), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)(0))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(3) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ local_pop_gen(parser);
+ ;}
+ break;
+ case 308:
+ {
+ (yyval.id) = (parser->parser_cur_mid);
+ (parser->parser_cur_mid) = (yyvsp[(2) - (2)].id);
+ (parser->parser_in_def)++;
+ local_push_gen(parser,0);
+ ;}
+ break;
+ case 309:
+ {
+ NODE *body = remove_begin((yyvsp[(5) - (6)].node));
+ reduce_nodes_gen(parser,&body);
+ (yyval.node) = node_newnode(parser, (NODE_DEFN), (VALUE)(0), (VALUE)((yyvsp[(2) - (6)].id)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)(body), (VALUE)((yyvsp[(4) - (6)].node)))));
+ fixpos((yyval.node), (yyvsp[(4) - (6)].node));
+ fixpos((yyval.node)->u3.node, (yyvsp[(4) - (6)].node));
+ local_pop_gen(parser);
+ (parser->parser_in_def)--;
+ (parser->parser_cur_mid) = (yyvsp[(3) - (6)].id);
+ ;}
+ break;
+ case 310:
+ {(parser->parser_lex_state) = EXPR_FNAME;;}
+ break;
+ case 311:
+ {
+ (parser->parser_in_single)++;
+ (parser->parser_lex_state) = EXPR_END;
+ local_push_gen(parser,0);
+ ;}
+ break;
+ case 312:
+ {
+ NODE *body = remove_begin((yyvsp[(8) - (9)].node));
+ reduce_nodes_gen(parser,&body);
+ (yyval.node) = node_newnode(parser, (NODE_DEFS), (VALUE)((yyvsp[(2) - (9)].node)), (VALUE)((yyvsp[(5) - (9)].id)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)(body), (VALUE)((yyvsp[(7) - (9)].node)))));
+ fixpos((yyval.node), (yyvsp[(2) - (9)].node));
+ fixpos((yyval.node)->u3.node, (yyvsp[(2) - (9)].node));
+ local_pop_gen(parser);
+ (parser->parser_in_single)--;
+ ;}
+ break;
+ case 313:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_BREAK), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 314:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_NEXT), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 315:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_REDO), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 316:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_RETRY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 317:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 318:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "begin");
+ ;}
+ break;
+ case 319:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "if");
+ ;}
+ break;
+ case 320:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "unless");
+ ;}
+ break;
+ case 321:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "while");
+ ;}
+ break;
+ case 322:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "until");
+ ;}
+ break;
+ case 323:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "case");
+ ;}
+ break;
+ case 324:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "for");
+ ;}
+ break;
+ case 325:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "class");
+ ;}
+ break;
+ case 326:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "module");
+ ;}
+ break;
+ case 327:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "def");
+ ;}
+ break;
+ case 328:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_pop(parser, "end");
+ ;}
+ break;
+ case 335:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(2) - (5)].node))), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (5)].node));
+ ;}
+ break;
+ case 337:
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 340:
+ {
+ (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
+ ;}
+ break;
+ case 341:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 342:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 343:
+ {
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 344:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 345:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(4) - (4)].id), 0)));
+ ;}
+ break;
+ case 346:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(assignable_gen(parser, (yyvsp[(4) - (6)].id), 0)), (VALUE)((yyvsp[(6) - (6)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 347:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0), (VALUE)(-1));
+ ;}
+ break;
+ case 348:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 349:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(2) - (2)].id), 0)));
+ ;}
+ break;
+ case 350:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(assignable_gen(parser, (yyvsp[(2) - (4)].id), 0)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 351:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(-1));
+ ;}
+ break;
+ case 352:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 353:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].id),0,(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 354:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (8)].node),(yyvsp[(3) - (8)].node),(yyvsp[(5) - (8)].id),(yyvsp[(7) - (8)].node),(yyvsp[(8) - (8)].id));
+ ;}
+ break;
+ case 355:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node),0,0,(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 356:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),0,(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 357:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 358:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,1,0,0);
+ ;}
+ break;
+ case 359:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),0,(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 360:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,0,0,(yyvsp[(2) - (2)].id));
+ ;}
+ break;
+ case 361:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 362:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 363:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (2)].node),0,0,(yyvsp[(2) - (2)].id));
+ ;}
+ break;
+ case 364:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 365:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (2)].id),0,(yyvsp[(2) - (2)].id));
+ ;}
+ break;
+ case 366:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (4)].id),(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 367:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,0,0,(yyvsp[(1) - (1)].id));
+ ;}
+ break;
+ case 369:
+ {
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ ;}
+ break;
+ case 370:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 371:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 372:
+ {
+ (yyval.node) = (yyvsp[(2) - (4)].node);
+ ;}
+ break;
+ case 374:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 377:
+ {
+ new_bv_gen(parser, (yyvsp[(1) - (1)].id));
+ ;}
+ break;
+ case 378:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 379:
+ {
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_lpar_beg);
+ (parser->parser_lpar_beg) = ++(parser->parser_paren_nest);
+ ;}
+ break;
+ case 380:
+ {
+ (parser->parser_lpar_beg) = (yyvsp[(1) - (3)].num);
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ (yyval.node)->u2.node = node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)((yyvsp[(2) - (3)].node)->u1.node));
+ dyna_pop_gen(parser);
+ ;}
+ break;
+ case 381:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_LAMBDA), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 382:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_LAMBDA), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 383:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 384:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 385:
+ {
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 386:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ dyna_pop_gen(parser);
+ ;}
+ break;
+ case 387:
+ {
+ if (((int) (((((struct RNode*)((yyvsp[(1) - (2)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_YIELD) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "block given to yield");
+ }
+ else {
+ block_dup_check_gen(parser,(yyvsp[(1) - (2)].node)->u3.node,(yyvsp[(2) - (2)].node));
+ }
+ (yyvsp[(2) - (2)].node)->u3.node = (yyvsp[(1) - (2)].node);
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ fixpos((yyval.node), (yyvsp[(1) - (2)].node));
+ ;}
+ break;
+ case 388:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ ;}
+ break;
+ case 389:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ ;}
+ break;
+ case 390:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)((yyvsp[(2) - (2)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 391:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+ ;}
+ break;
+ case 392:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+ ;}
+ break;
+ case 393:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 394:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((__builtin_constant_p("call") ? __extension__ (rb_intern2("call", strlen("call"))) : (rb_intern)("call"))), (VALUE)((yyvsp[(3) - (3)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (3)].node));
+ ;}
+ break;
+ case 395:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((__builtin_constant_p("call") ? __extension__ (rb_intern2("call", strlen("call"))) : (rb_intern)("call"))), (VALUE)((yyvsp[(3) - (3)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (3)].node));
+ ;}
+ break;
+ case 396:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_SUPER), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
+ ;}
+ break;
+ case 397:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ZSUPER), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 398:
+ {
+ if ((yyvsp[(1) - (4)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
+ (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)(336), (VALUE)((yyvsp[(3) - (4)].node)));
+ else
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(336), (VALUE)((yyvsp[(3) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+ ;}
+ break;
+ case 399:
+ {
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 400:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ ((struct RNode*)((yyval.node)->u2.node))->flags=((((struct RNode*)((yyval.node)->u2.node))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ ((struct RNode*)((yyval.node)->u2.node->u2.node))->flags=((((struct RNode*)((yyval.node)->u2.node->u2.node))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ dyna_pop_gen(parser);
+ ;}
+ break;
+ case 401:
+ {
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 402:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ dyna_pop_gen(parser);
+ ;}
+ break;
+ case 403:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_WHEN), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)));
+ ;}
+ break;
+ case 406:
+ {
+ if ((yyvsp[(3) - (6)].node)) {
+ (yyvsp[(3) - (6)].node) = node_assign_gen(parser, (yyvsp[(3) - (6)].node), node_newnode(parser, (NODE_ERRINFO), (VALUE)(0), (VALUE)(0), (VALUE)(0)));
+ (yyvsp[(5) - (6)].node) = block_append_gen(parser,(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].node));
+ }
+ (yyval.node) = node_newnode(parser, (NODE_RESBODY), (VALUE)((yyvsp[(6) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)((yyvsp[(2) - (6)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (6)].node)?(yyvsp[(2) - (6)].node):(yyvsp[(5) - (6)].node));
+ ;}
+ break;
+ case 408:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 409:
+ {
+ if (!((yyval.node) = splat_array((yyvsp[(1) - (1)].node)))) (yyval.node) = (yyvsp[(1) - (1)].node);
+ ;}
+ break;
+ case 411:
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 413:
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 416:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (1)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 418:
+ {
+ NODE *node = (yyvsp[(1) - (1)].node);
+ if (!node) {
+ node = node_newnode(parser, (NODE_STR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ node = evstr2dstr_gen(parser,node);
+ }
+ (yyval.node) = node;
+ ;}
+ break;
+ case 421:
+ {
+ (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 422:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 423:
+ {
+ NODE *node = (yyvsp[(2) - (3)].node);
+ if (!node) {
+ node = node_newnode(parser, (NODE_XSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR:
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_XSTR)<<8)&(((VALUE)0x7f)<<8)));
+ break;
+ case NODE_DSTR:
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DXSTR)<<8)&(((VALUE)0x7f)<<8)));
+ break;
+ default:
+ node = node_newnode(parser, (NODE_DXSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node), (VALUE)(1), (VALUE)(0))));
+ break;
+ }
+ }
+ (yyval.node) = node;
+ ;}
+ break;
+ case 424:
+ {
+ int options = (yyvsp[(3) - (3)].num);
+ NODE *node = (yyvsp[(2) - (3)].node);
+ NODE *list;
+ if (!node) {
+ node = node_newnode(parser, (NODE_LIT), (VALUE)(reg_compile_gen(parser, rb_enc_str_new(0,0,parser->enc), options)), (VALUE)(0), (VALUE)(0));
+ }
+ else switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR:
+ {
+ VALUE src = node->u1.value;
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
+ node->u1.value = reg_compile_gen(parser, src, options);
+ }
+ break;
+ default:
+ node = node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node), (VALUE)(1), (VALUE)(0))));
+ case NODE_DSTR:
+ if (options & (1<<16)) {
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DREGX_ONCE)<<8)&(((VALUE)0x7f)<<8)));
+ }
+ else {
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DREGX)<<8)&(((VALUE)0x7f)<<8)));
+ }
+ node->u2.id = options & 0xff;
+ reg_fragment_check_gen(parser, node->u1.value, options);
+ for (list = node->u3.node; list; list = list->u3.node) {
+ if (((int) (((((struct RNode*)(list->u1.node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_STR) {
+ reg_fragment_check_gen(parser, list->u1.node->u1.value, options);
+ }
+ }
+ break;
+ }
+ (yyval.node) = node;
+ ;}
+ break;
+ case 425:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 426:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 427:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 428:
+ {
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),evstr2dstr_gen(parser,(yyvsp[(2) - (3)].node)));
+ ;}
+ break;
+ case 430:
+ {
+ (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 431:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 432:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 433:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 434:
+ {
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(2) - (3)].node));
+ ;}
+ break;
+ case 435:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 436:
+ {
+ (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 437:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 438:
+ {
+ (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 440:
+ {
+ (yyval.node) = (parser->parser_lex_strterm);
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_state) = EXPR_BEG;
+ ;}
+ break;
+ case 441:
+ {
+ (parser->parser_lex_strterm) = (yyvsp[(2) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_EVSTR), (VALUE)(0), (VALUE)(((yyvsp[(3) - (3)].node))), (VALUE)(0));
+ ;}
+ break;
+ case 442:
+ {
+ (yyval.node) = (parser->parser_lex_strterm);
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_state) = EXPR_BEG;
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
+ ;}
+ break;
+ case 443:
+ {
+ (parser->parser_lex_strterm) = (yyvsp[(2) - (4)].node);
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack) >> 1) | ((parser->parser_cond_stack) & 1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack) >> 1) | ((parser->parser_cmdarg_stack) & 1));
+ if ((yyvsp[(3) - (4)].node)) (yyvsp[(3) - (4)].node)->flags &= ~(((VALUE)1)<<7);
+ (yyval.node) = new_evstr_gen(parser,(yyvsp[(3) - (4)].node));
+ ;}
+ break;
+ case 444:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_GVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(rb_global_entry((yyvsp[(1) - (1)].id))));
+ ;}
+ break;
+ case 445:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_IVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 446:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 448:
+ {
+ (parser->parser_lex_state) = EXPR_END;
+ (yyval.id) = (yyvsp[(2) - (2)].id);
+ ;}
+ break;
+ case 453:
+ {
+ (parser->parser_lex_state) = EXPR_END;
+ if (!((yyval.node) = (yyvsp[(2) - (3)].node))) {
+ (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((__builtin_constant_p("") ? __extension__ (rb_intern2("", strlen(""))) : (rb_intern)("")))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ VALUE lit;
+ switch (((int) (((((struct RNode*)((yyval.node))))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DSTR:
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DSYM)<<8)&(((VALUE)0x7f)<<8)));
+ break;
+ case NODE_STR:
+ lit = (yyval.node)->u1.value;
+ (yyval.node)->u1.value = (((VALUE)(rb_intern_str(lit))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG);
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
+ break;
+ default:
+ (yyval.node) = node_newnode(parser, (NODE_DSYM), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyval.node)), (VALUE)(1), (VALUE)(0))));
+ break;
+ }
+ }
+ ;}
+ break;
+ case 456:
+ {
+ (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 457:
+ {
+ (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 463:
+ {(yyval.id) = 289;;}
+ break;
+ case 464:
+ {(yyval.id) = 288;;}
+ break;
+ case 465:
+ {(yyval.id) = 290;;}
+ break;
+ case 466:
+ {(yyval.id) = 291;;}
+ break;
+ case 467:
+ {(yyval.id) = 305;;}
+ break;
+ case 468:
+ {(yyval.id) = 304;;}
+ break;
+ case 469:
+ {(yyval.id) = 306;;}
+ break;
+ case 470:
+ {
+ if (!((yyval.node) = gettable_gen(parser,(yyvsp[(1) - (1)].id)))) (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 471:
+ {
+ (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
+ ;}
+ break;
+ case 474:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 475:
+ {
+ (parser->parser_lex_state) = EXPR_BEG;
+ ;}
+ break;
+ case 476:
+ {
+ (yyval.node) = (yyvsp[(3) - (4)].node);
+ ;}
+ break;
+ case 477:
+ {
+ (yyerrstatus = 0);
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 478:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ (parser->parser_lex_state) = EXPR_BEG;
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ ;}
+ break;
+ case 479:
+ {
+ (yyval.node) = (yyvsp[(1) - (2)].node);
+ ;}
+ break;
+ case 480:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].id),0,(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 481:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (8)].node),(yyvsp[(3) - (8)].node),(yyvsp[(5) - (8)].id),(yyvsp[(7) - (8)].node),(yyvsp[(8) - (8)].id));
+ ;}
+ break;
+ case 482:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node),0,0,(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 483:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),0,(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 484:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 485:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),0,(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 486:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,0,0,(yyvsp[(2) - (2)].id));
+ ;}
+ break;
+ case 487:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 488:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 489:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (2)].node),0,0,(yyvsp[(2) - (2)].id));
+ ;}
+ break;
+ case 490:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 491:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (2)].id),0,(yyvsp[(2) - (2)].id));
+ ;}
+ break;
+ case 492:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (4)].id),(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 493:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,0,0,(yyvsp[(1) - (1)].id));
+ ;}
+ break;
+ case 494:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,0,0,0);
+ ;}
+ break;
+ case 495:
+ {
+ parser_yyerror(parser, "formal argument cannot be a constant");
+ (yyval.id) = 0;
+ ;}
+ break;
+ case 496:
+ {
+ parser_yyerror(parser, "formal argument cannot be an instance variable");
+ (yyval.id) = 0;
+ ;}
+ break;
+ case 497:
+ {
+ parser_yyerror(parser, "formal argument cannot be a global variable");
+ (yyval.id) = 0;
+ ;}
+ break;
+ case 498:
+ {
+ parser_yyerror(parser, "formal argument cannot be a class variable");
+ (yyval.id) = 0;
+ ;}
+ break;
+ case 500:
+ {
+ if (!((((yyvsp[(1) - (1)].id))>376)&&(((yyvsp[(1) - (1)].id))&0x07)==0x00))
+ parser_yyerror(parser, "formal argument must be local variable");
+ shadowing_lvar_gen(parser, (yyvsp[(1) - (1)].id));
+ (yyval.id) = (yyvsp[(1) - (1)].id);
+ ;}
+ break;
+ case 501:
+ {
+ arg_var_gen(parser, (yyvsp[(1) - (1)].id));
+ (yyval.node) = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 502:
+ {
+ ID tid = internal_id_gen(parser);
+ arg_var_gen(parser, tid);
+ if (dyna_in_block_gen(parser)) {
+ (yyvsp[(2) - (3)].node)->u2.node = node_newnode(parser, (NODE_DVAR), (VALUE)(tid), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ (yyvsp[(2) - (3)].node)->u2.node = node_newnode(parser, (NODE_LVAR), (VALUE)(tid), (VALUE)(0), (VALUE)(0));
+ }
+ (yyval.node) = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(tid), (VALUE)(1), (VALUE)(0));
+ (yyval.node)->u3.node = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 504:
+ {
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ (yyval.node)->u2.argc++;
+ (yyval.node)->u3.node = block_append_gen(parser,(yyval.node)->u3.node,(yyvsp[(3) - (3)].node)->u3.node);
+ rb_gc_force_recycle((VALUE)(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 505:
+ {
+ if (!((((yyvsp[(1) - (3)].id))>376)&&(((yyvsp[(1) - (3)].id))&0x07)==0x00))
+ parser_yyerror(parser, "formal argument must be local variable");
+ shadowing_lvar_gen(parser, (yyvsp[(1) - (3)].id));
+ arg_var_gen(parser, (yyvsp[(1) - (3)].id));
+ (yyval.node) = node_newnode(parser, (NODE_OPT_ARG), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].node))), (VALUE)(0));
+ ;}
+ break;
+ case 506:
+ {
+ if (!((((yyvsp[(1) - (3)].id))>376)&&(((yyvsp[(1) - (3)].id))&0x07)==0x00))
+ parser_yyerror(parser, "formal argument must be local variable");
+ shadowing_lvar_gen(parser, (yyvsp[(1) - (3)].id));
+ arg_var_gen(parser, (yyvsp[(1) - (3)].id));
+ (yyval.node) = node_newnode(parser, (NODE_OPT_ARG), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].node))), (VALUE)(0));
+ ;}
+ break;
+ case 507:
+ {
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ ;}
+ break;
+ case 508:
+ {
+ NODE *opts = (yyvsp[(1) - (3)].node);
+ while (opts->u3.node) {
+ opts = opts->u3.node;
+ }
+ opts->u3.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ ;}
+ break;
+ case 509:
+ {
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ ;}
+ break;
+ case 510:
+ {
+ NODE *opts = (yyvsp[(1) - (3)].node);
+ while (opts->u3.node) {
+ opts = opts->u3.node;
+ }
+ opts->u3.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ ;}
+ break;
+ case 513:
+ {
+ if (!((((yyvsp[(2) - (2)].id))>376)&&(((yyvsp[(2) - (2)].id))&0x07)==0x00))
+ parser_yyerror(parser, "rest argument must be local variable");
+ shadowing_lvar_gen(parser, (yyvsp[(2) - (2)].id));
+ arg_var_gen(parser, (yyvsp[(2) - (2)].id));
+ (yyval.id) = (yyvsp[(2) - (2)].id);
+ ;}
+ break;
+ case 514:
+ {
+ (yyval.id) = internal_id_gen(parser);
+ arg_var_gen(parser, (yyval.id));
+ ;}
+ break;
+ case 517:
+ {
+ if (!((((yyvsp[(2) - (2)].id))>376)&&(((yyvsp[(2) - (2)].id))&0x07)==0x00))
+ parser_yyerror(parser, "block argument must be local variable");
+ else if (!dyna_in_block_gen(parser) && local_id_gen(parser, (yyvsp[(2) - (2)].id)))
+ parser_yyerror(parser, "duplicated block argument name");
+ shadowing_lvar_gen(parser, (yyvsp[(2) - (2)].id));
+ arg_var_gen(parser, (yyvsp[(2) - (2)].id));
+ (yyval.id) = (yyvsp[(2) - (2)].id);
+ ;}
+ break;
+ case 518:
+ {
+ (yyval.id) = (yyvsp[(2) - (2)].id);
+ ;}
+ break;
+ case 519:
+ {
+ (yyval.id) = 0;
+ ;}
+ break;
+ case 520:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 521:
+ {(parser->parser_lex_state) = EXPR_BEG;;}
+ break;
+ case 522:
+ {
+ if ((yyvsp[(3) - (4)].node) == 0) {
+ parser_yyerror(parser, "can't define singleton method for ().");
+ }
+ else {
+ switch (((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR:
+ case NODE_DSTR:
+ case NODE_XSTR:
+ case NODE_DXSTR:
+ case NODE_DREGX:
+ case NODE_LIT:
+ case NODE_ARRAY:
+ case NODE_ZARRAY:
+ parser_yyerror(parser, "can't define singleton method for literals");
+ default:
+ value_expr_gen(parser, ((yyvsp[(3) - (4)].node)) = remove_begin((yyvsp[(3) - (4)].node)));
+ break;
+ }
+ }
+ (yyval.node) = (yyvsp[(3) - (4)].node);
+ ;}
+ break;
+ case 524:
+ {
+ (yyval.node) = (yyvsp[(1) - (2)].node);
+ ;}
+ break;
+ case 526:
+ {
+ (yyval.node) = list_concat_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 527:
+ {
+ (yyval.node) = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1), (VALUE)(0)),(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 528:
+ {
+ (yyval.node) = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (2)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0)),(yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 550:
+ {(yyerrstatus = 0);;}
+ break;
+ case 553:
+ {(yyerrstatus = 0);;}
+ break;
+ case 554:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ default: break;
+ }
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "-> $$ ="); yy_symbol_print (stderr, yyr1[yyn], &yyval, parser); fprintf (stderr, "\n"); } } while ((0));
+ (yyvsp -= (yylen), yyssp -= (yylen));
+ yylen = 0;
+ do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
+ *++yyvsp = yyval;
+ yyn = yyr1[yyn];
+ yystate = yypgoto[yyn - 149] + *yyssp;
+ if (0 <= yystate && yystate <= 10225 && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - 149];
+ goto yynewstate;
+yyerrlab:
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+ {
+ unsigned int yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < ((unsigned int) -1))
+ {
+ unsigned int yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= ((unsigned int) -1)))
+ yyalloc = ((unsigned int) -1);
+ if (yymsg != yymsgbuf)
+ rb_parser_free(parser, yymsg);
+ yymsg = (char *) rb_parser_malloc(parser, yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ parser_yyerror (parser, yymsg);
+ }
+ else
+ {
+ parser_yyerror (parser, "syntax error");
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+ }
+ if (yyerrstatus == 3)
+ {
+ if (yychar <= 0)
+ {
+ if (yychar == 0)
+ goto yyabortlab;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval, parser);
+ yychar = (-2);
+ }
+ }
+ goto yyerrlab1;
+yyerrorlab:
+ if ( 0)
+ goto yyerrorlab;
+ (yyvsp -= (yylen), yyssp -= (yylen));
+ yylen = 0;
+ do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
+ yystate = *yyssp;
+ goto yyerrlab1;
+yyerrlab1:
+ yyerrstatus = 3;
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (yyn != -747)
+ {
+ yyn += 1;
+ if (0 <= yyn && yyn <= 10225 && yycheck[yyn] == 1)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+ if (yyssp == yyss)
+ goto yyabortlab;
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp, parser);
+ (yyvsp -= (1), yyssp -= (1));
+ yystate = *yyssp;
+ do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
+ }
+ if (yyn == 3)
+ goto yyacceptlab;
+ *++yyvsp = yylval;
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Shifting"); yy_symbol_print (stderr, yystos[yyn], yyvsp, parser); fprintf (stderr, "\n"); } } while ((0));
+ yystate = yyn;
+ goto yynewstate;
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+yyexhaustedlab:
+ parser_yyerror (parser, "memory exhausted");
+ yyresult = 2;
+yyreturn:
+ if (yychar != 0 && yychar != (-2))
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval, parser);
+ (yyvsp -= (yylen), yyssp -= (yylen));
+ do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp, parser);
+ (yyvsp -= (1), yyssp -= (1));
+ }
+ if (yyss != yyssa)
+ rb_parser_free(parser, yyss);
+ if (yymsg != yymsgbuf)
+ rb_parser_free(parser, yymsg);
+ return (yyresult);
+}
+static int parser_regx_options(struct parser_params*);
+static int parser_tokadd_string(struct parser_params*,int,int,int,long*,rb_encoding**);
+static void parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc);
+static int parser_parse_string(struct parser_params*,NODE*);
+static int parser_here_document(struct parser_params*,NODE*);
+extern OnigEncoding OnigEncDefaultCharEncoding;
+unsigned long ruby_scan_oct(const char *, int, int *);
+unsigned long ruby_scan_hex(const char *, int, int *);
+void ruby_qsort(void *, const int, const int,
+ int (*)(const void *, const void *, void *), void *);
+void ruby_setenv(const char *, const char *);
+void ruby_unsetenv(const char *);
+char *ruby_strdup(const char *);
+char *ruby_getcwd(void);
+double ruby_strtod(const char *, char **);
+void ruby_each_words(const char *, void (*)(const char*, int, void*), void *);
+static int
+token_info_get_column(struct parser_params *parser, const char *token)
+{
+ int column = 1;
+ const char *p, *pend = (parser->parser_lex_p) - strlen(token);
+ for (p = (parser->parser_lex_pbeg); p < pend; p++) {
+ if (*p == '\t') {
+ column = (((column - 1) / 8) + 1) * 8;
+ }
+ column++;
+ }
+ return column;
+}
+static int
+token_info_has_nonspaces(struct parser_params *parser, const char *token)
+{
+ const char *p, *pend = (parser->parser_lex_p) - strlen(token);
+ for (p = (parser->parser_lex_pbeg); p < pend; p++) {
+ if (*p != ' ' && *p != '\t') {
+ return 1;
+ }
+ }
+ return 0;
+}
+static void
+token_info_push(struct parser_params *parser, const char *token)
+{
+ token_info *ptinfo;
+ if ((parser->parser_compile_for_eval)) return;
+ ptinfo = (token_info*)ruby_xmalloc(sizeof(token_info));
+ ptinfo->token = token;
+ ptinfo->linenum = (parser->parser_ruby_sourceline);
+ ptinfo->column = token_info_get_column(parser, token);
+ ptinfo->nonspc = token_info_has_nonspaces(parser, token);
+ ptinfo->next = parser->parser_token_info;
+ parser->parser_token_info = ptinfo;
+}
+static void
+token_info_pop(struct parser_params *parser, const char *token)
+{
+ int linenum;
+ token_info *ptinfo = parser->parser_token_info;
+ if (!ptinfo) return;
+ parser->parser_token_info = ptinfo->next;
+ if (token_info_get_column(parser, token) == ptinfo->column) {
+ goto finish;
+ }
+ linenum = (parser->parser_ruby_sourceline);
+ if (linenum == ptinfo->linenum) {
+ goto finish;
+ }
+ if (token_info_has_nonspaces(parser, token) || ptinfo->nonspc) {
+ goto finish;
+ }
+ rb_compile_warning((parser->parser_ruby_sourcefile), linenum,
+ "mismatched indentations at '%s' with '%s' at %d",
+ token, ptinfo->token, ptinfo->linenum);
+ finish:
+ ruby_xfree(ptinfo);
+}
+static int
+parser_yyerror(struct parser_params *parser, const char *msg)
+{
+ const int max_line_margin = 30;
+ const char *p, *pe;
+ char *buf;
+ int len, i;
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", msg);
+ p = (parser->parser_lex_p);
+ while ((parser->parser_lex_pbeg) <= p) {
+ if (*p == '\n') break;
+ p--;
+ }
+ p++;
+ pe = (parser->parser_lex_p);
+ while (pe < (parser->parser_lex_pend)) {
+ if (*pe == '\n') break;
+ pe++;
+ }
+ len = pe - p;
+ if (len > 4) {
+ char *p2;
+ const char *pre = "", *post = "";
+ if (len > max_line_margin * 2 + 10) {
+ if ((parser->parser_lex_p) - p > max_line_margin) {
+ p = (char *)onigenc_get_prev_char_head(rb_enc_get((parser->parser_lex_lastline)),(OnigUChar*)(p),(OnigUChar*)((parser->parser_lex_p) - max_line_margin),(OnigUChar*)(pe));
+ pre = "...";
+ }
+ if (pe - (parser->parser_lex_p) > max_line_margin) {
+ pe = (char *)onigenc_get_prev_char_head(rb_enc_get((parser->parser_lex_lastline)),(OnigUChar*)((parser->parser_lex_p)),(OnigUChar*)((parser->parser_lex_p) + max_line_margin),(OnigUChar*)(pe));
+ post = "...";
+ }
+ len = pe - p;
+ }
+ buf = (char*)__builtin_alloca (sizeof(char)*(len+2));
+ memcpy((buf), (p), sizeof(char)*(len));
+ buf[len] = '\0';
+ rb_compile_error_append("%s%s%s", pre, buf, post);
+ i = (parser->parser_lex_p) - p;
+ p2 = buf; pe = buf + len;
+ while (p2 < pe) {
+ if (*p2 != '\t') *p2 = ' ';
+ p2++;
+ }
+ buf[i] = '^';
+ buf[i+1] = '\0';
+ rb_compile_error_append("%s%s", pre, buf);
+ }
+ return 0;
+}
+static void parser_prepare(struct parser_params *parser);
+VALUE ruby_suppress_tracing(VALUE (*func)(VALUE, int), VALUE arg, int always);
+static VALUE
+debug_lines(const char *f)
+{
+ if (rb_const_defined_at(rb_cObject, (__builtin_constant_p("SCRIPT_LINES__") ? __extension__ (rb_intern2("SCRIPT_LINES__", strlen("SCRIPT_LINES__"))) : (rb_intern)("SCRIPT_LINES__")))) {
+ VALUE hash = rb_const_get_at(rb_cObject, (__builtin_constant_p("SCRIPT_LINES__") ? __extension__ (rb_intern2("SCRIPT_LINES__", strlen("SCRIPT_LINES__"))) : (rb_intern)("SCRIPT_LINES__")));
+ if (rb_type((VALUE)(hash)) == RUBY_T_HASH) {
+ VALUE fname = __extension__ ( { (__builtin_constant_p(f)) ? rb_str_new(f, strlen(f)) : rb_str_new_cstr(f); });
+ VALUE lines = rb_ary_new();
+ rb_hash_aset(hash, fname, lines);
+ return lines;
+ }
+ }
+ return 0;
+}
+static VALUE
+coverage(const char *f, int n)
+{
+ extern VALUE rb_get_coverages(void);
+ VALUE coverages = rb_get_coverages();
+ if ((((VALUE)(coverages) & ~((VALUE)RUBY_Qnil)) != 0) && ((struct RBasic*)(coverages))->klass == 0) {
+ VALUE fname = __extension__ ( { (__builtin_constant_p(f)) ? rb_str_new(f, strlen(f)) : rb_str_new_cstr(f); });
+ VALUE lines = rb_ary_new2(n);
+ int i;
+ ((struct RBasic*)(lines))->klass = 0;
+ for (i = 0; i < n; i++) ((((struct RBasic*)(lines))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RArray*)(lines))->as.ary : ((struct RArray*)(lines))->as.heap.ptr)[i] = ((VALUE)RUBY_Qnil);
+ ((struct RArray*)(lines))->as.heap.len = n;
+ rb_hash_aset(coverages, fname, lines);
+ return lines;
+ }
+ return 0;
+}
+static int
+e_option_supplied(struct parser_params *parser)
+{
+ if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((parser->parser_ruby_sourcefile)) && __builtin_constant_p ("-e") && (__s1_len = strlen ((parser->parser_ruby_sourcefile)), __s2_len = strlen ("-e"), (!((size_t)(const void *)(((parser->parser_ruby_sourcefile)) + 1) - (size_t)(const void *)((parser->parser_ruby_sourcefile)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("-e") + 1) - (size_t)(const void *)("-e") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e") : (__builtin_constant_p ((parser->parser_ruby_sourcefile)) && ((size_t)(const void *)(((parser->parser_ruby_sourcefile)) + 1) - (size_t)(const void *)((parser->parser_ruby_sourcefile)) == 1) && (__s1_len = strlen ((parser->parser_ruby_sourcefile)), __s1_len < 4) ? (__builtin_constant_p ("-e") && ((size_t)(const void *)(("-e") + 1) - (size_t)(const void *)("-e") == 1) ? __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("-e"); register int __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("-e") && ((size_t)(const void *)(("-e") + 1) - (size_t)(const void *)("-e") == 1) && (__s2_len = strlen ("-e"), __s2_len < 4) ? (__builtin_constant_p ((parser->parser_ruby_sourcefile)) && ((size_t)(const void *)(((parser->parser_ruby_sourcefile)) + 1) - (size_t)(const void *)((parser->parser_ruby_sourcefile)) == 1) ? __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("-e"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("-e"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("-e"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("-e"))[3]); } } __result; }))) : __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e")))); }) == 0)
+ return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+static VALUE
+yycompile0(VALUE arg, int tracing)
+{
+ int n;
+ NODE *tree;
+ struct parser_params *parser = (struct parser_params *)arg;
+ if (!(parser->parser_compile_for_eval) && rb_safe_level() == 0) {
+ (parser->debug_lines) = debug_lines((parser->parser_ruby_sourcefile));
+ if ((parser->debug_lines) && (parser->parser_ruby_sourceline) > 0) {
+ VALUE str = rb_enc_str_new(0,0,parser->enc);
+ n = (parser->parser_ruby_sourceline);
+ do {
+ rb_ary_push((parser->debug_lines), str);
+ } while (--n);
+ }
+ if (!e_option_supplied(parser)) {
+ (parser->coverage) = coverage((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline));
+ }
+ }
+ parser_prepare(parser);
+ (parser->parser_deferred_nodes) = 0;
+ n = ruby_yyparse((void*)parser);
+ (parser->debug_lines) = 0;
+ (parser->coverage) = 0;
+ (parser->parser_compile_for_eval) = 0;
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_p) = (parser->parser_lex_pbeg) = (parser->parser_lex_pend) = 0;
+ (parser->parser_lex_lastline) = (parser->parser_lex_nextline) = 0;
+ if (parser->nerr) {
+ return 0;
+ }
+ tree = (parser->parser_eval_tree);
+ if (!tree) {
+ tree = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ if ((parser->parser_eval_tree_begin)) {
+ NODE *scope = (parser->parser_eval_tree);
+ if (scope) {
+ scope->u2.node = node_newnode(parser, (NODE_PRELUDE), (VALUE)((parser->parser_eval_tree_begin)), (VALUE)(scope->u2.node), (VALUE)(0));
+ }
+ tree = scope;
+ }
+ else {
+ tree = (parser->parser_eval_tree);
+ }
+ return (VALUE)tree;
+}
+static NODE*
+yycompile(struct parser_params *parser, const char *f, int line)
+{
+ (parser->parser_ruby_sourcefile) = ruby_strdup(f);
+ (parser->parser_ruby_sourceline) = line - 1;
+ return (NODE *)ruby_suppress_tracing(yycompile0, (VALUE)parser, ((VALUE)RUBY_Qtrue));
+}
+static VALUE
+lex_get_str(struct parser_params *parser, VALUE s)
+{
+ char *beg, *end, *pend;
+ beg = (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr);
+ if ((parser->parser_lex_gets_ptr)) {
+ if ((!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(s))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(s))->as.heap.len) == (parser->parser_lex_gets_ptr)) return ((VALUE)RUBY_Qnil);
+ beg += (parser->parser_lex_gets_ptr);
+ }
+ pend = (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr) + (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(s))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(s))->as.heap.len);
+ end = beg;
+ while (end < pend) {
+ if (*end++ == '\n') break;
+ }
+ (parser->parser_lex_gets_ptr) = end - (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr);
+ return rb_enc_str_new(beg, end - beg, rb_enc_get(s));
+}
+static VALUE
+lex_getline(struct parser_params *parser)
+{
+ VALUE line = (*parser->parser_lex_gets)(parser, parser->parser_lex_input);
+ if ((parser->debug_lines) && !((VALUE)(line) == ((VALUE)RUBY_Qnil))) {
+ rb_ary_push((parser->debug_lines), line);
+ }
+ if ((parser->coverage) && !((VALUE)(line) == ((VALUE)RUBY_Qnil))) {
+ rb_ary_push((parser->coverage), ((VALUE)RUBY_Qnil));
+ }
+ return line;
+}
+NODE*
+rb_compile_string(const char *f, VALUE s, int line)
+{
+ VALUE volatile vparser = rb_parser_new();
+ return rb_parser_compile_string(vparser, f, s, line);
+}
+NODE*
+rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
+{
+ struct parser_params *parser;
+ NODE *node;
+ volatile VALUE tmp;
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ (parser->parser_lex_gets) = lex_get_str;
+ (parser->parser_lex_gets_ptr) = 0;
+ (parser->parser_lex_input) = s;
+ (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (parser->parser_lex_pend) = 0;
+ (parser->parser_compile_for_eval) = rb_parse_in_eval();
+ node = yycompile(parser, f, line);
+ tmp = vparser;
+ return node;
+}
+NODE*
+rb_compile_cstr(const char *f, const char *s, int len, int line)
+{
+ return rb_compile_string(f, rb_str_new(s, len), line);
+}
+NODE*
+rb_parser_compile_cstr(volatile VALUE vparser, const char *f, const char *s, int len, int line)
+{
+ return rb_parser_compile_string(vparser, f, rb_str_new(s, len), line);
+}
+static VALUE
+lex_io_gets(struct parser_params *parser, VALUE io)
+{
+ return rb_io_gets(io);
+}
+NODE*
+rb_compile_file(const char *f, VALUE file, int start)
+{
+ VALUE volatile vparser = rb_parser_new();
+ return rb_parser_compile_file(vparser, f, file, start);
+}
+NODE*
+rb_parser_compile_file(volatile VALUE vparser, const char *f, VALUE file, int start)
+{
+ struct parser_params *parser;
+ volatile VALUE tmp;
+ NODE *node;
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ (parser->parser_lex_gets) = lex_io_gets;
+ (parser->parser_lex_input) = file;
+ (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (parser->parser_lex_pend) = 0;
+ (parser->parser_compile_for_eval) = rb_parse_in_eval();
+ node = yycompile(parser, f, start);
+ tmp = vparser;
+ return node;
+}
+enum string_type {
+ str_squote = (0),
+ str_dquote = (0x02),
+ str_xquote = (0x02),
+ str_regexp = (0x04|0x01|0x02),
+ str_sword = (0x08),
+ str_dword = (0x08|0x02),
+ str_ssym = (0x10),
+ str_dsym = (0x10|0x02)
+};
+static VALUE
+parser_str_new(const char *p, long n, rb_encoding *enc, int func, rb_encoding *enc0)
+{
+ VALUE str;
+ str = rb_enc_str_new(p, n, enc);
+ if (!(func & 0x04) && ((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
+ if (rb_enc_str_coderange(str) == (((VALUE)1)<<(12 +8))) {
+ }
+ else if (enc0 == rb_usascii_encoding() && enc != rb_utf8_encoding()) {
+ rb_enc_associate(str, rb_ascii8bit_encoding());
+ }
+ }
+ return str;
+}
+static inline int
+parser_nextc(struct parser_params *parser)
+{
+ int c;
+ if ((parser->parser_lex_p) == (parser->parser_lex_pend)) {
+ VALUE v = (parser->parser_lex_nextline);
+ (parser->parser_lex_nextline) = 0;
+ if (!v) {
+ if (parser->eofp)
+ return -1;
+ if (!(parser->parser_lex_input) || ((VALUE)(v = lex_getline(parser)) == ((VALUE)RUBY_Qnil))) {
+ parser->eofp = ((VALUE)RUBY_Qtrue);
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ return -1;
+ }
+ }
+ {
+ if ((parser->parser_heredoc_end) > 0) {
+ (parser->parser_ruby_sourceline) = (parser->parser_heredoc_end);
+ (parser->parser_heredoc_end) = 0;
+ }
+ (parser->parser_ruby_sourceline)++;
+ parser->line_count++;
+ (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (!(((struct RBasic*)(v))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(v))->as.ary : ((struct RString*)(v))->as.heap.ptr);
+ (parser->parser_lex_pend) = (parser->parser_lex_p) + (!(((struct RBasic*)(v))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(v))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(v))->as.heap.len);
+ (parser->parser_lex_lastline) = v;
+ }
+ }
+ c = (unsigned char)*(parser->parser_lex_p)++;
+ if (c == '\r' && ((parser->parser_lex_p) < (parser->parser_lex_pend) && ('\n') == *(parser->parser_lex_p))) {
+ (parser->parser_lex_p)++;
+ c = '\n';
+ }
+ return c;
+}
+static void
+parser_pushback(struct parser_params *parser, int c)
+{
+ if (c == -1) return;
+ (parser->parser_lex_p)--;
+ if ((parser->parser_lex_p) > (parser->parser_lex_pbeg) && (parser->parser_lex_p)[0] == '\n' && (parser->parser_lex_p)[-1] == '\r') {
+ (parser->parser_lex_p)--;
+ }
+}
+static char*
+parser_newtok(struct parser_params *parser)
+{
+ (parser->parser_tokidx) = 0;
+ if (!(parser->parser_tokenbuf)) {
+ (parser->parser_toksiz) = 60;
+ (parser->parser_tokenbuf) = (char*)ruby_xmalloc2((60),sizeof(char));
+ }
+ if ((parser->parser_toksiz) > 4096) {
+ (parser->parser_toksiz) = 60;
+ ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),(60),sizeof(char));
+ }
+ return (parser->parser_tokenbuf);
+}
+static char *
+parser_tokspace(struct parser_params *parser, int n)
+{
+ (parser->parser_tokidx) += n;
+ if ((parser->parser_tokidx) >= (parser->parser_toksiz)) {
+ do {(parser->parser_toksiz) *= 2;} while ((parser->parser_toksiz) < (parser->parser_tokidx));
+ ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),((parser->parser_toksiz)),sizeof(char));
+ }
+ return &(parser->parser_tokenbuf)[(parser->parser_tokidx)-n];
+}
+static void
+parser_tokadd(struct parser_params *parser, int c)
+{
+ (parser->parser_tokenbuf)[(parser->parser_tokidx)++] = (char)c;
+ if ((parser->parser_tokidx) >= (parser->parser_toksiz)) {
+ (parser->parser_toksiz) *= 2;
+ ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),((parser->parser_toksiz)),sizeof(char));
+ }
+}
+static int
+parser_tok_hex(struct parser_params *parser, int *numlen)
+{
+ int c;
+ c = ruby_scan_hex((parser->parser_lex_p), 2, numlen);
+ if (!*numlen) {
+ parser_yyerror(parser, "invalid hex escape");
+ return 0;
+ }
+ (parser->parser_lex_p) += *numlen;
+ return c;
+}
+static int
+parser_tokadd_utf8(struct parser_params *parser, rb_encoding **encp,
+ int string_literal, int symbol_literal, int regexp_literal)
+{
+ int codepoint;
+ int numlen;
+ if (regexp_literal) { parser_tokadd(parser, '\\'); parser_tokadd(parser, 'u'); }
+ if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('{') == *(parser->parser_lex_p))) {
+ do {
+ if (regexp_literal) { parser_tokadd(parser, *(parser->parser_lex_p)); }
+ parser_nextc(parser);
+ codepoint = ruby_scan_hex((parser->parser_lex_p), 6, &numlen);
+ if (numlen == 0) {
+ parser_yyerror(parser, "invalid Unicode escape");
+ return 0;
+ }
+ if (codepoint > 0x10ffff) {
+ parser_yyerror(parser, "invalid Unicode codepoint (too large)");
+ return 0;
+ }
+ (parser->parser_lex_p) += numlen;
+ if (regexp_literal) {
+ memcpy(parser_tokspace(parser, numlen), (parser->parser_lex_p) - (numlen), (numlen));
+ }
+ else if (codepoint >= 0x80) {
+ *encp = (parser->utf8 ? parser->utf8 : (parser->utf8 = rb_utf8_encoding()));
+ if (string_literal) parser_tokaddmbc(parser, codepoint, *encp);
+ }
+ else if (string_literal) {
+ if (codepoint == 0 && symbol_literal) {
+ parser_yyerror(parser, "symbol cannot contain '\\u{0}'");
+ return 0;
+ }
+ parser_tokadd(parser, codepoint);
+ }
+ } while (string_literal && (((parser->parser_lex_p) < (parser->parser_lex_pend) && (' ') == *(parser->parser_lex_p)) || ((parser->parser_lex_p) < (parser->parser_lex_pend) && ('\t') == *(parser->parser_lex_p))));
+ if (!((parser->parser_lex_p) < (parser->parser_lex_pend) && ('}') == *(parser->parser_lex_p))) {
+ parser_yyerror(parser, "unterminated Unicode escape");
+ return 0;
+ }
+ if (regexp_literal) { parser_tokadd(parser, '}'); }
+ parser_nextc(parser);
+ }
+ else {
+ codepoint = ruby_scan_hex((parser->parser_lex_p), 4, &numlen);
+ if (numlen < 4) {
+ parser_yyerror(parser, "invalid Unicode escape");
+ return 0;
+ }
+ (parser->parser_lex_p) += 4;
+ if (regexp_literal) {
+ memcpy(parser_tokspace(parser, 4), (parser->parser_lex_p) - (4), (4));
+ }
+ else if (codepoint >= 0x80) {
+ *encp = (parser->utf8 ? parser->utf8 : (parser->utf8 = rb_utf8_encoding()));
+ if (string_literal) parser_tokaddmbc(parser, codepoint, *encp);
+ }
+ else if (string_literal) {
+ if (codepoint == 0 && symbol_literal) {
+ parser_yyerror(parser, "symbol cannot contain '\\u0000'");
+ return 0;
+ }
+ parser_tokadd(parser, codepoint);
+ }
+ }
+ return codepoint;
+}
+static int
+parser_read_escape(struct parser_params *parser, int flags,
+ rb_encoding **encp)
+{
+ int c;
+ int numlen;
+ switch (c = parser_nextc(parser)) {
+ case '\\':
+ return c;
+ case 'n':
+ return '\n';
+ case 't':
+ return '\t';
+ case 'r':
+ return '\r';
+ case 'f':
+ return '\f';
+ case 'v':
+ return '\13';
+ case 'a':
+ return '\007';
+ case 'e':
+ return 033;
+ case '0': case '1': case '2': case '3':
+ case '4': case '5': case '6': case '7':
+ if (flags & (1|2)) goto eof;
+ {
+ int numlen;
+ parser_pushback(parser, c);
+ c = ruby_scan_oct((parser->parser_lex_p), 3, &numlen);
+ (parser->parser_lex_p) += numlen;
+ }
+ return c;
+ case 'x':
+ if (flags & (1|2)) goto eof;
+ c = parser_tok_hex(parser, &numlen);
+ if (numlen == 0) return 0;
+ return c;
+ case 'b':
+ return '\010';
+ case 's':
+ return ' ';
+ case 'M':
+ if (flags & 2) goto eof;
+ if ((c = parser_nextc(parser)) != '-') {
+ parser_pushback(parser, c);
+ goto eof;
+ }
+ if ((c = parser_nextc(parser)) == '\\') {
+ return parser_read_escape(parser, flags|2, encp) | 0x80;
+ }
+ else if (c == -1 || !((unsigned long)((unsigned char)(c)) < 128)) goto eof;
+ else {
+ return ((c & 0xff) | 0x80);
+ }
+ case 'C':
+ if ((c = parser_nextc(parser)) != '-') {
+ parser_pushback(parser, c);
+ goto eof;
+ }
+ case 'c':
+ if (flags & 1) goto eof;
+ if ((c = parser_nextc(parser))== '\\') {
+ c = parser_read_escape(parser, flags|1, encp);
+ }
+ else if (c == '?')
+ return 0177;
+ else if (c == -1 || !((unsigned long)((unsigned char)(c)) < 128)) goto eof;
+ return c & 0x9f;
+ eof:
+ case -1:
+ parser_yyerror(parser, "Invalid escape character syntax");
+ return '\0';
+ default:
+ return c;
+ }
+}
+static void
+parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc)
+{
+ int len = rb_enc_codelen(c, enc);
+ (enc)->code_to_mbc(c,(OnigUChar*)(parser_tokspace(parser, len)),enc);
+}
+static int
+parser_tokadd_escape(struct parser_params *parser, rb_encoding **encp)
+{
+ int c;
+ int flags = 0;
+ first:
+ switch (c = parser_nextc(parser)) {
+ case '\n':
+ return 0;
+ case '0': case '1': case '2': case '3':
+ case '4': case '5': case '6': case '7':
+ if (flags & (1|2)) goto eof;
+ {
+ int numlen;
+ int oct;
+ oct = ruby_scan_oct(--(parser->parser_lex_p), 3, &numlen);
+ if (numlen == 0) goto eof;
+ (parser->parser_lex_p) += numlen;
+ memcpy(parser_tokspace(parser, numlen + 1), (parser->parser_lex_p) - (numlen + 1), (numlen + 1));
+ }
+ return 0;
+ case 'x':
+ if (flags & (1|2)) goto eof;
+ {
+ int numlen;
+ int hex;
+ hex = parser_tok_hex(parser, &numlen);
+ if (numlen == 0) goto eof;
+ memcpy(parser_tokspace(parser, numlen + 2), (parser->parser_lex_p) - (numlen + 2), (numlen + 2));
+ }
+ return 0;
+ case 'M':
+ if (flags & 2) goto eof;
+ if ((c = parser_nextc(parser)) != '-') {
+ parser_pushback(parser, c);
+ goto eof;
+ }
+ memcpy(parser_tokspace(parser, 3), (parser->parser_lex_p) - (3), (3));
+ flags |= 2;
+ goto escaped;
+ case 'C':
+ if (flags & 1) goto eof;
+ if ((c = parser_nextc(parser)) != '-') {
+ parser_pushback(parser, c);
+ goto eof;
+ }
+ memcpy(parser_tokspace(parser, 3), (parser->parser_lex_p) - (3), (3));
+ goto escaped;
+ case 'c':
+ if (flags & 1) goto eof;
+ memcpy(parser_tokspace(parser, 2), (parser->parser_lex_p) - (2), (2));
+ flags |= 1;
+ escaped:
+ if ((c = parser_nextc(parser)) == '\\') {
+ goto first;
+ }
+ else if (c == -1) goto eof;
+ parser_tokadd(parser, c);
+ return 0;
+ eof:
+ case -1:
+ parser_yyerror(parser, "Invalid escape character syntax");
+ return -1;
+ default:
+ parser_tokadd(parser, '\\');
+ parser_tokadd(parser, c);
+ }
+ return 0;
+}
+extern int rb_char_to_option_kcode(int c, int *option, int *kcode);
+static int
+parser_regx_options(struct parser_params *parser)
+{
+ int kcode = 0;
+ int options = 0;
+ int c, opt, kc;
+ parser_newtok(parser);
+ while (c = parser_nextc(parser), rb_isalpha((unsigned char)(c))) {
+ if (c == 'o') {
+ options |= (1<<16);
+ }
+ else if (rb_char_to_option_kcode(c, &opt, &kc)) {
+ options |= opt;
+ if (kc >= 0) kcode = c;
+ }
+ else {
+ parser_tokadd(parser, c);
+ }
+ }
+ parser_pushback(parser, c);
+ if ((parser->parser_tokidx)) {
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unknown regexp option%s - %s",
+ (parser->parser_tokidx) > 1 ? "s" : "", (parser->parser_tokenbuf));
+ }
+ return options | (((kcode)&0xff)<<8);
+}
+static void
+dispose_string(VALUE str)
+{
+ if (((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1)))
+ ruby_xfree((!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr));
+ rb_gc_force_recycle(str);
+}
+static int
+parser_tokadd_mbchar(struct parser_params *parser, int c)
+{
+ int len = rb_enc_precise_mbclen(((parser->parser_lex_p)-1),(parser->parser_lex_pend),parser->enc);
+ if (!(0 < (len))) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid multibyte char (%s)", (parser->enc->name));
+ return -1;
+ }
+ parser_tokadd(parser, c);
+ (parser->parser_lex_p) += --len;
+ if (len > 0) memcpy(parser_tokspace(parser, len), (parser->parser_lex_p) - (len), (len));
+ return c;
+}
+static int
+parser_tokadd_string(struct parser_params *parser,
+ int func, int term, int paren, long *nest,
+ rb_encoding **encp)
+{
+ int c;
+ int has_nonascii = 0;
+ rb_encoding *enc = *encp;
+ char *errbuf = 0;
+ static const char mixed_msg[] = "%s mixed within %s source";
+ while ((c = parser_nextc(parser)) != -1) {
+ if (paren && c == paren) {
+ ++*nest;
+ }
+ else if (c == term) {
+ if (!nest || !*nest) {
+ parser_pushback(parser, c);
+ break;
+ }
+ --*nest;
+ }
+ else if ((func & 0x02) && c == '#' && (parser->parser_lex_p) < (parser->parser_lex_pend)) {
+ int c2 = *(parser->parser_lex_p);
+ if (c2 == '$' || c2 == '@' || c2 == '{') {
+ parser_pushback(parser, c);
+ break;
+ }
+ }
+ else if (c == '\\') {
+ const char *beg = (parser->parser_lex_p) - 1;
+ c = parser_nextc(parser);
+ switch (c) {
+ case '\n':
+ if (func & 0x08) break;
+ if (func & 0x02) continue;
+ parser_tokadd(parser, '\\');
+ break;
+ case '\\':
+ if (func & 0x01) parser_tokadd(parser, c);
+ break;
+ case 'u':
+ if ((func & 0x02) == 0) {
+ parser_tokadd(parser, '\\');
+ break;
+ }
+ parser_tokadd_utf8(parser, &enc, 1,
+ func & 0x10,
+ func & 0x04);
+ if (has_nonascii && enc != *encp) {
+ do { const char *pos = (parser->parser_lex_p); (parser->parser_lex_p) = beg; if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); }; (parser->parser_lex_p) = pos; } while (0);
+ }
+ continue;
+ default:
+ if (func & 0x04) {
+ parser_pushback(parser, c);
+ if ((c = parser_tokadd_escape(parser, &enc)) < 0)
+ return -1;
+ if (has_nonascii && enc != *encp) {
+ do { const char *pos = (parser->parser_lex_p); (parser->parser_lex_p) = beg; if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); }; (parser->parser_lex_p) = pos; } while (0);
+ }
+ continue;
+ }
+ else if (func & 0x02) {
+ parser_pushback(parser, c);
+ if (func & 0x01) parser_tokadd(parser, '\\');
+ c = parser_read_escape(parser, 0, &enc);
+ }
+ else if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
+ }
+ else if (c != term && !(paren && c == paren)) {
+ parser_tokadd(parser, '\\');
+ }
+ }
+ }
+ else if (!((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
+ has_nonascii = 1;
+ if (enc != *encp) {
+ if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); };
+ continue;
+ }
+ if (parser_tokadd_mbchar(parser, c) == -1) return -1;
+ continue;
+ }
+ else if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
+ parser_pushback(parser, c);
+ break;
+ }
+ if (!c && (func & 0x10)) {
+ func &= ~0x10;
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "symbol cannot contain '\\0'");
+ continue;
+ }
+ if (c & 0x80) {
+ has_nonascii = 1;
+ if (enc != *encp) {
+ if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); };
+ continue;
+ }
+ }
+ parser_tokadd(parser, c);
+ }
+ *encp = enc;
+ return c;
+}
+static int
+parser_parse_string(struct parser_params *parser, NODE *quote)
+{
+ int func = quote->u1.id;
+ int term = ((signed short)(quote)->u2.id);
+ int paren = (char)((quote)->u2.id >> 8*2);
+ int c, space = 0;
+ rb_encoding *enc = parser->enc;
+ if (func == -1) return 361;
+ c = parser_nextc(parser);
+ if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
+ do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
+ space = 1;
+ }
+ if (c == term && !quote->u3.cnt) {
+ if (func & 0x08) {
+ quote->u1.id = -1;
+ return ' ';
+ }
+ if (!(func & 0x04)) return 361;
+ (*((YYSTYPE*)(parser->parser_yylval))).num = parser_regx_options(parser);
+ return 320;
+ }
+ if (space) {
+ parser_pushback(parser, c);
+ return ' ';
+ }
+ parser_newtok(parser);
+ if ((func & 0x02) && c == '#') {
+ switch (c = parser_nextc(parser)) {
+ case '$':
+ case '@':
+ parser_pushback(parser, c);
+ return 360;
+ case '{':
+ return 359;
+ }
+ parser_tokadd(parser, '#');
+ }
+ parser_pushback(parser, c);
+ if (parser_tokadd_string(parser,func,term,paren,"e->u3.cnt,&enc) == -1) {
+ (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(quote)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
+ if (func & 0x04) {
+ if (parser->eofp)
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated regexp meets end of file");
+ return 320;
+ }
+ else {
+ if (parser->eofp)
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated string meets end of file");
+ return 361;
+ }
+ }
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc)), (VALUE)(0), (VALUE)(0));
+ return 316;
+}
+static int
+parser_heredoc_identifier(struct parser_params *parser)
+{
+ int c = parser_nextc(parser), term, func = 0, len;
+ if (c == '-') {
+ c = parser_nextc(parser);
+ func = 0x20;
+ }
+ switch (c) {
+ case '\'':
+ func |= str_squote; goto quoted;
+ case '"':
+ func |= str_dquote; goto quoted;
+ case '`':
+ func |= str_xquote;
+ quoted:
+ parser_newtok(parser);
+ parser_tokadd(parser, func);
+ term = c;
+ while ((c = parser_nextc(parser)) != -1 && c != term) {
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ }
+ if (c == -1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated here document identifier");
+ return 0;
+ }
+ break;
+ default:
+ if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ parser_pushback(parser, c);
+ if (func & 0x20) {
+ parser_pushback(parser, '-');
+ }
+ return 0;
+ }
+ parser_newtok(parser);
+ term = '"';
+ parser_tokadd(parser, func |= str_dquote);
+ do {
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ } while ((c = parser_nextc(parser)) != -1 && (!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128))));
+ parser_pushback(parser, c);
+ break;
+ }
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ len = (parser->parser_lex_p) - (parser->parser_lex_pbeg);
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ARRAY, rb_enc_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),parser->enc), len, (parser->parser_lex_lastline));
+ ((struct RNode*)((parser->parser_lex_strterm)))->flags=((((struct RNode*)((parser->parser_lex_strterm)))->flags&~(-1<<(8 +7)))|((((parser->parser_ruby_sourceline))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ return term == '`' ? 355 : 354;
+}
+static void
+parser_heredoc_restore(struct parser_params *parser, NODE *here)
+{
+ VALUE line;
+ line = here->u3.value;
+ (parser->parser_lex_lastline) = line;
+ (parser->parser_lex_pbeg) = (!(((struct RBasic*)(line))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(line))->as.ary : ((struct RString*)(line))->as.heap.ptr);
+ (parser->parser_lex_pend) = (parser->parser_lex_pbeg) + (!(((struct RBasic*)(line))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(line))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(line))->as.heap.len);
+ (parser->parser_lex_p) = (parser->parser_lex_pbeg) + here->u2.argc;
+ (parser->parser_heredoc_end) = (parser->parser_ruby_sourceline);
+ (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(here)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
+ dispose_string(here->u1.value);
+ rb_gc_force_recycle((VALUE)here);
+}
+static int
+parser_whole_match_p(struct parser_params *parser,
+ const char *eos, int len, int indent)
+{
+ const char *p = (parser->parser_lex_pbeg);
+ int n;
+ if (indent) {
+ while (*p && rb_isspace((unsigned char)(*p))) p++;
+ }
+ n= (parser->parser_lex_pend) - (p + len);
+ if (n < 0 || (n > 0 && p[len] != '\n' && p[len] != '\r')) return ((VALUE)RUBY_Qfalse);
+ if ((__extension__ (__builtin_constant_p (len) && ((__builtin_constant_p (eos) && strlen (eos) < ((size_t) (len))) || (__builtin_constant_p (p) && strlen (p) < ((size_t) (len)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (eos) && __builtin_constant_p (p) && (__s1_len = strlen (eos), __s2_len = strlen (p), (!((size_t)(const void *)((eos) + 1) - (size_t)(const void *)(eos) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((p) + 1) - (size_t)(const void *)(p) == 1) || __s2_len >= 4)) ? __builtin_strcmp (eos, p) : (__builtin_constant_p (eos) && ((size_t)(const void *)((eos) + 1) - (size_t)(const void *)(eos) == 1) && (__s1_len = strlen (eos), __s1_len < 4) ? (__builtin_constant_p (p) && ((size_t)(const void *)((p) + 1) - (size_t)(const void *)(p) == 1) ? __builtin_strcmp (eos, p) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (p); register int __result = (((__const unsigned char *) (__const char *) (eos))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (eos))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (eos))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (eos))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (p) && ((size_t)(const void *)((p) + 1) - (size_t)(const void *)(p) == 1) && (__s2_len = strlen (p), __s2_len < 4) ? (__builtin_constant_p (eos) && ((size_t)(const void *)((eos) + 1) - (size_t)(const void *)(eos) == 1) ? __builtin_strcmp (eos, p) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (eos); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (p))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (p))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (p))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (p))[3]); } } __result; }))) : __builtin_strcmp (eos, p)))); }) : strncmp (eos, p, len))) == 0) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+static int
+parser_here_document(struct parser_params *parser, NODE *here)
+{
+ int c, func, indent = 0;
+ const char *eos, *p, *pend;
+ long len;
+ VALUE str = 0;
+ eos = (!(((struct RBasic*)(here->u1.value))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(here->u1.value))->as.ary : ((struct RString*)(here->u1.value))->as.heap.ptr);
+ len = (!(((struct RBasic*)(here->u1.value))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(here->u1.value))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(here->u1.value))->as.heap.len) - 1;
+ indent = (func = *eos++) & 0x20;
+ if ((c = parser_nextc(parser)) == -1) {
+ error:
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "can't find string \"%s\" anywhere before EOF", eos);
+ restore:
+ parser_heredoc_restore(parser,(parser->parser_lex_strterm));
+ (parser->parser_lex_strterm) = 0;
+ return 0;
+ }
+ if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1) && parser_whole_match_p(parser,eos,len,indent)) {
+ parser_heredoc_restore(parser,(parser->parser_lex_strterm));
+ return 361;
+ }
+ if (!(func & 0x02)) {
+ do {
+ p = (!(((struct RBasic*)((parser->parser_lex_lastline)))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)((parser->parser_lex_lastline)))->as.ary : ((struct RString*)((parser->parser_lex_lastline)))->as.heap.ptr);
+ pend = (parser->parser_lex_pend);
+ if (pend > p) {
+ switch (pend[-1]) {
+ case '\n':
+ if (--pend == p || pend[-1] != '\r') {
+ pend++;
+ break;
+ }
+ case '\r':
+ --pend;
+ }
+ }
+ if (str)
+ rb_str_cat(str, p, pend - p);
+ else
+ str = rb_enc_str_new((p),(pend - p),parser->enc);
+ if (pend < (parser->parser_lex_pend)) rb_str_cat(str, "\n", 1);
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ if (parser_nextc(parser) == -1) {
+ if (str) dispose_string(str);
+ goto error;
+ }
+ } while (!parser_whole_match_p(parser,eos,len,indent));
+ }
+ else {
+ rb_encoding *enc = parser->enc;
+ parser_newtok(parser);
+ if (c == '#') {
+ switch (c = parser_nextc(parser)) {
+ case '$':
+ case '@':
+ parser_pushback(parser, c);
+ return 360;
+ case '{':
+ return 359;
+ }
+ parser_tokadd(parser, '#');
+ }
+ do {
+ parser_pushback(parser, c);
+ if ((c = parser_tokadd_string(parser,func,'\n',0,((void *)0),&enc)) == -1) {
+ if (parser->eofp) goto error;
+ goto restore;
+ }
+ if (c != '\n') {
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc)), (VALUE)(0), (VALUE)(0));
+ return 316;
+ }
+ parser_tokadd(parser, parser_nextc(parser));
+ if ((c = parser_nextc(parser)) == -1) goto error;
+ } while (!parser_whole_match_p(parser,eos,len,indent));
+ str = parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc);
+ }
+ parser_heredoc_restore(parser,(parser->parser_lex_strterm));
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (-1), (0) | ((0) << (8 * 2)), 0);
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(str), (VALUE)(0), (VALUE)(0));
+ return 316;
+}
+struct kwtable {const char *name; int id[2]; enum lex_state_e state;};
+const struct kwtable *rb_reserved_word(const char *, unsigned int);
+struct kwtable;
+__inline
+static unsigned int
+hash (str, len)
+ register const char *str;
+ register unsigned int len;
+{
+ static const unsigned char asso_values[] =
+ {
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 26, 51, 51, 14, 51, 16, 8,
+ 11, 13, 51, 51, 51, 51, 10, 51, 13, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 11, 51, 13, 1, 26,
+ 4, 1, 8, 28, 51, 23, 51, 1, 1, 27,
+ 5, 19, 21, 51, 8, 3, 3, 11, 51, 21,
+ 24, 16, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51
+ };
+ register int hval = len;
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char)str[2]];
+ case 2:
+ case 1:
+ hval += asso_values[(unsigned char)str[0]];
+ break;
+ }
+ return hval + asso_values[(unsigned char)str[len - 1]];
+}
+__inline
+const struct kwtable *
+rb_reserved_word (str, len)
+ register const char *str;
+ register unsigned int len;
+{
+ static const struct kwtable wordlist[] =
+ {
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {"break", {276, 276}, EXPR_MID},
+ {"else", {270, 270}, EXPR_BEG},
+ {"nil", {289, 289}, EXPR_END},
+ {"ensure", {264, 264}, EXPR_BEG},
+ {"end", {265, 265}, EXPR_END},
+ {"then", {268, 268}, EXPR_BEG},
+ {"not", {294, 294}, EXPR_ARG},
+ {"false", {291, 291}, EXPR_END},
+ {"self", {288, 288}, EXPR_END},
+ {"elsif", {269, 269}, EXPR_VALUE},
+ {"rescue", {263, 299}, EXPR_MID},
+ {"true", {290, 290}, EXPR_END},
+ {"until", {274, 298}, EXPR_VALUE},
+ {"unless", {267, 296}, EXPR_VALUE},
+ {"return", {285, 285}, EXPR_MID},
+ {"def", {260, 260}, EXPR_FNAME},
+ {"and", {292, 292}, EXPR_VALUE},
+ {"do", {281, 281}, EXPR_BEG},
+ {"yield", {286, 286}, EXPR_ARG},
+ {"for", {275, 275}, EXPR_VALUE},
+ {"undef", {261, 261}, EXPR_FNAME},
+ {"or", {293, 293}, EXPR_VALUE},
+ {"in", {280, 280}, EXPR_VALUE},
+ {"when", {272, 272}, EXPR_VALUE},
+ {"retry", {279, 279}, EXPR_END},
+ {"if", {266, 295}, EXPR_VALUE},
+ {"case", {271, 271}, EXPR_VALUE},
+ {"redo", {278, 278}, EXPR_END},
+ {"next", {277, 277}, EXPR_MID},
+ {"super", {287, 287}, EXPR_ARG},
+ {"module", {259, 259}, EXPR_VALUE},
+ {"begin", {262, 262}, EXPR_BEG},
+ {"__LINE__", {304, 304}, EXPR_END},
+ {"__FILE__", {305, 305}, EXPR_END},
+ {"__ENCODING__", {306, 306}, EXPR_END},
+ {"END", {303, 303}, EXPR_END},
+ {"alias", {300, 300}, EXPR_FNAME},
+ {"BEGIN", {302, 302}, EXPR_END},
+ {"defined?", {301, 301}, EXPR_ARG},
+ {"class", {258, 258}, EXPR_CLASS},
+ {""}, {""},
+ {"while", {273, 297}, EXPR_VALUE}
+ };
+ if (len <= 12 && len >= 2)
+ {
+ register int key = hash (str, len);
+ if (key <= 50 && key >= 0)
+ {
+ register const char *s = wordlist[key].name;
+ if (*str == *s && !__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (str + 1) && __builtin_constant_p (s + 1) && (__s1_len = strlen (str + 1), __s2_len = strlen (s + 1), (!((size_t)(const void *)((str + 1) + 1) - (size_t)(const void *)(str + 1) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((s + 1) + 1) - (size_t)(const void *)(s + 1) == 1) || __s2_len >= 4)) ? __builtin_strcmp (str + 1, s + 1) : (__builtin_constant_p (str + 1) && ((size_t)(const void *)((str + 1) + 1) - (size_t)(const void *)(str + 1) == 1) && (__s1_len = strlen (str + 1), __s1_len < 4) ? (__builtin_constant_p (s + 1) && ((size_t)(const void *)((s + 1) + 1) - (size_t)(const void *)(s + 1) == 1) ? __builtin_strcmp (str + 1, s + 1) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (s + 1); register int __result = (((__const unsigned char *) (__const char *) (str + 1))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (str + 1))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (str + 1))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (str + 1))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (s + 1) && ((size_t)(const void *)((s + 1) + 1) - (size_t)(const void *)(s + 1) == 1) && (__s2_len = strlen (s + 1), __s2_len < 4) ? (__builtin_constant_p (str + 1) && ((size_t)(const void *)((str + 1) + 1) - (size_t)(const void *)(str + 1) == 1) ? __builtin_strcmp (str + 1, s + 1) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (str + 1); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (s + 1))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (s + 1))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (s + 1))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (s + 1))[3]); } } __result; }))) : __builtin_strcmp (str + 1, s + 1)))); }))
+ return &wordlist[key];
+ }
+ }
+ return 0;
+}
+static void
+arg_ambiguous_gen(struct parser_params *parser)
+{
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "ambiguous first argument; put parentheses or even spaces");
+}
+static int
+lvar_defined_gen(struct parser_params *parser, ID id)
+{
+ return (dyna_in_block_gen(parser) && dvar_defined_gen(parser, id)) || local_id_gen(parser, id);
+}
+static int
+parser_encode_length(struct parser_params *parser, const char *name, int len)
+{
+ int nlen;
+ if (len > 5 && name[nlen = len - 5] == '-') {
+ if (rb_memcicmp(name + nlen + 1, "unix", 4) == 0)
+ return nlen;
+ }
+ if (len > 4 && name[nlen = len - 5] == '-') {
+ if (rb_memcicmp(name + nlen + 1, "dos", 3) == 0)
+ return nlen;
+ if (rb_memcicmp(name + nlen + 1, "mac", 3) == 0)
+ return nlen;
+ }
+ return len;
+}
+static void
+parser_set_encode(struct parser_params *parser, const char *name)
+{
+ int idx = rb_enc_find_index(name);
+ rb_encoding *enc;
+ if (idx < 0) {
+ rb_raise(rb_eArgError, "unknown encoding name: %s", name);
+ }
+ enc = rb_enc_from_index(idx);
+ if (!((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
+ rb_raise(rb_eArgError, "%s is not ASCII compatible", (enc)->name);
+ }
+ parser->enc = enc;
+}
+static int
+comment_at_top(struct parser_params *parser)
+{
+ const char *p = (parser->parser_lex_pbeg), *pend = (parser->parser_lex_p) - 1;
+ if (parser->line_count != (parser->has_shebang ? 2 : 1)) return 0;
+ while (p < pend) {
+ if (!rb_isspace((unsigned char)(*p))) return 0;
+ p++;
+ }
+ return 1;
+}
+typedef int (*rb_magic_comment_length_t)(struct parser_params *parser, const char *name, int len);
+typedef void (*rb_magic_comment_setter_t)(struct parser_params *parser, const char *name, const char *val);
+static void
+magic_comment_encoding(struct parser_params *parser, const char *name, const char *val)
+{
+ if (!comment_at_top(parser)) {
+ rb_warning("encoding '%s' is ignored, valid only in the first line except for shebang line.",
+ val);
+ return;
+ }
+ parser_set_encode(parser, val);
+}
+struct magic_comment {
+ const char *name;
+ rb_magic_comment_setter_t func;
+ rb_magic_comment_length_t length;
+};
+static const struct magic_comment magic_comments[] = {
+ {"coding", magic_comment_encoding, parser_encode_length},
+ {"encoding", magic_comment_encoding, parser_encode_length},
+};
+static const char *
+magic_comment_marker(const char *str, int len)
+{
+ int i = 2;
+ while (i < len) {
+ switch (str[i]) {
+ case '-':
+ if (str[i-1] == '*' && str[i-2] == '-') {
+ return str + i + 1;
+ }
+ i += 2;
+ break;
+ case '*':
+ if (i + 1 >= len) return 0;
+ if (str[i+1] != '-') {
+ i += 4;
+ }
+ else if (str[i-1] != '-') {
+ i += 2;
+ }
+ else {
+ return str + i + 2;
+ }
+ break;
+ default:
+ i += 3;
+ break;
+ }
+ }
+ return 0;
+}
+static int
+parser_magic_comment(struct parser_params *parser, const char *str, int len)
+{
+ VALUE name = 0, val = 0;
+ const char *beg, *end, *vbeg, *vend;
+ if (len <= 7) return ((VALUE)RUBY_Qfalse);
+ if (!(beg = magic_comment_marker(str, len))) return ((VALUE)RUBY_Qfalse);
+ if (!(end = magic_comment_marker(beg, str + len - beg))) return ((VALUE)RUBY_Qfalse);
+ str = beg;
+ len = end - beg - 3;
+ while (len > 0) {
+ const struct magic_comment *p = magic_comments;
+ char *s;
+ int i, n = 0;
+ for (; len > 0 && *str; str++, --len) {
+ switch (*str) {
+ case '\'': case '"': case ':': case ';':
+ continue;
+ }
+ if (!rb_isspace((unsigned char)(*str))) break;
+ }
+ for (beg = str; len > 0; str++, --len) {
+ switch (*str) {
+ case '\'': case '"': case ':': case ';':
+ break;
+ default:
+ if (rb_isspace((unsigned char)(*str))) break;
+ continue;
+ }
+ break;
+ }
+ for (end = str; len > 0 && rb_isspace((unsigned char)(*str)); str++, --len);
+ if (!len) break;
+ if (*str != ':') continue;
+ do str++; while (--len > 0 && rb_isspace((unsigned char)(*str)));
+ if (!len) break;
+ if (*str == '"') {
+ for (vbeg = ++str; --len > 0 && *str != '"'; str++) {
+ if (*str == '\\') {
+ --len;
+ ++str;
+ }
+ }
+ vend = str;
+ if (len) {
+ --len;
+ ++str;
+ }
+ }
+ else {
+ for (vbeg = str; len > 0 && *str != '"' && *str != ';' && !rb_isspace((unsigned char)(*str)); --len, str++);
+ vend = str;
+ }
+ while (len > 0 && (*str == ';' || rb_isspace((unsigned char)(*str)))) --len, str++;
+ n = end - beg;
+ ((name) ? (rb_str_resize((name), (n)), memcpy(((!(((struct RBasic*)(name))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(name))->as.ary : ((struct RString*)(name))->as.heap.ptr)), ((beg)), sizeof(char)*((n))), (name)) : ((name) = rb_enc_str_new(((beg)),((n)),parser->enc)));
+ s = (!(((struct RBasic*)(name))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(name))->as.ary : ((struct RString*)(name))->as.heap.ptr);
+ for (i = 0; i < n; ++i) {
+ if (*s == '-') *s = '_';
+ }
+ do {
+ if ((st_strncasecmp(p->name, s, n)) == 0) {
+ n = vend - vbeg;
+ if (p->length) {
+ n = (*p->length)(parser, vbeg, n);
+ }
+ ((val) ? (rb_str_resize((val), (n)), memcpy(((!(((struct RBasic*)(val))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(val))->as.ary : ((struct RString*)(val))->as.heap.ptr)), ((vbeg)), sizeof(char)*((n))), (val)) : ((val) = rb_enc_str_new(((vbeg)),((n)),parser->enc)));
+ (*p->func)(parser, s, (!(((struct RBasic*)(val))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(val))->as.ary : ((struct RString*)(val))->as.heap.ptr));
+ break;
+ }
+ } while (++p < magic_comments + sizeof(magic_comments) / sizeof(*p));
+ }
+ return ((VALUE)RUBY_Qtrue);
+}
+static void
+set_file_encoding(struct parser_params *parser, const char *str, const char *send)
+{
+ int sep = 0;
+ const char *beg = str;
+ VALUE s;
+ for (;;) {
+ if (send - str <= 6) return;
+ switch (str[6]) {
+ case 'C': case 'c': str += 6; continue;
+ case 'O': case 'o': str += 5; continue;
+ case 'D': case 'd': str += 4; continue;
+ case 'I': case 'i': str += 3; continue;
+ case 'N': case 'n': str += 2; continue;
+ case 'G': case 'g': str += 1; continue;
+ case '=': case ':':
+ sep = 1;
+ str += 6;
+ break;
+ default:
+ str += 6;
+ if (rb_isspace((unsigned char)(*str))) break;
+ continue;
+ }
+ if ((st_strncasecmp(str-6, "coding", 6)) == 0) break;
+ }
+ for (;;) {
+ do {
+ if (++str >= send) return;
+ } while (rb_isspace((unsigned char)(*str)));
+ if (sep) break;
+ if (*str != '=' && *str != ':') return;
+ sep = 1;
+ str++;
+ }
+ beg = str;
+ while ((*str == '-' || *str == '_' || rb_isalnum((unsigned char)(*str))) && ++str < send);
+ s = rb_str_new(beg, parser_encode_length(parser, beg, str - beg));
+ parser_set_encode(parser, (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr));
+ rb_str_resize(s, 0);
+}
+static void
+parser_prepare(struct parser_params *parser)
+{
+ int c = parser_nextc(parser);
+ switch (c) {
+ case '#':
+ if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('!') == *(parser->parser_lex_p))) parser->has_shebang = 1;
+ break;
+ case 0xef:
+ if ((parser->parser_lex_pend) - (parser->parser_lex_p) >= 2 &&
+ (unsigned char)(parser->parser_lex_p)[0] == 0xbb &&
+ (unsigned char)(parser->parser_lex_p)[1] == 0xbf) {
+ parser->enc = rb_utf8_encoding();
+ (parser->parser_lex_p) += 2;
+ (parser->parser_lex_pbeg) = (parser->parser_lex_p);
+ return;
+ }
+ break;
+ case (-1):
+ return;
+ }
+ parser_pushback(parser, c);
+ parser->enc = rb_enc_get((parser->parser_lex_lastline));
+}
+static int
+parser_yylex(struct parser_params *parser)
+{
+ register int c;
+ int space_seen = 0;
+ int cmd_state;
+ enum lex_state_e last_state;
+ rb_encoding *enc;
+ int mb;
+ if ((parser->parser_lex_strterm)) {
+ int token;
+ if (((int) (((((struct RNode*)((parser->parser_lex_strterm))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) {
+ token = parser_here_document(parser,(parser->parser_lex_strterm));
+ if (token == 361) {
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_state) = EXPR_END;
+ }
+ }
+ else {
+ token = parser_parse_string(parser,(parser->parser_lex_strterm));
+ if (token == 361 || token == 320) {
+ rb_gc_force_recycle((VALUE)(parser->parser_lex_strterm));
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_state) = EXPR_END;
+ }
+ }
+ return token;
+ }
+ cmd_state = (parser->parser_command_start);
+ (parser->parser_command_start) = ((VALUE)RUBY_Qfalse);
+ retry:
+ switch (c = parser_nextc(parser)) {
+ case '\0':
+ case '\004':
+ case '\032':
+ case -1:
+ return 0;
+ case ' ': case '\t': case '\f': case '\r':
+ case '\13':
+ space_seen++;
+ goto retry;
+ case '#':
+ if (!parser_magic_comment(parser, (parser->parser_lex_p), (parser->parser_lex_pend) - (parser->parser_lex_p))) {
+ if (comment_at_top(parser)) {
+ set_file_encoding(parser, (parser->parser_lex_p), (parser->parser_lex_pend));
+ }
+ }
+ (parser->parser_lex_p) = (parser->parser_lex_pend);
+ case '\n':
+ switch ((parser->parser_lex_state)) {
+ case EXPR_BEG:
+ case EXPR_FNAME:
+ case EXPR_DOT:
+ case EXPR_CLASS:
+ case EXPR_VALUE:
+ goto retry;
+ default:
+ break;
+ }
+ while ((c = parser_nextc(parser))) {
+ switch (c) {
+ case ' ': case '\t': case '\f': case '\r':
+ case '\13':
+ space_seen++;
+ break;
+ case '.': {
+ if ((c = parser_nextc(parser)) != '.') {
+ parser_pushback(parser, c);
+ parser_pushback(parser, '.');
+ goto retry;
+ }
+ }
+ default:
+ --(parser->parser_ruby_sourceline);
+ (parser->parser_lex_nextline) = (parser->parser_lex_lastline);
+ case -1:
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ goto normal_newline;
+ }
+ }
+ normal_newline:
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ (parser->parser_lex_state) = EXPR_BEG;
+ return '\n';
+ case '*':
+ if ((c = parser_nextc(parser)) == '*') {
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 323;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ c = 323;
+ }
+ else {
+ if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '*';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`*' interpreted as argument prefix");
+ c = 350;
+ }
+ else if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ c = 350;
+ }
+ else {
+ c = '*';
+ }
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ return c;
+ case '!':
+ c = parser_nextc(parser);
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ if (c == '@') {
+ return '!';
+ }
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_BEG;
+ }
+ if (c == '=') {
+ return 327;
+ }
+ if (c == '~') {
+ return 333;
+ }
+ parser_pushback(parser, c);
+ return '!';
+ case '=':
+ if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1)) {
+ if ((__extension__ (__builtin_constant_p (5) && ((__builtin_constant_p ((parser->parser_lex_p)) && strlen ((parser->parser_lex_p)) < ((size_t) (5))) || (__builtin_constant_p ("begin") && strlen ("begin") < ((size_t) (5)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((parser->parser_lex_p)) && __builtin_constant_p ("begin") && (__s1_len = strlen ((parser->parser_lex_p)), __s2_len = strlen ("begin"), (!((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("begin") + 1) - (size_t)(const void *)("begin") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((parser->parser_lex_p), "begin") : (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) && (__s1_len = strlen ((parser->parser_lex_p)), __s1_len < 4) ? (__builtin_constant_p ("begin") && ((size_t)(const void *)(("begin") + 1) - (size_t)(const void *)("begin") == 1) ? __builtin_strcmp ((parser->parser_lex_p), "begin") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("begin"); register int __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("begin") && ((size_t)(const void *)(("begin") + 1) - (size_t)(const void *)("begin") == 1) && (__s2_len = strlen ("begin"), __s2_len < 4) ? (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) ? __builtin_strcmp ((parser->parser_lex_p), "begin") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((parser->parser_lex_p)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("begin"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("begin"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("begin"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("begin"))[3]); } } __result; }))) : __builtin_strcmp ((parser->parser_lex_p), "begin")))); }) : strncmp ((parser->parser_lex_p), "begin", 5))) == 0 && rb_isspace((unsigned char)((parser->parser_lex_p)[5]))) {
+ for (;;) {
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ c = parser_nextc(parser);
+ if (c == -1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "embedded document meets end of file");
+ return 0;
+ }
+ if (c != '=') continue;
+ if ((__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p ((parser->parser_lex_p)) && strlen ((parser->parser_lex_p)) < ((size_t) (3))) || (__builtin_constant_p ("end") && strlen ("end") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((parser->parser_lex_p)) && __builtin_constant_p ("end") && (__s1_len = strlen ((parser->parser_lex_p)), __s2_len = strlen ("end"), (!((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((parser->parser_lex_p), "end") : (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) && (__s1_len = strlen ((parser->parser_lex_p)), __s1_len < 4) ? (__builtin_constant_p ("end") && ((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) ? __builtin_strcmp ((parser->parser_lex_p), "end") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("end"); register int __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("end") && ((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) && (__s2_len = strlen ("end"), __s2_len < 4) ? (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) ? __builtin_strcmp ((parser->parser_lex_p), "end") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((parser->parser_lex_p)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("end"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("end"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("end"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("end"))[3]); } } __result; }))) : __builtin_strcmp ((parser->parser_lex_p), "end")))); }) : strncmp ((parser->parser_lex_p), "end", 3))) == 0 &&
+ ((parser->parser_lex_p) + 3 == (parser->parser_lex_pend) || rb_isspace((unsigned char)((parser->parser_lex_p)[3])))) {
+ break;
+ }
+ }
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ goto retry;
+ }
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ if ((c = parser_nextc(parser)) == '=') {
+ if ((c = parser_nextc(parser)) == '=') {
+ return 326;
+ }
+ parser_pushback(parser, c);
+ return 325;
+ }
+ if (c == '~') {
+ return 332;
+ }
+ else if (c == '>') {
+ return 343;
+ }
+ parser_pushback(parser, c);
+ return '=';
+ case '<':
+ c = parser_nextc(parser);
+ if (c == '<' &&
+ (parser->parser_lex_state) != EXPR_END &&
+ (parser->parser_lex_state) != EXPR_DOT &&
+ (parser->parser_lex_state) != EXPR_ENDARG &&
+ (parser->parser_lex_state) != EXPR_CLASS &&
+ (!((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) || space_seen)) {
+ int token = parser_heredoc_identifier(parser);
+ if (token) return token;
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ if (c == '=') {
+ if ((c = parser_nextc(parser)) == '>') {
+ return 324;
+ }
+ parser_pushback(parser, c);
+ return 329;
+ }
+ if (c == '<') {
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 338;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ return 338;
+ }
+ parser_pushback(parser, c);
+ return '<';
+ case '>':
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ if ((c = parser_nextc(parser)) == '=') {
+ return 328;
+ }
+ if (c == '>') {
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 339;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ return 339;
+ }
+ parser_pushback(parser, c);
+ return '>';
+ case '"':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dquote), ('"') | ((0) << (8 * 2)), 0);
+ return 354;
+ case '`':
+ if ((parser->parser_lex_state) == EXPR_FNAME) {
+ (parser->parser_lex_state) = EXPR_END;
+ return c;
+ }
+ if ((parser->parser_lex_state) == EXPR_DOT) {
+ if (cmd_state)
+ (parser->parser_lex_state) = EXPR_CMDARG;
+ else
+ (parser->parser_lex_state) = EXPR_ARG;
+ return c;
+ }
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_xquote), ('`') | ((0) << (8 * 2)), 0);
+ return 355;
+ case '\'':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_squote), ('\'') | ((0) << (8 * 2)), 0);
+ return 354;
+ case '?':
+ if ((parser->parser_lex_state) == EXPR_END || (parser->parser_lex_state) == EXPR_ENDARG) {
+ (parser->parser_lex_state) = EXPR_VALUE;
+ return '?';
+ }
+ c = parser_nextc(parser);
+ if (c == -1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "incomplete character syntax");
+ return 0;
+ }
+ if ((parser->enc)->is_code_ctype(c,9,parser->enc)) {
+ if (!((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
+ int c2 = 0;
+ switch (c) {
+ case ' ':
+ c2 = 's';
+ break;
+ case '\n':
+ c2 = 'n';
+ break;
+ case '\t':
+ c2 = 't';
+ break;
+ case '\v':
+ c2 = 'v';
+ break;
+ case '\r':
+ c2 = 'r';
+ break;
+ case '\f':
+ c2 = 'f';
+ break;
+ }
+ if (c2) {
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid character syntax; use ?\\%c", c2);
+ }
+ }
+ ternary:
+ parser_pushback(parser, c);
+ (parser->parser_lex_state) = EXPR_VALUE;
+ return '?';
+ }
+ parser_newtok(parser);
+ enc = parser->enc;
+ if (!((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ }
+ else if (((parser->enc)->is_code_ctype(c,13,parser->enc) || c == '_') &&
+ (parser->parser_lex_p) < (parser->parser_lex_pend) && ((parser->enc)->is_code_ctype(*(parser->parser_lex_p),13,parser->enc) || (*(parser->parser_lex_p)) == '_' || !((unsigned long)((unsigned char)(*(parser->parser_lex_p))) < 128))) {
+ goto ternary;
+ }
+ else if (c == '\\') {
+ if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('u') == *(parser->parser_lex_p))) {
+ parser_nextc(parser);
+ c = parser_tokadd_utf8(parser, &enc, 0, 0, 0);
+ if (0x80 <= c) {
+ parser_tokaddmbc(parser, c, enc);
+ }
+ else {
+ parser_tokadd(parser, c);
+ }
+ }
+ else {
+ c = parser_read_escape(parser, 0, &enc);
+ parser_tokadd(parser, c);
+ }
+ }
+ else {
+ parser_tokadd(parser, c);
+ }
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(0),parser->enc)), (VALUE)(0), (VALUE)(0));
+ (parser->parser_lex_state) = EXPR_END;
+ return 317;
+ case '&':
+ if ((c = parser_nextc(parser)) == '&') {
+ (parser->parser_lex_state) = EXPR_BEG;
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 330;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ return 330;
+ }
+ else if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '&';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`&' interpreted as argument prefix");
+ c = 351;
+ }
+ else if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ c = 351;
+ }
+ else {
+ c = '&';
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG;
+ }
+ return c;
+ case '|':
+ if ((c = parser_nextc(parser)) == '|') {
+ (parser->parser_lex_state) = EXPR_BEG;
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 331;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ return 331;
+ }
+ if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '|';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_BEG;
+ }
+ parser_pushback(parser, c);
+ return '|';
+ case '+':
+ c = parser_nextc(parser);
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ if (c == '@') {
+ return 321;
+ }
+ parser_pushback(parser, c);
+ return '+';
+ }
+ if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '+';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
+ (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c)))) {
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) arg_ambiguous_gen(parser);
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_pushback(parser, c);
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ c = '+';
+ goto start_num;
+ }
+ return 321;
+ }
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_pushback(parser, c);
+ return '+';
+ case '-':
+ c = parser_nextc(parser);
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ if (c == '@') {
+ return 322;
+ }
+ parser_pushback(parser, c);
+ return '-';
+ }
+ if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '-';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ if (c == '>') {
+ (parser->parser_lex_state) = EXPR_ARG;
+ return 352;
+ }
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
+ (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c)))) {
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) arg_ambiguous_gen(parser);
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_pushback(parser, c);
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ return 364;
+ }
+ return 322;
+ }
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_pushback(parser, c);
+ return '-';
+ case '.':
+ (parser->parser_lex_state) = EXPR_BEG;
+ if ((c = parser_nextc(parser)) == '.') {
+ if ((c = parser_nextc(parser)) == '.') {
+ return 335;
+ }
+ parser_pushback(parser, c);
+ return 334;
+ }
+ parser_pushback(parser, c);
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ parser_yyerror(parser, "no .<digit> floating literal anymore; put 0 before dot");
+ }
+ (parser->parser_lex_state) = EXPR_DOT;
+ return '.';
+ start_num:
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ {
+ int is_float, seen_point, seen_e, nondigit;
+ is_float = seen_point = seen_e = nondigit = 0;
+ (parser->parser_lex_state) = EXPR_END;
+ parser_newtok(parser);
+ if (c == '-' || c == '+') {
+ parser_tokadd(parser, c);
+ c = parser_nextc(parser);
+ }
+ if (c == '0') {
+ int start = (parser->parser_tokidx);
+ c = parser_nextc(parser);
+ if (c == 'x' || c == 'X') {
+ c = parser_nextc(parser);
+ if (c != -1 && rb_isxdigit((unsigned char)(c))) {
+ do {
+ if (c == '_') {
+ if (nondigit) break;
+ nondigit = c;
+ continue;
+ }
+ if (!rb_isxdigit((unsigned char)(c))) break;
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ } while ((c = parser_nextc(parser)) != -1);
+ }
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if ((parser->parser_tokidx) == start) {
+ parser_yyerror(parser, "numeric literal without digits");
+ }
+ else if (nondigit) goto trailing_uc;
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 16, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ if (c == 'b' || c == 'B') {
+ c = parser_nextc(parser);
+ if (c == '0' || c == '1') {
+ do {
+ if (c == '_') {
+ if (nondigit) break;
+ nondigit = c;
+ continue;
+ }
+ if (c != '0' && c != '1') break;
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ } while ((c = parser_nextc(parser)) != -1);
+ }
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if ((parser->parser_tokidx) == start) {
+ parser_yyerror(parser, "numeric literal without digits");
+ }
+ else if (nondigit) goto trailing_uc;
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 2, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ if (c == 'd' || c == 'D') {
+ c = parser_nextc(parser);
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ do {
+ if (c == '_') {
+ if (nondigit) break;
+ nondigit = c;
+ continue;
+ }
+ if (!rb_isdigit((unsigned char)(c))) break;
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ } while ((c = parser_nextc(parser)) != -1);
+ }
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if ((parser->parser_tokidx) == start) {
+ parser_yyerror(parser, "numeric literal without digits");
+ }
+ else if (nondigit) goto trailing_uc;
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 10, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ if (c == '_') {
+ goto octal_number;
+ }
+ if (c == 'o' || c == 'O') {
+ c = parser_nextc(parser);
+ if (c == -1 || c == '_' || !rb_isdigit((unsigned char)(c))) {
+ parser_yyerror(parser, "numeric literal without digits");
+ }
+ }
+ if (c >= '0' && c <= '7') {
+ octal_number:
+ do {
+ if (c == '_') {
+ if (nondigit) break;
+ nondigit = c;
+ continue;
+ }
+ if (c < '0' || c > '9') break;
+ if (c > '7') goto invalid_octal;
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ } while ((c = parser_nextc(parser)) != -1);
+ if ((parser->parser_tokidx) > start) {
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if (nondigit) goto trailing_uc;
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 8, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ if (nondigit) {
+ parser_pushback(parser, c);
+ goto trailing_uc;
+ }
+ }
+ if (c > '7' && c <= '9') {
+ invalid_octal:
+ parser_yyerror(parser, "Invalid octal digit");
+ }
+ else if (c == '.' || c == 'e' || c == 'E') {
+ parser_tokadd(parser, '0');
+ }
+ else {
+ parser_pushback(parser, c);
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ }
+ for (;;) {
+ switch (c) {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ break;
+ case '.':
+ if (nondigit) goto trailing_uc;
+ if (seen_point || seen_e) {
+ goto decode_num;
+ }
+ else {
+ int c0 = parser_nextc(parser);
+ if (c == -1 || !rb_isdigit((unsigned char)(c0))) {
+ parser_pushback(parser, c0);
+ goto decode_num;
+ }
+ c = c0;
+ }
+ parser_tokadd(parser, '.');
+ parser_tokadd(parser, c);
+ is_float++;
+ seen_point++;
+ nondigit = 0;
+ break;
+ case 'e':
+ case 'E':
+ if (nondigit) {
+ parser_pushback(parser, c);
+ c = nondigit;
+ goto decode_num;
+ }
+ if (seen_e) {
+ goto decode_num;
+ }
+ parser_tokadd(parser, c);
+ seen_e++;
+ is_float++;
+ nondigit = c;
+ c = parser_nextc(parser);
+ if (c != '-' && c != '+') continue;
+ parser_tokadd(parser, c);
+ nondigit = c;
+ break;
+ case '_':
+ if (nondigit) goto decode_num;
+ nondigit = c;
+ break;
+ default:
+ goto decode_num;
+ }
+ c = parser_nextc(parser);
+ }
+ decode_num:
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if (nondigit) {
+ char tmp[30];
+ trailing_uc:
+ sprintf(tmp, "trailing `%c' in number", nondigit);
+ parser_yyerror(parser, tmp);
+ }
+ if (is_float) {
+ double d = ruby_strtod((parser->parser_tokenbuf),0);
+ if ((*__errno_location ()) == 34) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Float %s out of range", (parser->parser_tokenbuf));
+ (*__errno_location ()) = 0;
+ }
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_float_new(d)), (VALUE)(0), (VALUE)(0));
+ return 315;
+ }
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 10, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ case ')':
+ case ']':
+ (parser->parser_paren_nest)--;
+ case '}':
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack) >> 1) | ((parser->parser_cond_stack) & 1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack) >> 1) | ((parser->parser_cmdarg_stack) & 1));
+ if (c == ')')
+ (parser->parser_lex_state) = EXPR_END;
+ else
+ (parser->parser_lex_state) = EXPR_ENDARG;
+ return c;
+ case ':':
+ c = parser_nextc(parser);
+ if (c == ':') {
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
+ (parser->parser_lex_state) == EXPR_CLASS || (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen)) {
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 341;
+ }
+ (parser->parser_lex_state) = EXPR_DOT;
+ return 340;
+ }
+ if ((parser->parser_lex_state) == EXPR_END || (parser->parser_lex_state) == EXPR_ENDARG || (c != -1 && rb_isspace((unsigned char)(c)))) {
+ parser_pushback(parser, c);
+ (parser->parser_lex_state) = EXPR_BEG;
+ return ':';
+ }
+ switch (c) {
+ case '\'':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_ssym), (c) | ((0) << (8 * 2)), 0);
+ break;
+ case '"':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dsym), (c) | ((0) << (8 * 2)), 0);
+ break;
+ default:
+ parser_pushback(parser, c);
+ break;
+ }
+ (parser->parser_lex_state) = EXPR_FNAME;
+ return 353;
+ case '/':
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), ('/') | ((0) << (8 * 2)), 0);
+ return 356;
+ }
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '/';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen) {
+ if (!rb_isspace((unsigned char)(c))) {
+ arg_ambiguous_gen(parser);
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), ('/') | ((0) << (8 * 2)), 0);
+ return 356;
+ }
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ return '/';
+ case '^':
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '^';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ parser_pushback(parser, c);
+ return '^';
+ case ';':
+ (parser->parser_lex_state) = EXPR_BEG;
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ return ';';
+ case ',':
+ (parser->parser_lex_state) = EXPR_BEG;
+ return ',';
+ case '~':
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ if ((c = parser_nextc(parser)) != '@') {
+ parser_pushback(parser, c);
+ }
+ (parser->parser_lex_state) = EXPR_ARG;
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_BEG;
+ }
+ return '~';
+ case '(':
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ c = 344;
+ }
+ else if (space_seen) {
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
+ c = 345;
+ }
+ }
+ (parser->parser_paren_nest)++;
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
+ (parser->parser_lex_state) = EXPR_BEG;
+ return c;
+ case '[':
+ (parser->parser_paren_nest)++;
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ if ((c = parser_nextc(parser)) == ']') {
+ if ((c = parser_nextc(parser)) == '=') {
+ return 337;
+ }
+ parser_pushback(parser, c);
+ return 336;
+ }
+ parser_pushback(parser, c);
+ return '[';
+ }
+ else if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ c = 347;
+ }
+ else if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen) {
+ c = 347;
+ }
+ (parser->parser_lex_state) = EXPR_BEG;
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
+ return c;
+ case '{':
+ if ((parser->parser_lpar_beg) && (parser->parser_lpar_beg) == (parser->parser_paren_nest)) {
+ (parser->parser_lex_state) = EXPR_BEG;
+ (parser->parser_lpar_beg) = 0;
+ --(parser->parser_paren_nest);
+ return 362;
+ }
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) || (parser->parser_lex_state) == EXPR_END)
+ c = '{';
+ else if ((parser->parser_lex_state) == EXPR_ENDARG)
+ c = 349;
+ else
+ c = 348;
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
+ (parser->parser_lex_state) = EXPR_BEG;
+ if (c != 348) (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ return c;
+ case '\\':
+ c = parser_nextc(parser);
+ if (c == '\n') {
+ space_seen = 1;
+ goto retry;
+ }
+ parser_pushback(parser, c);
+ return '\\';
+ case '%':
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ int term;
+ int paren;
+ c = parser_nextc(parser);
+ quotation:
+ if (c == -1 || !rb_isalnum((unsigned char)(c))) {
+ term = c;
+ c = 'Q';
+ }
+ else {
+ term = parser_nextc(parser);
+ if ((parser->enc)->is_code_ctype(term,13,parser->enc) || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
+ parser_yyerror(parser, "unknown type of %string");
+ return 0;
+ }
+ }
+ if (c == -1 || term == -1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated quoted string meets end of file");
+ return 0;
+ }
+ paren = term;
+ if (term == '(') term = ')';
+ else if (term == '[') term = ']';
+ else if (term == '{') term = '}';
+ else if (term == '<') term = '>';
+ else paren = 0;
+ switch (c) {
+ case 'Q':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dquote), (term) | ((paren) << (8 * 2)), 0);
+ return 354;
+ case 'q':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_squote), (term) | ((paren) << (8 * 2)), 0);
+ return 354;
+ case 'W':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dword), (term) | ((paren) << (8 * 2)), 0);
+ do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
+ parser_pushback(parser, c);
+ return 357;
+ case 'w':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_sword), (term) | ((paren) << (8 * 2)), 0);
+ do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
+ parser_pushback(parser, c);
+ return 358;
+ case 'x':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_xquote), (term) | ((paren) << (8 * 2)), 0);
+ return 355;
+ case 'r':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), (term) | ((paren) << (8 * 2)), 0);
+ return 356;
+ case 's':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_ssym), (term) | ((paren) << (8 * 2)), 0);
+ (parser->parser_lex_state) = EXPR_FNAME;
+ return 353;
+ default:
+ parser_yyerror(parser, "unknown type of %string");
+ return 0;
+ }
+ }
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '%';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
+ goto quotation;
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ parser_pushback(parser, c);
+ return '%';
+ case '$':
+ last_state = (parser->parser_lex_state);
+ (parser->parser_lex_state) = EXPR_END;
+ parser_newtok(parser);
+ c = parser_nextc(parser);
+ switch (c) {
+ case '_':
+ c = parser_nextc(parser);
+ if ((!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ parser_tokadd(parser, '$');
+ parser_tokadd(parser, '_');
+ break;
+ }
+ parser_pushback(parser, c);
+ c = '_';
+ case '~':
+ case '*':
+ case '$':
+ case '?':
+ case '!':
+ case '@':
+ case '/':
+ case '\\':
+ case ';':
+ case ',':
+ case '.':
+ case '=':
+ case ':':
+ case '<':
+ case '>':
+ case '\"':
+ parser_tokadd(parser, '$');
+ parser_tokadd(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p((parser->parser_tokenbuf)) ? __extension__ (rb_intern2((parser->parser_tokenbuf), strlen((parser->parser_tokenbuf)))) : (rb_intern)((parser->parser_tokenbuf)));
+ return 309;
+ case '-':
+ parser_tokadd(parser, '$');
+ parser_tokadd(parser, c);
+ c = parser_nextc(parser);
+ if ((!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ }
+ else {
+ parser_pushback(parser, c);
+ }
+ gvar:
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p((parser->parser_tokenbuf)) ? __extension__ (rb_intern2((parser->parser_tokenbuf), strlen((parser->parser_tokenbuf)))) : (rb_intern)((parser->parser_tokenbuf)));
+ return 309;
+ case '&':
+ case '`':
+ case '\'':
+ case '+':
+ if (last_state == EXPR_FNAME) {
+ parser_tokadd(parser, '$');
+ parser_tokadd(parser, c);
+ goto gvar;
+ }
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_BACK_REF), (VALUE)(0), (VALUE)(c), (VALUE)(0));
+ return 319;
+ case '1': case '2': case '3':
+ case '4': case '5': case '6':
+ case '7': case '8': case '9':
+ parser_tokadd(parser, '$');
+ do {
+ parser_tokadd(parser, c);
+ c = parser_nextc(parser);
+ } while (c != -1 && rb_isdigit((unsigned char)(c)));
+ parser_pushback(parser, c);
+ if (last_state == EXPR_FNAME) goto gvar;
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_NTH_REF), (VALUE)(0), (VALUE)(atoi((parser->parser_tokenbuf)+1)), (VALUE)(0));
+ return 318;
+ default:
+ if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ parser_pushback(parser, c);
+ return '$';
+ }
+ case '0':
+ parser_tokadd(parser, '$');
+ }
+ break;
+ case '@':
+ c = parser_nextc(parser);
+ parser_newtok(parser);
+ parser_tokadd(parser, '@');
+ if (c == '@') {
+ parser_tokadd(parser, '@');
+ c = parser_nextc(parser);
+ }
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ if ((parser->parser_tokidx) == 1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`@%c' is not allowed as an instance variable name", c);
+ }
+ else {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`@@%c' is not allowed as a class variable name", c);
+ }
+ return 0;
+ }
+ if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ parser_pushback(parser, c);
+ return '@';
+ }
+ break;
+ case '_':
+ if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1) && parser_whole_match_p(parser,"__END__",7,0)) {
+ (parser->parser_ruby__end__seen) = 1;
+ parser->eofp = ((VALUE)RUBY_Qtrue);
+ return -1;
+ }
+ parser_newtok(parser);
+ break;
+ default:
+ if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Invalid char `\\x%02X' in expression", c);
+ goto retry;
+ }
+ parser_newtok(parser);
+ break;
+ }
+ mb = (((VALUE)1)<<(12 +8));
+ do {
+ if (!((unsigned long)((unsigned char)(c)) < 128)) mb = 0;
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ c = parser_nextc(parser);
+ } while ((!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128))));
+ switch ((parser->parser_tokenbuf)[0]) {
+ case '@': case '$':
+ parser_pushback(parser, c);
+ break;
+ default:
+ if ((c == '!' || c == '?') && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('=') == *(parser->parser_lex_p))) {
+ parser_tokadd(parser, c);
+ }
+ else {
+ parser_pushback(parser, c);
+ }
+ }
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ {
+ int result = 0;
+ last_state = (parser->parser_lex_state);
+ switch ((parser->parser_tokenbuf)[0]) {
+ case '$':
+ (parser->parser_lex_state) = EXPR_END;
+ result = 309;
+ break;
+ case '@':
+ (parser->parser_lex_state) = EXPR_END;
+ if ((parser->parser_tokenbuf)[1] == '@')
+ result = 312;
+ else
+ result = 310;
+ break;
+ default:
+ if (((parser->parser_tokidx)>0?(parser->parser_tokenbuf)[(parser->parser_tokidx)-1]:0) == '!' || ((parser->parser_tokidx)>0?(parser->parser_tokenbuf)[(parser->parser_tokidx)-1]:0) == '?') {
+ result = 308;
+ }
+ else {
+ if ((parser->parser_lex_state) == EXPR_FNAME) {
+ if ((c = parser_nextc(parser)) == '=' && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('~') == *(parser->parser_lex_p)) && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('>') == *(parser->parser_lex_p)) &&
+ (!((parser->parser_lex_p) < (parser->parser_lex_pend) && ('=') == *(parser->parser_lex_p)) || ((parser->parser_lex_p) + 1 < (parser->parser_lex_pend) && (parser->parser_lex_p)[1] == '>'))) {
+ result = 307;
+ parser_tokadd(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ }
+ else {
+ parser_pushback(parser, c);
+ }
+ }
+ if (result == 0 && rb_isupper((unsigned char)((parser->parser_tokenbuf)[0]))) {
+ result = 311;
+ }
+ else {
+ result = 307;
+ }
+ }
+ if (((parser->parser_lex_state) == EXPR_BEG && !cmd_state) ||
+ (parser->parser_lex_state) == EXPR_ARG ||
+ (parser->parser_lex_state) == EXPR_CMDARG) {
+ if (((parser->parser_lex_p) < (parser->parser_lex_pend) && (':') == *(parser->parser_lex_p)) && !((parser->parser_lex_p) + 1 < (parser->parser_lex_pend) && (parser->parser_lex_p)[1] == ':')) {
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_nextc(parser);
+ (*((YYSTYPE*)(parser->parser_yylval))).id = rb_intern3((parser->parser_tokenbuf), (parser->parser_tokidx), parser->enc);
+ return 313;
+ }
+ }
+ if (mb == (((VALUE)1)<<(12 +8)) && (parser->parser_lex_state) != EXPR_DOT) {
+ const struct kwtable *kw;
+ kw = rb_reserved_word((parser->parser_tokenbuf), (parser->parser_tokidx));
+ if (kw) {
+ enum lex_state_e state = (parser->parser_lex_state);
+ (parser->parser_lex_state) = kw->state;
+ if (state == EXPR_FNAME) {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p(kw->name) ? __extension__ (rb_intern2(kw->name, strlen(kw->name))) : (rb_intern)(kw->name));
+ return kw->id[0];
+ }
+ if (kw->id[0] == 281) {
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ if ((parser->parser_lpar_beg) && (parser->parser_lpar_beg) == (parser->parser_paren_nest)) {
+ (parser->parser_lpar_beg) = 0;
+ --(parser->parser_paren_nest);
+ return 284;
+ }
+ if (((parser->parser_cond_stack)&1)) return 282;
+ if (((parser->parser_cmdarg_stack)&1) && state != EXPR_CMDARG)
+ return 283;
+ if (state == EXPR_ENDARG || state == EXPR_BEG)
+ return 283;
+ return 281;
+ }
+ if (state == EXPR_BEG || state == EXPR_VALUE)
+ return kw->id[0];
+ else {
+ if (kw->id[0] != kw->id[1])
+ (parser->parser_lex_state) = EXPR_BEG;
+ return kw->id[1];
+ }
+ }
+ }
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
+ (parser->parser_lex_state) == EXPR_DOT ||
+ ((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
+ if (cmd_state) {
+ (parser->parser_lex_state) = EXPR_CMDARG;
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_ARG;
+ }
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_END;
+ }
+ }
+ {
+ ID ident = rb_intern3((parser->parser_tokenbuf), (parser->parser_tokidx), parser->enc);
+ (*((YYSTYPE*)(parser->parser_yylval))).id = ident;
+ if (last_state != EXPR_DOT && (((ident)>376)&&((ident)&0x07)==0x00) && lvar_defined_gen(parser, ident)) {
+ (parser->parser_lex_state) = EXPR_END;
+ }
+ }
+ return result;
+ }
+}
+static int
+yylex(void *lval, void *p)
+{
+ struct parser_params *parser = (struct parser_params*)p;
+ int t;
+ parser->parser_yylval = lval;
+ parser->parser_yylval->val = ((VALUE)RUBY_Qundef);
+ t = parser_yylex(parser);
+ return t;
+}
+static NODE*
+node_newnode(struct parser_params *parser, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
+{
+ NODE *n = (rb_node_newnode)(type, a0, a1, a2);
+ ((struct RNode*)(n))->flags=((((struct RNode*)(n))->flags&~(-1<<(8 +7)))|((((parser->parser_ruby_sourceline))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ return n;
+}
+enum node_type
+nodetype(NODE *node)
+{
+ return (enum node_type)((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8));
+}
+int
+nodeline(NODE *node)
+{
+ return ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
+}
+static NODE*
+newline_node(NODE *node)
+{
+ if (node) {
+ node = remove_begin(node);
+ node->flags |= (((VALUE)1)<<7);
+ }
+ return node;
+}
+static void
+fixpos(NODE *node, NODE *orig)
+{
+ if (!node) return;
+ if (!orig) return;
+ if (orig == (NODE*)1) return;
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(-1<<(8 +7)))|(((((VALUE)(((((struct RNode*)(orig)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+}
+static void
+parser_warning(struct parser_params *parser, NODE *node, const char *mesg)
+{
+ rb_compile_warning((parser->parser_ruby_sourcefile), ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))), "%s", mesg);
+}
+static void
+parser_warn(struct parser_params *parser, NODE *node, const char *mesg)
+{
+ rb_compile_warn((parser->parser_ruby_sourcefile), ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))), "%s", mesg);
+}
+static NODE*
+block_append_gen(struct parser_params *parser, NODE *head, NODE *tail)
+{
+ NODE *end, *h = head, *nd;
+ if (tail == 0) return head;
+ if (h == 0) return tail;
+ switch (((int) (((((struct RNode*)(h)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_SELF:
+ case NODE_TRUE:
+ case NODE_FALSE:
+ case NODE_NIL:
+ parser_warning(parser, h, "unused literal ignored");
+ return tail;
+ default:
+ h = end = node_newnode(parser, (NODE_BLOCK), (VALUE)(head), (VALUE)(0), (VALUE)(0));
+ end->u2.node = end;
+ fixpos(end, head);
+ head = end;
+ break;
+ case NODE_BLOCK:
+ end = h->u2.node;
+ break;
+ }
+ nd = end->u1.node;
+ switch (((int) (((((struct RNode*)(nd)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_RETURN:
+ case NODE_BREAK:
+ case NODE_NEXT:
+ case NODE_REDO:
+ case NODE_RETRY:
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) {
+ parser_warning(parser, nd, "statement not reached");
+ }
+ break;
+ default:
+ break;
+ }
+ if (((int) (((((struct RNode*)(tail)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) {
+ tail = node_newnode(parser, (NODE_BLOCK), (VALUE)(tail), (VALUE)(0), (VALUE)(0));
+ tail->u2.node = tail;
+ }
+ end->u3.node = tail;
+ h->u2.node = tail->u2.node;
+ return head;
+}
+static NODE*
+list_append_gen(struct parser_params *parser, NODE *list, NODE *item)
+{
+ NODE *last;
+ if (list == 0) return node_newnode(parser, (NODE_ARRAY), (VALUE)(item), (VALUE)(1), (VALUE)(0));
+ if (list->u3.node) {
+ last = list->u3.node->u2.node;
+ }
+ else {
+ last = list;
+ }
+ list->u2.argc += 1;
+ last->u3.node = node_newnode(parser, (NODE_ARRAY), (VALUE)(item), (VALUE)(1), (VALUE)(0));
+ list->u3.node->u2.node = last->u3.node;
+ return list;
+}
+static NODE*
+list_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
+{
+ NODE *last;
+ if (head->u3.node) {
+ last = head->u3.node->u2.node;
+ }
+ else {
+ last = head;
+ }
+ head->u2.argc += tail->u2.argc;
+ last->u3.node = tail;
+ if (tail->u3.node) {
+ head->u3.node->u2.node = tail->u3.node->u2.node;
+ }
+ else {
+ head->u3.node->u2.node = tail;
+ }
+ return head;
+}
+static int
+literal_concat0(struct parser_params *parser, VALUE head, VALUE tail)
+{
+ if (!rb_enc_compatible(head, tail)) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "string literal encodings differ (%s / %s)",
+ (rb_enc_get(head))->name,
+ (rb_enc_get(tail))->name);
+ rb_str_resize(head, 0);
+ rb_str_resize(tail, 0);
+ return 0;
+ }
+ rb_str_buf_append(head, tail);
+ return 1;
+}
+static NODE *
+literal_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
+{
+ enum node_type htype;
+ if (!head) return tail;
+ if (!tail) return head;
+ htype = ((int) (((((struct RNode*)(head)))->flags & (((VALUE)0x7f)<<8))>>8));
+ if (htype == NODE_EVSTR) {
+ NODE *node = node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(0));
+ head = list_append_gen(parser,node,head);
+ }
+ switch (((int) (((((struct RNode*)(tail)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR:
+ if (htype == NODE_STR) {
+ if (!literal_concat0(parser, head->u1.value, tail->u1.value)) {
+ error:
+ rb_gc_force_recycle((VALUE)head);
+ rb_gc_force_recycle((VALUE)tail);
+ return 0;
+ }
+ rb_gc_force_recycle((VALUE)tail);
+ }
+ else {
+ list_append_gen(parser,head,tail);
+ }
+ break;
+ case NODE_DSTR:
+ if (htype == NODE_STR) {
+ if (!literal_concat0(parser, head->u1.value, tail->u1.value))
+ goto error;
+ tail->u1.value = head->u1.value;
+ rb_gc_force_recycle((VALUE)head);
+ head = tail;
+ }
+ else {
+ ((struct RNode*)(tail))->flags=((((struct RNode*)(tail))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARRAY)<<8)&(((VALUE)0x7f)<<8)));
+ tail->u1.node = node_newnode(parser, (NODE_STR), (VALUE)(tail->u1.value), (VALUE)(0), (VALUE)(0));
+ list_concat_gen(parser,head,tail);
+ }
+ break;
+ case NODE_EVSTR:
+ if (htype == NODE_STR) {
+ ((struct RNode*)(head))->flags=((((struct RNode*)(head))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DSTR)<<8)&(((VALUE)0x7f)<<8)));
+ head->u2.argc = 1;
+ }
+ list_append_gen(parser,head,tail);
+ break;
+ }
+ return head;
+}
+static NODE *
+evstr2dstr_gen(struct parser_params *parser, NODE *node)
+{
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_EVSTR) {
+ node = list_append_gen(parser,node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(0)),node);
+ }
+ return node;
+}
+static NODE *
+new_evstr_gen(struct parser_params *parser, NODE *node)
+{
+ NODE *head = node;
+ if (node) {
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR: case NODE_DSTR: case NODE_EVSTR:
+ return node;
+ }
+ }
+ return node_newnode(parser, (NODE_EVSTR), (VALUE)(0), (VALUE)((head)), (VALUE)(0));
+}
+static NODE *
+call_bin_op_gen(struct parser_params *parser, NODE *recv, ID id, NODE *arg1)
+{
+ value_expr_gen(parser, (recv) = remove_begin(recv));
+ value_expr_gen(parser, (arg1) = remove_begin(arg1));
+ return node_newnode(parser, (NODE_CALL), (VALUE)(recv), (VALUE)(id), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(arg1), (VALUE)(1), (VALUE)(0))));
+}
+static NODE *
+call_uni_op_gen(struct parser_params *parser, NODE *recv, ID id)
+{
+ value_expr_gen(parser, (recv) = remove_begin(recv));
+ return node_newnode(parser, (NODE_CALL), (VALUE)(recv), (VALUE)(id), (VALUE)(0));
+}
+static NODE*
+match_op_gen(struct parser_params *parser, NODE *node1, NODE *node2)
+{
+ value_expr_gen(parser, (node1) = remove_begin(node1));
+ value_expr_gen(parser, (node2) = remove_begin(node2));
+ if (node1) {
+ switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ return node_newnode(parser, (NODE_MATCH2), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
+ case NODE_LIT:
+ if (rb_type((VALUE)(node1->u1.value)) == RUBY_T_REGEXP) {
+ return node_newnode(parser, (NODE_MATCH2), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
+ }
+ }
+ }
+ if (node2) {
+ switch (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ return node_newnode(parser, (NODE_MATCH3), (VALUE)(node2), (VALUE)(node1), (VALUE)(0));
+ case NODE_LIT:
+ if (rb_type((VALUE)(node2->u1.value)) == RUBY_T_REGEXP) {
+ return node_newnode(parser, (NODE_MATCH3), (VALUE)(node2), (VALUE)(node1), (VALUE)(0));
+ }
+ }
+ }
+ return node_newnode(parser, (NODE_CALL), (VALUE)(node1), (VALUE)(332), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node2), (VALUE)(1), (VALUE)(0))));
+}
+static NODE*
+gettable_gen(struct parser_params *parser, ID id)
+{
+ if (id == 288) {
+ return node_newnode(parser, (NODE_SELF), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 289) {
+ return node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 290) {
+ return node_newnode(parser, (NODE_TRUE), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 291) {
+ return node_newnode(parser, (NODE_FALSE), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 305) {
+ return node_newnode(parser, (NODE_STR), (VALUE)(rb_external_str_new_with_enc((parser->parser_ruby_sourcefile), strlen((parser->parser_ruby_sourcefile)), rb_filesystem_encoding())), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 304) {
+ return node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)((parser->parser_ruby_sourceline)))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 306) {
+ return node_newnode(parser, (NODE_LIT), (VALUE)(rb_enc_from_encoding(parser->enc)), (VALUE)(0), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x00)) {
+ if (dyna_in_block_gen(parser) && dvar_defined_gen(parser, id)) return node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ if (local_id_gen(parser, id)) return node_newnode(parser, (NODE_LVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ return node_newnode(parser, (NODE_VCALL), (VALUE)(0), (VALUE)(id), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x03)) {
+ return node_newnode(parser, (NODE_GVAR), (VALUE)(id), (VALUE)(0), (VALUE)(rb_global_entry(id)));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x01)) {
+ return node_newnode(parser, (NODE_IVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x05)) {
+ return node_newnode(parser, (NODE_CONST), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x06)) {
+ return node_newnode(parser, (NODE_CVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ }
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "identifier %s is not valid to get", rb_id2name(id));
+ return 0;
+}
+static NODE*
+assignable_gen(struct parser_params *parser, ID id, NODE *val)
+{
+ if (!id) return 0;
+ if (id == 288) {
+ parser_yyerror(parser, "Can't change the value of self");
+ }
+ else if (id == 289) {
+ parser_yyerror(parser, "Can't assign to nil");
+ }
+ else if (id == 290) {
+ parser_yyerror(parser, "Can't assign to true");
+ }
+ else if (id == 291) {
+ parser_yyerror(parser, "Can't assign to false");
+ }
+ else if (id == 305) {
+ parser_yyerror(parser, "Can't assign to __FILE__");
+ }
+ else if (id == 304) {
+ parser_yyerror(parser, "Can't assign to __LINE__");
+ }
+ else if (id == 306) {
+ parser_yyerror(parser, "Can't assign to __ENCODING__");
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x00)) {
+ if (dyna_in_block_gen(parser)) {
+ if (dvar_curr_gen(parser, id)) {
+ return node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else if (dvar_defined_gen(parser, id)) {
+ return node_newnode(parser, (NODE_DASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else if (local_id_gen(parser, id)) {
+ return node_newnode(parser, (NODE_LASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else{
+ local_var_gen(parser, id);;
+ return node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ }
+ else {
+ if (!local_id_gen(parser, id)) {
+ local_var_gen(parser, id);;
+ }
+ return node_newnode(parser, (NODE_LASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x03)) {
+ return node_newnode(parser, (NODE_GASGN), (VALUE)(id), (VALUE)(val), (VALUE)(rb_global_entry(id)));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x01)) {
+ return node_newnode(parser, (NODE_IASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x05)) {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ return node_newnode(parser, (NODE_CDECL), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x06)) {
+ return node_newnode(parser, (NODE_CVASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "identifier %s is not valid to set", rb_id2name(id));
+ }
+ return 0;
+}
+static void
+shadowing_lvar_gen(struct parser_params *parser, ID name)
+{
+ ID uscore;
+ do { static ID rb_intern_id_cache; if (!rb_intern_id_cache) rb_intern_id_cache = rb_intern2("_", strlen("_")); uscore = rb_intern_id_cache; } while (0);
+ if (uscore == name) return;
+ if (dyna_in_block_gen(parser)) {
+ if (dvar_curr_gen(parser, name)) {
+ parser_yyerror(parser, "duplicated argument name");
+ }
+ else if (dvar_defined_gen(parser, name) || local_id_gen(parser, name)) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "shadowing outer local variable - %s", rb_id2name(name));
+ vtable_add((parser->parser_lvtbl)->vars, name);
+ }
+ }
+ else {
+ if (local_id_gen(parser, name)) {
+ parser_yyerror(parser, "duplicated argument name");
+ }
+ }
+}
+static void
+new_bv_gen(struct parser_params *parser, ID name)
+{
+ if (!name) return;
+ if (!(((name)>376)&&((name)&0x07)==0x00)) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid local variable - %s",
+ rb_id2name(name));
+ return;
+ }
+ shadowing_lvar_gen(parser, name);
+ local_var_gen(parser, name);;
+}
+static NODE *
+aryset_gen(struct parser_params *parser, NODE *recv, NODE *idx)
+{
+ if (recv && ((int) (((((struct RNode*)(recv)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
+ recv = (NODE *)1;
+ return node_newnode(parser, (NODE_ATTRASGN), (VALUE)(recv), (VALUE)(337), (VALUE)(idx));
+}
+static void
+block_dup_check_gen(struct parser_params *parser, NODE *node1, NODE *node2)
+{
+ if (node2 && node1 && ((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BLOCK_PASS) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "both block arg and actual block given");
+ }
+}
+ID
+rb_id_attrset(ID id)
+{
+ id &= ~0x07;
+ id |= 0x04;
+ return id;
+}
+static NODE *
+attrset_gen(struct parser_params *parser, NODE *recv, ID id)
+{
+ if (recv && ((int) (((((struct RNode*)(recv)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
+ recv = (NODE *)1;
+ return node_newnode(parser, (NODE_ATTRASGN), (VALUE)(recv), (VALUE)(rb_id_attrset(id)), (VALUE)(0));
+}
+static void
+rb_backref_error_gen(struct parser_params *parser, NODE *node)
+{
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_NTH_REF:
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Can't set variable $%ld", node->u2.argc);
+ break;
+ case NODE_BACK_REF:
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Can't set variable $%c", (int)node->u2.argc);
+ break;
+ }
+}
+static NODE *
+arg_concat_gen(struct parser_params *parser, NODE *node1, NODE *node2)
+{
+ if (!node2) return node1;
+ switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_BLOCK_PASS:
+ node1->u3.node = arg_concat_gen(parser,node1->u3.node,node2);
+ return node1;
+ case NODE_ARGSPUSH:
+ if (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY) break;
+ node1->u2.node = list_concat_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node1->u2.node), (VALUE)(1), (VALUE)(0)),node2);
+ ((struct RNode*)(node1))->flags=((((struct RNode*)(node1))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARGSCAT)<<8)&(((VALUE)0x7f)<<8)));
+ return node1;
+ case NODE_ARGSCAT:
+ if (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY ||
+ ((int) (((((struct RNode*)(node1->u2.node)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY) break;
+ node1->u2.node = list_concat_gen(parser,node1->u2.node,node2);
+ return node1;
+ }
+ return node_newnode(parser, (NODE_ARGSCAT), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
+}
+static NODE *
+arg_append_gen(struct parser_params *parser, NODE *node1, NODE *node2)
+{
+ if (!node1) return node_newnode(parser, (NODE_ARRAY), (VALUE)(node2), (VALUE)(1), (VALUE)(0));
+ switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_ARRAY:
+ return list_append_gen(parser,node1,node2);
+ case NODE_BLOCK_PASS:
+ node1->u1.node = arg_append_gen(parser,node1->u1.node,node2);
+ return node1;
+ case NODE_ARGSPUSH:
+ node1->u2.node = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node1->u2.node), (VALUE)(1), (VALUE)(0)),node2);
+ ((struct RNode*)(node1))->flags=((((struct RNode*)(node1))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARGSCAT)<<8)&(((VALUE)0x7f)<<8)));
+ return node1;
+ }
+ return node_newnode(parser, (NODE_ARGSPUSH), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
+}
+static NODE *
+splat_array(NODE* node)
+{
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SPLAT) node = node->u1.node;
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) return node;
+ return 0;
+}
+static NODE *
+node_assign_gen(struct parser_params *parser, NODE *lhs, NODE *rhs)
+{
+ if (!lhs) return 0;
+ switch (((int) (((((struct RNode*)(lhs)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_GASGN:
+ case NODE_IASGN:
+ case NODE_IASGN2:
+ case NODE_LASGN:
+ case NODE_DASGN:
+ case NODE_DASGN_CURR:
+ case NODE_MASGN:
+ case NODE_CDECL:
+ case NODE_CVASGN:
+ lhs->u2.node = rhs;
+ break;
+ case NODE_ATTRASGN:
+ case NODE_CALL:
+ lhs->u3.node = arg_append_gen(parser,lhs->u3.node,rhs);
+ break;
+ default:
+ break;
+ }
+ return lhs;
+}
+static int
+value_expr_gen(struct parser_params *parser, NODE *node)
+{
+ int cond = 0;
+ if (!node) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "empty expression");
+ }
+ while (node) {
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DEFN:
+ case NODE_DEFS:
+ parser_warning(parser, node, "void value expression");
+ return ((VALUE)RUBY_Qfalse);
+ case NODE_RETURN:
+ case NODE_BREAK:
+ case NODE_NEXT:
+ case NODE_REDO:
+ case NODE_RETRY:
+ if (!cond) parser_yyerror(parser, "void value expression");
+ return ((VALUE)RUBY_Qfalse);
+ case NODE_BLOCK:
+ while (node->u3.node) {
+ node = node->u3.node;
+ }
+ node = node->u1.node;
+ break;
+ case NODE_BEGIN:
+ node = node->u2.node;
+ break;
+ case NODE_IF:
+ if (!node->u2.node) {
+ node = node->u3.node;
+ break;
+ }
+ else if (!node->u3.node) {
+ node = node->u2.node;
+ break;
+ }
+ if (!value_expr_gen(parser, (node->u2.node) = remove_begin(node->u2.node))) return ((VALUE)RUBY_Qfalse);
+ node = node->u3.node;
+ break;
+ case NODE_AND:
+ case NODE_OR:
+ cond = 1;
+ node = node->u2.node;
+ break;
+ default:
+ return ((VALUE)RUBY_Qtrue);
+ }
+ }
+ return ((VALUE)RUBY_Qtrue);
+}
+static void
+void_expr_gen(struct parser_params *parser, NODE *node)
+{
+ const char *useless = 0;
+ if (!(((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) return;
+ if (!node) return;
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_CALL:
+ switch (node->u2.id) {
+ case '+':
+ case '-':
+ case '*':
+ case '/':
+ case '%':
+ case 323:
+ case 321:
+ case 322:
+ case '|':
+ case '^':
+ case '&':
+ case 324:
+ case '>':
+ case 328:
+ case '<':
+ case 329:
+ case 325:
+ case 327:
+ useless = rb_id2name(node->u2.id);
+ break;
+ }
+ break;
+ case NODE_LVAR:
+ case NODE_DVAR:
+ case NODE_GVAR:
+ case NODE_IVAR:
+ case NODE_CVAR:
+ case NODE_NTH_REF:
+ case NODE_BACK_REF:
+ useless = "a variable";
+ break;
+ case NODE_CONST:
+ useless = "a constant";
+ break;
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_DSTR:
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ useless = "a literal";
+ break;
+ case NODE_COLON2:
+ case NODE_COLON3:
+ useless = "::";
+ break;
+ case NODE_DOT2:
+ useless = "..";
+ break;
+ case NODE_DOT3:
+ useless = "...";
+ break;
+ case NODE_SELF:
+ useless = "self";
+ break;
+ case NODE_NIL:
+ useless = "nil";
+ break;
+ case NODE_TRUE:
+ useless = "true";
+ break;
+ case NODE_FALSE:
+ useless = "false";
+ break;
+ case NODE_DEFINED:
+ useless = "defined?";
+ break;
+ }
+ if (useless) {
+ int line = (parser->parser_ruby_sourceline);
+ (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "useless use of %s in void context", useless);
+ (parser->parser_ruby_sourceline) = line;
+ }
+}
+static void
+void_stmts_gen(struct parser_params *parser, NODE *node)
+{
+ if (!(((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) return;
+ if (!node) return;
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) return;
+ for (;;) {
+ if (!node->u3.node) return;
+ void_expr_gen(parser, (node->u1.node));
+ node = node->u3.node;
+ }
+}
+static NODE *
+remove_begin(NODE *node)
+{
+ NODE **n = &node, *n1 = node;
+ while (n1 && ((int) (((((struct RNode*)(n1)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN && n1->u2.node) {
+ *n = n1 = n1->u2.node;
+ }
+ return node;
+}
+static void
+reduce_nodes_gen(struct parser_params *parser, NODE **body)
+{
+ NODE *node = *body;
+ if (!node) {
+ *body = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ return;
+ }
+ while (node) {
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ end:
+ case NODE_NIL:
+ *body = 0;
+ return;
+ case NODE_RETURN:
+ *body = node = node->u1.node;
+ continue;
+ case NODE_BEGIN:
+ *body = node = node->u2.node;
+ continue;
+ case NODE_BLOCK:
+ body = &node->u2.node->u1.node;
+ break;
+ case NODE_IF:
+ if (((!node->u2.node) ? (node->u3.node ? (body = &node->u3.node, 1) : 0) : (!node->u3.node) ? (body = &node->u2.node, 1) : (reduce_nodes_gen(parser,&node->u2.node), body = &node->u3.node, 1))) break;
+ return;
+ case NODE_CASE:
+ body = &node->u2.node;
+ break;
+ case NODE_WHEN:
+ if (!((!node->u2.node) ? (node->u3.node ? (body = &node->u3.node, 1) : 0) : (!node->u3.node) ? (body = &node->u2.node, 1) : (reduce_nodes_gen(parser,&node->u2.node), body = &node->u3.node, 1))) goto end;
+ break;
+ case NODE_ENSURE:
+ if (!((!node->u1.node) ? (node->u2.node ? (body = &node->u2.node, 1) : 0) : (!node->u2.node) ? (body = &node->u1.node, 1) : (reduce_nodes_gen(parser,&node->u1.node), body = &node->u2.node, 1))) goto end;
+ break;
+ case NODE_RESCUE:
+ if (!((!node->u1.node) ? (node->u2.node ? (body = &node->u2.node, 1) : 0) : (!node->u2.node) ? (body = &node->u1.node, 1) : (reduce_nodes_gen(parser,&node->u1.node), body = &node->u2.node, 1))) goto end;
+ break;
+ default:
+ return;
+ }
+ node = *body;
+ }
+}
+static int
+assign_in_cond(struct parser_params *parser, NODE *node)
+{
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_MASGN:
+ parser_yyerror(parser, "multiple assignment in conditional");
+ return 1;
+ case NODE_LASGN:
+ case NODE_DASGN:
+ case NODE_GASGN:
+ case NODE_IASGN:
+ break;
+ default:
+ return 0;
+ }
+ switch (((int) (((((struct RNode*)(node->u2.node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_NIL:
+ case NODE_TRUE:
+ case NODE_FALSE:
+ parser_warn(parser, node->u2.node, "found = in conditional, should be ==");
+ return 1;
+ case NODE_DSTR:
+ case NODE_XSTR:
+ case NODE_DXSTR:
+ case NODE_EVSTR:
+ case NODE_DREGX:
+ default:
+ break;
+ }
+ return 1;
+}
+static void
+warn_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
+{
+ if (!e_option_supplied(parser)) parser_warn(parser, node, str);
+}
+static void
+warning_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
+{
+ if (!e_option_supplied(parser)) parser_warning(parser, node, str);
+}
+static void
+fixup_nodes(NODE **rootnode)
+{
+ NODE *node, *next, *head;
+ for (node = *rootnode; node; node = next) {
+ enum node_type type;
+ VALUE val;
+ next = node->u3.node;
+ head = node->u1.node;
+ rb_gc_force_recycle((VALUE)node);
+ *rootnode = next;
+ switch (type = ((int) (((((struct RNode*)(head)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DOT2:
+ case NODE_DOT3:
+ val = rb_range_new(head->u1.node->u1.value, head->u2.node->u1.value,
+ type == NODE_DOT3 ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
+ rb_gc_force_recycle((VALUE)head->u1.node);
+ rb_gc_force_recycle((VALUE)head->u2.node);
+ ((struct RNode*)(head))->flags=((((struct RNode*)(head))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
+ head->u1.value = val;
+ break;
+ default:
+ break;
+ }
+ }
+}
+static NODE *cond0(struct parser_params*,NODE*);
+static NODE*
+range_op(struct parser_params *parser, NODE *node)
+{
+ enum node_type type;
+ if (node == 0) return 0;
+ type = ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8));
+ value_expr_gen(parser, (node) = remove_begin(node));
+ if (type == NODE_LIT && (((long)(node->u1.value))&RUBY_FIXNUM_FLAG)) {
+ warn_unless_e_option(parser, node, "integer literal in conditional range");
+ return node_newnode(parser, (NODE_CALL), (VALUE)(node), (VALUE)(325), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$.") ? __extension__ (rb_intern2("$.", strlen("$."))) : (rb_intern)("$."))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$.") ? __extension__ (rb_intern2("$.", strlen("$."))) : (rb_intern)("$.")))))), (VALUE)(1), (VALUE)(0))));
+ }
+ return cond0(parser, node);
+}
+static int
+literal_node(NODE *node)
+{
+ if (!node) return 1;
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_DSTR:
+ case NODE_EVSTR:
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ case NODE_DSYM:
+ return 2;
+ case NODE_TRUE:
+ case NODE_FALSE:
+ case NODE_NIL:
+ return 1;
+ }
+ return 0;
+}
+static NODE*
+cond0(struct parser_params *parser, NODE *node)
+{
+ if (node == 0) return 0;
+ assign_in_cond(parser, node);
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DSTR:
+ case NODE_EVSTR:
+ case NODE_STR:
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "string literal in condition");
+ break;
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ warning_unless_e_option(parser, node, "regex literal in condition");
+ return node_newnode(parser, (NODE_MATCH2), (VALUE)(node), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)(0));
+ case NODE_AND:
+ case NODE_OR:
+ node->u1.node = cond0(parser, node->u1.node);
+ node->u2.node = cond0(parser, node->u2.node);
+ break;
+ case NODE_DOT2:
+ case NODE_DOT3:
+ node->u1.node = range_op(parser, node->u1.node);
+ node->u2.node = range_op(parser, node->u2.node);
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DOT2) ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_FLIP2)<<8)&(((VALUE)0x7f)<<8)));
+ else if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DOT3) ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_FLIP3)<<8)&(((VALUE)0x7f)<<8)));
+ if (!e_option_supplied(parser)) {
+ int b = literal_node(node->u1.node);
+ int e = literal_node(node->u2.node);
+ if ((b == 1 && e == 1) || (b + e >= 2 && (((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0))) {
+ parser_warn(parser, node, "range literal in condition");
+ }
+ }
+ break;
+ case NODE_DSYM:
+ parser_warning(parser, node, "literal in condition");
+ break;
+ case NODE_LIT:
+ if (rb_type((VALUE)(node->u1.value)) == RUBY_T_REGEXP) {
+ warn_unless_e_option(parser, node, "regex literal in condition");
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_MATCH)<<8)&(((VALUE)0x7f)<<8)));
+ }
+ else {
+ parser_warning(parser, node, "literal in condition");
+ }
+ default:
+ break;
+ }
+ return node;
+}
+static NODE*
+cond_gen(struct parser_params *parser, NODE *node)
+{
+ if (node == 0) return 0;
+ return cond0(parser, node);
+}
+static NODE*
+logop_gen(struct parser_params *parser, enum node_type type, NODE *left, NODE *right)
+{
+ value_expr_gen(parser, (left) = remove_begin(left));
+ if (left && ((int) (((((struct RNode*)(left)))->flags & (((VALUE)0x7f)<<8))>>8)) == type) {
+ NODE *node = left, *second;
+ while ((second = node->u2.node) != 0 && ((int) (((((struct RNode*)(second)))->flags & (((VALUE)0x7f)<<8))>>8)) == type) {
+ node = second;
+ }
+ node->u2.node = node_newnode(parser, (type), (VALUE)(second), (VALUE)(right), (VALUE)(0));
+ return left;
+ }
+ return node_newnode(parser, (type), (VALUE)(left), (VALUE)(right), (VALUE)(0));
+}
+static void
+no_blockarg(struct parser_params *parser, NODE *node)
+{
+ if (node && ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BLOCK_PASS) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "block argument should not be given");
+ }
+}
+static NODE *
+ret_args_gen(struct parser_params *parser, NODE *node)
+{
+ if (node) {
+ no_blockarg(parser, node);
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) {
+ if (node->u3.node == 0) {
+ node = node->u1.node;
+ }
+ else {
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_VALUES)<<8)&(((VALUE)0x7f)<<8)));
+ }
+ }
+ }
+ return node;
+}
+static NODE *
+new_yield_gen(struct parser_params *parser, NODE *node)
+{
+ long state = ((VALUE)RUBY_Qtrue);
+ if (node) {
+ no_blockarg(parser, node);
+ if (node && ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SPLAT) {
+ state = ((VALUE)RUBY_Qtrue);
+ }
+ }
+ else {
+ state = ((VALUE)RUBY_Qfalse);
+ }
+ return node_newnode(parser, (NODE_YIELD), (VALUE)(node), (VALUE)(0), (VALUE)(state));
+}
+static NODE*
+negate_lit(NODE *node)
+{
+ switch (rb_type((VALUE)(node->u1.value))) {
+ case RUBY_T_FIXNUM:
+ node->u1.value = ((VALUE)(((long)(-(((long)node->u1.value)>>(int)1)))<<1 | RUBY_FIXNUM_FLAG));
+ break;
+ case RUBY_T_BIGNUM:
+ node->u1.value = rb_funcall(node->u1.value,322,0,0);
+ break;
+ case RUBY_T_FLOAT:
+ ((struct RFloat*)(node->u1.value))->float_value = -(((struct RFloat*)(node->u1.value))->float_value);
+ break;
+ default:
+ break;
+ }
+ return node;
+}
+static NODE *
+arg_blk_pass(NODE *node1, NODE *node2)
+{
+ if (node2) {
+ node2->u1.node = node1;
+ return node2;
+ }
+ return node1;
+}
+static NODE*
+new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, ID b)
+{
+ int saved_line = (parser->parser_ruby_sourceline);
+ NODE *node;
+ NODE *i1, *i2 = 0;
+ node = node_newnode(parser, (NODE_ARGS), (VALUE)(o), (VALUE)(m ? m->u2.argc : 0), (VALUE)(0));
+ i1 = m ? m->u3.node : 0;
+ node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(r), (VALUE)(b), (VALUE)(0));
+ if (p) {
+ i2 = p->u3.node;
+ node->u3.node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(p->u1.id), (VALUE)(p->u2.argc), (VALUE)(0));
+ }
+ else if (i1) {
+ node->u3.node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ if (i1 || i2) {
+ node->u3.node->u3.node->u3.node = node_newnode(parser, (NODE_AND), (VALUE)(i1), (VALUE)(i2), (VALUE)(0));
+ }
+ (parser->parser_ruby_sourceline) = saved_line;
+ return node;
+}
+static void
+local_push_gen(struct parser_params *parser, int inherit_dvars)
+{
+ struct local_vars *local;
+ local = (struct local_vars*)ruby_xmalloc(sizeof(struct local_vars));
+ local->prev = (parser->parser_lvtbl);
+ local->args = vtable_alloc(0);
+ local->vars = vtable_alloc(inherit_dvars ? ((void*)1) : ((void *)0));
+ (parser->parser_lvtbl) = local;
+}
+static void
+local_pop_gen(struct parser_params *parser)
+{
+ struct local_vars *local = (parser->parser_lvtbl)->prev;
+ vtable_free((parser->parser_lvtbl)->args);
+ vtable_free((parser->parser_lvtbl)->vars);
+ ruby_xfree((parser->parser_lvtbl));
+ (parser->parser_lvtbl) = local;
+}
+static ID*
+vtable_tblcpy(ID *buf, const struct vtable *src)
+{
+ int i, cnt = vtable_size(src);
+ if (cnt > 0) {
+ buf[0] = cnt;
+ for (i = 0; i < cnt; i++) {
+ buf[i] = src->tbl[i];
+ }
+ return buf;
+ }
+ return 0;
+}
+static ID*
+local_tbl_gen(struct parser_params *parser)
+{
+ int cnt = vtable_size((parser->parser_lvtbl)->args) + vtable_size((parser->parser_lvtbl)->vars);
+ ID *buf;
+ if (cnt <= 0) return 0;
+ buf = (ID*)ruby_xmalloc2((cnt + 1),sizeof(ID));
+ vtable_tblcpy(buf+1, (parser->parser_lvtbl)->args);
+ vtable_tblcpy(buf+vtable_size((parser->parser_lvtbl)->args)+1, (parser->parser_lvtbl)->vars);
+ buf[0] = cnt;
+ return buf;
+}
+static int
+arg_var_gen(struct parser_params *parser, ID id)
+{
+ vtable_add((parser->parser_lvtbl)->args, id);
+ return vtable_size((parser->parser_lvtbl)->args) - 1;
+}
+static int
+local_var_gen(struct parser_params *parser, ID id)
+{
+ vtable_add((parser->parser_lvtbl)->vars, id);
+ return vtable_size((parser->parser_lvtbl)->vars) - 1;
+}
+static int
+local_id_gen(struct parser_params *parser, ID id)
+{
+ struct vtable *vars, *args;
+ vars = (parser->parser_lvtbl)->vars;
+ args = (parser->parser_lvtbl)->args;
+ while (vars && ((VALUE)(vars->prev) & ~(VALUE)3)) {
+ vars = vars->prev;
+ args = args->prev;
+ }
+ if (vars && vars->prev == ((void*)1)) {
+ return rb_local_defined(id);
+ }
+ else {
+ return (vtable_included(args, id) ||
+ vtable_included(vars, id));
+ }
+}
+static void
+dyna_push_gen(struct parser_params *parser)
+{
+ (parser->parser_lvtbl)->args = vtable_alloc((parser->parser_lvtbl)->args);
+ (parser->parser_lvtbl)->vars = vtable_alloc((parser->parser_lvtbl)->vars);
+}
+static void
+dyna_pop_gen(struct parser_params *parser)
+{
+ struct vtable *tmp;
+ tmp = (parser->parser_lvtbl)->args;
+ (parser->parser_lvtbl)->args = (parser->parser_lvtbl)->args->prev;
+ vtable_free(tmp);
+ tmp = (parser->parser_lvtbl)->vars;
+ (parser->parser_lvtbl)->vars = (parser->parser_lvtbl)->vars->prev;
+ vtable_free(tmp);
+}
+static int
+dyna_in_block_gen(struct parser_params *parser)
+{
+ return ((VALUE)((parser->parser_lvtbl)->vars) & ~(VALUE)3) && (parser->parser_lvtbl)->vars->prev != ((void *)0);
+}
+static int
+dvar_defined_gen(struct parser_params *parser, ID id)
+{
+ struct vtable *vars, *args;
+ args = (parser->parser_lvtbl)->args;
+ vars = (parser->parser_lvtbl)->vars;
+ while (((VALUE)(vars) & ~(VALUE)3)) {
+ if (vtable_included(args, id)) {
+ return 1;
+ }
+ if (vtable_included(vars, id)) {
+ return 1;
+ }
+ args = args->prev;
+ vars = vars->prev;
+ }
+ if (vars == ((void*)1)) {
+ return rb_dvar_defined(id);
+ }
+ return 0;
+}
+static int
+dvar_curr_gen(struct parser_params *parser, ID id)
+{
+ return (vtable_included((parser->parser_lvtbl)->args, id) ||
+ vtable_included((parser->parser_lvtbl)->vars, id));
+}
+VALUE rb_reg_compile(VALUE str, int options);
+VALUE rb_reg_check_preprocess(VALUE);
+static void
+reg_fragment_setenc_gen(struct parser_params* parser, VALUE str, int options)
+{
+ int c = (((options)>>8)&0xff);
+ if (c) {
+ int opt, idx;
+ rb_char_to_option_kcode(c, &opt, &idx);
+ if (idx != (((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) != 1023 ? ((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) : rb_enc_get_index(str)) &&
+ rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
+ goto error;
+ }
+ do { VALUE rb_encoding_set_obj = (str); int encoding_set_enc_index = (idx); if (encoding_set_enc_index < 1023) do { ((struct RBasic*)(rb_encoding_set_obj))->flags &= ~(1023<<(12 +10)); ((struct RBasic*)(rb_encoding_set_obj))->flags |= (encoding_set_enc_index) << (12 +10);} while (0); else rb_enc_set_index(rb_encoding_set_obj, encoding_set_enc_index); } while (0);
+ }
+ else if (((options)&32)) {
+ if (!(((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) == 0) &&
+ rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
+ c = 'n';
+ goto error;
+ }
+ rb_enc_associate(str, rb_ascii8bit_encoding());
+ }
+ else if (parser->enc == rb_usascii_encoding()) {
+ if (rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
+ rb_enc_associate(str, rb_usascii_encoding());
+ }
+ else {
+ rb_enc_associate(str, rb_ascii8bit_encoding());
+ }
+ }
+ return;
+ error:
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline),
+ "regexp encoding option '%c' differs from source encoding '%s'",
+ c, (rb_enc_get(str))->name);
+}
+static void
+reg_fragment_check_gen(struct parser_params* parser, VALUE str, int options)
+{
+ VALUE err;
+ reg_fragment_setenc_gen(parser, str, options);
+ err = rb_reg_check_preprocess(str);
+ if (err != ((VALUE)RUBY_Qnil)) {
+ err = rb_obj_as_string(err);
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", (!(((struct RBasic*)(err))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(err))->as.ary : ((struct RString*)(err))->as.heap.ptr));
+ (*(volatile VALUE *)&(err));
+ }
+}
+typedef struct {
+ struct parser_params* parser;
+ rb_encoding *enc;
+ NODE *succ_block;
+ NODE *fail_block;
+ int num;
+} reg_named_capture_assign_t;
+static int
+reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end,
+ int back_num, int *back_refs, OnigRegex regex, void *arg0)
+{
+ reg_named_capture_assign_t *arg = (reg_named_capture_assign_t*)arg0;
+ struct parser_params* parser = arg->parser;
+ rb_encoding *enc = arg->enc;
+ int len = name_end - name;
+ const char *s = (const char *)name;
+ ID var;
+ arg->num++;
+ if (arg->succ_block == 0) {
+ arg->succ_block = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ arg->fail_block = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ if (!len || (*name != '_' && ((unsigned long)((unsigned char)(*name)) < 128) && !(enc)->is_code_ctype(*name,6,enc)) ||
+ rb_reserved_word(s, len) || !rb_enc_symname2_p(s, len, enc)) {
+ return ST_CONTINUE;
+ }
+ var = rb_intern3(s, len, enc);
+ if (dvar_defined_gen(parser, var) || local_id_gen(parser, var)) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "named capture conflicts a local variable - %s", rb_id2name(var));
+ }
+ arg->succ_block = block_append_gen(parser,arg->succ_block,newline_node(node_assign_gen(parser, assignable_gen(parser, var, 0), node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,(__builtin_constant_p("$~") ? __extension__ (rb_intern2("$~", strlen("$~"))) : (rb_intern)("$~")))), (VALUE)(idAREF), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)(var)<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0)))))));
+ arg->fail_block = block_append_gen(parser,arg->fail_block,newline_node(node_assign_gen(parser, assignable_gen(parser, var, 0), node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)RUBY_Qnil)), (VALUE)(0), (VALUE)(0)))));
+ return ST_CONTINUE;
+}
+static NODE *
+reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match)
+{
+ reg_named_capture_assign_t arg;
+ arg.parser = parser;
+ arg.enc = rb_enc_get(regexp);
+ arg.succ_block = 0;
+ arg.fail_block = 0;
+ arg.num = 0;
+ onig_foreach_name(((struct RRegexp*)(regexp))->ptr, reg_named_capture_assign_iter, (void*)&arg);
+ if (arg.num == 0)
+ return match;
+ return
+ block_append_gen(parser,newline_node(match),node_newnode(parser, (NODE_IF), (VALUE)(gettable_gen(parser,(__builtin_constant_p("$~") ? __extension__ (rb_intern2("$~", strlen("$~"))) : (rb_intern)("$~")))), (VALUE)(block_append_gen(parser,newline_node(arg.succ_block),newline_node( node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,(__builtin_constant_p("$~") ? __extension__ (rb_intern2("$~", strlen("$~"))) : (rb_intern)("$~")))), (VALUE)((__builtin_constant_p("begin") ? __extension__ (rb_intern2("begin", strlen("begin"))) : (rb_intern)("begin"))), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0))))))), (VALUE)(block_append_gen(parser,newline_node(arg.fail_block),newline_node( node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)RUBY_Qnil)), (VALUE)(0), (VALUE)(0)))))));
+}
+static VALUE
+reg_compile_gen(struct parser_params* parser, VALUE str, int options)
+{
+ VALUE re;
+ VALUE err;
+ reg_fragment_setenc_gen(parser, str, options);
+ err = rb_errinfo();
+ re = rb_reg_compile(str, options & 0xff);
+ if (((VALUE)(re) == ((VALUE)RUBY_Qnil))) {
+ ID mesg = (__builtin_constant_p("mesg") ? __extension__ (rb_intern2("mesg", strlen("mesg"))) : (rb_intern)("mesg"));
+ VALUE m = rb_attr_get(rb_errinfo(), mesg);
+ rb_set_errinfo(err);
+ if (!((VALUE)(err) == ((VALUE)RUBY_Qnil))) {
+ rb_str_append(rb_str_cat(rb_attr_get(err, mesg), "\n", 1), m);
+ }
+ else {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", (!(((struct RBasic*)(m))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(m))->as.ary : ((struct RString*)(m))->as.heap.ptr));
+ }
+ return ((VALUE)RUBY_Qnil);
+ }
+ return re;
+}
+void
+rb_gc_mark_parser(void)
+{
+}
+NODE*
+rb_parser_append_print(VALUE vparser, NODE *node)
+{
+ NODE *prelude = 0;
+ NODE *scope = node;
+ struct parser_params *parser;
+ if (!node) return node;
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ node = node->u2.node;
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_PRELUDE) {
+ prelude = node;
+ node = node->u2.node;
+ }
+ node = block_append_gen(parser,node,node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((__builtin_constant_p("print") ? __extension__ (rb_intern2("print", strlen("print"))) : (rb_intern)("print"))), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)(1), (VALUE)(0)))));
+ if (prelude) {
+ prelude->u2.node = node;
+ scope->u2.node = prelude;
+ }
+ else {
+ scope->u2.node = node;
+ }
+ return scope;
+}
+NODE *
+rb_parser_while_loop(VALUE vparser, NODE *node, int chop, int split)
+{
+ NODE *prelude = 0;
+ NODE *scope = node;
+ struct parser_params *parser;
+ if (!node) return node;
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ node = node->u2.node;
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_PRELUDE) {
+ prelude = node;
+ node = node->u2.node;
+ }
+ if (split) {
+ node = block_append_gen(parser,node_newnode(parser, (NODE_GASGN), (VALUE)((__builtin_constant_p("$F") ? __extension__ (rb_intern2("$F", strlen("$F"))) : (rb_intern)("$F"))), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)((__builtin_constant_p("split") ? __extension__ (rb_intern2("split", strlen("split"))) : (rb_intern)("split"))), (VALUE)(0))), (VALUE)(rb_global_entry((__builtin_constant_p("$F") ? __extension__ (rb_intern2("$F", strlen("$F"))) : (rb_intern)("$F"))))),node);
+ }
+ if (chop) {
+ node = block_append_gen(parser,node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)((__builtin_constant_p("chop!") ? __extension__ (rb_intern2("chop!", strlen("chop!"))) : (rb_intern)("chop!"))), (VALUE)(0)),node);
+ }
+ node = node_newnode(parser, (NODE_OPT_N), (VALUE)(0), (VALUE)(node), (VALUE)(0));
+ if (prelude) {
+ prelude->u2.node = node;
+ scope->u2.node = prelude;
+ }
+ else {
+ scope->u2.node = node;
+ }
+ return scope;
+}
+static const struct {
+ ID token;
+ const char *name;
+} op_tbl[] = {
+ {334, ".."},
+ {335, "..."},
+ {'+', "+(binary)"},
+ {'-', "-(binary)"},
+ {323, "**"},
+ {321, "+@"},
+ {322, "-@"},
+ {324, "<=>"},
+ {328, ">="},
+ {329, "<="},
+ {325, "=="},
+ {326, "==="},
+ {327, "!="},
+ {332, "=~"},
+ {333, "!~"},
+ {336, "[]"},
+ {337, "[]="},
+ {338, "<<"},
+ {339, ">>"},
+ {340, "::"},
+};
+static struct symbols {
+ ID last_id;
+ st_table *sym_id;
+ st_table *id_str;
+ st_table *ivar2_id;
+ st_table *id_ivar2;
+ VALUE op_sym[376];
+} global_symbols = {tLAST_ID};
+static const struct st_hash_type symhash = {
+ rb_str_hash_cmp,
+ rb_str_hash,
+};
+struct ivar2_key {
+ ID id;
+ VALUE klass;
+};
+static int
+ivar2_cmp(struct ivar2_key *key1, struct ivar2_key *key2)
+{
+ if (key1->id == key2->id && key1->klass == key2->klass) {
+ return 0;
+ }
+ return 1;
+}
+static int
+ivar2_hash(struct ivar2_key *key)
+{
+ return (key->id << 8) ^ (key->klass >> 2);
+}
+static const struct st_hash_type ivar2_hash_type = {
+ ivar2_cmp,
+ ivar2_hash,
+};
+void
+Init_sym(void)
+{
+ global_symbols.sym_id = st_init_table_with_size(&symhash, 1000);
+ global_symbols.id_str = st_init_numtable_with_size(1000);
+ global_symbols.ivar2_id = st_init_table_with_size(&ivar2_hash_type, 1000);
+ global_symbols.id_ivar2 = st_init_numtable_with_size(1000);
+ Init_id();
+}
+void
+rb_gc_mark_symbols(void)
+{
+ rb_mark_tbl(global_symbols.id_str);
+ rb_gc_mark_locations(global_symbols.op_sym,
+ global_symbols.op_sym + 376);
+}
+static ID
+internal_id_gen(struct parser_params *parser)
+{
+ ID id = (ID)vtable_size((parser->parser_lvtbl)->args) + (ID)vtable_size((parser->parser_lvtbl)->vars);
+ id += ((376 - 0x07) >> 3) + 1;
+ return 0x07 | (id << 3);
+}
+static int
+is_special_global_name(const char *m, const char *e, rb_encoding *enc)
+{
+ int mb = 0;
+ if (m >= e) return 0;
+ switch (*m) {
+ case '~': case '*': case '$': case '?': case '!': case '@':
+ case '/': case '\\': case ';': case ',': case '.': case '=':
+ case ':': case '<': case '>': case '\"':
+ case '&': case '`': case '\'': case '+':
+ case '0':
+ ++m;
+ break;
+ case '-':
+ ++m;
+ if (m < e && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) {
+ if (!((unsigned long)((unsigned char)(*m)) < 128)) mb = 1;
+ m += rb_enc_mbclen(m, e, enc);
+ }
+ break;
+ default:
+ if (!(enc)->is_code_ctype(*m,4,enc)) return 0;
+ do {
+ if (!((unsigned long)((unsigned char)(*m)) < 128)) mb = 1;
+ ++m;
+ } while ((enc)->is_code_ctype(*m,4,enc));
+ }
+ return m == e ? mb + 1 : 0;
+}
+int
+rb_symname_p(const char *name)
+{
+ return rb_enc_symname_p(name, rb_ascii8bit_encoding());
+}
+int
+rb_enc_symname_p(const char *name, rb_encoding *enc)
+{
+ return rb_enc_symname2_p(name, strlen(name), enc);
+}
+int
+rb_enc_symname2_p(const char *name, int len, rb_encoding *enc)
+{
+ const char *m = name;
+ const char *e = m + len;
+ int localid = ((VALUE)RUBY_Qfalse);
+ if (!m) return ((VALUE)RUBY_Qfalse);
+ switch (*m) {
+ case '\0':
+ return ((VALUE)RUBY_Qfalse);
+ case '$':
+ if (is_special_global_name(++m, e, enc)) return ((VALUE)RUBY_Qtrue);
+ goto id;
+ case '@':
+ if (*++m == '@') ++m;
+ goto id;
+ case '<':
+ switch (*++m) {
+ case '<': ++m; break;
+ case '=': if (*++m == '>') ++m; break;
+ default: break;
+ }
+ break;
+ case '>':
+ switch (*++m) {
+ case '>': case '=': ++m; break;
+ }
+ break;
+ case '=':
+ switch (*++m) {
+ case '~': ++m; break;
+ case '=': if (*++m == '=') ++m; break;
+ default: return ((VALUE)RUBY_Qfalse);
+ }
+ break;
+ case '*':
+ if (*++m == '*') ++m;
+ break;
+ case '+': case '-':
+ if (*++m == '@') ++m;
+ break;
+ case '|': case '^': case '&': case '/': case '%': case '~': case '`':
+ ++m;
+ break;
+ case '[':
+ if (*++m != ']') return ((VALUE)RUBY_Qfalse);
+ if (*++m == '=') ++m;
+ break;
+ case '!':
+ switch (*++m) {
+ case '\0': return ((VALUE)RUBY_Qtrue);
+ case '=': case '~': ++m; break;
+ default: return ((VALUE)RUBY_Qfalse);
+ }
+ break;
+ default:
+ localid = !(enc)->is_code_ctype(*m,10,enc);
+ id:
+ if (m >= e || (*m != '_' && !(enc)->is_code_ctype(*m,1,enc) && ((unsigned long)((unsigned char)(*m)) < 128)))
+ return ((VALUE)RUBY_Qfalse);
+ while (m < e && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) m += rb_enc_mbclen(m, e, enc);
+ if (localid) {
+ switch (*m) {
+ case '!': case '?': case '=': ++m;
+ }
+ }
+ break;
+ }
+ return *m ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
+}
+static ID
+register_symid(ID id, const char *name, long len, rb_encoding *enc)
+{
+ VALUE str = rb_enc_str_new(name, len, enc);
+ do {if ((!(((VALUE)((str)) & RUBY_IMMEDIATE_MASK) || !(((VALUE)((str)) & ~((VALUE)RUBY_Qnil)) != 0)) && (((struct RBasic*)((str)))->flags & RUBY_T_MASK) != RUBY_T_NODE)) ((struct RBasic*)((str)))->flags |= ((((VALUE)1)<<11));} while (0);
+ st_add_direct(global_symbols.sym_id, (st_data_t)str, id);
+ st_add_direct(global_symbols.id_str, id, (st_data_t)str);
+ return id;
+}
+ID
+rb_intern3(const char *name, long len, rb_encoding *enc)
+{
+ const char *m = name;
+ const char *e = m + len;
+ unsigned char c;
+ VALUE str;
+ ID id;
+ int last;
+ int mb;
+ struct RString fake_str;
+ fake_str.basic.flags = RUBY_T_STRING|(((VALUE)1)<<(12 +1))|(((VALUE)1)<<11);
+ fake_str.basic.klass = rb_cString;
+ fake_str.as.heap.len = len;
+ fake_str.as.heap.ptr = (char *)name;
+ fake_str.as.heap.aux.capa = len;
+ str = (VALUE)&fake_str;
+ rb_enc_associate(str, enc);
+ if (st_lookup(global_symbols.sym_id, str, (st_data_t *)&id))
+ return id;
+ if (rb_cString && !((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
+ id = 0x07;
+ goto new_id;
+ }
+ last = len-1;
+ id = 0;
+ switch (*m) {
+ case '$':
+ id |= 0x03;
+ if ((mb = is_special_global_name(++m, e, enc)) != 0) {
+ if (!--mb) enc = rb_ascii8bit_encoding();
+ goto new_id;
+ }
+ break;
+ case '@':
+ if (m[1] == '@') {
+ m++;
+ id |= 0x06;
+ }
+ else {
+ id |= 0x01;
+ }
+ m++;
+ break;
+ default:
+ c = m[0];
+ if (c != '_' && ((c) < 128) && (enc)->is_code_ctype(c,8,enc)) {
+ int i;
+ if (len == 1) {
+ id = c;
+ goto id_register;
+ }
+ for (i = 0; i < (sizeof(op_tbl) / sizeof(op_tbl[0])); i++) {
+ if (*op_tbl[i].name == *m &&
+ __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (op_tbl[i].name) && __builtin_constant_p (m) && (__s1_len = strlen (op_tbl[i].name), __s2_len = strlen (m), (!((size_t)(const void *)((op_tbl[i].name) + 1) - (size_t)(const void *)(op_tbl[i].name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((m) + 1) - (size_t)(const void *)(m) == 1) || __s2_len >= 4)) ? __builtin_strcmp (op_tbl[i].name, m) : (__builtin_constant_p (op_tbl[i].name) && ((size_t)(const void *)((op_tbl[i].name) + 1) - (size_t)(const void *)(op_tbl[i].name) == 1) && (__s1_len = strlen (op_tbl[i].name), __s1_len < 4) ? (__builtin_constant_p (m) && ((size_t)(const void *)((m) + 1) - (size_t)(const void *)(m) == 1) ? __builtin_strcmp (op_tbl[i].name, m) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (m); register int __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (m) && ((size_t)(const void *)((m) + 1) - (size_t)(const void *)(m) == 1) && (__s2_len = strlen (m), __s2_len < 4) ? (__builtin_constant_p (op_tbl[i].name) && ((size_t)(const void *)((op_tbl[i].name) + 1) - (size_t)(const void *)(op_tbl[i].name) == 1) ? __builtin_strcmp (op_tbl[i].name, m) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (op_tbl[i].name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (m))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (m))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (m))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (m))[3]); } } __result; }))) : __builtin_strcmp (op_tbl[i].name, m)))); }) == 0) {
+ id = op_tbl[i].token;
+ goto id_register;
+ }
+ }
+ }
+ if (m[last] == '=') {
+ id = rb_intern3(name, last, enc);
+ if (id > 376 && !(((id)>376)&&((id)&0x07)==0x04)) {
+ enc = rb_enc_get(rb_id2str(id));
+ id = rb_id_attrset(id);
+ goto id_register;
+ }
+ id = 0x04;
+ }
+ else if ((enc)->is_code_ctype(m[0],10,enc)) {
+ id = 0x05;
+ }
+ else {
+ id = 0x00;
+ }
+ break;
+ }
+ mb = 0;
+ if (!(enc)->is_code_ctype(*m,4,enc)) {
+ while (m <= name + last && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) {
+ if (((unsigned long)((unsigned char)(*m)) < 128)) {
+ m++;
+ }
+ else {
+ mb = 1;
+ m += rb_enc_mbclen(m, e, enc);
+ }
+ }
+ }
+ if (m - name < len) id = 0x07;
+ if (enc != rb_usascii_encoding()) {
+ if (!mb) {
+ for (; m <= name + len; ++m) {
+ if (!((unsigned long)((unsigned char)(*m)) < 128)) goto mbstr;
+ }
+ enc = rb_usascii_encoding();
+ }
+ mbstr:;
+ }
+ new_id:
+ id |= ++global_symbols.last_id << 3;
+ id_register:
+ return register_symid(id, name, len, enc);
+}
+ID
+rb_intern2(const char *name, long len)
+{
+ return rb_intern3(name, len, rb_usascii_encoding());
+}
+ID
+rb_intern(const char *name)
+{
+ return rb_intern2(name, strlen(name));
+}
+ID
+rb_intern_str(VALUE str)
+{
+ rb_encoding *enc;
+ ID id;
+ if (rb_enc_str_coderange(str) == (((VALUE)1)<<(12 +8))) {
+ enc = rb_usascii_encoding();
+ }
+ else {
+ enc = rb_enc_get(str);
+ }
+ id = rb_intern3((!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr), (!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(str))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(str))->as.heap.len), enc);
+ (*(volatile VALUE *)&(str));
+ return id;
+}
+VALUE
+rb_id2str(ID id)
+{
+ st_data_t data;
+ if (id < 376) {
+ int i = 0;
+ if (rb_ispunct(id)) {
+ VALUE str = global_symbols.op_sym[i = (int)id];
+ if (!str) {
+ char name[2];
+ name[0] = (char)id;
+ name[1] = 0;
+ str = rb_usascii_str_new(name, 1);
+ do {if ((!(((VALUE)((str)) & RUBY_IMMEDIATE_MASK) || !(((VALUE)((str)) & ~((VALUE)RUBY_Qnil)) != 0)) && (((struct RBasic*)((str)))->flags & RUBY_T_MASK) != RUBY_T_NODE)) ((struct RBasic*)((str)))->flags |= ((((VALUE)1)<<11));} while (0);
+ global_symbols.op_sym[i] = str;
+ }
+ return str;
+ }
+ for (i = 0; i < (sizeof(op_tbl) / sizeof(op_tbl[0])); i++) {
+ if (op_tbl[i].token == id) {
+ VALUE str = global_symbols.op_sym[i];
+ if (!str) {
+ str = __extension__ ( { (__builtin_constant_p(op_tbl[i].name)) ? rb_usascii_str_new(op_tbl[i].name, strlen(op_tbl[i].name)) : rb_usascii_str_new_cstr(op_tbl[i].name); });
+ do {if ((!(((VALUE)((str)) & RUBY_IMMEDIATE_MASK) || !(((VALUE)((str)) & ~((VALUE)RUBY_Qnil)) != 0)) && (((struct RBasic*)((str)))->flags & RUBY_T_MASK) != RUBY_T_NODE)) ((struct RBasic*)((str)))->flags |= ((((VALUE)1)<<11));} while (0);
+ global_symbols.op_sym[i] = str;
+ }
+ return str;
+ }
+ }
+ }
+ if (st_lookup(global_symbols.id_str, id, &data)) {
+ VALUE str = (VALUE)data;
+ if (((struct RBasic*)(str))->klass == 0)
+ ((struct RBasic*)(str))->klass = rb_cString;
+ return str;
+ }
+ if ((((id)>376)&&((id)&0x07)==0x04)) {
+ ID id2 = (id & ~0x07) | 0x00;
+ VALUE str;
+ while (!(str = rb_id2str(id2))) {
+ if (!(((id2)>376)&&((id2)&0x07)==0x00)) return 0;
+ id2 = (id & ~0x07) | 0x05;
+ }
+ str = rb_str_dup(str);
+ rb_str_cat(str, "=", 1);
+ rb_intern_str(str);
+ if (st_lookup(global_symbols.id_str, id, &data)) {
+ VALUE str = (VALUE)data;
+ if (((struct RBasic*)(str))->klass == 0)
+ ((struct RBasic*)(str))->klass = rb_cString;
+ return str;
+ }
+ }
+ return 0;
+}
+const char *
+rb_id2name(ID id)
+{
+ VALUE str = rb_id2str(id);
+ if (!str) return 0;
+ return (!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr);
+}
+static int
+symbols_i(VALUE sym, ID value, VALUE ary)
+{
+ rb_ary_push(ary, (((VALUE)(value)<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG));
+ return ST_CONTINUE;
+}
+VALUE
+rb_sym_all_symbols(void)
+{
+ VALUE ary = rb_ary_new2(global_symbols.sym_id->num_entries);
+ st_foreach(global_symbols.sym_id, symbols_i, ary);
+ return ary;
+}
+int
+rb_is_const_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x05)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+int
+rb_is_class_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x06)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+int
+rb_is_instance_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x01)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+int
+rb_is_local_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x00)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+int
+rb_is_junk_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x07)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+static void
+parser_initialize(struct parser_params *parser)
+{
+ parser->eofp = ((VALUE)RUBY_Qfalse);
+ parser->parser_lex_strterm = 0;
+ parser->parser_cond_stack = 0;
+ parser->parser_cmdarg_stack = 0;
+ parser->parser_class_nest = 0;
+ parser->parser_paren_nest = 0;
+ parser->parser_lpar_beg = 0;
+ parser->parser_in_single = 0;
+ parser->parser_in_def = 0;
+ parser->parser_in_defined = 0;
+ parser->parser_compile_for_eval = 0;
+ parser->parser_cur_mid = 0;
+ parser->parser_tokenbuf = ((void *)0);
+ parser->parser_tokidx = 0;
+ parser->parser_toksiz = 0;
+ parser->parser_heredoc_end = 0;
+ parser->parser_command_start = ((VALUE)RUBY_Qtrue);
+ parser->parser_deferred_nodes = 0;
+ parser->parser_lex_pbeg = 0;
+ parser->parser_lex_p = 0;
+ parser->parser_lex_pend = 0;
+ parser->parser_lvtbl = 0;
+ parser->parser_ruby__end__seen = 0;
+ parser->parser_ruby_sourcefile = 0;
+ parser->is_ripper = 0;
+ parser->parser_eval_tree_begin = 0;
+ parser->parser_eval_tree = 0;
+ parser->heap = ((void *)0);
+ parser->enc = rb_usascii_encoding();
+}
+static void
+parser_mark(void *ptr)
+{
+ struct parser_params *p = (struct parser_params*)ptr;
+ rb_gc_mark((VALUE)p->parser_lex_strterm);
+ rb_gc_mark((VALUE)p->parser_deferred_nodes);
+ rb_gc_mark(p->parser_lex_input);
+ rb_gc_mark(p->parser_lex_lastline);
+ rb_gc_mark(p->parser_lex_nextline);
+ rb_gc_mark((VALUE)p->parser_eval_tree_begin) ;
+ rb_gc_mark((VALUE)p->parser_eval_tree) ;
+ rb_gc_mark(p->debug_lines);
+ rb_gc_mark((VALUE)p->heap);
+}
+static void
+parser_free(void *ptr)
+{
+ struct parser_params *p = (struct parser_params*)ptr;
+ struct local_vars *local, *prev;
+ if (p->parser_tokenbuf) {
+ ruby_xfree(p->parser_tokenbuf);
+ }
+ for (local = p->parser_lvtbl; local; local = prev) {
+ if (local->vars) ruby_xfree(local->vars);
+ prev = local->prev;
+ ruby_xfree(local);
+ }
+ ruby_xfree(p->parser_ruby_sourcefile);
+ ruby_xfree(p);
+}
+VALUE rb_parser_get_yydebug(VALUE);
+VALUE rb_parser_set_yydebug(VALUE, VALUE);
+static struct parser_params *
+parser_new(void)
+{
+ struct parser_params *p;
+ p = (struct parser_params*)ruby_xmalloc2((1),sizeof(struct parser_params));
+ memset((p), 0, sizeof(struct parser_params)*(1));
+ parser_initialize(p);
+ return p;
+}
+VALUE
+rb_parser_new(void)
+{
+ struct parser_params *p = parser_new();
+ return rb_data_object_alloc(0,p,(RUBY_DATA_FUNC)parser_mark,(RUBY_DATA_FUNC)parser_free);
+}
+VALUE
+rb_parser_end_seen_p(VALUE vparser)
+{
+ struct parser_params *parser;
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ return (parser->parser_ruby__end__seen) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
+}
+VALUE
+rb_parser_encoding(VALUE vparser)
+{
+ struct parser_params *parser;
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ return rb_enc_from_encoding(parser->enc);
+}
+VALUE
+rb_parser_get_yydebug(VALUE self)
+{
+ struct parser_params *parser;
+ do { rb_check_type((VALUE)(self),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(self))->data);} while (0);
+ return (parser->parser_yydebug) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
+}
+VALUE
+rb_parser_set_yydebug(VALUE self, VALUE flag)
+{
+ struct parser_params *parser;
+ do { rb_check_type((VALUE)(self),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(self))->data);} while (0);
+ (parser->parser_yydebug) = (((VALUE)(flag) & ~((VALUE)RUBY_Qnil)) != 0);
+ return flag;
+}
+void *
+rb_parser_malloc(struct parser_params *parser, size_t size)
+{
+ size_t cnt = ((1) * (size) / sizeof(YYSTYPE));
+ NODE *n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
+ void *ptr = ruby_xmalloc(size);
+ return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
+}
+void *
+rb_parser_calloc(struct parser_params *parser, size_t nelem, size_t size)
+{
+ size_t cnt = ((nelem) * (size) / sizeof(YYSTYPE));
+ NODE *n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
+ void *ptr = ruby_xcalloc(nelem, size);
+ return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
+}
+void *
+rb_parser_realloc(struct parser_params *parser, void *ptr, size_t size)
+{
+ NODE *n;
+ size_t cnt = ((1) * (size) / sizeof(YYSTYPE));
+ if (ptr && (n = parser->heap) != ((void *)0)) {
+ do {
+ if (n->u1.node == ptr) {
+ n->u1.node = ptr = ruby_xrealloc(ptr, size);
+ if (n->u3.cnt) n->u3.cnt = cnt;
+ return ptr;
+ }
+ } while ((n = n->u2.node) != ((void *)0));
+ }
+ n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
+ ptr = ruby_xrealloc(ptr, size);
+ return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
+}
+void
+rb_parser_free(struct parser_params *parser, void *ptr)
+{
+ NODE **prev = &parser->heap, *n;
+ while ((n = *prev) != ((void *)0)) {
+ if (n->u1.node == ptr) {
+ *prev = n->u2.node;
+ rb_gc_force_recycle((VALUE)n);
+ break;
+ }
+ prev = &n->u2.node;
+ }
+ ruby_xfree(ptr);
+}
--- /dev/null
+# 1 "parse.c"
+# 1 "/home/hramrach/ruby-1.9.1-rc1//"
+# 1 "<built-in>"
+# 1 "<command-line>"
+# 1 "parse.c"
+# 68 "parse.c"
+ enum yytokentype {
+ keyword_class = 258,
+ keyword_module = 259,
+ keyword_def = 260,
+ keyword_undef = 261,
+ keyword_begin = 262,
+ keyword_rescue = 263,
+ keyword_ensure = 264,
+ keyword_end = 265,
+ keyword_if = 266,
+ keyword_unless = 267,
+ keyword_then = 268,
+ keyword_elsif = 269,
+ keyword_else = 270,
+ keyword_case = 271,
+ keyword_when = 272,
+ keyword_while = 273,
+ keyword_until = 274,
+ keyword_for = 275,
+ keyword_break = 276,
+ keyword_next = 277,
+ keyword_redo = 278,
+ keyword_retry = 279,
+ keyword_in = 280,
+ keyword_do = 281,
+ keyword_do_cond = 282,
+ keyword_do_block = 283,
+ keyword_do_LAMBDA = 284,
+ keyword_return = 285,
+ keyword_yield = 286,
+ keyword_super = 287,
+ keyword_self = 288,
+ keyword_nil = 289,
+ keyword_true = 290,
+ keyword_false = 291,
+ keyword_and = 292,
+ keyword_or = 293,
+ keyword_not = 294,
+ modifier_if = 295,
+ modifier_unless = 296,
+ modifier_while = 297,
+ modifier_until = 298,
+ modifier_rescue = 299,
+ keyword_alias = 300,
+ keyword_defined = 301,
+ keyword_BEGIN = 302,
+ keyword_END = 303,
+ keyword__LINE__ = 304,
+ keyword__FILE__ = 305,
+ keyword__ENCODING__ = 306,
+ tIDENTIFIER = 307,
+ tFID = 308,
+ tGVAR = 309,
+ tIVAR = 310,
+ tCONSTANT = 311,
+ tCVAR = 312,
+ tLABEL = 313,
+ tINTEGER = 314,
+ tFLOAT = 315,
+ tSTRING_CONTENT = 316,
+ tCHAR = 317,
+ tNTH_REF = 318,
+ tBACK_REF = 319,
+ tREGEXP_END = 320,
+ tUPLUS = 321,
+ tUMINUS = 322,
+ tPOW = 323,
+ tCMP = 324,
+ tEQ = 325,
+ tEQQ = 326,
+ tNEQ = 327,
+ tGEQ = 328,
+ tLEQ = 329,
+ tANDOP = 330,
+ tOROP = 331,
+ tMATCH = 332,
+ tNMATCH = 333,
+ tDOT2 = 334,
+ tDOT3 = 335,
+ tAREF = 336,
+ tASET = 337,
+ tLSHFT = 338,
+ tRSHFT = 339,
+ tCOLON2 = 340,
+ tCOLON3 = 341,
+ tOP_ASGN = 342,
+ tASSOC = 343,
+ tLPAREN = 344,
+ tLPAREN_ARG = 345,
+ tRPAREN = 346,
+ tLBRACK = 347,
+ tLBRACE = 348,
+ tLBRACE_ARG = 349,
+ tSTAR = 350,
+ tAMPER = 351,
+ tLAMBDA = 352,
+ tSYMBEG = 353,
+ tSTRING_BEG = 354,
+ tXSTRING_BEG = 355,
+ tREGEXP_BEG = 356,
+ tWORDS_BEG = 357,
+ tQWORDS_BEG = 358,
+ tSTRING_DBEG = 359,
+ tSTRING_DVAR = 360,
+ tSTRING_END = 361,
+ tLAMBEG = 362,
+ tLOWEST = 363,
+ tUMINUS_NUM = 364,
+ idNULL = 365,
+ idRespond_to = 366,
+ idIFUNC = 367,
+ idCFUNC = 368,
+ idThrowState = 369,
+ id_core_set_method_alias = 370,
+ id_core_set_variable_alias = 371,
+ id_core_undef_method = 372,
+ id_core_define_method = 373,
+ id_core_define_singleton_method = 374,
+ id_core_set_postexe = 375,
+ tLAST_TOKEN = 376
+ };
+# 12 "parse.y"
+
+
+
+
+
+
+# 1 "./include/ruby/ruby.h" 1
+# 25 "./include/ruby/ruby.h"
+# 1 ".ext/include/i686-linux/ruby/config.h" 1
+# 26 "./include/ruby/ruby.h" 2
+# 50 "./include/ruby/ruby.h"
+# 1 "/usr/include/stdlib.h" 1 3 4
+# 25 "/usr/include/stdlib.h" 3 4
+# 1 "/usr/include/features.h" 1 3 4
+# 330 "/usr/include/features.h" 3 4
+# 1 "/usr/include/sys/cdefs.h" 1 3 4
+# 348 "/usr/include/sys/cdefs.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 349 "/usr/include/sys/cdefs.h" 2 3 4
+# 331 "/usr/include/features.h" 2 3 4
+# 354 "/usr/include/features.h" 3 4
+# 1 "/usr/include/gnu/stubs.h" 1 3 4
+
+
+
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 5 "/usr/include/gnu/stubs.h" 2 3 4
+
+
+# 1 "/usr/include/gnu/stubs-32.h" 1 3 4
+# 8 "/usr/include/gnu/stubs.h" 2 3 4
+# 355 "/usr/include/features.h" 2 3 4
+# 26 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+
+
+
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
+# 214 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 3 4
+typedef unsigned int size_t;
+# 326 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 3 4
+typedef int wchar_t;
+# 34 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+
+
+
+
+# 1 "/usr/include/bits/waitflags.h" 1 3 4
+# 43 "/usr/include/stdlib.h" 2 3 4
+# 1 "/usr/include/bits/waitstatus.h" 1 3 4
+# 65 "/usr/include/bits/waitstatus.h" 3 4
+# 1 "/usr/include/endian.h" 1 3 4
+# 37 "/usr/include/endian.h" 3 4
+# 1 "/usr/include/bits/endian.h" 1 3 4
+# 38 "/usr/include/endian.h" 2 3 4
+# 66 "/usr/include/bits/waitstatus.h" 2 3 4
+
+union wait
+ {
+ int w_status;
+ struct
+ {
+
+ unsigned int __w_termsig:7;
+ unsigned int __w_coredump:1;
+ unsigned int __w_retcode:8;
+ unsigned int:16;
+
+
+
+
+
+
+
+ } __wait_terminated;
+ struct
+ {
+
+ unsigned int __w_stopval:8;
+ unsigned int __w_stopsig:8;
+ unsigned int:16;
+
+
+
+
+
+
+ } __wait_stopped;
+ };
+# 44 "/usr/include/stdlib.h" 2 3 4
+# 68 "/usr/include/stdlib.h" 3 4
+typedef union
+ {
+ union wait *__uptr;
+ int *__iptr;
+ } __WAIT_STATUS __attribute__ ((__transparent_union__));
+# 96 "/usr/include/stdlib.h" 3 4
+
+
+typedef struct
+ {
+ int quot;
+ int rem;
+ } div_t;
+
+
+
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } ldiv_t;
+
+
+
+
+
+
+
+__extension__ typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } lldiv_t;
+
+
+# 140 "/usr/include/stdlib.h" 3 4
+extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;
+
+
+
+
+extern double atof (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern int atoi (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern long int atol (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+__extension__ extern long long int atoll (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern double strtod (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern float strtof (__const char *__restrict __nptr,
+ char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern long double strtold (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern long int strtol (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+# 236 "/usr/include/stdlib.h" 3 4
+# 1 "/usr/include/xlocale.h" 1 3 4
+# 28 "/usr/include/xlocale.h" 3 4
+typedef struct __locale_struct
+{
+
+ struct locale_data *__locales[13];
+
+
+ const unsigned short int *__ctype_b;
+ const int *__ctype_tolower;
+ const int *__ctype_toupper;
+
+
+ const char *__names[13];
+} *__locale_t;
+# 237 "/usr/include/stdlib.h" 2 3 4
+
+
+
+extern long int strtol_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base,
+ __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
+
+extern unsigned long int strtoul_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
+
+__extension__
+extern long long int strtoll_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
+
+__extension__
+extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
+
+extern double strtod_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
+
+extern float strtof_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
+
+extern long double strtold_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
+
+
+
+
+
+extern __inline double
+__attribute__ ((__nothrow__)) atof (__const char *__nptr)
+{
+ return strtod (__nptr, (char **) ((void *)0));
+}
+extern __inline int
+__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
+{
+ return (int) strtol (__nptr, (char **) ((void *)0), 10);
+}
+extern __inline long int
+__attribute__ ((__nothrow__)) atol (__const char *__nptr)
+{
+ return strtol (__nptr, (char **) ((void *)0), 10);
+}
+
+
+
+
+__extension__ extern __inline long long int
+__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
+{
+ return strtoll (__nptr, (char **) ((void *)0), 10);
+}
+
+# 311 "/usr/include/stdlib.h" 3 4
+extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
+
+
+extern long int a64l (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+# 1 "/usr/include/sys/types.h" 1 3 4
+# 29 "/usr/include/sys/types.h" 3 4
+
+
+# 1 "/usr/include/bits/types.h" 1 3 4
+# 28 "/usr/include/bits/types.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 29 "/usr/include/bits/types.h" 2 3 4
+
+
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+
+
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+
+
+
+
+__extension__ typedef signed long long int __int64_t;
+__extension__ typedef unsigned long long int __uint64_t;
+
+
+
+
+
+
+
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
+# 131 "/usr/include/bits/types.h" 3 4
+# 1 "/usr/include/bits/typesizes.h" 1 3 4
+# 132 "/usr/include/bits/types.h" 2 3 4
+
+
+__extension__ typedef __u_quad_t __dev_t;
+__extension__ typedef unsigned int __uid_t;
+__extension__ typedef unsigned int __gid_t;
+__extension__ typedef unsigned long int __ino_t;
+__extension__ typedef __u_quad_t __ino64_t;
+__extension__ typedef unsigned int __mode_t;
+__extension__ typedef unsigned int __nlink_t;
+__extension__ typedef long int __off_t;
+__extension__ typedef __quad_t __off64_t;
+__extension__ typedef int __pid_t;
+__extension__ typedef struct { int __val[2]; } __fsid_t;
+__extension__ typedef long int __clock_t;
+__extension__ typedef unsigned long int __rlim_t;
+__extension__ typedef __u_quad_t __rlim64_t;
+__extension__ typedef unsigned int __id_t;
+__extension__ typedef long int __time_t;
+__extension__ typedef unsigned int __useconds_t;
+__extension__ typedef long int __suseconds_t;
+
+__extension__ typedef int __daddr_t;
+__extension__ typedef long int __swblk_t;
+__extension__ typedef int __key_t;
+
+
+__extension__ typedef int __clockid_t;
+
+
+__extension__ typedef void * __timer_t;
+
+
+__extension__ typedef long int __blksize_t;
+
+
+
+
+__extension__ typedef long int __blkcnt_t;
+__extension__ typedef __quad_t __blkcnt64_t;
+
+
+__extension__ typedef unsigned long int __fsblkcnt_t;
+__extension__ typedef __u_quad_t __fsblkcnt64_t;
+
+
+__extension__ typedef unsigned long int __fsfilcnt_t;
+__extension__ typedef __u_quad_t __fsfilcnt64_t;
+
+__extension__ typedef int __ssize_t;
+
+
+
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+
+
+__extension__ typedef int __intptr_t;
+
+
+__extension__ typedef unsigned int __socklen_t;
+# 32 "/usr/include/sys/types.h" 2 3 4
+
+
+
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+
+
+
+
+typedef __loff_t loff_t;
+
+
+
+
+
+typedef __ino64_t ino_t;
+
+
+
+
+typedef __ino64_t ino64_t;
+
+
+
+
+typedef __dev_t dev_t;
+
+
+
+
+typedef __gid_t gid_t;
+
+
+
+
+typedef __mode_t mode_t;
+
+
+
+
+typedef __nlink_t nlink_t;
+
+
+
+
+typedef __uid_t uid_t;
+
+
+
+
+
+
+
+typedef __off64_t off_t;
+
+
+
+
+typedef __off64_t off64_t;
+
+
+
+
+typedef __pid_t pid_t;
+
+
+
+
+typedef __id_t id_t;
+
+
+
+
+typedef __ssize_t ssize_t;
+
+
+
+
+
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+
+
+
+
+
+typedef __key_t key_t;
+# 133 "/usr/include/sys/types.h" 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 59 "/usr/include/time.h" 3 4
+
+
+typedef __clock_t clock_t;
+
+
+
+# 75 "/usr/include/time.h" 3 4
+
+
+typedef __time_t time_t;
+
+
+
+# 93 "/usr/include/time.h" 3 4
+typedef __clockid_t clockid_t;
+# 105 "/usr/include/time.h" 3 4
+typedef __timer_t timer_t;
+# 134 "/usr/include/sys/types.h" 2 3 4
+
+
+
+typedef __useconds_t useconds_t;
+
+
+
+typedef __suseconds_t suseconds_t;
+
+
+
+
+
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
+# 148 "/usr/include/sys/types.h" 2 3 4
+
+
+
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+# 195 "/usr/include/sys/types.h" 3 4
+typedef int int8_t __attribute__ ((__mode__ (__QI__)));
+typedef int int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int int32_t __attribute__ ((__mode__ (__SI__)));
+typedef int int64_t __attribute__ ((__mode__ (__DI__)));
+
+
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+# 220 "/usr/include/sys/types.h" 3 4
+# 1 "/usr/include/sys/select.h" 1 3 4
+# 31 "/usr/include/sys/select.h" 3 4
+# 1 "/usr/include/bits/select.h" 1 3 4
+# 32 "/usr/include/sys/select.h" 2 3 4
+
+
+# 1 "/usr/include/bits/sigset.h" 1 3 4
+# 24 "/usr/include/bits/sigset.h" 3 4
+typedef int __sig_atomic_t;
+
+
+
+
+typedef struct
+ {
+ unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+ } __sigset_t;
+# 35 "/usr/include/sys/select.h" 2 3 4
+
+
+
+typedef __sigset_t sigset_t;
+
+
+
+
+
+# 1 "/usr/include/time.h" 1 3 4
+# 121 "/usr/include/time.h" 3 4
+struct timespec
+ {
+ __time_t tv_sec;
+ long int tv_nsec;
+ };
+# 45 "/usr/include/sys/select.h" 2 3 4
+
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 69 "/usr/include/bits/time.h" 3 4
+struct timeval
+ {
+ __time_t tv_sec;
+ __suseconds_t tv_usec;
+ };
+# 47 "/usr/include/sys/select.h" 2 3 4
+# 55 "/usr/include/sys/select.h" 3 4
+typedef long int __fd_mask;
+# 67 "/usr/include/sys/select.h" 3 4
+typedef struct
+ {
+
+
+
+ __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
+
+
+
+
+
+ } fd_set;
+
+
+
+
+
+
+typedef __fd_mask fd_mask;
+# 99 "/usr/include/sys/select.h" 3 4
+
+# 109 "/usr/include/sys/select.h" 3 4
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ struct timeval *__restrict __timeout);
+# 121 "/usr/include/sys/select.h" 3 4
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+ const __sigset_t *__restrict __sigmask);
+
+
+
+# 221 "/usr/include/sys/types.h" 2 3 4
+
+
+# 1 "/usr/include/sys/sysmacros.h" 1 3 4
+# 30 "/usr/include/sys/sysmacros.h" 3 4
+__extension__
+extern unsigned int gnu_dev_major (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned int gnu_dev_minor (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned long long int gnu_dev_makedev (unsigned int __major,
+ unsigned int __minor)
+ __attribute__ ((__nothrow__));
+
+
+__extension__ extern __inline unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
+{
+ return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
+}
+
+__extension__ extern __inline unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
+{
+ return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
+}
+
+__extension__ extern __inline unsigned long long int
+__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
+{
+ return ((__minor & 0xff) | ((__major & 0xfff) << 8)
+ | (((unsigned long long int) (__minor & ~0xff)) << 12)
+ | (((unsigned long long int) (__major & ~0xfff)) << 32));
+}
+# 224 "/usr/include/sys/types.h" 2 3 4
+
+
+
+
+typedef __blksize_t blksize_t;
+# 248 "/usr/include/sys/types.h" 3 4
+typedef __blkcnt64_t blkcnt_t;
+
+
+
+typedef __fsblkcnt64_t fsblkcnt_t;
+
+
+
+typedef __fsfilcnt64_t fsfilcnt_t;
+
+
+
+
+
+typedef __blkcnt64_t blkcnt64_t;
+typedef __fsblkcnt64_t fsblkcnt64_t;
+typedef __fsfilcnt64_t fsfilcnt64_t;
+
+
+
+
+
+# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
+# 23 "/usr/include/bits/pthreadtypes.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 24 "/usr/include/bits/pthreadtypes.h" 2 3 4
+# 50 "/usr/include/bits/pthreadtypes.h" 3 4
+typedef unsigned long int pthread_t;
+
+
+typedef union
+{
+ char __size[36];
+ long int __align;
+} pthread_attr_t;
+# 67 "/usr/include/bits/pthreadtypes.h" 3 4
+typedef struct __pthread_internal_slist
+{
+ struct __pthread_internal_slist *__next;
+} __pthread_slist_t;
+
+
+
+
+
+typedef union
+{
+ struct __pthread_mutex_s
+ {
+ int __lock;
+ unsigned int __count;
+ int __owner;
+
+
+
+
+
+ int __kind;
+
+
+
+
+
+ unsigned int __nusers;
+ __extension__ union
+ {
+ int __spins;
+ __pthread_slist_t __list;
+ };
+
+ } __data;
+ char __size[24];
+ long int __align;
+} pthread_mutex_t;
+
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_mutexattr_t;
+
+
+
+
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __futex;
+ __extension__ unsigned long long int __total_seq;
+ __extension__ unsigned long long int __wakeup_seq;
+ __extension__ unsigned long long int __woken_seq;
+ void *__mutex;
+ unsigned int __nwaiters;
+ unsigned int __broadcast_seq;
+ } __data;
+ char __size[48];
+ __extension__ long long int __align;
+} pthread_cond_t;
+
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_condattr_t;
+
+
+
+typedef unsigned int pthread_key_t;
+
+
+
+typedef int pthread_once_t;
+
+
+
+
+
+typedef union
+{
+# 170 "/usr/include/bits/pthreadtypes.h" 3 4
+ struct
+ {
+ int __lock;
+ unsigned int __nr_readers;
+ unsigned int __readers_wakeup;
+ unsigned int __writer_wakeup;
+ unsigned int __nr_readers_queued;
+ unsigned int __nr_writers_queued;
+
+
+ unsigned char __flags;
+ unsigned char __shared;
+ unsigned char __pad1;
+ unsigned char __pad2;
+ int __writer;
+ } __data;
+
+ char __size[32];
+ long int __align;
+} pthread_rwlock_t;
+
+typedef union
+{
+ char __size[8];
+ long int __align;
+} pthread_rwlockattr_t;
+
+
+
+
+
+typedef volatile int pthread_spinlock_t;
+
+
+
+
+typedef union
+{
+ char __size[20];
+ long int __align;
+} pthread_barrier_t;
+
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_barrierattr_t;
+# 271 "/usr/include/sys/types.h" 2 3 4
+
+
+
+# 321 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+
+
+extern long int random (void) __attribute__ ((__nothrow__));
+
+
+extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *initstate (unsigned int __seed, char *__statebuf,
+ size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+struct random_data
+ {
+ int32_t *fptr;
+ int32_t *rptr;
+ int32_t *state;
+ int rand_type;
+ int rand_deg;
+ int rand_sep;
+ int32_t *end_ptr;
+ };
+
+extern int random_r (struct random_data *__restrict __buf,
+ int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+ size_t __statelen,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+
+extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern int rand (void) __attribute__ ((__nothrow__));
+
+extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
+
+
+
+
+extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern double drand48 (void) __attribute__ ((__nothrow__));
+extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int lrand48 (void) __attribute__ ((__nothrow__));
+extern long int nrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int mrand48 (void) __attribute__ ((__nothrow__));
+extern long int jrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+struct drand48_data
+ {
+ unsigned short int __x[3];
+ unsigned short int __old_x[3];
+ unsigned short int __c;
+ unsigned short int __init;
+ unsigned long long int __a;
+ };
+
+
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+extern int seed48_r (unsigned short int __seed16v[3],
+ struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int lcong48_r (unsigned short int __param[7],
+ struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+
+
+
+extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+
+extern void *calloc (size_t __nmemb, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+
+
+
+
+
+
+
+
+
+
+extern void *realloc (void *__ptr, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+extern void free (void *__ptr) __attribute__ ((__nothrow__));
+
+
+
+
+extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
+
+
+
+# 1 "/usr/include/alloca.h" 1 3 4
+# 25 "/usr/include/alloca.h" 3 4
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
+# 26 "/usr/include/alloca.h" 2 3 4
+
+
+
+
+
+
+
+extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+# 498 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+
+
+
+
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+extern char *__secure_getenv (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int clearenv (void) __attribute__ ((__nothrow__));
+# 583 "/usr/include/stdlib.h" 3 4
+extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+# 597 "/usr/include/stdlib.h" 3 4
+extern int mkstemp (char *__template) __asm__ ("" "mkstemp64")
+ __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
+# 614 "/usr/include/stdlib.h" 3 4
+extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+# 628 "/usr/include/stdlib.h" 3 4
+extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64")
+ __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+
+
+
+
+extern int system (__const char *__command) ;
+
+
+
+
+
+
+extern char *canonicalize_file_name (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+# 662 "/usr/include/stdlib.h" 3 4
+extern char *realpath (__const char *__restrict __name,
+ char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+
+
+typedef __compar_fn_t comparison_fn_t;
+
+
+
+
+
+
+extern void *bsearch (__const void *__key, __const void *__base,
+ size_t __nmemb, size_t __size, __compar_fn_t __compar)
+ __attribute__ ((__nonnull__ (1, 2, 5))) ;
+
+
+
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+ __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+
+
+
+extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+
+
+
+__extension__ extern long long int llabs (long long int __x)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+
+
+
+
+
+
+
+extern div_t div (int __numer, int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern ldiv_t ldiv (long int __numer, long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+
+
+
+
+__extension__ extern lldiv_t lldiv (long long int __numer,
+ long long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+
+# 727 "/usr/include/stdlib.h" 3 4
+extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+
+
+
+
+extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+
+
+
+
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+
+
+
+
+extern char *qecvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *qfcvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *qgcvt (long double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+
+
+
+
+extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+
+extern int qecvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qfcvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+
+
+
+
+
+
+
+extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
+
+
+extern int mbtowc (wchar_t *__restrict __pwc,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
+
+
+extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
+
+
+
+extern size_t mbstowcs (wchar_t *__restrict __pwcs,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
+
+extern size_t wcstombs (char *__restrict __s,
+ __const wchar_t *__restrict __pwcs, size_t __n)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+# 815 "/usr/include/stdlib.h" 3 4
+extern int getsubopt (char **__restrict __optionp,
+ char *__const *__restrict __tokens,
+ char **__restrict __valuep)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) ;
+
+
+
+
+
+extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+extern int posix_openpt (int __oflag) ;
+
+
+
+
+
+
+
+extern int grantpt (int __fd) __attribute__ ((__nothrow__));
+
+
+
+extern int unlockpt (int __fd) __attribute__ ((__nothrow__));
+
+
+
+
+extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+extern int getpt (void);
+
+
+
+
+
+
+extern int getloadavg (double __loadavg[], int __nelem)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 883 "/usr/include/stdlib.h" 3 4
+
+# 51 "./include/ruby/ruby.h" 2
+
+
+
+# 1 "/usr/include/string.h" 1 3 4
+# 28 "/usr/include/string.h" 3 4
+
+
+
+
+
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
+# 34 "/usr/include/string.h" 2 3 4
+
+
+
+
+extern void *memcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void *memmove (void *__dest, __const void *__src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
+ int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void *memchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern void *rawmemchr (__const void *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern void *memrchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
+ size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strcmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strcoll (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern size_t strxfrm (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+# 121 "/usr/include/string.h" 3 4
+extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
+ __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+
+
+
+
+extern char *strdup (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern char *strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+# 165 "/usr/include/string.h" 3 4
+
+
+extern char *strchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+extern char *strrchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern char *strchrnul (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern size_t strcspn (__const char *__s, __const char *__reject)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern size_t strspn (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strpbrk (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strstr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+extern char *__strtok_r (char *__restrict __s,
+ __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+
+extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+
+
+
+
+extern char *strcasestr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern void *memmem (__const void *__haystack, size_t __haystacklen,
+ __const void *__needle, size_t __needlelen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
+
+
+
+extern void *__mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern size_t strlen (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern size_t strnlen (__const char *__string, size_t __maxlen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
+
+# 281 "/usr/include/string.h" 3 4
+extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern void bcopy (__const void *__src, void *__dest, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *index (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern char *rindex (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+__extension__ extern int ffsll (long long int __ll)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern int strcasecmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern int strcasecmp_l (__const char *__s1, __const char *__s2,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+extern int strncasecmp_l (__const char *__s1, __const char *__s2,
+ size_t __n, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
+
+
+
+
+
+extern char *strsep (char **__restrict __stringp,
+ __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+extern int strverscmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *strsignal (int __sig) __attribute__ ((__nothrow__));
+
+
+extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern char *__stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 420 "/usr/include/string.h" 3 4
+# 1 "/usr/include/bits/string.h" 1 3 4
+# 421 "/usr/include/string.h" 2 3 4
+
+
+# 1 "/usr/include/bits/string2.h" 1 3 4
+# 394 "/usr/include/bits/string2.h" 3 4
+extern void *__rawmemchr (const void *__s, int __c);
+# 969 "/usr/include/bits/string2.h" 3 4
+extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
+extern __inline size_t
+__strcspn_c1 (__const char *__s, int __reject)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject)
+ ++__result;
+ return __result;
+}
+
+extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
+ int __reject2);
+extern __inline size_t
+__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2)
+ ++__result;
+ return __result;
+}
+
+extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
+ int __reject2, int __reject3);
+extern __inline size_t
+__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
+ int __reject3)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2 && __s[__result] != __reject3)
+ ++__result;
+ return __result;
+}
+# 1045 "/usr/include/bits/string2.h" 3 4
+extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
+extern __inline size_t
+__strspn_c1 (__const char *__s, int __accept)
+{
+ register size_t __result = 0;
+
+ while (__s[__result] == __accept)
+ ++__result;
+ return __result;
+}
+
+extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline size_t
+__strspn_c2 (__const char *__s, int __accept1, int __accept2)
+{
+ register size_t __result = 0;
+
+ while (__s[__result] == __accept1 || __s[__result] == __accept2)
+ ++__result;
+ return __result;
+}
+
+extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline size_t
+__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
+{
+ register size_t __result = 0;
+
+ while (__s[__result] == __accept1 || __s[__result] == __accept2
+ || __s[__result] == __accept3)
+ ++__result;
+ return __result;
+}
+# 1121 "/usr/include/bits/string2.h" 3 4
+extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline char *
+__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
+{
+
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+
+extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline char *
+__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
+ int __accept3)
+{
+
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
+ && *__s != __accept3)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+# 1173 "/usr/include/bits/string2.h" 3 4
+extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
+extern __inline char *
+__strtok_r_1c (char *__s, char __sep, char **__nextp)
+{
+ char *__result;
+ if (__s == ((void *)0))
+ __s = *__nextp;
+ while (*__s == __sep)
+ ++__s;
+ __result = ((void *)0);
+ if (*__s != '\0')
+ {
+ __result = __s++;
+ while (*__s != '\0')
+ if (*__s++ == __sep)
+ {
+ __s[-1] = '\0';
+ break;
+ }
+ *__nextp = __s;
+ }
+ return __result;
+}
+# 1205 "/usr/include/bits/string2.h" 3 4
+extern char *__strsep_g (char **__stringp, __const char *__delim);
+# 1223 "/usr/include/bits/string2.h" 3 4
+extern __inline char *__strsep_1c (char **__s, char __reject);
+extern __inline char *
+__strsep_1c (char **__s, char __reject)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
+ *(*__s)++ = '\0';
+ return __retval;
+}
+
+extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
+extern __inline char *
+__strsep_2c (char **__s, char __reject1, char __reject2)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+
+extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
+ char __reject3);
+extern __inline char *
+__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+# 1304 "/usr/include/bits/string2.h" 3 4
+extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+# 1323 "/usr/include/bits/string2.h" 3 4
+extern char *__strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+# 424 "/usr/include/string.h" 2 3 4
+# 432 "/usr/include/string.h" 3 4
+
+# 55 "./include/ruby/ruby.h" 2
+# 64 "./include/ruby/ruby.h"
+# 1 "/usr/include/inttypes.h" 1 3 4
+# 28 "/usr/include/inttypes.h" 3 4
+# 1 "/usr/include/stdint.h" 1 3 4
+# 27 "/usr/include/stdint.h" 3 4
+# 1 "/usr/include/bits/wchar.h" 1 3 4
+# 28 "/usr/include/stdint.h" 2 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 29 "/usr/include/stdint.h" 2 3 4
+# 49 "/usr/include/stdint.h" 3 4
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+
+typedef unsigned int uint32_t;
+
+
+
+
+
+__extension__
+typedef unsigned long long int uint64_t;
+
+
+
+
+
+
+typedef signed char int_least8_t;
+typedef short int int_least16_t;
+typedef int int_least32_t;
+
+
+
+__extension__
+typedef long long int int_least64_t;
+
+
+
+typedef unsigned char uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int uint_least32_t;
+
+
+
+__extension__
+typedef unsigned long long int uint_least64_t;
+
+
+
+
+
+
+typedef signed char int_fast8_t;
+
+
+
+
+
+typedef int int_fast16_t;
+typedef int int_fast32_t;
+__extension__
+typedef long long int int_fast64_t;
+
+
+
+typedef unsigned char uint_fast8_t;
+
+
+
+
+
+typedef unsigned int uint_fast16_t;
+typedef unsigned int uint_fast32_t;
+__extension__
+typedef unsigned long long int uint_fast64_t;
+# 126 "/usr/include/stdint.h" 3 4
+typedef int intptr_t;
+
+
+typedef unsigned int uintptr_t;
+# 138 "/usr/include/stdint.h" 3 4
+__extension__
+typedef long long int intmax_t;
+__extension__
+typedef unsigned long long int uintmax_t;
+# 29 "/usr/include/inttypes.h" 2 3 4
+
+
+
+
+
+
+typedef int __gwchar_t;
+# 274 "/usr/include/inttypes.h" 3 4
+
+# 288 "/usr/include/inttypes.h" 3 4
+typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } imaxdiv_t;
+
+
+
+
+
+extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern intmax_t strtoimax (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base) __attribute__ ((__nothrow__));
+
+
+extern uintmax_t strtoumax (__const char *__restrict __nptr,
+ char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__));
+
+
+extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr,
+ __gwchar_t **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__));
+
+
+extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
+ __gwchar_t ** __restrict __endptr, int __base)
+ __attribute__ ((__nothrow__));
+# 379 "/usr/include/inttypes.h" 3 4
+__extension__
+extern long long int __strtoll_internal (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern __inline intmax_t
+__attribute__ ((__nothrow__)) strtoimax (__const char *__restrict nptr, char **__restrict endptr, int base)
+
+{
+ return __strtoll_internal (nptr, endptr, base, 0);
+}
+
+__extension__
+extern unsigned long long int __strtoull_internal (__const char *
+ __restrict __nptr,
+ char **
+ __restrict __endptr,
+ int __base,
+ int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern __inline uintmax_t
+__attribute__ ((__nothrow__)) strtoumax (__const char *__restrict nptr, char **__restrict endptr, int base)
+
+{
+ return __strtoull_internal (nptr, endptr, base, 0);
+}
+
+__extension__
+extern long long int __wcstoll_internal (__const __gwchar_t *
+ __restrict __nptr,
+ __gwchar_t **__restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern __inline intmax_t
+__attribute__ ((__nothrow__)) wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
+
+{
+ return __wcstoll_internal (nptr, endptr, base, 0);
+}
+
+
+__extension__
+extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
+ __restrict __nptr,
+ __gwchar_t **
+ __restrict __endptr,
+ int __base,
+ int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern __inline uintmax_t
+__attribute__ ((__nothrow__)) wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
+
+{
+ return __wcstoull_internal (nptr, endptr, base, 0);
+}
+
+
+
+
+
+# 65 "./include/ruby/ruby.h" 2
+
+
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
+# 152 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 3 4
+typedef int ptrdiff_t;
+# 68 "./include/ruby/ruby.h" 2
+# 1 "/usr/include/stdio.h" 1 3 4
+# 30 "/usr/include/stdio.h" 3 4
+
+
+
+
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
+# 35 "/usr/include/stdio.h" 2 3 4
+# 45 "/usr/include/stdio.h" 3 4
+struct _IO_FILE;
+
+
+
+typedef struct _IO_FILE FILE;
+
+
+
+
+
+# 65 "/usr/include/stdio.h" 3 4
+typedef struct _IO_FILE __FILE;
+# 75 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/libio.h" 1 3 4
+# 32 "/usr/include/libio.h" 3 4
+# 1 "/usr/include/_G_config.h" 1 3 4
+# 15 "/usr/include/_G_config.h" 3 4
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
+# 16 "/usr/include/_G_config.h" 2 3 4
+
+
+
+
+# 1 "/usr/include/wchar.h" 1 3 4
+# 78 "/usr/include/wchar.h" 3 4
+typedef struct
+{
+ int __count;
+ union
+ {
+
+ unsigned int __wch;
+
+
+
+ char __wchb[4];
+ } __value;
+} __mbstate_t;
+# 21 "/usr/include/_G_config.h" 2 3 4
+
+typedef struct
+{
+ __off_t __pos;
+ __mbstate_t __state;
+} _G_fpos_t;
+typedef struct
+{
+ __off64_t __pos;
+ __mbstate_t __state;
+} _G_fpos64_t;
+# 53 "/usr/include/_G_config.h" 3 4
+typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
+# 33 "/usr/include/libio.h" 2 3 4
+# 53 "/usr/include/libio.h" 3 4
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stdarg.h" 1 3 4
+# 43 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stdarg.h" 3 4
+typedef __builtin_va_list __gnuc_va_list;
+# 54 "/usr/include/libio.h" 2 3 4
+# 170 "/usr/include/libio.h" 3 4
+struct _IO_jump_t; struct _IO_FILE;
+# 180 "/usr/include/libio.h" 3 4
+typedef void _IO_lock_t;
+
+
+
+
+
+struct _IO_marker {
+ struct _IO_marker *_next;
+ struct _IO_FILE *_sbuf;
+
+
+
+ int _pos;
+# 203 "/usr/include/libio.h" 3 4
+};
+
+
+enum __codecvt_result
+{
+ __codecvt_ok,
+ __codecvt_partial,
+ __codecvt_error,
+ __codecvt_noconv
+};
+# 271 "/usr/include/libio.h" 3 4
+struct _IO_FILE {
+ int _flags;
+
+
+
+
+ char* _IO_read_ptr;
+ char* _IO_read_end;
+ char* _IO_read_base;
+ char* _IO_write_base;
+ char* _IO_write_ptr;
+ char* _IO_write_end;
+ char* _IO_buf_base;
+ char* _IO_buf_end;
+
+ char *_IO_save_base;
+ char *_IO_backup_base;
+ char *_IO_save_end;
+
+ struct _IO_marker *_markers;
+
+ struct _IO_FILE *_chain;
+
+ int _fileno;
+
+
+
+ int _flags2;
+
+ __off_t _old_offset;
+
+
+
+ unsigned short _cur_column;
+ signed char _vtable_offset;
+ char _shortbuf[1];
+
+
+
+ _IO_lock_t *_lock;
+# 319 "/usr/include/libio.h" 3 4
+ __off64_t _offset;
+# 328 "/usr/include/libio.h" 3 4
+ void *__pad1;
+ void *__pad2;
+ void *__pad3;
+ void *__pad4;
+ size_t __pad5;
+
+ int _mode;
+
+ char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+
+};
+
+
+typedef struct _IO_FILE _IO_FILE;
+
+
+struct _IO_FILE_plus;
+
+extern struct _IO_FILE_plus _IO_2_1_stdin_;
+extern struct _IO_FILE_plus _IO_2_1_stdout_;
+extern struct _IO_FILE_plus _IO_2_1_stderr_;
+# 364 "/usr/include/libio.h" 3 4
+typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
+
+
+
+
+
+
+
+typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
+ size_t __n);
+
+
+
+
+
+
+
+typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
+
+
+typedef int __io_close_fn (void *__cookie);
+
+
+
+
+typedef __io_read_fn cookie_read_function_t;
+typedef __io_write_fn cookie_write_function_t;
+typedef __io_seek_fn cookie_seek_function_t;
+typedef __io_close_fn cookie_close_function_t;
+
+
+typedef struct
+{
+ __io_read_fn *read;
+ __io_write_fn *write;
+ __io_seek_fn *seek;
+ __io_close_fn *close;
+} _IO_cookie_io_functions_t;
+typedef _IO_cookie_io_functions_t cookie_io_functions_t;
+
+struct _IO_cookie_file;
+
+
+extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
+ void *__cookie, _IO_cookie_io_functions_t __fns);
+
+
+
+
+
+
+
+extern int __underflow (_IO_FILE *);
+extern int __uflow (_IO_FILE *);
+extern int __overflow (_IO_FILE *, int);
+# 458 "/usr/include/libio.h" 3 4
+extern int _IO_getc (_IO_FILE *__fp);
+extern int _IO_putc (int __c, _IO_FILE *__fp);
+extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+
+extern int _IO_peekc_locked (_IO_FILE *__fp);
+
+
+
+
+
+extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+# 488 "/usr/include/libio.h" 3 4
+extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
+ __gnuc_va_list, int *__restrict);
+extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
+ __gnuc_va_list);
+extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
+extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
+
+extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
+extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
+
+extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
+# 76 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+typedef __gnuc_va_list va_list;
+# 89 "/usr/include/stdio.h" 3 4
+
+
+
+
+typedef _G_fpos64_t fpos_t;
+
+
+
+typedef _G_fpos64_t fpos64_t;
+# 141 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
+# 142 "/usr/include/stdio.h" 2 3 4
+
+
+
+extern struct _IO_FILE *stdin;
+extern struct _IO_FILE *stdout;
+extern struct _IO_FILE *stderr;
+
+
+
+
+
+
+
+extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
+
+extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
+
+
+
+
+extern int renameat (int __oldfd, __const char *__old, int __newfd,
+ __const char *__new) __attribute__ ((__nothrow__));
+
+
+
+# 175 "/usr/include/stdio.h" 3 4
+extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") ;
+
+
+
+
+
+
+extern FILE *tmpfile64 (void) ;
+
+
+
+extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
+# 204 "/usr/include/stdio.h" 3 4
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+
+
+
+
+
+
+
+
+extern int fclose (FILE *__stream);
+
+
+
+
+extern int fflush (FILE *__stream);
+
+# 229 "/usr/include/stdio.h" 3 4
+extern int fflush_unlocked (FILE *__stream);
+# 239 "/usr/include/stdio.h" 3 4
+extern int fcloseall (void);
+
+
+
+
+# 260 "/usr/include/stdio.h" 3 4
+extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) __asm__ ("" "fopen64")
+
+ ;
+extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64")
+
+
+ ;
+
+
+
+
+
+
+
+extern FILE *fopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes) ;
+extern FILE *freopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) ;
+
+
+
+
+extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+extern FILE *fopencookie (void *__restrict __magic_cookie,
+ __const char *__restrict __modes,
+ _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__)) ;
+
+
+extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
+ __attribute__ ((__nothrow__)) ;
+
+
+
+
+extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
+
+
+
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+ int __modes, size_t __n) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+ size_t __size) __attribute__ ((__nothrow__));
+
+
+extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int fprintf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...);
+
+
+
+
+extern int printf (__const char *__restrict __format, ...);
+
+extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg);
+
+
+
+
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+
+
+
+
+
+
+extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
+ __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) ;
+extern int __asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
+extern int asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
+
+
+
+
+
+
+
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+
+
+
+
+
+
+
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) ;
+
+
+
+
+extern int scanf (__const char *__restrict __format, ...) ;
+
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+# 441 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+
+
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 2, 0))) ;
+
+
+
+
+
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 1, 0))) ;
+
+
+extern int vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
+# 500 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+
+
+
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+
+
+
+
+
+extern int getchar (void);
+
+# 528 "/usr/include/stdio.h" 3 4
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+# 539 "/usr/include/stdio.h" 3 4
+extern int fgetc_unlocked (FILE *__stream);
+
+
+
+
+
+
+
+
+
+
+
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+
+
+
+
+
+extern int putchar (int __c);
+
+# 572 "/usr/include/stdio.h" 3 4
+extern int fputc_unlocked (int __c, FILE *__stream);
+
+
+
+
+
+
+
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+
+
+
+
+
+
+extern int getw (FILE *__stream);
+
+
+extern int putw (int __w, FILE *__stream);
+
+
+
+
+
+
+
+
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+ ;
+
+
+
+
+
+
+extern char *gets (char *__s) ;
+
+# 618 "/usr/include/stdio.h" 3 4
+extern char *fgets_unlocked (char *__restrict __s, int __n,
+ FILE *__restrict __stream) ;
+# 634 "/usr/include/stdio.h" 3 4
+extern __ssize_t __getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+extern __ssize_t getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+
+
+
+
+
+
+
+extern __ssize_t getline (char **__restrict __lineptr,
+ size_t *__restrict __n,
+ FILE *__restrict __stream) ;
+
+
+
+
+
+
+
+
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+
+
+
+
+
+extern int puts (__const char *__s);
+
+
+
+
+
+
+extern int ungetc (int __c, FILE *__stream);
+
+
+
+
+
+
+extern size_t fread (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+
+
+
+
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __s) ;
+
+# 695 "/usr/include/stdio.h" 3 4
+extern int fputs_unlocked (__const char *__restrict __s,
+ FILE *__restrict __stream);
+# 706 "/usr/include/stdio.h" 3 4
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+
+
+
+
+
+
+
+
+extern int fseek (FILE *__stream, long int __off, int __whence);
+
+
+
+
+extern long int ftell (FILE *__stream) ;
+
+
+
+
+extern void rewind (FILE *__stream);
+
+# 750 "/usr/include/stdio.h" 3 4
+extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64");
+
+
+extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64");
+
+
+
+
+
+
+
+
+# 775 "/usr/include/stdio.h" 3 4
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64");
+
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __asm__ ("" "fsetpos64");
+
+
+
+
+
+
+
+
+
+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
+extern __off64_t ftello64 (FILE *__stream) ;
+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
+
+
+
+
+extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
+
+extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
+
+extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
+
+
+
+
+extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+
+
+extern void perror (__const char *__s);
+
+
+
+
+
+
+# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
+# 27 "/usr/include/bits/sys_errlist.h" 3 4
+extern int sys_nerr;
+extern __const char *__const sys_errlist[];
+
+
+extern int _sys_nerr;
+extern __const char *__const _sys_errlist[];
+# 823 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
+
+
+
+
+extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+# 842 "/usr/include/stdio.h" 3 4
+extern FILE *popen (__const char *__command, __const char *__modes) ;
+
+
+
+
+
+extern int pclose (FILE *__stream);
+
+
+
+
+
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *cuserid (char *__s);
+
+
+
+
+struct obstack;
+
+
+extern int obstack_printf (struct obstack *__restrict __obstack,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int obstack_vprintf (struct obstack *__restrict __obstack,
+ __const char *__restrict __format,
+ __gnuc_va_list __args)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
+
+
+
+
+
+
+
+extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
+
+
+extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
+# 903 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/bits/stdio.h" 1 3 4
+# 36 "/usr/include/bits/stdio.h" 3 4
+extern __inline int
+vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
+{
+ return vfprintf (stdout, __fmt, __arg);
+}
+
+
+
+extern __inline int
+getchar (void)
+{
+ return _IO_getc (stdin);
+}
+
+
+
+
+extern __inline int
+fgetc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+
+
+
+
+
+extern __inline int
+getc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+
+
+extern __inline int
+getchar_unlocked (void)
+{
+ return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
+}
+
+
+
+
+extern __inline int
+putchar (int __c)
+{
+ return _IO_putc (__c, stdout);
+}
+
+
+
+
+extern __inline int
+fputc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+
+
+
+
+
+extern __inline int
+putc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+
+
+extern __inline int
+putchar_unlocked (int __c)
+{
+ return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
+}
+
+
+
+
+
+extern __inline __ssize_t
+getline (char **__lineptr, size_t *__n, FILE *__stream)
+{
+ return __getdelim (__lineptr, __n, '\n', __stream);
+}
+
+
+
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x10) != 0);
+}
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x20) != 0);
+}
+# 904 "/usr/include/stdio.h" 2 3 4
+# 912 "/usr/include/stdio.h" 3 4
+
+# 69 "./include/ruby/ruby.h" 2
+
+# 1 "./include/ruby/defines.h" 1
+# 59 "./include/ruby/defines.h"
+void *ruby_xmalloc(size_t);
+void *ruby_xmalloc2(size_t,size_t);
+void *ruby_xcalloc(size_t,size_t);
+void *ruby_xrealloc(void*,size_t);
+void *ruby_xrealloc2(void*,size_t,size_t);
+void ruby_xfree(void*);
+# 71 "./include/ruby/ruby.h" 2
+# 81 "./include/ruby/ruby.h"
+typedef unsigned long VALUE;
+typedef unsigned long ID;
+# 132 "./include/ruby/ruby.h"
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h" 1 3 4
+# 11 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h" 3 4
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/syslimits.h" 1 3 4
+
+
+
+
+
+
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h" 1 3 4
+# 122 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h" 3 4
+# 1 "/usr/include/limits.h" 1 3 4
+# 145 "/usr/include/limits.h" 3 4
+# 1 "/usr/include/bits/posix1_lim.h" 1 3 4
+# 153 "/usr/include/bits/posix1_lim.h" 3 4
+# 1 "/usr/include/bits/local_lim.h" 1 3 4
+# 36 "/usr/include/bits/local_lim.h" 3 4
+# 1 "/usr/include/linux/limits.h" 1 3 4
+# 37 "/usr/include/bits/local_lim.h" 2 3 4
+# 154 "/usr/include/bits/posix1_lim.h" 2 3 4
+# 146 "/usr/include/limits.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/posix2_lim.h" 1 3 4
+# 150 "/usr/include/limits.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/xopen_lim.h" 1 3 4
+# 34 "/usr/include/bits/xopen_lim.h" 3 4
+# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
+# 35 "/usr/include/bits/xopen_lim.h" 2 3 4
+# 154 "/usr/include/limits.h" 2 3 4
+# 123 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h" 2 3 4
+# 8 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/syslimits.h" 2 3 4
+# 12 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include-fixed/limits.h" 2 3 4
+# 133 "./include/ruby/ruby.h" 2
+# 182 "./include/ruby/ruby.h"
+VALUE rb_int2inum(long);
+
+
+VALUE rb_uint2inum(VALUE);
+
+
+
+
+VALUE rb_ll2inum(long long);
+
+VALUE rb_ull2inum(unsigned long long);
+# 264 "./include/ruby/ruby.h"
+enum ruby_special_consts {
+ RUBY_Qfalse = 0,
+ RUBY_Qtrue = 2,
+ RUBY_Qnil = 4,
+ RUBY_Qundef = 6,
+
+ RUBY_IMMEDIATE_MASK = 0x03,
+ RUBY_FIXNUM_FLAG = 0x01,
+ RUBY_SYMBOL_FLAG = 0x0e,
+ RUBY_SPECIAL_SHIFT = 8
+};
+# 289 "./include/ruby/ruby.h"
+enum ruby_value_type {
+ RUBY_T_NONE = 0x00,
+
+ RUBY_T_OBJECT = 0x01,
+ RUBY_T_CLASS = 0x02,
+ RUBY_T_MODULE = 0x03,
+ RUBY_T_FLOAT = 0x04,
+ RUBY_T_STRING = 0x05,
+ RUBY_T_REGEXP = 0x06,
+ RUBY_T_ARRAY = 0x07,
+ RUBY_T_HASH = 0x08,
+ RUBY_T_STRUCT = 0x09,
+ RUBY_T_BIGNUM = 0x0a,
+ RUBY_T_FILE = 0x0b,
+ RUBY_T_DATA = 0x0c,
+ RUBY_T_MATCH = 0x0d,
+ RUBY_T_COMPLEX = 0x0e,
+ RUBY_T_RATIONAL = 0x0f,
+
+ RUBY_T_NIL = 0x11,
+ RUBY_T_TRUE = 0x12,
+ RUBY_T_FALSE = 0x13,
+ RUBY_T_SYMBOL = 0x14,
+ RUBY_T_FIXNUM = 0x15,
+
+ RUBY_T_UNDEF = 0x1b,
+ RUBY_T_NODE = 0x1c,
+ RUBY_T_ICLASS = 0x1d,
+ RUBY_T_ZOMBIE = 0x1e,
+
+ RUBY_T_MASK = 0x1f
+};
+# 355 "./include/ruby/ruby.h"
+void rb_check_type(VALUE,int);
+
+
+VALUE rb_str_to_str(VALUE);
+VALUE rb_string_value(volatile VALUE*);
+char *rb_string_value_ptr(volatile VALUE*);
+char *rb_string_value_cstr(volatile VALUE*);
+
+
+
+
+
+void rb_check_safe_obj(VALUE);
+void rb_check_safe_str(VALUE);
+
+
+
+
+
+
+
+VALUE rb_str_export(VALUE);
+
+
+
+
+VALUE rb_str_export_locale(VALUE);
+
+VALUE rb_get_path(VALUE);
+
+
+VALUE rb_get_path_no_checksafe(VALUE);
+
+
+void rb_secure(int);
+int rb_safe_level(void);
+void rb_set_safe_level(int);
+void rb_set_safe_level_force(int);
+void rb_secure_update(VALUE);
+
+VALUE rb_errinfo(void);
+void rb_set_errinfo(VALUE);
+
+long rb_num2long(VALUE);
+VALUE rb_num2ulong(VALUE);
+static inline long
+NUM2LONG(VALUE x)
+{
+ return (((long)(x))&RUBY_FIXNUM_FLAG) ? (((long)x)>>(int)1) : rb_num2long(x);
+}
+# 427 "./include/ruby/ruby.h"
+long long rb_num2ll(VALUE);
+unsigned long long rb_num2ull(VALUE);
+static inline long long
+NUM2LL(VALUE x)
+{
+ return (((long)(x))&RUBY_FIXNUM_FLAG) ? (((long)x)>>(int)1) : rb_num2ll(x);
+}
+# 451 "./include/ruby/ruby.h"
+double rb_num2dbl(VALUE);
+
+
+VALUE rb_uint2big(VALUE);
+VALUE rb_int2big(long);
+
+
+
+
+
+static inline VALUE
+INT2NUM(int v)
+{
+ if (!(((v) < (2147483647L>>1)+1) && ((v) >= (((long)(-2147483647L - 1L))>>(int)1))))
+ return rb_int2big(v);
+ return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
+}
+
+static inline VALUE
+UINT2NUM(unsigned int v)
+{
+ if (!((v) < (2147483647L>>1)+1))
+ return rb_uint2big(v);
+ return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
+}
+
+
+static inline VALUE
+LONG2NUM(long v)
+{
+ if ((((v) < (2147483647L>>1)+1) && ((v) >= (((long)(-2147483647L - 1L))>>(int)1)))) return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
+ return rb_int2big(v);
+}
+
+static inline VALUE
+ULONG2NUM(unsigned long v)
+{
+ if (((v) < (2147483647L>>1)+1)) return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
+ return rb_uint2big(v);
+}
+
+
+char *rb_str2cstr(VALUE,long*);
+
+
+
+
+
+
+
+VALUE rb_newobj(void);
+# 518 "./include/ruby/ruby.h"
+struct RBasic {
+ VALUE flags;
+ VALUE klass;
+};
+
+
+struct RObject {
+ struct RBasic basic;
+ union {
+ struct {
+ long numiv;
+ VALUE *ivptr;
+ struct st_table *iv_index_tbl;
+ } heap;
+ VALUE ary[3];
+ } as;
+};
+# 549 "./include/ruby/ruby.h"
+typedef struct {
+ VALUE super;
+ struct st_table *iv_tbl;
+} rb_classext_t;
+
+struct RClass {
+ struct RBasic basic;
+ rb_classext_t *ptr;
+ struct st_table *m_tbl;
+ struct st_table *iv_index_tbl;
+};
+# 568 "./include/ruby/ruby.h"
+struct RFloat {
+ struct RBasic basic;
+ double float_value;
+};
+
+
+
+
+
+
+struct RString {
+ struct RBasic basic;
+ union {
+ struct {
+ long len;
+ char *ptr;
+ union {
+ long capa;
+ VALUE shared;
+ } aux;
+ } heap;
+ char ary[((sizeof(VALUE)*3)/sizeof(char)-1) + 1];
+ } as;
+};
+# 607 "./include/ruby/ruby.h"
+struct RArray {
+ struct RBasic basic;
+ union {
+ struct {
+ long len;
+ union {
+ long capa;
+ VALUE shared;
+ } aux;
+ VALUE *ptr;
+ } heap;
+ VALUE ary[3];
+ } as;
+};
+# 635 "./include/ruby/ruby.h"
+struct RRegexp {
+ struct RBasic basic;
+ struct re_pattern_buffer *ptr;
+ VALUE src;
+ unsigned long usecnt;
+};
+
+
+
+
+struct RHash {
+ struct RBasic basic;
+ struct st_table *ntbl;
+ int iter_lev;
+ VALUE ifnone;
+};
+
+
+
+
+
+
+
+struct RFile {
+ struct RBasic basic;
+ struct rb_io_t *fptr;
+};
+
+struct RRational {
+ struct RBasic basic;
+ VALUE num;
+ VALUE den;
+};
+
+struct RComplex {
+ struct RBasic basic;
+ VALUE real;
+ VALUE imag;
+};
+
+struct RData {
+ struct RBasic basic;
+ void (*dmark)(void*);
+ void (*dfree)(void*);
+ void *data;
+};
+
+
+
+
+
+
+typedef void (*RUBY_DATA_FUNC)(void*);
+
+VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
+# 706 "./include/ruby/ruby.h"
+struct RStruct {
+ struct RBasic basic;
+ union {
+ struct {
+ long len;
+ VALUE *ptr;
+ } heap;
+ VALUE ary[3];
+ } as;
+};
+# 729 "./include/ruby/ruby.h"
+struct RBignum {
+ struct RBasic basic;
+ union {
+ struct {
+ long len;
+ unsigned int *digits;
+ } heap;
+ unsigned int ary[((sizeof(VALUE)*3)/sizeof(unsigned int))];
+ } as;
+};
+# 841 "./include/ruby/ruby.h"
+void rb_obj_infect(VALUE,VALUE);
+
+typedef int ruby_glob_func(const char*,VALUE, void*);
+void rb_glob(const char*,void(*)(const char*,VALUE,void*),VALUE);
+int ruby_glob(const char*,int,ruby_glob_func*,VALUE);
+int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE);
+
+VALUE rb_define_class(const char*,VALUE);
+VALUE rb_define_module(const char*);
+VALUE rb_define_class_under(VALUE, const char*, VALUE);
+VALUE rb_define_module_under(VALUE, const char*);
+
+void rb_include_module(VALUE,VALUE);
+void rb_extend_object(VALUE,VALUE);
+
+struct rb_global_variable;
+
+typedef VALUE rb_gvar_getter_t(ID id, void *data, struct rb_global_variable *gvar);
+typedef void rb_gvar_setter_t(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+typedef void rb_gvar_marker_t(VALUE *var);
+
+VALUE rb_gvar_undef_getter(ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_undef_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_undef_marker(VALUE *var);
+
+VALUE rb_gvar_val_getter(ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_val_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_val_marker(VALUE *var);
+
+VALUE rb_gvar_var_getter(ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_var_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_var_marker(VALUE *var);
+
+void rb_gvar_readonly_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+
+void rb_define_variable(const char*,VALUE*);
+void rb_define_virtual_variable(const char*,VALUE(*)(),void(*)());
+void rb_define_hooked_variable(const char*,VALUE*,VALUE(*)(),void(*)());
+void rb_define_readonly_variable(const char*,VALUE*);
+void rb_define_const(VALUE,const char*,VALUE);
+void rb_define_global_const(const char*,VALUE);
+
+
+void rb_define_method(VALUE,const char*,VALUE(*)(),int);
+void rb_define_module_function(VALUE,const char*,VALUE(*)(),int);
+void rb_define_global_function(const char*,VALUE(*)(),int);
+
+void rb_undef_method(VALUE,const char*);
+void rb_define_alias(VALUE,const char*,const char*);
+void rb_define_attr(VALUE,const char*,int,int);
+
+void rb_global_variable(VALUE*);
+void rb_gc_register_mark_object(VALUE);
+void rb_gc_register_address(VALUE*);
+void rb_gc_unregister_address(VALUE*);
+
+ID rb_intern(const char*);
+ID rb_intern2(const char*, long);
+ID rb_intern_str(VALUE str);
+const char *rb_id2name(ID);
+ID rb_to_id(VALUE);
+VALUE rb_id2str(ID);
+# 928 "./include/ruby/ruby.h"
+const char *rb_class2name(VALUE);
+const char *rb_obj_classname(VALUE);
+
+void rb_p(VALUE);
+
+VALUE rb_eval_string(const char*);
+VALUE rb_eval_string_protect(const char*, int*);
+VALUE rb_eval_string_wrap(const char*, int*);
+VALUE rb_funcall(VALUE, ID, int, ...);
+VALUE rb_funcall2(VALUE, ID, int, const VALUE*);
+VALUE rb_funcall3(VALUE, ID, int, const VALUE*);
+int rb_scan_args(int, const VALUE*, const char*, ...);
+VALUE rb_call_super(int, const VALUE*);
+
+VALUE rb_gv_set(const char*, VALUE);
+VALUE rb_gv_get(const char*);
+VALUE rb_iv_get(VALUE, const char*);
+VALUE rb_iv_set(VALUE, const char*, VALUE);
+
+VALUE rb_equal(VALUE,VALUE);
+
+VALUE *rb_ruby_verbose_ptr(void);
+VALUE *rb_ruby_debug_ptr(void);
+
+
+
+__attribute__ ((noreturn)) void rb_raise(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
+__attribute__ ((noreturn)) void rb_fatal(const char*, ...) __attribute__((format(printf, 1, 2)));
+__attribute__ ((noreturn)) void rb_bug(const char*, ...) __attribute__((format(printf, 1, 2)));
+__attribute__ ((noreturn)) void rb_sys_fail(const char*);
+__attribute__ ((noreturn)) void rb_iter_break(void);
+__attribute__ ((noreturn)) void rb_exit(int);
+__attribute__ ((noreturn)) void rb_notimplement(void);
+
+
+void rb_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
+void rb_compile_warning(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
+void rb_sys_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
+
+void rb_warn(const char*, ...) __attribute__((format(printf, 1, 2)));
+void rb_compile_warn(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
+
+typedef VALUE rb_block_call_func(VALUE, VALUE, int, VALUE*);
+
+VALUE rb_each(VALUE);
+VALUE rb_yield(VALUE);
+VALUE rb_yield_values(int n, ...);
+VALUE rb_yield_values2(int n, const VALUE *argv);
+VALUE rb_yield_splat(VALUE);
+int rb_block_given_p(void);
+void rb_need_block(void);
+VALUE rb_iterate(VALUE(*)(VALUE),VALUE,VALUE(*)(),VALUE);
+VALUE rb_block_call(VALUE,ID,int,VALUE*,VALUE(*)(),VALUE);
+VALUE rb_rescue(VALUE(*)(),VALUE,VALUE(*)(),VALUE);
+VALUE rb_rescue2(VALUE(*)(),VALUE,VALUE(*)(),VALUE,...);
+VALUE rb_ensure(VALUE(*)(),VALUE,VALUE(*)(),VALUE);
+VALUE rb_catch(const char*,VALUE(*)(),VALUE);
+VALUE rb_catch_obj(VALUE,VALUE(*)(),VALUE);
+__attribute__ ((noreturn)) void rb_throw(const char*,VALUE);
+__attribute__ ((noreturn)) void rb_throw_obj(VALUE,VALUE);
+
+VALUE rb_require(const char*);
+
+
+
+
+
+void ruby_init_stack(VALUE*);
+
+
+
+
+void ruby_init(void);
+void *ruby_options(int, char**);
+int ruby_run_node(void *);
+
+extern VALUE rb_mKernel;
+extern VALUE rb_mComparable;
+extern VALUE rb_mEnumerable;
+extern VALUE rb_mErrno;
+extern VALUE rb_mFileTest;
+extern VALUE rb_mGC;
+extern VALUE rb_mMath;
+extern VALUE rb_mProcess;
+
+extern VALUE rb_cBasicObject;
+extern VALUE rb_cObject;
+extern VALUE rb_cArray;
+extern VALUE rb_cBignum;
+extern VALUE rb_cBinding;
+extern VALUE rb_cClass;
+extern VALUE rb_cCont;
+extern VALUE rb_cDir;
+extern VALUE rb_cData;
+extern VALUE rb_cFalseClass;
+extern VALUE rb_cEncoding;
+extern VALUE rb_cEnumerator;
+extern VALUE rb_cFile;
+extern VALUE rb_cFixnum;
+extern VALUE rb_cFloat;
+extern VALUE rb_cHash;
+extern VALUE rb_cInteger;
+extern VALUE rb_cIO;
+extern VALUE rb_cMatch;
+extern VALUE rb_cMethod;
+extern VALUE rb_cModule;
+extern VALUE rb_cNameErrorMesg;
+extern VALUE rb_cNilClass;
+extern VALUE rb_cNumeric;
+extern VALUE rb_cProc;
+extern VALUE rb_cRange;
+extern VALUE rb_cRational;
+extern VALUE rb_cComplex;
+extern VALUE rb_cRegexp;
+extern VALUE rb_cStat;
+extern VALUE rb_cString;
+extern VALUE rb_cStruct;
+extern VALUE rb_cSymbol;
+extern VALUE rb_cThread;
+extern VALUE rb_cTime;
+extern VALUE rb_cTrueClass;
+extern VALUE rb_cUnboundMethod;
+
+extern VALUE rb_eException;
+extern VALUE rb_eStandardError;
+extern VALUE rb_eSystemExit;
+extern VALUE rb_eInterrupt;
+extern VALUE rb_eSignal;
+extern VALUE rb_eFatal;
+extern VALUE rb_eArgError;
+extern VALUE rb_eEOFError;
+extern VALUE rb_eIndexError;
+extern VALUE rb_eStopIteration;
+extern VALUE rb_eKeyError;
+extern VALUE rb_eRangeError;
+extern VALUE rb_eIOError;
+extern VALUE rb_eRuntimeError;
+extern VALUE rb_eSecurityError;
+extern VALUE rb_eSystemCallError;
+extern VALUE rb_eThreadError;
+extern VALUE rb_eTypeError;
+extern VALUE rb_eZeroDivError;
+extern VALUE rb_eNotImpError;
+extern VALUE rb_eNoMemError;
+extern VALUE rb_eNoMethodError;
+extern VALUE rb_eFloatDomainError;
+extern VALUE rb_eLocalJumpError;
+extern VALUE rb_eSysStackError;
+extern VALUE rb_eRegexpError;
+extern VALUE rb_eEncodingError;
+extern VALUE rb_eEncCompatError;
+
+extern VALUE rb_eScriptError;
+extern VALUE rb_eNameError;
+extern VALUE rb_eSyntaxError;
+extern VALUE rb_eLoadError;
+
+extern VALUE rb_stdin, rb_stdout, rb_stderr;
+
+static inline VALUE
+rb_class_of(VALUE obj)
+{
+ if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
+ if ((((long)(obj))&RUBY_FIXNUM_FLAG)) return rb_cFixnum;
+ if (obj == ((VALUE)RUBY_Qtrue)) return rb_cTrueClass;
+ if ((((VALUE)(obj)&~(~(VALUE)0<<RUBY_SPECIAL_SHIFT))==RUBY_SYMBOL_FLAG)) return rb_cSymbol;
+ }
+ else if (!(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0)) {
+ if (obj == ((VALUE)RUBY_Qnil)) return rb_cNilClass;
+ if (obj == ((VALUE)RUBY_Qfalse)) return rb_cFalseClass;
+ }
+ return ((struct RBasic*)(obj))->klass;
+}
+
+static inline int
+rb_type(VALUE obj)
+{
+ if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
+ if ((((long)(obj))&RUBY_FIXNUM_FLAG)) return RUBY_T_FIXNUM;
+ if (obj == ((VALUE)RUBY_Qtrue)) return RUBY_T_TRUE;
+ if ((((VALUE)(obj)&~(~(VALUE)0<<RUBY_SPECIAL_SHIFT))==RUBY_SYMBOL_FLAG)) return RUBY_T_SYMBOL;
+ if (obj == ((VALUE)RUBY_Qundef)) return RUBY_T_UNDEF;
+ }
+ else if (!(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0)) {
+ if (obj == ((VALUE)RUBY_Qnil)) return RUBY_T_NIL;
+ if (obj == ((VALUE)RUBY_Qfalse)) return RUBY_T_FALSE;
+ }
+ return (((struct RBasic*)(obj))->flags & RUBY_T_MASK);
+}
+
+static inline int
+rb_special_const_p(VALUE obj)
+{
+ if ((((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0))) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+
+# 1 "./include/ruby/missing.h" 1
+# 22 "./include/ruby/missing.h"
+# 1 "/usr/include/sys/time.h" 1 3 4
+# 27 "/usr/include/sys/time.h" 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 28 "/usr/include/sys/time.h" 2 3 4
+
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 30 "/usr/include/sys/time.h" 2 3 4
+# 39 "/usr/include/sys/time.h" 3 4
+
+# 57 "/usr/include/sys/time.h" 3 4
+struct timezone
+ {
+ int tz_minuteswest;
+ int tz_dsttime;
+ };
+
+typedef struct timezone *__restrict __timezone_ptr_t;
+# 73 "/usr/include/sys/time.h" 3 4
+extern int gettimeofday (struct timeval *__restrict __tv,
+ __timezone_ptr_t __tz) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int settimeofday (__const struct timeval *__tv,
+ __const struct timezone *__tz)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int adjtime (__const struct timeval *__delta,
+ struct timeval *__olddelta) __attribute__ ((__nothrow__));
+
+
+
+
+enum __itimer_which
+ {
+
+ ITIMER_REAL = 0,
+
+
+ ITIMER_VIRTUAL = 1,
+
+
+
+ ITIMER_PROF = 2
+
+ };
+
+
+
+struct itimerval
+ {
+
+ struct timeval it_interval;
+
+ struct timeval it_value;
+ };
+
+
+
+
+typedef enum __itimer_which __itimer_which_t;
+
+
+
+
+
+
+extern int getitimer (__itimer_which_t __which,
+ struct itimerval *__value) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setitimer (__itimer_which_t __which,
+ __const struct itimerval *__restrict __new,
+ struct itimerval *__restrict __old) __attribute__ ((__nothrow__));
+
+
+
+
+extern int utimes (__const char *__file, __const struct timeval __tvp[2])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int futimes (int __fd, __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int futimesat (int __fd, __const char *__file,
+ __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
+# 191 "/usr/include/sys/time.h" 3 4
+
+# 23 "./include/ruby/missing.h" 2
+# 148 "./include/ruby/missing.h"
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stdarg.h" 1 3 4
+# 149 "./include/ruby/missing.h" 2
+# 158 "./include/ruby/missing.h"
+extern size_t strlcpy(char *, const char*, size_t);
+
+
+
+extern size_t strlcat(char *, const char*, size_t);
+# 1126 "./include/ruby/ruby.h" 2
+# 1 "./include/ruby/intern.h" 1
+# 29 "./include/ruby/intern.h"
+# 1 "./include/ruby/st.h" 1
+# 24 "./include/ruby/st.h"
+# 1 "/usr/lib/gcc/i486-linux-gnu/4.3.2/include/stddef.h" 1 3 4
+# 25 "./include/ruby/st.h" 2
+
+
+
+
+
+typedef unsigned long st_data_t;
+# 56 "./include/ruby/st.h"
+typedef struct st_table st_table;
+
+typedef int st_compare_func(st_data_t, st_data_t);
+typedef int st_hash_func(st_data_t);
+
+struct st_hash_type {
+ int (*compare)( );
+ int (*hash)( );
+};
+
+typedef st_data_t st_index_t;
+
+
+struct st_table {
+ const struct st_hash_type *type;
+ st_index_t num_bins;
+ unsigned int entries_packed : 1;
+
+ __extension__
+
+ st_index_t num_entries : (sizeof(st_index_t) * 8) - 1;
+ struct st_table_entry **bins;
+ struct st_table_entry *head;
+};
+
+
+
+enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
+
+st_table *st_init_table(const struct st_hash_type *);
+st_table *st_init_table_with_size(const struct st_hash_type *, int);
+st_table *st_init_numtable(void);
+st_table *st_init_numtable_with_size(int);
+st_table *st_init_strtable(void);
+st_table *st_init_strtable_with_size(int);
+st_table *st_init_strcasetable(void);
+st_table *st_init_strcasetable_with_size(int);
+int st_delete(st_table *, st_data_t *, st_data_t *);
+int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
+int st_insert(st_table *, st_data_t, st_data_t);
+int st_lookup(st_table *, st_data_t, st_data_t *);
+int st_get_key(st_table *, st_data_t, st_data_t *);
+int st_foreach(st_table *, int (*)(), st_data_t);
+int st_reverse_foreach(st_table *, int (*)(), st_data_t);
+void st_add_direct(st_table *, st_data_t, st_data_t);
+void st_free_table(st_table *);
+void st_cleanup_safe(st_table *, st_data_t);
+void st_clear(st_table *);
+st_table *st_copy(st_table *);
+int st_numcmp(st_data_t, st_data_t);
+int st_numhash(st_data_t);
+int st_strcasecmp(const char *s1, const char *s2);
+int st_strncasecmp(const char *s1, const char *s2, size_t n);
+# 30 "./include/ruby/intern.h" 2
+# 39 "./include/ruby/intern.h"
+void rb_mem_clear(register VALUE*, register long);
+VALUE rb_assoc_new(VALUE, VALUE);
+VALUE rb_check_array_type(VALUE);
+VALUE rb_ary_new(void);
+VALUE rb_ary_new2(long);
+VALUE rb_ary_new3(long,...);
+VALUE rb_ary_new4(long, const VALUE *);
+VALUE rb_ary_tmp_new(long);
+void rb_ary_free(VALUE);
+VALUE rb_ary_freeze(VALUE);
+VALUE rb_ary_aref(int, VALUE*, VALUE);
+VALUE rb_ary_subseq(VALUE, long, long);
+void rb_ary_store(VALUE, long, VALUE);
+VALUE rb_ary_dup(VALUE);
+VALUE rb_ary_to_ary(VALUE);
+VALUE rb_ary_to_s(VALUE);
+VALUE rb_ary_push(VALUE, VALUE);
+VALUE rb_ary_pop(VALUE);
+VALUE rb_ary_shift(VALUE);
+VALUE rb_ary_unshift(VALUE, VALUE);
+VALUE rb_ary_entry(VALUE, long);
+VALUE rb_ary_each(VALUE);
+VALUE rb_ary_join(VALUE, VALUE);
+VALUE rb_ary_print_on(VALUE, VALUE);
+VALUE rb_ary_reverse(VALUE);
+VALUE rb_ary_sort(VALUE);
+VALUE rb_ary_sort_bang(VALUE);
+VALUE rb_ary_delete(VALUE, VALUE);
+VALUE rb_ary_delete_at(VALUE, long);
+VALUE rb_ary_clear(VALUE);
+VALUE rb_ary_plus(VALUE, VALUE);
+VALUE rb_ary_concat(VALUE, VALUE);
+VALUE rb_ary_assoc(VALUE, VALUE);
+VALUE rb_ary_rassoc(VALUE, VALUE);
+VALUE rb_ary_includes(VALUE, VALUE);
+VALUE rb_ary_cmp(VALUE, VALUE);
+VALUE rb_ary_replace(VALUE copy, VALUE orig);
+VALUE rb_get_values_at(VALUE, long, int, VALUE*, VALUE(*)(VALUE,long));
+
+VALUE rb_big_clone(VALUE);
+void rb_big_2comp(VALUE);
+VALUE rb_big_norm(VALUE);
+void rb_big_resize(VALUE big, long len);
+VALUE rb_uint2big(VALUE);
+VALUE rb_int2big(long);
+VALUE rb_uint2inum(VALUE);
+VALUE rb_int2inum(long);
+VALUE rb_cstr_to_inum(const char*, int, int);
+VALUE rb_str_to_inum(VALUE, int, int);
+VALUE rb_cstr2inum(const char*, int);
+VALUE rb_str2inum(VALUE, int);
+VALUE rb_big2str(VALUE, int);
+VALUE rb_big2str0(VALUE, int, int);
+long rb_big2long(VALUE);
+
+VALUE rb_big2ulong(VALUE);
+
+
+VALUE rb_ll2inum(long long);
+VALUE rb_ull2inum(unsigned long long);
+long long rb_big2ll(VALUE);
+unsigned long long rb_big2ull(VALUE);
+
+void rb_quad_pack(char*,VALUE);
+VALUE rb_quad_unpack(const char*,int);
+int rb_uv_to_utf8(char[6],unsigned long);
+VALUE rb_dbl2big(double);
+double rb_big2dbl(VALUE);
+VALUE rb_big_cmp(VALUE, VALUE);
+VALUE rb_big_eq(VALUE, VALUE);
+VALUE rb_big_plus(VALUE, VALUE);
+VALUE rb_big_minus(VALUE, VALUE);
+VALUE rb_big_mul(VALUE, VALUE);
+VALUE rb_big_div(VALUE, VALUE);
+VALUE rb_big_modulo(VALUE, VALUE);
+VALUE rb_big_divmod(VALUE, VALUE);
+VALUE rb_big_pow(VALUE, VALUE);
+VALUE rb_big_and(VALUE, VALUE);
+VALUE rb_big_or(VALUE, VALUE);
+VALUE rb_big_xor(VALUE, VALUE);
+VALUE rb_big_lshift(VALUE, VALUE);
+VALUE rb_big_rshift(VALUE, VALUE);
+
+VALUE rb_rational_raw(VALUE, VALUE);
+
+
+VALUE rb_rational_new(VALUE, VALUE);
+
+
+VALUE rb_Rational(VALUE, VALUE);
+
+
+
+VALUE rb_complex_raw(VALUE, VALUE);
+
+
+VALUE rb_complex_new(VALUE, VALUE);
+
+
+VALUE rb_complex_polar(VALUE, VALUE);
+VALUE rb_Complex(VALUE, VALUE);
+
+
+
+VALUE rb_class_boot(VALUE);
+VALUE rb_class_new(VALUE);
+VALUE rb_mod_init_copy(VALUE, VALUE);
+VALUE rb_class_init_copy(VALUE, VALUE);
+VALUE rb_singleton_class_clone(VALUE);
+void rb_singleton_class_attached(VALUE,VALUE);
+VALUE rb_make_metaclass(VALUE, VALUE);
+void rb_check_inheritable(VALUE);
+VALUE rb_class_inherited(VALUE, VALUE);
+VALUE rb_define_class_id(ID, VALUE);
+VALUE rb_module_new(void);
+VALUE rb_define_module_id(ID);
+VALUE rb_mod_included_modules(VALUE);
+VALUE rb_mod_include_p(VALUE, VALUE);
+VALUE rb_mod_ancestors(VALUE);
+VALUE rb_class_instance_methods(int, VALUE*, VALUE);
+VALUE rb_class_public_instance_methods(int, VALUE*, VALUE);
+VALUE rb_class_protected_instance_methods(int, VALUE*, VALUE);
+VALUE rb_class_private_instance_methods(int, VALUE*, VALUE);
+VALUE rb_obj_singleton_methods(int, VALUE*, VALUE);
+void rb_define_method_id(VALUE, ID, VALUE (*)(), int);
+void rb_frozen_class_p(VALUE);
+void rb_undef(VALUE, ID);
+void rb_define_protected_method(VALUE, const char*, VALUE (*)(), int);
+void rb_define_private_method(VALUE, const char*, VALUE (*)(), int);
+void rb_define_singleton_method(VALUE, const char*, VALUE(*)(), int);
+VALUE rb_singleton_class(VALUE);
+
+int rb_cmpint(VALUE, VALUE, VALUE);
+__attribute__ ((noreturn)) void rb_cmperr(VALUE, VALUE);
+
+VALUE rb_fiber_new(VALUE (*)(), VALUE);
+VALUE rb_fiber_resume(VALUE fib, int argc, VALUE *args);
+VALUE rb_fiber_yield(int argc, VALUE *args);
+VALUE rb_fiber_current(void);
+VALUE rb_fiber_alive_p(VALUE);
+
+
+VALUE rb_enumeratorize(VALUE, VALUE, int, VALUE *);
+
+
+
+
+
+
+VALUE rb_exc_new(VALUE, const char*, long);
+VALUE rb_exc_new2(VALUE, const char*);
+VALUE rb_exc_new3(VALUE, VALUE);
+__attribute__ ((noreturn)) void rb_loaderror(const char*, ...) __attribute__((format(printf, 1, 2)));
+__attribute__ ((noreturn)) void rb_name_error(ID, const char*, ...) __attribute__((format(printf, 2, 3)));
+__attribute__ ((noreturn)) void rb_invalid_str(const char*, const char*);
+void rb_compile_error(const char*, int, const char*, ...) __attribute__((format(printf, 3, 4)));
+void rb_compile_error_append(const char*, ...) __attribute__((format(printf, 1, 2)));
+__attribute__ ((noreturn)) void rb_load_fail(const char*);
+__attribute__ ((noreturn)) void rb_error_frozen(const char*);
+void rb_check_frozen(VALUE);
+
+int rb_sourceline(void);
+const char *rb_sourcefile(void);
+
+
+typedef struct {
+ int maxfd;
+ fd_set *fdset;
+} rb_fdset_t;
+
+void rb_fd_init(volatile rb_fdset_t *);
+void rb_fd_term(rb_fdset_t *);
+void rb_fd_zero(rb_fdset_t *);
+void rb_fd_set(int, rb_fdset_t *);
+void rb_fd_clr(int, rb_fdset_t *);
+int rb_fd_isset(int, const rb_fdset_t *);
+void rb_fd_copy(rb_fdset_t *, const fd_set *, int);
+int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
+# 237 "./include/ruby/intern.h"
+__attribute__ ((noreturn)) void rb_exc_raise(VALUE);
+__attribute__ ((noreturn)) void rb_exc_fatal(VALUE);
+VALUE rb_f_exit(int,VALUE*);
+VALUE rb_f_abort(int,VALUE*);
+void rb_remove_method(VALUE, const char*);
+
+
+
+typedef VALUE (*rb_alloc_func_t)(VALUE);
+void rb_define_alloc_func(VALUE, rb_alloc_func_t);
+void rb_undef_alloc_func(VALUE);
+rb_alloc_func_t rb_get_alloc_func(VALUE);
+void rb_clear_cache(void);
+void rb_clear_cache_by_class(VALUE);
+void rb_alias(VALUE, ID, ID);
+void rb_attr(VALUE,ID,int,int,int);
+int rb_method_boundp(VALUE, ID, int);
+int rb_method_basic_definition_p(VALUE, ID);
+VALUE rb_eval_cmd(VALUE, VALUE, int);
+int rb_obj_respond_to(VALUE, ID, int);
+int rb_respond_to(VALUE, ID);
+void rb_interrupt(void);
+VALUE rb_apply(VALUE, ID, VALUE);
+void rb_backtrace(void);
+ID rb_frame_this_func(void);
+VALUE rb_obj_instance_eval(int, VALUE*, VALUE);
+VALUE rb_obj_instance_exec(int, VALUE*, VALUE);
+VALUE rb_mod_module_eval(int, VALUE*, VALUE);
+VALUE rb_mod_module_exec(int, VALUE*, VALUE);
+void rb_load(VALUE, int);
+void rb_load_protect(VALUE, int, int*);
+__attribute__ ((noreturn)) void rb_jump_tag(int);
+int rb_provided(const char*);
+int rb_feature_provided(const char *, const char **);
+void rb_provide(const char*);
+VALUE rb_f_require(VALUE, VALUE);
+VALUE rb_require_safe(VALUE, int);
+void rb_obj_call_init(VALUE, int, VALUE*);
+VALUE rb_class_new_instance(int, VALUE*, VALUE);
+VALUE rb_block_proc(void);
+VALUE rb_f_lambda(void);
+VALUE rb_proc_new(VALUE (*)( ), VALUE);
+VALUE rb_proc_call(VALUE, VALUE);
+VALUE rb_proc_call_with_block(VALUE, int argc, VALUE *argv, VALUE);
+int rb_proc_arity(VALUE);
+VALUE rb_binding_new(void);
+VALUE rb_obj_method(VALUE, VALUE);
+VALUE rb_method_call(int, VALUE*, VALUE);
+int rb_mod_method_arity(VALUE, ID);
+int rb_obj_method_arity(VALUE, ID);
+VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*);
+void rb_set_end_proc(void (*)(VALUE), VALUE);
+void rb_mark_end_proc(void);
+void rb_exec_end_proc(void);
+void Init_jump(void);
+void ruby_finalize(void);
+__attribute__ ((noreturn)) void ruby_stop(int);
+int ruby_cleanup(int);
+void rb_gc_mark_threads(void);
+void rb_thread_schedule(void);
+void rb_thread_wait_fd(int);
+int rb_thread_fd_writable(int);
+void rb_thread_fd_close(int);
+int rb_thread_alone(void);
+void rb_thread_polling(void);
+void rb_thread_sleep(int);
+void rb_thread_sleep_forever(void);
+VALUE rb_thread_stop(void);
+VALUE rb_thread_wakeup(VALUE);
+VALUE rb_thread_run(VALUE);
+VALUE rb_thread_kill(VALUE);
+VALUE rb_thread_create(VALUE (*)(), void*);
+void rb_thread_signal_raise(void *, int);
+void rb_thread_signal_exit(void *);
+int rb_thread_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
+void rb_thread_wait_for(struct timeval);
+VALUE rb_thread_current(void);
+VALUE rb_thread_main(void);
+VALUE rb_thread_local_aref(VALUE, ID);
+VALUE rb_thread_local_aset(VALUE, ID, VALUE);
+void rb_thread_atfork(void);
+void rb_thread_atfork_before_exec(void);
+VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE);
+
+VALUE rb_file_s_expand_path(int, VALUE *);
+VALUE rb_file_expand_path(VALUE, VALUE);
+VALUE rb_file_s_absolute_path(int, VALUE *);
+VALUE rb_file_absolute_path(VALUE, VALUE);
+void rb_file_const(const char*, VALUE);
+int rb_find_file_ext(VALUE*, const char* const*);
+VALUE rb_find_file(VALUE);
+char *rb_path_next(const char *);
+char *rb_path_skip_prefix(const char *);
+char *rb_path_last_separator(const char *);
+char *rb_path_end(const char *);
+VALUE rb_file_directory_p(VALUE,VALUE);
+
+void ruby_set_stack_size(size_t);
+__attribute__ ((noreturn)) void rb_memerror(void);
+int ruby_stack_check(void);
+size_t ruby_stack_length(VALUE**);
+int rb_during_gc(void);
+void rb_gc_mark_locations(VALUE*, VALUE*);
+void rb_mark_tbl(struct st_table*);
+void rb_mark_set(struct st_table*);
+void rb_mark_hash(struct st_table*);
+void rb_gc_mark_maybe(VALUE);
+void rb_gc_mark(VALUE);
+void rb_gc_force_recycle(VALUE);
+void rb_gc(void);
+void rb_gc_copy_finalizer(VALUE,VALUE);
+void rb_gc_finalize_deferred(void);
+void rb_gc_call_finalizer_at_exit(void);
+VALUE rb_gc_enable(void);
+VALUE rb_gc_disable(void);
+VALUE rb_gc_start(void);
+
+void st_foreach_safe(struct st_table *, int (*)(), st_data_t);
+void rb_hash_foreach(VALUE, int (*)(), VALUE);
+VALUE rb_hash(VALUE);
+VALUE rb_hash_new(void);
+VALUE rb_hash_dup(VALUE);
+VALUE rb_hash_freeze(VALUE);
+VALUE rb_hash_aref(VALUE, VALUE);
+VALUE rb_hash_lookup(VALUE, VALUE);
+VALUE rb_hash_lookup2(VALUE, VALUE, VALUE);
+VALUE rb_hash_fetch(VALUE, VALUE);
+VALUE rb_hash_aset(VALUE, VALUE, VALUE);
+VALUE rb_hash_delete_if(VALUE);
+VALUE rb_hash_delete(VALUE,VALUE);
+struct st_table *rb_hash_tbl(VALUE);
+int rb_path_check(const char*);
+int rb_env_path_tainted(void);
+VALUE rb_env_clear(void);
+
+
+extern VALUE rb_fs;
+extern VALUE rb_output_fs;
+extern VALUE rb_rs;
+extern VALUE rb_default_rs;
+extern VALUE rb_output_rs;
+VALUE rb_io_write(VALUE, VALUE);
+VALUE rb_io_gets(VALUE);
+VALUE rb_io_getbyte(VALUE);
+VALUE rb_io_ungetc(VALUE, VALUE);
+VALUE rb_io_ungetbyte(VALUE, VALUE);
+VALUE rb_io_close(VALUE);
+VALUE rb_io_flush(VALUE);
+VALUE rb_io_eof(VALUE);
+VALUE rb_io_binmode(VALUE);
+VALUE rb_io_ascii8bit_binmode(VALUE);
+VALUE rb_io_addstr(VALUE, VALUE);
+VALUE rb_io_printf(int, VALUE*, VALUE);
+VALUE rb_io_print(int, VALUE*, VALUE);
+VALUE rb_io_puts(int, VALUE*, VALUE);
+VALUE rb_io_fdopen(int, int, const char*);
+VALUE rb_file_open(const char*, const char*);
+VALUE rb_file_open_str(VALUE, const char*);
+VALUE rb_gets(void);
+void rb_write_error(const char*);
+void rb_write_error2(const char*, long);
+void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
+int rb_pipe(int *pipes);
+
+VALUE rb_marshal_dump(VALUE, VALUE);
+VALUE rb_marshal_load(VALUE);
+void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE));
+
+void rb_num_zerodiv(void);
+VALUE rb_num_coerce_bin(VALUE, VALUE, ID);
+VALUE rb_num_coerce_cmp(VALUE, VALUE, ID);
+VALUE rb_num_coerce_relop(VALUE, VALUE, ID);
+VALUE rb_float_new(double);
+VALUE rb_num2fix(VALUE);
+VALUE rb_fix2str(VALUE, int);
+VALUE rb_dbl_cmp(double, double);
+
+int rb_eql(VALUE, VALUE);
+VALUE rb_any_to_s(VALUE);
+VALUE rb_inspect(VALUE);
+VALUE rb_obj_is_instance_of(VALUE, VALUE);
+VALUE rb_obj_is_kind_of(VALUE, VALUE);
+VALUE rb_obj_alloc(VALUE);
+VALUE rb_obj_clone(VALUE);
+VALUE rb_obj_dup(VALUE);
+VALUE rb_obj_init_copy(VALUE,VALUE);
+VALUE rb_obj_taint(VALUE);
+VALUE rb_obj_tainted(VALUE);
+VALUE rb_obj_untaint(VALUE);
+VALUE rb_obj_freeze(VALUE);
+VALUE rb_obj_frozen_p(VALUE);
+VALUE rb_obj_id(VALUE);
+VALUE rb_obj_class(VALUE);
+VALUE rb_class_real(VALUE);
+VALUE rb_class_inherited_p(VALUE, VALUE);
+VALUE rb_convert_type(VALUE,int,const char*,const char*);
+VALUE rb_check_convert_type(VALUE,int,const char*,const char*);
+VALUE rb_check_to_integer(VALUE, const char *);
+VALUE rb_to_int(VALUE);
+VALUE rb_Integer(VALUE);
+VALUE rb_Float(VALUE);
+VALUE rb_String(VALUE);
+VALUE rb_Array(VALUE);
+double rb_cstr_to_dbl(const char*, int);
+double rb_str_to_dbl(VALUE, int);
+
+extern int ruby_sourceline;
+extern char *ruby_sourcefile;
+ID rb_id_attrset(ID);
+void rb_gc_mark_parser(void);
+int rb_is_const_id(ID);
+int rb_is_instance_id(ID);
+int rb_is_class_id(ID);
+int rb_is_local_id(ID);
+int rb_is_junk_id(ID);
+int rb_symname_p(const char*);
+int rb_sym_interned_p(VALUE);
+void rb_gc_mark_symbols(void);
+VALUE rb_backref_get(void);
+void rb_backref_set(VALUE);
+VALUE rb_lastline_get(void);
+void rb_lastline_set(VALUE);
+VALUE rb_sym_all_symbols(void);
+
+void rb_last_status_set(int status, pid_t pid);
+VALUE rb_last_status_get(void);
+struct rb_exec_arg {
+ int argc;
+ VALUE *argv;
+ const char *prog;
+ VALUE options;
+ VALUE redirect_fds;
+};
+int rb_proc_exec_n(int, VALUE*, const char*);
+int rb_proc_exec(const char*);
+VALUE rb_exec_arg_init(int argc, VALUE *argv, int accept_shell, struct rb_exec_arg *e);
+int rb_exec_arg_addopt(struct rb_exec_arg *e, VALUE key, VALUE val);
+void rb_exec_arg_fixup(struct rb_exec_arg *e);
+int rb_run_exec_options(const struct rb_exec_arg *e, struct rb_exec_arg *s);
+int rb_exec(const struct rb_exec_arg*);
+pid_t rb_fork(int*, int (*)(void*), void*, VALUE);
+VALUE rb_f_exec(int,VALUE*);
+pid_t rb_waitpid(pid_t pid, int *status, int flags);
+void rb_syswait(pid_t pid);
+pid_t rb_spawn(int, VALUE*);
+VALUE rb_proc_times(VALUE);
+VALUE rb_detach_process(pid_t pid);
+
+VALUE rb_range_new(VALUE, VALUE, int);
+VALUE rb_range_beg_len(VALUE, long*, long*, long, int);
+
+unsigned long rb_genrand_int32(void);
+double rb_genrand_real(void);
+void rb_reset_random_seed(void);
+
+
+int rb_memcicmp(const void*,const void*,long);
+void rb_match_busy(VALUE);
+VALUE rb_reg_nth_defined(int, VALUE);
+VALUE rb_reg_nth_match(int, VALUE);
+VALUE rb_reg_last_match(VALUE);
+VALUE rb_reg_match_pre(VALUE);
+VALUE rb_reg_match_post(VALUE);
+VALUE rb_reg_match_last(VALUE);
+
+VALUE rb_reg_new_str(VALUE, int);
+VALUE rb_reg_new(const char *, long, int);
+VALUE rb_reg_match(VALUE, VALUE);
+VALUE rb_reg_match2(VALUE);
+int rb_reg_options(VALUE);
+void rb_set_kcode(const char*);
+const char* rb_get_kcode(void);
+
+
+extern VALUE rb_argv0;
+VALUE rb_get_argv(void);
+void *rb_load_file(const char*);
+void ruby_script(const char*);
+void ruby_prog_init(void);
+void ruby_set_argv(int, char**);
+void *ruby_process_options(int, char**);
+void ruby_init_loadpath(void);
+void ruby_incpush(const char*);
+
+VALUE rb_f_kill(int, VALUE*);
+void rb_gc_mark_trap_list(void);
+
+
+void (*ruby_posix_signal(int, void (*)(int)))(int);
+
+void ruby_sig_finalize(void);
+void rb_trap_exit(void);
+void rb_trap_exec(void);
+const char *ruby_signal_name(int);
+void ruby_default_signal(int);
+
+VALUE rb_f_sprintf(int, const VALUE*);
+VALUE rb_sprintf(const char*, ...) __attribute__((format(printf, 1, 2)));
+VALUE rb_vsprintf(const char*, va_list);
+VALUE rb_str_catf(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
+VALUE rb_str_vcatf(VALUE, const char*, va_list);
+VALUE rb_str_format(int, const VALUE *, VALUE);
+
+VALUE rb_str_new(const char*, long);
+VALUE rb_str_new_cstr(const char*);
+VALUE rb_str_new2(const char*);
+VALUE rb_str_new_shared(VALUE);
+VALUE rb_str_new3(VALUE);
+VALUE rb_str_new_frozen(VALUE);
+VALUE rb_str_new4(VALUE);
+VALUE rb_str_new_with_class(VALUE, const char*, long);
+VALUE rb_str_new5(VALUE, const char*, long);
+VALUE rb_tainted_str_new_cstr(const char*);
+VALUE rb_tainted_str_new(const char*, long);
+VALUE rb_tainted_str_new2(const char*);
+VALUE rb_external_str_new(const char*, long);
+VALUE rb_external_str_new_cstr(const char*);
+VALUE rb_locale_str_new(const char*, long);
+VALUE rb_locale_str_new_cstr(const char*);
+VALUE rb_str_buf_new(long);
+VALUE rb_str_buf_new_cstr(const char*);
+VALUE rb_str_buf_new2(const char*);
+VALUE rb_str_tmp_new(long);
+VALUE rb_usascii_str_new(const char*, long);
+VALUE rb_usascii_str_new_cstr(const char*);
+VALUE rb_usascii_str_new2(const char*);
+void rb_str_free(VALUE);
+void rb_str_shared_replace(VALUE, VALUE);
+VALUE rb_str_buf_append(VALUE, VALUE);
+VALUE rb_str_buf_cat(VALUE, const char*, long);
+VALUE rb_str_buf_cat2(VALUE, const char*);
+VALUE rb_str_buf_cat_ascii(VALUE, const char*);
+VALUE rb_obj_as_string(VALUE);
+VALUE rb_check_string_type(VALUE);
+VALUE rb_str_dup(VALUE);
+VALUE rb_str_locktmp(VALUE);
+VALUE rb_str_unlocktmp(VALUE);
+VALUE rb_str_dup_frozen(VALUE);
+
+VALUE rb_str_plus(VALUE, VALUE);
+VALUE rb_str_times(VALUE, VALUE);
+long rb_str_sublen(VALUE, long);
+VALUE rb_str_substr(VALUE, long, long);
+VALUE rb_str_subseq(VALUE, long, long);
+void rb_str_modify(VALUE);
+VALUE rb_str_freeze(VALUE);
+void rb_str_set_len(VALUE, long);
+VALUE rb_str_resize(VALUE, long);
+VALUE rb_str_cat(VALUE, const char*, long);
+VALUE rb_str_cat2(VALUE, const char*);
+VALUE rb_str_append(VALUE, VALUE);
+VALUE rb_str_concat(VALUE, VALUE);
+int rb_memhash(const void *ptr, long len);
+int rb_str_hash(VALUE);
+int rb_str_hash_cmp(VALUE,VALUE);
+int rb_str_comparable(VALUE, VALUE);
+int rb_str_cmp(VALUE, VALUE);
+VALUE rb_str_equal(VALUE str1, VALUE str2);
+VALUE rb_str_drop_bytes(VALUE, long);
+void rb_str_update(VALUE, long, long, VALUE);
+VALUE rb_str_inspect(VALUE);
+VALUE rb_str_dump(VALUE);
+VALUE rb_str_split(VALUE, const char*);
+void rb_str_associate(VALUE, VALUE);
+VALUE rb_str_associated(VALUE);
+void rb_str_setter(VALUE, ID, VALUE*);
+VALUE rb_str_intern(VALUE);
+VALUE rb_sym_to_s(VALUE);
+VALUE rb_str_length(VALUE);
+size_t rb_str_capacity(VALUE);
+# 666 "./include/ruby/intern.h"
+VALUE rb_struct_new(VALUE, ...);
+VALUE rb_struct_define(const char*, ...);
+VALUE rb_struct_alloc(VALUE, VALUE);
+VALUE rb_struct_initialize(VALUE, VALUE);
+VALUE rb_struct_aref(VALUE, VALUE);
+VALUE rb_struct_aset(VALUE, VALUE, VALUE);
+VALUE rb_struct_getmember(VALUE, ID);
+VALUE rb_struct_iv_get(VALUE, const char*);
+VALUE rb_struct_s_members(VALUE);
+VALUE rb_struct_members(VALUE);
+VALUE rb_struct_alloc_noinit(VALUE);
+VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t, ...);
+
+typedef void rb_unblock_function_t(void *);
+typedef VALUE rb_blocking_function_t(void *);
+void rb_thread_check_ints(void);
+int rb_thread_interrupted(VALUE thval);
+VALUE rb_thread_blocking_region(rb_blocking_function_t *func, void *data1,
+ rb_unblock_function_t *ubf, void *data2);
+
+
+VALUE rb_mutex_new(void);
+VALUE rb_mutex_locked_p(VALUE mutex);
+VALUE rb_mutex_try_lock(VALUE mutex);
+VALUE rb_mutex_lock(VALUE mutex);
+VALUE rb_mutex_unlock(VALUE mutex);
+VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
+VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);
+VALUE rb_barrier_new(void);
+VALUE rb_barrier_wait(VALUE self);
+VALUE rb_barrier_release(VALUE self);
+VALUE rb_barrier_destroy(VALUE self);
+
+VALUE rb_time_new(time_t, long);
+VALUE rb_time_nano_new(time_t, long);
+
+VALUE rb_mod_name(VALUE);
+VALUE rb_class_path(VALUE);
+void rb_set_class_path(VALUE, VALUE, const char*);
+VALUE rb_path2class(const char*);
+void rb_name_class(VALUE, ID);
+VALUE rb_class_name(VALUE);
+void rb_autoload(VALUE, ID, const char*);
+VALUE rb_autoload_load(VALUE, ID);
+VALUE rb_autoload_p(VALUE, ID);
+void rb_gc_mark_global_tbl(void);
+VALUE rb_f_trace_var(int, VALUE*);
+VALUE rb_f_untrace_var(int, VALUE*);
+VALUE rb_f_global_variables(void);
+void rb_alias_variable(ID, ID);
+struct st_table* rb_generic_ivar_table(VALUE);
+void rb_copy_generic_ivar(VALUE,VALUE);
+void rb_mark_generic_ivar(VALUE);
+void rb_mark_generic_ivar_tbl(void);
+void rb_free_generic_ivar(VALUE);
+VALUE rb_ivar_get(VALUE, ID);
+VALUE rb_ivar_set(VALUE, ID, VALUE);
+VALUE rb_ivar_defined(VALUE, ID);
+void rb_ivar_foreach(VALUE, int (*)(), st_data_t);
+VALUE rb_iv_set(VALUE, const char*, VALUE);
+VALUE rb_iv_get(VALUE, const char*);
+VALUE rb_attr_get(VALUE, ID);
+VALUE rb_obj_instance_variables(VALUE);
+VALUE rb_obj_remove_instance_variable(VALUE, VALUE);
+void *rb_mod_const_at(VALUE, void*);
+void *rb_mod_const_of(VALUE, void*);
+VALUE rb_const_list(void*);
+VALUE rb_mod_constants(int, VALUE *, VALUE);
+VALUE rb_mod_remove_const(VALUE, VALUE);
+int rb_const_defined(VALUE, ID);
+int rb_const_defined_at(VALUE, ID);
+int rb_const_defined_from(VALUE, ID);
+VALUE rb_const_get(VALUE, ID);
+VALUE rb_const_get_at(VALUE, ID);
+VALUE rb_const_get_from(VALUE, ID);
+void rb_const_set(VALUE, ID, VALUE);
+VALUE rb_mod_const_missing(VALUE,VALUE);
+VALUE rb_cvar_defined(VALUE, ID);
+void rb_cvar_set(VALUE, ID, VALUE);
+VALUE rb_cvar_get(VALUE, ID);
+void rb_cv_set(VALUE, const char*, VALUE);
+VALUE rb_cv_get(VALUE, const char*);
+void rb_define_class_variable(VALUE, const char*, VALUE);
+VALUE rb_mod_class_variables(VALUE);
+VALUE rb_mod_remove_cvar(VALUE, VALUE);
+
+void ruby_show_version(void);
+void ruby_show_copyright(void);
+
+ID rb_frame_callee(void);
+VALUE rb_str_succ(VALUE);
+VALUE rb_time_succ(VALUE);
+
+void rb_frame_pop(void);
+int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
+# 1127 "./include/ruby/ruby.h" 2
+# 1140 "./include/ruby/ruby.h"
+void ruby_sysinit(int *, char ***);
+
+
+
+int ruby_native_thread_p(void);
+# 1160 "./include/ruby/ruby.h"
+typedef unsigned int rb_event_flag_t;
+typedef void (*rb_event_hook_func_t)(rb_event_flag_t, VALUE data, VALUE, ID, VALUE klass);
+
+typedef struct rb_event_hook_struct {
+ rb_event_flag_t flag;
+ rb_event_hook_func_t func;
+ VALUE data;
+ struct rb_event_hook_struct *next;
+} rb_event_hook_t;
+
+void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
+ VALUE data);
+int rb_remove_event_hook(rb_event_hook_func_t func);
+
+
+
+
+int rb_isalnum(int c);
+int rb_isalpha(int c);
+int rb_isblank(int c);
+int rb_iscntrl(int c);
+int rb_isdigit(int c);
+int rb_isgraph(int c);
+int rb_islower(int c);
+int rb_isprint(int c);
+int rb_ispunct(int c);
+int rb_isspace(int c);
+int rb_isupper(int c);
+int rb_isxdigit(int c);
+int rb_tolower(int c);
+int rb_toupper(int c);
+# 1207 "./include/ruby/ruby.h"
+int st_strcasecmp(const char *s1, const char *s2);
+int st_strncasecmp(const char *s1, const char *s2, size_t n);
+
+
+
+unsigned long ruby_strtoul(const char *str, char **endptr, int base);
+# 19 "parse.y" 2
+
+# 1 "./include/ruby/encoding.h" 1
+# 16 "./include/ruby/encoding.h"
+# 1 "./include/ruby/oniguruma.h" 1
+# 106 "./include/ruby/oniguruma.h"
+typedef unsigned char OnigUChar;
+typedef unsigned int OnigCodePoint;
+typedef unsigned int OnigCtype;
+typedef unsigned int OnigDistance;
+
+
+
+typedef unsigned int OnigCaseFoldType;
+
+extern OnigCaseFoldType OnigDefaultCaseFoldFlag;
+# 135 "./include/ruby/oniguruma.h"
+typedef struct {
+ int byte_len;
+ int code_len;
+ OnigCodePoint code[3];
+} OnigCaseFoldCodeItem;
+
+typedef struct {
+ OnigCodePoint esc;
+ OnigCodePoint anychar;
+ OnigCodePoint anytime;
+ OnigCodePoint zero_or_one_time;
+ OnigCodePoint one_or_more_time;
+ OnigCodePoint anychar_anytime;
+} OnigMetaCharTableType;
+
+typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg);
+
+typedef struct OnigEncodingTypeST {
+ int (*precise_mbc_enc_len)(const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc);
+ const char* name;
+ int max_enc_len;
+ int min_enc_len;
+ int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
+ OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
+ int (*code_to_mbclen)(OnigCodePoint code, struct OnigEncodingTypeST* enc);
+ int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf, struct OnigEncodingTypeST* enc);
+ int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, struct OnigEncodingTypeST* enc);
+ int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, struct OnigEncodingTypeST* enc);
+ int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[], struct OnigEncodingTypeST* enc);
+ int (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end);
+ int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, struct OnigEncodingTypeST* enc);
+ int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], struct OnigEncodingTypeST* enc);
+ OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
+ int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
+ int ruby_encoding_index;
+} OnigEncodingType;
+
+typedef OnigEncodingType* OnigEncoding;
+
+extern OnigEncodingType OnigEncodingASCII;
+# 244 "./include/ruby/oniguruma.h"
+extern
+int onigenc_mbclen_approximate (const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc);
+# 292 "./include/ruby/oniguruma.h"
+extern
+OnigUChar* onigenc_step_back (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n);
+
+
+
+extern
+int onigenc_init (void);
+extern
+int onigenc_set_default_encoding (OnigEncoding enc);
+extern
+OnigEncoding onigenc_get_default_encoding (void);
+extern
+void onigenc_set_default_caseconv_table (const OnigUChar* table);
+extern
+OnigUChar* onigenc_get_right_adjust_char_head_with_prev (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev);
+extern
+OnigUChar* onigenc_get_prev_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
+extern
+OnigUChar* onigenc_get_left_adjust_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
+extern
+OnigUChar* onigenc_get_right_adjust_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
+extern
+int onigenc_strlen (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
+extern
+int onigenc_strlen_null (OnigEncoding enc, const OnigUChar* p);
+extern
+int onigenc_str_bytelen_null (OnigEncoding enc, const OnigUChar* p);
+# 332 "./include/ruby/oniguruma.h"
+typedef unsigned int OnigOptionType;
+# 358 "./include/ruby/oniguruma.h"
+typedef struct {
+ unsigned int op;
+ unsigned int op2;
+ unsigned int behavior;
+ OnigOptionType options;
+ OnigMetaCharTableType meta_char_table;
+} OnigSyntaxType;
+
+extern const OnigSyntaxType OnigSyntaxASIS;
+extern const OnigSyntaxType OnigSyntaxPosixBasic;
+extern const OnigSyntaxType OnigSyntaxPosixExtended;
+extern const OnigSyntaxType OnigSyntaxEmacs;
+extern const OnigSyntaxType OnigSyntaxGrep;
+extern const OnigSyntaxType OnigSyntaxGnuRegex;
+extern const OnigSyntaxType OnigSyntaxJava;
+extern const OnigSyntaxType OnigSyntaxPerl;
+extern const OnigSyntaxType OnigSyntaxPerl_NG;
+extern const OnigSyntaxType OnigSyntaxRuby;
+# 390 "./include/ruby/oniguruma.h"
+extern const OnigSyntaxType* OnigDefaultSyntax;
+# 559 "./include/ruby/oniguruma.h"
+typedef struct OnigCaptureTreeNodeStruct {
+ int group;
+ int beg;
+ int end;
+ int allocated;
+ int num_childs;
+ struct OnigCaptureTreeNodeStruct** childs;
+} OnigCaptureTreeNode;
+
+
+struct re_registers {
+ int allocated;
+ int num_regs;
+ int* beg;
+ int* end;
+
+ OnigCaptureTreeNode* history_root;
+};
+# 587 "./include/ruby/oniguruma.h"
+typedef struct re_registers OnigRegion;
+
+typedef struct {
+ OnigEncoding enc;
+ OnigUChar* par;
+ OnigUChar* par_end;
+} OnigErrorInfo;
+
+typedef struct {
+ int lower;
+ int upper;
+} OnigRepeatRange;
+
+typedef void (*OnigWarnFunc) (const char* s);
+extern void onig_null_warn (const char* s);
+# 615 "./include/ruby/oniguruma.h"
+typedef struct re_pattern_buffer {
+
+ unsigned char* p;
+ unsigned int used;
+ unsigned int alloc;
+
+ int state;
+ int num_mem;
+ int num_repeat;
+ int num_null_check;
+ int num_comb_exp_check;
+ int num_call;
+ unsigned int capture_history;
+ unsigned int bt_mem_start;
+ unsigned int bt_mem_end;
+ int stack_pop_level;
+ int repeat_range_alloc;
+ OnigRepeatRange* repeat_range;
+
+ OnigEncoding enc;
+ OnigOptionType options;
+ const OnigSyntaxType* syntax;
+ OnigCaseFoldType case_fold_flag;
+ void* name_table;
+
+
+ int optimize;
+ int threshold_len;
+ int anchor;
+ OnigDistance anchor_dmin;
+ OnigDistance anchor_dmax;
+ int sub_anchor;
+ unsigned char *exact;
+ unsigned char *exact_end;
+ unsigned char map[256];
+ int *int_map;
+ int *int_map_backward;
+ OnigDistance dmin;
+ OnigDistance dmax;
+
+
+ struct re_pattern_buffer* chain;
+} OnigRegexType;
+
+typedef OnigRegexType* OnigRegex;
+
+
+ typedef OnigRegexType regex_t;
+
+
+
+typedef struct {
+ int num_of_elements;
+ OnigEncoding pattern_enc;
+ OnigEncoding target_enc;
+ OnigSyntaxType* syntax;
+ OnigOptionType option;
+ OnigCaseFoldType case_fold_flag;
+} OnigCompileInfo;
+
+
+extern
+int onig_init (void);
+extern
+int onig_error_code_to_str (OnigUChar* s, int err_code, ...);
+extern
+void onig_set_warn_func (OnigWarnFunc f);
+extern
+void onig_set_verb_warn_func (OnigWarnFunc f);
+extern
+int onig_new (OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
+extern
+int onig_new_deluxe (OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
+extern
+void onig_free (OnigRegex);
+extern
+int onig_recompile (OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo);
+extern
+int onig_recompile_deluxe (OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
+extern
+int onig_search (OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
+extern
+int onig_match (OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option);
+extern
+OnigRegion* onig_region_new (void);
+extern
+void onig_region_init (OnigRegion* region);
+extern
+void onig_region_free (OnigRegion* region, int free_self);
+extern
+void onig_region_copy (OnigRegion* to, OnigRegion* from);
+extern
+void onig_region_clear (OnigRegion* region);
+extern
+int onig_region_resize (OnigRegion* region, int n);
+extern
+int onig_region_set (OnigRegion* region, int at, int beg, int end);
+extern
+int onig_name_to_group_numbers (OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums);
+extern
+int onig_name_to_backref_number (OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region);
+extern
+int onig_foreach_name (OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg);
+extern
+int onig_number_of_names (OnigRegex reg);
+extern
+int onig_number_of_captures (OnigRegex reg);
+extern
+int onig_number_of_capture_histories (OnigRegex reg);
+extern
+OnigCaptureTreeNode* onig_get_capture_tree (OnigRegion* region);
+extern
+int onig_capture_tree_traverse (OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg);
+extern
+int onig_noname_group_capture_is_active (OnigRegex reg);
+extern
+OnigEncoding onig_get_encoding (OnigRegex reg);
+extern
+OnigOptionType onig_get_options (OnigRegex reg);
+extern
+OnigCaseFoldType onig_get_case_fold_flag (OnigRegex reg);
+extern
+const OnigSyntaxType* onig_get_syntax (OnigRegex reg);
+extern
+int onig_set_default_syntax (const OnigSyntaxType* syntax);
+extern
+void onig_copy_syntax (OnigSyntaxType* to, const OnigSyntaxType* from);
+extern
+unsigned int onig_get_syntax_op (OnigSyntaxType* syntax);
+extern
+unsigned int onig_get_syntax_op2 (OnigSyntaxType* syntax);
+extern
+unsigned int onig_get_syntax_behavior (OnigSyntaxType* syntax);
+extern
+OnigOptionType onig_get_syntax_options (OnigSyntaxType* syntax);
+extern
+void onig_set_syntax_op (OnigSyntaxType* syntax, unsigned int op);
+extern
+void onig_set_syntax_op2 (OnigSyntaxType* syntax, unsigned int op2);
+extern
+void onig_set_syntax_behavior (OnigSyntaxType* syntax, unsigned int behavior);
+extern
+void onig_set_syntax_options (OnigSyntaxType* syntax, OnigOptionType options);
+extern
+int onig_set_meta_char (OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code);
+extern
+void onig_copy_encoding (OnigEncoding to, OnigEncoding from);
+extern
+OnigCaseFoldType onig_get_default_case_fold_flag (void);
+extern
+int onig_set_default_case_fold_flag (OnigCaseFoldType case_fold_flag);
+extern
+unsigned int onig_get_match_stack_limit_size (void);
+extern
+int onig_set_match_stack_limit_size (unsigned int size);
+extern
+int onig_end (void);
+extern
+const char* onig_version (void);
+extern
+const char* onig_copyright (void);
+# 17 "./include/ruby/encoding.h" 2
+# 69 "./include/ruby/encoding.h"
+typedef OnigEncodingType rb_encoding;
+
+int rb_enc_replicate(const char *, rb_encoding *);
+int rb_define_dummy_encoding(const char *);
+
+int rb_enc_get_index(VALUE obj);
+void rb_enc_set_index(VALUE obj, int encindex);
+int rb_enc_find_index(const char *name);
+int rb_to_encoding_index(VALUE);
+rb_encoding* rb_to_encoding(VALUE);
+rb_encoding* rb_enc_get(VALUE);
+rb_encoding* rb_enc_compatible(VALUE,VALUE);
+rb_encoding* rb_enc_check(VALUE,VALUE);
+VALUE rb_enc_associate_index(VALUE, int);
+VALUE rb_enc_associate(VALUE, rb_encoding*);
+void rb_enc_copy(VALUE dst, VALUE src);
+
+VALUE rb_enc_str_new(const char*, long, rb_encoding*);
+VALUE rb_enc_reg_new(const char*, long, rb_encoding*, int);
+VALUE rb_enc_sprintf(rb_encoding *, const char*, ...) __attribute__((format(printf, 2, 3)));
+VALUE rb_enc_vsprintf(rb_encoding *, const char*, va_list);
+long rb_enc_strlen(const char*, const char*, rb_encoding*);
+char* rb_enc_nth(const char*, const char*, int, rb_encoding*);
+VALUE rb_obj_encoding(VALUE);
+VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc);
+
+VALUE rb_external_str_new_with_enc(const char *ptr, long len, rb_encoding *);
+VALUE rb_str_export_to_enc(VALUE, rb_encoding *);
+VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to);
+
+
+rb_encoding* rb_enc_from_index(int idx);
+
+
+rb_encoding * rb_enc_find(const char *name);
+# 113 "./include/ruby/encoding.h"
+int rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc);
+
+
+int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc);
+
+
+
+
+
+
+
+int rb_enc_ascget(const char *p, const char *e, int *len, rb_encoding *enc);
+
+
+unsigned int rb_enc_codepoint(const char *p, const char *e, rb_encoding *enc);
+
+
+
+int rb_enc_codelen(int code, rb_encoding *enc);
+# 158 "./include/ruby/encoding.h"
+int rb_enc_casefold(char *to, const char *p, const char *e, rb_encoding *enc);
+int rb_enc_toupper(int c, rb_encoding *enc);
+int rb_enc_tolower(int c, rb_encoding *enc);
+ID rb_intern3(const char*, long, rb_encoding*);
+ID rb_interned_id_p(const char *, long, rb_encoding *);
+int rb_enc_symname_p(const char*, rb_encoding*);
+int rb_enc_str_coderange(VALUE);
+long rb_str_coderange_scan_restartable(const char*, const char*, rb_encoding*, int*);
+int rb_enc_str_asciionly_p(VALUE);
+
+VALUE rb_enc_from_encoding(rb_encoding *enc);
+rb_encoding *rb_ascii8bit_encoding(void);
+rb_encoding *rb_utf8_encoding(void);
+rb_encoding *rb_usascii_encoding(void);
+rb_encoding *rb_locale_encoding(void);
+rb_encoding *rb_filesystem_encoding(void);
+rb_encoding *rb_default_external_encoding(void);
+rb_encoding *rb_default_internal_encoding(void);
+int rb_ascii8bit_encindex(void);
+int rb_utf8_encindex(void);
+int rb_usascii_encindex(void);
+VALUE rb_enc_default_external(void);
+VALUE rb_enc_default_internal(void);
+void rb_enc_set_default_external(VALUE encoding);
+void rb_enc_set_default_internal(VALUE encoding);
+VALUE rb_locale_charmap(VALUE klass);
+long rb_memsearch(const void*,long,const void*,long,rb_encoding*);
+
+extern VALUE rb_cEncoding;
+# 198 "./include/ruby/encoding.h"
+static inline int
+rb_enc_dummy_p(rb_encoding *enc)
+{
+ return ((enc)->ruby_encoding_index & (1<<24)) != 0;
+}
+
+
+
+typedef enum {
+ econv_invalid_byte_sequence,
+ econv_undefined_conversion,
+ econv_destination_buffer_full,
+ econv_source_buffer_empty,
+ econv_finished,
+ econv_after_output,
+ econv_incomplete_input
+} rb_econv_result_t;
+
+typedef struct rb_econv_t rb_econv_t;
+
+VALUE rb_str_encode(VALUE str, VALUE to, int ecflags, VALUE ecopts);
+int rb_econv_has_convpath_p(const char* from_encoding, const char* to_encoding);
+
+int rb_econv_prepare_opts(VALUE opthash, VALUE *ecopts);
+
+rb_econv_t *rb_econv_open(const char *source_encoding, const char *destination_encoding, int ecflags);
+rb_econv_t *rb_econv_open_opts(const char *source_encoding, const char *destination_encoding, int ecflags, VALUE ecopts);
+
+rb_econv_result_t rb_econv_convert(rb_econv_t *ec,
+ const unsigned char **source_buffer_ptr, const unsigned char *source_buffer_end,
+ unsigned char **destination_buffer_ptr, unsigned char *destination_buffer_end,
+ int flags);
+void rb_econv_close(rb_econv_t *ec);
+
+
+int rb_econv_set_replacement(rb_econv_t *ec, const unsigned char *str, size_t len, const char *encname);
+
+
+int rb_econv_decorate_at_first(rb_econv_t *ec, const char *decorator_name);
+int rb_econv_decorate_at_last(rb_econv_t *ec, const char *decorator_name);
+
+VALUE rb_econv_open_exc(const char *senc, const char *denc, int ecflags);
+
+
+int rb_econv_insert_output(rb_econv_t *ec,
+ const unsigned char *str, size_t len, const char *str_encoding);
+
+
+const char *rb_econv_encoding_to_insert_output(rb_econv_t *ec);
+
+
+void rb_econv_check_error(rb_econv_t *ec);
+
+
+VALUE rb_econv_make_exception(rb_econv_t *ec);
+
+int rb_econv_putbackable(rb_econv_t *ec);
+void rb_econv_putback(rb_econv_t *ec, unsigned char *p, int n);
+
+
+
+const char *rb_econv_asciicompat_encoding(const char *encname);
+
+VALUE rb_econv_str_convert(rb_econv_t *ec, VALUE src, int flags);
+VALUE rb_econv_substr_convert(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, int flags);
+VALUE rb_econv_str_append(rb_econv_t *ec, VALUE src, VALUE dst, int flags);
+VALUE rb_econv_substr_append(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, VALUE dst, int flags);
+
+void rb_econv_binmode(rb_econv_t *ec);
+# 21 "parse.y" 2
+# 1 "node.h" 1
+# 22 "node.h"
+enum node_type {
+ NODE_METHOD,
+
+ NODE_FBODY,
+
+ NODE_CFUNC,
+
+ NODE_SCOPE,
+
+ NODE_BLOCK,
+
+ NODE_IF,
+
+ NODE_CASE,
+
+ NODE_WHEN,
+
+ NODE_OPT_N,
+
+ NODE_WHILE,
+
+ NODE_UNTIL,
+
+ NODE_ITER,
+
+ NODE_FOR,
+
+ NODE_BREAK,
+
+ NODE_NEXT,
+
+ NODE_REDO,
+
+ NODE_RETRY,
+
+ NODE_BEGIN,
+
+ NODE_RESCUE,
+
+ NODE_RESBODY,
+
+ NODE_ENSURE,
+
+ NODE_AND,
+
+ NODE_OR,
+
+ NODE_MASGN,
+
+ NODE_LASGN,
+
+ NODE_DASGN,
+
+ NODE_DASGN_CURR,
+
+ NODE_GASGN,
+
+ NODE_IASGN,
+
+ NODE_IASGN2,
+
+ NODE_CDECL,
+
+ NODE_CVASGN,
+
+ NODE_CVDECL,
+
+ NODE_OP_ASGN1,
+
+ NODE_OP_ASGN2,
+
+ NODE_OP_ASGN_AND,
+
+ NODE_OP_ASGN_OR,
+
+ NODE_CALL,
+
+ NODE_FCALL,
+
+ NODE_VCALL,
+
+ NODE_SUPER,
+
+ NODE_ZSUPER,
+
+ NODE_ARRAY,
+
+ NODE_ZARRAY,
+
+ NODE_VALUES,
+
+ NODE_HASH,
+
+ NODE_RETURN,
+
+ NODE_YIELD,
+
+ NODE_LVAR,
+
+ NODE_DVAR,
+
+ NODE_GVAR,
+
+ NODE_IVAR,
+
+ NODE_CONST,
+
+ NODE_CVAR,
+
+ NODE_NTH_REF,
+
+ NODE_BACK_REF,
+
+ NODE_MATCH,
+
+ NODE_MATCH2,
+
+ NODE_MATCH3,
+
+ NODE_LIT,
+
+ NODE_STR,
+
+ NODE_DSTR,
+
+ NODE_XSTR,
+
+ NODE_DXSTR,
+
+ NODE_EVSTR,
+
+ NODE_DREGX,
+
+ NODE_DREGX_ONCE,
+
+ NODE_ARGS,
+
+ NODE_ARGS_AUX,
+
+ NODE_OPT_ARG,
+
+ NODE_POSTARG,
+
+ NODE_ARGSCAT,
+
+ NODE_ARGSPUSH,
+
+ NODE_SPLAT,
+
+ NODE_TO_ARY,
+
+ NODE_BLOCK_ARG,
+
+ NODE_BLOCK_PASS,
+
+ NODE_DEFN,
+
+ NODE_DEFS,
+
+ NODE_ALIAS,
+
+ NODE_VALIAS,
+
+ NODE_UNDEF,
+
+ NODE_CLASS,
+
+ NODE_MODULE,
+
+ NODE_SCLASS,
+
+ NODE_COLON2,
+
+ NODE_COLON3,
+
+ NODE_DOT2,
+
+ NODE_DOT3,
+
+ NODE_FLIP2,
+
+ NODE_FLIP3,
+
+ NODE_ATTRSET,
+
+ NODE_SELF,
+
+ NODE_NIL,
+
+ NODE_TRUE,
+
+ NODE_FALSE,
+
+ NODE_ERRINFO,
+
+ NODE_DEFINED,
+
+ NODE_POSTEXE,
+
+ NODE_ALLOCA,
+
+ NODE_BMETHOD,
+
+ NODE_MEMO,
+
+ NODE_IFUNC,
+
+ NODE_DSYM,
+
+ NODE_ATTRASGN,
+
+ NODE_PRELUDE,
+
+ NODE_LAMBDA,
+
+ NODE_OPTBLOCK,
+
+ NODE_LAST
+
+};
+
+typedef struct RNode {
+ unsigned long flags;
+ char *nd_file;
+ union {
+ struct RNode *node;
+ ID id;
+ VALUE value;
+ VALUE (*cfunc)();
+ ID *tbl;
+ } u1;
+ union {
+ struct RNode *node;
+ ID id;
+ long argc;
+ VALUE value;
+ } u2;
+ union {
+ struct RNode *node;
+ ID id;
+ long state;
+ struct global_entry *entry;
+ long cnt;
+ VALUE value;
+ } u3;
+} NODE;
+# 486 "node.h"
+VALUE rb_parser_new(void);
+VALUE rb_parser_end_seen_p(VALUE);
+VALUE rb_parser_encoding(VALUE);
+
+NODE *rb_parser_compile_cstr(volatile VALUE, const char*, const char*, int, int);
+NODE *rb_parser_compile_string(volatile VALUE, const char*, VALUE, int);
+NODE *rb_parser_compile_file(volatile VALUE, const char*, VALUE, int);
+
+NODE *rb_compile_cstr(const char*, const char*, int, int);
+NODE *rb_compile_string(const char*, VALUE, int);
+NODE *rb_compile_file(const char*, VALUE, int);
+
+void rb_add_method(VALUE, ID, NODE *, int);
+NODE *rb_node_newnode(enum node_type,VALUE,VALUE,VALUE);
+
+NODE* rb_method_node(VALUE klass, ID id);
+int rb_node_arity(NODE* node);
+
+struct global_entry *rb_global_entry(ID);
+VALUE rb_gvar_get(struct global_entry *);
+VALUE rb_gvar_set(struct global_entry *, VALUE);
+VALUE rb_gvar_defined(struct global_entry *);
+# 22 "parse.y" 2
+# 1 "parse.h" 1
+# 288 "parse.h"
+typedef union YYSTYPE
+{
+ VALUE val;
+ NODE *node;
+ ID id;
+ int num;
+}
+
+ YYSTYPE;
+# 23 "parse.y" 2
+# 1 "id.h" 1
+# 38 "id.h"
+enum ruby_method_ids {
+# 73 "id.h"
+ idPLUS = '+',
+ idMINUS = '-',
+ idMULT = '*',
+ idDIV = '/',
+ idMOD = '%',
+ idLT = '<',
+ idLTLT = 338,
+ idLE = 329,
+ idGT = '>',
+ idGE = 328,
+ idEq = 325,
+ idEqq = 326,
+ idNeq = 327,
+ idNot = '!',
+ idBackquote = '`',
+ idEqTilde = 332,
+ idAREF = 336,
+ idASET = 337,
+ idLAST_TOKEN = 376 >> 3,
+ tIntern,
+ tMethodMissing,
+ tLength,
+ tGets,
+ tSucc,
+ tEach,
+ tLambda,
+ tSend,
+ t__send__,
+ tInitialize,
+
+
+
+
+ tLAST_ID,
+
+
+
+
+
+ idIntern = ((tIntern<<3)|0x00),
+ idMethodMissing = ((tMethodMissing<<3)|0x00),
+ idLength = ((tLength<<3)|0x00),
+ idGets = ((tGets<<3)|0x00),
+ idSucc = ((tSucc<<3)|0x00),
+ idEach = ((tEach<<3)|0x00),
+ idLambda = ((tLambda<<3)|0x00),
+ idSend = ((tSend<<3)|0x00),
+ id__send__ = ((t__send__<<3)|0x00),
+ idInitialize = ((tInitialize<<3)|0x00)
+};
+
+
+struct ruby_method_ids_check {
+
+
+int checking_for_tUPLUS[321 == 321 ? 1 : -1];
+int checking_for_tUMINUS[322 == 322 ? 1 : -1];
+int checking_for_tPOW[323 == 323 ? 1 : -1];
+int checking_for_tCMP[324 == 324 ? 1 : -1];
+int checking_for_tEQ[325 == 325 ? 1 : -1];
+int checking_for_tEQQ[326 == 326 ? 1 : -1];
+int checking_for_tNEQ[327 == 327 ? 1 : -1];
+int checking_for_tGEQ[328 == 328 ? 1 : -1];
+int checking_for_tLEQ[329 == 329 ? 1 : -1];
+int checking_for_tANDOP[330 == 330 ? 1 : -1];
+int checking_for_tOROP[331 == 331 ? 1 : -1];
+int checking_for_tMATCH[332 == 332 ? 1 : -1];
+int checking_for_tNMATCH[333 == 333 ? 1 : -1];
+int checking_for_tDOT2[334 == 334 ? 1 : -1];
+int checking_for_tDOT3[335 == 335 ? 1 : -1];
+int checking_for_tAREF[336 == 336 ? 1 : -1];
+int checking_for_tASET[337 == 337 ? 1 : -1];
+int checking_for_tLSHFT[338 == 338 ? 1 : -1];
+int checking_for_tRSHFT[339 == 339 ? 1 : -1];
+int checking_for_tLAMBDA[352 == 352 ? 1 : -1];
+int checking_for_idNULL[365 == 365 ? 1 : -1];
+int checking_for_idRespond_to[366 == 366 ? 1 : -1];
+int checking_for_idIFUNC[367 == 367 ? 1 : -1];
+int checking_for_idCFUNC[368 == 368 ? 1 : -1];
+int checking_for_idThrowState[369 == 369 ? 1 : -1];
+int checking_for_id_core_set_method_alias[370 == 370 ? 1 : -1];
+int checking_for_id_core_set_variable_alias[371 == 371 ? 1 : -1];
+int checking_for_id_core_undef_method[372 == 372 ? 1 : -1];
+int checking_for_id_core_define_method[373 == 373 ? 1 : -1];
+int checking_for_id_core_define_singleton_method[374 == 374 ? 1 : -1];
+int checking_for_id_core_set_postexe[375 == 375 ? 1 : -1];
+int checking_for_tLAST_TOKEN[376 == 376 ? 1 : -1];
+};
+# 24 "parse.y" 2
+# 1 "regenc.h" 1
+# 42 "regenc.h"
+typedef struct {
+ OnigCodePoint from;
+ OnigCodePoint to;
+} OnigPairCaseFoldCodes;
+# 98 "regenc.h"
+typedef struct {
+ OnigUChar *name;
+ int ctype;
+ short int len;
+} PosixBracketEntryType;
+# 114 "regenc.h"
+extern int onigenc_ascii_apply_all_case_fold (OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc);
+extern int onigenc_ascii_get_case_fold_codes_by_str (OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[], OnigEncoding enc);
+extern int onigenc_apply_all_case_fold_with_map (int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg);
+extern int onigenc_get_case_fold_codes_by_str_with_map (int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]);
+extern int onigenc_not_support_get_ctype_code_range (OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], OnigEncoding enc);
+extern int onigenc_is_mbc_newline_0x0a (const OnigUChar* p, const OnigUChar* end, OnigEncoding enc);
+
+
+
+extern int onigenc_ascii_mbc_case_fold (OnigCaseFoldType flag, const OnigUChar** p, const OnigUChar* end, OnigUChar* lower, OnigEncoding enc);
+extern int onigenc_single_byte_mbc_enc_len (const OnigUChar* p, const OnigUChar* e, OnigEncoding enc);
+extern OnigCodePoint onigenc_single_byte_mbc_to_code (const OnigUChar* p, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_single_byte_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
+extern int onigenc_single_byte_code_to_mbc (OnigCodePoint code, OnigUChar *buf, OnigEncoding enc);
+extern OnigUChar* onigenc_single_byte_left_adjust_char_head (const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_always_true_is_allowed_reverse_match (const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_always_false_is_allowed_reverse_match (const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_ascii_is_code_ctype (OnigCodePoint code, unsigned int ctype, OnigEncoding enc);
+
+
+extern OnigCodePoint onigenc_mbn_mbc_to_code (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
+extern int onigenc_mbn_mbc_case_fold (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar** p, const OnigUChar* end, OnigUChar* lower);
+extern int onigenc_mb2_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
+extern int onigenc_mb2_code_to_mbc (OnigEncoding enc, OnigCodePoint code, OnigUChar *buf);
+extern int onigenc_minimum_property_name_to_ctype (OnigEncoding enc, OnigUChar* p, OnigUChar* end);
+extern int onigenc_unicode_property_name_to_ctype (OnigEncoding enc, OnigUChar* p, OnigUChar* end);
+extern int onigenc_mb2_is_code_ctype (OnigEncoding enc, OnigCodePoint code, unsigned int ctype);
+extern int onigenc_mb4_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
+extern int onigenc_mb4_code_to_mbc (OnigEncoding enc, OnigCodePoint code, OnigUChar *buf);
+extern int onigenc_mb4_is_code_ctype (OnigEncoding enc, OnigCodePoint code, unsigned int ctype);
+
+
+
+extern int onigenc_unicode_is_code_ctype (OnigCodePoint code, unsigned int ctype, OnigEncoding enc);
+extern int onigenc_utf16_32_get_ctype_code_range (OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[], OnigEncoding enc);
+extern int onigenc_unicode_ctype_code_range (int ctype, const OnigCodePoint* ranges[]);
+extern int onigenc_unicode_get_case_fold_codes_by_str (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]);
+extern int onigenc_unicode_mbc_case_fold (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* fold);
+extern int onigenc_unicode_apply_all_case_fold (OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc);
+
+
+
+
+
+
+
+extern const OnigUChar OnigEncISO_8859_1_ToLowerCaseTable[];
+extern const OnigUChar OnigEncISO_8859_1_ToUpperCaseTable[];
+
+extern int
+onigenc_with_ascii_strncmp (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end, const OnigUChar* sascii , int n);
+extern OnigUChar*
+onigenc_step (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end, int n);
+
+
+extern int onig_is_in_code_range (const OnigUChar* p, OnigCodePoint code);
+
+extern OnigEncoding OnigEncDefaultCharEncoding;
+extern const OnigUChar OnigEncAsciiToLowerCaseTable[];
+extern const OnigUChar OnigEncAsciiToUpperCaseTable[];
+extern const unsigned short OnigEncAsciiCtypeTable[];
+# 25 "parse.y" 2
+
+# 1 "/usr/include/errno.h" 1 3 4
+# 32 "/usr/include/errno.h" 3 4
+
+
+
+
+# 1 "/usr/include/bits/errno.h" 1 3 4
+# 25 "/usr/include/bits/errno.h" 3 4
+# 1 "/usr/include/linux/errno.h" 1 3 4
+
+
+
+# 1 "/usr/include/asm/errno.h" 1 3 4
+# 1 "/usr/include/asm-generic/errno.h" 1 3 4
+
+
+
+# 1 "/usr/include/asm-generic/errno-base.h" 1 3 4
+# 5 "/usr/include/asm-generic/errno.h" 2 3 4
+# 1 "/usr/include/asm/errno.h" 2 3 4
+# 5 "/usr/include/linux/errno.h" 2 3 4
+# 26 "/usr/include/bits/errno.h" 2 3 4
+# 43 "/usr/include/bits/errno.h" 3 4
+extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+# 37 "/usr/include/errno.h" 2 3 4
+# 55 "/usr/include/errno.h" 3 4
+extern char *program_invocation_name, *program_invocation_short_name;
+
+
+
+
+# 69 "/usr/include/errno.h" 3 4
+typedef int error_t;
+# 27 "parse.y" 2
+# 1 "/usr/include/ctype.h" 1 3 4
+# 30 "/usr/include/ctype.h" 3 4
+
+# 48 "/usr/include/ctype.h" 3 4
+enum
+{
+ _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
+ _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
+ _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
+ _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
+ _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
+ _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
+ _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
+ _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
+ _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
+ _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
+ _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
+ _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
+};
+# 81 "/usr/include/ctype.h" 3 4
+extern __const unsigned short int **__ctype_b_loc (void)
+ __attribute__ ((__const));
+extern __const __int32_t **__ctype_tolower_loc (void)
+ __attribute__ ((__const));
+extern __const __int32_t **__ctype_toupper_loc (void)
+ __attribute__ ((__const));
+# 96 "/usr/include/ctype.h" 3 4
+
+
+
+
+
+
+extern int isalnum (int) __attribute__ ((__nothrow__));
+extern int isalpha (int) __attribute__ ((__nothrow__));
+extern int iscntrl (int) __attribute__ ((__nothrow__));
+extern int isdigit (int) __attribute__ ((__nothrow__));
+extern int islower (int) __attribute__ ((__nothrow__));
+extern int isgraph (int) __attribute__ ((__nothrow__));
+extern int isprint (int) __attribute__ ((__nothrow__));
+extern int ispunct (int) __attribute__ ((__nothrow__));
+extern int isspace (int) __attribute__ ((__nothrow__));
+extern int isupper (int) __attribute__ ((__nothrow__));
+extern int isxdigit (int) __attribute__ ((__nothrow__));
+
+
+
+extern int tolower (int __c) __attribute__ ((__nothrow__));
+
+
+extern int toupper (int __c) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int isblank (int) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int isctype (int __c, int __mask) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int isascii (int __c) __attribute__ ((__nothrow__));
+
+
+
+extern int toascii (int __c) __attribute__ ((__nothrow__));
+
+
+
+extern int _toupper (int) __attribute__ ((__nothrow__));
+extern int _tolower (int) __attribute__ ((__nothrow__));
+# 190 "/usr/include/ctype.h" 3 4
+extern __inline int
+__attribute__ ((__nothrow__)) tolower (int __c)
+{
+ return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
+}
+
+extern __inline int
+__attribute__ ((__nothrow__)) toupper (int __c)
+{
+ return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
+}
+# 247 "/usr/include/ctype.h" 3 4
+extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
+
+extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__));
+
+
+
+extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+
+
+extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+# 323 "/usr/include/ctype.h" 3 4
+
+# 28 "parse.y" 2
+# 39 "parse.y"
+static ID register_symid(ID, const char *, long, rb_encoding *);
+
+# 1 "id.c" 1
+# 16 "id.c"
+static void
+Init_id(void)
+{
+
+
+ rb_encoding *enc = rb_usascii_encoding();
+
+ register_symid(365, "", strlen(""), enc);
+ register_symid(367, "<IFUNC>", strlen("<IFUNC>"), enc),
+ register_symid(368, "<CFUNC>", strlen("<CFUNC>"), enc),
+ register_symid(366, "respond_to?", strlen("respond_to?"), enc),
+ register_symid(369, "#__ThrowState__", strlen("#__ThrowState__"), enc),
+
+ register_symid(370, "core#set_method_alias", strlen("core#set_method_alias"), enc),
+ register_symid(371, "core#set_variable_alias", strlen("core#set_variable_alias"), enc),
+ register_symid(372, "core#undef_method", strlen("core#undef_method"), enc),
+ register_symid(373, "core#define_method", strlen("core#define_method"), enc),
+ register_symid(374, "core#define_singleton_method", strlen("core#define_singleton_method"), enc),
+ register_symid(375, "core#set_postexe", strlen("core#set_postexe"), enc),
+
+ register_symid(idEach, "each", strlen("each"), enc);
+ register_symid(idLength, "length", strlen("length"), enc);
+ register_symid(idLambda, "lambda", strlen("lambda"), enc);
+ register_symid(idIntern, "intern", strlen("intern"), enc);
+ register_symid(idGets, "gets", strlen("gets"), enc);
+ register_symid(idSucc, "succ", strlen("succ"), enc);
+ register_symid(idMethodMissing, "method_missing", strlen("method_missing"), enc);
+
+
+
+
+ register_symid(idSend, "send", strlen("send"), enc);
+ register_symid(id__send__, "__send__", strlen("__send__"), enc);
+ register_symid(idInitialize, "initialize", strlen("initialize"), enc);
+}
+# 42 "parse.y" 2
+# 58 "parse.y"
+enum lex_state_e {
+ EXPR_BEG,
+ EXPR_END,
+ EXPR_ENDARG,
+ EXPR_ARG,
+ EXPR_CMDARG,
+ EXPR_MID,
+ EXPR_FNAME,
+ EXPR_DOT,
+ EXPR_CLASS,
+ EXPR_VALUE
+};
+
+
+typedef unsigned long long stack_type;
+# 92 "parse.y"
+struct vtable {
+ ID *tbl;
+ int pos;
+ int capa;
+ struct vtable *prev;
+};
+
+struct local_vars {
+ struct vtable *args;
+ struct vtable *vars;
+ struct local_vars *prev;
+};
+
+
+
+
+
+
+
+static int
+vtable_size(const struct vtable *tbl)
+{
+ if (((VALUE)(tbl) & ~(VALUE)3)) {
+ return tbl->pos;
+ }
+ else {
+ return 0;
+ }
+}
+
+
+
+static struct vtable *
+vtable_alloc(struct vtable *prev)
+{
+ struct vtable *tbl = (struct vtable*)ruby_xmalloc(sizeof(struct vtable));
+ tbl->pos = 0;
+ tbl->capa = 8;
+ tbl->tbl = (ID*)ruby_xmalloc2((tbl->capa),sizeof(ID));
+ tbl->prev = prev;
+ if (0) printf("vtable_alloc: %p\n", (void *)tbl);
+ return tbl;
+}
+
+static void
+vtable_free(struct vtable *tbl)
+{
+ if (0)printf("vtable_free: %p\n", (void *)tbl);
+ if (((VALUE)(tbl) & ~(VALUE)3)) {
+ if (tbl->tbl) {
+ ruby_xfree(tbl->tbl);
+ }
+ ruby_xfree(tbl);
+ }
+}
+
+static void
+vtable_add(struct vtable *tbl, ID id)
+{
+ if (!((VALUE)(tbl) & ~(VALUE)3)) {
+ rb_bug("vtable_add: vtable is not allocated (%p)", (void *)tbl);
+ }
+ if (0) printf("vtable_add: %p, %s\n", (void *)tbl, rb_id2name(id));
+
+ if (tbl->pos == tbl->capa) {
+ tbl->capa = tbl->capa * 2;
+ (tbl->tbl)=(ID*)ruby_xrealloc2((char*)(tbl->tbl),(tbl->capa),sizeof(ID));
+ }
+ tbl->tbl[tbl->pos++] = id;
+}
+
+static int
+vtable_included(const struct vtable * tbl, ID id)
+{
+ int i;
+
+ if (((VALUE)(tbl) & ~(VALUE)3)) {
+ for (i = 0; i < tbl->pos; i++) {
+ if (tbl->tbl[i] == id) {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+
+typedef struct token_info {
+ const char *token;
+ int linenum;
+ int column;
+ int nonspc;
+ struct token_info *next;
+} token_info;
+# 197 "parse.y"
+struct parser_params {
+ int is_ripper;
+ NODE *heap;
+
+ YYSTYPE *parser_yylval;
+ VALUE eofp;
+
+ NODE *parser_lex_strterm;
+ enum lex_state_e parser_lex_state;
+ stack_type parser_cond_stack;
+ stack_type parser_cmdarg_stack;
+ int parser_class_nest;
+ int parser_paren_nest;
+ int parser_lpar_beg;
+ int parser_in_single;
+ int parser_in_def;
+ int parser_compile_for_eval;
+ VALUE parser_cur_mid;
+ int parser_in_defined;
+ char *parser_tokenbuf;
+ int parser_tokidx;
+ int parser_toksiz;
+ VALUE parser_lex_input;
+ VALUE parser_lex_lastline;
+ VALUE parser_lex_nextline;
+ const char *parser_lex_pbeg;
+ const char *parser_lex_p;
+ const char *parser_lex_pend;
+ int parser_heredoc_end;
+ int parser_command_start;
+ NODE *parser_deferred_nodes;
+ int parser_lex_gets_ptr;
+ VALUE (*parser_lex_gets)(struct parser_params*,VALUE);
+ struct local_vars *parser_lvtbl;
+ int parser_ruby__end__seen;
+ int line_count;
+ int has_shebang;
+ char *parser_ruby_sourcefile;
+ int parser_ruby_sourceline;
+ rb_encoding *enc;
+ rb_encoding *utf8;
+
+ int parser_yydebug;
+
+
+
+ NODE *parser_eval_tree_begin;
+ NODE *parser_eval_tree;
+ VALUE debug_lines;
+ VALUE coverage;
+ int nerr;
+
+ token_info *parser_token_info;
+# 263 "parse.y"
+};
+# 275 "parse.y"
+void *rb_parser_malloc(struct parser_params *, size_t);
+void *rb_parser_realloc(struct parser_params *, void *, size_t);
+void *rb_parser_calloc(struct parser_params *, size_t, size_t);
+void rb_parser_free(struct parser_params *, void *);
+
+
+static int parser_yyerror(struct parser_params*, const char*);
+# 325 "parse.y"
+static int yylex(void*, void*);
+
+
+
+
+static NODE* node_newnode(struct parser_params *, enum node_type, VALUE, VALUE, VALUE);
+
+
+static NODE *cond_gen(struct parser_params*,NODE*);
+
+static NODE *logop_gen(struct parser_params*,enum node_type,NODE*,NODE*);
+
+
+static NODE *newline_node(NODE*);
+static void fixpos(NODE*,NODE*);
+
+static int value_expr_gen(struct parser_params*,NODE*);
+static void void_expr_gen(struct parser_params*,NODE*);
+static NODE *remove_begin(NODE*);
+
+
+
+static void void_stmts_gen(struct parser_params*,NODE*);
+
+static void reduce_nodes_gen(struct parser_params*,NODE**);
+
+static void block_dup_check_gen(struct parser_params*,NODE*,NODE*);
+
+
+static NODE *block_append_gen(struct parser_params*,NODE*,NODE*);
+
+static NODE *list_append_gen(struct parser_params*,NODE*,NODE*);
+
+static NODE *list_concat_gen(struct parser_params*,NODE*,NODE*);
+
+static NODE *arg_append_gen(struct parser_params*,NODE*,NODE*);
+
+static NODE *arg_concat_gen(struct parser_params*,NODE*,NODE*);
+
+static NODE *literal_concat_gen(struct parser_params*,NODE*,NODE*);
+
+static NODE *new_evstr_gen(struct parser_params*,NODE*);
+
+static NODE *evstr2dstr_gen(struct parser_params*,NODE*);
+
+static NODE *splat_array(NODE*);
+
+static NODE *call_bin_op_gen(struct parser_params*,NODE*,ID,NODE*);
+
+static NODE *call_uni_op_gen(struct parser_params*,NODE*,ID);
+
+
+static NODE *new_args_gen(struct parser_params*,NODE*,NODE*,ID,NODE*,ID);
+
+static void shadowing_lvar_gen(struct parser_params*,ID);
+
+
+static NODE *negate_lit(NODE*);
+static NODE *ret_args_gen(struct parser_params*,NODE*);
+
+static NODE *arg_blk_pass(NODE*,NODE*);
+static NODE *new_yield_gen(struct parser_params*,NODE*);
+
+
+static NODE *gettable_gen(struct parser_params*,ID);
+
+static NODE *assignable_gen(struct parser_params*,ID,NODE*);
+
+static void new_bv_gen(struct parser_params*,ID);
+
+static NODE *aryset_gen(struct parser_params*,NODE*,NODE*);
+
+static NODE *attrset_gen(struct parser_params*,NODE*,ID);
+
+
+static void rb_backref_error_gen(struct parser_params*,NODE*);
+
+static NODE *node_assign_gen(struct parser_params*,NODE*,NODE*);
+
+
+static NODE *match_op_gen(struct parser_params*,NODE*,NODE*);
+
+
+static void local_push_gen(struct parser_params*,int);
+
+static void local_pop_gen(struct parser_params*);
+
+static int local_var_gen(struct parser_params*, ID);
+
+static int arg_var_gen(struct parser_params*, ID);
+
+static int local_id_gen(struct parser_params*, ID);
+
+static ID *local_tbl_gen(struct parser_params*);
+
+static ID internal_id_gen(struct parser_params*);
+
+
+static void dyna_push_gen(struct parser_params*);
+
+static void dyna_pop_gen(struct parser_params*);
+
+static int dyna_in_block_gen(struct parser_params*);
+
+
+static int dvar_defined_gen(struct parser_params*,ID);
+
+static int dvar_curr_gen(struct parser_params*,ID);
+
+
+static void fixup_nodes(NODE **);
+
+extern int rb_dvar_defined(ID);
+extern int rb_local_defined(ID);
+extern int rb_parse_in_eval(void);
+
+static VALUE reg_compile_gen(struct parser_params*, VALUE, int);
+
+static void reg_fragment_setenc_gen(struct parser_params*, VALUE, int);
+
+static void reg_fragment_check_gen(struct parser_params*, VALUE, int);
+
+static NODE *reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match);
+
+int rb_enc_symname2_p(const char *, int, rb_encoding *);
+
+
+
+static int lvar_defined_gen(struct parser_params*, ID);
+# 590 "parse.y"
+static void token_info_push(struct parser_params*, const char *token);
+static void token_info_pop(struct parser_params*, const char *token);
+# 941 "parse.c"
+# 949 "parse.c"
+typedef unsigned char yytype_uint8;
+
+
+
+
+
+
+typedef signed char yytype_int8;
+
+
+
+
+
+
+
+typedef unsigned short int yytype_uint16;
+
+
+
+
+
+typedef short int yytype_int16;
+# 1101 "parse.c"
+union yyalloc
+{
+ yytype_int16 yyss;
+ YYSTYPE yyvs;
+ };
+# 1174 "parse.c"
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 148, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 147, 123, 2, 2, 2, 121, 116, 2,
+ 143, 144, 119, 117, 141, 118, 140, 120, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 111, 146,
+ 113, 109, 112, 110, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 139, 2, 145, 115, 2, 142, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 137, 114, 138, 124, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 122, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136
+};
+
+
+
+
+static const yytype_uint16 yyprhs[] =
+{
+ 0, 0, 3, 4, 7, 12, 15, 17, 19, 23,
+ 26, 27, 32, 36, 40, 44, 47, 51, 55, 59,
+ 63, 67, 68, 74, 79, 83, 87, 91, 98, 104,
+ 110, 116, 120, 124, 128, 132, 134, 136, 140, 144,
+ 148, 151, 153, 155, 157, 159, 162, 165, 168, 170,
+ 175, 180, 181, 187, 190, 194, 199, 205, 210, 216,
+ 219, 222, 224, 228, 230, 234, 236, 239, 243, 249,
+ 252, 257, 260, 265, 267, 271, 273, 277, 280, 284,
+ 286, 290, 292, 297, 301, 305, 309, 313, 316, 318,
+ 320, 325, 329, 333, 337, 341, 344, 346, 348, 350,
+ 353, 355, 359, 361, 363, 365, 367, 369, 371, 373,
+ 375, 377, 379, 380, 385, 387, 389, 391, 393, 395,
+ 397, 399, 401, 403, 405, 407, 409, 411, 413, 415,
+ 417, 419, 421, 423, 425, 427, 429, 431, 433, 435,
+ 437, 439, 441, 443, 445, 447, 449, 451, 453, 455,
+ 457, 459, 461, 463, 465, 467, 469, 471, 473, 475,
+ 477, 479, 481, 483, 485, 487, 489, 491, 493, 495,
+ 497, 499, 501, 503, 505, 507, 509, 511, 513, 515,
+ 517, 519, 521, 523, 525, 529, 535, 539, 545, 552,
+ 558, 564, 570, 576, 581, 585, 589, 593, 597, 601,
+ 605, 609, 613, 617, 622, 627, 630, 633, 637, 641,
+ 645, 649, 653, 657, 661, 665, 669, 673, 677, 681,
+ 685, 688, 691, 695, 699, 703, 707, 708, 713, 720,
+ 722, 724, 726, 729, 734, 737, 741, 743, 745, 747,
+ 749, 751, 754, 757, 762, 764, 765, 768, 771, 774,
+ 776, 778, 780, 783, 787, 792, 796, 801, 804, 806,
+ 808, 810, 812, 814, 816, 818, 820, 822, 823, 828,
+ 829, 834, 838, 842, 845, 849, 853, 855, 860, 864,
+ 866, 867, 874, 879, 883, 886, 888, 891, 894, 901,
+ 908, 909, 910, 918, 919, 920, 928, 934, 939, 940,
+ 941, 951, 952, 959, 960, 961, 970, 971, 977, 978,
+ 985, 986, 987, 997, 999, 1001, 1003, 1005, 1007, 1009,
+ 1011, 1013, 1015, 1017, 1019, 1021, 1023, 1025, 1027, 1029,
+ 1031, 1033, 1036, 1038, 1040, 1042, 1048, 1050, 1053, 1055,
+ 1057, 1059, 1063, 1065, 1069, 1071, 1076, 1083, 1087, 1093,
+ 1096, 1101, 1103, 1107, 1114, 1123, 1128, 1135, 1140, 1143,
+ 1150, 1153, 1158, 1165, 1168, 1173, 1176, 1181, 1183, 1185,
+ 1187, 1191, 1193, 1198, 1200, 1203, 1205, 1209, 1211, 1213,
+ 1214, 1218, 1223, 1225, 1229, 1233, 1234, 1240, 1243, 1248,
+ 1253, 1256, 1261, 1266, 1270, 1274, 1278, 1281, 1283, 1288,
+ 1289, 1295, 1296, 1302, 1308, 1310, 1312, 1319, 1321, 1323,
+ 1325, 1327, 1330, 1332, 1335, 1337, 1339, 1341, 1343, 1345,
+ 1347, 1349, 1352, 1356, 1360, 1364, 1368, 1372, 1373, 1377,
+ 1379, 1382, 1386, 1390, 1391, 1395, 1396, 1399, 1400, 1403,
+ 1405, 1406, 1410, 1411, 1416, 1418, 1420, 1422, 1424, 1427,
+ 1429, 1431, 1433, 1435, 1439, 1441, 1443, 1446, 1449, 1451,
+ 1453, 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469, 1471,
+ 1473, 1475, 1477, 1479, 1481, 1483, 1484, 1489, 1492, 1496,
+ 1499, 1506, 1515, 1520, 1527, 1532, 1539, 1542, 1547, 1554,
+ 1557, 1562, 1565, 1570, 1572, 1573, 1575, 1577, 1579, 1581,
+ 1583, 1585, 1587, 1591, 1593, 1597, 1601, 1605, 1607, 1611,
+ 1613, 1617, 1619, 1621, 1624, 1626, 1628, 1630, 1633, 1636,
+ 1638, 1640, 1641, 1646, 1648, 1651, 1653, 1657, 1661, 1664,
+ 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, 1682, 1684,
+ 1686, 1688, 1689, 1691, 1692, 1694, 1697, 1700, 1701, 1703,
+ 1705, 1707, 1709, 1711, 1714
+};
+
+
+static const yytype_int16 yyrhs[] =
+{
+ 150, 0, -1, -1, 151, 153, -1, 153, 252, 228,
+ 255, -1, 154, 307, -1, 314, -1, 155, -1, 154,
+ 313, 155, -1, 1, 155, -1, -1, 45, 177, 156,
+ 177, -1, 45, 54, 54, -1, 45, 54, 64, -1,
+ 45, 54, 63, -1, 6, 178, -1, 155, 40, 159,
+ -1, 155, 41, 159, -1, 155, 42, 159, -1, 155,
+ 43, 159, -1, 155, 44, 155, -1, -1, 47, 157,
+ 137, 153, 138, -1, 48, 137, 153, 138, -1, 172,
+ 109, 160, -1, 165, 109, 160, -1, 279, 87, 160,
+ -1, 213, 139, 188, 310, 87, 160, -1, 213, 140,
+ 52, 87, 160, -1, 213, 140, 56, 87, 160, -1,
+ 213, 85, 52, 87, 160, -1, 280, 87, 160, -1,
+ 172, 109, 195, -1, 165, 109, 184, -1, 165, 109,
+ 195, -1, 158, -1, 160, -1, 158, 37, 158, -1,
+ 158, 38, 158, -1, 39, 308, 158, -1, 123, 160,
+ -1, 182, -1, 158, -1, 164, -1, 161, -1, 30,
+ 189, -1, 21, 189, -1, 22, 189, -1, 245, -1,
+ 245, 140, 304, 190, -1, 245, 85, 304, 190, -1,
+ -1, 94, 163, 234, 153, 138, -1, 303, 190, -1,
+ 303, 190, 162, -1, 213, 140, 304, 190, -1, 213,
+ 140, 304, 190, 162, -1, 213, 85, 304, 190, -1,
+ 213, 85, 304, 190, 162, -1, 32, 190, -1, 31,
+ 190, -1, 167, -1, 89, 166, 309, -1, 167, -1,
+ 89, 166, 309, -1, 169, -1, 169, 168, -1, 169,
+ 95, 171, -1, 169, 95, 171, 141, 170, -1, 169,
+ 95, -1, 169, 95, 141, 170, -1, 95, 171, -1,
+ 95, 171, 141, 170, -1, 95, -1, 95, 141, 170,
+ -1, 171, -1, 89, 166, 309, -1, 168, 141, -1,
+ 169, 168, 141, -1, 168, -1, 170, 141, 168, -1,
+ 277, -1, 213, 139, 188, 310, -1, 213, 140, 52,
+ -1, 213, 85, 52, -1, 213, 140, 56, -1, 213,
+ 85, 56, -1, 86, 56, -1, 280, -1, 277, -1,
+ 213, 139, 188, 310, -1, 213, 140, 52, -1, 213,
+ 85, 52, -1, 213, 140, 56, -1, 213, 85, 56,
+ -1, 86, 56, -1, 280, -1, 52, -1, 56, -1,
+ 86, 173, -1, 173, -1, 213, 85, 173, -1, 52,
+ -1, 56, -1, 53, -1, 180, -1, 181, -1, 175,
+ -1, 273, -1, 176, -1, 275, -1, 177, -1, -1,
+ 178, 141, 179, 177, -1, 114, -1, 115, -1, 116,
+ -1, 69, -1, 70, -1, 71, -1, 77, -1, 78,
+ -1, 112, -1, 73, -1, 113, -1, 74, -1, 72,
+ -1, 83, -1, 84, -1, 117, -1, 118, -1, 119,
+ -1, 95, -1, 120, -1, 121, -1, 68, -1, 123,
+ -1, 124, -1, 66, -1, 67, -1, 81, -1, 82,
+ -1, 142, -1, 49, -1, 50, -1, 51, -1, 47,
+ -1, 48, -1, 45, -1, 37, -1, 7, -1, 21,
+ -1, 16, -1, 3, -1, 5, -1, 46, -1, 26,
+ -1, 15, -1, 14, -1, 10, -1, 9, -1, 36,
+ -1, 20, -1, 25, -1, 4, -1, 22, -1, 34,
+ -1, 39, -1, 38, -1, 23, -1, 8, -1, 24,
+ -1, 30, -1, 33, -1, 32, -1, 13, -1, 35,
+ -1, 6, -1, 17, -1, 31, -1, 11, -1, 12,
+ -1, 18, -1, 19, -1, 172, 109, 182, -1, 172,
+ 109, 182, 44, 182, -1, 279, 87, 182, -1, 279,
+ 87, 182, 44, 182, -1, 213, 139, 188, 310, 87,
+ 182, -1, 213, 140, 52, 87, 182, -1, 213, 140,
+ 56, 87, 182, -1, 213, 85, 52, 87, 182, -1,
+ 213, 85, 56, 87, 182, -1, 86, 56, 87, 182,
+ -1, 280, 87, 182, -1, 182, 79, 182, -1, 182,
+ 80, 182, -1, 182, 117, 182, -1, 182, 118, 182,
+ -1, 182, 119, 182, -1, 182, 120, 182, -1, 182,
+ 121, 182, -1, 182, 68, 182, -1, 122, 59, 68,
+ 182, -1, 122, 60, 68, 182, -1, 66, 182, -1,
+ 67, 182, -1, 182, 114, 182, -1, 182, 115, 182,
+ -1, 182, 116, 182, -1, 182, 69, 182, -1, 182,
+ 112, 182, -1, 182, 73, 182, -1, 182, 113, 182,
+ -1, 182, 74, 182, -1, 182, 70, 182, -1, 182,
+ 71, 182, -1, 182, 72, 182, -1, 182, 77, 182,
+ -1, 182, 78, 182, -1, 123, 182, -1, 124, 182,
+ -1, 182, 83, 182, -1, 182, 84, 182, -1, 182,
+ 75, 182, -1, 182, 76, 182, -1, -1, 46, 308,
+ 183, 182, -1, 182, 110, 182, 308, 111, 182, -1,
+ 196, -1, 182, -1, 314, -1, 194, 311, -1, 194,
+ 141, 301, 311, -1, 301, 311, -1, 143, 188, 309,
+ -1, 314, -1, 186, -1, 314, -1, 189, -1, 164,
+ -1, 194, 193, -1, 301, 193, -1, 194, 141, 301,
+ 193, -1, 192, -1, -1, 191, 189, -1, 96, 184,
+ -1, 141, 192, -1, 141, -1, 314, -1, 184, -1,
+ 95, 184, -1, 194, 141, 184, -1, 194, 141, 95,
+ 184, -1, 194, 141, 184, -1, 194, 141, 95, 184,
+ -1, 95, 184, -1, 256, -1, 257, -1, 260, -1,
+ 261, -1, 262, -1, 265, -1, 278, -1, 280, -1,
+ 53, -1, -1, 214, 197, 152, 224, -1, -1, 90,
+ 158, 198, 309, -1, 89, 153, 144, -1, 213, 85,
+ 56, -1, 86, 56, -1, 92, 185, 145, -1, 93,
+ 300, 138, -1, 30, -1, 31, 143, 189, 309, -1,
+ 31, 143, 309, -1, 31, -1, -1, 46, 308, 143,
+ 199, 158, 309, -1, 39, 143, 158, 309, -1, 39,
+ 143, 309, -1, 303, 247, -1, 246, -1, 246, 247,
+ -1, 97, 239, -1, 215, 159, 225, 153, 227, 224,
+ -1, 216, 159, 225, 153, 228, 224, -1, -1, -1,
+ 217, 200, 159, 226, 201, 153, 224, -1, -1, -1,
+ 218, 202, 159, 226, 203, 153, 224, -1, 219, 159,
+ 307, 250, 224, -1, 219, 307, 250, 224, -1, -1,
+ -1, 220, 229, 25, 204, 159, 226, 205, 153, 224,
+ -1, -1, 221, 174, 281, 206, 152, 224, -1, -1,
+ -1, 221, 83, 158, 207, 312, 208, 152, 224, -1,
+ -1, 222, 174, 209, 152, 224, -1, -1, 223, 175,
+ 210, 283, 152, 224, -1, -1, -1, 223, 298, 306,
+ 211, 175, 212, 283, 152, 224, -1, 21, -1, 22,
+ -1, 23, -1, 24, -1, 196, -1, 7, -1, 11,
+ -1, 12, -1, 18, -1, 19, -1, 16, -1, 20,
+ -1, 3, -1, 4, -1, 5, -1, 10, -1, 312,
+ -1, 13, -1, 312, 13, -1, 312, -1, 27, -1,
+ 228, -1, 14, 159, 225, 153, 227, -1, 314, -1,
+ 15, 153, -1, 172, -1, 165, -1, 286, -1, 89,
+ 232, 309, -1, 230, -1, 231, 141, 230, -1, 231,
+ -1, 231, 141, 95, 286, -1, 231, 141, 95, 286,
+ 141, 231, -1, 231, 141, 95, -1, 231, 141, 95,
+ 141, 231, -1, 95, 286, -1, 95, 286, 141, 231,
+ -1, 95, -1, 95, 141, 231, -1, 288, 141, 291,
+ 141, 294, 297, -1, 288, 141, 291, 141, 294, 141,
+ 288, 297, -1, 288, 141, 291, 297, -1, 288, 141,
+ 291, 141, 288, 297, -1, 288, 141, 294, 297, -1,
+ 288, 141, -1, 288, 141, 294, 141, 288, 297, -1,
+ 288, 297, -1, 291, 141, 294, 297, -1, 291, 141,
+ 294, 141, 288, 297, -1, 291, 297, -1, 291, 141,
+ 288, 297, -1, 294, 297, -1, 294, 141, 288, 297,
+ -1, 296, -1, 314, -1, 235, -1, 114, 236, 114,
+ -1, 76, -1, 114, 233, 236, 114, -1, 314, -1,
+ 146, 237, -1, 238, -1, 237, 141, 238, -1, 52,
+ -1, 285, -1, -1, 240, 241, 242, -1, 143, 284,
+ 236, 309, -1, 284, -1, 107, 153, 138, -1, 29,
+ 153, 10, -1, -1, 28, 244, 234, 153, 10, -1,
+ 164, 243, -1, 245, 140, 304, 187, -1, 245, 85,
+ 304, 187, -1, 303, 186, -1, 213, 140, 304, 187,
+ -1, 213, 85, 304, 186, -1, 213, 85, 305, -1,
+ 213, 140, 186, -1, 213, 85, 186, -1, 32, 186,
+ -1, 32, -1, 213, 139, 188, 310, -1, -1, 137,
+ 248, 234, 153, 138, -1, -1, 26, 249, 234, 153,
+ 10, -1, 17, 194, 225, 153, 251, -1, 228, -1,
+ 250, -1, 8, 253, 254, 225, 153, 252, -1, 314,
+ -1, 184, -1, 195, -1, 314, -1, 88, 172, -1,
+ 314, -1, 9, 153, -1, 314, -1, 276, -1, 273,
+ -1, 275, -1, 258, -1, 62, -1, 259, -1, 258,
+ 259, -1, 99, 267, 106, -1, 100, 268, 106, -1,
+ 101, 268, 65, -1, 102, 147, 106, -1, 102, 263,
+ 106, -1, -1, 263, 264, 147, -1, 269, -1, 264,
+ 269, -1, 103, 147, 106, -1, 103, 266, 106, -1,
+ -1, 266, 61, 147, -1, -1, 267, 269, -1, -1,
+ 268, 269, -1, 61, -1, -1, 105, 270, 272, -1,
+ -1, 104, 271, 153, 138, -1, 54, -1, 55, -1,
+ 57, -1, 280, -1, 98, 274, -1, 175, -1, 55,
+ -1, 54, -1, 57, -1, 98, 268, 106, -1, 59,
+ -1, 60, -1, 122, 59, -1, 122, 60, -1, 52,
+ -1, 55, -1, 54, -1, 56, -1, 57, -1, 34,
+ -1, 33, -1, 35, -1, 36, -1, 50, -1, 49,
+ -1, 51, -1, 277, -1, 277, -1, 63, -1, 64,
+ -1, 312, -1, -1, 113, 282, 159, 312, -1, 1,
+ 312, -1, 143, 284, 309, -1, 284, 312, -1, 288,
+ 141, 292, 141, 294, 297, -1, 288, 141, 292, 141,
+ 294, 141, 288, 297, -1, 288, 141, 292, 297, -1,
+ 288, 141, 292, 141, 288, 297, -1, 288, 141, 294,
+ 297, -1, 288, 141, 294, 141, 288, 297, -1, 288,
+ 297, -1, 292, 141, 294, 297, -1, 292, 141, 294,
+ 141, 288, 297, -1, 292, 297, -1, 292, 141, 288,
+ 297, -1, 294, 297, -1, 294, 141, 288, 297, -1,
+ 296, -1, -1, 56, -1, 55, -1, 54, -1, 57,
+ -1, 285, -1, 52, -1, 286, -1, 89, 232, 309,
+ -1, 287, -1, 288, 141, 287, -1, 52, 109, 184,
+ -1, 52, 109, 213, -1, 290, -1, 291, 141, 290,
+ -1, 289, -1, 292, 141, 289, -1, 119, -1, 95,
+ -1, 293, 52, -1, 293, -1, 116, -1, 96, -1,
+ 295, 52, -1, 141, 296, -1, 314, -1, 278, -1,
+ -1, 143, 299, 158, 309, -1, 314, -1, 301, 311,
+ -1, 302, -1, 301, 141, 302, -1, 184, 88, 184,
+ -1, 58, 184, -1, 52, -1, 56, -1, 53, -1,
+ 52, -1, 56, -1, 53, -1, 180, -1, 52, -1,
+ 53, -1, 180, -1, 140, -1, 85, -1, -1, 313,
+ -1, -1, 148, -1, 308, 144, -1, 308, 145, -1,
+ -1, 148, -1, 141, -1, 146, -1, 148, -1, 312,
+ -1, 313, 146, -1, -1
+};
+
+
+static const yytype_uint16 yyrline[] =
+{
+ 0, 763, 763, 763, 793, 826, 837, 846, 854, 862,
+ 868, 868, 876, 884, 895, 905, 913, 922, 931, 944,
+ 957, 967, 966, 988, 1000, 1009, 1019, 1048, 1069, 1086,
+ 1103, 1120, 1130, 1139, 1148, 1157, 1160, 1161, 1169, 1177,
+ 1185, 1193, 1196, 1208, 1209, 1210, 1218, 1226, 1236, 1237,
+ 1246, 1258, 1257, 1279, 1288, 1300, 1309, 1321, 1330, 1342,
+ 1351, 1362, 1363, 1373, 1374, 1384, 1392, 1400, 1408, 1416,
+ 1424, 1432, 1440, 1448, 1456, 1466, 1467, 1477, 1485, 1495,
+ 1503, 1513, 1521, 1529, 1537, 1545, 1553, 1565, 1575, 1587,
+ 1595, 1603, 1611, 1619, 1627, 1640, 1653, 1664, 1672, 1675,
+ 1683, 1691, 1701, 1702, 1703, 1704, 1714, 1726, 1727, 1730,
+ 1738, 1741, 1749, 1749, 1759, 1760, 1761, 1762, 1763, 1764,
+ 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774,
+ 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784,
+ 1785, 1786, 1787, 1790, 1790, 1790, 1791, 1791, 1792, 1792,
+ 1792, 1793, 1793, 1793, 1793, 1794, 1794, 1794, 1794, 1795,
+ 1795, 1795, 1796, 1796, 1796, 1796, 1797, 1797, 1797, 1797,
+ 1798, 1798, 1798, 1798, 1799, 1799, 1799, 1799, 1800, 1800,
+ 1800, 1800, 1801, 1801, 1804, 1813, 1823, 1852, 1883, 1904,
+ 1921, 1938, 1955, 1966, 1977, 1988, 2002, 2016, 2024, 2032,
+ 2040, 2048, 2056, 2064, 2073, 2082, 2090, 2098, 2106, 2114,
+ 2122, 2130, 2138, 2146, 2154, 2162, 2170, 2178, 2186, 2197,
+ 2205, 2213, 2221, 2229, 2237, 2245, 2253, 2253, 2263, 2273,
+ 2279, 2291, 2292, 2296, 2304, 2314, 2324, 2325, 2328, 2329,
+ 2332, 2340, 2348, 2358, 2367, 2376, 2376, 2388, 2398, 2402,
+ 2406, 2412, 2420, 2428, 2442, 2458, 2472, 2487, 2497, 2498,
+ 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2514, 2513, 2538,
+ 2538, 2547, 2555, 2563, 2571, 2584, 2592, 2600, 2608, 2616,
+ 2624, 2624, 2634, 2642, 2650, 2661, 2662, 2673, 2677, 2689,
+ 2701, 2701, 2701, 2712, 2712, 2712, 2723, 2734, 2743, 2745,
+ 2742, 2809, 2808, 2830, 2835, 2829, 2857, 2856, 2878, 2877,
+ 2904, 2905, 2904, 2929, 2937, 2945, 2953, 2963, 2975, 2982,
+ 2989, 2996, 3003, 3010, 3017, 3024, 3031, 3038, 3045, 3052,
+ 3057, 3058, 3065, 3070, 3073, 3074, 3087, 3088, 3098, 3099,
+ 3102, 3110, 3120, 3128, 3138, 3146, 3154, 3162, 3170, 3178,
+ 3186, 3197, 3205, 3215, 3223, 3231, 3239, 3247, 3255, 3264,
+ 3272, 3280, 3288, 3296, 3304, 3312, 3320, 3328, 3338, 3339,
+ 3345, 3354, 3363, 3374, 3375, 3385, 3392, 3401, 3409, 3415,
+ 3415, 3437, 3445, 3455, 3459, 3466, 3465, 3486, 3502, 3511,
+ 3522, 3531, 3541, 3551, 3559, 3570, 3581, 3589, 3597, 3612,
+ 3611, 3633, 3632, 3653, 3665, 3666, 3669, 3688, 3691, 3699,
+ 3707, 3710, 3714, 3717, 3725, 3728, 3729, 3737, 3740, 3757,
+ 3758, 3759, 3769, 3779, 3806, 3848, 3856, 3863, 3870, 3880,
+ 3888, 3898, 3906, 3913, 3920, 3931, 3938, 3949, 3956, 3966,
+ 3968, 3967, 3984, 3983, 4005, 4013, 4021, 4029, 4032, 4044,
+ 4045, 4046, 4047, 4050, 4081, 4082, 4083, 4091, 4101, 4102,
+ 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4112,
+ 4115, 4125, 4135, 4136, 4139, 4148, 4147, 4155, 4167, 4179,
+ 4185, 4193, 4201, 4209, 4217, 4225, 4233, 4241, 4249, 4257,
+ 4265, 4273, 4281, 4289, 4298, 4307, 4316, 4325, 4334, 4345,
+ 4346, 4358, 4366, 4385, 4392, 4405, 4419, 4433, 4441, 4457,
+ 4465, 4481, 4482, 4485, 4497, 4508, 4509, 4512, 4528, 4532,
+ 4542, 4552, 4552, 4581, 4582, 4592, 4599, 4609, 4617, 4627,
+ 4628, 4629, 4632, 4633, 4634, 4635, 4638, 4639, 4640, 4643,
+ 4648, 4655, 4656, 4659, 4660, 4663, 4666, 4669, 4670, 4671,
+ 4674, 4675, 4678, 4679, 4683
+};
+
+
+
+
+
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "keyword_class", "keyword_module",
+ "keyword_def", "keyword_undef", "keyword_begin", "keyword_rescue",
+ "keyword_ensure", "keyword_end", "keyword_if", "keyword_unless",
+ "keyword_then", "keyword_elsif", "keyword_else", "keyword_case",
+ "keyword_when", "keyword_while", "keyword_until", "keyword_for",
+ "keyword_break", "keyword_next", "keyword_redo", "keyword_retry",
+ "keyword_in", "keyword_do", "keyword_do_cond", "keyword_do_block",
+ "keyword_do_LAMBDA", "keyword_return", "keyword_yield", "keyword_super",
+ "keyword_self", "keyword_nil", "keyword_true", "keyword_false",
+ "keyword_and", "keyword_or", "keyword_not", "modifier_if",
+ "modifier_unless", "modifier_while", "modifier_until", "modifier_rescue",
+ "keyword_alias", "keyword_defined", "keyword_BEGIN", "keyword_END",
+ "keyword__LINE__", "keyword__FILE__", "keyword__ENCODING__",
+ "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tCVAR", "tLABEL",
+ "tINTEGER", "tFLOAT", "tSTRING_CONTENT", "tCHAR", "tNTH_REF",
+ "tBACK_REF", "tREGEXP_END", "tUPLUS", "tUMINUS", "tPOW", "tCMP", "tEQ",
+ "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH",
+ "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2",
+ "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN_ARG", "tRPAREN",
+ "tLBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tAMPER", "tLAMBDA",
+ "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tWORDS_BEG",
+ "tQWORDS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tLAMBEG",
+ "tLOWEST", "'='", "'?'", "':'", "'>'", "'<'", "'|'", "'^'", "'&'", "'+'",
+ "'-'", "'*'", "'/'", "'%'", "tUMINUS_NUM", "'!'", "'~'", "idNULL",
+ "idRespond_to", "idIFUNC", "idCFUNC", "idThrowState",
+ "id_core_set_method_alias", "id_core_set_variable_alias",
+ "id_core_undef_method", "id_core_define_method",
+ "id_core_define_singleton_method", "id_core_set_postexe", "tLAST_TOKEN",
+ "'{'", "'}'", "'['", "'.'", "','", "'`'", "'('", "')'", "']'", "';'",
+ "' '", "'\\n'", "$accept", "program", "@1", "bodystmt", "compstmt",
+ "stmts", "stmt", "@2", "@3", "expr", "expr_value", "command_call",
+ "block_command", "cmd_brace_block", "@4", "command", "mlhs",
+ "mlhs_inner", "mlhs_basic", "mlhs_item", "mlhs_head", "mlhs_post",
+ "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym", "fitem",
+ "undef_list", "@5", "op", "reswords", "arg", "@6", "arg_value",
+ "aref_args", "paren_args", "opt_paren_args", "opt_call_args",
+ "call_args", "command_args", "@7", "block_arg", "opt_block_arg", "args",
+ "mrhs", "primary", "@8", "@9", "@10", "@11", "@12", "@13", "@14", "@15",
+ "@16", "@17", "@18", "@19", "@20", "@21", "@22", "@23", "primary_value",
+ "k_begin", "k_if", "k_unless", "k_while", "k_until", "k_case", "k_for",
+ "k_class", "k_module", "k_def", "k_end", "then", "do", "if_tail",
+ "opt_else", "for_var", "f_marg", "f_marg_list", "f_margs", "block_param",
+ "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls", "bvar",
+ "lambda", "@24", "f_larglist", "lambda_body", "do_block", "@25",
+ "block_call", "method_call", "brace_block", "@26", "@27", "case_body",
+ "cases", "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal",
+ "strings", "string", "string1", "xstring", "regexp", "words",
+ "word_list", "word", "qwords", "qword_list", "string_contents",
+ "xstring_contents", "string_content", "@28", "@29", "string_dvar",
+ "symbol", "sym", "dsym", "numeric", "variable", "var_ref", "var_lhs",
+ "backref", "superclass", "@30", "f_arglist", "f_args", "f_bad_arg",
+ "f_norm_arg", "f_arg_item", "f_arg", "f_opt", "f_block_opt",
+ "f_block_optarg", "f_optarg", "restarg_mark", "f_rest_arg",
+ "blkarg_mark", "f_block_arg", "opt_f_block_arg", "singleton", "@31",
+ "assoc_list", "assocs", "assoc", "operation", "operation2", "operation3",
+ "dot_or_colon", "opt_terms", "opt_nl", "rparen", "rbracket", "trailer",
+ "term", "terms", "none", 0
+};
+# 1607 "parse.c"
+static const yytype_uint16 yyr1[] =
+{
+ 0, 149, 151, 150, 152, 153, 154, 154, 154, 154,
+ 156, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+ 155, 157, 155, 155, 155, 155, 155, 155, 155, 155,
+ 155, 155, 155, 155, 155, 155, 158, 158, 158, 158,
+ 158, 158, 159, 160, 160, 160, 160, 160, 161, 161,
+ 161, 163, 162, 164, 164, 164, 164, 164, 164, 164,
+ 164, 165, 165, 166, 166, 167, 167, 167, 167, 167,
+ 167, 167, 167, 167, 167, 168, 168, 169, 169, 170,
+ 170, 171, 171, 171, 171, 171, 171, 171, 171, 172,
+ 172, 172, 172, 172, 172, 172, 172, 173, 173, 174,
+ 174, 174, 175, 175, 175, 175, 175, 176, 176, 177,
+ 177, 178, 179, 178, 180, 180, 180, 180, 180, 180,
+ 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
+ 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
+ 180, 180, 180, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 181, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 183, 182, 182, 182,
+ 184, 185, 185, 185, 185, 186, 187, 187, 188, 188,
+ 189, 189, 189, 189, 189, 191, 190, 192, 193, 193,
+ 193, 194, 194, 194, 194, 195, 195, 195, 196, 196,
+ 196, 196, 196, 196, 196, 196, 196, 197, 196, 198,
+ 196, 196, 196, 196, 196, 196, 196, 196, 196, 196,
+ 199, 196, 196, 196, 196, 196, 196, 196, 196, 196,
+ 200, 201, 196, 202, 203, 196, 196, 196, 204, 205,
+ 196, 206, 196, 207, 208, 196, 209, 196, 210, 196,
+ 211, 212, 196, 196, 196, 196, 196, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 225, 225, 226, 226, 227, 227, 228, 228, 229, 229,
+ 230, 230, 231, 231, 232, 232, 232, 232, 232, 232,
+ 232, 232, 232, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 234, 234,
+ 235, 235, 235, 236, 236, 237, 237, 238, 238, 240,
+ 239, 241, 241, 242, 242, 244, 243, 245, 245, 245,
+ 246, 246, 246, 246, 246, 246, 246, 246, 246, 248,
+ 247, 249, 247, 250, 251, 251, 252, 252, 253, 253,
+ 253, 254, 254, 255, 255, 256, 256, 256, 257, 258,
+ 258, 258, 259, 260, 261, 262, 262, 263, 263, 264,
+ 264, 265, 265, 266, 266, 267, 267, 268, 268, 269,
+ 270, 269, 271, 269, 272, 272, 272, 272, 273, 274,
+ 274, 274, 274, 275, 276, 276, 276, 276, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
+ 278, 279, 280, 280, 281, 282, 281, 281, 283, 283,
+ 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 284, 284, 284, 285, 285, 285, 285, 286,
+ 286, 287, 287, 288, 288, 289, 290, 291, 291, 292,
+ 292, 293, 293, 294, 294, 295, 295, 296, 297, 297,
+ 298, 299, 298, 300, 300, 301, 301, 302, 302, 303,
+ 303, 303, 304, 304, 304, 304, 305, 305, 305, 306,
+ 306, 307, 307, 308, 308, 309, 310, 311, 311, 311,
+ 312, 312, 313, 313, 314
+};
+
+
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 0, 2, 4, 2, 1, 1, 3, 2,
+ 0, 4, 3, 3, 3, 2, 3, 3, 3, 3,
+ 3, 0, 5, 4, 3, 3, 3, 6, 5, 5,
+ 5, 3, 3, 3, 3, 1, 1, 3, 3, 3,
+ 2, 1, 1, 1, 1, 2, 2, 2, 1, 4,
+ 4, 0, 5, 2, 3, 4, 5, 4, 5, 2,
+ 2, 1, 3, 1, 3, 1, 2, 3, 5, 2,
+ 4, 2, 4, 1, 3, 1, 3, 2, 3, 1,
+ 3, 1, 4, 3, 3, 3, 3, 2, 1, 1,
+ 4, 3, 3, 3, 3, 2, 1, 1, 1, 2,
+ 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 0, 4, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 5, 3, 5, 6, 5,
+ 5, 5, 5, 4, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 4, 4, 2, 2, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 2, 2, 3, 3, 3, 3, 0, 4, 6, 1,
+ 1, 1, 2, 4, 2, 3, 1, 1, 1, 1,
+ 1, 2, 2, 4, 1, 0, 2, 2, 2, 1,
+ 1, 1, 2, 3, 4, 3, 4, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 0, 4, 0,
+ 4, 3, 3, 2, 3, 3, 1, 4, 3, 1,
+ 0, 6, 4, 3, 2, 1, 2, 2, 6, 6,
+ 0, 0, 7, 0, 0, 7, 5, 4, 0, 0,
+ 9, 0, 6, 0, 0, 8, 0, 5, 0, 6,
+ 0, 0, 9, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 1, 1, 5, 1, 2, 1, 1,
+ 1, 3, 1, 3, 1, 4, 6, 3, 5, 2,
+ 4, 1, 3, 6, 8, 4, 6, 4, 2, 6,
+ 2, 4, 6, 2, 4, 2, 4, 1, 1, 1,
+ 3, 1, 4, 1, 2, 1, 3, 1, 1, 0,
+ 3, 4, 1, 3, 3, 0, 5, 2, 4, 4,
+ 2, 4, 4, 3, 3, 3, 2, 1, 4, 0,
+ 5, 0, 5, 5, 1, 1, 6, 1, 1, 1,
+ 1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 2, 3, 3, 3, 3, 3, 0, 3, 1,
+ 2, 3, 3, 0, 3, 0, 2, 0, 2, 1,
+ 0, 3, 0, 4, 1, 1, 1, 1, 2, 1,
+ 1, 1, 1, 3, 1, 1, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 0, 4, 2, 3, 2,
+ 6, 8, 4, 6, 4, 6, 2, 4, 6, 2,
+ 4, 2, 4, 1, 0, 1, 1, 1, 1, 1,
+ 1, 1, 3, 1, 3, 3, 3, 1, 3, 1,
+ 3, 1, 1, 2, 1, 1, 1, 2, 2, 1,
+ 1, 0, 4, 1, 2, 1, 3, 3, 2, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 0, 1, 0, 1, 2, 2, 0, 1, 1,
+ 1, 1, 1, 2, 0
+};
+
+
+
+
+static const yytype_uint16 yydefact[] =
+{
+ 2, 0, 0, 1, 0, 325, 326, 327, 0, 318,
+ 319, 320, 323, 321, 322, 324, 313, 314, 315, 316,
+ 276, 245, 245, 464, 463, 465, 466, 543, 0, 543,
+ 21, 0, 468, 467, 469, 458, 531, 460, 459, 461,
+ 462, 454, 455, 419, 472, 473, 0, 0, 0, 0,
+ 0, 554, 554, 73, 379, 437, 435, 437, 437, 427,
+ 433, 0, 0, 0, 3, 541, 7, 35, 36, 44,
+ 43, 0, 61, 0, 65, 75, 0, 41, 229, 0,
+ 267, 0, 0, 290, 293, 541, 0, 0, 0, 0,
+ 48, 285, 258, 259, 418, 420, 260, 261, 262, 263,
+ 416, 417, 415, 470, 264, 0, 265, 245, 6, 9,
+ 153, 164, 154, 177, 150, 170, 160, 159, 180, 181,
+ 175, 158, 157, 152, 178, 182, 183, 162, 151, 165,
+ 169, 171, 163, 156, 172, 179, 174, 173, 166, 176,
+ 161, 149, 168, 167, 148, 155, 146, 147, 143, 144,
+ 145, 102, 104, 103, 138, 139, 135, 117, 118, 119,
+ 126, 123, 125, 120, 121, 140, 141, 127, 128, 132,
+ 122, 124, 114, 115, 116, 129, 130, 131, 133, 134,
+ 136, 137, 142, 107, 109, 111, 15, 105, 106, 108,
+ 110, 313, 314, 276, 0, 0, 0, 0, 0, 0,
+ 0, 240, 0, 230, 251, 46, 244, 554, 0, 470,
+ 0, 265, 554, 525, 47, 45, 543, 60, 0, 554,
+ 396, 59, 543, 544, 0, 0, 10, 226, 0, 0,
+ 279, 397, 205, 0, 0, 206, 273, 0, 0, 543,
+ 63, 269, 0, 547, 547, 231, 0, 0, 547, 523,
+ 543, 0, 0, 0, 71, 317, 0, 81, 88, 287,
+ 494, 451, 450, 452, 449, 0, 448, 0, 0, 0,
+ 0, 0, 0, 0, 456, 457, 40, 220, 221, 550,
+ 551, 5, 552, 542, 0, 0, 0, 0, 0, 0,
+ 0, 385, 387, 0, 77, 0, 69, 66, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 554, 0, 0, 42,
+ 0, 0, 0, 0, 541, 0, 542, 0, 339, 338,
+ 0, 0, 470, 265, 97, 98, 0, 0, 100, 0,
+ 0, 470, 265, 306, 173, 166, 176, 161, 143, 144,
+ 145, 102, 103, 521, 308, 520, 0, 0, 0, 401,
+ 399, 286, 421, 0, 0, 390, 53, 284, 112, 528,
+ 273, 252, 247, 0, 0, 249, 241, 250, 0, 554,
+ 0, 0, 0, 249, 242, 543, 0, 278, 246, 543,
+ 239, 238, 543, 283, 39, 12, 14, 13, 0, 280,
+ 0, 0, 0, 0, 0, 0, 543, 271, 62, 543,
+ 274, 549, 548, 232, 549, 234, 275, 524, 0, 87,
+ 456, 457, 79, 74, 0, 0, 554, 0, 500, 497,
+ 496, 495, 498, 0, 512, 516, 515, 511, 494, 0,
+ 382, 499, 501, 503, 554, 509, 554, 514, 554, 0,
+ 493, 439, 442, 440, 453, 438, 422, 436, 423, 424,
+ 425, 426, 0, 429, 431, 0, 432, 0, 0, 553,
+ 8, 16, 17, 18, 19, 20, 37, 38, 554, 0,
+ 25, 33, 0, 34, 543, 0, 67, 78, 24, 184,
+ 251, 32, 202, 210, 215, 216, 217, 212, 214, 224,
+ 225, 218, 219, 195, 196, 222, 223, 543, 211, 213,
+ 207, 208, 209, 197, 198, 199, 200, 201, 532, 537,
+ 533, 538, 395, 245, 393, 543, 532, 534, 533, 535,
+ 394, 245, 0, 554, 330, 0, 329, 0, 0, 0,
+ 0, 0, 0, 273, 0, 554, 0, 298, 303, 97,
+ 98, 99, 0, 475, 301, 474, 0, 554, 0, 0,
+ 0, 494, 540, 539, 310, 532, 533, 245, 245, 554,
+ 554, 26, 186, 31, 194, 51, 54, 0, 184, 527,
+ 0, 253, 248, 554, 536, 533, 543, 532, 533, 526,
+ 277, 545, 235, 282, 11, 0, 227, 0, 23, 0,
+ 554, 193, 64, 270, 547, 0, 72, 84, 86, 543,
+ 532, 533, 0, 500, 0, 351, 342, 344, 543, 340,
+ 554, 0, 0, 380, 0, 486, 519, 0, 489, 513,
+ 0, 491, 517, 0, 0, 428, 430, 434, 203, 204,
+ 371, 554, 0, 369, 368, 257, 0, 76, 70, 0,
+ 0, 0, 0, 0, 392, 57, 0, 398, 0, 0,
+ 237, 391, 55, 236, 328, 268, 554, 554, 407, 554,
+ 331, 554, 333, 291, 332, 294, 0, 0, 297, 536,
+ 272, 543, 532, 533, 0, 0, 477, 0, 0, 97,
+ 98, 101, 543, 0, 543, 494, 0, 0, 0, 389,
+ 50, 388, 49, 0, 0, 0, 554, 113, 254, 243,
+ 0, 398, 0, 0, 543, 22, 233, 80, 82, 505,
+ 543, 0, 349, 0, 502, 0, 543, 373, 0, 0,
+ 504, 554, 554, 518, 554, 510, 554, 554, 0, 444,
+ 445, 446, 441, 447, 500, 554, 0, 554, 507, 554,
+ 554, 367, 0, 0, 255, 68, 185, 0, 30, 191,
+ 192, 58, 546, 0, 28, 189, 29, 190, 56, 408,
+ 409, 554, 410, 0, 554, 336, 0, 0, 334, 0,
+ 0, 0, 296, 0, 0, 398, 0, 304, 0, 0,
+ 398, 307, 522, 543, 0, 479, 311, 0, 0, 187,
+ 0, 0, 281, 341, 352, 0, 347, 343, 377, 374,
+ 375, 378, 381, 384, 383, 0, 482, 0, 484, 0,
+ 490, 0, 487, 492, 443, 0, 0, 370, 358, 360,
+ 0, 363, 0, 365, 386, 256, 228, 27, 188, 0,
+ 0, 412, 337, 0, 4, 414, 0, 288, 289, 0,
+ 0, 253, 554, 299, 0, 476, 302, 478, 309, 494,
+ 402, 400, 0, 0, 350, 0, 345, 0, 554, 554,
+ 554, 554, 0, 506, 372, 554, 554, 554, 508, 554,
+ 554, 0, 411, 0, 89, 96, 0, 413, 0, 292,
+ 295, 404, 405, 403, 0, 0, 0, 52, 348, 0,
+ 376, 483, 0, 480, 485, 488, 273, 0, 0, 355,
+ 0, 357, 364, 0, 361, 366, 95, 0, 554, 0,
+ 554, 554, 0, 305, 0, 346, 554, 536, 272, 554,
+ 554, 554, 554, 536, 94, 543, 532, 533, 406, 335,
+ 300, 312, 481, 356, 0, 353, 359, 362, 398, 554,
+ 354
+};
+
+
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 1, 2, 542, 543, 65, 66, 408, 228, 67,
+ 330, 68, 69, 586, 716, 70, 71, 239, 72, 73,
+ 74, 433, 75, 202, 348, 349, 183, 184, 185, 186,
+ 587, 539, 188, 77, 410, 204, 242, 532, 671, 399,
+ 400, 217, 218, 206, 386, 207, 493, 78, 328, 419,
+ 605, 332, 790, 333, 791, 694, 904, 698, 695, 864,
+ 569, 571, 708, 869, 233, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 675, 545, 683, 787, 788,
+ 341, 626, 627, 628, 755, 652, 653, 736, 819, 820,
+ 259, 260, 449, 633, 292, 488, 90, 91, 377, 580,
+ 579, 552, 903, 677, 781, 850, 854, 92, 93, 94,
+ 95, 96, 97, 98, 271, 472, 99, 273, 267, 265,
+ 465, 644, 643, 752, 100, 266, 101, 102, 209, 104,
+ 210, 211, 564, 697, 706, 707, 451, 452, 453, 454,
+ 455, 758, 759, 456, 457, 458, 459, 743, 635, 366,
+ 570, 247, 212, 213, 234, 609, 534, 574, 281, 396,
+ 397, 667, 423, 546, 336, 108
+};
+
+
+
+
+static const yytype_int16 yypact[] =
+{
+ -747, 103, 2364, -747, 6711, -747, -747, -747, 6222, -747,
+ -747, -747, -747, -747, -747, -747, 6820, 6820, -747, -747,
+ 6820, 3057, 2631, -747, -747, -747, -747, 282, 6082, -24,
+ -747, 64, -747, -747, -747, 5317, 2773, -747, -747, 5445,
+ -747, -747, -747, -747, -747, -747, 8019, 8019, 74, 4131,
+ 8128, 7038, 7365, 6487, -747, 5942, -747, -747, -747, 142,
+ 154, 84, 8237, 8019, -747, 473, 925, 71, -747, -747,
+ 238, 234, -747, 205, 8346, -747, 268, 2472, 31, 46,
+ -747, 8128, 8128, -747, -747, 4792, 8451, 8556, 8661, 5189,
+ 14, 70, -747, -747, 290, -747, -747, -747, -747, -747,
+ -747, -747, -747, 26, -747, 366, 355, 210, -747, 925,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, 321, -747, -747, -747,
+ -747, -747, -747, -747, 328, 8019, 433, 4262, 8019, 8019,
+ 8019, -747, 403, 2472, 440, -747, -747, 418, 300, 13,
+ 457, 24, 437, -747, -747, -747, 4670, -747, 6820, 6820,
+ -747, -747, 4923, -747, 8128, 438, -747, 436, 449, 4393,
+ 452, 463, -747, 346, 210, 546, 451, 4131, 474, -24,
+ 525, 71, 477, 165, 276, -747, 440, 498, 276, -747,
+ -24, 582, 250, 8766, 501, -747, 374, 384, 394, -747,
+ 933, -747, -747, -747, -747, 595, -747, 659, 673, 76,
+ 552, 721, 553, 43, 584, 596, -747, -747, -747, -747,
+ -747, -747, -747, 5045, 8128, 8128, 8128, 8128, 6711, 8128,
+ 8128, -747, -747, 7474, -747, 4131, 6599, 524, 7474, 8019,
+ 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019,
+ 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019,
+ 8019, 8019, 8019, 8019, 8019, 9033, 6820, 9111, 3431, 71,
+ 119, 119, 8128, 8128, 473, 652, 528, 614, -747, -747,
+ 424, 654, 56, 92, 335, 344, 8128, 131, -747, 42,
+ 444, -747, -747, -747, 33, 35, 53, 217, 227, 235,
+ 265, 298, 333, -747, -747, -747, 358, 10047, 10047, -747,
+ -747, -747, -747, 8237, 8237, -747, 587, -747, -747, -747,
+ 305, -747, -747, 8019, 8019, 6929, -747, -747, 9189, 6820,
+ 9267, 8019, 8019, 7147, -747, -24, 540, -747, -747, -24,
+ -747, -747, 242, -747, -747, -747, -747, -747, 6222, -747,
+ 8019, 4393, 555, 9189, 9267, 8019, -24, -747, 556, -24,
+ -747, 7256, -747, -747, 7365, -747, -747, -747, 436, 470,
+ -747, -747, -747, 557, 8766, 9345, 6820, 9423, 585, -747,
+ -747, -747, -747, 843, -747, -747, -747, -747, 835, 49,
+ -747, -747, -747, -747, 564, -747, 565, 658, 572, 662,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, 21, -747, -747, 569, -747, 8019, 8019, -747,
+ 925, -747, -747, -747, -747, -747, -747, -747, 38, 8019,
+ -747, 577, 578, -747, -24, 8766, 581, -747, -747, 2225,
+ -747, -747, 546, 2143, 2143, 2143, 2143, 1115, 1115, 2614,
+ 2024, 2143, 2143, 1738, 1738, 718, 718, 1856, 1115, 1115,
+ 619, 619, 692, 274, 274, 546, 546, 546, 3199, 5687,
+ 3285, 5801, -747, 463, -747, -24, 460, -747, 471, -747,
+ -747, 2915, 715, 734, -747, 3577, 713, 3869, 175, 175,
+ 652, 7583, 715, 96, 9501, 6820, 9579, -747, 71, -747,
+ 470, -747, 473, -747, -747, -747, 9657, 6820, 9735, 3431,
+ 8128, 1108, -747, -747, -747, -747, -747, 996, 996, 38,
+ 38, -747, 2242, -747, 2472, -747, -747, 6222, 10104, -747,
+ 8019, 440, -747, 437, 5573, 2489, -24, 367, 390, -747,
+ -747, -747, -747, -747, -747, 8128, 2472, 605, -747, 463,
+ 463, 2472, -7, -747, 276, 8766, 557, 500, 267, -24,
+ 48, 50, 8019, -747, 843, 592, -747, 603, -24, -747,
+ 600, 4539, 4393, -747, 835, -747, -747, 835, -747, -747,
+ 634, -747, -747, 4393, 865, -747, -747, -747, 546, 546,
+ -747, 411, 4539, -747, -747, 607, 7692, -747, 557, 8766,
+ 8019, 644, 8237, 8019, -747, 587, 612, 544, 8237, 8237,
+ -747, -747, 587, -747, -747, -747, 7801, 744, -747, 413,
+ -747, 744, -747, -747, -747, -747, 715, 208, -747, 62,
+ 85, -24, 117, 120, 8128, 473, -747, 8128, 3431, 500,
+ 267, -747, -24, 715, 242, 835, 3431, 473, 6362, -747,
+ -747, -747, -747, 4539, 4393, 8019, 38, -747, -747, -747,
+ 8019, 432, 8019, 8019, 242, -747, -747, -747, 465, -747,
+ -24, 788, 620, 854, -747, 885, -24, -747, 756, 631,
+ -747, 629, 633, -747, 639, -747, 642, 639, 657, -747,
+ -747, -747, -747, -747, 681, 600, 683, 665, -747, 666,
+ 676, -747, 789, 8019, 680, 557, 2472, 8019, -747, 2472,
+ 2472, -747, -747, 8237, -747, 2472, -747, 2472, -747, 577,
+ -747, 710, -747, 4000, 814, -747, 8128, 715, -747, 715,
+ 4539, 4539, -747, 7910, 3723, 133, 175, -747, 473, 715,
+ -747, -747, -747, -24, 715, -747, -747, 822, 696, 2472,
+ 4393, 8019, -747, -747, 700, 788, 621, -747, -747, 705,
+ -747, -747, -747, -747, -747, 835, -747, 634, -747, 634,
+ -747, 634, -747, -747, -747, 8871, 736, -747, 1125, -747,
+ 1125, -747, 634, -747, -747, 711, 2472, -747, 2472, 8976,
+ 119, -747, -747, 4539, -747, -747, 119, -747, -747, 715,
+ 715, -747, 505, -747, 3431, -747, -747, -747, -747, 1108,
+ -747, -747, 717, 788, 700, 788, 716, 885, 639, 720,
+ 639, 639, 807, 487, -747, 725, 726, 639, -747, 728,
+ 639, 815, -747, 522, 384, 394, 3431, -747, 3577, -747,
+ -747, -747, -747, -747, 4539, 715, 3431, -747, 700, 788,
+ -747, -747, 634, -747, -747, -747, -747, 9813, 1125, -747,
+ 634, -747, -747, 634, -747, -747, 470, 9891, 6820, 9969,
+ 734, 413, 715, -747, 715, 700, 639, 727, 730, 639,
+ 738, 639, 639, 212, 267, -24, 152, 187, -747, -747,
+ -747, -747, -747, -747, 634, -747, -747, -747, 193, 639,
+ -747
+};
+
+
+static const yytype_int16 yypgoto[] =
+{
+ -747, -747, -747, -537, 976, -747, 20, -747, -747, -14,
+ 30, -45, -747, -133, -747, 22, 772, -149, 9, -69,
+ -747, -400, -4, 1540, -303, 793, -54, -747, -12, -747,
+ -747, 0, -747, 802, -747, -48, -747, -16, -29, -313,
+ 81, 55, -747, -245, -192, -41, -272, -34, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -2, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -31, -319, -519, -49, -607,
+ -747, -664, -641, 260, -747, -487, -747, -532, -747, 8,
+ -747, -747, -747, -747, -747, -747, -747, -747, 795, -747,
+ -747, -528, -747, -42, -747, -747, -747, -747, -747, -747,
+ 799, -747, -747, -747, -747, -747, -747, -747, -747, 513,
+ -208, -747, -747, -747, -5, -747, 29, -747, 1251, 816,
+ 747, 1369, -747, -747, 47, -235, -673, -393, -569, -40,
+ -576, -746, 69, 278, -747, -474, -747, -249, 959, -747,
+ -747, -747, -6, -288, 162, -261, -747, -747, -56, -20,
+ 17, -563, -217, -44, 850, 752
+};
+
+
+
+
+
+
+static const yytype_int16 yytable[] =
+{
+ 79, 264, 79, 189, 246, 297, 220, 224, 187, 227,
+ 243, 460, 547, 535, 208, 208, 226, 276, 208, 255,
+ 394, 282, 686, 189, 109, 450, 501, 425, 187, 335,
+ 685, 427, 703, 721, 616, 364, 241, 190, 201, 201,
+ 255, 282, 201, 562, 561, 244, 248, 79, 208, 254,
+ 629, 256, 255, 255, 255, 187, 728, 190, 240, 467,
+ 208, 745, 821, 473, 533, 740, 541, 329, 329, 817,
+ 784, 329, 256, -83, 789, -85, 596, 221, 631, 208,
+ 208, -89, 461, 208, 340, 350, 350, -92, 416, 187,
+ 814, 375, 713, 714, 888, 658, 369, 205, 214, 367,
+ -471, 215, -62, 3, 475, 599, 577, 578, 289, 290,
+ -94, 392, 331, -471, 650, 334, -317, -96, -464, 756,
+ -463, -95, -89, 619, 223, 462, 463, 533, 795, 541,
+ 236, 325, 544, -96, -76, -89, 599, 461, -465, 800,
+ 592, 469, -91, 274, 275, -93, 494, 379, 592, 476,
+ 381, 382, 651, 610, 368, 563, 632, -83, -90, -85,
+ 742, 799, 376, 746, 107, -91, 107, -81, 645, 804,
+ -317, -317, 888, -464, 874, -463, 610, 760, 107, 107,
+ 462, 463, 107, 559, 432, 326, 327, 560, 279, -83,
+ 280, -85, -83, -465, -85, 79, -83, -81, -85, 460,
+ -93, 229, 682, -84, 821, -532, -90, 370, 402, 817,
+ 404, 107, 107, 630, 208, 220, 208, 208, 375, 255,
+ 208, 544, 208, 836, 107, -92, -86, 79, -533, 810,
+ 428, 629, 732, -88, 908, 79, 369, -87, 201, 403,
+ 201, 201, 691, 107, 107, 491, 240, 107, 490, 745,
+ 500, 256, 492, 498, 702, 901, 418, 492, -83, 765,
+ 740, -85, 255, 701, 646, 279, 291, 280, 935, 740,
+ 329, 329, 329, 329, -82, 486, 487, 863, 550, 289,
+ 290, 79, 208, 208, 208, 208, 79, 208, 208, 270,
+ 282, 208, 496, 79, 256, 610, 208, 395, -91, 398,
+ -91, 272, -466, 480, 240, 565, 421, 610, 485, 430,
+ 431, 540, -468, 422, 481, 482, 483, 484, 329, 329,
+ -467, 279, 460, 280, 208, 531, 79, 905, 581, 583,
+ 208, 208, 558, -93, 902, -93, 589, 591, 629, -90,
+ 629, -90, 299, 293, 208, 246, 294, 370, 201, 793,
+ -469, 879, -272, 219, 279, -532, 280, -466, -92, 107,
+ -92, -529, 548, 549, 886, 432, 889, -468, 794, 934,
+ -530, 208, 208, 591, 540, -467, 246, 298, 107, 593,
+ 107, 107, 958, -458, 107, 388, 107, 208, 531, 56,
+ 223, 107, 415, 322, 323, 324, 604, 726, 540, 107,
+ 255, 719, 761, 189, 780, -469, -272, -272, 187, 79,
+ -533, 201, 600, 531, -95, 614, 602, 424, -461, 603,
+ -458, 540, 629, 876, 422, 222, 432, 786, 783, -461,
+ 223, 413, 256, 612, 208, 531, 613, 190, -458, 389,
+ 390, 655, 374, 572, 940, 107, 107, 107, 107, 107,
+ 107, 107, 107, 373, 722, 107, 460, 107, 201, 435,
+ 107, 255, 378, 754, -96, 439, 440, 441, 442, -470,
+ 803, 222, -529, -461, -458, -458, -91, 723, -529, -265,
+ 629, -530, 629, -461, -461, 389, 414, -530, 107, 380,
+ 107, -398, 405, 256, 107, 107, -88, 661, 573, -93,
+ 443, 406, 407, 500, 684, 684, 444, 445, 107, 554,
+ 687, 657, 383, 436, 437, 666, 629, 664, 696, 811,
+ 783, 688, 551, -470, -470, 670, -536, 446, 384, 566,
+ 447, 896, 771, -265, -265, 107, 107, 898, 415, 778,
+ 540, -90, 718, 79, 391, 79, 727, 668, 709, 711,
+ -398, 107, 540, 208, 531, -273, 704, 735, 669, 385,
+ -95, 670, 670, 555, 556, 208, 531, 79, 208, -91,
+ 268, 269, 917, 107, 729, 717, 666, 201, 393, 409,
+ -93, 255, 189, 567, 568, -536, 411, 187, 665, 201,
+ 432, 724, -87, 664, 670, 216, 672, 744, 107, 666,
+ 747, -83, -398, 208, -398, -398, 219, 927, 764, -273,
+ -273, 757, -85, 256, 299, 945, 190, 768, 417, 279,
+ 460, 280, 420, 774, 776, 255, 567, 568, 779, 79,
+ 79, 773, 710, 712, -61, 492, 426, -536, 429, -536,
+ -536, 79, 434, -532, 623, 734, 439, 440, 441, 442,
+ 79, 797, 477, -90, 806, 792, 461, 256, 470, 474,
+ 208, 928, 929, 805, 478, 497, 208, 208, 610, 551,
+ 553, 666, 801, 623, 479, 439, 440, 441, 442, 557,
+ 329, 585, 666, 329, 601, -82, 623, 299, 439, 440,
+ 441, 442, 208, 608, 622, 208, 79, -76, 615, 462,
+ 463, 464, 312, 313, 79, 634, 637, 107, 187, 107,
+ 639, 79, 79, 640, 642, 845, 647, 107, -251, 656,
+ 461, 802, 659, 443, 796, 674, 680, 798, 847, 107,
+ 445, 107, 107, 731, 461, 319, 320, 321, 322, 323,
+ 324, 812, 676, 725, 733, 861, 735, 813, -252, 105,
+ 446, 105, 684, 822, 865, 767, 857, 772, 858, 783,
+ 299, 815, 875, 462, 463, 466, 823, 107, 866, 824,
+ 825, 208, 329, 868, 827, 312, 313, 462, 463, 468,
+ 829, 79, 461, 831, 208, 878, 299, 880, 79, 79,
+ 835, 881, 79, 107, 107, 834, 105, 837, 849, 844,
+ 887, 255, 890, 245, 249, 107, 838, 840, 79, 320,
+ 321, 322, 323, 324, 107, 255, 856, 842, 203, 203,
+ 867, -253, 203, 853, 107, 462, 463, 471, 899, 900,
+ 107, 107, 870, 883, 871, 320, 321, 322, 323, 324,
+ 623, 873, 439, 440, 441, 442, 877, 893, 232, 235,
+ 884, 79, -254, 203, 203, 907, 107, 909, 338, 107,
+ 107, 912, 79, 916, 277, 278, 918, 920, 107, 923,
+ -532, 926, 936, -533, 933, 107, 107, 624, 939, 954,
+ 941, 353, 949, 942, 730, 910, 371, 438, 948, 439,
+ 440, 441, 442, 372, 79, 623, 79, 439, 440, 441,
+ 442, 950, 79, 951, 79, 365, 623, 885, 439, 440,
+ 441, 442, 741, 540, 959, 283, 906, 531, 0, 749,
+ 750, 0, 751, 0, 443, 666, 208, 531, 44, 45,
+ 444, 445, 624, 0, 0, 107, 0, 818, 625, 439,
+ 440, 441, 442, 624, 105, 107, 0, 0, 107, 816,
+ 201, 446, 107, 107, 447, 0, 107, 0, 0, 387,
+ 0, 0, 0, 0, 387, 284, 285, 286, 287, 288,
+ 0, 401, 107, 0, 0, 0, 105, 0, 64, 0,
+ 0, 0, 0, 0, 105, 438, 0, 439, 440, 441,
+ 442, 0, 0, 0, 0, 0, -554, 203, 0, 0,
+ 203, 203, 277, 0, -554, -554, -554, 0, 0, -554,
+ -554, -554, 0, -554, 0, 107, 0, 0, 203, 0,
+ 203, 203, 443, -554, 0, 238, 107, 0, 444, 445,
+ 105, 0, 0, -554, -554, 105, -554, -554, -554, -554,
+ -554, 0, 105, 0, 0, 0, 0, 0, 0, 446,
+ 0, 0, 447, 0, 0, 0, 0, 0, 107, 0,
+ 107, 0, 0, 0, 0, 0, 107, 0, 107, 0,
+ 0, 0, 0, 0, 0, 105, 448, 0, 401, 0,
+ 0, -554, 0, 0, 0, 0, 0, 0, 0, 0,
+ 107, 0, 0, 0, 0, 203, 0, 0, 0, 0,
+ 499, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 0, 203, 0,
+ 0, 0, 0, 0, -554, 0, -554, 0, 0, 219,
+ -554, 401, -554, 0, -554, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 105, 0,
+ 438, 0, 439, 440, 441, 442, 0, 0, 0, 0,
+ 0, 0, 0, 238, 0, 582, 584, 754, 0, 439,
+ 440, 441, 442, 299, 0, 588, 203, 203, 401, 0,
+ 0, 203, 0, 582, 584, 203, 0, 443, 312, 313,
+ 0, 0, 0, 444, 445, 412, 636, 0, 636, 0,
+ 636, 0, 606, 238, 443, 0, 0, 611, 0, 0,
+ 444, 445, 0, 203, 446, 0, 203, 447, 0, 317,
+ 318, 319, 320, 321, 322, 323, 324, 0, 203, 0,
+ 654, 446, 0, 0, 447, 0, 0, 0, 0, 0,
+ 0, 705, 0, 103, 0, 103, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 238, 0, 0, 0, 0, 0, 0, 0, 648,
+ 649, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 203, 105, 673, 105, 678, 0, 0, 0, 0,
+ 103, 0, 0, 0, 257, 0, 0, 401, 0, 0,
+ 0, 0, 0, 0, 0, 0, 105, 0, 0, 401,
+ 0, 0, 0, 0, 0, 257, 0, 0, 0, 673,
+ 673, 654, 654, 0, 0, 0, 0, 342, 351, 351,
+ 351, 0, 0, 0, 0, 387, 0, 0, 0, 0,
+ 0, 0, 0, 203, 0, 0, 0, 203, 0, 0,
+ 0, 0, 673, 0, 0, 0, 0, 0, 0, 203,
+ 0, 106, 0, 106, 0, 0, 0, 0, 105, 105,
+ 0, 0, 737, 0, 0, 0, 0, 607, 0, 0,
+ 105, 0, 203, 0, 0, 0, 0, 0, 0, 105,
+ 0, 0, 0, 737, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 638, 0, 641, 106, 0,
+ 0, 0, 258, 0, 203, 0, 0, 0, 782, 785,
+ 0, 785, 0, 785, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 258, 0, 105, 0, 0, 103, 0,
+ 0, 0, 0, 105, 0, 343, 352, 352, 203, 0,
+ 105, 105, 766, 0, 769, 770, 0, 0, 654, 0,
+ 775, 777, 0, 0, 0, 0, 0, 0, 203, 0,
+ 103, 0, 0, 0, 0, 0, 0, 0, 103, 0,
+ 0, 0, 0, 636, 636, 0, 636, 0, 636, 636,
+ 0, 0, 0, 0, 257, 0, 0, 737, 0, 636,
+ 0, 636, 636, 0, 0, 0, 0, 809, 0, 0,
+ 0, 679, 769, 681, 775, 777, 0, 0, 0, 0,
+ 105, 0, 0, 851, 103, 0, 855, 105, 105, 103,
+ 0, 105, 76, 0, 76, 0, 103, 257, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 105, 0, 0,
+ 0, 0, 0, 0, 0, 203, 106, 0, 0, 846,
+ 0, 0, 0, 0, 0, 848, 0, 0, 0, 103,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,
+ 0, 0, 0, 0, 0, 203, 0, 0, 106, 0,
+ 105, 0, 0, 0, 0, 0, 106, 738, 739, 0,
+ 0, 105, 0, 848, 785, 0, 0, 0, 0, 748,
+ 0, 0, 258, 0, 0, 0, 339, 0, 762, 0,
+ 636, 636, 636, 636, 0, 0, 0, 636, 636, 636,
+ 0, 636, 636, 105, 0, 105, 0, 0, 0, 0,
+ 0, 105, 106, 105, 0, 0, 0, 106, 0, 0,
+ 0, 0, 103, 0, 106, 258, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 401, 0, 678, 785, 0, 257, 0, 0, 636, 807,
+ 808, 636, 636, 636, 636, 0, 0, 106, 0, 0,
+ 826, 828, 0, 830, 0, 832, 833, 0, 0, 0,
+ 0, 636, 0, 0, 0, 0, 839, 0, 841, 843,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 203, 0, 0, 0, 0, 0, 0, 76, 0, 0,
+ 0, 0, 0, 0, 0, 0, 257, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 852,
+ 0, 0, 0, 0, 0, 0, 859, 860, 0, 76,
+ 862, 0, 0, 0, 0, 0, 0, 76, 0, 0,
+ 106, 0, 0, 0, 0, 0, 872, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 103, 0, 103, 0,
+ 0, 0, 0, 258, 0, 0, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, -555, -555, 0,
+ 103, 312, 313, 76, 0, 0, 0, 0, 76, 897,
+ 0, 0, 0, 0, 0, 76, 0, 911, 913, 914,
+ 915, 0, 0, 0, 919, 921, 922, 0, 924, 925,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 0, 0, 0, 0, 258, 0, 257, 0, 76, 0,
+ 0, 0, 930, 0, 931, 0, 0, 0, 0, 0,
+ 932, 0, 103, 103, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 103, 952, 0, 0, 953, 955,
+ 956, 957, 0, 103, 0, 0, 0, 0, 0, 0,
+ 257, 0, 0, 0, 106, 0, 106, 0, 960, 0,
+ 0, 0, 0, 0, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 0, 106, 312,
+ 313, 0, 0, 0, 0, 0, 0, 0, 0, 103,
+ 0, 76, 0, 0, 0, 0, 0, 103, 0, 0,
+ 0, 0, 0, 0, 103, 103, 314, 0, 315, 316,
+ 317, 318, 319, 320, 321, 322, 323, 324, 0, 0,
+ 0, 0, 0, 0, 258, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 106, 106, 0, 0, 223, 0, 0, 0, 0, 0,
+ 0, 0, 106, 753, 0, 0, 0, 0, 0, 0,
+ 0, 106, 0, 0, 0, 0, 0, 0, 258, 0,
+ 0, 0, 0, 0, 103, 0, 0, 0, 0, 0,
+ 0, 103, 103, 0, 0, 103, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 103, 0, 0, 0, 0, 0, 106, 0, 0,
+ 0, 0, 0, 0, 0, 106, 0, 0, 0, 0,
+ 0, 0, 106, 106, 0, 76, 351, 76, 0, 0,
+ 0, 0, 299, 300, 301, 302, 303, 304, 305, 306,
+ 894, 308, 309, 0, 103, 0, 0, 312, 313, 76,
+ 0, 0, 0, 0, 0, 103, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324, 0, 103, 0, 103,
+ 0, 0, 106, 0, 0, 103, 0, 103, 0, 106,
+ 106, 0, 0, 106, 0, 0, 0, 0, 0, 0,
+ 0, 76, 76, 0, 0, 0, 0, 0, 0, 106,
+ 0, 0, 0, 76, 0, 0, 0, 0, 0, 0,
+ 0, 0, 76, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 352, 0, 0, 0, 0, 0,
+ 0, 299, -555, -555, -555, -555, 304, 305, 895, 0,
+ -555, -555, 106, 0, 0, 0, 312, 313, 0, 0,
+ 0, 0, 0, 106, 0, 0, 0, 0, 76, 0,
+ 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
+ 0, 0, 0, 76, 76, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 106, 0, 106, 0, 660,
+ 0, 0, 0, 106, 0, 106, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 715, 0, 0, 0,
+ 0, 0, 0, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 0, 0, 312, 313,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 76, 0, 312, 313, 0, 0, 0,
+ 76, 76, 0, 0, 76, 314, 0, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 0, 0, 0,
+ 76, 0, 314, 0, 315, 316, 317, 318, 319, 320,
+ 321, 322, 323, 324, -554, 4, -230, 5, 6, 7,
+ 8, 9, 0, 0, 0, 10, 11, 0, 0, 0,
+ 12, 0, 13, 14, 15, 16, 17, 18, 19, 892,
+ 0, 0, 0, 76, 20, 21, 22, 23, 24, 25,
+ 26, 0, 0, 27, 76, 0, 0, 0, 0, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
+ 46, 47, 0, 0, 0, 0, 76, 0, 76, 0,
+ 0, 0, 0, 0, 76, 0, 76, 0, 0, 0,
+ 48, 0, 0, 49, 50, 0, 51, 52, 0, 53,
+ 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 61, 62, 63, -272,
+ 0, 0, 0, 0, 0, 0, 0, -272, -272, -272,
+ 0, 0, -272, -272, -272, 0, -272, 0, 0, 0,
+ -554, 0, -554, 0, 0, 0, -272, -272, -272, 0,
+ 0, 0, 0, 0, 0, 0, -272, -272, 0, -272,
+ -272, -272, -272, -272, 0, 0, 0, 0, 0, 0,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 0, 0, 312, 313, -272, -272, -272,
+ -272, -272, -272, -272, -272, -272, -272, -272, -272, -272,
+ 0, 0, -272, -272, -272, 0, 663, -272, 0, 0,
+ 0, 0, 314, -272, 315, 316, 317, 318, 319, 320,
+ 321, 322, 323, 324, 0, 0, -272, 0, -94, -272,
+ -272, -272, -272, -272, -272, -272, -272, -272, -272, -272,
+ -272, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -272, -272, -272,
+ -272, -397, 0, -272, -272, -272, 0, -272, 0, -397,
+ -397, -397, 0, 0, -397, -397, -397, 0, -397, 0,
+ 0, 0, 0, 0, 0, 0, 0, -397, -397, -397,
+ 0, 0, 0, 0, 0, 0, 0, 0, -397, -397,
+ 0, -397, -397, -397, -397, -397, 0, 0, 0, 0,
+ 0, 0, 299, 300, 301, 302, 303, 304, 305, 0,
+ 0, 308, 309, 0, 0, 0, 0, 312, 313, -397,
+ -397, -397, -397, -397, -397, -397, -397, -397, -397, -397,
+ -397, -397, 0, 0, -397, -397, -397, 0, 0, -397,
+ 0, 0, 0, 0, 0, -397, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324, 0, 0, 0, 0,
+ 0, -397, 0, -397, -397, -397, -397, -397, -397, -397,
+ -397, -397, -397, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -397, -397,
+ -397, -397, -397, -266, 219, -397, -397, -397, 0, -397,
+ 0, -266, -266, -266, 0, 0, -266, -266, -266, 0,
+ -266, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -266, -266, -266, 0, 0, 0, 0, 0, 0, 0,
+ -266, -266, 0, -266, -266, -266, -266, -266, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -266, -266, -266, -266, -266, -266, -266, -266, -266,
+ -266, -266, -266, -266, 0, 0, -266, -266, -266, 0,
+ 0, -266, 0, 0, 0, 0, 0, -266, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -266, 0, 0, -266, -266, -266, -266, -266, -266, -266,
+ -266, -266, -266, -266, -266, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -266, -266, -266, -266, -554, 0, -266, -266, -266,
+ 0, -266, 0, -554, -554, -554, 0, 0, -554, -554,
+ -554, 0, -554, 0, 0, 0, 0, 0, 0, 0,
+ 0, -554, -554, -554, 0, 0, 0, 0, 0, 0,
+ 0, 0, -554, -554, 0, -554, -554, -554, -554, -554,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -554, -554, -554, -554, -554, -554, -554,
+ -554, -554, -554, -554, -554, -554, 0, 0, -554, -554,
+ -554, 0, 0, -554, 0, 0, 0, 0, 0, -554,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -554, 0, -554, -554, -554,
+ -554, -554, -554, -554, -554, -554, -554, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -554, -554, -554, -554, -554, -279, 219, -554,
+ -554, -554, 0, -554, 0, -279, -279, -279, 0, 0,
+ -279, -279, -279, 0, -279, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -279, -279, 0, 0, 0, 0,
+ 0, 0, 0, 0, -279, -279, 0, -279, -279, -279,
+ -279, -279, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -279, -279, -279, -279, -279,
+ -279, -279, -279, -279, -279, -279, -279, -279, 0, 0,
+ -279, -279, -279, 0, 0, -279, 0, 0, 0, 0,
+ 0, -279, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -279, 0, -279,
+ -279, -279, -279, -279, -279, -279, -279, -279, -279, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -279, -279, -279, -279, -536,
+ 216, -279, -279, -279, 0, -279, 0, -536, -536, -536,
+ 0, 0, 0, -536, -536, 0, -536, 0, 0, 0,
+ 0, 0, 0, 0, 0, -536, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -536, -536, 0, -536,
+ -536, -536, -536, -536, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -536, -536, -536,
+ -536, -536, -536, -536, -536, -536, -536, -536, -536, -536,
+ 0, 0, -536, -536, -536, -272, 662, 0, 0, 0,
+ 0, 0, 0, -272, -272, -272, 0, 0, 0, -272,
+ -272, 0, -272, 0, 0, 0, 0, 0, -92, -536,
+ 0, -536, -536, -536, -536, -536, -536, -536, -536, -536,
+ -536, 0, -272, -272, 0, -272, -272, -272, -272, -272,
+ 0, 0, 0, 0, 0, 0, -536, -536, -536, -536,
+ -84, 0, 0, -536, 0, -536, 0, -536, 0, 0,
+ 0, 0, 0, -272, -272, -272, -272, -272, -272, -272,
+ -272, -272, -272, -272, -272, -272, 0, 0, -272, -272,
+ -272, 0, 663, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -94, -272, 0, -272, -272, -272,
+ -272, -272, -272, -272, -272, -272, -272, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -272, -272, -272, -86, 0, 0, -272,
+ 0, -272, 4, -272, 5, 6, 7, 8, 9, -554,
+ -554, -554, 10, 11, 0, 0, -554, 12, 0, 13,
+ 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
+ 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
+ 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
+ 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 61, 62, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -554, 4, -554,
+ 5, 6, 7, 8, 9, 0, 0, -554, 10, 11,
+ 0, -554, -554, 12, 0, 13, 14, 15, 16, 17,
+ 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
+ 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
+ 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
+ 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 48, 0, 0, 49, 50, 0, 51,
+ 52, 0, 53, 0, 54, 55, 56, 57, 58, 59,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,
+ 62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -554, 4, -554, 5, 6, 7, 8,
+ 9, 0, 0, -554, 10, 11, 0, 0, -554, 12,
+ -554, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
+ 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
+ 0, 0, 49, 50, 0, 51, 52, 0, 53, 0,
+ 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 61, 62, 63, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -554,
+ 4, -554, 5, 6, 7, 8, 9, 0, 0, -554,
+ 10, 11, 0, 0, -554, 12, 0, 13, 14, 15,
+ 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
+ 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
+ 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
+ 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
+ 0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
+ 0, 4, 0, 5, 6, 7, 8, 9, 0, -554,
+ -554, 10, 11, 0, 0, -554, 12, -554, 13, 14,
+ 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
+ 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
+ 0, 0, 0, 0, 0, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
+ 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 48, 0, 0, 49,
+ 50, 0, 51, 52, 0, 53, 0, 54, 55, 56,
+ 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 61, 62, 63, 0, 0, 0, 0, 0,
+ 0, 0, 4, 0, 5, 6, 7, 8, 9, 0,
+ 0, 0, 10, 11, 0, 0, -554, 12, -554, 13,
+ 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
+ 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
+ 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
+ 237, 50, 0, 51, 52, 0, 53, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 61, 62, 63, 0, 0, 0, 0,
+ 0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
+ 0, 0, 0, 10, 11, -554, 0, -554, 12, -554,
+ 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
+ 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
+ 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 48, 0,
+ 0, 49, 50, 0, 51, 52, 0, 53, 0, 54,
+ 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 62, 63, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 5, 6, 7, 8,
+ 9, 0, 0, 0, 10, 11, -554, 0, -554, 12,
+ -554, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
+ 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
+ 0, 0, 49, 50, 0, 51, 52, 0, 53, 0,
+ 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 61, 62, 63, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -554, 0, 0, 0, 0, 0, 0, 0, -554,
+ 4, -554, 5, 6, 7, 8, 9, 0, 0, -554,
+ 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
+ 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
+ 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
+ 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
+ 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
+ 0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
+ 0, 10, 11, 0, 0, -554, 12, -554, 13, 14,
+ 15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
+ 193, 21, 22, 23, 24, 25, 26, 0, 0, 194,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 195, 41,
+ 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
+ 50, 0, 51, 52, 0, 198, 199, 54, 55, 56,
+ 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 61, 200, 63, 5, 6, 7, 0, 9,
+ 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
+ 13, 14, 15, 16, 17, 18, 19, 0, 223, 0,
+ 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
+ 0, 27, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 196, 0,
+ 0, 197, 50, 0, 51, 52, 0, 0, 0, 54,
+ 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 62, 63, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
+ 9, 0, 0, 0, 10, 11, 0, 0, 279, 12,
+ 280, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
+ 0, 0, 27, 0, 0, 0, 0, 0, 0, 29,
+ 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
+ 0, 0, 197, 50, 0, 51, 52, 0, 0, 0,
+ 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 61, 62, 63, 5, 6,
+ 7, 8, 9, 0, 0, 0, 10, 11, 0, 0,
+ 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
+ 0, 223, 0, 0, 0, 20, 21, 22, 23, 24,
+ 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 0, 41, 42, 0, 43, 44, 45,
+ 0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 48, 0, 0, 49, 50, 0, 51, 52, 0,
+ 53, 0, 54, 55, 56, 57, 58, 59, 60, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 479, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 0, 0, 0, 134,
+ 135, 136, 354, 355, 356, 357, 141, 142, 143, 0,
+ 0, 0, 0, 0, 144, 145, 146, 147, 358, 359,
+ 360, 361, 152, 37, 38, 362, 40, 0, 0, 0,
+ 0, 0, 0, 0, 0, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
+ 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 181, 0, 0, 0, 0, 0, 0,
+ -529, -529, -529, 0, -529, 0, 0, 0, -529, -529,
+ 0, 182, 363, -529, 0, -529, -529, -529, -529, -529,
+ -529, -529, 0, -529, 0, 0, 0, -529, -529, -529,
+ -529, -529, -529, -529, 0, 0, -529, 0, 0, 0,
+ 0, 0, 0, -529, 0, 0, -529, -529, -529, -529,
+ -529, -529, -529, -529, -529, -529, -529, -529, 0, -529,
+ -529, -529, 0, -529, -529, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -529, 0, 0, -529, -529, 0, -529,
+ -529, 0, -529, -529, -529, -529, -529, -529, -529, -529,
+ -529, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -529,
+ -529, -529, 0, 0, 0, 0, 0, 0, -530, -530,
+ -530, 0, -530, 0, -529, 0, -530, -530, 0, 0,
+ -529, -530, 0, -530, -530, -530, -530, -530, -530, -530,
+ 0, -530, 0, 0, 0, -530, -530, -530, -530, -530,
+ -530, -530, 0, 0, -530, 0, 0, 0, 0, 0,
+ 0, -530, 0, 0, -530, -530, -530, -530, -530, -530,
+ -530, -530, -530, -530, -530, -530, 0, -530, -530, -530,
+ 0, -530, -530, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -530, 0, 0, -530, -530, 0, -530, -530, 0,
+ -530, -530, -530, -530, -530, -530, -530, -530, -530, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -530, -530, -530,
+ 0, 0, 0, 0, 0, 0, -532, -532, -532, 0,
+ -532, 0, -530, 0, -532, -532, 0, 0, -530, -532,
+ 0, -532, -532, -532, -532, -532, -532, -532, 0, 0,
+ 0, 0, 0, -532, -532, -532, -532, -532, -532, -532,
+ 0, 0, -532, 0, 0, 0, 0, 0, 0, -532,
+ 0, 0, -532, -532, -532, -532, -532, -532, -532, -532,
+ -532, -532, -532, -532, 0, -532, -532, -532, 0, -532,
+ -532, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -532,
+ 720, 0, -532, -532, 0, -532, -532, 0, -532, -532,
+ -532, -532, -532, -532, -532, -532, -532, 0, 0, 0,
+ 0, 0, -92, 0, 0, 0, 0, 0, 0, 0,
+ -534, -534, -534, 0, -534, -532, -532, -532, -534, -534,
+ 0, 0, 0, -534, 0, -534, -534, -534, -534, -534,
+ -534, -534, 0, 0, 0, 0, -532, -534, -534, -534,
+ -534, -534, -534, -534, 0, 0, -534, 0, 0, 0,
+ 0, 0, 0, -534, 0, 0, -534, -534, -534, -534,
+ -534, -534, -534, -534, -534, -534, -534, -534, 0, -534,
+ -534, -534, 0, -534, -534, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -534, 0, 0, -534, -534, 0, -534,
+ -534, 0, -534, -534, -534, -534, -534, -534, -534, -534,
+ -534, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -535, -535, -535, 0, -535, -534,
+ -534, -534, -535, -535, 0, 0, 0, -535, 0, -535,
+ -535, -535, -535, -535, -535, -535, 0, 0, 0, 0,
+ -534, -535, -535, -535, -535, -535, -535, -535, 0, 0,
+ -535, 0, 0, 0, 0, 0, 0, -535, 0, 0,
+ -535, -535, -535, -535, -535, -535, -535, -535, -535, -535,
+ -535, -535, 0, -535, -535, -535, 0, -535, -535, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -535, 0, 0,
+ -535, -535, 0, -535, -535, 0, -535, -535, -535, -535,
+ -535, -535, -535, -535, -535, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -535, -535, -535, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -535, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
+ 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 261, 262, 153, 263,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
+ 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
+ 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 225, 0, 153, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
+ 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
+ 55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
+ 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 0, 0, 153, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
+ 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
+ 55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
+ 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 0, 0, 153, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
+ 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
+ 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
+ 0, 0, 0, 12, 182, 13, 14, 15, 191, 192,
+ 18, 19, 0, 0, 0, 0, 0, 193, 230, 231,
+ 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
+ 0, 0, 0, 250, 0, 0, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
+ 44, 45, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 251, 0, 0, 197, 50, 0, 51,
+ 52, 0, 0, 0, 54, 55, 56, 57, 58, 59,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 6, 7, 0, 9, 0, 0, 252,
+ 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
+ 191, 192, 18, 19, 0, 0, 0, 0, 253, 193,
+ 230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
+ 0, 0, 0, 0, 0, 250, 0, 0, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
+ 0, 43, 44, 45, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 251, 0, 0, 197, 50,
+ 0, 51, 52, 0, 0, 0, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 6, 7, 8, 9, 0,
+ 0, 252, 10, 11, 0, 0, 0, 12, 0, 13,
+ 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
+ 495, 20, 21, 22, 23, 24, 25, 26, 0, 0,
+ 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
+ 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
+ 0, 10, 11, 61, 62, 63, 12, 0, 13, 14,
+ 15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
+ 193, 21, 22, 23, 24, 25, 26, 0, 0, 194,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 195, 41,
+ 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
+ 50, 0, 51, 52, 0, 198, 199, 54, 55, 56,
+ 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
+ 10, 11, 61, 200, 63, 12, 0, 13, 14, 15,
+ 191, 192, 18, 19, 0, 0, 0, 0, 0, 193,
+ 230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
+ 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 195, 41, 42,
+ 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
+ 0, 51, 52, 0, 590, 199, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
+ 11, 61, 200, 63, 12, 0, 13, 14, 15, 191,
+ 192, 18, 19, 0, 0, 0, 0, 0, 193, 230,
+ 231, 23, 24, 25, 26, 0, 0, 194, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 195, 41, 42, 0,
+ 43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
+ 51, 52, 0, 198, 0, 54, 55, 56, 57, 58,
+ 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
+ 61, 200, 63, 12, 0, 13, 14, 15, 191, 192,
+ 18, 19, 0, 0, 0, 0, 0, 193, 230, 231,
+ 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 195, 41, 42, 0, 43,
+ 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 196, 0, 0, 197, 50, 0, 51,
+ 52, 0, 0, 199, 54, 55, 56, 57, 58, 59,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
+ 200, 63, 12, 0, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 195, 41, 42, 0, 43, 44,
+ 45, 0, 46, 47, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 196, 0, 0, 197, 50, 0, 51, 52,
+ 0, 590, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
+ 7, 0, 9, 0, 0, 0, 10, 11, 61, 200,
+ 63, 12, 0, 13, 14, 15, 191, 192, 18, 19,
+ 0, 0, 0, 0, 0, 193, 230, 231, 23, 24,
+ 25, 26, 0, 0, 194, 0, 0, 0, 0, 0,
+ 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 195, 41, 42, 0, 43, 44, 45,
+ 0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 196, 0, 0, 197, 50, 0, 51, 52, 0,
+ 0, 0, 54, 55, 56, 57, 58, 59, 60, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
+ 0, 9, 0, 0, 0, 10, 11, 61, 200, 63,
+ 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
+ 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
+ 26, 0, 0, 194, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
+ 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 196, 0, 0, 197, 50, 0, 51, 52, 0, 489,
+ 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
+ 9, 0, 0, 0, 10, 11, 61, 200, 63, 12,
+ 0, 13, 14, 15, 191, 192, 18, 19, 0, 0,
+ 0, 0, 0, 193, 230, 231, 23, 24, 25, 26,
+ 0, 0, 194, 0, 0, 0, 0, 0, 0, 29,
+ 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
+ 0, 0, 197, 50, 0, 51, 52, 0, 198, 0,
+ 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
+ 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
+ 0, 0, 0, 10, 11, 61, 200, 63, 12, 0,
+ 13, 14, 15, 191, 192, 18, 19, 0, 0, 0,
+ 0, 0, 193, 230, 231, 23, 24, 25, 26, 0,
+ 0, 194, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 196, 0,
+ 0, 197, 50, 0, 51, 52, 0, 763, 0, 54,
+ 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
+ 0, 0, 10, 11, 61, 200, 63, 12, 0, 13,
+ 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
+ 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
+ 194, 0, 0, 0, 0, 0, 0, 29, 0, 0,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 196, 0, 0,
+ 197, 50, 0, 51, 52, 0, 489, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
+ 0, 10, 11, 61, 200, 63, 12, 0, 13, 14,
+ 15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
+ 193, 230, 231, 23, 24, 25, 26, 0, 0, 194,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
+ 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
+ 50, 0, 51, 52, 0, 590, 0, 54, 55, 56,
+ 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
+ 10, 11, 61, 200, 63, 12, 0, 13, 14, 15,
+ 191, 192, 18, 19, 0, 0, 0, 0, 0, 193,
+ 230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
+ 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
+ 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
+ 0, 51, 52, 0, 0, 0, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
+ 11, 61, 200, 63, 12, 0, 13, 14, 15, 16,
+ 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
+ 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 0, 41, 42, 0,
+ 43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
+ 51, 52, 0, 0, 0, 54, 55, 56, 57, 58,
+ 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
+ 61, 62, 63, 12, 0, 13, 14, 15, 16, 17,
+ 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
+ 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
+ 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 196, 0, 0, 197, 50, 0, 51,
+ 52, 0, 0, 0, 54, 55, 56, 57, 58, 59,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
+ 200, 63, 12, 0, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 251, 0, 0, 295, 50, 0, 51, 52,
+ 0, 296, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
+ 0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
+ 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
+ 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
+ 194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 337, 0, 0,
+ 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
+ 0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 250, 0, 0, 32, 33, 34, 344, 36,
+ 37, 38, 345, 40, 0, 41, 42, 0, 43, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 346,
+ 0, 0, 347, 0, 0, 197, 50, 0, 51, 52,
+ 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
+ 0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
+ 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
+ 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
+ 194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+ 32, 33, 34, 344, 36, 37, 38, 345, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 347, 0, 0,
+ 197, 50, 0, 51, 52, 0, 0, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
+ 0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 251, 0, 0, 295, 50, 0, 51, 52,
+ 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
+ 0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
+ 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
+ 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
+ 194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 882, 0, 0,
+ 197, 50, 0, 51, 52, 0, 0, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
+ 0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 891, 0, 0, 197, 50, 0, 51, 52,
+ 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 0, 528, 529, 0, 0, 530,
+ 0, 0, 0, 0, 0, 0, 0, 0, 252, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
+ 163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
+ 0, 0, 0, 536, 537, 0, 0, 538, 0, 0,
+ 0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
+ 0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
+ 0, 594, 529, 0, 0, 595, 0, 0, 0, 0,
+ 0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
+ 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 181, 0, 0, 0, 0, 0, 597,
+ 537, 0, 0, 598, 0, 0, 0, 0, 0, 0,
+ 0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
+ 167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
+ 180, 181, 0, 0, 0, 0, 0, 617, 529, 0,
+ 0, 618, 0, 0, 0, 0, 0, 0, 0, 182,
+ 219, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 0, 0, 163, 164, 0, 0, 165, 166, 167, 168,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 0, 180, 181,
+ 0, 0, 0, 0, 0, 620, 537, 0, 0, 621,
+ 0, 0, 0, 0, 0, 0, 0, 182, 219, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
+ 163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
+ 0, 0, 0, 689, 529, 0, 0, 690, 0, 0,
+ 0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
+ 0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
+ 0, 692, 537, 0, 0, 693, 0, 0, 0, 0,
+ 0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
+ 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 181, 0, 0, 0, 0, 0, 699,
+ 529, 0, 0, 700, 0, 0, 0, 0, 0, 0,
+ 0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
+ 167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
+ 180, 181, 0, 0, 0, 0, 0, 575, 537, 0,
+ 0, 576, 0, 0, 0, 0, 0, 0, 0, 182,
+ 219, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 0, 0, 163, 164, 0, 0, 165, 166, 167, 168,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 0, 180, 181,
+ 0, 0, 0, 0, 0, 937, 529, 0, 0, 938,
+ 0, 0, 0, 0, 0, 0, 0, 182, 219, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
+ 163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
+ 0, 0, 0, 943, 529, 0, 0, 944, 0, 0,
+ 0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
+ 0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
+ 0, 946, 537, 0, 0, 947, 0, 0, 0, 0,
+ 0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
+ 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 181, 0, 0, 0, 0, 0, 575,
+ 537, 0, 0, 576, 0, 0, 0, 0, 0, 0,
+ 0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
+ 167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 0, 0, 0, 0, 0, 660, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
+ 180, 181, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 0, 0, 312, 313, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 314, 0, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324
+};
+
+static const yytype_int16 yycheck[] =
+{
+ 2, 55, 4, 8, 52, 74, 22, 27, 8, 29,
+ 51, 260, 331, 326, 16, 17, 28, 62, 20, 53,
+ 212, 65, 550, 28, 4, 260, 298, 244, 28, 85,
+ 549, 248, 569, 596, 434, 89, 50, 8, 16, 17,
+ 74, 85, 20, 1, 347, 51, 52, 49, 50, 53,
+ 443, 53, 86, 87, 88, 55, 619, 28, 49, 267,
+ 62, 637, 735, 271, 325, 634, 327, 81, 82, 733,
+ 677, 85, 74, 25, 681, 25, 389, 22, 29, 81,
+ 82, 25, 61, 85, 86, 87, 88, 25, 237, 89,
+ 731, 107, 579, 580, 840, 495, 26, 16, 17, 85,
+ 87, 20, 109, 0, 61, 393, 367, 368, 37, 38,
+ 25, 87, 82, 87, 76, 85, 85, 25, 85, 651,
+ 85, 25, 109, 436, 148, 104, 105, 388, 691, 390,
+ 56, 85, 13, 109, 141, 109, 424, 61, 85, 702,
+ 385, 65, 25, 59, 60, 25, 295, 195, 393, 106,
+ 198, 199, 114, 414, 140, 113, 107, 109, 25, 109,
+ 634, 698, 107, 637, 2, 13, 4, 141, 147, 706,
+ 139, 140, 918, 140, 815, 140, 437, 651, 16, 17,
+ 104, 105, 20, 52, 253, 139, 140, 56, 146, 141,
+ 148, 141, 144, 140, 144, 197, 148, 141, 148, 448,
+ 13, 137, 27, 141, 877, 143, 13, 137, 222, 873,
+ 224, 49, 50, 448, 216, 231, 218, 219, 234, 253,
+ 222, 13, 224, 755, 62, 13, 141, 229, 143, 716,
+ 250, 624, 625, 141, 875, 237, 26, 141, 216, 222,
+ 218, 219, 555, 81, 82, 293, 237, 85, 293, 825,
+ 298, 253, 293, 298, 567, 862, 239, 298, 141, 659,
+ 829, 141, 296, 566, 472, 146, 28, 148, 909, 838,
+ 284, 285, 286, 287, 141, 289, 290, 796, 334, 37,
+ 38, 283, 284, 285, 286, 287, 288, 289, 290, 147,
+ 334, 293, 296, 295, 296, 556, 298, 216, 146, 218,
+ 148, 147, 85, 283, 295, 349, 141, 568, 288, 59,
+ 60, 327, 85, 148, 284, 285, 286, 287, 332, 333,
+ 85, 146, 571, 148, 326, 325, 328, 864, 373, 374,
+ 332, 333, 346, 146, 862, 148, 384, 385, 731, 146,
+ 733, 148, 68, 109, 346, 393, 141, 137, 326, 141,
+ 85, 825, 85, 143, 146, 143, 148, 140, 146, 197,
+ 148, 26, 332, 333, 838, 434, 840, 140, 687, 906,
+ 26, 373, 374, 421, 390, 140, 424, 109, 216, 385,
+ 218, 219, 945, 85, 222, 85, 224, 389, 388, 99,
+ 148, 229, 87, 119, 120, 121, 408, 614, 414, 237,
+ 434, 593, 651, 408, 676, 140, 139, 140, 408, 411,
+ 143, 389, 395, 413, 109, 421, 399, 141, 85, 402,
+ 85, 437, 815, 816, 148, 143, 495, 14, 15, 85,
+ 148, 85, 434, 416, 436, 435, 419, 408, 140, 139,
+ 140, 489, 87, 85, 918, 283, 284, 285, 286, 287,
+ 288, 289, 290, 87, 87, 293, 705, 295, 436, 85,
+ 298, 495, 141, 52, 109, 54, 55, 56, 57, 85,
+ 705, 143, 137, 140, 139, 140, 109, 87, 143, 85,
+ 873, 137, 875, 139, 140, 139, 140, 143, 326, 56,
+ 328, 26, 54, 495, 332, 333, 141, 517, 140, 109,
+ 89, 63, 64, 551, 548, 549, 95, 96, 346, 85,
+ 551, 494, 109, 139, 140, 535, 909, 533, 562, 87,
+ 15, 552, 17, 139, 140, 541, 26, 116, 88, 85,
+ 119, 850, 665, 139, 140, 373, 374, 856, 87, 672,
+ 556, 109, 590, 545, 87, 547, 615, 87, 577, 578,
+ 85, 389, 568, 555, 554, 85, 570, 146, 87, 141,
+ 109, 577, 578, 139, 140, 567, 566, 569, 570, 109,
+ 57, 58, 85, 411, 622, 587, 596, 555, 141, 143,
+ 109, 615, 587, 139, 140, 85, 137, 587, 533, 567,
+ 659, 605, 141, 609, 610, 143, 541, 637, 436, 619,
+ 640, 141, 137, 605, 139, 140, 143, 85, 656, 139,
+ 140, 651, 141, 615, 68, 928, 587, 662, 144, 146,
+ 869, 148, 145, 668, 669, 659, 139, 140, 676, 631,
+ 632, 87, 577, 578, 109, 676, 138, 137, 56, 139,
+ 140, 643, 141, 143, 52, 628, 54, 55, 56, 57,
+ 652, 695, 68, 109, 708, 686, 61, 659, 106, 106,
+ 662, 139, 140, 707, 68, 141, 668, 669, 929, 17,
+ 56, 691, 703, 52, 146, 54, 55, 56, 57, 25,
+ 694, 94, 702, 697, 144, 141, 52, 68, 54, 55,
+ 56, 57, 694, 138, 109, 697, 698, 141, 141, 104,
+ 105, 106, 83, 84, 706, 141, 141, 545, 708, 547,
+ 52, 713, 714, 141, 52, 763, 147, 555, 141, 141,
+ 61, 704, 141, 89, 694, 10, 13, 697, 773, 567,
+ 96, 569, 570, 141, 61, 116, 117, 118, 119, 120,
+ 121, 724, 8, 138, 141, 793, 146, 730, 141, 2,
+ 116, 4, 796, 736, 798, 111, 787, 145, 789, 15,
+ 68, 141, 141, 104, 105, 106, 10, 605, 799, 138,
+ 141, 773, 786, 804, 141, 83, 84, 104, 105, 106,
+ 141, 783, 61, 141, 786, 825, 68, 827, 790, 791,
+ 109, 831, 794, 631, 632, 138, 49, 114, 88, 10,
+ 840, 835, 842, 51, 52, 643, 141, 141, 810, 117,
+ 118, 119, 120, 121, 652, 849, 786, 141, 16, 17,
+ 803, 141, 20, 9, 662, 104, 105, 106, 859, 860,
+ 668, 669, 10, 835, 138, 117, 118, 119, 120, 121,
+ 52, 141, 54, 55, 56, 57, 141, 849, 46, 47,
+ 114, 853, 141, 51, 52, 138, 694, 141, 86, 697,
+ 698, 141, 864, 56, 62, 63, 141, 141, 706, 141,
+ 143, 56, 912, 143, 905, 713, 714, 89, 918, 141,
+ 920, 88, 931, 923, 624, 877, 91, 52, 930, 54,
+ 55, 56, 57, 94, 896, 52, 898, 54, 55, 56,
+ 57, 932, 904, 934, 906, 89, 52, 838, 54, 55,
+ 56, 57, 634, 929, 954, 65, 869, 917, -1, 54,
+ 55, -1, 57, -1, 89, 945, 928, 927, 63, 64,
+ 95, 96, 89, -1, -1, 773, -1, 52, 95, 54,
+ 55, 56, 57, 89, 197, 783, -1, -1, 786, 95,
+ 928, 116, 790, 791, 119, -1, 794, -1, -1, 207,
+ -1, -1, -1, -1, 212, 40, 41, 42, 43, 44,
+ -1, 219, 810, -1, -1, -1, 229, -1, 2, -1,
+ -1, -1, -1, -1, 237, 52, -1, 54, 55, 56,
+ 57, -1, -1, -1, -1, -1, 0, 195, -1, -1,
+ 198, 199, 200, -1, 8, 9, 10, -1, -1, 13,
+ 14, 15, -1, 17, -1, 853, -1, -1, 216, -1,
+ 218, 219, 89, 27, -1, 49, 864, -1, 95, 96,
+ 283, -1, -1, 37, 38, 288, 40, 41, 42, 43,
+ 44, -1, 295, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, 119, -1, -1, -1, -1, -1, 896, -1,
+ 898, -1, -1, -1, -1, -1, 904, -1, 906, -1,
+ -1, -1, -1, -1, -1, 328, 143, -1, 326, -1,
+ -1, 85, -1, -1, -1, -1, -1, -1, -1, -1,
+ 928, -1, -1, -1, -1, 293, -1, -1, -1, -1,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, -1, 326, -1,
+ -1, -1, -1, -1, 138, -1, 140, -1, -1, 143,
+ 144, 389, 146, -1, 148, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 411, -1,
+ 52, -1, 54, 55, 56, 57, -1, -1, -1, -1,
+ -1, -1, -1, 197, -1, 373, 374, 52, -1, 54,
+ 55, 56, 57, 68, -1, 383, 384, 385, 436, -1,
+ -1, 389, -1, 391, 392, 393, -1, 89, 83, 84,
+ -1, -1, -1, 95, 96, 229, 454, -1, 456, -1,
+ 458, -1, 410, 237, 89, -1, -1, 415, -1, -1,
+ 95, 96, -1, 421, 116, -1, 424, 119, -1, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, 436, -1,
+ 488, 116, -1, -1, 119, -1, -1, -1, -1, -1,
+ -1, 143, -1, 2, -1, 4, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 295, -1, -1, -1, -1, -1, -1, -1, 477,
+ 478, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 489, 545, 541, 547, 543, -1, -1, -1, -1,
+ 49, -1, -1, -1, 53, -1, -1, 555, -1, -1,
+ -1, -1, -1, -1, -1, -1, 569, -1, -1, 567,
+ -1, -1, -1, -1, -1, 74, -1, -1, -1, 577,
+ 578, 579, 580, -1, -1, -1, -1, 86, 87, 88,
+ 89, -1, -1, -1, -1, 593, -1, -1, -1, -1,
+ -1, -1, -1, 551, -1, -1, -1, 555, -1, -1,
+ -1, -1, 610, -1, -1, -1, -1, -1, -1, 567,
+ -1, 2, -1, 4, -1, -1, -1, -1, 631, 632,
+ -1, -1, 630, -1, -1, -1, -1, 411, -1, -1,
+ 643, -1, 590, -1, -1, -1, -1, -1, -1, 652,
+ -1, -1, -1, 651, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 456, -1, 458, 49, -1,
+ -1, -1, 53, -1, 622, -1, -1, -1, 676, 677,
+ -1, 679, -1, 681, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 74, -1, 698, -1, -1, 197, -1,
+ -1, -1, -1, 706, -1, 86, 87, 88, 656, -1,
+ 713, 714, 660, -1, 662, 663, -1, -1, 716, -1,
+ 668, 669, -1, -1, -1, -1, -1, -1, 676, -1,
+ 229, -1, -1, -1, -1, -1, -1, -1, 237, -1,
+ -1, -1, -1, 741, 742, -1, 744, -1, 746, 747,
+ -1, -1, -1, -1, 253, -1, -1, 755, -1, 757,
+ -1, 759, 760, -1, -1, -1, -1, 715, -1, -1,
+ -1, 545, 720, 547, 722, 723, -1, -1, -1, -1,
+ 783, -1, -1, 781, 283, -1, 784, 790, 791, 288,
+ -1, 794, 2, -1, 4, -1, 295, 296, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 810, -1, -1,
+ -1, -1, -1, -1, -1, 763, 197, -1, -1, 767,
+ -1, -1, -1, -1, -1, 773, -1, -1, -1, 328,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 49,
+ -1, -1, -1, -1, -1, 793, -1, -1, 229, -1,
+ 853, -1, -1, -1, -1, -1, 237, 631, 632, -1,
+ -1, 864, -1, 811, 862, -1, -1, -1, -1, 643,
+ -1, -1, 253, -1, -1, -1, 86, -1, 652, -1,
+ 878, 879, 880, 881, -1, -1, -1, 885, 886, 887,
+ -1, 889, 890, 896, -1, 898, -1, -1, -1, -1,
+ -1, 904, 283, 906, -1, -1, -1, 288, -1, -1,
+ -1, -1, 411, -1, 295, 296, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 928, -1, 930, 931, -1, 434, -1, -1, 936, 713,
+ 714, 939, 940, 941, 942, -1, -1, 328, -1, -1,
+ 741, 742, -1, 744, -1, 746, 747, -1, -1, -1,
+ -1, 959, -1, -1, -1, -1, 757, -1, 759, 760,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 928, -1, -1, -1, -1, -1, -1, 197, -1, -1,
+ -1, -1, -1, -1, -1, -1, 495, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 783,
+ -1, -1, -1, -1, -1, -1, 790, 791, -1, 229,
+ 794, -1, -1, -1, -1, -1, -1, 237, -1, -1,
+ 411, -1, -1, -1, -1, -1, 810, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 545, -1, 547, -1,
+ -1, -1, -1, 434, -1, -1, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, -1,
+ 569, 83, 84, 283, -1, -1, -1, -1, 288, 853,
+ -1, -1, -1, -1, -1, 295, -1, 878, 879, 880,
+ 881, -1, -1, -1, 885, 886, 887, -1, 889, 890,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ -1, -1, -1, -1, 495, -1, 615, -1, 328, -1,
+ -1, -1, 896, -1, 898, -1, -1, -1, -1, -1,
+ 904, -1, 631, 632, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 643, 936, -1, -1, 939, 940,
+ 941, 942, -1, 652, -1, -1, -1, -1, -1, -1,
+ 659, -1, -1, -1, 545, -1, 547, -1, 959, -1,
+ -1, -1, -1, -1, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, -1, 569, 83,
+ 84, -1, -1, -1, -1, -1, -1, -1, -1, 698,
+ -1, 411, -1, -1, -1, -1, -1, 706, -1, -1,
+ -1, -1, -1, -1, 713, 714, 110, -1, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, -1, -1,
+ -1, -1, -1, -1, 615, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 631, 632, -1, -1, 148, -1, -1, -1, -1, -1,
+ -1, -1, 643, 644, -1, -1, -1, -1, -1, -1,
+ -1, 652, -1, -1, -1, -1, -1, -1, 659, -1,
+ -1, -1, -1, -1, 783, -1, -1, -1, -1, -1,
+ -1, 790, 791, -1, -1, 794, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 810, -1, -1, -1, -1, -1, 698, -1, -1,
+ -1, -1, -1, -1, -1, 706, -1, -1, -1, -1,
+ -1, -1, 713, 714, -1, 545, 835, 547, -1, -1,
+ -1, -1, 68, 69, 70, 71, 72, 73, 74, 75,
+ 849, 77, 78, -1, 853, -1, -1, 83, 84, 569,
+ -1, -1, -1, -1, -1, 864, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, -1, 896, -1, 898,
+ -1, -1, 783, -1, -1, 904, -1, 906, -1, 790,
+ 791, -1, -1, 794, -1, -1, -1, -1, -1, -1,
+ -1, 631, 632, -1, -1, -1, -1, -1, -1, 810,
+ -1, -1, -1, 643, -1, -1, -1, -1, -1, -1,
+ -1, -1, 652, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 835, -1, -1, -1, -1, -1,
+ -1, 68, 69, 70, 71, 72, 73, 74, 849, -1,
+ 77, 78, 853, -1, -1, -1, 83, 84, -1, -1,
+ -1, -1, -1, 864, -1, -1, -1, -1, 698, -1,
+ -1, -1, -1, -1, -1, -1, 706, -1, -1, -1,
+ -1, -1, -1, 713, 714, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 896, -1, 898, -1, 44,
+ -1, -1, -1, 904, -1, 906, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 44, -1, -1, -1,
+ -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 783, -1, 83, 84, -1, -1, -1,
+ 790, 791, -1, -1, 794, 110, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
+ 810, -1, 110, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 0, 1, 141, 3, 4, 5,
+ 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
+ 16, -1, 18, 19, 20, 21, 22, 23, 24, 849,
+ -1, -1, -1, 853, 30, 31, 32, 33, 34, 35,
+ 36, -1, -1, 39, 864, -1, -1, -1, -1, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
+ 66, 67, -1, -1, -1, -1, 896, -1, 898, -1,
+ -1, -1, -1, -1, 904, -1, 906, -1, -1, -1,
+ 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
+ -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 122, 123, 124, 0,
+ -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
+ -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
+ 146, -1, 148, -1, -1, -1, 27, 28, 29, -1,
+ -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
+ 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, -1, -1, 83, 84, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ -1, -1, 83, 84, 85, -1, 87, 88, -1, -1,
+ -1, -1, 110, 94, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, -1, 107, -1, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
+ 141, 0, -1, 144, 145, 146, -1, 148, -1, 8,
+ 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
+ -1, -1, -1, -1, -1, -1, -1, 26, 27, 28,
+ -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
+ -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
+ -1, -1, 68, 69, 70, 71, 72, 73, 74, -1,
+ -1, 77, 78, -1, -1, -1, -1, 83, 84, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, -1, -1, 83, 84, 85, -1, -1, 88,
+ -1, -1, -1, -1, -1, 94, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, -1, -1, -1, -1,
+ -1, 110, -1, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
+ 139, 140, 141, 0, 143, 144, 145, 146, -1, 148,
+ -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
+ 17, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
+ 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, -1, -1, 83, 84, 85, -1,
+ -1, 88, -1, -1, -1, -1, -1, 94, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 138, 139, 140, 141, 0, -1, 144, 145, 146,
+ -1, 148, -1, 8, 9, 10, -1, -1, 13, 14,
+ 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
+ -1, 26, 27, 28, -1, -1, -1, -1, -1, -1,
+ -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
+ 85, -1, -1, 88, -1, -1, -1, -1, -1, 94,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 110, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 137, 138, 139, 140, 141, 0, 143, 144,
+ 145, 146, -1, 148, -1, 8, 9, 10, -1, -1,
+ 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 27, 28, -1, -1, -1, -1,
+ -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
+ 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, -1, -1,
+ 83, 84, 85, -1, -1, 88, -1, -1, -1, -1,
+ -1, 94, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 110, -1, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 138, 139, 140, 141, 0,
+ 143, 144, 145, 146, -1, 148, -1, 8, 9, 10,
+ -1, -1, -1, 14, 15, -1, 17, -1, -1, -1,
+ -1, -1, -1, -1, -1, 26, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
+ 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ -1, -1, 83, 84, 85, 0, 87, -1, -1, -1,
+ -1, -1, -1, 8, 9, 10, -1, -1, -1, 14,
+ 15, -1, 17, -1, -1, -1, -1, -1, 109, 110,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 37, 38, -1, 40, 41, 42, 43, 44,
+ -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
+ 141, -1, -1, 144, -1, 146, -1, 148, -1, -1,
+ -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
+ 85, -1, 87, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 109, 110, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 138, 139, 140, 141, -1, -1, 144,
+ -1, 146, 1, 148, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, -1, -1, 15, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 146, 1, 148,
+ 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
+ -1, 14, 15, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, 95, -1, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 122,
+ 123, 124, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 146, 1, 148, 3, 4, 5, 6,
+ 7, -1, -1, 10, 11, 12, -1, -1, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 122, 123, 124, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 146,
+ 1, 148, 3, 4, 5, 6, 7, -1, -1, 10,
+ 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
+ -1, 1, -1, 3, 4, 5, 6, 7, -1, 9,
+ 10, 11, 12, -1, -1, 146, 16, 148, 18, 19,
+ 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
+ -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
+ 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
+ 90, -1, 92, 93, -1, 95, -1, 97, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 122, 123, 124, -1, -1, -1, -1, -1,
+ -1, -1, 1, -1, 3, 4, 5, 6, 7, -1,
+ -1, -1, 11, 12, -1, -1, 146, 16, 148, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
+ -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
+ -1, -1, -1, 11, 12, 144, -1, 146, 16, 148,
+ 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
+ -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
+ -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
+ 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 122, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
+ 7, -1, -1, -1, 11, 12, 144, -1, 146, 16,
+ 148, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 122, 123, 124, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 138, -1, -1, -1, -1, -1, -1, -1, 146,
+ 1, 148, 3, 4, 5, 6, 7, -1, -1, 10,
+ 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
+ -1, 11, 12, -1, -1, 146, 16, 148, 18, 19,
+ 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
+ -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
+ 90, -1, 92, 93, -1, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 122, 123, 124, 3, 4, 5, -1, 7,
+ -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
+ 18, 19, 20, 21, 22, 23, 24, -1, 148, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
+ -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
+ -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
+ -1, 89, 90, -1, 92, 93, -1, -1, -1, 97,
+ 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 122, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
+ 7, -1, -1, -1, 11, 12, -1, -1, 146, 16,
+ 148, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
+ -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ -1, -1, 89, 90, -1, 92, 93, -1, -1, -1,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 122, 123, 124, 3, 4,
+ 5, 6, 7, -1, -1, -1, 11, 12, -1, -1,
+ -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
+ -1, 148, -1, -1, -1, 30, 31, 32, 33, 34,
+ 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, -1, 59, 60, -1, 62, 63, 64,
+ -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
+ 95, -1, 97, 98, 99, 100, 101, 102, 103, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 146, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
+ -1, -1, -1, -1, -1, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
+ 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 123, 124, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
+ -1, 142, 143, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, 26, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 122,
+ 123, 124, -1, -1, -1, -1, -1, -1, 3, 4,
+ 5, -1, 7, -1, 137, -1, 11, 12, -1, -1,
+ 143, 16, -1, 18, 19, 20, 21, 22, 23, 24,
+ -1, 26, -1, -1, -1, 30, 31, 32, 33, 34,
+ 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
+ -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, -1, 62, 63, 64,
+ -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
+ -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
+ 7, -1, 137, -1, 11, 12, -1, -1, 143, 16,
+ -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
+ -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ 87, -1, 89, 90, -1, 92, 93, -1, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, 109, -1, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, 7, 122, 123, 124, 11, 12,
+ -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, 143, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, 122,
+ 123, 124, 11, 12, -1, -1, -1, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ 143, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 143, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
+ 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, -1, 56, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
+ 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
+ 98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
+ 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
+ 98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
+ 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
+ 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
+ -1, -1, -1, 16, 142, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
+ 63, 64, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, -1, -1, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3, 4, 5, -1, 7, -1, -1, 122,
+ 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, 141, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ -1, 62, 63, 64, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, -1, -1, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3, 4, 5, 6, 7, -1,
+ -1, 122, 11, 12, -1, -1, -1, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ 141, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
+ -1, 11, 12, 122, 123, 124, 16, -1, 18, 19,
+ 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
+ -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
+ 90, -1, 92, 93, -1, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
+ 11, 12, 122, 123, 124, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
+ 12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
+ 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
+ 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
+ -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
+ 62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
+ 92, 93, -1, 95, -1, 97, 98, 99, 100, 101,
+ 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
+ 122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, -1, 96, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, 122,
+ 123, 124, 16, -1, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, -1, 62, 63,
+ 64, -1, 66, 67, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, 95, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
+ 5, -1, 7, -1, -1, -1, 11, 12, 122, 123,
+ 124, 16, -1, 18, 19, 20, 21, 22, 23, 24,
+ -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
+ 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
+ -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, -1, 62, 63, 64,
+ -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
+ -1, -1, 97, 98, 99, 100, 101, 102, 103, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
+ -1, 7, -1, -1, -1, 11, 12, 122, 123, 124,
+ 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
+ -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
+ 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
+ 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
+ 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
+ -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
+ 7, -1, -1, -1, 11, 12, 122, 123, 124, 16,
+ -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
+ -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
+ -1, -1, -1, 11, 12, 122, 123, 124, 16, -1,
+ 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
+ -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
+ -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
+ -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
+ 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
+ -1, -1, 11, 12, 122, 123, 124, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
+ -1, 11, 12, 122, 123, 124, 16, -1, 18, 19,
+ 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
+ -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
+ 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
+ 90, -1, 92, 93, -1, 95, -1, 97, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
+ 11, 12, 122, 123, 124, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, -1, -1, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
+ 12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
+ 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
+ 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
+ -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, -1, 59, 60, -1,
+ 62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
+ 92, 93, -1, -1, -1, 97, 98, 99, 100, 101,
+ 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
+ 122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, -1, -1, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, 122,
+ 123, 124, 16, -1, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, 95, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
+ -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
+ -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 83,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
+ -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, -1, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
+ -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
+ -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, -1, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
+ -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
+ -1, -1, -1, -1, -1, -1, -1, -1, 122, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
+ 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
+ -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
+ -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
+ -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
+ -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
+ -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
+ 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
+ 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
+ -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
+ 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 95, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
+ 123, 124, -1, -1, -1, -1, -1, 52, 53, -1,
+ -1, 56, -1, -1, -1, -1, -1, -1, -1, 142,
+ 143, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
+ -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
+ -1, -1, -1, -1, -1, -1, -1, 142, 143, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
+ 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
+ -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
+ -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
+ -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
+ -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
+ -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
+ 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
+ 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
+ -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
+ 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 95, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
+ 123, 124, -1, -1, -1, -1, -1, 52, 53, -1,
+ -1, 56, -1, -1, -1, -1, -1, -1, -1, 142,
+ 143, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
+ -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
+ -1, -1, -1, -1, -1, -1, -1, 142, 143, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
+ 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
+ -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
+ -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
+ -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
+ -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
+ -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
+ 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
+ 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
+ -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
+ 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 95, -1, -1, -1, -1, -1, 44, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
+ 123, 124, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, -1, -1, 83, 84, 142,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 110, -1, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121
+};
+
+
+
+static const yytype_uint16 yystos[] =
+{
+ 0, 150, 151, 0, 1, 3, 4, 5, 6, 7,
+ 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
+ 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 59, 60, 62, 63, 64, 66, 67, 86, 89,
+ 90, 92, 93, 95, 97, 98, 99, 100, 101, 102,
+ 103, 122, 123, 124, 153, 154, 155, 158, 160, 161,
+ 164, 165, 167, 168, 169, 171, 172, 182, 196, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 245, 246, 256, 257, 258, 259, 260, 261, 262, 265,
+ 273, 275, 276, 277, 278, 279, 280, 303, 314, 155,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 56, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 77, 78, 81, 82, 83, 84, 95,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 123, 124, 142, 175, 176, 177, 178, 180, 181, 273,
+ 275, 21, 22, 30, 39, 58, 86, 89, 95, 96,
+ 123, 164, 172, 182, 184, 189, 192, 194, 213, 277,
+ 279, 280, 301, 302, 189, 189, 143, 190, 191, 143,
+ 186, 190, 143, 148, 308, 54, 177, 308, 157, 137,
+ 31, 32, 182, 213, 303, 182, 56, 89, 153, 166,
+ 167, 158, 185, 194, 301, 314, 184, 300, 301, 314,
+ 46, 86, 122, 141, 171, 196, 213, 277, 280, 239,
+ 240, 54, 55, 57, 175, 268, 274, 267, 268, 268,
+ 147, 263, 147, 266, 59, 60, 160, 182, 182, 146,
+ 148, 307, 312, 313, 40, 41, 42, 43, 44, 37,
+ 38, 28, 243, 109, 141, 89, 95, 168, 109, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 83, 84, 110, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 85, 139, 140, 197, 158,
+ 159, 159, 200, 202, 159, 307, 313, 86, 165, 172,
+ 213, 229, 277, 280, 52, 56, 83, 86, 173, 174,
+ 213, 277, 280, 174, 33, 34, 35, 36, 49, 50,
+ 51, 52, 56, 143, 175, 278, 298, 85, 140, 26,
+ 137, 247, 259, 87, 87, 186, 190, 247, 141, 184,
+ 56, 184, 184, 109, 88, 141, 193, 314, 85, 139,
+ 140, 87, 87, 141, 193, 189, 308, 309, 189, 188,
+ 189, 314, 158, 309, 158, 54, 63, 64, 156, 143,
+ 183, 137, 153, 85, 140, 87, 166, 144, 309, 198,
+ 145, 141, 148, 311, 141, 311, 138, 311, 308, 56,
+ 59, 60, 168, 170, 141, 85, 139, 140, 52, 54,
+ 55, 56, 57, 89, 95, 96, 116, 119, 143, 241,
+ 284, 285, 286, 287, 288, 289, 292, 293, 294, 295,
+ 296, 61, 104, 105, 106, 269, 106, 269, 106, 65,
+ 106, 106, 264, 269, 106, 61, 106, 68, 68, 146,
+ 155, 159, 159, 159, 159, 155, 158, 158, 244, 95,
+ 160, 184, 194, 195, 166, 141, 171, 141, 160, 182,
+ 184, 195, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 52, 53,
+ 56, 180, 186, 304, 305, 188, 52, 53, 56, 180,
+ 186, 304, 152, 153, 13, 225, 312, 225, 159, 159,
+ 307, 17, 250, 56, 85, 139, 140, 25, 158, 52,
+ 56, 173, 1, 113, 281, 312, 85, 139, 140, 209,
+ 299, 210, 85, 140, 306, 52, 56, 304, 304, 249,
+ 248, 160, 182, 160, 182, 94, 162, 179, 182, 184,
+ 95, 184, 192, 301, 52, 56, 188, 52, 56, 302,
+ 309, 144, 309, 309, 177, 199, 182, 153, 138, 304,
+ 304, 182, 309, 309, 301, 141, 170, 52, 56, 188,
+ 52, 56, 109, 52, 89, 95, 230, 231, 232, 286,
+ 284, 29, 107, 242, 141, 297, 314, 141, 297, 52,
+ 141, 297, 52, 271, 270, 147, 269, 147, 182, 182,
+ 76, 114, 234, 235, 314, 184, 141, 309, 170, 141,
+ 44, 308, 87, 87, 186, 190, 308, 310, 87, 87,
+ 186, 187, 190, 314, 10, 224, 8, 252, 314, 153,
+ 13, 153, 27, 226, 312, 226, 250, 194, 224, 52,
+ 56, 188, 52, 56, 204, 207, 312, 282, 206, 52,
+ 56, 173, 188, 152, 158, 143, 283, 284, 211, 187,
+ 190, 187, 190, 234, 234, 44, 163, 177, 184, 193,
+ 87, 310, 87, 87, 158, 138, 311, 168, 310, 184,
+ 232, 141, 286, 141, 309, 146, 236, 314, 153, 153,
+ 287, 292, 294, 296, 288, 289, 294, 288, 153, 54,
+ 55, 57, 272, 280, 52, 233, 236, 288, 290, 291,
+ 294, 296, 153, 95, 184, 170, 182, 111, 160, 182,
+ 182, 162, 145, 87, 160, 182, 160, 182, 162, 184,
+ 195, 253, 314, 15, 228, 314, 14, 227, 228, 228,
+ 201, 203, 224, 141, 225, 310, 159, 312, 159, 152,
+ 310, 224, 309, 284, 152, 312, 175, 153, 153, 182,
+ 234, 87, 309, 309, 231, 141, 95, 230, 52, 237,
+ 238, 285, 309, 10, 138, 141, 297, 141, 297, 141,
+ 297, 141, 297, 297, 138, 109, 236, 114, 141, 297,
+ 141, 297, 141, 297, 10, 184, 182, 160, 182, 88,
+ 254, 314, 153, 9, 255, 314, 159, 224, 224, 153,
+ 153, 184, 153, 226, 208, 312, 224, 309, 224, 212,
+ 10, 138, 153, 141, 231, 141, 286, 141, 288, 294,
+ 288, 288, 86, 213, 114, 291, 294, 288, 290, 294,
+ 288, 86, 172, 213, 277, 280, 225, 153, 225, 224,
+ 224, 228, 250, 251, 205, 152, 283, 138, 231, 141,
+ 238, 297, 141, 297, 297, 297, 56, 85, 141, 297,
+ 141, 297, 297, 141, 297, 297, 56, 85, 139, 140,
+ 153, 153, 153, 224, 152, 231, 288, 52, 56, 288,
+ 294, 288, 288, 52, 56, 188, 52, 56, 252, 227,
+ 224, 224, 297, 297, 141, 297, 297, 297, 310, 288,
+ 297
+};
+# 4265 "parse.c"
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_params *parser)
+# 4275 "parse.c"
+{
+ if (!yyvaluep)
+ return;
+ ((void) (parser));
+
+
+
+
+ ((void) (yyoutput));
+
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+# 4299 "parse.c"
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_params *parser)
+# 4309 "parse.c"
+{
+ if (yytype < 149)
+ fprintf (yyoutput, "token %s (", yytname[yytype]);
+ else
+ fprintf (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, parser);
+ fprintf (yyoutput, ")");
+}
+# 4326 "parse.c"
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+
+
+
+
+
+
+{
+ fprintf (stderr, "Stack now");
+ for (; bottom <= top; ++bottom)
+ fprintf (stderr, " %d", *bottom);
+ fprintf (stderr, "\n");
+}
+# 4354 "parse.c"
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule, struct parser_params *parser)
+
+
+
+
+
+
+
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ fprintf (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ , parser);
+ fprintf (stderr, "\n");
+ }
+}
+# 4478 "parse.c"
+static unsigned int
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ unsigned int yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return strlen (yystr);
+
+ return __builtin_stpcpy (yyres, yystr) - yyres;
+}
+# 4525 "parse.c"
+static unsigned int
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+
+ if (! (-747 < yyn && yyn <= 10225))
+ return 0;
+ else
+ {
+ int yytype = ((unsigned int) (yychar) <= 376 ? yytranslate[yychar] : 2);
+ unsigned int yysize0 = yytnamerr (0, yytname[yytype]);
+ unsigned int yysize = yysize0;
+ unsigned int yysize1;
+ int yysize_overflow = 0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
+# 4552 "parse.c"
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+
+
+
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+
+ int yychecklim = 10225 - yyn + 1;
+ int yyxend = yychecklim < 149 ? yychecklim : 149;
+ int yycount = 1;
+
+ yyarg[0] = yytname[yytype];
+ yyfmt = __builtin_stpcpy (yyformat, yyunexpected);
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != 1)
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+ yyfmt = __builtin_stpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
+ }
+
+ yyf = yyformat;
+ yysize1 = yysize + strlen (yyf);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+
+ if (yysize_overflow)
+ return ((unsigned int) -1);
+
+ if (yyresult)
+ {
+
+
+
+ char *yyp = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+# 4635 "parse.c"
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct parser_params *parser)
+# 4645 "parse.c"
+{
+ ((void) (yyvaluep));
+ ((void) (parser));
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", yymsg); yy_symbol_print (stderr, yytype, yyvaluep, parser); fprintf (stderr, "\n"); } } while ((0));
+
+ switch (yytype)
+ {
+
+ default:
+ break;
+ }
+}
+# 4672 "parse.c"
+int ruby_yyparse (struct parser_params *parser);
+# 4700 "parse.c"
+int
+ruby_yyparse (struct parser_params *parser)
+
+
+
+
+
+
+{
+
+int yychar;
+
+
+YYSTYPE yylval;
+
+
+int yynerrs;
+
+ int yystate;
+ int yyn;
+ int yyresult;
+
+ int yyerrstatus;
+
+ int yytoken = 0;
+
+
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ unsigned int yymsg_alloc = sizeof yymsgbuf;
+# 4741 "parse.c"
+ yytype_int16 yyssa[200];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
+
+
+ YYSTYPE yyvsa[200];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+
+
+
+
+
+ unsigned int yystacksize = 200;
+
+
+
+ YYSTYPE yyval;
+
+
+
+
+ int yylen = 0;
+
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Starting parse\n"); } while ((0));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = (-2);
+
+
+
+
+
+
+ yyssp = yyss;
+ yyvsp = yyvs;
+
+ goto yysetstate;
+
+
+
+
+ yynewstate:
+
+
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+
+ unsigned int yysize = yyssp - yyss + 1;
+# 4825 "parse.c"
+ if (10000 <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (10000 < yystacksize)
+ yystacksize = 10000;
+
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) rb_parser_malloc(parser, ((yystacksize) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) + (sizeof (union yyalloc) - 1)));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ do { unsigned int yynewbytes; __builtin_memcpy (&yyptr->yyss, yyss, (yysize) * sizeof (*(yyss))); yyss = &yyptr->yyss; yynewbytes = yystacksize * sizeof (*yyss) + (sizeof (union yyalloc) - 1); yyptr += yynewbytes / sizeof (*yyptr); } while ((0));
+ do { unsigned int yynewbytes; __builtin_memcpy (&yyptr->yyvs, yyvs, (yysize) * sizeof (*(yyvs))); yyvs = &yyptr->yyvs; yynewbytes = yystacksize * sizeof (*yyvs) + (sizeof (union yyalloc) - 1); yyptr += yynewbytes / sizeof (*yyptr); } while ((0));
+
+
+ if (yyss1 != yyssa)
+ rb_parser_free(parser, yyss1);
+ }
+
+
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize); } while ((0));
+
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ goto yyabortlab;
+ }
+
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Entering state %d\n", yystate); } while ((0));
+
+ goto yybackup;
+
+
+
+
+yybackup:
+
+
+
+
+
+ yyn = yypact[yystate];
+ if (yyn == -747)
+ goto yydefault;
+
+
+
+
+ if (yychar == (-2))
+ {
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Reading a token: "); } while ((0));
+ yychar = yylex (&yylval, parser);
+ }
+
+ if (yychar <= 0)
+ {
+ yychar = yytoken = 0;
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Now at end of input.\n"); } while ((0));
+ }
+ else
+ {
+ yytoken = ((unsigned int) (yychar) <= 376 ? yytranslate[yychar] : 2);
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Next token is"); yy_symbol_print (stderr, yytoken, &yylval, parser); fprintf (stderr, "\n"); } } while ((0));
+ }
+
+
+
+ yyn += yytoken;
+ if (yyn < 0 || 10225 < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yyn == 0 || yyn == -555)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ if (yyn == 3)
+ goto yyacceptlab;
+
+
+
+ if (yyerrstatus)
+ yyerrstatus--;
+
+
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Shifting"); yy_symbol_print (stderr, yytoken, &yylval, parser); fprintf (stderr, "\n"); } } while ((0));
+
+
+ if (yychar != 0)
+ yychar = (-2);
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ goto yynewstate;
+
+
+
+
+
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+
+
+
+yyreduce:
+
+ yylen = yyr2[yyn];
+# 4955 "parse.c"
+ yyval = yyvsp[1-yylen];
+
+
+ do { if ((parser->parser_yydebug)) yy_reduce_print (yyvsp, yyn, parser); } while ((0));
+ switch (yyn)
+ {
+ case 2:
+# 763 "parse.y"
+ {
+ (parser->parser_lex_state) = EXPR_BEG;
+
+ local_push_gen(parser,(parser->parser_compile_for_eval));
+
+
+ ;}
+ break;
+
+ case 3:
+# 771 "parse.y"
+ {
+
+ if ((yyvsp[(2) - (2)].node) && !(parser->parser_compile_for_eval)) {
+
+ if (((int) (((((struct RNode*)((yyvsp[(2) - (2)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) void_expr_gen(parser, (((yyvsp[(2) - (2)].node)) = remove_begin((yyvsp[(2) - (2)].node))));
+ else {
+ NODE *node = (yyvsp[(2) - (2)].node);
+ while (node->u3.node) {
+ node = node->u3.node;
+ }
+ void_expr_gen(parser, ((node->u1.node) = remove_begin(node->u1.node)));
+ }
+ }
+ (parser->parser_eval_tree) = node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)(block_append_gen(parser,(parser->parser_eval_tree),(yyvsp[(2) - (2)].node))), (VALUE)(0));
+ local_pop_gen(parser);
+
+
+
+
+ ;}
+ break;
+
+ case 4:
+# 797 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(1) - (4)].node);
+ if ((yyvsp[(2) - (4)].node)) {
+ (yyval.node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].node)));
+ }
+ else if ((yyvsp[(3) - (4)].node)) {
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "else without rescue is useless");
+ (yyval.node) = block_append_gen(parser,(yyval.node),(yyvsp[(3) - (4)].node));
+ }
+ if ((yyvsp[(4) - (4)].node)) {
+ if ((yyval.node)) {
+ (yyval.node) = node_newnode(parser, (NODE_ENSURE), (VALUE)((yyval.node)), (VALUE)(0), (VALUE)((yyvsp[(4) - (4)].node)));
+ }
+ else {
+ (yyval.node) = block_append_gen(parser,(yyvsp[(4) - (4)].node),node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0)));
+ }
+ }
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+
+
+
+
+
+
+
+ ;}
+ break;
+
+ case 5:
+# 827 "parse.y"
+ {
+
+ void_stmts_gen(parser, (yyvsp[(1) - (2)].node));
+ fixup_nodes(&(parser->parser_deferred_nodes));
+
+
+ (yyval.node) = (yyvsp[(1) - (2)].node);
+ ;}
+ break;
+
+ case 6:
+# 838 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+
+ ;}
+ break;
+
+ case 7:
+# 847 "parse.y"
+ {
+
+ (yyval.node) = newline_node((yyvsp[(1) - (1)].node));
+
+
+
+ ;}
+ break;
+
+ case 8:
+# 855 "parse.y"
+ {
+
+ (yyval.node) = block_append_gen(parser,(yyvsp[(1) - (3)].node),newline_node((yyvsp[(3) - (3)].node)));
+
+
+
+ ;}
+ break;
+
+ case 9:
+# 863 "parse.y"
+ {
+ (yyval.node) = remove_begin((yyvsp[(2) - (2)].node));
+ ;}
+ break;
+
+ case 10:
+# 868 "parse.y"
+ {(parser->parser_lex_state) = EXPR_FNAME;;}
+ break;
+
+ case 11:
+# 869 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ALIAS), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 12:
+# 877 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_VALIAS), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 13:
+# 885 "parse.y"
+ {
+
+ char buf[3];
+
+ sprintf(buf, "$%c", (char)(yyvsp[(3) - (3)].node)->u2.argc);
+ (yyval.node) = node_newnode(parser, (NODE_VALIAS), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)((__builtin_constant_p(buf) ? __extension__ (rb_intern2(buf, strlen(buf))) : (rb_intern)(buf))), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 14:
+# 896 "parse.y"
+ {
+
+ parser_yyerror(parser, "can't make alias for the number variables");
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+
+ ;}
+ break;
+
+ case 15:
+# 906 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+
+
+
+ ;}
+ break;
+
+ case 16:
+# 914 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))), (VALUE)(0));
+ fixpos((yyval.node), (yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 17:
+# 923 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)(0), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))));
+ fixpos((yyval.node), (yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 18:
+# 932 "parse.y"
+ {
+
+ if ((yyvsp[(1) - (3)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN) {
+ (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)->u2.node), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1));
+ }
+
+
+
+ ;}
+ break;
+
+ case 19:
+# 945 "parse.y"
+ {
+
+ if ((yyvsp[(1) - (3)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN) {
+ (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)->u2.node), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1));
+ }
+
+
+
+ ;}
+ break;
+
+ case 20:
+# 958 "parse.y"
+ {
+
+ NODE *resq = node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)(remove_begin((yyvsp[(3) - (3)].node))), (VALUE)(0));
+ (yyval.node) = node_newnode(parser, (NODE_RESCUE), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))), (VALUE)(resq), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 21:
+# 967 "parse.y"
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single)) {
+ parser_yyerror(parser, "BEGIN in method");
+ }
+
+
+
+
+ ;}
+ break;
+
+ case 22:
+# 977 "parse.y"
+ {
+
+ (parser->parser_eval_tree_begin) = block_append_gen(parser,(parser->parser_eval_tree_begin),(yyvsp[(4) - (5)].node));
+
+
+
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 23:
+# 989 "parse.y"
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single)) {
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "END in method; use at_exit");
+ }
+
+ (yyval.node) = node_newnode(parser, (NODE_POSTEXE), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0))), (VALUE)(0));
+
+
+
+
+ ;}
+ break;
+
+ case 24:
+# 1001 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 25:
+# 1010 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+
+
+
+ ;}
+ break;
+
+ case 26:
+# 1020 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ if ((yyvsp[(1) - (3)].node)) {
+ ID vid = (yyvsp[(1) - (3)].node)->u1.id;
+ if ((yyvsp[(2) - (3)].id) == 331) {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
+ if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
+ (yyval.node)->u3.id = vid;
+ }
+ }
+ else if ((yyvsp[(2) - (3)].id) == 330) {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ (yyval.node)->u2.node = node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(1), (VALUE)(0))));
+ }
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+
+
+
+ ;}
+ break;
+
+ case 27:
+# 1049 "parse.y"
+ {
+
+ NODE *args;
+
+ value_expr_gen(parser, ((yyvsp[(6) - (6)].node)) = remove_begin((yyvsp[(6) - (6)].node)));
+ if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ args = arg_concat_gen(parser,(yyvsp[(6) - (6)].node),(yyvsp[(3) - (6)].node));
+ if ((yyvsp[(5) - (6)].id) == 331) {
+ (yyvsp[(5) - (6)].id) = 0;
+ }
+ else if ((yyvsp[(5) - (6)].id) == 330) {
+ (yyvsp[(5) - (6)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN1), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].id)), (VALUE)(args));
+ fixpos((yyval.node), (yyvsp[(1) - (6)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 28:
+# 1070 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 29:
+# 1087 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 30:
+# 1104 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 31:
+# 1121 "parse.y"
+ {
+
+ rb_backref_error_gen(parser,(yyvsp[(1) - (3)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+
+ ;}
+ break;
+
+ case 32:
+# 1131 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 33:
+# 1140 "parse.y"
+ {
+
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+
+
+
+ ;}
+ break;
+
+ case 34:
+# 1149 "parse.y"
+ {
+
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+
+
+
+ ;}
+ break;
+
+ case 37:
+# 1162 "parse.y"
+ {
+
+ (yyval.node) = logop_gen(parser, NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 38:
+# 1170 "parse.y"
+ {
+
+ (yyval.node) = logop_gen(parser, NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 39:
+# 1178 "parse.y"
+ {
+
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(3) - (3)].node)),'!');
+
+
+
+ ;}
+ break;
+
+ case 40:
+# 1186 "parse.y"
+ {
+
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(2) - (2)].node)),'!');
+
+
+
+ ;}
+ break;
+
+ case 42:
+# 1197 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 45:
+# 1211 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_RETURN), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 46:
+# 1219 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_BREAK), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 47:
+# 1227 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_NEXT), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 49:
+# 1238 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+
+
+
+
+ ;}
+ break;
+
+ case 50:
+# 1247 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+
+
+
+
+ ;}
+ break;
+
+ case 51:
+# 1258 "parse.y"
+ {
+
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+
+
+ ;}
+ break;
+
+ case 52:
+# 1268 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ dyna_pop_gen(parser);
+
+
+
+ ;}
+ break;
+
+ case 53:
+# 1280 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)((yyvsp[(2) - (2)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 54:
+# 1289 "parse.y"
+ {
+
+ block_dup_check_gen(parser,(yyvsp[(2) - (3)].node),(yyvsp[(3) - (3)].node));
+ (yyvsp[(3) - (3)].node)->u3.node = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (3)].id)), (VALUE)((yyvsp[(2) - (3)].node)));
+ (yyval.node) = (yyvsp[(3) - (3)].node);
+ fixpos((yyval.node), (yyvsp[(2) - (3)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 55:
+# 1301 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+
+
+
+ ;}
+ break;
+
+ case 56:
+# 1310 "parse.y"
+ {
+
+ block_dup_check_gen(parser,(yyvsp[(4) - (5)].node),(yyvsp[(5) - (5)].node));
+ (yyvsp[(5) - (5)].node)->u3.node = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].node)));
+ (yyval.node) = (yyvsp[(5) - (5)].node);
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 57:
+# 1322 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+
+
+
+ ;}
+ break;
+
+ case 58:
+# 1331 "parse.y"
+ {
+
+ block_dup_check_gen(parser,(yyvsp[(4) - (5)].node),(yyvsp[(5) - (5)].node));
+ (yyvsp[(5) - (5)].node)->u3.node = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].node)));
+ (yyval.node) = (yyvsp[(5) - (5)].node);
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 59:
+# 1343 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_SUPER), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 60:
+# 1352 "parse.y"
+ {
+
+ (yyval.node) = new_yield_gen(parser, (yyvsp[(2) - (2)].node));
+ fixpos((yyval.node), (yyvsp[(2) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 62:
+# 1364 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+
+
+
+ ;}
+ break;
+
+ case 64:
+# 1375 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(2) - (3)].node)), (VALUE)(1), (VALUE)(0))), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 65:
+# 1385 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 66:
+# 1393 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(list_append_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 67:
+# 1401 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0), (VALUE)((yyvsp[(3) - (3)].node)));
+
+
+
+ ;}
+ break;
+
+ case 68:
+# 1409 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))));
+
+
+
+ ;}
+ break;
+
+ case 69:
+# 1417 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(-1));
+
+
+
+ ;}
+ break;
+
+ case 70:
+# 1425 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0))));
+
+
+
+ ;}
+ break;
+
+ case 71:
+# 1433 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
+
+
+
+ ;}
+ break;
+
+ case 72:
+# 1441 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0))));
+
+
+
+ ;}
+ break;
+
+ case 73:
+# 1449 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(-1));
+
+
+
+ ;}
+ break;
+
+ case 74:
+# 1457 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0))));
+
+
+
+ ;}
+ break;
+
+ case 76:
+# 1468 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+
+
+
+ ;}
+ break;
+
+ case 77:
+# 1478 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(1), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 78:
+# 1486 "parse.y"
+ {
+
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(2) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 79:
+# 1496 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 80:
+# 1504 "parse.y"
+ {
+
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 81:
+# 1514 "parse.y"
+ {
+
+ (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
+
+
+
+ ;}
+ break;
+
+ case 82:
+# 1522 "parse.y"
+ {
+
+ (yyval.node) = aryset_gen(parser, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
+
+
+
+ ;}
+ break;
+
+ case 83:
+# 1530 "parse.y"
+ {
+
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+
+
+
+ ;}
+ break;
+
+ case 84:
+# 1538 "parse.y"
+ {
+
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+
+
+
+ ;}
+ break;
+
+ case 85:
+# 1546 "parse.y"
+ {
+
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+
+
+
+ ;}
+ break;
+
+ case 86:
+# 1554 "parse.y"
+ {
+
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0))));
+
+
+
+
+
+ ;}
+ break;
+
+ case 87:
+# 1566 "parse.y"
+ {
+
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0))));
+
+
+
+ ;}
+ break;
+
+ case 88:
+# 1576 "parse.y"
+ {
+
+ rb_backref_error_gen(parser,(yyvsp[(1) - (1)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+
+ ;}
+ break;
+
+ case 89:
+# 1588 "parse.y"
+ {
+
+ if (!((yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0))) (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 90:
+# 1596 "parse.y"
+ {
+
+ (yyval.node) = aryset_gen(parser, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
+
+
+
+ ;}
+ break;
+
+ case 91:
+# 1604 "parse.y"
+ {
+
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+
+
+
+ ;}
+ break;
+
+ case 92:
+# 1612 "parse.y"
+ {
+
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+
+
+
+ ;}
+ break;
+
+ case 93:
+# 1620 "parse.y"
+ {
+
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+
+
+
+ ;}
+ break;
+
+ case 94:
+# 1628 "parse.y"
+ {
+
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0))));
+
+
+
+
+
+
+ ;}
+ break;
+
+ case 95:
+# 1641 "parse.y"
+ {
+
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0))));
+
+
+
+
+
+
+ ;}
+ break;
+
+ case 96:
+# 1654 "parse.y"
+ {
+
+ rb_backref_error_gen(parser,(yyvsp[(1) - (1)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 97:
+# 1665 "parse.y"
+ {
+
+ parser_yyerror(parser, "class/module name must be CONSTANT");
+
+
+
+ ;}
+ break;
+
+ case 99:
+# 1676 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 100:
+# 1684 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)(0), (VALUE)((yyval.node)), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 101:
+# 1692 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 105:
+# 1705 "parse.y"
+ {
+
+ (parser->parser_lex_state) = EXPR_END;
+ (yyval.id) = (yyvsp[(1) - (1)].id);
+
+
+
+
+ ;}
+ break;
+
+ case 106:
+# 1715 "parse.y"
+ {
+
+ (parser->parser_lex_state) = EXPR_END;
+ (yyval.id) = (yyvsp[(1) - (1)].id);
+
+
+
+
+ ;}
+ break;
+
+ case 109:
+# 1731 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (1)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 111:
+# 1742 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_UNDEF), (VALUE)(0), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 112:
+# 1749 "parse.y"
+ {(parser->parser_lex_state) = EXPR_FNAME;;}
+ break;
+
+ case 113:
+# 1750 "parse.y"
+ {
+
+ (yyval.node) = block_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_UNDEF), (VALUE)(0), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0)));
+
+
+
+ ;}
+ break;
+
+ case 114:
+# 1759 "parse.y"
+ { (yyval.id) = '|'; ;}
+ break;
+
+ case 115:
+# 1760 "parse.y"
+ { (yyval.id) = '^'; ;}
+ break;
+
+ case 116:
+# 1761 "parse.y"
+ { (yyval.id) = '&'; ;}
+ break;
+
+ case 117:
+# 1762 "parse.y"
+ { (yyval.id) = 324; ;}
+ break;
+
+ case 118:
+# 1763 "parse.y"
+ { (yyval.id) = 325; ;}
+ break;
+
+ case 119:
+# 1764 "parse.y"
+ { (yyval.id) = 326; ;}
+ break;
+
+ case 120:
+# 1765 "parse.y"
+ { (yyval.id) = 332; ;}
+ break;
+
+ case 121:
+# 1766 "parse.y"
+ { (yyval.id) = 333; ;}
+ break;
+
+ case 122:
+# 1767 "parse.y"
+ { (yyval.id) = '>'; ;}
+ break;
+
+ case 123:
+# 1768 "parse.y"
+ { (yyval.id) = 328; ;}
+ break;
+
+ case 124:
+# 1769 "parse.y"
+ { (yyval.id) = '<'; ;}
+ break;
+
+ case 125:
+# 1770 "parse.y"
+ { (yyval.id) = 329; ;}
+ break;
+
+ case 126:
+# 1771 "parse.y"
+ { (yyval.id) = 327; ;}
+ break;
+
+ case 127:
+# 1772 "parse.y"
+ { (yyval.id) = 338; ;}
+ break;
+
+ case 128:
+# 1773 "parse.y"
+ { (yyval.id) = 339; ;}
+ break;
+
+ case 129:
+# 1774 "parse.y"
+ { (yyval.id) = '+'; ;}
+ break;
+
+ case 130:
+# 1775 "parse.y"
+ { (yyval.id) = '-'; ;}
+ break;
+
+ case 131:
+# 1776 "parse.y"
+ { (yyval.id) = '*'; ;}
+ break;
+
+ case 132:
+# 1777 "parse.y"
+ { (yyval.id) = '*'; ;}
+ break;
+
+ case 133:
+# 1778 "parse.y"
+ { (yyval.id) = '/'; ;}
+ break;
+
+ case 134:
+# 1779 "parse.y"
+ { (yyval.id) = '%'; ;}
+ break;
+
+ case 135:
+# 1780 "parse.y"
+ { (yyval.id) = 323; ;}
+ break;
+
+ case 136:
+# 1781 "parse.y"
+ { (yyval.id) = '!'; ;}
+ break;
+
+ case 137:
+# 1782 "parse.y"
+ { (yyval.id) = '~'; ;}
+ break;
+
+ case 138:
+# 1783 "parse.y"
+ { (yyval.id) = 321; ;}
+ break;
+
+ case 139:
+# 1784 "parse.y"
+ { (yyval.id) = 322; ;}
+ break;
+
+ case 140:
+# 1785 "parse.y"
+ { (yyval.id) = 336; ;}
+ break;
+
+ case 141:
+# 1786 "parse.y"
+ { (yyval.id) = 337; ;}
+ break;
+
+ case 142:
+# 1787 "parse.y"
+ { (yyval.id) = '`'; ;}
+ break;
+
+ case 184:
+# 1805 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 185:
+# 1814 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(3) - (5)].node)) = remove_begin((yyvsp[(3) - (5)].node)));
+ (yyvsp[(3) - (5)].node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))), (VALUE)(0));
+ (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node));
+
+
+
+ ;}
+ break;
+
+ case 186:
+# 1824 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ if ((yyvsp[(1) - (3)].node)) {
+ ID vid = (yyvsp[(1) - (3)].node)->u1.id;
+ if ((yyvsp[(2) - (3)].id) == 331) {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
+ if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
+ (yyval.node)->u3.id = vid;
+ }
+ }
+ else if ((yyvsp[(2) - (3)].id) == 330) {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ (yyval.node)->u2.node = node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(1), (VALUE)(0))));
+ }
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+
+
+
+ ;}
+ break;
+
+ case 187:
+# 1853 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(3) - (5)].node)) = remove_begin((yyvsp[(3) - (5)].node)));
+ (yyvsp[(3) - (5)].node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))), (VALUE)(0));
+ if ((yyvsp[(1) - (5)].node)) {
+ ID vid = (yyvsp[(1) - (5)].node)->u1.id;
+ if ((yyvsp[(2) - (5)].id) == 331) {
+ (yyvsp[(1) - (5)].node)->u2.node = (yyvsp[(3) - (5)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0));
+ if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
+ (yyval.node)->u3.id = vid;
+ }
+ }
+ else if ((yyvsp[(2) - (5)].id) == 330) {
+ (yyvsp[(1) - (5)].node)->u2.node = (yyvsp[(3) - (5)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = (yyvsp[(1) - (5)].node);
+ (yyval.node)->u2.node = node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(2) - (5)].id)), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)(1), (VALUE)(0))));
+ }
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+
+
+
+
+ ;}
+ break;
+
+ case 188:
+# 1884 "parse.y"
+ {
+
+ NODE *args;
+
+ value_expr_gen(parser, ((yyvsp[(6) - (6)].node)) = remove_begin((yyvsp[(6) - (6)].node)));
+ if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ args = arg_concat_gen(parser,(yyvsp[(6) - (6)].node),(yyvsp[(3) - (6)].node));
+ if ((yyvsp[(5) - (6)].id) == 331) {
+ (yyvsp[(5) - (6)].id) = 0;
+ }
+ else if ((yyvsp[(5) - (6)].id) == 330) {
+ (yyvsp[(5) - (6)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN1), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].id)), (VALUE)(args));
+ fixpos((yyval.node), (yyvsp[(1) - (6)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 189:
+# 1905 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 190:
+# 1922 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 191:
+# 1939 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 192:
+# 1956 "parse.y"
+ {
+
+ parser_yyerror(parser, "constant re-assignment");
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+
+
+ ;}
+ break;
+
+ case 193:
+# 1967 "parse.y"
+ {
+
+ parser_yyerror(parser, "constant re-assignment");
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+
+
+ ;}
+ break;
+
+ case 194:
+# 1978 "parse.y"
+ {
+
+ rb_backref_error_gen(parser,(yyvsp[(1) - (3)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+
+
+ ;}
+ break;
+
+ case 195:
+# 1989 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(1) - (3)].node)) = remove_begin((yyvsp[(1) - (3)].node)));
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_newnode(parser, (NODE_DOT2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0));
+ if (((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(1) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG) &&
+ ((int) (((((struct RNode*)((yyvsp[(3) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(3) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG)) {
+ (parser->parser_deferred_nodes) = list_append_gen(parser,(parser->parser_deferred_nodes),(yyval.node));
+ }
+
+
+
+ ;}
+ break;
+
+ case 196:
+# 2003 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(1) - (3)].node)) = remove_begin((yyvsp[(1) - (3)].node)));
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_newnode(parser, (NODE_DOT3), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0));
+ if (((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(1) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG) &&
+ ((int) (((((struct RNode*)((yyvsp[(3) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(3) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG)) {
+ (parser->parser_deferred_nodes) = list_append_gen(parser,(parser->parser_deferred_nodes),(yyval.node));
+ }
+
+
+
+ ;}
+ break;
+
+ case 197:
+# 2017 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'+',(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 198:
+# 2025 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'-',(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 199:
+# 2033 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'*',(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 200:
+# 2041 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'/',(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 201:
+# 2049 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'%',(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 202:
+# 2057 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),323,(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 203:
+# 2065 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)(call_bin_op_gen(parser, (yyvsp[(2) - (4)].node),323,(yyvsp[(4) - (4)].node))), (VALUE)(322), (VALUE)(0));
+
+
+
+
+ ;}
+ break;
+
+ case 204:
+# 2074 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)(call_bin_op_gen(parser, (yyvsp[(2) - (4)].node),323,(yyvsp[(4) - (4)].node))), (VALUE)(322), (VALUE)(0));
+
+
+
+
+ ;}
+ break;
+
+ case 205:
+# 2083 "parse.y"
+ {
+
+ (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),321);
+
+
+
+ ;}
+ break;
+
+ case 206:
+# 2091 "parse.y"
+ {
+
+ (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),322);
+
+
+
+ ;}
+ break;
+
+ case 207:
+# 2099 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'|',(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 208:
+# 2107 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'^',(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 209:
+# 2115 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'&',(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 210:
+# 2123 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),324,(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 211:
+# 2131 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'>',(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 212:
+# 2139 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),328,(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 213:
+# 2147 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'<',(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 214:
+# 2155 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),329,(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 215:
+# 2163 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),325,(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 216:
+# 2171 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),326,(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 217:
+# 2179 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),327,(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 218:
+# 2187 "parse.y"
+ {
+
+ (yyval.node) = match_op_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ if (((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && rb_type((VALUE)((yyvsp[(1) - (3)].node)->u1.value)) == RUBY_T_REGEXP) {
+ (yyval.node) = reg_named_capture_assign_gen(parser,(yyvsp[(1) - (3)].node)->u1.value,(yyval.node));
+ }
+
+
+
+ ;}
+ break;
+
+ case 219:
+# 2198 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),333,(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 220:
+# 2206 "parse.y"
+ {
+
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(2) - (2)].node)),'!');
+
+
+
+ ;}
+ break;
+
+ case 221:
+# 2214 "parse.y"
+ {
+
+ (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),'~');
+
+
+
+ ;}
+ break;
+
+ case 222:
+# 2222 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),338,(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 223:
+# 2230 "parse.y"
+ {
+
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),339,(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 224:
+# 2238 "parse.y"
+ {
+
+ (yyval.node) = logop_gen(parser, NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 225:
+# 2246 "parse.y"
+ {
+
+ (yyval.node) = logop_gen(parser, NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 226:
+# 2253 "parse.y"
+ {(parser->parser_in_defined) = 1;;}
+ break;
+
+ case 227:
+# 2254 "parse.y"
+ {
+
+ (parser->parser_in_defined) = 0;
+ (yyval.node) = node_newnode(parser, (NODE_DEFINED), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0), (VALUE)(0));
+
+
+
+
+ ;}
+ break;
+
+ case 228:
+# 2264 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(1) - (6)].node)) = remove_begin((yyvsp[(1) - (6)].node)));
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(1) - (6)].node))), (VALUE)((yyvsp[(3) - (6)].node)), (VALUE)((yyvsp[(6) - (6)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (6)].node));
+
+
+
+ ;}
+ break;
+
+ case 229:
+# 2274 "parse.y"
+ {
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ ;}
+ break;
+
+ case 230:
+# 2280 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 232:
+# 2293 "parse.y"
+ {
+ (yyval.node) = (yyvsp[(1) - (2)].node);
+ ;}
+ break;
+
+ case 233:
+# 2297 "parse.y"
+ {
+
+ (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0), (VALUE)(0)));
+
+
+
+ ;}
+ break;
+
+ case 234:
+# 2305 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 235:
+# 2315 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+
+
+
+ ;}
+ break;
+
+ case 240:
+# 2333 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 241:
+# 2341 "parse.y"
+ {
+
+ (yyval.node) = arg_blk_pass((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 242:
+# 2349 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
+ (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(2) - (2)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 243:
+# 2359 "parse.y"
+ {
+
+ (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0), (VALUE)(0)));
+ (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(4) - (4)].node));
+
+
+
+ ;}
+ break;
+
+ case 245:
+# 2376 "parse.y"
+ {
+ (yyval.num) = (parser->parser_cmdarg_stack);
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((1)&1));
+ ;}
+ break;
+
+ case 246:
+# 2381 "parse.y"
+ {
+
+ (parser->parser_cmdarg_stack) = (yyvsp[(1) - (2)].num);
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+
+ case 247:
+# 2389 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_BLOCK_PASS), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 248:
+# 2399 "parse.y"
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+
+ case 249:
+# 2403 "parse.y"
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+
+ case 250:
+# 2407 "parse.y"
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+
+ case 251:
+# 2413 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 252:
+# 2421 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_SPLAT), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 253:
+# 2429 "parse.y"
+ {
+
+ NODE *n1;
+ if ((n1 = splat_array((yyvsp[(1) - (3)].node))) != 0) {
+ (yyval.node) = list_append_gen(parser,n1,(yyvsp[(3) - (3)].node));
+ }
+ else {
+ (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+ }
+
+
+
+ ;}
+ break;
+
+ case 254:
+# 2443 "parse.y"
+ {
+
+ NODE *n1;
+ if ((((int) (((((struct RNode*)((yyvsp[(4) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) && (n1 = splat_array((yyvsp[(1) - (4)].node))) != 0) {
+ (yyval.node) = list_concat_gen(parser,n1,(yyvsp[(4) - (4)].node));
+ }
+ else {
+ (yyval.node) = arg_concat_gen(parser,(yyvsp[(1) - (4)].node),(yyvsp[(4) - (4)].node));
+ }
+
+
+
+ ;}
+ break;
+
+ case 255:
+# 2459 "parse.y"
+ {
+
+ NODE *n1;
+ if ((n1 = splat_array((yyvsp[(1) - (3)].node))) != 0) {
+ (yyval.node) = list_append_gen(parser,n1,(yyvsp[(3) - (3)].node));
+ }
+ else {
+ (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+ }
+
+
+
+ ;}
+ break;
+
+ case 256:
+# 2473 "parse.y"
+ {
+
+ NODE *n1;
+ if (((int) (((((struct RNode*)((yyvsp[(4) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY &&
+ (n1 = splat_array((yyvsp[(1) - (4)].node))) != 0) {
+ (yyval.node) = list_concat_gen(parser,n1,(yyvsp[(4) - (4)].node));
+ }
+ else {
+ (yyval.node) = arg_concat_gen(parser,(yyvsp[(1) - (4)].node),(yyvsp[(4) - (4)].node));
+ }
+
+
+
+ ;}
+ break;
+
+ case 257:
+# 2488 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_SPLAT), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 266:
+# 2506 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 267:
+# 2514 "parse.y"
+ {
+
+ (yyval.num) = (parser->parser_ruby_sourceline);
+
+
+ ;}
+ break;
+
+ case 268:
+# 2522 "parse.y"
+ {
+
+ if ((yyvsp[(3) - (4)].node) == ((void *)0)) {
+ (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ if (((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_RESCUE ||
+ ((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ENSURE)
+ ((struct RNode*)((yyvsp[(3) - (4)].node)))->flags=((((struct RNode*)((yyvsp[(3) - (4)].node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (4)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0));
+ }
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (4)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+
+
+
+ ;}
+ break;
+
+ case 269:
+# 2538 "parse.y"
+ {(parser->parser_lex_state) = EXPR_ENDARG;;}
+ break;
+
+ case 270:
+# 2539 "parse.y"
+ {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "(...) interpreted as grouped expression");
+
+ (yyval.node) = (yyvsp[(2) - (4)].node);
+
+
+
+ ;}
+ break;
+
+ case 271:
+# 2548 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+
+
+
+ ;}
+ break;
+
+ case 272:
+# 2556 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 273:
+# 2564 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 274:
+# 2572 "parse.y"
+ {
+
+ if ((yyvsp[(2) - (3)].node) == 0) {
+ (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ }
+
+
+
+ ;}
+ break;
+
+ case 275:
+# 2585 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(2) - (3)].node)), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 276:
+# 2593 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_RETURN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 277:
+# 2601 "parse.y"
+ {
+
+ (yyval.node) = new_yield_gen(parser, (yyvsp[(3) - (4)].node));
+
+
+
+ ;}
+ break;
+
+ case 278:
+# 2609 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_YIELD), (VALUE)(0), (VALUE)(0), (VALUE)(((VALUE)RUBY_Qfalse)));
+
+
+
+ ;}
+ break;
+
+ case 279:
+# 2617 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_YIELD), (VALUE)(0), (VALUE)(0), (VALUE)(((VALUE)RUBY_Qfalse)));
+
+
+
+ ;}
+ break;
+
+ case 280:
+# 2624 "parse.y"
+ {(parser->parser_in_defined) = 1;;}
+ break;
+
+ case 281:
+# 2625 "parse.y"
+ {
+
+ (parser->parser_in_defined) = 0;
+ (yyval.node) = node_newnode(parser, (NODE_DEFINED), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)(0), (VALUE)(0));
+
+
+
+
+ ;}
+ break;
+
+ case 282:
+# 2635 "parse.y"
+ {
+
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(3) - (4)].node)),'!');
+
+
+
+ ;}
+ break;
+
+ case 283:
+# 2643 "parse.y"
+ {
+
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0))),'!');
+
+
+
+ ;}
+ break;
+
+ case 284:
+# 2651 "parse.y"
+ {
+
+ (yyvsp[(2) - (2)].node)->u3.node = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)(0));
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ fixpos((yyvsp[(2) - (2)].node)->u3.node, (yyvsp[(2) - (2)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 286:
+# 2663 "parse.y"
+ {
+
+ block_dup_check_gen(parser,(yyvsp[(1) - (2)].node)->u3.node,(yyvsp[(2) - (2)].node));
+ (yyvsp[(2) - (2)].node)->u3.node = (yyvsp[(1) - (2)].node);
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ fixpos((yyval.node), (yyvsp[(1) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 287:
+# 2674 "parse.y"
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+
+ case 288:
+# 2681 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(2) - (6)].node))), (VALUE)((yyvsp[(4) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (6)].node));
+
+
+
+ ;}
+ break;
+
+ case 289:
+# 2693 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(2) - (6)].node))), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)((yyvsp[(4) - (6)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (6)].node));
+
+
+
+ ;}
+ break;
+
+ case 290:
+# 2701 "parse.y"
+ {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
+ break;
+
+ case 291:
+# 2701 "parse.y"
+ {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
+ break;
+
+ case 292:
+# 2704 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (7)].node))), (VALUE)((yyvsp[(6) - (7)].node)), (VALUE)(1));
+ fixpos((yyval.node), (yyvsp[(3) - (7)].node));
+
+
+
+ ;}
+ break;
+
+ case 293:
+# 2712 "parse.y"
+ {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
+ break;
+
+ case 294:
+# 2712 "parse.y"
+ {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
+ break;
+
+ case 295:
+# 2715 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (7)].node))), (VALUE)((yyvsp[(6) - (7)].node)), (VALUE)(1));
+ fixpos((yyval.node), (yyvsp[(3) - (7)].node));
+
+
+
+ ;}
+ break;
+
+ case 296:
+# 2726 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CASE), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)(0));
+ fixpos((yyval.node), (yyvsp[(2) - (5)].node));
+
+
+
+ ;}
+ break;
+
+ case 297:
+# 2735 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CASE), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 298:
+# 2743 "parse.y"
+ {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
+ break;
+
+ case 299:
+# 2745 "parse.y"
+ {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
+ break;
+
+ case 300:
+# 2748 "parse.y"
+ {
+# 2759 "parse.y"
+ ID id = internal_id_gen(parser);
+ ID *tbl = (ID*)ruby_xmalloc2((2),sizeof(ID));
+ NODE *m = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ NODE *args, *scope;
+
+ if (((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_MASGN) {
+
+
+
+
+ NODE *one = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(1))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
+ NODE *zero = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
+ m->u3.node = block_append_gen(parser,node_newnode(parser, (NODE_IF), (VALUE)(node_newnode(parser, (NODE_AND), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))), (VALUE)((__builtin_constant_p("length") ? __extension__ (rb_intern2("length", strlen("length"))) : (rb_intern)("length"))), (VALUE)(0))), (VALUE)((__builtin_constant_p("==") ? __extension__ (rb_intern2("==", strlen("=="))) : (rb_intern)("=="))), (VALUE)(one))), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))), (VALUE)((__builtin_constant_p("[]") ? __extension__ (rb_intern2("[]", strlen("[]"))) : (rb_intern)("[]"))), (VALUE)(zero))), (VALUE)((__builtin_constant_p("kind_of?") ? __extension__ (rb_intern2("kind_of?", strlen("kind_of?"))) : (rb_intern)("kind_of?"))), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(rb_cArray), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0))))), (VALUE)(0))), (VALUE)(node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))), (VALUE)((__builtin_constant_p("[]") ? __extension__ (rb_intern2("[]", strlen("[]"))) : (rb_intern)("[]"))), (VALUE)(zero))), (VALUE)(0))), (VALUE)(0)),node_assign_gen(parser, (yyvsp[(2) - (9)].node), node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))));
+# 2784 "parse.y"
+ args = new_args_gen(parser, m,0,id,0,0);
+ }
+ else {
+ if (((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LASGN ||
+ ((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DASGN ||
+ ((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DASGN_CURR) {
+ (yyvsp[(2) - (9)].node)->u2.node = node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ m->u2.argc = 1;
+ m->u3.node = (yyvsp[(2) - (9)].node);
+ args = new_args_gen(parser, m,0,0,0,0);
+ }
+ else {
+ m->u3.node = node_assign_gen(parser, node_newnode(parser, (NODE_MASGN), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(2) - (9)].node)), (VALUE)(1), (VALUE)(0))), (VALUE)(0), (VALUE)(0)), node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0)));
+ args = new_args_gen(parser, m,0,id,0,0);
+ }
+ }
+ scope = node_newnode(parser, (NODE_SCOPE), (VALUE)(tbl), (VALUE)((yyvsp[(8) - (9)].node)), (VALUE)(args));
+ tbl[0] = 1; tbl[1] = id;
+ (yyval.node) = node_newnode(parser, (NODE_FOR), (VALUE)(0), (VALUE)(scope), (VALUE)((yyvsp[(5) - (9)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (9)].node));
+
+
+
+ ;}
+ break;
+
+ case 301:
+# 2809 "parse.y"
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "class definition in method body");
+
+ local_push_gen(parser,0);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+
+
+ ;}
+ break;
+
+ case 302:
+# 2820 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CLASS), (VALUE)((yyvsp[(2) - (6)].node)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)(0))), (VALUE)(((yyvsp[(3) - (6)].node))));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(4) - (6)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ local_pop_gen(parser);
+
+
+
+ ;}
+ break;
+
+ case 303:
+# 2830 "parse.y"
+ {
+ (yyval.num) = (parser->parser_in_def);
+ (parser->parser_in_def) = 0;
+ ;}
+ break;
+
+ case 304:
+# 2835 "parse.y"
+ {
+ (yyval.num) = (parser->parser_in_single);
+ (parser->parser_in_single) = 0;
+
+ local_push_gen(parser,0);
+
+
+ ;}
+ break;
+
+ case 305:
+# 2845 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_SCLASS), (VALUE)((yyvsp[(3) - (8)].node)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(7) - (8)].node)), (VALUE)(0))), (VALUE)(0));
+ fixpos((yyval.node), (yyvsp[(3) - (8)].node));
+ local_pop_gen(parser);
+
+
+
+ (parser->parser_in_def) = (yyvsp[(4) - (8)].num);
+ (parser->parser_in_single) = (yyvsp[(6) - (8)].num);
+ ;}
+ break;
+
+ case 306:
+# 2857 "parse.y"
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "module definition in method body");
+
+ local_push_gen(parser,0);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+
+
+ ;}
+ break;
+
+ case 307:
+# 2868 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MODULE), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)(0))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(3) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ local_pop_gen(parser);
+
+
+
+ ;}
+ break;
+
+ case 308:
+# 2878 "parse.y"
+ {
+ (yyval.id) = (parser->parser_cur_mid);
+ (parser->parser_cur_mid) = (yyvsp[(2) - (2)].id);
+ (parser->parser_in_def)++;
+
+ local_push_gen(parser,0);
+
+
+ ;}
+ break;
+
+ case 309:
+# 2890 "parse.y"
+ {
+
+ NODE *body = remove_begin((yyvsp[(5) - (6)].node));
+ reduce_nodes_gen(parser,&body);
+ (yyval.node) = node_newnode(parser, (NODE_DEFN), (VALUE)(0), (VALUE)((yyvsp[(2) - (6)].id)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)(body), (VALUE)((yyvsp[(4) - (6)].node)))));
+ fixpos((yyval.node), (yyvsp[(4) - (6)].node));
+ fixpos((yyval.node)->u3.node, (yyvsp[(4) - (6)].node));
+ local_pop_gen(parser);
+
+
+
+ (parser->parser_in_def)--;
+ (parser->parser_cur_mid) = (yyvsp[(3) - (6)].id);
+ ;}
+ break;
+
+ case 310:
+# 2904 "parse.y"
+ {(parser->parser_lex_state) = EXPR_FNAME;;}
+ break;
+
+ case 311:
+# 2905 "parse.y"
+ {
+ (parser->parser_in_single)++;
+ (parser->parser_lex_state) = EXPR_END;
+
+ local_push_gen(parser,0);
+
+
+ ;}
+ break;
+
+ case 312:
+# 2916 "parse.y"
+ {
+
+ NODE *body = remove_begin((yyvsp[(8) - (9)].node));
+ reduce_nodes_gen(parser,&body);
+ (yyval.node) = node_newnode(parser, (NODE_DEFS), (VALUE)((yyvsp[(2) - (9)].node)), (VALUE)((yyvsp[(5) - (9)].id)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)(body), (VALUE)((yyvsp[(7) - (9)].node)))));
+ fixpos((yyval.node), (yyvsp[(2) - (9)].node));
+ fixpos((yyval.node)->u3.node, (yyvsp[(2) - (9)].node));
+ local_pop_gen(parser);
+
+
+
+ (parser->parser_in_single)--;
+ ;}
+ break;
+
+ case 313:
+# 2930 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_BREAK), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 314:
+# 2938 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_NEXT), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 315:
+# 2946 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_REDO), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 316:
+# 2954 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_RETRY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 317:
+# 2964 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 318:
+# 2976 "parse.y"
+ {
+
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "begin");
+
+ ;}
+ break;
+
+ case 319:
+# 2983 "parse.y"
+ {
+
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "if");
+
+ ;}
+ break;
+
+ case 320:
+# 2990 "parse.y"
+ {
+
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "unless");
+
+ ;}
+ break;
+
+ case 321:
+# 2997 "parse.y"
+ {
+
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "while");
+
+ ;}
+ break;
+
+ case 322:
+# 3004 "parse.y"
+ {
+
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "until");
+
+ ;}
+ break;
+
+ case 323:
+# 3011 "parse.y"
+ {
+
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "case");
+
+ ;}
+ break;
+
+ case 324:
+# 3018 "parse.y"
+ {
+
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "for");
+
+ ;}
+ break;
+
+ case 325:
+# 3025 "parse.y"
+ {
+
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "class");
+
+ ;}
+ break;
+
+ case 326:
+# 3032 "parse.y"
+ {
+
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "module");
+
+ ;}
+ break;
+
+ case 327:
+# 3039 "parse.y"
+ {
+
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "def");
+
+ ;}
+ break;
+
+ case 328:
+# 3046 "parse.y"
+ {
+
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_pop(parser, "end");
+
+ ;}
+ break;
+
+ case 335:
+# 3077 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(2) - (5)].node))), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (5)].node));
+
+
+
+ ;}
+ break;
+
+ case 337:
+# 3089 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+
+
+
+ ;}
+ break;
+
+ case 340:
+# 3103 "parse.y"
+ {
+
+ (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
+
+
+
+ ;}
+ break;
+
+ case 341:
+# 3111 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+
+
+
+ ;}
+ break;
+
+ case 342:
+# 3121 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 343:
+# 3129 "parse.y"
+ {
+
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 344:
+# 3139 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 345:
+# 3147 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(4) - (4)].id), 0)));
+
+
+
+ ;}
+ break;
+
+ case 346:
+# 3155 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(assignable_gen(parser, (yyvsp[(4) - (6)].id), 0)), (VALUE)((yyvsp[(6) - (6)].node)), (VALUE)(0))));
+
+
+
+ ;}
+ break;
+
+ case 347:
+# 3163 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0), (VALUE)(-1));
+
+
+
+ ;}
+ break;
+
+ case 348:
+# 3171 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))));
+
+
+
+ ;}
+ break;
+
+ case 349:
+# 3179 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(2) - (2)].id), 0)));
+
+
+
+ ;}
+ break;
+
+ case 350:
+# 3187 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(assignable_gen(parser, (yyvsp[(2) - (4)].id), 0)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0))));
+
+
+
+
+
+
+ ;}
+ break;
+
+ case 351:
+# 3198 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(-1));
+
+
+
+ ;}
+ break;
+
+ case 352:
+# 3206 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0))));
+
+
+
+ ;}
+ break;
+
+ case 353:
+# 3216 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].id),0,(yyvsp[(6) - (6)].id));
+
+
+
+ ;}
+ break;
+
+ case 354:
+# 3224 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (8)].node),(yyvsp[(3) - (8)].node),(yyvsp[(5) - (8)].id),(yyvsp[(7) - (8)].node),(yyvsp[(8) - (8)].id));
+
+
+
+ ;}
+ break;
+
+ case 355:
+# 3232 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node),0,0,(yyvsp[(4) - (4)].id));
+
+
+
+ ;}
+ break;
+
+ case 356:
+# 3240 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),0,(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+
+
+
+ ;}
+ break;
+
+ case 357:
+# 3248 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
+
+
+
+ ;}
+ break;
+
+ case 358:
+# 3256 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,1,0,0);
+
+
+
+
+ ;}
+ break;
+
+ case 359:
+# 3265 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),0,(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+
+
+
+ ;}
+ break;
+
+ case 360:
+# 3273 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,0,0,(yyvsp[(2) - (2)].id));
+
+
+
+ ;}
+ break;
+
+ case 361:
+# 3281 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
+
+
+
+ ;}
+ break;
+
+ case 362:
+# 3289 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+
+
+
+ ;}
+ break;
+
+ case 363:
+# 3297 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (2)].node),0,0,(yyvsp[(2) - (2)].id));
+
+
+
+ ;}
+ break;
+
+ case 364:
+# 3305 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
+
+
+
+ ;}
+ break;
+
+ case 365:
+# 3313 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (2)].id),0,(yyvsp[(2) - (2)].id));
+
+
+
+ ;}
+ break;
+
+ case 366:
+# 3321 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (4)].id),(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
+
+
+
+ ;}
+ break;
+
+ case 367:
+# 3329 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,0,0,0,(yyvsp[(1) - (1)].id));
+
+
+
+ ;}
+ break;
+
+ case 369:
+# 3340 "parse.y"
+ {
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ ;}
+ break;
+
+ case 370:
+# 3346 "parse.y"
+ {
+
+ (yyval.node) = 0;
+
+
+
+
+ ;}
+ break;
+
+ case 371:
+# 3355 "parse.y"
+ {
+
+ (yyval.node) = 0;
+
+
+
+
+ ;}
+ break;
+
+ case 372:
+# 3364 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(2) - (4)].node);
+
+
+
+ ;}
+ break;
+
+ case 374:
+# 3376 "parse.y"
+ {
+
+ (yyval.node) = 0;
+
+
+
+ ;}
+ break;
+
+ case 377:
+# 3402 "parse.y"
+ {
+
+ new_bv_gen(parser, (yyvsp[(1) - (1)].id));
+
+
+
+ ;}
+ break;
+
+ case 378:
+# 3410 "parse.y"
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+
+ case 379:
+# 3415 "parse.y"
+ {
+
+ dyna_push_gen(parser);
+
+
+ (yyval.num) = (parser->parser_lpar_beg);
+ (parser->parser_lpar_beg) = ++(parser->parser_paren_nest);
+ ;}
+ break;
+
+ case 380:
+# 3425 "parse.y"
+ {
+ (parser->parser_lpar_beg) = (yyvsp[(1) - (3)].num);
+
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ (yyval.node)->u2.node = node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)((yyvsp[(2) - (3)].node)->u1.node));
+ dyna_pop_gen(parser);
+
+
+
+ ;}
+ break;
+
+ case 381:
+# 3438 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_LAMBDA), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 382:
+# 3446 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_LAMBDA), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 383:
+# 3456 "parse.y"
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+
+ case 384:
+# 3460 "parse.y"
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+
+ case 385:
+# 3466 "parse.y"
+ {
+
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+
+ ;}
+ break;
+
+ case 386:
+# 3475 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ dyna_pop_gen(parser);
+
+
+
+ ;}
+ break;
+
+ case 387:
+# 3487 "parse.y"
+ {
+
+ if (((int) (((((struct RNode*)((yyvsp[(1) - (2)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_YIELD) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "block given to yield");
+ }
+ else {
+ block_dup_check_gen(parser,(yyvsp[(1) - (2)].node)->u3.node,(yyvsp[(2) - (2)].node));
+ }
+ (yyvsp[(2) - (2)].node)->u3.node = (yyvsp[(1) - (2)].node);
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ fixpos((yyval.node), (yyvsp[(1) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 388:
+# 3503 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+
+
+
+
+ ;}
+ break;
+
+ case 389:
+# 3512 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+
+
+
+
+ ;}
+ break;
+
+ case 390:
+# 3523 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)((yyvsp[(2) - (2)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 391:
+# 3532 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 392:
+# 3542 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+
+
+
+
+ ;}
+ break;
+
+ case 393:
+# 3552 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 394:
+# 3560 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((__builtin_constant_p("call") ? __extension__ (rb_intern2("call", strlen("call"))) : (rb_intern)("call"))), (VALUE)((yyvsp[(3) - (3)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (3)].node));
+
+
+
+
+
+ ;}
+ break;
+
+ case 395:
+# 3571 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((__builtin_constant_p("call") ? __extension__ (rb_intern2("call", strlen("call"))) : (rb_intern)("call"))), (VALUE)((yyvsp[(3) - (3)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (3)].node));
+
+
+
+
+
+ ;}
+ break;
+
+ case 396:
+# 3582 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_SUPER), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
+
+
+
+ ;}
+ break;
+
+ case 397:
+# 3590 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ZSUPER), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 398:
+# 3598 "parse.y"
+ {
+
+ if ((yyvsp[(1) - (4)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
+ (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)(336), (VALUE)((yyvsp[(3) - (4)].node)));
+ else
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(336), (VALUE)((yyvsp[(3) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+
+
+
+ ;}
+ break;
+
+ case 399:
+# 3612 "parse.y"
+ {
+
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+
+
+ ;}
+ break;
+
+ case 400:
+# 3621 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ ((struct RNode*)((yyval.node)->u2.node))->flags=((((struct RNode*)((yyval.node)->u2.node))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ ((struct RNode*)((yyval.node)->u2.node->u2.node))->flags=((((struct RNode*)((yyval.node)->u2.node->u2.node))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ dyna_pop_gen(parser);
+
+
+
+ ;}
+ break;
+
+ case 401:
+# 3633 "parse.y"
+ {
+
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+
+
+ ;}
+ break;
+
+ case 402:
+# 3642 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ dyna_pop_gen(parser);
+
+
+
+ ;}
+ break;
+
+ case 403:
+# 3656 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_WHEN), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)));
+
+
+
+ ;}
+ break;
+
+ case 406:
+# 3672 "parse.y"
+ {
+
+ if ((yyvsp[(3) - (6)].node)) {
+ (yyvsp[(3) - (6)].node) = node_assign_gen(parser, (yyvsp[(3) - (6)].node), node_newnode(parser, (NODE_ERRINFO), (VALUE)(0), (VALUE)(0), (VALUE)(0)));
+ (yyvsp[(5) - (6)].node) = block_append_gen(parser,(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].node));
+ }
+ (yyval.node) = node_newnode(parser, (NODE_RESBODY), (VALUE)((yyvsp[(6) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)((yyvsp[(2) - (6)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (6)].node)?(yyvsp[(2) - (6)].node):(yyvsp[(5) - (6)].node));
+
+
+
+
+
+
+
+ ;}
+ break;
+
+ case 408:
+# 3692 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 409:
+# 3700 "parse.y"
+ {
+
+ if (!((yyval.node) = splat_array((yyvsp[(1) - (1)].node)))) (yyval.node) = (yyvsp[(1) - (1)].node);
+
+
+
+ ;}
+ break;
+
+ case 411:
+# 3711 "parse.y"
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+
+ case 413:
+# 3718 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+
+
+
+ ;}
+ break;
+
+ case 416:
+# 3730 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (1)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 418:
+# 3741 "parse.y"
+ {
+
+ NODE *node = (yyvsp[(1) - (1)].node);
+ if (!node) {
+ node = node_newnode(parser, (NODE_STR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ node = evstr2dstr_gen(parser,node);
+ }
+ (yyval.node) = node;
+
+
+
+ ;}
+ break;
+
+ case 421:
+# 3760 "parse.y"
+ {
+
+ (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 422:
+# 3770 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+
+
+
+ ;}
+ break;
+
+ case 423:
+# 3780 "parse.y"
+ {
+
+ NODE *node = (yyvsp[(2) - (3)].node);
+ if (!node) {
+ node = node_newnode(parser, (NODE_XSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR:
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_XSTR)<<8)&(((VALUE)0x7f)<<8)));
+ break;
+ case NODE_DSTR:
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DXSTR)<<8)&(((VALUE)0x7f)<<8)));
+ break;
+ default:
+ node = node_newnode(parser, (NODE_DXSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node), (VALUE)(1), (VALUE)(0))));
+ break;
+ }
+ }
+ (yyval.node) = node;
+
+
+
+ ;}
+ break;
+
+ case 424:
+# 3807 "parse.y"
+ {
+
+ int options = (yyvsp[(3) - (3)].num);
+ NODE *node = (yyvsp[(2) - (3)].node);
+ NODE *list;
+ if (!node) {
+ node = node_newnode(parser, (NODE_LIT), (VALUE)(reg_compile_gen(parser, rb_enc_str_new(0,0,parser->enc), options)), (VALUE)(0), (VALUE)(0));
+ }
+ else switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR:
+ {
+ VALUE src = node->u1.value;
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
+ node->u1.value = reg_compile_gen(parser, src, options);
+ }
+ break;
+ default:
+ node = node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node), (VALUE)(1), (VALUE)(0))));
+ case NODE_DSTR:
+ if (options & (1<<16)) {
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DREGX_ONCE)<<8)&(((VALUE)0x7f)<<8)));
+ }
+ else {
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DREGX)<<8)&(((VALUE)0x7f)<<8)));
+ }
+ node->u2.id = options & 0xff;
+ reg_fragment_check_gen(parser, node->u1.value, options);
+ for (list = node->u3.node; list; list = list->u3.node) {
+ if (((int) (((((struct RNode*)(list->u1.node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_STR) {
+ reg_fragment_check_gen(parser, list->u1.node->u1.value, options);
+ }
+ }
+ break;
+ }
+ (yyval.node) = node;
+
+
+
+ ;}
+ break;
+
+ case 425:
+# 3849 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 426:
+# 3857 "parse.y"
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+
+ case 427:
+# 3863 "parse.y"
+ {
+
+ (yyval.node) = 0;
+
+
+
+ ;}
+ break;
+
+ case 428:
+# 3871 "parse.y"
+ {
+
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),evstr2dstr_gen(parser,(yyvsp[(2) - (3)].node)));
+
+
+
+ ;}
+ break;
+
+ case 430:
+# 3889 "parse.y"
+ {
+
+ (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 431:
+# 3899 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 432:
+# 3907 "parse.y"
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+
+ case 433:
+# 3913 "parse.y"
+ {
+
+ (yyval.node) = 0;
+
+
+
+ ;}
+ break;
+
+ case 434:
+# 3921 "parse.y"
+ {
+
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(2) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 435:
+# 3931 "parse.y"
+ {
+
+ (yyval.node) = 0;
+
+
+
+ ;}
+ break;
+
+ case 436:
+# 3939 "parse.y"
+ {
+
+ (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 437:
+# 3949 "parse.y"
+ {
+
+ (yyval.node) = 0;
+
+
+
+ ;}
+ break;
+
+ case 438:
+# 3957 "parse.y"
+ {
+
+ (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 440:
+# 3968 "parse.y"
+ {
+ (yyval.node) = (parser->parser_lex_strterm);
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_state) = EXPR_BEG;
+ ;}
+ break;
+
+ case 441:
+# 3974 "parse.y"
+ {
+
+ (parser->parser_lex_strterm) = (yyvsp[(2) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_EVSTR), (VALUE)(0), (VALUE)(((yyvsp[(3) - (3)].node))), (VALUE)(0));
+
+
+
+
+ ;}
+ break;
+
+ case 442:
+# 3984 "parse.y"
+ {
+ (yyval.node) = (parser->parser_lex_strterm);
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_state) = EXPR_BEG;
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
+ ;}
+ break;
+
+ case 443:
+# 3992 "parse.y"
+ {
+ (parser->parser_lex_strterm) = (yyvsp[(2) - (4)].node);
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack) >> 1) | ((parser->parser_cond_stack) & 1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack) >> 1) | ((parser->parser_cmdarg_stack) & 1));
+
+ if ((yyvsp[(3) - (4)].node)) (yyvsp[(3) - (4)].node)->flags &= ~(((VALUE)1)<<7);
+ (yyval.node) = new_evstr_gen(parser,(yyvsp[(3) - (4)].node));
+
+
+
+ ;}
+ break;
+
+ case 444:
+# 4006 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_GVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(rb_global_entry((yyvsp[(1) - (1)].id))));
+
+
+
+ ;}
+ break;
+
+ case 445:
+# 4014 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_IVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 446:
+# 4022 "parse.y"
+ {
+
+ (yyval.node) = node_newnode(parser, (NODE_CVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 448:
+# 4033 "parse.y"
+ {
+
+ (parser->parser_lex_state) = EXPR_END;
+ (yyval.id) = (yyvsp[(2) - (2)].id);
+
+
+
+
+ ;}
+ break;
+
+ case 453:
+# 4051 "parse.y"
+ {
+
+ (parser->parser_lex_state) = EXPR_END;
+ if (!((yyval.node) = (yyvsp[(2) - (3)].node))) {
+ (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((__builtin_constant_p("") ? __extension__ (rb_intern2("", strlen(""))) : (rb_intern)("")))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ VALUE lit;
+
+ switch (((int) (((((struct RNode*)((yyval.node))))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DSTR:
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DSYM)<<8)&(((VALUE)0x7f)<<8)));
+ break;
+ case NODE_STR:
+ lit = (yyval.node)->u1.value;
+ (yyval.node)->u1.value = (((VALUE)(rb_intern_str(lit))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG);
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
+ break;
+ default:
+ (yyval.node) = node_newnode(parser, (NODE_DSYM), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyval.node)), (VALUE)(1), (VALUE)(0))));
+ break;
+ }
+ }
+
+
+
+
+ ;}
+ break;
+
+ case 456:
+# 4084 "parse.y"
+ {
+
+ (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 457:
+# 4092 "parse.y"
+ {
+
+ (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 463:
+# 4106 "parse.y"
+ {(yyval.id) = 289;;}
+ break;
+
+ case 464:
+# 4107 "parse.y"
+ {(yyval.id) = 288;;}
+ break;
+
+ case 465:
+# 4108 "parse.y"
+ {(yyval.id) = 290;;}
+ break;
+
+ case 466:
+# 4109 "parse.y"
+ {(yyval.id) = 291;;}
+ break;
+
+ case 467:
+# 4110 "parse.y"
+ {(yyval.id) = 305;;}
+ break;
+
+ case 468:
+# 4111 "parse.y"
+ {(yyval.id) = 304;;}
+ break;
+
+ case 469:
+# 4112 "parse.y"
+ {(yyval.id) = 306;;}
+ break;
+
+ case 470:
+# 4116 "parse.y"
+ {
+
+ if (!((yyval.node) = gettable_gen(parser,(yyvsp[(1) - (1)].id)))) (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 471:
+# 4126 "parse.y"
+ {
+
+ (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
+
+
+
+ ;}
+ break;
+
+ case 474:
+# 4140 "parse.y"
+ {
+
+ (yyval.node) = 0;
+
+
+
+ ;}
+ break;
+
+ case 475:
+# 4148 "parse.y"
+ {
+ (parser->parser_lex_state) = EXPR_BEG;
+ ;}
+ break;
+
+ case 476:
+# 4152 "parse.y"
+ {
+ (yyval.node) = (yyvsp[(3) - (4)].node);
+ ;}
+ break;
+
+ case 477:
+# 4156 "parse.y"
+ {
+
+ (yyerrstatus = 0);
+ (yyval.node) = 0;
+
+
+
+
+ ;}
+ break;
+
+ case 478:
+# 4168 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ (parser->parser_lex_state) = EXPR_BEG;
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+
+
+
+
+
+ ;}
+ break;
+
+ case 479:
+# 4180 "parse.y"
+ {
+ (yyval.node) = (yyvsp[(1) - (2)].node);
+ ;}
+ break;
+
+ case 480:
+# 4186 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].id),0,(yyvsp[(6) - (6)].id));
+
+
+
+ ;}
+ break;
+
+ case 481:
+# 4194 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (8)].node),(yyvsp[(3) - (8)].node),(yyvsp[(5) - (8)].id),(yyvsp[(7) - (8)].node),(yyvsp[(8) - (8)].id));
+
+
+
+ ;}
+ break;
+
+ case 482:
+# 4202 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node),0,0,(yyvsp[(4) - (4)].id));
+
+
+
+ ;}
+ break;
+
+ case 483:
+# 4210 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),0,(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+
+
+
+ ;}
+ break;
+
+ case 484:
+# 4218 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
+
+
+
+ ;}
+ break;
+
+ case 485:
+# 4226 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),0,(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+
+
+
+ ;}
+ break;
+
+ case 486:
+# 4234 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,0,0,(yyvsp[(2) - (2)].id));
+
+
+
+ ;}
+ break;
+
+ case 487:
+# 4242 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
+
+
+
+ ;}
+ break;
+
+ case 488:
+# 4250 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+
+
+
+ ;}
+ break;
+
+ case 489:
+# 4258 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (2)].node),0,0,(yyvsp[(2) - (2)].id));
+
+
+
+ ;}
+ break;
+
+ case 490:
+# 4266 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
+
+
+
+ ;}
+ break;
+
+ case 491:
+# 4274 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (2)].id),0,(yyvsp[(2) - (2)].id));
+
+
+
+ ;}
+ break;
+
+ case 492:
+# 4282 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (4)].id),(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
+
+
+
+ ;}
+ break;
+
+ case 493:
+# 4290 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,0,0,0,(yyvsp[(1) - (1)].id));
+
+
+
+ ;}
+ break;
+
+ case 494:
+# 4298 "parse.y"
+ {
+
+ (yyval.node) = new_args_gen(parser, 0,0,0,0,0);
+
+
+
+ ;}
+ break;
+
+ case 495:
+# 4308 "parse.y"
+ {
+
+ parser_yyerror(parser, "formal argument cannot be a constant");
+ (yyval.id) = 0;
+
+
+
+ ;}
+ break;
+
+ case 496:
+# 4317 "parse.y"
+ {
+
+ parser_yyerror(parser, "formal argument cannot be an instance variable");
+ (yyval.id) = 0;
+
+
+
+ ;}
+ break;
+
+ case 497:
+# 4326 "parse.y"
+ {
+
+ parser_yyerror(parser, "formal argument cannot be a global variable");
+ (yyval.id) = 0;
+
+
+
+ ;}
+ break;
+
+ case 498:
+# 4335 "parse.y"
+ {
+
+ parser_yyerror(parser, "formal argument cannot be a class variable");
+ (yyval.id) = 0;
+
+
+
+ ;}
+ break;
+
+ case 500:
+# 4347 "parse.y"
+ {
+
+ if (!((((yyvsp[(1) - (1)].id))>376)&&(((yyvsp[(1) - (1)].id))&0x07)==0x00))
+ parser_yyerror(parser, "formal argument must be local variable");
+ shadowing_lvar_gen(parser, (yyvsp[(1) - (1)].id));
+
+
+ (yyval.id) = (yyvsp[(1) - (1)].id);
+ ;}
+ break;
+
+ case 501:
+# 4359 "parse.y"
+ {
+
+ arg_var_gen(parser, (yyvsp[(1) - (1)].id));
+ (yyval.node) = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(1), (VALUE)(0));
+
+
+ ;}
+ break;
+
+ case 502:
+# 4367 "parse.y"
+ {
+
+ ID tid = internal_id_gen(parser);
+ arg_var_gen(parser, tid);
+ if (dyna_in_block_gen(parser)) {
+ (yyvsp[(2) - (3)].node)->u2.node = node_newnode(parser, (NODE_DVAR), (VALUE)(tid), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ (yyvsp[(2) - (3)].node)->u2.node = node_newnode(parser, (NODE_LVAR), (VALUE)(tid), (VALUE)(0), (VALUE)(0));
+ }
+ (yyval.node) = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(tid), (VALUE)(1), (VALUE)(0));
+ (yyval.node)->u3.node = (yyvsp[(2) - (3)].node);
+
+
+
+ ;}
+ break;
+
+ case 504:
+# 4393 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ (yyval.node)->u2.argc++;
+ (yyval.node)->u3.node = block_append_gen(parser,(yyval.node)->u3.node,(yyvsp[(3) - (3)].node)->u3.node);
+ rb_gc_force_recycle((VALUE)(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 505:
+# 4406 "parse.y"
+ {
+
+ if (!((((yyvsp[(1) - (3)].id))>376)&&(((yyvsp[(1) - (3)].id))&0x07)==0x00))
+ parser_yyerror(parser, "formal argument must be local variable");
+ shadowing_lvar_gen(parser, (yyvsp[(1) - (3)].id));
+ arg_var_gen(parser, (yyvsp[(1) - (3)].id));
+ (yyval.node) = node_newnode(parser, (NODE_OPT_ARG), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].node))), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 506:
+# 4420 "parse.y"
+ {
+
+ if (!((((yyvsp[(1) - (3)].id))>376)&&(((yyvsp[(1) - (3)].id))&0x07)==0x00))
+ parser_yyerror(parser, "formal argument must be local variable");
+ shadowing_lvar_gen(parser, (yyvsp[(1) - (3)].id));
+ arg_var_gen(parser, (yyvsp[(1) - (3)].id));
+ (yyval.node) = node_newnode(parser, (NODE_OPT_ARG), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].node))), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 507:
+# 4434 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+
+
+
+ ;}
+ break;
+
+ case 508:
+# 4442 "parse.y"
+ {
+
+ NODE *opts = (yyvsp[(1) - (3)].node);
+
+ while (opts->u3.node) {
+ opts = opts->u3.node;
+ }
+ opts->u3.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+
+
+
+ ;}
+ break;
+
+ case 509:
+# 4458 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+
+
+
+ ;}
+ break;
+
+ case 510:
+# 4466 "parse.y"
+ {
+
+ NODE *opts = (yyvsp[(1) - (3)].node);
+
+ while (opts->u3.node) {
+ opts = opts->u3.node;
+ }
+ opts->u3.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+
+
+
+ ;}
+ break;
+
+ case 513:
+# 4486 "parse.y"
+ {
+
+ if (!((((yyvsp[(2) - (2)].id))>376)&&(((yyvsp[(2) - (2)].id))&0x07)==0x00))
+ parser_yyerror(parser, "rest argument must be local variable");
+ shadowing_lvar_gen(parser, (yyvsp[(2) - (2)].id));
+ arg_var_gen(parser, (yyvsp[(2) - (2)].id));
+ (yyval.id) = (yyvsp[(2) - (2)].id);
+
+
+
+ ;}
+ break;
+
+ case 514:
+# 4498 "parse.y"
+ {
+
+ (yyval.id) = internal_id_gen(parser);
+ arg_var_gen(parser, (yyval.id));
+
+
+
+ ;}
+ break;
+
+ case 517:
+# 4513 "parse.y"
+ {
+
+ if (!((((yyvsp[(2) - (2)].id))>376)&&(((yyvsp[(2) - (2)].id))&0x07)==0x00))
+ parser_yyerror(parser, "block argument must be local variable");
+ else if (!dyna_in_block_gen(parser) && local_id_gen(parser, (yyvsp[(2) - (2)].id)))
+ parser_yyerror(parser, "duplicated block argument name");
+ shadowing_lvar_gen(parser, (yyvsp[(2) - (2)].id));
+ arg_var_gen(parser, (yyvsp[(2) - (2)].id));
+ (yyval.id) = (yyvsp[(2) - (2)].id);
+
+
+
+ ;}
+ break;
+
+ case 518:
+# 4529 "parse.y"
+ {
+ (yyval.id) = (yyvsp[(2) - (2)].id);
+ ;}
+ break;
+
+ case 519:
+# 4533 "parse.y"
+ {
+
+ (yyval.id) = 0;
+
+
+
+ ;}
+ break;
+
+ case 520:
+# 4543 "parse.y"
+ {
+
+ value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+
+
+
+ ;}
+ break;
+
+ case 521:
+# 4552 "parse.y"
+ {(parser->parser_lex_state) = EXPR_BEG;;}
+ break;
+
+ case 522:
+# 4553 "parse.y"
+ {
+
+ if ((yyvsp[(3) - (4)].node) == 0) {
+ parser_yyerror(parser, "can't define singleton method for ().");
+ }
+ else {
+ switch (((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR:
+ case NODE_DSTR:
+ case NODE_XSTR:
+ case NODE_DXSTR:
+ case NODE_DREGX:
+ case NODE_LIT:
+ case NODE_ARRAY:
+ case NODE_ZARRAY:
+ parser_yyerror(parser, "can't define singleton method for literals");
+ default:
+ value_expr_gen(parser, ((yyvsp[(3) - (4)].node)) = remove_begin((yyvsp[(3) - (4)].node)));
+ break;
+ }
+ }
+ (yyval.node) = (yyvsp[(3) - (4)].node);
+
+
+
+ ;}
+ break;
+
+ case 524:
+# 4583 "parse.y"
+ {
+
+ (yyval.node) = (yyvsp[(1) - (2)].node);
+
+
+
+ ;}
+ break;
+
+ case 526:
+# 4600 "parse.y"
+ {
+
+ (yyval.node) = list_concat_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 527:
+# 4610 "parse.y"
+ {
+
+ (yyval.node) = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1), (VALUE)(0)),(yyvsp[(3) - (3)].node));
+
+
+
+ ;}
+ break;
+
+ case 528:
+# 4618 "parse.y"
+ {
+
+ (yyval.node) = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (2)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0)),(yyvsp[(2) - (2)].node));
+
+
+
+ ;}
+ break;
+
+ case 550:
+# 4674 "parse.y"
+ {(yyerrstatus = 0);;}
+ break;
+
+ case 553:
+# 4679 "parse.y"
+ {(yyerrstatus = 0);;}
+ break;
+
+ case 554:
+# 4683 "parse.y"
+ {
+
+ (yyval.node) = 0;
+
+
+
+ ;}
+ break;
+# 9722 "parse.c"
+ default: break;
+ }
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "-> $$ ="); yy_symbol_print (stderr, yyr1[yyn], &yyval, parser); fprintf (stderr, "\n"); } } while ((0));
+
+ (yyvsp -= (yylen), yyssp -= (yylen));
+ yylen = 0;
+ do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
+
+ *++yyvsp = yyval;
+
+
+
+
+
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - 149] + *yyssp;
+ if (0 <= yystate && yystate <= 10225 && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - 149];
+
+ goto yynewstate;
+
+
+
+
+
+yyerrlab:
+
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+
+
+
+ {
+ unsigned int yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < ((unsigned int) -1))
+ {
+ unsigned int yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= ((unsigned int) -1)))
+ yyalloc = ((unsigned int) -1);
+ if (yymsg != yymsgbuf)
+ rb_parser_free(parser, yymsg);
+ yymsg = (char *) rb_parser_malloc(parser, yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ parser_yyerror (parser, yymsg);
+ }
+ else
+ {
+ parser_yyerror (parser, "syntax error");
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+
+
+
+ if (yychar <= 0)
+ {
+
+ if (yychar == 0)
+ goto yyabortlab;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval, parser);
+ yychar = (-2);
+ }
+ }
+
+
+
+ goto yyerrlab1;
+
+
+
+
+
+yyerrorlab:
+
+
+
+
+ if ( 0)
+ goto yyerrorlab;
+
+
+
+ (yyvsp -= (yylen), yyssp -= (yylen));
+ yylen = 0;
+ do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+
+
+
+yyerrlab1:
+ yyerrstatus = 3;
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (yyn != -747)
+ {
+ yyn += 1;
+ if (0 <= yyn && yyn <= 10225 && yycheck[yyn] == 1)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+
+ if (yyssp == yyss)
+ goto yyabortlab;
+
+
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp, parser);
+ (yyvsp -= (1), yyssp -= (1));
+ yystate = *yyssp;
+ do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
+ }
+
+ if (yyn == 3)
+ goto yyacceptlab;
+
+ *++yyvsp = yylval;
+
+
+
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Shifting"); yy_symbol_print (stderr, yystos[yyn], yyvsp, parser); fprintf (stderr, "\n"); } } while ((0));
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+
+
+
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+
+
+
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+
+
+
+
+yyexhaustedlab:
+ parser_yyerror (parser, "memory exhausted");
+ yyresult = 2;
+
+
+
+yyreturn:
+ if (yychar != 0 && yychar != (-2))
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval, parser);
+
+
+ (yyvsp -= (yylen), yyssp -= (yylen));
+ do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp, parser);
+ (yyvsp -= (1), yyssp -= (1));
+ }
+
+ if (yyss != yyssa)
+ rb_parser_free(parser, yyss);
+
+
+ if (yymsg != yymsgbuf)
+ rb_parser_free(parser, yymsg);
+
+
+ return (yyresult);
+}
+# 4691 "parse.y"
+
+
+
+
+
+
+static int parser_regx_options(struct parser_params*);
+static int parser_tokadd_string(struct parser_params*,int,int,int,long*,rb_encoding**);
+static void parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc);
+static int parser_parse_string(struct parser_params*,NODE*);
+static int parser_here_document(struct parser_params*,NODE*);
+# 4773 "parse.y"
+# 1 "./include/ruby/regex.h" 1
+# 29 "./include/ruby/regex.h"
+extern OnigEncoding OnigEncDefaultCharEncoding;
+# 4774 "parse.y" 2
+# 1 "./include/ruby/util.h" 1
+# 44 "./include/ruby/util.h"
+unsigned long ruby_scan_oct(const char *, int, int *);
+
+unsigned long ruby_scan_hex(const char *, int, int *);
+
+
+
+
+
+void ruby_qsort(void *, const int, const int,
+ int (*)(const void *, const void *, void *), void *);
+
+void ruby_setenv(const char *, const char *);
+void ruby_unsetenv(const char *);
+
+
+
+
+
+char *ruby_strdup(const char *);
+
+
+
+char *ruby_getcwd(void);
+
+
+double ruby_strtod(const char *, char **);
+
+
+
+void ruby_each_words(const char *, void (*)(const char*, int, void*), void *);
+# 4775 "parse.y" 2
+# 4797 "parse.y"
+static int
+token_info_get_column(struct parser_params *parser, const char *token)
+{
+ int column = 1;
+ const char *p, *pend = (parser->parser_lex_p) - strlen(token);
+ for (p = (parser->parser_lex_pbeg); p < pend; p++) {
+ if (*p == '\t') {
+ column = (((column - 1) / 8) + 1) * 8;
+ }
+ column++;
+ }
+ return column;
+}
+
+static int
+token_info_has_nonspaces(struct parser_params *parser, const char *token)
+{
+ const char *p, *pend = (parser->parser_lex_p) - strlen(token);
+ for (p = (parser->parser_lex_pbeg); p < pend; p++) {
+ if (*p != ' ' && *p != '\t') {
+ return 1;
+ }
+ }
+ return 0;
+}
+
+static void
+token_info_push(struct parser_params *parser, const char *token)
+{
+ token_info *ptinfo;
+
+ if ((parser->parser_compile_for_eval)) return;
+ ptinfo = (token_info*)ruby_xmalloc(sizeof(token_info));
+ ptinfo->token = token;
+ ptinfo->linenum = (parser->parser_ruby_sourceline);
+ ptinfo->column = token_info_get_column(parser, token);
+ ptinfo->nonspc = token_info_has_nonspaces(parser, token);
+ ptinfo->next = parser->parser_token_info;
+
+ parser->parser_token_info = ptinfo;
+}
+
+static void
+token_info_pop(struct parser_params *parser, const char *token)
+{
+ int linenum;
+ token_info *ptinfo = parser->parser_token_info;
+
+ if (!ptinfo) return;
+ parser->parser_token_info = ptinfo->next;
+ if (token_info_get_column(parser, token) == ptinfo->column) {
+ goto finish;
+ }
+ linenum = (parser->parser_ruby_sourceline);
+ if (linenum == ptinfo->linenum) {
+ goto finish;
+ }
+ if (token_info_has_nonspaces(parser, token) || ptinfo->nonspc) {
+ goto finish;
+ }
+ rb_compile_warning((parser->parser_ruby_sourcefile), linenum,
+ "mismatched indentations at '%s' with '%s' at %d",
+ token, ptinfo->token, ptinfo->linenum);
+
+ finish:
+ ruby_xfree(ptinfo);
+}
+
+
+static int
+parser_yyerror(struct parser_params *parser, const char *msg)
+{
+
+ const int max_line_margin = 30;
+ const char *p, *pe;
+ char *buf;
+ int len, i;
+
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", msg);
+ p = (parser->parser_lex_p);
+ while ((parser->parser_lex_pbeg) <= p) {
+ if (*p == '\n') break;
+ p--;
+ }
+ p++;
+
+ pe = (parser->parser_lex_p);
+ while (pe < (parser->parser_lex_pend)) {
+ if (*pe == '\n') break;
+ pe++;
+ }
+
+ len = pe - p;
+ if (len > 4) {
+ char *p2;
+ const char *pre = "", *post = "";
+
+ if (len > max_line_margin * 2 + 10) {
+ if ((parser->parser_lex_p) - p > max_line_margin) {
+ p = (char *)onigenc_get_prev_char_head(rb_enc_get((parser->parser_lex_lastline)),(OnigUChar*)(p),(OnigUChar*)((parser->parser_lex_p) - max_line_margin),(OnigUChar*)(pe));
+ pre = "...";
+ }
+ if (pe - (parser->parser_lex_p) > max_line_margin) {
+ pe = (char *)onigenc_get_prev_char_head(rb_enc_get((parser->parser_lex_lastline)),(OnigUChar*)((parser->parser_lex_p)),(OnigUChar*)((parser->parser_lex_p) + max_line_margin),(OnigUChar*)(pe));
+ post = "...";
+ }
+ len = pe - p;
+ }
+ buf = (char*)__builtin_alloca (sizeof(char)*(len+2));
+ memcpy((buf), (p), sizeof(char)*(len));
+ buf[len] = '\0';
+ rb_compile_error_append("%s%s%s", pre, buf, post);
+
+ i = (parser->parser_lex_p) - p;
+ p2 = buf; pe = buf + len;
+
+ while (p2 < pe) {
+ if (*p2 != '\t') *p2 = ' ';
+ p2++;
+ }
+ buf[i] = '^';
+ buf[i+1] = '\0';
+ rb_compile_error_append("%s%s", pre, buf);
+ }
+
+
+
+ return 0;
+}
+
+static void parser_prepare(struct parser_params *parser);
+
+
+VALUE ruby_suppress_tracing(VALUE (*func)(VALUE, int), VALUE arg, int always);
+
+static VALUE
+debug_lines(const char *f)
+{
+ if (rb_const_defined_at(rb_cObject, (__builtin_constant_p("SCRIPT_LINES__") ? __extension__ (rb_intern2("SCRIPT_LINES__", strlen("SCRIPT_LINES__"))) : (rb_intern)("SCRIPT_LINES__")))) {
+ VALUE hash = rb_const_get_at(rb_cObject, (__builtin_constant_p("SCRIPT_LINES__") ? __extension__ (rb_intern2("SCRIPT_LINES__", strlen("SCRIPT_LINES__"))) : (rb_intern)("SCRIPT_LINES__")));
+ if (rb_type((VALUE)(hash)) == RUBY_T_HASH) {
+ VALUE fname = __extension__ ( { (__builtin_constant_p(f)) ? rb_str_new(f, strlen(f)) : rb_str_new_cstr(f); });
+ VALUE lines = rb_ary_new();
+ rb_hash_aset(hash, fname, lines);
+ return lines;
+ }
+ }
+ return 0;
+}
+
+static VALUE
+coverage(const char *f, int n)
+{
+ extern VALUE rb_get_coverages(void);
+ VALUE coverages = rb_get_coverages();
+ if ((((VALUE)(coverages) & ~((VALUE)RUBY_Qnil)) != 0) && ((struct RBasic*)(coverages))->klass == 0) {
+ VALUE fname = __extension__ ( { (__builtin_constant_p(f)) ? rb_str_new(f, strlen(f)) : rb_str_new_cstr(f); });
+ VALUE lines = rb_ary_new2(n);
+ int i;
+ ((struct RBasic*)(lines))->klass = 0;
+ for (i = 0; i < n; i++) ((((struct RBasic*)(lines))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RArray*)(lines))->as.ary : ((struct RArray*)(lines))->as.heap.ptr)[i] = ((VALUE)RUBY_Qnil);
+ ((struct RArray*)(lines))->as.heap.len = n;
+ rb_hash_aset(coverages, fname, lines);
+ return lines;
+ }
+ return 0;
+}
+
+static int
+e_option_supplied(struct parser_params *parser)
+{
+ if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((parser->parser_ruby_sourcefile)) && __builtin_constant_p ("-e") && (__s1_len = strlen ((parser->parser_ruby_sourcefile)), __s2_len = strlen ("-e"), (!((size_t)(const void *)(((parser->parser_ruby_sourcefile)) + 1) - (size_t)(const void *)((parser->parser_ruby_sourcefile)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("-e") + 1) - (size_t)(const void *)("-e") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e") : (__builtin_constant_p ((parser->parser_ruby_sourcefile)) && ((size_t)(const void *)(((parser->parser_ruby_sourcefile)) + 1) - (size_t)(const void *)((parser->parser_ruby_sourcefile)) == 1) && (__s1_len = strlen ((parser->parser_ruby_sourcefile)), __s1_len < 4) ? (__builtin_constant_p ("-e") && ((size_t)(const void *)(("-e") + 1) - (size_t)(const void *)("-e") == 1) ? __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("-e"); register int __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("-e") && ((size_t)(const void *)(("-e") + 1) - (size_t)(const void *)("-e") == 1) && (__s2_len = strlen ("-e"), __s2_len < 4) ? (__builtin_constant_p ((parser->parser_ruby_sourcefile)) && ((size_t)(const void *)(((parser->parser_ruby_sourcefile)) + 1) - (size_t)(const void *)((parser->parser_ruby_sourcefile)) == 1) ? __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("-e"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("-e"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("-e"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("-e"))[3]); } } __result; }))) : __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e")))); }) == 0)
+ return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+
+static VALUE
+yycompile0(VALUE arg, int tracing)
+{
+ int n;
+ NODE *tree;
+ struct parser_params *parser = (struct parser_params *)arg;
+
+ if (!(parser->parser_compile_for_eval) && rb_safe_level() == 0) {
+ (parser->debug_lines) = debug_lines((parser->parser_ruby_sourcefile));
+ if ((parser->debug_lines) && (parser->parser_ruby_sourceline) > 0) {
+ VALUE str = rb_enc_str_new(0,0,parser->enc);
+ n = (parser->parser_ruby_sourceline);
+ do {
+ rb_ary_push((parser->debug_lines), str);
+ } while (--n);
+ }
+
+ if (!e_option_supplied(parser)) {
+ (parser->coverage) = coverage((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline));
+ }
+ }
+
+ parser_prepare(parser);
+ (parser->parser_deferred_nodes) = 0;
+ n = ruby_yyparse((void*)parser);
+ (parser->debug_lines) = 0;
+ (parser->coverage) = 0;
+ (parser->parser_compile_for_eval) = 0;
+
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_p) = (parser->parser_lex_pbeg) = (parser->parser_lex_pend) = 0;
+ (parser->parser_lex_lastline) = (parser->parser_lex_nextline) = 0;
+ if (parser->nerr) {
+ return 0;
+ }
+ tree = (parser->parser_eval_tree);
+ if (!tree) {
+ tree = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ if ((parser->parser_eval_tree_begin)) {
+ NODE *scope = (parser->parser_eval_tree);
+
+ if (scope) {
+ scope->u2.node = node_newnode(parser, (NODE_PRELUDE), (VALUE)((parser->parser_eval_tree_begin)), (VALUE)(scope->u2.node), (VALUE)(0));
+ }
+ tree = scope;
+ }
+ else {
+ tree = (parser->parser_eval_tree);
+ }
+ return (VALUE)tree;
+}
+
+static NODE*
+yycompile(struct parser_params *parser, const char *f, int line)
+{
+ (parser->parser_ruby_sourcefile) = ruby_strdup(f);
+ (parser->parser_ruby_sourceline) = line - 1;
+ return (NODE *)ruby_suppress_tracing(yycompile0, (VALUE)parser, ((VALUE)RUBY_Qtrue));
+}
+
+
+static VALUE
+lex_get_str(struct parser_params *parser, VALUE s)
+{
+ char *beg, *end, *pend;
+
+ beg = (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr);
+ if ((parser->parser_lex_gets_ptr)) {
+ if ((!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(s))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(s))->as.heap.len) == (parser->parser_lex_gets_ptr)) return ((VALUE)RUBY_Qnil);
+ beg += (parser->parser_lex_gets_ptr);
+ }
+ pend = (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr) + (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(s))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(s))->as.heap.len);
+ end = beg;
+ while (end < pend) {
+ if (*end++ == '\n') break;
+ }
+ (parser->parser_lex_gets_ptr) = end - (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr);
+ return rb_enc_str_new(beg, end - beg, rb_enc_get(s));
+}
+
+static VALUE
+lex_getline(struct parser_params *parser)
+{
+ VALUE line = (*parser->parser_lex_gets)(parser, parser->parser_lex_input);
+
+ if ((parser->debug_lines) && !((VALUE)(line) == ((VALUE)RUBY_Qnil))) {
+ rb_ary_push((parser->debug_lines), line);
+ }
+ if ((parser->coverage) && !((VALUE)(line) == ((VALUE)RUBY_Qnil))) {
+ rb_ary_push((parser->coverage), ((VALUE)RUBY_Qnil));
+ }
+
+ return line;
+}
+
+
+NODE*
+rb_compile_string(const char *f, VALUE s, int line)
+{
+ VALUE volatile vparser = rb_parser_new();
+
+ return rb_parser_compile_string(vparser, f, s, line);
+}
+
+NODE*
+rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
+{
+ struct parser_params *parser;
+ NODE *node;
+ volatile VALUE tmp;
+
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ (parser->parser_lex_gets) = lex_get_str;
+ (parser->parser_lex_gets_ptr) = 0;
+ (parser->parser_lex_input) = s;
+ (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (parser->parser_lex_pend) = 0;
+ (parser->parser_compile_for_eval) = rb_parse_in_eval();
+
+ node = yycompile(parser, f, line);
+ tmp = vparser;
+
+ return node;
+}
+
+NODE*
+rb_compile_cstr(const char *f, const char *s, int len, int line)
+{
+ return rb_compile_string(f, rb_str_new(s, len), line);
+}
+
+NODE*
+rb_parser_compile_cstr(volatile VALUE vparser, const char *f, const char *s, int len, int line)
+{
+ return rb_parser_compile_string(vparser, f, rb_str_new(s, len), line);
+}
+
+static VALUE
+lex_io_gets(struct parser_params *parser, VALUE io)
+{
+ return rb_io_gets(io);
+}
+
+NODE*
+rb_compile_file(const char *f, VALUE file, int start)
+{
+ VALUE volatile vparser = rb_parser_new();
+
+ return rb_parser_compile_file(vparser, f, file, start);
+}
+
+NODE*
+rb_parser_compile_file(volatile VALUE vparser, const char *f, VALUE file, int start)
+{
+ struct parser_params *parser;
+ volatile VALUE tmp;
+ NODE *node;
+
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ (parser->parser_lex_gets) = lex_io_gets;
+ (parser->parser_lex_input) = file;
+ (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (parser->parser_lex_pend) = 0;
+ (parser->parser_compile_for_eval) = rb_parse_in_eval();
+
+ node = yycompile(parser, f, start);
+ tmp = vparser;
+
+ return node;
+}
+# 5151 "parse.y"
+enum string_type {
+ str_squote = (0),
+ str_dquote = (0x02),
+ str_xquote = (0x02),
+ str_regexp = (0x04|0x01|0x02),
+ str_sword = (0x08),
+ str_dword = (0x08|0x02),
+ str_ssym = (0x10),
+ str_dsym = (0x10|0x02)
+};
+
+static VALUE
+parser_str_new(const char *p, long n, rb_encoding *enc, int func, rb_encoding *enc0)
+{
+ VALUE str;
+
+ str = rb_enc_str_new(p, n, enc);
+ if (!(func & 0x04) && ((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
+ if (rb_enc_str_coderange(str) == (((VALUE)1)<<(12 +8))) {
+ }
+ else if (enc0 == rb_usascii_encoding() && enc != rb_utf8_encoding()) {
+ rb_enc_associate(str, rb_ascii8bit_encoding());
+ }
+ }
+
+ return str;
+}
+
+
+
+
+static inline int
+parser_nextc(struct parser_params *parser)
+{
+ int c;
+
+ if ((parser->parser_lex_p) == (parser->parser_lex_pend)) {
+ VALUE v = (parser->parser_lex_nextline);
+ (parser->parser_lex_nextline) = 0;
+ if (!v) {
+ if (parser->eofp)
+ return -1;
+
+ if (!(parser->parser_lex_input) || ((VALUE)(v = lex_getline(parser)) == ((VALUE)RUBY_Qnil))) {
+ parser->eofp = ((VALUE)RUBY_Qtrue);
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ return -1;
+ }
+ }
+ {
+# 5216 "parse.y"
+ if ((parser->parser_heredoc_end) > 0) {
+ (parser->parser_ruby_sourceline) = (parser->parser_heredoc_end);
+ (parser->parser_heredoc_end) = 0;
+ }
+ (parser->parser_ruby_sourceline)++;
+ parser->line_count++;
+ (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (!(((struct RBasic*)(v))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(v))->as.ary : ((struct RString*)(v))->as.heap.ptr);
+ (parser->parser_lex_pend) = (parser->parser_lex_p) + (!(((struct RBasic*)(v))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(v))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(v))->as.heap.len);
+
+
+
+ (parser->parser_lex_lastline) = v;
+ }
+ }
+ c = (unsigned char)*(parser->parser_lex_p)++;
+ if (c == '\r' && ((parser->parser_lex_p) < (parser->parser_lex_pend) && ('\n') == *(parser->parser_lex_p))) {
+ (parser->parser_lex_p)++;
+ c = '\n';
+ }
+
+ return c;
+}
+
+static void
+parser_pushback(struct parser_params *parser, int c)
+{
+ if (c == -1) return;
+ (parser->parser_lex_p)--;
+ if ((parser->parser_lex_p) > (parser->parser_lex_pbeg) && (parser->parser_lex_p)[0] == '\n' && (parser->parser_lex_p)[-1] == '\r') {
+ (parser->parser_lex_p)--;
+ }
+}
+# 5256 "parse.y"
+static char*
+parser_newtok(struct parser_params *parser)
+{
+ (parser->parser_tokidx) = 0;
+ if (!(parser->parser_tokenbuf)) {
+ (parser->parser_toksiz) = 60;
+ (parser->parser_tokenbuf) = (char*)ruby_xmalloc2((60),sizeof(char));
+ }
+ if ((parser->parser_toksiz) > 4096) {
+ (parser->parser_toksiz) = 60;
+ ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),(60),sizeof(char));
+ }
+ return (parser->parser_tokenbuf);
+}
+
+static char *
+parser_tokspace(struct parser_params *parser, int n)
+{
+ (parser->parser_tokidx) += n;
+
+ if ((parser->parser_tokidx) >= (parser->parser_toksiz)) {
+ do {(parser->parser_toksiz) *= 2;} while ((parser->parser_toksiz) < (parser->parser_tokidx));
+ ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),((parser->parser_toksiz)),sizeof(char));
+ }
+ return &(parser->parser_tokenbuf)[(parser->parser_tokidx)-n];
+}
+
+static void
+parser_tokadd(struct parser_params *parser, int c)
+{
+ (parser->parser_tokenbuf)[(parser->parser_tokidx)++] = (char)c;
+ if ((parser->parser_tokidx) >= (parser->parser_toksiz)) {
+ (parser->parser_toksiz) *= 2;
+ ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),((parser->parser_toksiz)),sizeof(char));
+ }
+}
+
+static int
+parser_tok_hex(struct parser_params *parser, int *numlen)
+{
+ int c;
+
+ c = ruby_scan_hex((parser->parser_lex_p), 2, numlen);
+ if (!*numlen) {
+ parser_yyerror(parser, "invalid hex escape");
+ return 0;
+ }
+ (parser->parser_lex_p) += *numlen;
+ return c;
+}
+
+
+
+static int
+parser_tokadd_utf8(struct parser_params *parser, rb_encoding **encp,
+ int string_literal, int symbol_literal, int regexp_literal)
+{
+
+
+
+
+
+
+
+ int codepoint;
+ int numlen;
+
+ if (regexp_literal) { parser_tokadd(parser, '\\'); parser_tokadd(parser, 'u'); }
+
+ if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('{') == *(parser->parser_lex_p))) {
+ do {
+ if (regexp_literal) { parser_tokadd(parser, *(parser->parser_lex_p)); }
+ parser_nextc(parser);
+ codepoint = ruby_scan_hex((parser->parser_lex_p), 6, &numlen);
+ if (numlen == 0) {
+ parser_yyerror(parser, "invalid Unicode escape");
+ return 0;
+ }
+ if (codepoint > 0x10ffff) {
+ parser_yyerror(parser, "invalid Unicode codepoint (too large)");
+ return 0;
+ }
+ (parser->parser_lex_p) += numlen;
+ if (regexp_literal) {
+ memcpy(parser_tokspace(parser, numlen), (parser->parser_lex_p) - (numlen), (numlen));
+ }
+ else if (codepoint >= 0x80) {
+ *encp = (parser->utf8 ? parser->utf8 : (parser->utf8 = rb_utf8_encoding()));
+ if (string_literal) parser_tokaddmbc(parser, codepoint, *encp);
+ }
+ else if (string_literal) {
+ if (codepoint == 0 && symbol_literal) {
+ parser_yyerror(parser, "symbol cannot contain '\\u{0}'");
+ return 0;
+ }
+
+ parser_tokadd(parser, codepoint);
+ }
+ } while (string_literal && (((parser->parser_lex_p) < (parser->parser_lex_pend) && (' ') == *(parser->parser_lex_p)) || ((parser->parser_lex_p) < (parser->parser_lex_pend) && ('\t') == *(parser->parser_lex_p))));
+
+ if (!((parser->parser_lex_p) < (parser->parser_lex_pend) && ('}') == *(parser->parser_lex_p))) {
+ parser_yyerror(parser, "unterminated Unicode escape");
+ return 0;
+ }
+
+ if (regexp_literal) { parser_tokadd(parser, '}'); }
+ parser_nextc(parser);
+ }
+ else {
+ codepoint = ruby_scan_hex((parser->parser_lex_p), 4, &numlen);
+ if (numlen < 4) {
+ parser_yyerror(parser, "invalid Unicode escape");
+ return 0;
+ }
+ (parser->parser_lex_p) += 4;
+ if (regexp_literal) {
+ memcpy(parser_tokspace(parser, 4), (parser->parser_lex_p) - (4), (4));
+ }
+ else if (codepoint >= 0x80) {
+ *encp = (parser->utf8 ? parser->utf8 : (parser->utf8 = rb_utf8_encoding()));
+ if (string_literal) parser_tokaddmbc(parser, codepoint, *encp);
+ }
+ else if (string_literal) {
+ if (codepoint == 0 && symbol_literal) {
+ parser_yyerror(parser, "symbol cannot contain '\\u0000'");
+ return 0;
+ }
+
+ parser_tokadd(parser, codepoint);
+ }
+ }
+
+ return codepoint;
+}
+
+
+
+
+static int
+parser_read_escape(struct parser_params *parser, int flags,
+ rb_encoding **encp)
+{
+ int c;
+ int numlen;
+
+ switch (c = parser_nextc(parser)) {
+ case '\\':
+ return c;
+
+ case 'n':
+ return '\n';
+
+ case 't':
+ return '\t';
+
+ case 'r':
+ return '\r';
+
+ case 'f':
+ return '\f';
+
+ case 'v':
+ return '\13';
+
+ case 'a':
+ return '\007';
+
+ case 'e':
+ return 033;
+
+ case '0': case '1': case '2': case '3':
+ case '4': case '5': case '6': case '7':
+ if (flags & (1|2)) goto eof;
+ {
+ int numlen;
+
+ parser_pushback(parser, c);
+ c = ruby_scan_oct((parser->parser_lex_p), 3, &numlen);
+ (parser->parser_lex_p) += numlen;
+ }
+ return c;
+
+ case 'x':
+ if (flags & (1|2)) goto eof;
+ c = parser_tok_hex(parser, &numlen);
+ if (numlen == 0) return 0;
+ return c;
+
+ case 'b':
+ return '\010';
+
+ case 's':
+ return ' ';
+
+ case 'M':
+ if (flags & 2) goto eof;
+ if ((c = parser_nextc(parser)) != '-') {
+ parser_pushback(parser, c);
+ goto eof;
+ }
+ if ((c = parser_nextc(parser)) == '\\') {
+ return parser_read_escape(parser, flags|2, encp) | 0x80;
+ }
+ else if (c == -1 || !((unsigned long)((unsigned char)(c)) < 128)) goto eof;
+ else {
+ return ((c & 0xff) | 0x80);
+ }
+
+ case 'C':
+ if ((c = parser_nextc(parser)) != '-') {
+ parser_pushback(parser, c);
+ goto eof;
+ }
+ case 'c':
+ if (flags & 1) goto eof;
+ if ((c = parser_nextc(parser))== '\\') {
+ c = parser_read_escape(parser, flags|1, encp);
+ }
+ else if (c == '?')
+ return 0177;
+ else if (c == -1 || !((unsigned long)((unsigned char)(c)) < 128)) goto eof;
+ return c & 0x9f;
+
+ eof:
+ case -1:
+ parser_yyerror(parser, "Invalid escape character syntax");
+ return '\0';
+
+ default:
+ return c;
+ }
+}
+
+static void
+parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc)
+{
+ int len = rb_enc_codelen(c, enc);
+ (enc)->code_to_mbc(c,(OnigUChar*)(parser_tokspace(parser, len)),enc);
+}
+
+static int
+parser_tokadd_escape(struct parser_params *parser, rb_encoding **encp)
+{
+ int c;
+ int flags = 0;
+
+ first:
+ switch (c = parser_nextc(parser)) {
+ case '\n':
+ return 0;
+
+ case '0': case '1': case '2': case '3':
+ case '4': case '5': case '6': case '7':
+ if (flags & (1|2)) goto eof;
+ {
+ int numlen;
+ int oct;
+
+ oct = ruby_scan_oct(--(parser->parser_lex_p), 3, &numlen);
+ if (numlen == 0) goto eof;
+ (parser->parser_lex_p) += numlen;
+ memcpy(parser_tokspace(parser, numlen + 1), (parser->parser_lex_p) - (numlen + 1), (numlen + 1));
+ }
+ return 0;
+
+ case 'x':
+ if (flags & (1|2)) goto eof;
+ {
+ int numlen;
+ int hex;
+
+ hex = parser_tok_hex(parser, &numlen);
+ if (numlen == 0) goto eof;
+ memcpy(parser_tokspace(parser, numlen + 2), (parser->parser_lex_p) - (numlen + 2), (numlen + 2));
+ }
+ return 0;
+
+ case 'M':
+ if (flags & 2) goto eof;
+ if ((c = parser_nextc(parser)) != '-') {
+ parser_pushback(parser, c);
+ goto eof;
+ }
+ memcpy(parser_tokspace(parser, 3), (parser->parser_lex_p) - (3), (3));
+ flags |= 2;
+ goto escaped;
+
+ case 'C':
+ if (flags & 1) goto eof;
+ if ((c = parser_nextc(parser)) != '-') {
+ parser_pushback(parser, c);
+ goto eof;
+ }
+ memcpy(parser_tokspace(parser, 3), (parser->parser_lex_p) - (3), (3));
+ goto escaped;
+
+ case 'c':
+ if (flags & 1) goto eof;
+ memcpy(parser_tokspace(parser, 2), (parser->parser_lex_p) - (2), (2));
+ flags |= 1;
+ escaped:
+ if ((c = parser_nextc(parser)) == '\\') {
+ goto first;
+ }
+ else if (c == -1) goto eof;
+ parser_tokadd(parser, c);
+ return 0;
+
+ eof:
+ case -1:
+ parser_yyerror(parser, "Invalid escape character syntax");
+ return -1;
+
+ default:
+ parser_tokadd(parser, '\\');
+ parser_tokadd(parser, c);
+ }
+ return 0;
+}
+
+extern int rb_char_to_option_kcode(int c, int *option, int *kcode);
+
+static int
+parser_regx_options(struct parser_params *parser)
+{
+ int kcode = 0;
+ int options = 0;
+ int c, opt, kc;
+
+ parser_newtok(parser);
+ while (c = parser_nextc(parser), rb_isalpha((unsigned char)(c))) {
+ if (c == 'o') {
+ options |= (1<<16);
+ }
+ else if (rb_char_to_option_kcode(c, &opt, &kc)) {
+ options |= opt;
+ if (kc >= 0) kcode = c;
+ }
+ else {
+ parser_tokadd(parser, c);
+ }
+ }
+ parser_pushback(parser, c);
+ if ((parser->parser_tokidx)) {
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unknown regexp option%s - %s",
+ (parser->parser_tokidx) > 1 ? "s" : "", (parser->parser_tokenbuf));
+ }
+ return options | (((kcode)&0xff)<<8);
+}
+
+static void
+dispose_string(VALUE str)
+{
+
+ if (((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1)))
+ ruby_xfree((!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr));
+ rb_gc_force_recycle(str);
+}
+
+static int
+parser_tokadd_mbchar(struct parser_params *parser, int c)
+{
+ int len = rb_enc_precise_mbclen(((parser->parser_lex_p)-1),(parser->parser_lex_pend),parser->enc);
+ if (!(0 < (len))) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid multibyte char (%s)", (parser->enc->name));
+ return -1;
+ }
+ parser_tokadd(parser, c);
+ (parser->parser_lex_p) += --len;
+ if (len > 0) memcpy(parser_tokspace(parser, len), (parser->parser_lex_p) - (len), (len));
+ return c;
+}
+
+
+
+static int
+parser_tokadd_string(struct parser_params *parser,
+ int func, int term, int paren, long *nest,
+ rb_encoding **encp)
+{
+ int c;
+ int has_nonascii = 0;
+ rb_encoding *enc = *encp;
+ char *errbuf = 0;
+ static const char mixed_msg[] = "%s mixed within %s source";
+# 5660 "parse.y"
+ while ((c = parser_nextc(parser)) != -1) {
+ if (paren && c == paren) {
+ ++*nest;
+ }
+ else if (c == term) {
+ if (!nest || !*nest) {
+ parser_pushback(parser, c);
+ break;
+ }
+ --*nest;
+ }
+ else if ((func & 0x02) && c == '#' && (parser->parser_lex_p) < (parser->parser_lex_pend)) {
+ int c2 = *(parser->parser_lex_p);
+ if (c2 == '$' || c2 == '@' || c2 == '{') {
+ parser_pushback(parser, c);
+ break;
+ }
+ }
+ else if (c == '\\') {
+ const char *beg = (parser->parser_lex_p) - 1;
+ c = parser_nextc(parser);
+ switch (c) {
+ case '\n':
+ if (func & 0x08) break;
+ if (func & 0x02) continue;
+ parser_tokadd(parser, '\\');
+ break;
+
+ case '\\':
+ if (func & 0x01) parser_tokadd(parser, c);
+ break;
+
+ case 'u':
+ if ((func & 0x02) == 0) {
+ parser_tokadd(parser, '\\');
+ break;
+ }
+ parser_tokadd_utf8(parser, &enc, 1,
+ func & 0x10,
+ func & 0x04);
+ if (has_nonascii && enc != *encp) {
+ do { const char *pos = (parser->parser_lex_p); (parser->parser_lex_p) = beg; if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); }; (parser->parser_lex_p) = pos; } while (0);
+ }
+ continue;
+
+ default:
+ if (func & 0x04) {
+ parser_pushback(parser, c);
+ if ((c = parser_tokadd_escape(parser, &enc)) < 0)
+ return -1;
+ if (has_nonascii && enc != *encp) {
+ do { const char *pos = (parser->parser_lex_p); (parser->parser_lex_p) = beg; if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); }; (parser->parser_lex_p) = pos; } while (0);
+ }
+ continue;
+ }
+ else if (func & 0x02) {
+ parser_pushback(parser, c);
+ if (func & 0x01) parser_tokadd(parser, '\\');
+ c = parser_read_escape(parser, 0, &enc);
+ }
+ else if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
+
+ }
+ else if (c != term && !(paren && c == paren)) {
+ parser_tokadd(parser, '\\');
+ }
+ }
+ }
+ else if (!((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
+ has_nonascii = 1;
+ if (enc != *encp) {
+ if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); };
+ continue;
+ }
+ if (parser_tokadd_mbchar(parser, c) == -1) return -1;
+ continue;
+ }
+ else if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
+ parser_pushback(parser, c);
+ break;
+ }
+ if (!c && (func & 0x10)) {
+ func &= ~0x10;
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "symbol cannot contain '\\0'");
+ continue;
+ }
+ if (c & 0x80) {
+ has_nonascii = 1;
+ if (enc != *encp) {
+ if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); };
+ continue;
+ }
+ }
+ parser_tokadd(parser, c);
+ }
+ *encp = enc;
+ return c;
+}
+
+
+
+
+static int
+parser_parse_string(struct parser_params *parser, NODE *quote)
+{
+ int func = quote->u1.id;
+ int term = ((signed short)(quote)->u2.id);
+ int paren = (char)((quote)->u2.id >> 8*2);
+ int c, space = 0;
+ rb_encoding *enc = parser->enc;
+
+ if (func == -1) return 361;
+ c = parser_nextc(parser);
+ if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
+ do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
+ space = 1;
+ }
+ if (c == term && !quote->u3.cnt) {
+ if (func & 0x08) {
+ quote->u1.id = -1;
+ return ' ';
+ }
+ if (!(func & 0x04)) return 361;
+ (*((YYSTYPE*)(parser->parser_yylval))).num = parser_regx_options(parser);
+ return 320;
+ }
+ if (space) {
+ parser_pushback(parser, c);
+ return ' ';
+ }
+ parser_newtok(parser);
+ if ((func & 0x02) && c == '#') {
+ switch (c = parser_nextc(parser)) {
+ case '$':
+ case '@':
+ parser_pushback(parser, c);
+ return 360;
+ case '{':
+ return 359;
+ }
+ parser_tokadd(parser, '#');
+ }
+ parser_pushback(parser, c);
+ if (parser_tokadd_string(parser,func,term,paren,"e->u3.cnt,&enc) == -1) {
+
+ (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(quote)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
+ if (func & 0x04) {
+ if (parser->eofp)
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated regexp meets end of file");
+ return 320;
+ }
+ else {
+ if (parser->eofp)
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated string meets end of file");
+ return 361;
+ }
+ }
+
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc)), (VALUE)(0), (VALUE)(0));
+ return 316;
+}
+
+static int
+parser_heredoc_identifier(struct parser_params *parser)
+{
+ int c = parser_nextc(parser), term, func = 0, len;
+
+ if (c == '-') {
+ c = parser_nextc(parser);
+ func = 0x20;
+ }
+ switch (c) {
+ case '\'':
+ func |= str_squote; goto quoted;
+ case '"':
+ func |= str_dquote; goto quoted;
+ case '`':
+ func |= str_xquote;
+ quoted:
+ parser_newtok(parser);
+ parser_tokadd(parser, func);
+ term = c;
+ while ((c = parser_nextc(parser)) != -1 && c != term) {
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ }
+ if (c == -1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated here document identifier");
+ return 0;
+ }
+ break;
+
+ default:
+ if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ parser_pushback(parser, c);
+ if (func & 0x20) {
+ parser_pushback(parser, '-');
+ }
+ return 0;
+ }
+ parser_newtok(parser);
+ term = '"';
+ parser_tokadd(parser, func |= str_dquote);
+ do {
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ } while ((c = parser_nextc(parser)) != -1 && (!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128))));
+ parser_pushback(parser, c);
+ break;
+ }
+
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+
+
+
+ len = (parser->parser_lex_p) - (parser->parser_lex_pbeg);
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ARRAY, rb_enc_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),parser->enc), len, (parser->parser_lex_lastline));
+
+
+
+ ((struct RNode*)((parser->parser_lex_strterm)))->flags=((((struct RNode*)((parser->parser_lex_strterm)))->flags&~(-1<<(8 +7)))|((((parser->parser_ruby_sourceline))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+
+
+
+ return term == '`' ? 355 : 354;
+}
+
+static void
+parser_heredoc_restore(struct parser_params *parser, NODE *here)
+{
+ VALUE line;
+
+
+
+
+
+
+
+ line = here->u3.value;
+ (parser->parser_lex_lastline) = line;
+ (parser->parser_lex_pbeg) = (!(((struct RBasic*)(line))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(line))->as.ary : ((struct RString*)(line))->as.heap.ptr);
+ (parser->parser_lex_pend) = (parser->parser_lex_pbeg) + (!(((struct RBasic*)(line))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(line))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(line))->as.heap.len);
+ (parser->parser_lex_p) = (parser->parser_lex_pbeg) + here->u2.argc;
+ (parser->parser_heredoc_end) = (parser->parser_ruby_sourceline);
+ (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(here)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
+ dispose_string(here->u1.value);
+ rb_gc_force_recycle((VALUE)here);
+
+
+
+}
+
+static int
+parser_whole_match_p(struct parser_params *parser,
+ const char *eos, int len, int indent)
+{
+ const char *p = (parser->parser_lex_pbeg);
+ int n;
+
+ if (indent) {
+ while (*p && rb_isspace((unsigned char)(*p))) p++;
+ }
+ n= (parser->parser_lex_pend) - (p + len);
+ if (n < 0 || (n > 0 && p[len] != '\n' && p[len] != '\r')) return ((VALUE)RUBY_Qfalse);
+ if ((__extension__ (__builtin_constant_p (len) && ((__builtin_constant_p (eos) && strlen (eos) < ((size_t) (len))) || (__builtin_constant_p (p) && strlen (p) < ((size_t) (len)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (eos) && __builtin_constant_p (p) && (__s1_len = strlen (eos), __s2_len = strlen (p), (!((size_t)(const void *)((eos) + 1) - (size_t)(const void *)(eos) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((p) + 1) - (size_t)(const void *)(p) == 1) || __s2_len >= 4)) ? __builtin_strcmp (eos, p) : (__builtin_constant_p (eos) && ((size_t)(const void *)((eos) + 1) - (size_t)(const void *)(eos) == 1) && (__s1_len = strlen (eos), __s1_len < 4) ? (__builtin_constant_p (p) && ((size_t)(const void *)((p) + 1) - (size_t)(const void *)(p) == 1) ? __builtin_strcmp (eos, p) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (p); register int __result = (((__const unsigned char *) (__const char *) (eos))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (eos))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (eos))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (eos))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (p) && ((size_t)(const void *)((p) + 1) - (size_t)(const void *)(p) == 1) && (__s2_len = strlen (p), __s2_len < 4) ? (__builtin_constant_p (eos) && ((size_t)(const void *)((eos) + 1) - (size_t)(const void *)(eos) == 1) ? __builtin_strcmp (eos, p) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (eos); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (p))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (p))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (p))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (p))[3]); } } __result; }))) : __builtin_strcmp (eos, p)))); }) : strncmp (eos, p, len))) == 0) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+
+static int
+parser_here_document(struct parser_params *parser, NODE *here)
+{
+ int c, func, indent = 0;
+ const char *eos, *p, *pend;
+ long len;
+ VALUE str = 0;
+
+ eos = (!(((struct RBasic*)(here->u1.value))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(here->u1.value))->as.ary : ((struct RString*)(here->u1.value))->as.heap.ptr);
+ len = (!(((struct RBasic*)(here->u1.value))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(here->u1.value))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(here->u1.value))->as.heap.len) - 1;
+ indent = (func = *eos++) & 0x20;
+
+ if ((c = parser_nextc(parser)) == -1) {
+ error:
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "can't find string \"%s\" anywhere before EOF", eos);
+ restore:
+ parser_heredoc_restore(parser,(parser->parser_lex_strterm));
+ (parser->parser_lex_strterm) = 0;
+ return 0;
+ }
+ if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1) && parser_whole_match_p(parser,eos,len,indent)) {
+ parser_heredoc_restore(parser,(parser->parser_lex_strterm));
+ return 361;
+ }
+
+ if (!(func & 0x02)) {
+ do {
+ p = (!(((struct RBasic*)((parser->parser_lex_lastline)))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)((parser->parser_lex_lastline)))->as.ary : ((struct RString*)((parser->parser_lex_lastline)))->as.heap.ptr);
+ pend = (parser->parser_lex_pend);
+ if (pend > p) {
+ switch (pend[-1]) {
+ case '\n':
+ if (--pend == p || pend[-1] != '\r') {
+ pend++;
+ break;
+ }
+ case '\r':
+ --pend;
+ }
+ }
+ if (str)
+ rb_str_cat(str, p, pend - p);
+ else
+ str = rb_enc_str_new((p),(pend - p),parser->enc);
+ if (pend < (parser->parser_lex_pend)) rb_str_cat(str, "\n", 1);
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ if (parser_nextc(parser) == -1) {
+ if (str) dispose_string(str);
+ goto error;
+ }
+ } while (!parser_whole_match_p(parser,eos,len,indent));
+ }
+ else {
+
+ rb_encoding *enc = parser->enc;
+ parser_newtok(parser);
+ if (c == '#') {
+ switch (c = parser_nextc(parser)) {
+ case '$':
+ case '@':
+ parser_pushback(parser, c);
+ return 360;
+ case '{':
+ return 359;
+ }
+ parser_tokadd(parser, '#');
+ }
+ do {
+ parser_pushback(parser, c);
+ if ((c = parser_tokadd_string(parser,func,'\n',0,((void *)0),&enc)) == -1) {
+ if (parser->eofp) goto error;
+ goto restore;
+ }
+ if (c != '\n') {
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc)), (VALUE)(0), (VALUE)(0));
+ return 316;
+ }
+ parser_tokadd(parser, parser_nextc(parser));
+
+ if ((c = parser_nextc(parser)) == -1) goto error;
+ } while (!parser_whole_match_p(parser,eos,len,indent));
+ str = parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc);
+ }
+ parser_heredoc_restore(parser,(parser->parser_lex_strterm));
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (-1), (0) | ((0) << (8 * 2)), 0);
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(str), (VALUE)(0), (VALUE)(0));
+ return 316;
+}
+
+# 1 "lex.c" 1
+# 1 "keywords"
+
+struct kwtable {const char *name; int id[2]; enum lex_state_e state;};
+const struct kwtable *rb_reserved_word(const char *, unsigned int);
+# 7 "keywords"
+struct kwtable;
+# 17 "keywords"
+__inline
+
+
+
+
+
+static unsigned int
+hash (str, len)
+ register const char *str;
+ register unsigned int len;
+{
+ static const unsigned char asso_values[] =
+ {
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 26, 51, 51, 14, 51, 16, 8,
+ 11, 13, 51, 51, 51, 51, 10, 51, 13, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 11, 51, 13, 1, 26,
+ 4, 1, 8, 28, 51, 23, 51, 1, 1, 27,
+ 5, 19, 21, 51, 8, 3, 3, 11, 51, 21,
+ 24, 16, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51
+ };
+ register int hval = len;
+
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char)str[2]];
+
+ case 2:
+ case 1:
+ hval += asso_values[(unsigned char)str[0]];
+ break;
+ }
+ return hval + asso_values[(unsigned char)str[len - 1]];
+}
+
+
+__inline
+
+
+
+
+const struct kwtable *
+rb_reserved_word (str, len)
+ register const char *str;
+ register unsigned int len;
+{
+ static const struct kwtable wordlist[] =
+ {
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+# 17 "keywords"
+ {"break", {276, 276}, EXPR_MID},
+# 23 "keywords"
+ {"else", {270, 270}, EXPR_BEG},
+# 33 "keywords"
+ {"nil", {289, 289}, EXPR_END},
+# 26 "keywords"
+ {"ensure", {264, 264}, EXPR_BEG},
+# 25 "keywords"
+ {"end", {265, 265}, EXPR_END},
+# 42 "keywords"
+ {"then", {268, 268}, EXPR_BEG},
+# 34 "keywords"
+ {"not", {294, 294}, EXPR_ARG},
+# 27 "keywords"
+ {"false", {291, 291}, EXPR_END},
+# 40 "keywords"
+ {"self", {288, 288}, EXPR_END},
+# 24 "keywords"
+ {"elsif", {269, 269}, EXPR_VALUE},
+# 37 "keywords"
+ {"rescue", {263, 299}, EXPR_MID},
+# 43 "keywords"
+ {"true", {290, 290}, EXPR_END},
+# 46 "keywords"
+ {"until", {274, 298}, EXPR_VALUE},
+# 45 "keywords"
+ {"unless", {267, 296}, EXPR_VALUE},
+# 39 "keywords"
+ {"return", {285, 285}, EXPR_MID},
+# 20 "keywords"
+ {"def", {260, 260}, EXPR_FNAME},
+# 15 "keywords"
+ {"and", {292, 292}, EXPR_VALUE},
+# 22 "keywords"
+ {"do", {281, 281}, EXPR_BEG},
+# 49 "keywords"
+ {"yield", {286, 286}, EXPR_ARG},
+# 28 "keywords"
+ {"for", {275, 275}, EXPR_VALUE},
+# 44 "keywords"
+ {"undef", {261, 261}, EXPR_FNAME},
+# 35 "keywords"
+ {"or", {293, 293}, EXPR_VALUE},
+# 30 "keywords"
+ {"in", {280, 280}, EXPR_VALUE},
+# 47 "keywords"
+ {"when", {272, 272}, EXPR_VALUE},
+# 38 "keywords"
+ {"retry", {279, 279}, EXPR_END},
+# 29 "keywords"
+ {"if", {266, 295}, EXPR_VALUE},
+# 18 "keywords"
+ {"case", {271, 271}, EXPR_VALUE},
+# 36 "keywords"
+ {"redo", {278, 278}, EXPR_END},
+# 32 "keywords"
+ {"next", {277, 277}, EXPR_MID},
+# 41 "keywords"
+ {"super", {287, 287}, EXPR_ARG},
+# 31 "keywords"
+ {"module", {259, 259}, EXPR_VALUE},
+# 16 "keywords"
+ {"begin", {262, 262}, EXPR_BEG},
+# 10 "keywords"
+ {"__LINE__", {304, 304}, EXPR_END},
+# 11 "keywords"
+ {"__FILE__", {305, 305}, EXPR_END},
+# 9 "keywords"
+ {"__ENCODING__", {306, 306}, EXPR_END},
+# 13 "keywords"
+ {"END", {303, 303}, EXPR_END},
+# 14 "keywords"
+ {"alias", {300, 300}, EXPR_FNAME},
+# 12 "keywords"
+ {"BEGIN", {302, 302}, EXPR_END},
+# 21 "keywords"
+ {"defined?", {301, 301}, EXPR_ARG},
+# 19 "keywords"
+ {"class", {258, 258}, EXPR_CLASS},
+ {""}, {""},
+# 48 "keywords"
+ {"while", {273, 297}, EXPR_VALUE}
+ };
+
+ if (len <= 12 && len >= 2)
+ {
+ register int key = hash (str, len);
+
+ if (key <= 50 && key >= 0)
+ {
+ register const char *s = wordlist[key].name;
+
+ if (*str == *s && !__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (str + 1) && __builtin_constant_p (s + 1) && (__s1_len = strlen (str + 1), __s2_len = strlen (s + 1), (!((size_t)(const void *)((str + 1) + 1) - (size_t)(const void *)(str + 1) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((s + 1) + 1) - (size_t)(const void *)(s + 1) == 1) || __s2_len >= 4)) ? __builtin_strcmp (str + 1, s + 1) : (__builtin_constant_p (str + 1) && ((size_t)(const void *)((str + 1) + 1) - (size_t)(const void *)(str + 1) == 1) && (__s1_len = strlen (str + 1), __s1_len < 4) ? (__builtin_constant_p (s + 1) && ((size_t)(const void *)((s + 1) + 1) - (size_t)(const void *)(s + 1) == 1) ? __builtin_strcmp (str + 1, s + 1) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (s + 1); register int __result = (((__const unsigned char *) (__const char *) (str + 1))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (str + 1))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (str + 1))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (str + 1))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (s + 1) && ((size_t)(const void *)((s + 1) + 1) - (size_t)(const void *)(s + 1) == 1) && (__s2_len = strlen (s + 1), __s2_len < 4) ? (__builtin_constant_p (str + 1) && ((size_t)(const void *)((str + 1) + 1) - (size_t)(const void *)(str + 1) == 1) ? __builtin_strcmp (str + 1, s + 1) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (str + 1); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (s + 1))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (s + 1))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (s + 1))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (s + 1))[3]); } } __result; }))) : __builtin_strcmp (str + 1, s + 1)))); }))
+ return &wordlist[key];
+ }
+ }
+ return 0;
+}
+# 50 "keywords"
+# 6018 "parse.y" 2
+
+
+static void
+arg_ambiguous_gen(struct parser_params *parser)
+{
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "ambiguous first argument; put parentheses or even spaces");
+}
+# 6034 "parse.y"
+static int
+lvar_defined_gen(struct parser_params *parser, ID id)
+{
+
+ return (dyna_in_block_gen(parser) && dvar_defined_gen(parser, id)) || local_id_gen(parser, id);
+
+
+
+}
+
+
+static int
+parser_encode_length(struct parser_params *parser, const char *name, int len)
+{
+ int nlen;
+
+ if (len > 5 && name[nlen = len - 5] == '-') {
+ if (rb_memcicmp(name + nlen + 1, "unix", 4) == 0)
+ return nlen;
+ }
+ if (len > 4 && name[nlen = len - 5] == '-') {
+ if (rb_memcicmp(name + nlen + 1, "dos", 3) == 0)
+ return nlen;
+ if (rb_memcicmp(name + nlen + 1, "mac", 3) == 0)
+ return nlen;
+ }
+ return len;
+}
+
+static void
+parser_set_encode(struct parser_params *parser, const char *name)
+{
+ int idx = rb_enc_find_index(name);
+ rb_encoding *enc;
+
+ if (idx < 0) {
+ rb_raise(rb_eArgError, "unknown encoding name: %s", name);
+ }
+ enc = rb_enc_from_index(idx);
+ if (!((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
+ rb_raise(rb_eArgError, "%s is not ASCII compatible", (enc)->name);
+ }
+ parser->enc = enc;
+}
+
+static int
+comment_at_top(struct parser_params *parser)
+{
+ const char *p = (parser->parser_lex_pbeg), *pend = (parser->parser_lex_p) - 1;
+ if (parser->line_count != (parser->has_shebang ? 2 : 1)) return 0;
+ while (p < pend) {
+ if (!rb_isspace((unsigned char)(*p))) return 0;
+ p++;
+ }
+ return 1;
+}
+
+
+typedef int (*rb_magic_comment_length_t)(struct parser_params *parser, const char *name, int len);
+typedef void (*rb_magic_comment_setter_t)(struct parser_params *parser, const char *name, const char *val);
+
+static void
+magic_comment_encoding(struct parser_params *parser, const char *name, const char *val)
+{
+ if (!comment_at_top(parser)) {
+ rb_warning("encoding '%s' is ignored, valid only in the first line except for shebang line.",
+ val);
+ return;
+ }
+ parser_set_encode(parser, val);
+}
+
+struct magic_comment {
+ const char *name;
+ rb_magic_comment_setter_t func;
+ rb_magic_comment_length_t length;
+};
+
+static const struct magic_comment magic_comments[] = {
+ {"coding", magic_comment_encoding, parser_encode_length},
+ {"encoding", magic_comment_encoding, parser_encode_length},
+};
+
+
+static const char *
+magic_comment_marker(const char *str, int len)
+{
+ int i = 2;
+
+ while (i < len) {
+ switch (str[i]) {
+ case '-':
+ if (str[i-1] == '*' && str[i-2] == '-') {
+ return str + i + 1;
+ }
+ i += 2;
+ break;
+ case '*':
+ if (i + 1 >= len) return 0;
+ if (str[i+1] != '-') {
+ i += 4;
+ }
+ else if (str[i-1] != '-') {
+ i += 2;
+ }
+ else {
+ return str + i + 2;
+ }
+ break;
+ default:
+ i += 3;
+ break;
+ }
+ }
+ return 0;
+}
+
+static int
+parser_magic_comment(struct parser_params *parser, const char *str, int len)
+{
+ VALUE name = 0, val = 0;
+ const char *beg, *end, *vbeg, *vend;
+
+
+
+
+
+ if (len <= 7) return ((VALUE)RUBY_Qfalse);
+ if (!(beg = magic_comment_marker(str, len))) return ((VALUE)RUBY_Qfalse);
+ if (!(end = magic_comment_marker(beg, str + len - beg))) return ((VALUE)RUBY_Qfalse);
+ str = beg;
+ len = end - beg - 3;
+
+
+ while (len > 0) {
+
+ const struct magic_comment *p = magic_comments;
+
+ char *s;
+ int i, n = 0;
+
+ for (; len > 0 && *str; str++, --len) {
+ switch (*str) {
+ case '\'': case '"': case ':': case ';':
+ continue;
+ }
+ if (!rb_isspace((unsigned char)(*str))) break;
+ }
+ for (beg = str; len > 0; str++, --len) {
+ switch (*str) {
+ case '\'': case '"': case ':': case ';':
+ break;
+ default:
+ if (rb_isspace((unsigned char)(*str))) break;
+ continue;
+ }
+ break;
+ }
+ for (end = str; len > 0 && rb_isspace((unsigned char)(*str)); str++, --len);
+ if (!len) break;
+ if (*str != ':') continue;
+
+ do str++; while (--len > 0 && rb_isspace((unsigned char)(*str)));
+ if (!len) break;
+ if (*str == '"') {
+ for (vbeg = ++str; --len > 0 && *str != '"'; str++) {
+ if (*str == '\\') {
+ --len;
+ ++str;
+ }
+ }
+ vend = str;
+ if (len) {
+ --len;
+ ++str;
+ }
+ }
+ else {
+ for (vbeg = str; len > 0 && *str != '"' && *str != ';' && !rb_isspace((unsigned char)(*str)); --len, str++);
+ vend = str;
+ }
+ while (len > 0 && (*str == ';' || rb_isspace((unsigned char)(*str)))) --len, str++;
+
+ n = end - beg;
+ ((name) ? (rb_str_resize((name), (n)), memcpy(((!(((struct RBasic*)(name))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(name))->as.ary : ((struct RString*)(name))->as.heap.ptr)), ((beg)), sizeof(char)*((n))), (name)) : ((name) = rb_enc_str_new(((beg)),((n)),parser->enc)));
+ s = (!(((struct RBasic*)(name))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(name))->as.ary : ((struct RString*)(name))->as.heap.ptr);
+ for (i = 0; i < n; ++i) {
+ if (*s == '-') *s = '_';
+ }
+
+ do {
+ if ((st_strncasecmp(p->name, s, n)) == 0) {
+ n = vend - vbeg;
+ if (p->length) {
+ n = (*p->length)(parser, vbeg, n);
+ }
+ ((val) ? (rb_str_resize((val), (n)), memcpy(((!(((struct RBasic*)(val))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(val))->as.ary : ((struct RString*)(val))->as.heap.ptr)), ((vbeg)), sizeof(char)*((n))), (val)) : ((val) = rb_enc_str_new(((vbeg)),((n)),parser->enc)));
+ (*p->func)(parser, s, (!(((struct RBasic*)(val))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(val))->as.ary : ((struct RString*)(val))->as.heap.ptr));
+ break;
+ }
+ } while (++p < magic_comments + sizeof(magic_comments) / sizeof(*p));
+
+
+
+ }
+
+ return ((VALUE)RUBY_Qtrue);
+}
+
+static void
+set_file_encoding(struct parser_params *parser, const char *str, const char *send)
+{
+ int sep = 0;
+ const char *beg = str;
+ VALUE s;
+
+ for (;;) {
+ if (send - str <= 6) return;
+ switch (str[6]) {
+ case 'C': case 'c': str += 6; continue;
+ case 'O': case 'o': str += 5; continue;
+ case 'D': case 'd': str += 4; continue;
+ case 'I': case 'i': str += 3; continue;
+ case 'N': case 'n': str += 2; continue;
+ case 'G': case 'g': str += 1; continue;
+ case '=': case ':':
+ sep = 1;
+ str += 6;
+ break;
+ default:
+ str += 6;
+ if (rb_isspace((unsigned char)(*str))) break;
+ continue;
+ }
+ if ((st_strncasecmp(str-6, "coding", 6)) == 0) break;
+ }
+ for (;;) {
+ do {
+ if (++str >= send) return;
+ } while (rb_isspace((unsigned char)(*str)));
+ if (sep) break;
+ if (*str != '=' && *str != ':') return;
+ sep = 1;
+ str++;
+ }
+ beg = str;
+ while ((*str == '-' || *str == '_' || rb_isalnum((unsigned char)(*str))) && ++str < send);
+ s = rb_str_new(beg, parser_encode_length(parser, beg, str - beg));
+ parser_set_encode(parser, (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr));
+ rb_str_resize(s, 0);
+}
+
+static void
+parser_prepare(struct parser_params *parser)
+{
+ int c = parser_nextc(parser);
+ switch (c) {
+ case '#':
+ if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('!') == *(parser->parser_lex_p))) parser->has_shebang = 1;
+ break;
+ case 0xef:
+ if ((parser->parser_lex_pend) - (parser->parser_lex_p) >= 2 &&
+ (unsigned char)(parser->parser_lex_p)[0] == 0xbb &&
+ (unsigned char)(parser->parser_lex_p)[1] == 0xbf) {
+ parser->enc = rb_utf8_encoding();
+ (parser->parser_lex_p) += 2;
+ (parser->parser_lex_pbeg) = (parser->parser_lex_p);
+ return;
+ }
+ break;
+ case (-1):
+ return;
+ }
+ parser_pushback(parser, c);
+ parser->enc = rb_enc_get((parser->parser_lex_lastline));
+}
+
+
+
+
+static int
+parser_yylex(struct parser_params *parser)
+{
+ register int c;
+ int space_seen = 0;
+ int cmd_state;
+ enum lex_state_e last_state;
+ rb_encoding *enc;
+ int mb;
+
+
+
+
+ if ((parser->parser_lex_strterm)) {
+ int token;
+ if (((int) (((((struct RNode*)((parser->parser_lex_strterm))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) {
+ token = parser_here_document(parser,(parser->parser_lex_strterm));
+ if (token == 361) {
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_state) = EXPR_END;
+ }
+ }
+ else {
+ token = parser_parse_string(parser,(parser->parser_lex_strterm));
+ if (token == 361 || token == 320) {
+ rb_gc_force_recycle((VALUE)(parser->parser_lex_strterm));
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_state) = EXPR_END;
+ }
+ }
+ return token;
+ }
+ cmd_state = (parser->parser_command_start);
+ (parser->parser_command_start) = ((VALUE)RUBY_Qfalse);
+ retry:
+ switch (c = parser_nextc(parser)) {
+ case '\0':
+ case '\004':
+ case '\032':
+ case -1:
+ return 0;
+
+
+ case ' ': case '\t': case '\f': case '\r':
+ case '\13':
+ space_seen++;
+# 6374 "parse.y"
+ goto retry;
+
+ case '#':
+
+ if (!parser_magic_comment(parser, (parser->parser_lex_p), (parser->parser_lex_pend) - (parser->parser_lex_p))) {
+ if (comment_at_top(parser)) {
+ set_file_encoding(parser, (parser->parser_lex_p), (parser->parser_lex_pend));
+ }
+ }
+ (parser->parser_lex_p) = (parser->parser_lex_pend);
+
+
+
+
+
+ case '\n':
+ switch ((parser->parser_lex_state)) {
+ case EXPR_BEG:
+ case EXPR_FNAME:
+ case EXPR_DOT:
+ case EXPR_CLASS:
+ case EXPR_VALUE:
+
+
+
+
+
+
+ goto retry;
+ default:
+ break;
+ }
+ while ((c = parser_nextc(parser))) {
+ switch (c) {
+ case ' ': case '\t': case '\f': case '\r':
+ case '\13':
+ space_seen++;
+ break;
+ case '.': {
+ if ((c = parser_nextc(parser)) != '.') {
+ parser_pushback(parser, c);
+ parser_pushback(parser, '.');
+ goto retry;
+ }
+ }
+ default:
+ --(parser->parser_ruby_sourceline);
+ (parser->parser_lex_nextline) = (parser->parser_lex_lastline);
+ case -1:
+ (parser->parser_lex_p = parser->parser_lex_pend);
+
+
+
+
+
+ goto normal_newline;
+ }
+ }
+ normal_newline:
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ (parser->parser_lex_state) = EXPR_BEG;
+ return '\n';
+
+ case '*':
+ if ((c = parser_nextc(parser)) == '*') {
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 323;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ c = 323;
+ }
+ else {
+ if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '*';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`*' interpreted as argument prefix");
+ c = 350;
+ }
+ else if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ c = 350;
+ }
+ else {
+ c = '*';
+ }
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ return c;
+
+ case '!':
+ c = parser_nextc(parser);
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ if (c == '@') {
+ return '!';
+ }
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_BEG;
+ }
+ if (c == '=') {
+ return 327;
+ }
+ if (c == '~') {
+ return 333;
+ }
+ parser_pushback(parser, c);
+ return '!';
+
+ case '=':
+ if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1)) {
+
+ if ((__extension__ (__builtin_constant_p (5) && ((__builtin_constant_p ((parser->parser_lex_p)) && strlen ((parser->parser_lex_p)) < ((size_t) (5))) || (__builtin_constant_p ("begin") && strlen ("begin") < ((size_t) (5)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((parser->parser_lex_p)) && __builtin_constant_p ("begin") && (__s1_len = strlen ((parser->parser_lex_p)), __s2_len = strlen ("begin"), (!((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("begin") + 1) - (size_t)(const void *)("begin") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((parser->parser_lex_p), "begin") : (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) && (__s1_len = strlen ((parser->parser_lex_p)), __s1_len < 4) ? (__builtin_constant_p ("begin") && ((size_t)(const void *)(("begin") + 1) - (size_t)(const void *)("begin") == 1) ? __builtin_strcmp ((parser->parser_lex_p), "begin") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("begin"); register int __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("begin") && ((size_t)(const void *)(("begin") + 1) - (size_t)(const void *)("begin") == 1) && (__s2_len = strlen ("begin"), __s2_len < 4) ? (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) ? __builtin_strcmp ((parser->parser_lex_p), "begin") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((parser->parser_lex_p)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("begin"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("begin"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("begin"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("begin"))[3]); } } __result; }))) : __builtin_strcmp ((parser->parser_lex_p), "begin")))); }) : strncmp ((parser->parser_lex_p), "begin", 5))) == 0 && rb_isspace((unsigned char)((parser->parser_lex_p)[5]))) {
+
+
+
+
+
+
+ for (;;) {
+ (parser->parser_lex_p = parser->parser_lex_pend);
+
+
+
+
+
+
+ c = parser_nextc(parser);
+ if (c == -1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "embedded document meets end of file");
+ return 0;
+ }
+ if (c != '=') continue;
+ if ((__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p ((parser->parser_lex_p)) && strlen ((parser->parser_lex_p)) < ((size_t) (3))) || (__builtin_constant_p ("end") && strlen ("end") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((parser->parser_lex_p)) && __builtin_constant_p ("end") && (__s1_len = strlen ((parser->parser_lex_p)), __s2_len = strlen ("end"), (!((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((parser->parser_lex_p), "end") : (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) && (__s1_len = strlen ((parser->parser_lex_p)), __s1_len < 4) ? (__builtin_constant_p ("end") && ((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) ? __builtin_strcmp ((parser->parser_lex_p), "end") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("end"); register int __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("end") && ((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) && (__s2_len = strlen ("end"), __s2_len < 4) ? (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) ? __builtin_strcmp ((parser->parser_lex_p), "end") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((parser->parser_lex_p)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("end"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("end"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("end"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("end"))[3]); } } __result; }))) : __builtin_strcmp ((parser->parser_lex_p), "end")))); }) : strncmp ((parser->parser_lex_p), "end", 3))) == 0 &&
+ ((parser->parser_lex_p) + 3 == (parser->parser_lex_pend) || rb_isspace((unsigned char)((parser->parser_lex_p)[3])))) {
+ break;
+ }
+ }
+ (parser->parser_lex_p = parser->parser_lex_pend);
+
+
+
+ goto retry;
+ }
+ }
+
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ if ((c = parser_nextc(parser)) == '=') {
+ if ((c = parser_nextc(parser)) == '=') {
+ return 326;
+ }
+ parser_pushback(parser, c);
+ return 325;
+ }
+ if (c == '~') {
+ return 332;
+ }
+ else if (c == '>') {
+ return 343;
+ }
+ parser_pushback(parser, c);
+ return '=';
+
+ case '<':
+ c = parser_nextc(parser);
+ if (c == '<' &&
+ (parser->parser_lex_state) != EXPR_END &&
+ (parser->parser_lex_state) != EXPR_DOT &&
+ (parser->parser_lex_state) != EXPR_ENDARG &&
+ (parser->parser_lex_state) != EXPR_CLASS &&
+ (!((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) || space_seen)) {
+ int token = parser_heredoc_identifier(parser);
+ if (token) return token;
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ if (c == '=') {
+ if ((c = parser_nextc(parser)) == '>') {
+ return 324;
+ }
+ parser_pushback(parser, c);
+ return 329;
+ }
+ if (c == '<') {
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 338;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ return 338;
+ }
+ parser_pushback(parser, c);
+ return '<';
+
+ case '>':
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ if ((c = parser_nextc(parser)) == '=') {
+ return 328;
+ }
+ if (c == '>') {
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 339;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ return 339;
+ }
+ parser_pushback(parser, c);
+ return '>';
+
+ case '"':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dquote), ('"') | ((0) << (8 * 2)), 0);
+ return 354;
+
+ case '`':
+ if ((parser->parser_lex_state) == EXPR_FNAME) {
+ (parser->parser_lex_state) = EXPR_END;
+ return c;
+ }
+ if ((parser->parser_lex_state) == EXPR_DOT) {
+ if (cmd_state)
+ (parser->parser_lex_state) = EXPR_CMDARG;
+ else
+ (parser->parser_lex_state) = EXPR_ARG;
+ return c;
+ }
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_xquote), ('`') | ((0) << (8 * 2)), 0);
+ return 355;
+
+ case '\'':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_squote), ('\'') | ((0) << (8 * 2)), 0);
+ return 354;
+
+ case '?':
+ if ((parser->parser_lex_state) == EXPR_END || (parser->parser_lex_state) == EXPR_ENDARG) {
+ (parser->parser_lex_state) = EXPR_VALUE;
+ return '?';
+ }
+ c = parser_nextc(parser);
+ if (c == -1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "incomplete character syntax");
+ return 0;
+ }
+ if ((parser->enc)->is_code_ctype(c,9,parser->enc)) {
+ if (!((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
+ int c2 = 0;
+ switch (c) {
+ case ' ':
+ c2 = 's';
+ break;
+ case '\n':
+ c2 = 'n';
+ break;
+ case '\t':
+ c2 = 't';
+ break;
+ case '\v':
+ c2 = 'v';
+ break;
+ case '\r':
+ c2 = 'r';
+ break;
+ case '\f':
+ c2 = 'f';
+ break;
+ }
+ if (c2) {
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid character syntax; use ?\\%c", c2);
+ }
+ }
+ ternary:
+ parser_pushback(parser, c);
+ (parser->parser_lex_state) = EXPR_VALUE;
+ return '?';
+ }
+ parser_newtok(parser);
+ enc = parser->enc;
+ if (!((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ }
+ else if (((parser->enc)->is_code_ctype(c,13,parser->enc) || c == '_') &&
+ (parser->parser_lex_p) < (parser->parser_lex_pend) && ((parser->enc)->is_code_ctype(*(parser->parser_lex_p),13,parser->enc) || (*(parser->parser_lex_p)) == '_' || !((unsigned long)((unsigned char)(*(parser->parser_lex_p))) < 128))) {
+ goto ternary;
+ }
+ else if (c == '\\') {
+ if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('u') == *(parser->parser_lex_p))) {
+ parser_nextc(parser);
+ c = parser_tokadd_utf8(parser, &enc, 0, 0, 0);
+ if (0x80 <= c) {
+ parser_tokaddmbc(parser, c, enc);
+ }
+ else {
+ parser_tokadd(parser, c);
+ }
+ }
+ else {
+ c = parser_read_escape(parser, 0, &enc);
+ parser_tokadd(parser, c);
+ }
+ }
+ else {
+ parser_tokadd(parser, c);
+ }
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(0),parser->enc)), (VALUE)(0), (VALUE)(0));
+ (parser->parser_lex_state) = EXPR_END;
+ return 317;
+
+ case '&':
+ if ((c = parser_nextc(parser)) == '&') {
+ (parser->parser_lex_state) = EXPR_BEG;
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 330;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ return 330;
+ }
+ else if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '&';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`&' interpreted as argument prefix");
+ c = 351;
+ }
+ else if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ c = 351;
+ }
+ else {
+ c = '&';
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG;
+ }
+ return c;
+
+ case '|':
+ if ((c = parser_nextc(parser)) == '|') {
+ (parser->parser_lex_state) = EXPR_BEG;
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 331;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ return 331;
+ }
+ if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '|';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_BEG;
+ }
+ parser_pushback(parser, c);
+ return '|';
+
+ case '+':
+ c = parser_nextc(parser);
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ if (c == '@') {
+ return 321;
+ }
+ parser_pushback(parser, c);
+ return '+';
+ }
+ if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '+';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
+ (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c)))) {
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) arg_ambiguous_gen(parser);
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_pushback(parser, c);
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ c = '+';
+ goto start_num;
+ }
+ return 321;
+ }
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_pushback(parser, c);
+ return '+';
+
+ case '-':
+ c = parser_nextc(parser);
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ if (c == '@') {
+ return 322;
+ }
+ parser_pushback(parser, c);
+ return '-';
+ }
+ if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '-';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ if (c == '>') {
+ (parser->parser_lex_state) = EXPR_ARG;
+ return 352;
+ }
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
+ (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c)))) {
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) arg_ambiguous_gen(parser);
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_pushback(parser, c);
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ return 364;
+ }
+ return 322;
+ }
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_pushback(parser, c);
+ return '-';
+
+ case '.':
+ (parser->parser_lex_state) = EXPR_BEG;
+ if ((c = parser_nextc(parser)) == '.') {
+ if ((c = parser_nextc(parser)) == '.') {
+ return 335;
+ }
+ parser_pushback(parser, c);
+ return 334;
+ }
+ parser_pushback(parser, c);
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ parser_yyerror(parser, "no .<digit> floating literal anymore; put 0 before dot");
+ }
+ (parser->parser_lex_state) = EXPR_DOT;
+ return '.';
+
+ start_num:
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ {
+ int is_float, seen_point, seen_e, nondigit;
+
+ is_float = seen_point = seen_e = nondigit = 0;
+ (parser->parser_lex_state) = EXPR_END;
+ parser_newtok(parser);
+ if (c == '-' || c == '+') {
+ parser_tokadd(parser, c);
+ c = parser_nextc(parser);
+ }
+ if (c == '0') {
+ int start = (parser->parser_tokidx);
+ c = parser_nextc(parser);
+ if (c == 'x' || c == 'X') {
+
+ c = parser_nextc(parser);
+ if (c != -1 && rb_isxdigit((unsigned char)(c))) {
+ do {
+ if (c == '_') {
+ if (nondigit) break;
+ nondigit = c;
+ continue;
+ }
+ if (!rb_isxdigit((unsigned char)(c))) break;
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ } while ((c = parser_nextc(parser)) != -1);
+ }
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if ((parser->parser_tokidx) == start) {
+ parser_yyerror(parser, "numeric literal without digits");
+ }
+ else if (nondigit) goto trailing_uc;
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 16, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ if (c == 'b' || c == 'B') {
+
+ c = parser_nextc(parser);
+ if (c == '0' || c == '1') {
+ do {
+ if (c == '_') {
+ if (nondigit) break;
+ nondigit = c;
+ continue;
+ }
+ if (c != '0' && c != '1') break;
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ } while ((c = parser_nextc(parser)) != -1);
+ }
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if ((parser->parser_tokidx) == start) {
+ parser_yyerror(parser, "numeric literal without digits");
+ }
+ else if (nondigit) goto trailing_uc;
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 2, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ if (c == 'd' || c == 'D') {
+
+ c = parser_nextc(parser);
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ do {
+ if (c == '_') {
+ if (nondigit) break;
+ nondigit = c;
+ continue;
+ }
+ if (!rb_isdigit((unsigned char)(c))) break;
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ } while ((c = parser_nextc(parser)) != -1);
+ }
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if ((parser->parser_tokidx) == start) {
+ parser_yyerror(parser, "numeric literal without digits");
+ }
+ else if (nondigit) goto trailing_uc;
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 10, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ if (c == '_') {
+
+ goto octal_number;
+ }
+ if (c == 'o' || c == 'O') {
+
+ c = parser_nextc(parser);
+ if (c == -1 || c == '_' || !rb_isdigit((unsigned char)(c))) {
+ parser_yyerror(parser, "numeric literal without digits");
+ }
+ }
+ if (c >= '0' && c <= '7') {
+
+ octal_number:
+ do {
+ if (c == '_') {
+ if (nondigit) break;
+ nondigit = c;
+ continue;
+ }
+ if (c < '0' || c > '9') break;
+ if (c > '7') goto invalid_octal;
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ } while ((c = parser_nextc(parser)) != -1);
+ if ((parser->parser_tokidx) > start) {
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if (nondigit) goto trailing_uc;
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 8, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ if (nondigit) {
+ parser_pushback(parser, c);
+ goto trailing_uc;
+ }
+ }
+ if (c > '7' && c <= '9') {
+ invalid_octal:
+ parser_yyerror(parser, "Invalid octal digit");
+ }
+ else if (c == '.' || c == 'e' || c == 'E') {
+ parser_tokadd(parser, '0');
+ }
+ else {
+ parser_pushback(parser, c);
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ }
+
+ for (;;) {
+ switch (c) {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ break;
+
+ case '.':
+ if (nondigit) goto trailing_uc;
+ if (seen_point || seen_e) {
+ goto decode_num;
+ }
+ else {
+ int c0 = parser_nextc(parser);
+ if (c == -1 || !rb_isdigit((unsigned char)(c0))) {
+ parser_pushback(parser, c0);
+ goto decode_num;
+ }
+ c = c0;
+ }
+ parser_tokadd(parser, '.');
+ parser_tokadd(parser, c);
+ is_float++;
+ seen_point++;
+ nondigit = 0;
+ break;
+
+ case 'e':
+ case 'E':
+ if (nondigit) {
+ parser_pushback(parser, c);
+ c = nondigit;
+ goto decode_num;
+ }
+ if (seen_e) {
+ goto decode_num;
+ }
+ parser_tokadd(parser, c);
+ seen_e++;
+ is_float++;
+ nondigit = c;
+ c = parser_nextc(parser);
+ if (c != '-' && c != '+') continue;
+ parser_tokadd(parser, c);
+ nondigit = c;
+ break;
+
+ case '_':
+ if (nondigit) goto decode_num;
+ nondigit = c;
+ break;
+
+ default:
+ goto decode_num;
+ }
+ c = parser_nextc(parser);
+ }
+
+ decode_num:
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if (nondigit) {
+ char tmp[30];
+ trailing_uc:
+ sprintf(tmp, "trailing `%c' in number", nondigit);
+ parser_yyerror(parser, tmp);
+ }
+ if (is_float) {
+ double d = ruby_strtod((parser->parser_tokenbuf),0);
+ if ((*__errno_location ()) == 34) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Float %s out of range", (parser->parser_tokenbuf));
+ (*__errno_location ()) = 0;
+ }
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_float_new(d)), (VALUE)(0), (VALUE)(0));
+ return 315;
+ }
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 10, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+
+ case ')':
+ case ']':
+ (parser->parser_paren_nest)--;
+ case '}':
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack) >> 1) | ((parser->parser_cond_stack) & 1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack) >> 1) | ((parser->parser_cmdarg_stack) & 1));
+ if (c == ')')
+ (parser->parser_lex_state) = EXPR_END;
+ else
+ (parser->parser_lex_state) = EXPR_ENDARG;
+ return c;
+
+ case ':':
+ c = parser_nextc(parser);
+ if (c == ':') {
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
+ (parser->parser_lex_state) == EXPR_CLASS || (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen)) {
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 341;
+ }
+ (parser->parser_lex_state) = EXPR_DOT;
+ return 340;
+ }
+ if ((parser->parser_lex_state) == EXPR_END || (parser->parser_lex_state) == EXPR_ENDARG || (c != -1 && rb_isspace((unsigned char)(c)))) {
+ parser_pushback(parser, c);
+ (parser->parser_lex_state) = EXPR_BEG;
+ return ':';
+ }
+ switch (c) {
+ case '\'':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_ssym), (c) | ((0) << (8 * 2)), 0);
+ break;
+ case '"':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dsym), (c) | ((0) << (8 * 2)), 0);
+ break;
+ default:
+ parser_pushback(parser, c);
+ break;
+ }
+ (parser->parser_lex_state) = EXPR_FNAME;
+ return 353;
+
+ case '/':
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), ('/') | ((0) << (8 * 2)), 0);
+ return 356;
+ }
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '/';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen) {
+ if (!rb_isspace((unsigned char)(c))) {
+ arg_ambiguous_gen(parser);
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), ('/') | ((0) << (8 * 2)), 0);
+ return 356;
+ }
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ return '/';
+
+ case '^':
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '^';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ parser_pushback(parser, c);
+ return '^';
+
+ case ';':
+ (parser->parser_lex_state) = EXPR_BEG;
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ return ';';
+
+ case ',':
+ (parser->parser_lex_state) = EXPR_BEG;
+ return ',';
+
+ case '~':
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ if ((c = parser_nextc(parser)) != '@') {
+ parser_pushback(parser, c);
+ }
+ (parser->parser_lex_state) = EXPR_ARG;
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_BEG;
+ }
+ return '~';
+
+ case '(':
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ c = 344;
+ }
+ else if (space_seen) {
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
+ c = 345;
+ }
+ }
+ (parser->parser_paren_nest)++;
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
+ (parser->parser_lex_state) = EXPR_BEG;
+ return c;
+
+ case '[':
+ (parser->parser_paren_nest)++;
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ if ((c = parser_nextc(parser)) == ']') {
+ if ((c = parser_nextc(parser)) == '=') {
+ return 337;
+ }
+ parser_pushback(parser, c);
+ return 336;
+ }
+ parser_pushback(parser, c);
+ return '[';
+ }
+ else if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ c = 347;
+ }
+ else if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen) {
+ c = 347;
+ }
+ (parser->parser_lex_state) = EXPR_BEG;
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
+ return c;
+
+ case '{':
+ if ((parser->parser_lpar_beg) && (parser->parser_lpar_beg) == (parser->parser_paren_nest)) {
+ (parser->parser_lex_state) = EXPR_BEG;
+ (parser->parser_lpar_beg) = 0;
+ --(parser->parser_paren_nest);
+ return 362;
+ }
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) || (parser->parser_lex_state) == EXPR_END)
+ c = '{';
+ else if ((parser->parser_lex_state) == EXPR_ENDARG)
+ c = 349;
+ else
+ c = 348;
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
+ (parser->parser_lex_state) = EXPR_BEG;
+ if (c != 348) (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ return c;
+
+ case '\\':
+ c = parser_nextc(parser);
+ if (c == '\n') {
+ space_seen = 1;
+
+
+
+ goto retry;
+ }
+ parser_pushback(parser, c);
+ return '\\';
+
+ case '%':
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ int term;
+ int paren;
+
+ c = parser_nextc(parser);
+ quotation:
+ if (c == -1 || !rb_isalnum((unsigned char)(c))) {
+ term = c;
+ c = 'Q';
+ }
+ else {
+ term = parser_nextc(parser);
+ if ((parser->enc)->is_code_ctype(term,13,parser->enc) || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
+ parser_yyerror(parser, "unknown type of %string");
+ return 0;
+ }
+ }
+ if (c == -1 || term == -1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated quoted string meets end of file");
+ return 0;
+ }
+ paren = term;
+ if (term == '(') term = ')';
+ else if (term == '[') term = ']';
+ else if (term == '{') term = '}';
+ else if (term == '<') term = '>';
+ else paren = 0;
+
+ switch (c) {
+ case 'Q':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dquote), (term) | ((paren) << (8 * 2)), 0);
+ return 354;
+
+ case 'q':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_squote), (term) | ((paren) << (8 * 2)), 0);
+ return 354;
+
+ case 'W':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dword), (term) | ((paren) << (8 * 2)), 0);
+ do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
+ parser_pushback(parser, c);
+ return 357;
+
+ case 'w':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_sword), (term) | ((paren) << (8 * 2)), 0);
+ do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
+ parser_pushback(parser, c);
+ return 358;
+
+ case 'x':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_xquote), (term) | ((paren) << (8 * 2)), 0);
+ return 355;
+
+ case 'r':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), (term) | ((paren) << (8 * 2)), 0);
+ return 356;
+
+ case 's':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_ssym), (term) | ((paren) << (8 * 2)), 0);
+ (parser->parser_lex_state) = EXPR_FNAME;
+ return 353;
+
+ default:
+ parser_yyerror(parser, "unknown type of %string");
+ return 0;
+ }
+ }
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '%';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
+ goto quotation;
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ parser_pushback(parser, c);
+ return '%';
+
+ case '$':
+ last_state = (parser->parser_lex_state);
+ (parser->parser_lex_state) = EXPR_END;
+ parser_newtok(parser);
+ c = parser_nextc(parser);
+ switch (c) {
+ case '_':
+ c = parser_nextc(parser);
+ if ((!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ parser_tokadd(parser, '$');
+ parser_tokadd(parser, '_');
+ break;
+ }
+ parser_pushback(parser, c);
+ c = '_';
+
+ case '~':
+ case '*':
+ case '$':
+ case '?':
+ case '!':
+ case '@':
+ case '/':
+ case '\\':
+ case ';':
+ case ',':
+ case '.':
+ case '=':
+ case ':':
+ case '<':
+ case '>':
+ case '\"':
+ parser_tokadd(parser, '$');
+ parser_tokadd(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p((parser->parser_tokenbuf)) ? __extension__ (rb_intern2((parser->parser_tokenbuf), strlen((parser->parser_tokenbuf)))) : (rb_intern)((parser->parser_tokenbuf)));
+ return 309;
+
+ case '-':
+ parser_tokadd(parser, '$');
+ parser_tokadd(parser, c);
+ c = parser_nextc(parser);
+ if ((!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ }
+ else {
+ parser_pushback(parser, c);
+ }
+ gvar:
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p((parser->parser_tokenbuf)) ? __extension__ (rb_intern2((parser->parser_tokenbuf), strlen((parser->parser_tokenbuf)))) : (rb_intern)((parser->parser_tokenbuf)));
+ return 309;
+
+ case '&':
+ case '`':
+ case '\'':
+ case '+':
+ if (last_state == EXPR_FNAME) {
+ parser_tokadd(parser, '$');
+ parser_tokadd(parser, c);
+ goto gvar;
+ }
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_BACK_REF), (VALUE)(0), (VALUE)(c), (VALUE)(0));
+ return 319;
+
+ case '1': case '2': case '3':
+ case '4': case '5': case '6':
+ case '7': case '8': case '9':
+ parser_tokadd(parser, '$');
+ do {
+ parser_tokadd(parser, c);
+ c = parser_nextc(parser);
+ } while (c != -1 && rb_isdigit((unsigned char)(c)));
+ parser_pushback(parser, c);
+ if (last_state == EXPR_FNAME) goto gvar;
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_NTH_REF), (VALUE)(0), (VALUE)(atoi((parser->parser_tokenbuf)+1)), (VALUE)(0));
+ return 318;
+
+ default:
+ if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ parser_pushback(parser, c);
+ return '$';
+ }
+ case '0':
+ parser_tokadd(parser, '$');
+ }
+ break;
+
+ case '@':
+ c = parser_nextc(parser);
+ parser_newtok(parser);
+ parser_tokadd(parser, '@');
+ if (c == '@') {
+ parser_tokadd(parser, '@');
+ c = parser_nextc(parser);
+ }
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ if ((parser->parser_tokidx) == 1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`@%c' is not allowed as an instance variable name", c);
+ }
+ else {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`@@%c' is not allowed as a class variable name", c);
+ }
+ return 0;
+ }
+ if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ parser_pushback(parser, c);
+ return '@';
+ }
+ break;
+
+ case '_':
+ if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1) && parser_whole_match_p(parser,"__END__",7,0)) {
+ (parser->parser_ruby__end__seen) = 1;
+ parser->eofp = ((VALUE)RUBY_Qtrue);
+
+ return -1;
+
+
+
+
+
+ }
+ parser_newtok(parser);
+ break;
+
+ default:
+ if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Invalid char `\\x%02X' in expression", c);
+ goto retry;
+ }
+
+ parser_newtok(parser);
+ break;
+ }
+
+ mb = (((VALUE)1)<<(12 +8));
+ do {
+ if (!((unsigned long)((unsigned char)(c)) < 128)) mb = 0;
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ c = parser_nextc(parser);
+ } while ((!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128))));
+ switch ((parser->parser_tokenbuf)[0]) {
+ case '@': case '$':
+ parser_pushback(parser, c);
+ break;
+ default:
+ if ((c == '!' || c == '?') && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('=') == *(parser->parser_lex_p))) {
+ parser_tokadd(parser, c);
+ }
+ else {
+ parser_pushback(parser, c);
+ }
+ }
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+
+ {
+ int result = 0;
+
+ last_state = (parser->parser_lex_state);
+ switch ((parser->parser_tokenbuf)[0]) {
+ case '$':
+ (parser->parser_lex_state) = EXPR_END;
+ result = 309;
+ break;
+ case '@':
+ (parser->parser_lex_state) = EXPR_END;
+ if ((parser->parser_tokenbuf)[1] == '@')
+ result = 312;
+ else
+ result = 310;
+ break;
+
+ default:
+ if (((parser->parser_tokidx)>0?(parser->parser_tokenbuf)[(parser->parser_tokidx)-1]:0) == '!' || ((parser->parser_tokidx)>0?(parser->parser_tokenbuf)[(parser->parser_tokidx)-1]:0) == '?') {
+ result = 308;
+ }
+ else {
+ if ((parser->parser_lex_state) == EXPR_FNAME) {
+ if ((c = parser_nextc(parser)) == '=' && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('~') == *(parser->parser_lex_p)) && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('>') == *(parser->parser_lex_p)) &&
+ (!((parser->parser_lex_p) < (parser->parser_lex_pend) && ('=') == *(parser->parser_lex_p)) || ((parser->parser_lex_p) + 1 < (parser->parser_lex_pend) && (parser->parser_lex_p)[1] == '>'))) {
+ result = 307;
+ parser_tokadd(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ }
+ else {
+ parser_pushback(parser, c);
+ }
+ }
+ if (result == 0 && rb_isupper((unsigned char)((parser->parser_tokenbuf)[0]))) {
+ result = 311;
+ }
+ else {
+ result = 307;
+ }
+ }
+
+ if (((parser->parser_lex_state) == EXPR_BEG && !cmd_state) ||
+ (parser->parser_lex_state) == EXPR_ARG ||
+ (parser->parser_lex_state) == EXPR_CMDARG) {
+ if (((parser->parser_lex_p) < (parser->parser_lex_pend) && (':') == *(parser->parser_lex_p)) && !((parser->parser_lex_p) + 1 < (parser->parser_lex_pend) && (parser->parser_lex_p)[1] == ':')) {
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_nextc(parser);
+ (*((YYSTYPE*)(parser->parser_yylval))).id = rb_intern3((parser->parser_tokenbuf), (parser->parser_tokidx), parser->enc);
+ return 313;
+ }
+ }
+ if (mb == (((VALUE)1)<<(12 +8)) && (parser->parser_lex_state) != EXPR_DOT) {
+ const struct kwtable *kw;
+
+
+ kw = rb_reserved_word((parser->parser_tokenbuf), (parser->parser_tokidx));
+ if (kw) {
+ enum lex_state_e state = (parser->parser_lex_state);
+ (parser->parser_lex_state) = kw->state;
+ if (state == EXPR_FNAME) {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p(kw->name) ? __extension__ (rb_intern2(kw->name, strlen(kw->name))) : (rb_intern)(kw->name));
+ return kw->id[0];
+ }
+ if (kw->id[0] == 281) {
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ if ((parser->parser_lpar_beg) && (parser->parser_lpar_beg) == (parser->parser_paren_nest)) {
+ (parser->parser_lpar_beg) = 0;
+ --(parser->parser_paren_nest);
+ return 284;
+ }
+ if (((parser->parser_cond_stack)&1)) return 282;
+ if (((parser->parser_cmdarg_stack)&1) && state != EXPR_CMDARG)
+ return 283;
+ if (state == EXPR_ENDARG || state == EXPR_BEG)
+ return 283;
+ return 281;
+ }
+ if (state == EXPR_BEG || state == EXPR_VALUE)
+ return kw->id[0];
+ else {
+ if (kw->id[0] != kw->id[1])
+ (parser->parser_lex_state) = EXPR_BEG;
+ return kw->id[1];
+ }
+ }
+ }
+
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
+ (parser->parser_lex_state) == EXPR_DOT ||
+ ((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
+ if (cmd_state) {
+ (parser->parser_lex_state) = EXPR_CMDARG;
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_ARG;
+ }
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_END;
+ }
+ }
+ {
+ ID ident = rb_intern3((parser->parser_tokenbuf), (parser->parser_tokidx), parser->enc);
+
+ (*((YYSTYPE*)(parser->parser_yylval))).id = ident;
+ if (last_state != EXPR_DOT && (((ident)>376)&&((ident)&0x07)==0x00) && lvar_defined_gen(parser, ident)) {
+ (parser->parser_lex_state) = EXPR_END;
+ }
+ }
+ return result;
+ }
+}
+
+
+static int
+yylex(void *lval, void *p)
+
+
+
+{
+ struct parser_params *parser = (struct parser_params*)p;
+ int t;
+
+
+ parser->parser_yylval = lval;
+ parser->parser_yylval->val = ((VALUE)RUBY_Qundef);
+
+ t = parser_yylex(parser);
+# 7621 "parse.y"
+ return t;
+}
+
+
+static NODE*
+node_newnode(struct parser_params *parser, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
+{
+ NODE *n = (rb_node_newnode)(type, a0, a1, a2);
+ ((struct RNode*)(n))->flags=((((struct RNode*)(n))->flags&~(-1<<(8 +7)))|((((parser->parser_ruby_sourceline))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ return n;
+}
+
+enum node_type
+nodetype(NODE *node)
+{
+ return (enum node_type)((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8));
+}
+
+int
+nodeline(NODE *node)
+{
+ return ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
+}
+
+static NODE*
+newline_node(NODE *node)
+{
+ if (node) {
+ node = remove_begin(node);
+ node->flags |= (((VALUE)1)<<7);
+ }
+ return node;
+}
+
+static void
+fixpos(NODE *node, NODE *orig)
+{
+ if (!node) return;
+ if (!orig) return;
+ if (orig == (NODE*)1) return;
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(-1<<(8 +7)))|(((((VALUE)(((((struct RNode*)(orig)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+}
+
+static void
+parser_warning(struct parser_params *parser, NODE *node, const char *mesg)
+{
+ rb_compile_warning((parser->parser_ruby_sourcefile), ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))), "%s", mesg);
+}
+
+
+static void
+parser_warn(struct parser_params *parser, NODE *node, const char *mesg)
+{
+ rb_compile_warn((parser->parser_ruby_sourcefile), ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))), "%s", mesg);
+}
+
+
+static NODE*
+block_append_gen(struct parser_params *parser, NODE *head, NODE *tail)
+{
+ NODE *end, *h = head, *nd;
+
+ if (tail == 0) return head;
+
+ if (h == 0) return tail;
+ switch (((int) (((((struct RNode*)(h)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_SELF:
+ case NODE_TRUE:
+ case NODE_FALSE:
+ case NODE_NIL:
+ parser_warning(parser, h, "unused literal ignored");
+ return tail;
+ default:
+ h = end = node_newnode(parser, (NODE_BLOCK), (VALUE)(head), (VALUE)(0), (VALUE)(0));
+ end->u2.node = end;
+ fixpos(end, head);
+ head = end;
+ break;
+ case NODE_BLOCK:
+ end = h->u2.node;
+ break;
+ }
+
+ nd = end->u1.node;
+ switch (((int) (((((struct RNode*)(nd)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_RETURN:
+ case NODE_BREAK:
+ case NODE_NEXT:
+ case NODE_REDO:
+ case NODE_RETRY:
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) {
+ parser_warning(parser, nd, "statement not reached");
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ if (((int) (((((struct RNode*)(tail)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) {
+ tail = node_newnode(parser, (NODE_BLOCK), (VALUE)(tail), (VALUE)(0), (VALUE)(0));
+ tail->u2.node = tail;
+ }
+ end->u3.node = tail;
+ h->u2.node = tail->u2.node;
+ return head;
+}
+
+
+static NODE*
+list_append_gen(struct parser_params *parser, NODE *list, NODE *item)
+{
+ NODE *last;
+
+ if (list == 0) return node_newnode(parser, (NODE_ARRAY), (VALUE)(item), (VALUE)(1), (VALUE)(0));
+ if (list->u3.node) {
+ last = list->u3.node->u2.node;
+ }
+ else {
+ last = list;
+ }
+
+ list->u2.argc += 1;
+ last->u3.node = node_newnode(parser, (NODE_ARRAY), (VALUE)(item), (VALUE)(1), (VALUE)(0));
+ list->u3.node->u2.node = last->u3.node;
+ return list;
+}
+
+
+static NODE*
+list_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
+{
+ NODE *last;
+
+ if (head->u3.node) {
+ last = head->u3.node->u2.node;
+ }
+ else {
+ last = head;
+ }
+
+ head->u2.argc += tail->u2.argc;
+ last->u3.node = tail;
+ if (tail->u3.node) {
+ head->u3.node->u2.node = tail->u3.node->u2.node;
+ }
+ else {
+ head->u3.node->u2.node = tail;
+ }
+
+ return head;
+}
+
+static int
+literal_concat0(struct parser_params *parser, VALUE head, VALUE tail)
+{
+ if (!rb_enc_compatible(head, tail)) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "string literal encodings differ (%s / %s)",
+ (rb_enc_get(head))->name,
+ (rb_enc_get(tail))->name);
+ rb_str_resize(head, 0);
+ rb_str_resize(tail, 0);
+ return 0;
+ }
+ rb_str_buf_append(head, tail);
+ return 1;
+}
+
+
+static NODE *
+literal_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
+{
+ enum node_type htype;
+
+ if (!head) return tail;
+ if (!tail) return head;
+
+ htype = ((int) (((((struct RNode*)(head)))->flags & (((VALUE)0x7f)<<8))>>8));
+ if (htype == NODE_EVSTR) {
+ NODE *node = node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(0));
+ head = list_append_gen(parser,node,head);
+ }
+ switch (((int) (((((struct RNode*)(tail)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR:
+ if (htype == NODE_STR) {
+ if (!literal_concat0(parser, head->u1.value, tail->u1.value)) {
+ error:
+ rb_gc_force_recycle((VALUE)head);
+ rb_gc_force_recycle((VALUE)tail);
+ return 0;
+ }
+ rb_gc_force_recycle((VALUE)tail);
+ }
+ else {
+ list_append_gen(parser,head,tail);
+ }
+ break;
+
+ case NODE_DSTR:
+ if (htype == NODE_STR) {
+ if (!literal_concat0(parser, head->u1.value, tail->u1.value))
+ goto error;
+ tail->u1.value = head->u1.value;
+ rb_gc_force_recycle((VALUE)head);
+ head = tail;
+ }
+ else {
+ ((struct RNode*)(tail))->flags=((((struct RNode*)(tail))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARRAY)<<8)&(((VALUE)0x7f)<<8)));
+ tail->u1.node = node_newnode(parser, (NODE_STR), (VALUE)(tail->u1.value), (VALUE)(0), (VALUE)(0));
+ list_concat_gen(parser,head,tail);
+ }
+ break;
+
+ case NODE_EVSTR:
+ if (htype == NODE_STR) {
+ ((struct RNode*)(head))->flags=((((struct RNode*)(head))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DSTR)<<8)&(((VALUE)0x7f)<<8)));
+ head->u2.argc = 1;
+ }
+ list_append_gen(parser,head,tail);
+ break;
+ }
+ return head;
+}
+
+static NODE *
+evstr2dstr_gen(struct parser_params *parser, NODE *node)
+{
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_EVSTR) {
+ node = list_append_gen(parser,node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(0)),node);
+ }
+ return node;
+}
+
+static NODE *
+new_evstr_gen(struct parser_params *parser, NODE *node)
+{
+ NODE *head = node;
+
+ if (node) {
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR: case NODE_DSTR: case NODE_EVSTR:
+ return node;
+ }
+ }
+ return node_newnode(parser, (NODE_EVSTR), (VALUE)(0), (VALUE)((head)), (VALUE)(0));
+}
+
+static NODE *
+call_bin_op_gen(struct parser_params *parser, NODE *recv, ID id, NODE *arg1)
+{
+ value_expr_gen(parser, (recv) = remove_begin(recv));
+ value_expr_gen(parser, (arg1) = remove_begin(arg1));
+ return node_newnode(parser, (NODE_CALL), (VALUE)(recv), (VALUE)(id), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(arg1), (VALUE)(1), (VALUE)(0))));
+}
+
+static NODE *
+call_uni_op_gen(struct parser_params *parser, NODE *recv, ID id)
+{
+ value_expr_gen(parser, (recv) = remove_begin(recv));
+ return node_newnode(parser, (NODE_CALL), (VALUE)(recv), (VALUE)(id), (VALUE)(0));
+}
+
+static NODE*
+match_op_gen(struct parser_params *parser, NODE *node1, NODE *node2)
+{
+ value_expr_gen(parser, (node1) = remove_begin(node1));
+ value_expr_gen(parser, (node2) = remove_begin(node2));
+ if (node1) {
+ switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ return node_newnode(parser, (NODE_MATCH2), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
+
+ case NODE_LIT:
+ if (rb_type((VALUE)(node1->u1.value)) == RUBY_T_REGEXP) {
+ return node_newnode(parser, (NODE_MATCH2), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
+ }
+ }
+ }
+
+ if (node2) {
+ switch (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ return node_newnode(parser, (NODE_MATCH3), (VALUE)(node2), (VALUE)(node1), (VALUE)(0));
+
+ case NODE_LIT:
+ if (rb_type((VALUE)(node2->u1.value)) == RUBY_T_REGEXP) {
+ return node_newnode(parser, (NODE_MATCH3), (VALUE)(node2), (VALUE)(node1), (VALUE)(0));
+ }
+ }
+ }
+
+ return node_newnode(parser, (NODE_CALL), (VALUE)(node1), (VALUE)(332), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node2), (VALUE)(1), (VALUE)(0))));
+}
+
+static NODE*
+gettable_gen(struct parser_params *parser, ID id)
+{
+ if (id == 288) {
+ return node_newnode(parser, (NODE_SELF), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 289) {
+ return node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 290) {
+ return node_newnode(parser, (NODE_TRUE), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 291) {
+ return node_newnode(parser, (NODE_FALSE), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 305) {
+ return node_newnode(parser, (NODE_STR), (VALUE)(rb_external_str_new_with_enc((parser->parser_ruby_sourcefile), strlen((parser->parser_ruby_sourcefile)), rb_filesystem_encoding())), (VALUE)(0), (VALUE)(0));
+
+ }
+ else if (id == 304) {
+ return node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)((parser->parser_ruby_sourceline)))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 306) {
+ return node_newnode(parser, (NODE_LIT), (VALUE)(rb_enc_from_encoding(parser->enc)), (VALUE)(0), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x00)) {
+ if (dyna_in_block_gen(parser) && dvar_defined_gen(parser, id)) return node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ if (local_id_gen(parser, id)) return node_newnode(parser, (NODE_LVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+
+ return node_newnode(parser, (NODE_VCALL), (VALUE)(0), (VALUE)(id), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x03)) {
+ return node_newnode(parser, (NODE_GVAR), (VALUE)(id), (VALUE)(0), (VALUE)(rb_global_entry(id)));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x01)) {
+ return node_newnode(parser, (NODE_IVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x05)) {
+ return node_newnode(parser, (NODE_CONST), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x06)) {
+ return node_newnode(parser, (NODE_CVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ }
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "identifier %s is not valid to get", rb_id2name(id));
+ return 0;
+}
+
+static NODE*
+assignable_gen(struct parser_params *parser, ID id, NODE *val)
+{
+ if (!id) return 0;
+ if (id == 288) {
+ parser_yyerror(parser, "Can't change the value of self");
+ }
+ else if (id == 289) {
+ parser_yyerror(parser, "Can't assign to nil");
+ }
+ else if (id == 290) {
+ parser_yyerror(parser, "Can't assign to true");
+ }
+ else if (id == 291) {
+ parser_yyerror(parser, "Can't assign to false");
+ }
+ else if (id == 305) {
+ parser_yyerror(parser, "Can't assign to __FILE__");
+ }
+ else if (id == 304) {
+ parser_yyerror(parser, "Can't assign to __LINE__");
+ }
+ else if (id == 306) {
+ parser_yyerror(parser, "Can't assign to __ENCODING__");
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x00)) {
+ if (dyna_in_block_gen(parser)) {
+ if (dvar_curr_gen(parser, id)) {
+ return node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else if (dvar_defined_gen(parser, id)) {
+ return node_newnode(parser, (NODE_DASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else if (local_id_gen(parser, id)) {
+ return node_newnode(parser, (NODE_LASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else{
+ local_var_gen(parser, id);;
+ return node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ }
+ else {
+ if (!local_id_gen(parser, id)) {
+ local_var_gen(parser, id);;
+ }
+ return node_newnode(parser, (NODE_LASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x03)) {
+ return node_newnode(parser, (NODE_GASGN), (VALUE)(id), (VALUE)(val), (VALUE)(rb_global_entry(id)));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x01)) {
+ return node_newnode(parser, (NODE_IASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x05)) {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ return node_newnode(parser, (NODE_CDECL), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x06)) {
+ return node_newnode(parser, (NODE_CVASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "identifier %s is not valid to set", rb_id2name(id));
+ }
+ return 0;
+}
+
+static void
+shadowing_lvar_gen(struct parser_params *parser, ID name)
+{
+ ID uscore;
+
+ do { static ID rb_intern_id_cache; if (!rb_intern_id_cache) rb_intern_id_cache = rb_intern2("_", strlen("_")); uscore = rb_intern_id_cache; } while (0);
+ if (uscore == name) return;
+ if (dyna_in_block_gen(parser)) {
+ if (dvar_curr_gen(parser, name)) {
+ parser_yyerror(parser, "duplicated argument name");
+ }
+ else if (dvar_defined_gen(parser, name) || local_id_gen(parser, name)) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "shadowing outer local variable - %s", rb_id2name(name));
+ vtable_add((parser->parser_lvtbl)->vars, name);
+ }
+ }
+ else {
+ if (local_id_gen(parser, name)) {
+ parser_yyerror(parser, "duplicated argument name");
+ }
+ }
+}
+
+static void
+new_bv_gen(struct parser_params *parser, ID name)
+{
+ if (!name) return;
+ if (!(((name)>376)&&((name)&0x07)==0x00)) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid local variable - %s",
+ rb_id2name(name));
+ return;
+ }
+ shadowing_lvar_gen(parser, name);
+ local_var_gen(parser, name);;
+}
+
+static NODE *
+aryset_gen(struct parser_params *parser, NODE *recv, NODE *idx)
+{
+ if (recv && ((int) (((((struct RNode*)(recv)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
+ recv = (NODE *)1;
+ return node_newnode(parser, (NODE_ATTRASGN), (VALUE)(recv), (VALUE)(337), (VALUE)(idx));
+}
+
+static void
+block_dup_check_gen(struct parser_params *parser, NODE *node1, NODE *node2)
+{
+ if (node2 && node1 && ((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BLOCK_PASS) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "both block arg and actual block given");
+ }
+}
+
+ID
+rb_id_attrset(ID id)
+{
+ id &= ~0x07;
+ id |= 0x04;
+ return id;
+}
+
+static NODE *
+attrset_gen(struct parser_params *parser, NODE *recv, ID id)
+{
+ if (recv && ((int) (((((struct RNode*)(recv)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
+ recv = (NODE *)1;
+ return node_newnode(parser, (NODE_ATTRASGN), (VALUE)(recv), (VALUE)(rb_id_attrset(id)), (VALUE)(0));
+}
+
+static void
+rb_backref_error_gen(struct parser_params *parser, NODE *node)
+{
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_NTH_REF:
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Can't set variable $%ld", node->u2.argc);
+ break;
+ case NODE_BACK_REF:
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Can't set variable $%c", (int)node->u2.argc);
+ break;
+ }
+}
+
+static NODE *
+arg_concat_gen(struct parser_params *parser, NODE *node1, NODE *node2)
+{
+ if (!node2) return node1;
+ switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_BLOCK_PASS:
+ node1->u3.node = arg_concat_gen(parser,node1->u3.node,node2);
+ return node1;
+ case NODE_ARGSPUSH:
+ if (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY) break;
+ node1->u2.node = list_concat_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node1->u2.node), (VALUE)(1), (VALUE)(0)),node2);
+ ((struct RNode*)(node1))->flags=((((struct RNode*)(node1))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARGSCAT)<<8)&(((VALUE)0x7f)<<8)));
+ return node1;
+ case NODE_ARGSCAT:
+ if (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY ||
+ ((int) (((((struct RNode*)(node1->u2.node)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY) break;
+ node1->u2.node = list_concat_gen(parser,node1->u2.node,node2);
+ return node1;
+ }
+ return node_newnode(parser, (NODE_ARGSCAT), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
+}
+
+static NODE *
+arg_append_gen(struct parser_params *parser, NODE *node1, NODE *node2)
+{
+ if (!node1) return node_newnode(parser, (NODE_ARRAY), (VALUE)(node2), (VALUE)(1), (VALUE)(0));
+ switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_ARRAY:
+ return list_append_gen(parser,node1,node2);
+ case NODE_BLOCK_PASS:
+ node1->u1.node = arg_append_gen(parser,node1->u1.node,node2);
+ return node1;
+ case NODE_ARGSPUSH:
+ node1->u2.node = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node1->u2.node), (VALUE)(1), (VALUE)(0)),node2);
+ ((struct RNode*)(node1))->flags=((((struct RNode*)(node1))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARGSCAT)<<8)&(((VALUE)0x7f)<<8)));
+ return node1;
+ }
+ return node_newnode(parser, (NODE_ARGSPUSH), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
+}
+
+static NODE *
+splat_array(NODE* node)
+{
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SPLAT) node = node->u1.node;
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) return node;
+ return 0;
+}
+
+static NODE *
+node_assign_gen(struct parser_params *parser, NODE *lhs, NODE *rhs)
+{
+ if (!lhs) return 0;
+
+ switch (((int) (((((struct RNode*)(lhs)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_GASGN:
+ case NODE_IASGN:
+ case NODE_IASGN2:
+ case NODE_LASGN:
+ case NODE_DASGN:
+ case NODE_DASGN_CURR:
+ case NODE_MASGN:
+ case NODE_CDECL:
+ case NODE_CVASGN:
+ lhs->u2.node = rhs;
+ break;
+
+ case NODE_ATTRASGN:
+ case NODE_CALL:
+ lhs->u3.node = arg_append_gen(parser,lhs->u3.node,rhs);
+ break;
+
+ default:
+
+ break;
+ }
+
+ return lhs;
+}
+
+static int
+value_expr_gen(struct parser_params *parser, NODE *node)
+{
+ int cond = 0;
+
+ if (!node) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "empty expression");
+ }
+ while (node) {
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DEFN:
+ case NODE_DEFS:
+ parser_warning(parser, node, "void value expression");
+ return ((VALUE)RUBY_Qfalse);
+
+ case NODE_RETURN:
+ case NODE_BREAK:
+ case NODE_NEXT:
+ case NODE_REDO:
+ case NODE_RETRY:
+ if (!cond) parser_yyerror(parser, "void value expression");
+
+ return ((VALUE)RUBY_Qfalse);
+
+ case NODE_BLOCK:
+ while (node->u3.node) {
+ node = node->u3.node;
+ }
+ node = node->u1.node;
+ break;
+
+ case NODE_BEGIN:
+ node = node->u2.node;
+ break;
+
+ case NODE_IF:
+ if (!node->u2.node) {
+ node = node->u3.node;
+ break;
+ }
+ else if (!node->u3.node) {
+ node = node->u2.node;
+ break;
+ }
+ if (!value_expr_gen(parser, (node->u2.node) = remove_begin(node->u2.node))) return ((VALUE)RUBY_Qfalse);
+ node = node->u3.node;
+ break;
+
+ case NODE_AND:
+ case NODE_OR:
+ cond = 1;
+ node = node->u2.node;
+ break;
+
+ default:
+ return ((VALUE)RUBY_Qtrue);
+ }
+ }
+
+ return ((VALUE)RUBY_Qtrue);
+}
+
+static void
+void_expr_gen(struct parser_params *parser, NODE *node)
+{
+ const char *useless = 0;
+
+ if (!(((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) return;
+
+ if (!node) return;
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_CALL:
+ switch (node->u2.id) {
+ case '+':
+ case '-':
+ case '*':
+ case '/':
+ case '%':
+ case 323:
+ case 321:
+ case 322:
+ case '|':
+ case '^':
+ case '&':
+ case 324:
+ case '>':
+ case 328:
+ case '<':
+ case 329:
+ case 325:
+ case 327:
+ useless = rb_id2name(node->u2.id);
+ break;
+ }
+ break;
+
+ case NODE_LVAR:
+ case NODE_DVAR:
+ case NODE_GVAR:
+ case NODE_IVAR:
+ case NODE_CVAR:
+ case NODE_NTH_REF:
+ case NODE_BACK_REF:
+ useless = "a variable";
+ break;
+ case NODE_CONST:
+ useless = "a constant";
+ break;
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_DSTR:
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ useless = "a literal";
+ break;
+ case NODE_COLON2:
+ case NODE_COLON3:
+ useless = "::";
+ break;
+ case NODE_DOT2:
+ useless = "..";
+ break;
+ case NODE_DOT3:
+ useless = "...";
+ break;
+ case NODE_SELF:
+ useless = "self";
+ break;
+ case NODE_NIL:
+ useless = "nil";
+ break;
+ case NODE_TRUE:
+ useless = "true";
+ break;
+ case NODE_FALSE:
+ useless = "false";
+ break;
+ case NODE_DEFINED:
+ useless = "defined?";
+ break;
+ }
+
+ if (useless) {
+ int line = (parser->parser_ruby_sourceline);
+
+ (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "useless use of %s in void context", useless);
+ (parser->parser_ruby_sourceline) = line;
+ }
+}
+
+static void
+void_stmts_gen(struct parser_params *parser, NODE *node)
+{
+ if (!(((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) return;
+ if (!node) return;
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) return;
+
+ for (;;) {
+ if (!node->u3.node) return;
+ void_expr_gen(parser, (node->u1.node));
+ node = node->u3.node;
+ }
+}
+
+static NODE *
+remove_begin(NODE *node)
+{
+ NODE **n = &node, *n1 = node;
+ while (n1 && ((int) (((((struct RNode*)(n1)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN && n1->u2.node) {
+ *n = n1 = n1->u2.node;
+ }
+ return node;
+}
+
+static void
+reduce_nodes_gen(struct parser_params *parser, NODE **body)
+{
+ NODE *node = *body;
+
+ if (!node) {
+ *body = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ return;
+ }
+
+
+
+
+
+ while (node) {
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ end:
+ case NODE_NIL:
+ *body = 0;
+ return;
+ case NODE_RETURN:
+ *body = node = node->u1.node;
+ continue;
+ case NODE_BEGIN:
+ *body = node = node->u2.node;
+ continue;
+ case NODE_BLOCK:
+ body = &node->u2.node->u1.node;
+ break;
+ case NODE_IF:
+ if (((!node->u2.node) ? (node->u3.node ? (body = &node->u3.node, 1) : 0) : (!node->u3.node) ? (body = &node->u2.node, 1) : (reduce_nodes_gen(parser,&node->u2.node), body = &node->u3.node, 1))) break;
+ return;
+ case NODE_CASE:
+ body = &node->u2.node;
+ break;
+ case NODE_WHEN:
+ if (!((!node->u2.node) ? (node->u3.node ? (body = &node->u3.node, 1) : 0) : (!node->u3.node) ? (body = &node->u2.node, 1) : (reduce_nodes_gen(parser,&node->u2.node), body = &node->u3.node, 1))) goto end;
+ break;
+ case NODE_ENSURE:
+ if (!((!node->u1.node) ? (node->u2.node ? (body = &node->u2.node, 1) : 0) : (!node->u2.node) ? (body = &node->u1.node, 1) : (reduce_nodes_gen(parser,&node->u1.node), body = &node->u2.node, 1))) goto end;
+ break;
+ case NODE_RESCUE:
+ if (!((!node->u1.node) ? (node->u2.node ? (body = &node->u2.node, 1) : 0) : (!node->u2.node) ? (body = &node->u1.node, 1) : (reduce_nodes_gen(parser,&node->u1.node), body = &node->u2.node, 1))) goto end;
+ break;
+ default:
+ return;
+ }
+ node = *body;
+ }
+
+
+}
+
+static int
+assign_in_cond(struct parser_params *parser, NODE *node)
+{
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_MASGN:
+ parser_yyerror(parser, "multiple assignment in conditional");
+ return 1;
+
+ case NODE_LASGN:
+ case NODE_DASGN:
+ case NODE_GASGN:
+ case NODE_IASGN:
+ break;
+
+ default:
+ return 0;
+ }
+
+ switch (((int) (((((struct RNode*)(node->u2.node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_NIL:
+ case NODE_TRUE:
+ case NODE_FALSE:
+
+ parser_warn(parser, node->u2.node, "found = in conditional, should be ==");
+ return 1;
+
+ case NODE_DSTR:
+ case NODE_XSTR:
+ case NODE_DXSTR:
+ case NODE_EVSTR:
+ case NODE_DREGX:
+ default:
+ break;
+ }
+ return 1;
+}
+
+static void
+warn_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
+{
+ if (!e_option_supplied(parser)) parser_warn(parser, node, str);
+}
+
+static void
+warning_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
+{
+ if (!e_option_supplied(parser)) parser_warning(parser, node, str);
+}
+
+static void
+fixup_nodes(NODE **rootnode)
+{
+ NODE *node, *next, *head;
+
+ for (node = *rootnode; node; node = next) {
+ enum node_type type;
+ VALUE val;
+
+ next = node->u3.node;
+ head = node->u1.node;
+ rb_gc_force_recycle((VALUE)node);
+ *rootnode = next;
+ switch (type = ((int) (((((struct RNode*)(head)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DOT2:
+ case NODE_DOT3:
+ val = rb_range_new(head->u1.node->u1.value, head->u2.node->u1.value,
+ type == NODE_DOT3 ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
+ rb_gc_force_recycle((VALUE)head->u1.node);
+ rb_gc_force_recycle((VALUE)head->u2.node);
+ ((struct RNode*)(head))->flags=((((struct RNode*)(head))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
+ head->u1.value = val;
+ break;
+ default:
+ break;
+ }
+ }
+}
+
+static NODE *cond0(struct parser_params*,NODE*);
+
+static NODE*
+range_op(struct parser_params *parser, NODE *node)
+{
+ enum node_type type;
+
+ if (node == 0) return 0;
+
+ type = ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8));
+ value_expr_gen(parser, (node) = remove_begin(node));
+ if (type == NODE_LIT && (((long)(node->u1.value))&RUBY_FIXNUM_FLAG)) {
+ warn_unless_e_option(parser, node, "integer literal in conditional range");
+ return node_newnode(parser, (NODE_CALL), (VALUE)(node), (VALUE)(325), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$.") ? __extension__ (rb_intern2("$.", strlen("$."))) : (rb_intern)("$."))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$.") ? __extension__ (rb_intern2("$.", strlen("$."))) : (rb_intern)("$.")))))), (VALUE)(1), (VALUE)(0))));
+ }
+ return cond0(parser, node);
+}
+
+static int
+literal_node(NODE *node)
+{
+ if (!node) return 1;
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_DSTR:
+ case NODE_EVSTR:
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ case NODE_DSYM:
+ return 2;
+ case NODE_TRUE:
+ case NODE_FALSE:
+ case NODE_NIL:
+ return 1;
+ }
+ return 0;
+}
+
+static NODE*
+cond0(struct parser_params *parser, NODE *node)
+{
+ if (node == 0) return 0;
+ assign_in_cond(parser, node);
+
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DSTR:
+ case NODE_EVSTR:
+ case NODE_STR:
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "string literal in condition");
+ break;
+
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ warning_unless_e_option(parser, node, "regex literal in condition");
+ return node_newnode(parser, (NODE_MATCH2), (VALUE)(node), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)(0));
+
+ case NODE_AND:
+ case NODE_OR:
+ node->u1.node = cond0(parser, node->u1.node);
+ node->u2.node = cond0(parser, node->u2.node);
+ break;
+
+ case NODE_DOT2:
+ case NODE_DOT3:
+ node->u1.node = range_op(parser, node->u1.node);
+ node->u2.node = range_op(parser, node->u2.node);
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DOT2) ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_FLIP2)<<8)&(((VALUE)0x7f)<<8)));
+ else if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DOT3) ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_FLIP3)<<8)&(((VALUE)0x7f)<<8)));
+ if (!e_option_supplied(parser)) {
+ int b = literal_node(node->u1.node);
+ int e = literal_node(node->u2.node);
+ if ((b == 1 && e == 1) || (b + e >= 2 && (((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0))) {
+ parser_warn(parser, node, "range literal in condition");
+ }
+ }
+ break;
+
+ case NODE_DSYM:
+ parser_warning(parser, node, "literal in condition");
+ break;
+
+ case NODE_LIT:
+ if (rb_type((VALUE)(node->u1.value)) == RUBY_T_REGEXP) {
+ warn_unless_e_option(parser, node, "regex literal in condition");
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_MATCH)<<8)&(((VALUE)0x7f)<<8)));
+ }
+ else {
+ parser_warning(parser, node, "literal in condition");
+ }
+ default:
+ break;
+ }
+ return node;
+}
+
+static NODE*
+cond_gen(struct parser_params *parser, NODE *node)
+{
+ if (node == 0) return 0;
+ return cond0(parser, node);
+}
+
+static NODE*
+logop_gen(struct parser_params *parser, enum node_type type, NODE *left, NODE *right)
+{
+ value_expr_gen(parser, (left) = remove_begin(left));
+ if (left && ((int) (((((struct RNode*)(left)))->flags & (((VALUE)0x7f)<<8))>>8)) == type) {
+ NODE *node = left, *second;
+ while ((second = node->u2.node) != 0 && ((int) (((((struct RNode*)(second)))->flags & (((VALUE)0x7f)<<8))>>8)) == type) {
+ node = second;
+ }
+ node->u2.node = node_newnode(parser, (type), (VALUE)(second), (VALUE)(right), (VALUE)(0));
+ return left;
+ }
+ return node_newnode(parser, (type), (VALUE)(left), (VALUE)(right), (VALUE)(0));
+}
+
+static void
+no_blockarg(struct parser_params *parser, NODE *node)
+{
+ if (node && ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BLOCK_PASS) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "block argument should not be given");
+ }
+}
+
+static NODE *
+ret_args_gen(struct parser_params *parser, NODE *node)
+{
+ if (node) {
+ no_blockarg(parser, node);
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) {
+ if (node->u3.node == 0) {
+ node = node->u1.node;
+ }
+ else {
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_VALUES)<<8)&(((VALUE)0x7f)<<8)));
+ }
+ }
+ }
+ return node;
+}
+
+static NODE *
+new_yield_gen(struct parser_params *parser, NODE *node)
+{
+ long state = ((VALUE)RUBY_Qtrue);
+
+ if (node) {
+ no_blockarg(parser, node);
+ if (node && ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SPLAT) {
+ state = ((VALUE)RUBY_Qtrue);
+ }
+ }
+ else {
+ state = ((VALUE)RUBY_Qfalse);
+ }
+ return node_newnode(parser, (NODE_YIELD), (VALUE)(node), (VALUE)(0), (VALUE)(state));
+}
+
+static NODE*
+negate_lit(NODE *node)
+{
+ switch (rb_type((VALUE)(node->u1.value))) {
+ case RUBY_T_FIXNUM:
+ node->u1.value = ((VALUE)(((long)(-(((long)node->u1.value)>>(int)1)))<<1 | RUBY_FIXNUM_FLAG));
+ break;
+ case RUBY_T_BIGNUM:
+ node->u1.value = rb_funcall(node->u1.value,322,0,0);
+ break;
+ case RUBY_T_FLOAT:
+ ((struct RFloat*)(node->u1.value))->float_value = -(((struct RFloat*)(node->u1.value))->float_value);
+ break;
+ default:
+ break;
+ }
+ return node;
+}
+
+static NODE *
+arg_blk_pass(NODE *node1, NODE *node2)
+{
+ if (node2) {
+ node2->u1.node = node1;
+ return node2;
+ }
+ return node1;
+}
+
+static NODE*
+new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, ID b)
+{
+ int saved_line = (parser->parser_ruby_sourceline);
+ NODE *node;
+ NODE *i1, *i2 = 0;
+
+ node = node_newnode(parser, (NODE_ARGS), (VALUE)(o), (VALUE)(m ? m->u2.argc : 0), (VALUE)(0));
+ i1 = m ? m->u3.node : 0;
+ node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(r), (VALUE)(b), (VALUE)(0));
+
+ if (p) {
+ i2 = p->u3.node;
+ node->u3.node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(p->u1.id), (VALUE)(p->u2.argc), (VALUE)(0));
+ }
+ else if (i1) {
+ node->u3.node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ if (i1 || i2) {
+ node->u3.node->u3.node->u3.node = node_newnode(parser, (NODE_AND), (VALUE)(i1), (VALUE)(i2), (VALUE)(0));
+ }
+ (parser->parser_ruby_sourceline) = saved_line;
+ return node;
+}
+
+static void
+local_push_gen(struct parser_params *parser, int inherit_dvars)
+{
+ struct local_vars *local;
+
+ local = (struct local_vars*)ruby_xmalloc(sizeof(struct local_vars));
+ local->prev = (parser->parser_lvtbl);
+ local->args = vtable_alloc(0);
+ local->vars = vtable_alloc(inherit_dvars ? ((void*)1) : ((void *)0));
+ (parser->parser_lvtbl) = local;
+}
+
+static void
+local_pop_gen(struct parser_params *parser)
+{
+ struct local_vars *local = (parser->parser_lvtbl)->prev;
+ vtable_free((parser->parser_lvtbl)->args);
+ vtable_free((parser->parser_lvtbl)->vars);
+ ruby_xfree((parser->parser_lvtbl));
+ (parser->parser_lvtbl) = local;
+}
+
+static ID*
+vtable_tblcpy(ID *buf, const struct vtable *src)
+{
+ int i, cnt = vtable_size(src);
+
+ if (cnt > 0) {
+ buf[0] = cnt;
+ for (i = 0; i < cnt; i++) {
+ buf[i] = src->tbl[i];
+ }
+ return buf;
+ }
+ return 0;
+}
+
+static ID*
+local_tbl_gen(struct parser_params *parser)
+{
+ int cnt = vtable_size((parser->parser_lvtbl)->args) + vtable_size((parser->parser_lvtbl)->vars);
+ ID *buf;
+
+ if (cnt <= 0) return 0;
+ buf = (ID*)ruby_xmalloc2((cnt + 1),sizeof(ID));
+ vtable_tblcpy(buf+1, (parser->parser_lvtbl)->args);
+ vtable_tblcpy(buf+vtable_size((parser->parser_lvtbl)->args)+1, (parser->parser_lvtbl)->vars);
+ buf[0] = cnt;
+ return buf;
+}
+
+static int
+arg_var_gen(struct parser_params *parser, ID id)
+{
+ vtable_add((parser->parser_lvtbl)->args, id);
+ return vtable_size((parser->parser_lvtbl)->args) - 1;
+}
+
+static int
+local_var_gen(struct parser_params *parser, ID id)
+{
+ vtable_add((parser->parser_lvtbl)->vars, id);
+ return vtable_size((parser->parser_lvtbl)->vars) - 1;
+}
+
+static int
+local_id_gen(struct parser_params *parser, ID id)
+{
+ struct vtable *vars, *args;
+
+ vars = (parser->parser_lvtbl)->vars;
+ args = (parser->parser_lvtbl)->args;
+
+ while (vars && ((VALUE)(vars->prev) & ~(VALUE)3)) {
+ vars = vars->prev;
+ args = args->prev;
+ }
+
+ if (vars && vars->prev == ((void*)1)) {
+ return rb_local_defined(id);
+ }
+ else {
+ return (vtable_included(args, id) ||
+ vtable_included(vars, id));
+ }
+}
+
+static void
+dyna_push_gen(struct parser_params *parser)
+{
+ (parser->parser_lvtbl)->args = vtable_alloc((parser->parser_lvtbl)->args);
+ (parser->parser_lvtbl)->vars = vtable_alloc((parser->parser_lvtbl)->vars);
+}
+
+static void
+dyna_pop_gen(struct parser_params *parser)
+{
+ struct vtable *tmp;
+
+ tmp = (parser->parser_lvtbl)->args;
+ (parser->parser_lvtbl)->args = (parser->parser_lvtbl)->args->prev;
+ vtable_free(tmp);
+ tmp = (parser->parser_lvtbl)->vars;
+ (parser->parser_lvtbl)->vars = (parser->parser_lvtbl)->vars->prev;
+ vtable_free(tmp);
+}
+
+static int
+dyna_in_block_gen(struct parser_params *parser)
+{
+ return ((VALUE)((parser->parser_lvtbl)->vars) & ~(VALUE)3) && (parser->parser_lvtbl)->vars->prev != ((void *)0);
+}
+
+static int
+dvar_defined_gen(struct parser_params *parser, ID id)
+{
+ struct vtable *vars, *args;
+
+ args = (parser->parser_lvtbl)->args;
+ vars = (parser->parser_lvtbl)->vars;
+
+ while (((VALUE)(vars) & ~(VALUE)3)) {
+ if (vtable_included(args, id)) {
+ return 1;
+ }
+ if (vtable_included(vars, id)) {
+ return 1;
+ }
+ args = args->prev;
+ vars = vars->prev;
+ }
+
+ if (vars == ((void*)1)) {
+ return rb_dvar_defined(id);
+ }
+
+ return 0;
+}
+
+static int
+dvar_curr_gen(struct parser_params *parser, ID id)
+{
+ return (vtable_included((parser->parser_lvtbl)->args, id) ||
+ vtable_included((parser->parser_lvtbl)->vars, id));
+}
+
+VALUE rb_reg_compile(VALUE str, int options);
+VALUE rb_reg_check_preprocess(VALUE);
+
+static void
+reg_fragment_setenc_gen(struct parser_params* parser, VALUE str, int options)
+{
+ int c = (((options)>>8)&0xff);
+
+ if (c) {
+ int opt, idx;
+ rb_char_to_option_kcode(c, &opt, &idx);
+ if (idx != (((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) != 1023 ? ((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) : rb_enc_get_index(str)) &&
+ rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
+ goto error;
+ }
+ do { VALUE rb_encoding_set_obj = (str); int encoding_set_enc_index = (idx); if (encoding_set_enc_index < 1023) do { ((struct RBasic*)(rb_encoding_set_obj))->flags &= ~(1023<<(12 +10)); ((struct RBasic*)(rb_encoding_set_obj))->flags |= (encoding_set_enc_index) << (12 +10);} while (0); else rb_enc_set_index(rb_encoding_set_obj, encoding_set_enc_index); } while (0);
+ }
+ else if (((options)&32)) {
+ if (!(((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) == 0) &&
+ rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
+ c = 'n';
+ goto error;
+ }
+ rb_enc_associate(str, rb_ascii8bit_encoding());
+ }
+ else if (parser->enc == rb_usascii_encoding()) {
+ if (rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
+
+ rb_enc_associate(str, rb_usascii_encoding());
+ }
+ else {
+ rb_enc_associate(str, rb_ascii8bit_encoding());
+ }
+ }
+ return;
+
+ error:
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline),
+ "regexp encoding option '%c' differs from source encoding '%s'",
+ c, (rb_enc_get(str))->name);
+}
+
+static void
+reg_fragment_check_gen(struct parser_params* parser, VALUE str, int options)
+{
+ VALUE err;
+ reg_fragment_setenc_gen(parser, str, options);
+ err = rb_reg_check_preprocess(str);
+ if (err != ((VALUE)RUBY_Qnil)) {
+ err = rb_obj_as_string(err);
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", (!(((struct RBasic*)(err))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(err))->as.ary : ((struct RString*)(err))->as.heap.ptr));
+ (*(volatile VALUE *)&(err));
+ }
+}
+
+typedef struct {
+ struct parser_params* parser;
+ rb_encoding *enc;
+ NODE *succ_block;
+ NODE *fail_block;
+ int num;
+} reg_named_capture_assign_t;
+
+static int
+reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end,
+ int back_num, int *back_refs, OnigRegex regex, void *arg0)
+{
+ reg_named_capture_assign_t *arg = (reg_named_capture_assign_t*)arg0;
+ struct parser_params* parser = arg->parser;
+ rb_encoding *enc = arg->enc;
+ int len = name_end - name;
+ const char *s = (const char *)name;
+ ID var;
+
+ arg->num++;
+
+ if (arg->succ_block == 0) {
+ arg->succ_block = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ arg->fail_block = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+
+ if (!len || (*name != '_' && ((unsigned long)((unsigned char)(*name)) < 128) && !(enc)->is_code_ctype(*name,6,enc)) ||
+ rb_reserved_word(s, len) || !rb_enc_symname2_p(s, len, enc)) {
+ return ST_CONTINUE;
+ }
+ var = rb_intern3(s, len, enc);
+ if (dvar_defined_gen(parser, var) || local_id_gen(parser, var)) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "named capture conflicts a local variable - %s", rb_id2name(var));
+
+ }
+ arg->succ_block = block_append_gen(parser,arg->succ_block,newline_node(node_assign_gen(parser, assignable_gen(parser, var, 0), node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,(__builtin_constant_p("$~") ? __extension__ (rb_intern2("$~", strlen("$~"))) : (rb_intern)("$~")))), (VALUE)(idAREF), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)(var)<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0)))))));
+
+
+
+
+
+
+ arg->fail_block = block_append_gen(parser,arg->fail_block,newline_node(node_assign_gen(parser, assignable_gen(parser, var, 0), node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)RUBY_Qnil)), (VALUE)(0), (VALUE)(0)))));
+
+ return ST_CONTINUE;
+}
+
+static NODE *
+reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match)
+{
+ reg_named_capture_assign_t arg;
+
+ arg.parser = parser;
+ arg.enc = rb_enc_get(regexp);
+ arg.succ_block = 0;
+ arg.fail_block = 0;
+ arg.num = 0;
+ onig_foreach_name(((struct RRegexp*)(regexp))->ptr, reg_named_capture_assign_iter, (void*)&arg);
+
+ if (arg.num == 0)
+ return match;
+
+ return
+ block_append_gen(parser,newline_node(match),node_newnode(parser, (NODE_IF), (VALUE)(gettable_gen(parser,(__builtin_constant_p("$~") ? __extension__ (rb_intern2("$~", strlen("$~"))) : (rb_intern)("$~")))), (VALUE)(block_append_gen(parser,newline_node(arg.succ_block),newline_node( node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,(__builtin_constant_p("$~") ? __extension__ (rb_intern2("$~", strlen("$~"))) : (rb_intern)("$~")))), (VALUE)((__builtin_constant_p("begin") ? __extension__ (rb_intern2("begin", strlen("begin"))) : (rb_intern)("begin"))), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0))))))), (VALUE)(block_append_gen(parser,newline_node(arg.fail_block),newline_node( node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)RUBY_Qnil)), (VALUE)(0), (VALUE)(0)))))));
+# 8994 "parse.y"
+}
+
+static VALUE
+reg_compile_gen(struct parser_params* parser, VALUE str, int options)
+{
+ VALUE re;
+ VALUE err;
+
+ reg_fragment_setenc_gen(parser, str, options);
+ err = rb_errinfo();
+ re = rb_reg_compile(str, options & 0xff);
+ if (((VALUE)(re) == ((VALUE)RUBY_Qnil))) {
+ ID mesg = (__builtin_constant_p("mesg") ? __extension__ (rb_intern2("mesg", strlen("mesg"))) : (rb_intern)("mesg"));
+ VALUE m = rb_attr_get(rb_errinfo(), mesg);
+ rb_set_errinfo(err);
+ if (!((VALUE)(err) == ((VALUE)RUBY_Qnil))) {
+ rb_str_append(rb_str_cat(rb_attr_get(err, mesg), "\n", 1), m);
+ }
+ else {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", (!(((struct RBasic*)(m))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(m))->as.ary : ((struct RString*)(m))->as.heap.ptr));
+ }
+ return ((VALUE)RUBY_Qnil);
+ }
+ return re;
+}
+
+void
+rb_gc_mark_parser(void)
+{
+}
+
+NODE*
+rb_parser_append_print(VALUE vparser, NODE *node)
+{
+ NODE *prelude = 0;
+ NODE *scope = node;
+ struct parser_params *parser;
+
+ if (!node) return node;
+
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+
+ node = node->u2.node;
+
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_PRELUDE) {
+ prelude = node;
+ node = node->u2.node;
+ }
+
+ node = block_append_gen(parser,node,node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((__builtin_constant_p("print") ? __extension__ (rb_intern2("print", strlen("print"))) : (rb_intern)("print"))), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)(1), (VALUE)(0)))));
+
+
+ if (prelude) {
+ prelude->u2.node = node;
+ scope->u2.node = prelude;
+ }
+ else {
+ scope->u2.node = node;
+ }
+
+ return scope;
+}
+
+NODE *
+rb_parser_while_loop(VALUE vparser, NODE *node, int chop, int split)
+{
+ NODE *prelude = 0;
+ NODE *scope = node;
+ struct parser_params *parser;
+
+ if (!node) return node;
+
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+
+ node = node->u2.node;
+
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_PRELUDE) {
+ prelude = node;
+ node = node->u2.node;
+ }
+ if (split) {
+ node = block_append_gen(parser,node_newnode(parser, (NODE_GASGN), (VALUE)((__builtin_constant_p("$F") ? __extension__ (rb_intern2("$F", strlen("$F"))) : (rb_intern)("$F"))), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)((__builtin_constant_p("split") ? __extension__ (rb_intern2("split", strlen("split"))) : (rb_intern)("split"))), (VALUE)(0))), (VALUE)(rb_global_entry((__builtin_constant_p("$F") ? __extension__ (rb_intern2("$F", strlen("$F"))) : (rb_intern)("$F"))))),node);
+
+
+
+ }
+ if (chop) {
+ node = block_append_gen(parser,node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)((__builtin_constant_p("chop!") ? __extension__ (rb_intern2("chop!", strlen("chop!"))) : (rb_intern)("chop!"))), (VALUE)(0)),node);
+
+ }
+
+ node = node_newnode(parser, (NODE_OPT_N), (VALUE)(0), (VALUE)(node), (VALUE)(0));
+
+ if (prelude) {
+ prelude->u2.node = node;
+ scope->u2.node = prelude;
+ }
+ else {
+ scope->u2.node = node;
+ }
+
+ return scope;
+}
+
+static const struct {
+ ID token;
+ const char *name;
+} op_tbl[] = {
+ {334, ".."},
+ {335, "..."},
+ {'+', "+(binary)"},
+ {'-', "-(binary)"},
+ {323, "**"},
+ {321, "+@"},
+ {322, "-@"},
+ {324, "<=>"},
+ {328, ">="},
+ {329, "<="},
+ {325, "=="},
+ {326, "==="},
+ {327, "!="},
+ {332, "=~"},
+ {333, "!~"},
+ {336, "[]"},
+ {337, "[]="},
+ {338, "<<"},
+ {339, ">>"},
+ {340, "::"},
+};
+
+
+
+static struct symbols {
+ ID last_id;
+ st_table *sym_id;
+ st_table *id_str;
+ st_table *ivar2_id;
+ st_table *id_ivar2;
+ VALUE op_sym[376];
+} global_symbols = {tLAST_ID};
+
+static const struct st_hash_type symhash = {
+ rb_str_hash_cmp,
+ rb_str_hash,
+};
+
+struct ivar2_key {
+ ID id;
+ VALUE klass;
+};
+
+static int
+ivar2_cmp(struct ivar2_key *key1, struct ivar2_key *key2)
+{
+ if (key1->id == key2->id && key1->klass == key2->klass) {
+ return 0;
+ }
+ return 1;
+}
+
+static int
+ivar2_hash(struct ivar2_key *key)
+{
+ return (key->id << 8) ^ (key->klass >> 2);
+}
+
+static const struct st_hash_type ivar2_hash_type = {
+ ivar2_cmp,
+ ivar2_hash,
+};
+
+void
+Init_sym(void)
+{
+ global_symbols.sym_id = st_init_table_with_size(&symhash, 1000);
+ global_symbols.id_str = st_init_numtable_with_size(1000);
+ global_symbols.ivar2_id = st_init_table_with_size(&ivar2_hash_type, 1000);
+ global_symbols.id_ivar2 = st_init_numtable_with_size(1000);
+
+ Init_id();
+}
+
+void
+rb_gc_mark_symbols(void)
+{
+ rb_mark_tbl(global_symbols.id_str);
+ rb_gc_mark_locations(global_symbols.op_sym,
+ global_symbols.op_sym + 376);
+}
+
+static ID
+internal_id_gen(struct parser_params *parser)
+{
+ ID id = (ID)vtable_size((parser->parser_lvtbl)->args) + (ID)vtable_size((parser->parser_lvtbl)->vars);
+ id += ((376 - 0x07) >> 3) + 1;
+ return 0x07 | (id << 3);
+}
+
+static int
+is_special_global_name(const char *m, const char *e, rb_encoding *enc)
+{
+ int mb = 0;
+
+ if (m >= e) return 0;
+ switch (*m) {
+ case '~': case '*': case '$': case '?': case '!': case '@':
+ case '/': case '\\': case ';': case ',': case '.': case '=':
+ case ':': case '<': case '>': case '\"':
+ case '&': case '`': case '\'': case '+':
+ case '0':
+ ++m;
+ break;
+ case '-':
+ ++m;
+ if (m < e && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) {
+ if (!((unsigned long)((unsigned char)(*m)) < 128)) mb = 1;
+ m += rb_enc_mbclen(m, e, enc);
+ }
+ break;
+ default:
+ if (!(enc)->is_code_ctype(*m,4,enc)) return 0;
+ do {
+ if (!((unsigned long)((unsigned char)(*m)) < 128)) mb = 1;
+ ++m;
+ } while ((enc)->is_code_ctype(*m,4,enc));
+ }
+ return m == e ? mb + 1 : 0;
+}
+
+int
+rb_symname_p(const char *name)
+{
+ return rb_enc_symname_p(name, rb_ascii8bit_encoding());
+}
+
+int
+rb_enc_symname_p(const char *name, rb_encoding *enc)
+{
+ return rb_enc_symname2_p(name, strlen(name), enc);
+}
+
+int
+rb_enc_symname2_p(const char *name, int len, rb_encoding *enc)
+{
+ const char *m = name;
+ const char *e = m + len;
+ int localid = ((VALUE)RUBY_Qfalse);
+
+ if (!m) return ((VALUE)RUBY_Qfalse);
+ switch (*m) {
+ case '\0':
+ return ((VALUE)RUBY_Qfalse);
+
+ case '$':
+ if (is_special_global_name(++m, e, enc)) return ((VALUE)RUBY_Qtrue);
+ goto id;
+
+ case '@':
+ if (*++m == '@') ++m;
+ goto id;
+
+ case '<':
+ switch (*++m) {
+ case '<': ++m; break;
+ case '=': if (*++m == '>') ++m; break;
+ default: break;
+ }
+ break;
+
+ case '>':
+ switch (*++m) {
+ case '>': case '=': ++m; break;
+ }
+ break;
+
+ case '=':
+ switch (*++m) {
+ case '~': ++m; break;
+ case '=': if (*++m == '=') ++m; break;
+ default: return ((VALUE)RUBY_Qfalse);
+ }
+ break;
+
+ case '*':
+ if (*++m == '*') ++m;
+ break;
+
+ case '+': case '-':
+ if (*++m == '@') ++m;
+ break;
+
+ case '|': case '^': case '&': case '/': case '%': case '~': case '`':
+ ++m;
+ break;
+
+ case '[':
+ if (*++m != ']') return ((VALUE)RUBY_Qfalse);
+ if (*++m == '=') ++m;
+ break;
+
+ case '!':
+ switch (*++m) {
+ case '\0': return ((VALUE)RUBY_Qtrue);
+ case '=': case '~': ++m; break;
+ default: return ((VALUE)RUBY_Qfalse);
+ }
+ break;
+
+ default:
+ localid = !(enc)->is_code_ctype(*m,10,enc);
+ id:
+ if (m >= e || (*m != '_' && !(enc)->is_code_ctype(*m,1,enc) && ((unsigned long)((unsigned char)(*m)) < 128)))
+ return ((VALUE)RUBY_Qfalse);
+ while (m < e && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) m += rb_enc_mbclen(m, e, enc);
+ if (localid) {
+ switch (*m) {
+ case '!': case '?': case '=': ++m;
+ }
+ }
+ break;
+ }
+ return *m ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
+}
+
+static ID
+register_symid(ID id, const char *name, long len, rb_encoding *enc)
+{
+ VALUE str = rb_enc_str_new(name, len, enc);
+ do {if ((!(((VALUE)((str)) & RUBY_IMMEDIATE_MASK) || !(((VALUE)((str)) & ~((VALUE)RUBY_Qnil)) != 0)) && (((struct RBasic*)((str)))->flags & RUBY_T_MASK) != RUBY_T_NODE)) ((struct RBasic*)((str)))->flags |= ((((VALUE)1)<<11));} while (0);
+ st_add_direct(global_symbols.sym_id, (st_data_t)str, id);
+ st_add_direct(global_symbols.id_str, id, (st_data_t)str);
+ return id;
+}
+
+ID
+rb_intern3(const char *name, long len, rb_encoding *enc)
+{
+ const char *m = name;
+ const char *e = m + len;
+ unsigned char c;
+ VALUE str;
+ ID id;
+ int last;
+ int mb;
+ struct RString fake_str;
+ fake_str.basic.flags = RUBY_T_STRING|(((VALUE)1)<<(12 +1))|(((VALUE)1)<<11);
+ fake_str.basic.klass = rb_cString;
+ fake_str.as.heap.len = len;
+ fake_str.as.heap.ptr = (char *)name;
+ fake_str.as.heap.aux.capa = len;
+ str = (VALUE)&fake_str;
+ rb_enc_associate(str, enc);
+
+ if (st_lookup(global_symbols.sym_id, str, (st_data_t *)&id))
+ return id;
+
+ if (rb_cString && !((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
+ id = 0x07;
+ goto new_id;
+ }
+ last = len-1;
+ id = 0;
+ switch (*m) {
+ case '$':
+ id |= 0x03;
+ if ((mb = is_special_global_name(++m, e, enc)) != 0) {
+ if (!--mb) enc = rb_ascii8bit_encoding();
+ goto new_id;
+ }
+ break;
+ case '@':
+ if (m[1] == '@') {
+ m++;
+ id |= 0x06;
+ }
+ else {
+ id |= 0x01;
+ }
+ m++;
+ break;
+ default:
+ c = m[0];
+ if (c != '_' && ((c) < 128) && (enc)->is_code_ctype(c,8,enc)) {
+
+ int i;
+
+ if (len == 1) {
+ id = c;
+ goto id_register;
+ }
+ for (i = 0; i < (sizeof(op_tbl) / sizeof(op_tbl[0])); i++) {
+ if (*op_tbl[i].name == *m &&
+ __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (op_tbl[i].name) && __builtin_constant_p (m) && (__s1_len = strlen (op_tbl[i].name), __s2_len = strlen (m), (!((size_t)(const void *)((op_tbl[i].name) + 1) - (size_t)(const void *)(op_tbl[i].name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((m) + 1) - (size_t)(const void *)(m) == 1) || __s2_len >= 4)) ? __builtin_strcmp (op_tbl[i].name, m) : (__builtin_constant_p (op_tbl[i].name) && ((size_t)(const void *)((op_tbl[i].name) + 1) - (size_t)(const void *)(op_tbl[i].name) == 1) && (__s1_len = strlen (op_tbl[i].name), __s1_len < 4) ? (__builtin_constant_p (m) && ((size_t)(const void *)((m) + 1) - (size_t)(const void *)(m) == 1) ? __builtin_strcmp (op_tbl[i].name, m) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (m); register int __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (m) && ((size_t)(const void *)((m) + 1) - (size_t)(const void *)(m) == 1) && (__s2_len = strlen (m), __s2_len < 4) ? (__builtin_constant_p (op_tbl[i].name) && ((size_t)(const void *)((op_tbl[i].name) + 1) - (size_t)(const void *)(op_tbl[i].name) == 1) ? __builtin_strcmp (op_tbl[i].name, m) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (op_tbl[i].name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (m))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (m))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (m))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (m))[3]); } } __result; }))) : __builtin_strcmp (op_tbl[i].name, m)))); }) == 0) {
+ id = op_tbl[i].token;
+ goto id_register;
+ }
+ }
+ }
+
+ if (m[last] == '=') {
+
+ id = rb_intern3(name, last, enc);
+ if (id > 376 && !(((id)>376)&&((id)&0x07)==0x04)) {
+ enc = rb_enc_get(rb_id2str(id));
+ id = rb_id_attrset(id);
+ goto id_register;
+ }
+ id = 0x04;
+ }
+ else if ((enc)->is_code_ctype(m[0],10,enc)) {
+ id = 0x05;
+ }
+ else {
+ id = 0x00;
+ }
+ break;
+ }
+ mb = 0;
+ if (!(enc)->is_code_ctype(*m,4,enc)) {
+ while (m <= name + last && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) {
+ if (((unsigned long)((unsigned char)(*m)) < 128)) {
+ m++;
+ }
+ else {
+ mb = 1;
+ m += rb_enc_mbclen(m, e, enc);
+ }
+ }
+ }
+ if (m - name < len) id = 0x07;
+ if (enc != rb_usascii_encoding()) {
+
+
+
+
+ if (!mb) {
+ for (; m <= name + len; ++m) {
+ if (!((unsigned long)((unsigned char)(*m)) < 128)) goto mbstr;
+ }
+ enc = rb_usascii_encoding();
+ }
+ mbstr:;
+ }
+ new_id:
+ id |= ++global_symbols.last_id << 3;
+ id_register:
+ return register_symid(id, name, len, enc);
+}
+
+ID
+rb_intern2(const char *name, long len)
+{
+ return rb_intern3(name, len, rb_usascii_encoding());
+}
+
+
+ID
+rb_intern(const char *name)
+{
+ return rb_intern2(name, strlen(name));
+}
+
+ID
+rb_intern_str(VALUE str)
+{
+ rb_encoding *enc;
+ ID id;
+
+ if (rb_enc_str_coderange(str) == (((VALUE)1)<<(12 +8))) {
+ enc = rb_usascii_encoding();
+ }
+ else {
+ enc = rb_enc_get(str);
+ }
+ id = rb_intern3((!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr), (!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(str))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(str))->as.heap.len), enc);
+ (*(volatile VALUE *)&(str));
+ return id;
+}
+
+VALUE
+rb_id2str(ID id)
+{
+ st_data_t data;
+
+ if (id < 376) {
+ int i = 0;
+
+ if (rb_ispunct(id)) {
+ VALUE str = global_symbols.op_sym[i = (int)id];
+ if (!str) {
+ char name[2];
+ name[0] = (char)id;
+ name[1] = 0;
+ str = rb_usascii_str_new(name, 1);
+ do {if ((!(((VALUE)((str)) & RUBY_IMMEDIATE_MASK) || !(((VALUE)((str)) & ~((VALUE)RUBY_Qnil)) != 0)) && (((struct RBasic*)((str)))->flags & RUBY_T_MASK) != RUBY_T_NODE)) ((struct RBasic*)((str)))->flags |= ((((VALUE)1)<<11));} while (0);
+ global_symbols.op_sym[i] = str;
+ }
+ return str;
+ }
+ for (i = 0; i < (sizeof(op_tbl) / sizeof(op_tbl[0])); i++) {
+ if (op_tbl[i].token == id) {
+ VALUE str = global_symbols.op_sym[i];
+ if (!str) {
+ str = __extension__ ( { (__builtin_constant_p(op_tbl[i].name)) ? rb_usascii_str_new(op_tbl[i].name, strlen(op_tbl[i].name)) : rb_usascii_str_new_cstr(op_tbl[i].name); });
+ do {if ((!(((VALUE)((str)) & RUBY_IMMEDIATE_MASK) || !(((VALUE)((str)) & ~((VALUE)RUBY_Qnil)) != 0)) && (((struct RBasic*)((str)))->flags & RUBY_T_MASK) != RUBY_T_NODE)) ((struct RBasic*)((str)))->flags |= ((((VALUE)1)<<11));} while (0);
+ global_symbols.op_sym[i] = str;
+ }
+ return str;
+ }
+ }
+ }
+
+ if (st_lookup(global_symbols.id_str, id, &data)) {
+ VALUE str = (VALUE)data;
+ if (((struct RBasic*)(str))->klass == 0)
+ ((struct RBasic*)(str))->klass = rb_cString;
+ return str;
+ }
+
+ if ((((id)>376)&&((id)&0x07)==0x04)) {
+ ID id2 = (id & ~0x07) | 0x00;
+ VALUE str;
+
+ while (!(str = rb_id2str(id2))) {
+ if (!(((id2)>376)&&((id2)&0x07)==0x00)) return 0;
+ id2 = (id & ~0x07) | 0x05;
+ }
+ str = rb_str_dup(str);
+ rb_str_cat(str, "=", 1);
+ rb_intern_str(str);
+ if (st_lookup(global_symbols.id_str, id, &data)) {
+ VALUE str = (VALUE)data;
+ if (((struct RBasic*)(str))->klass == 0)
+ ((struct RBasic*)(str))->klass = rb_cString;
+ return str;
+ }
+ }
+ return 0;
+}
+
+const char *
+rb_id2name(ID id)
+{
+ VALUE str = rb_id2str(id);
+
+ if (!str) return 0;
+ return (!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr);
+}
+
+static int
+symbols_i(VALUE sym, ID value, VALUE ary)
+{
+ rb_ary_push(ary, (((VALUE)(value)<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG));
+ return ST_CONTINUE;
+}
+# 9566 "parse.y"
+VALUE
+rb_sym_all_symbols(void)
+{
+ VALUE ary = rb_ary_new2(global_symbols.sym_id->num_entries);
+
+ st_foreach(global_symbols.sym_id, symbols_i, ary);
+ return ary;
+}
+
+int
+rb_is_const_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x05)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+
+int
+rb_is_class_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x06)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+
+int
+rb_is_instance_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x01)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+
+int
+rb_is_local_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x00)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+
+int
+rb_is_junk_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x07)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+
+
+
+static void
+parser_initialize(struct parser_params *parser)
+{
+ parser->eofp = ((VALUE)RUBY_Qfalse);
+
+ parser->parser_lex_strterm = 0;
+ parser->parser_cond_stack = 0;
+ parser->parser_cmdarg_stack = 0;
+ parser->parser_class_nest = 0;
+ parser->parser_paren_nest = 0;
+ parser->parser_lpar_beg = 0;
+ parser->parser_in_single = 0;
+ parser->parser_in_def = 0;
+ parser->parser_in_defined = 0;
+ parser->parser_compile_for_eval = 0;
+ parser->parser_cur_mid = 0;
+ parser->parser_tokenbuf = ((void *)0);
+ parser->parser_tokidx = 0;
+ parser->parser_toksiz = 0;
+ parser->parser_heredoc_end = 0;
+ parser->parser_command_start = ((VALUE)RUBY_Qtrue);
+ parser->parser_deferred_nodes = 0;
+ parser->parser_lex_pbeg = 0;
+ parser->parser_lex_p = 0;
+ parser->parser_lex_pend = 0;
+ parser->parser_lvtbl = 0;
+ parser->parser_ruby__end__seen = 0;
+ parser->parser_ruby_sourcefile = 0;
+
+ parser->is_ripper = 0;
+ parser->parser_eval_tree_begin = 0;
+ parser->parser_eval_tree = 0;
+# 9654 "parse.y"
+ parser->heap = ((void *)0);
+
+ parser->enc = rb_usascii_encoding();
+}
+
+
+
+
+
+
+static void
+parser_mark(void *ptr)
+{
+ struct parser_params *p = (struct parser_params*)ptr;
+
+ rb_gc_mark((VALUE)p->parser_lex_strterm);
+ rb_gc_mark((VALUE)p->parser_deferred_nodes);
+ rb_gc_mark(p->parser_lex_input);
+ rb_gc_mark(p->parser_lex_lastline);
+ rb_gc_mark(p->parser_lex_nextline);
+
+ rb_gc_mark((VALUE)p->parser_eval_tree_begin) ;
+ rb_gc_mark((VALUE)p->parser_eval_tree) ;
+ rb_gc_mark(p->debug_lines);
+# 9686 "parse.y"
+ rb_gc_mark((VALUE)p->heap);
+
+}
+
+static void
+parser_free(void *ptr)
+{
+ struct parser_params *p = (struct parser_params*)ptr;
+ struct local_vars *local, *prev;
+
+ if (p->parser_tokenbuf) {
+ ruby_xfree(p->parser_tokenbuf);
+ }
+ for (local = p->parser_lvtbl; local; local = prev) {
+ if (local->vars) ruby_xfree(local->vars);
+ prev = local->prev;
+ ruby_xfree(local);
+ }
+
+ ruby_xfree(p->parser_ruby_sourcefile);
+
+ ruby_xfree(p);
+}
+
+VALUE rb_parser_get_yydebug(VALUE);
+VALUE rb_parser_set_yydebug(VALUE, VALUE);
+
+
+static struct parser_params *
+parser_new(void)
+{
+ struct parser_params *p;
+
+ p = (struct parser_params*)ruby_xmalloc2((1),sizeof(struct parser_params));
+ memset((p), 0, sizeof(struct parser_params)*(1));
+ parser_initialize(p);
+ return p;
+}
+
+VALUE
+rb_parser_new(void)
+{
+ struct parser_params *p = parser_new();
+
+ return rb_data_object_alloc(0,p,(RUBY_DATA_FUNC)parser_mark,(RUBY_DATA_FUNC)parser_free);
+}
+# 9740 "parse.y"
+VALUE
+rb_parser_end_seen_p(VALUE vparser)
+{
+ struct parser_params *parser;
+
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ return (parser->parser_ruby__end__seen) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
+}
+
+
+
+
+
+
+
+VALUE
+rb_parser_encoding(VALUE vparser)
+{
+ struct parser_params *parser;
+
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ return rb_enc_from_encoding(parser->enc);
+}
+
+
+
+
+
+
+
+VALUE
+rb_parser_get_yydebug(VALUE self)
+{
+ struct parser_params *parser;
+
+ do { rb_check_type((VALUE)(self),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(self))->data);} while (0);
+ return (parser->parser_yydebug) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
+}
+
+
+
+
+
+
+
+VALUE
+rb_parser_set_yydebug(VALUE self, VALUE flag)
+{
+ struct parser_params *parser;
+
+ do { rb_check_type((VALUE)(self),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(self))->data);} while (0);
+ (parser->parser_yydebug) = (((VALUE)(flag) & ~((VALUE)RUBY_Qnil)) != 0);
+ return flag;
+}
+
+
+
+
+
+
+
+void *
+rb_parser_malloc(struct parser_params *parser, size_t size)
+{
+ size_t cnt = ((1) * (size) / sizeof(YYSTYPE));
+ NODE *n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
+ void *ptr = ruby_xmalloc(size);
+
+ return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
+}
+
+void *
+rb_parser_calloc(struct parser_params *parser, size_t nelem, size_t size)
+{
+ size_t cnt = ((nelem) * (size) / sizeof(YYSTYPE));
+ NODE *n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
+ void *ptr = ruby_xcalloc(nelem, size);
+
+ return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
+}
+
+void *
+rb_parser_realloc(struct parser_params *parser, void *ptr, size_t size)
+{
+ NODE *n;
+ size_t cnt = ((1) * (size) / sizeof(YYSTYPE));
+
+ if (ptr && (n = parser->heap) != ((void *)0)) {
+ do {
+ if (n->u1.node == ptr) {
+ n->u1.node = ptr = ruby_xrealloc(ptr, size);
+ if (n->u3.cnt) n->u3.cnt = cnt;
+ return ptr;
+ }
+ } while ((n = n->u2.node) != ((void *)0));
+ }
+ n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
+ ptr = ruby_xrealloc(ptr, size);
+ return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
+}
+
+void
+rb_parser_free(struct parser_params *parser, void *ptr)
+{
+ NODE **prev = &parser->heap, *n;
+
+ while ((n = *prev) != ((void *)0)) {
+ if (n->u1.node == ptr) {
+ *prev = n->u2.node;
+ rb_gc_force_recycle((VALUE)n);
+ break;
+ }
+ prev = &n->u2.node;
+ }
+ ruby_xfree(ptr);
+}
--- /dev/null
+ enum yytokentype {
+ keyword_class = 258,
+ keyword_module = 259,
+ keyword_def = 260,
+ keyword_undef = 261,
+ keyword_begin = 262,
+ keyword_rescue = 263,
+ keyword_ensure = 264,
+ keyword_end = 265,
+ keyword_if = 266,
+ keyword_unless = 267,
+ keyword_then = 268,
+ keyword_elsif = 269,
+ keyword_else = 270,
+ keyword_case = 271,
+ keyword_when = 272,
+ keyword_while = 273,
+ keyword_until = 274,
+ keyword_for = 275,
+ keyword_break = 276,
+ keyword_next = 277,
+ keyword_redo = 278,
+ keyword_retry = 279,
+ keyword_in = 280,
+ keyword_do = 281,
+ keyword_do_cond = 282,
+ keyword_do_block = 283,
+ keyword_do_LAMBDA = 284,
+ keyword_return = 285,
+ keyword_yield = 286,
+ keyword_super = 287,
+ keyword_self = 288,
+ keyword_nil = 289,
+ keyword_true = 290,
+ keyword_false = 291,
+ keyword_and = 292,
+ keyword_or = 293,
+ keyword_not = 294,
+ modifier_if = 295,
+ modifier_unless = 296,
+ modifier_while = 297,
+ modifier_until = 298,
+ modifier_rescue = 299,
+ keyword_alias = 300,
+ keyword_defined = 301,
+ keyword_BEGIN = 302,
+ keyword_END = 303,
+ keyword__LINE__ = 304,
+ keyword__FILE__ = 305,
+ keyword__ENCODING__ = 306,
+ tIDENTIFIER = 307,
+ tFID = 308,
+ tGVAR = 309,
+ tIVAR = 310,
+ tCONSTANT = 311,
+ tCVAR = 312,
+ tLABEL = 313,
+ tINTEGER = 314,
+ tFLOAT = 315,
+ tSTRING_CONTENT = 316,
+ tCHAR = 317,
+ tNTH_REF = 318,
+ tBACK_REF = 319,
+ tREGEXP_END = 320,
+ tUPLUS = 321,
+ tUMINUS = 322,
+ tPOW = 323,
+ tCMP = 324,
+ tEQ = 325,
+ tEQQ = 326,
+ tNEQ = 327,
+ tGEQ = 328,
+ tLEQ = 329,
+ tANDOP = 330,
+ tOROP = 331,
+ tMATCH = 332,
+ tNMATCH = 333,
+ tDOT2 = 334,
+ tDOT3 = 335,
+ tAREF = 336,
+ tASET = 337,
+ tLSHFT = 338,
+ tRSHFT = 339,
+ tCOLON2 = 340,
+ tCOLON3 = 341,
+ tOP_ASGN = 342,
+ tASSOC = 343,
+ tLPAREN = 344,
+ tLPAREN_ARG = 345,
+ tRPAREN = 346,
+ tLBRACK = 347,
+ tLBRACE = 348,
+ tLBRACE_ARG = 349,
+ tSTAR = 350,
+ tAMPER = 351,
+ tLAMBDA = 352,
+ tSYMBEG = 353,
+ tSTRING_BEG = 354,
+ tXSTRING_BEG = 355,
+ tREGEXP_BEG = 356,
+ tWORDS_BEG = 357,
+ tQWORDS_BEG = 358,
+ tSTRING_DBEG = 359,
+ tSTRING_DVAR = 360,
+ tSTRING_END = 361,
+ tLAMBEG = 362,
+ tLOWEST = 363,
+ tUMINUS_NUM = 364,
+ idNULL = 365,
+ idRespond_to = 366,
+ idIFUNC = 367,
+ idCFUNC = 368,
+ idThrowState = 369,
+ id_core_set_method_alias = 370,
+ id_core_set_variable_alias = 371,
+ id_core_undef_method = 372,
+ id_core_define_method = 373,
+ id_core_define_singleton_method = 374,
+ id_core_set_postexe = 375,
+ tLAST_TOKEN = 376
+ };
+typedef unsigned int size_t;
+typedef int wchar_t;
+union wait
+ {
+ int w_status;
+ struct
+ {
+ unsigned int __w_termsig:7;
+ unsigned int __w_coredump:1;
+ unsigned int __w_retcode:8;
+ unsigned int:16;
+ } __wait_terminated;
+ struct
+ {
+ unsigned int __w_stopval:8;
+ unsigned int __w_stopsig:8;
+ unsigned int:16;
+ } __wait_stopped;
+ };
+typedef union
+ {
+ union wait *__uptr;
+ int *__iptr;
+ } __WAIT_STATUS __attribute__ ((__transparent_union__));
+typedef struct
+ {
+ int quot;
+ int rem;
+ } div_t;
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } ldiv_t;
+__extension__ typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } lldiv_t;
+extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;
+extern double atof (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern int atoi (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern long int atol (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__ extern long long int atoll (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern double strtod (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern float strtof (__const char *__restrict __nptr,
+ char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern long double strtold (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern long int strtol (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+typedef struct __locale_struct
+{
+ struct locale_data *__locales[13];
+ const unsigned short int *__ctype_b;
+ const int *__ctype_tolower;
+ const int *__ctype_toupper;
+ const char *__names[13];
+} *__locale_t;
+extern long int strtol_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base,
+ __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
+extern unsigned long int strtoul_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
+__extension__
+extern long long int strtoll_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
+__extension__
+extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) ;
+extern double strtod_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
+extern float strtof_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
+extern long double strtold_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
+extern __inline double
+__attribute__ ((__nothrow__)) atof (__const char *__nptr)
+{
+ return strtod (__nptr, (char **) ((void *)0));
+}
+extern __inline int
+__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
+{
+ return (int) strtol (__nptr, (char **) ((void *)0), 10);
+}
+extern __inline long int
+__attribute__ ((__nothrow__)) atol (__const char *__nptr)
+{
+ return strtol (__nptr, (char **) ((void *)0), 10);
+}
+__extension__ extern __inline long long int
+__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
+{
+ return strtoll (__nptr, (char **) ((void *)0), 10);
+}
+extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
+extern long int a64l (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+__extension__ typedef signed long long int __int64_t;
+__extension__ typedef unsigned long long int __uint64_t;
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
+__extension__ typedef __u_quad_t __dev_t;
+__extension__ typedef unsigned int __uid_t;
+__extension__ typedef unsigned int __gid_t;
+__extension__ typedef unsigned long int __ino_t;
+__extension__ typedef __u_quad_t __ino64_t;
+__extension__ typedef unsigned int __mode_t;
+__extension__ typedef unsigned int __nlink_t;
+__extension__ typedef long int __off_t;
+__extension__ typedef __quad_t __off64_t;
+__extension__ typedef int __pid_t;
+__extension__ typedef struct { int __val[2]; } __fsid_t;
+__extension__ typedef long int __clock_t;
+__extension__ typedef unsigned long int __rlim_t;
+__extension__ typedef __u_quad_t __rlim64_t;
+__extension__ typedef unsigned int __id_t;
+__extension__ typedef long int __time_t;
+__extension__ typedef unsigned int __useconds_t;
+__extension__ typedef long int __suseconds_t;
+__extension__ typedef int __daddr_t;
+__extension__ typedef long int __swblk_t;
+__extension__ typedef int __key_t;
+__extension__ typedef int __clockid_t;
+__extension__ typedef void * __timer_t;
+__extension__ typedef long int __blksize_t;
+__extension__ typedef long int __blkcnt_t;
+__extension__ typedef __quad_t __blkcnt64_t;
+__extension__ typedef unsigned long int __fsblkcnt_t;
+__extension__ typedef __u_quad_t __fsblkcnt64_t;
+__extension__ typedef unsigned long int __fsfilcnt_t;
+__extension__ typedef __u_quad_t __fsfilcnt64_t;
+__extension__ typedef int __ssize_t;
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+__extension__ typedef int __intptr_t;
+__extension__ typedef unsigned int __socklen_t;
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+typedef __loff_t loff_t;
+typedef __ino64_t ino_t;
+typedef __ino64_t ino64_t;
+typedef __dev_t dev_t;
+typedef __gid_t gid_t;
+typedef __mode_t mode_t;
+typedef __nlink_t nlink_t;
+typedef __uid_t uid_t;
+typedef __off64_t off_t;
+typedef __off64_t off64_t;
+typedef __pid_t pid_t;
+typedef __id_t id_t;
+typedef __ssize_t ssize_t;
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+typedef __key_t key_t;
+typedef __clock_t clock_t;
+typedef __time_t time_t;
+typedef __clockid_t clockid_t;
+typedef __timer_t timer_t;
+typedef __useconds_t useconds_t;
+typedef __suseconds_t suseconds_t;
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+typedef int int8_t __attribute__ ((__mode__ (__QI__)));
+typedef int int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int int32_t __attribute__ ((__mode__ (__SI__)));
+typedef int int64_t __attribute__ ((__mode__ (__DI__)));
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+typedef int __sig_atomic_t;
+typedef struct
+ {
+ unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+ } __sigset_t;
+typedef __sigset_t sigset_t;
+struct timespec
+ {
+ __time_t tv_sec;
+ long int tv_nsec;
+ };
+struct timeval
+ {
+ __time_t tv_sec;
+ __suseconds_t tv_usec;
+ };
+typedef long int __fd_mask;
+typedef struct
+ {
+ __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
+ } fd_set;
+typedef __fd_mask fd_mask;
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ struct timeval *__restrict __timeout);
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+ const __sigset_t *__restrict __sigmask);
+__extension__
+extern unsigned int gnu_dev_major (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned int gnu_dev_minor (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned long long int gnu_dev_makedev (unsigned int __major,
+ unsigned int __minor)
+ __attribute__ ((__nothrow__));
+__extension__ extern __inline unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
+{
+ return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
+}
+__extension__ extern __inline unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
+{
+ return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
+}
+__extension__ extern __inline unsigned long long int
+__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
+{
+ return ((__minor & 0xff) | ((__major & 0xfff) << 8)
+ | (((unsigned long long int) (__minor & ~0xff)) << 12)
+ | (((unsigned long long int) (__major & ~0xfff)) << 32));
+}
+typedef __blksize_t blksize_t;
+typedef __blkcnt64_t blkcnt_t;
+typedef __fsblkcnt64_t fsblkcnt_t;
+typedef __fsfilcnt64_t fsfilcnt_t;
+typedef __blkcnt64_t blkcnt64_t;
+typedef __fsblkcnt64_t fsblkcnt64_t;
+typedef __fsfilcnt64_t fsfilcnt64_t;
+typedef unsigned long int pthread_t;
+typedef union
+{
+ char __size[36];
+ long int __align;
+} pthread_attr_t;
+typedef struct __pthread_internal_slist
+{
+ struct __pthread_internal_slist *__next;
+} __pthread_slist_t;
+typedef union
+{
+ struct __pthread_mutex_s
+ {
+ int __lock;
+ unsigned int __count;
+ int __owner;
+ int __kind;
+ unsigned int __nusers;
+ __extension__ union
+ {
+ int __spins;
+ __pthread_slist_t __list;
+ };
+ } __data;
+ char __size[24];
+ long int __align;
+} pthread_mutex_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_mutexattr_t;
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __futex;
+ __extension__ unsigned long long int __total_seq;
+ __extension__ unsigned long long int __wakeup_seq;
+ __extension__ unsigned long long int __woken_seq;
+ void *__mutex;
+ unsigned int __nwaiters;
+ unsigned int __broadcast_seq;
+ } __data;
+ char __size[48];
+ __extension__ long long int __align;
+} pthread_cond_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_condattr_t;
+typedef unsigned int pthread_key_t;
+typedef int pthread_once_t;
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __nr_readers;
+ unsigned int __readers_wakeup;
+ unsigned int __writer_wakeup;
+ unsigned int __nr_readers_queued;
+ unsigned int __nr_writers_queued;
+ unsigned char __flags;
+ unsigned char __shared;
+ unsigned char __pad1;
+ unsigned char __pad2;
+ int __writer;
+ } __data;
+ char __size[32];
+ long int __align;
+} pthread_rwlock_t;
+typedef union
+{
+ char __size[8];
+ long int __align;
+} pthread_rwlockattr_t;
+typedef volatile int pthread_spinlock_t;
+typedef union
+{
+ char __size[20];
+ long int __align;
+} pthread_barrier_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_barrierattr_t;
+extern long int random (void) __attribute__ ((__nothrow__));
+extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
+extern char *initstate (unsigned int __seed, char *__statebuf,
+ size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+struct random_data
+ {
+ int32_t *fptr;
+ int32_t *rptr;
+ int32_t *state;
+ int rand_type;
+ int rand_deg;
+ int rand_sep;
+ int32_t *end_ptr;
+ };
+extern int random_r (struct random_data *__restrict __buf,
+ int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+ size_t __statelen,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int rand (void) __attribute__ ((__nothrow__));
+extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
+extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
+extern double drand48 (void) __attribute__ ((__nothrow__));
+extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern long int lrand48 (void) __attribute__ ((__nothrow__));
+extern long int nrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern long int mrand48 (void) __attribute__ ((__nothrow__));
+extern long int jrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+struct drand48_data
+ {
+ unsigned short int __x[3];
+ unsigned short int __old_x[3];
+ unsigned short int __c;
+ unsigned short int __init;
+ unsigned long long int __a;
+ };
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int seed48_r (unsigned short int __seed16v[3],
+ struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int lcong48_r (unsigned short int __param[7],
+ struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern void *calloc (size_t __nmemb, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern void *realloc (void *__ptr, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern void free (void *__ptr) __attribute__ ((__nothrow__));
+extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
+extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
+extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern char *__secure_getenv (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
+extern int clearenv (void) __attribute__ ((__nothrow__));
+extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int mkstemp (char *__template) __asm__ ("" "mkstemp64")
+ __attribute__ ((__nonnull__ (1))) ;
+extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
+extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int mkostemp (char *__template, int __flags) __asm__ ("" "mkostemp64")
+ __attribute__ ((__nonnull__ (1))) ;
+extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) ;
+extern int system (__const char *__command) ;
+extern char *canonicalize_file_name (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern char *realpath (__const char *__restrict __name,
+ char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+typedef __compar_fn_t comparison_fn_t;
+extern void *bsearch (__const void *__key, __const void *__base,
+ size_t __nmemb, size_t __size, __compar_fn_t __compar)
+ __attribute__ ((__nonnull__ (1, 2, 5))) ;
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+ __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+__extension__ extern long long int llabs (long long int __x)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern div_t div (int __numer, int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern ldiv_t ldiv (long int __numer, long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+__extension__ extern lldiv_t lldiv (long long int __numer,
+ long long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+extern char *qecvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *qfcvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *qgcvt (long double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qecvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qfcvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
+extern int mbtowc (wchar_t *__restrict __pwc,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
+extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
+extern size_t mbstowcs (wchar_t *__restrict __pwcs,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
+extern size_t wcstombs (char *__restrict __s,
+ __const wchar_t *__restrict __pwcs, size_t __n)
+ __attribute__ ((__nothrow__));
+extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int getsubopt (char **__restrict __optionp,
+ char *__const *__restrict __tokens,
+ char **__restrict __valuep)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) ;
+extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int posix_openpt (int __oflag) ;
+extern int grantpt (int __fd) __attribute__ ((__nothrow__));
+extern int unlockpt (int __fd) __attribute__ ((__nothrow__));
+extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) ;
+extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int getpt (void);
+extern int getloadavg (double __loadavg[], int __nelem)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void *memcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memmove (void *__dest, __const void *__src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
+ int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern void *rawmemchr (__const void *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern void *memrchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
+ size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strcmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strcoll (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strxfrm (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
+ __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+extern char *strdup (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+extern char *strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+extern char *strchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strrchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strchrnul (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern size_t strcspn (__const char *__s, __const char *__reject)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strspn (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strpbrk (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strstr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *__strtok_r (char *__restrict __s,
+ __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern char *strcasestr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memmem (__const void *__haystack, size_t __haystacklen,
+ __const void *__needle, size_t __needlelen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
+extern void *__mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strlen (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern size_t strnlen (__const char *__string, size_t __maxlen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
+extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__));
+extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void bcopy (__const void *__src, void *__dest, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *index (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *rindex (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+__extension__ extern int ffsll (long long int __ll)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int strcasecmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strcasecmp_l (__const char *__s1, __const char *__s2,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+extern int strncasecmp_l (__const char *__s1, __const char *__s2,
+ size_t __n, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
+extern char *strsep (char **__restrict __stringp,
+ __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strverscmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strsignal (int __sig) __attribute__ ((__nothrow__));
+extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *__stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void *__rawmemchr (const void *__s, int __c);
+extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
+extern __inline size_t
+__strcspn_c1 (__const char *__s, int __reject)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
+ int __reject2);
+extern __inline size_t
+__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
+ int __reject2, int __reject3);
+extern __inline size_t
+__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
+ int __reject3)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2 && __s[__result] != __reject3)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
+extern __inline size_t
+__strspn_c1 (__const char *__s, int __accept)
+{
+ register size_t __result = 0;
+ while (__s[__result] == __accept)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline size_t
+__strspn_c2 (__const char *__s, int __accept1, int __accept2)
+{
+ register size_t __result = 0;
+ while (__s[__result] == __accept1 || __s[__result] == __accept2)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline size_t
+__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
+{
+ register size_t __result = 0;
+ while (__s[__result] == __accept1 || __s[__result] == __accept2
+ || __s[__result] == __accept3)
+ ++__result;
+ return __result;
+}
+extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline char *
+__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
+{
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline char *
+__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
+ int __accept3)
+{
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
+ && *__s != __accept3)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
+extern __inline char *
+__strtok_r_1c (char *__s, char __sep, char **__nextp)
+{
+ char *__result;
+ if (__s == ((void *)0))
+ __s = *__nextp;
+ while (*__s == __sep)
+ ++__s;
+ __result = ((void *)0);
+ if (*__s != '\0')
+ {
+ __result = __s++;
+ while (*__s != '\0')
+ if (*__s++ == __sep)
+ {
+ __s[-1] = '\0';
+ break;
+ }
+ *__nextp = __s;
+ }
+ return __result;
+}
+extern char *__strsep_g (char **__stringp, __const char *__delim);
+extern __inline char *__strsep_1c (char **__s, char __reject);
+extern __inline char *
+__strsep_1c (char **__s, char __reject)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
+ *(*__s)++ = '\0';
+ return __retval;
+}
+extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
+extern __inline char *
+__strsep_2c (char **__s, char __reject1, char __reject2)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
+ char __reject3);
+extern __inline char *
+__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+extern char *__strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned int uint32_t;
+__extension__
+typedef unsigned long long int uint64_t;
+typedef signed char int_least8_t;
+typedef short int int_least16_t;
+typedef int int_least32_t;
+__extension__
+typedef long long int int_least64_t;
+typedef unsigned char uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int uint_least32_t;
+__extension__
+typedef unsigned long long int uint_least64_t;
+typedef signed char int_fast8_t;
+typedef int int_fast16_t;
+typedef int int_fast32_t;
+__extension__
+typedef long long int int_fast64_t;
+typedef unsigned char uint_fast8_t;
+typedef unsigned int uint_fast16_t;
+typedef unsigned int uint_fast32_t;
+__extension__
+typedef unsigned long long int uint_fast64_t;
+typedef int intptr_t;
+typedef unsigned int uintptr_t;
+__extension__
+typedef long long int intmax_t;
+__extension__
+typedef unsigned long long int uintmax_t;
+typedef int __gwchar_t;
+typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } imaxdiv_t;
+extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern intmax_t strtoimax (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base) __attribute__ ((__nothrow__));
+extern uintmax_t strtoumax (__const char *__restrict __nptr,
+ char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__));
+extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr,
+ __gwchar_t **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__));
+extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
+ __gwchar_t ** __restrict __endptr, int __base)
+ __attribute__ ((__nothrow__));
+__extension__
+extern long long int __strtoll_internal (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern __inline intmax_t
+__attribute__ ((__nothrow__)) strtoimax (__const char *__restrict nptr, char **__restrict endptr, int base)
+{
+ return __strtoll_internal (nptr, endptr, base, 0);
+}
+__extension__
+extern unsigned long long int __strtoull_internal (__const char *
+ __restrict __nptr,
+ char **
+ __restrict __endptr,
+ int __base,
+ int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern __inline uintmax_t
+__attribute__ ((__nothrow__)) strtoumax (__const char *__restrict nptr, char **__restrict endptr, int base)
+{
+ return __strtoull_internal (nptr, endptr, base, 0);
+}
+__extension__
+extern long long int __wcstoll_internal (__const __gwchar_t *
+ __restrict __nptr,
+ __gwchar_t **__restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern __inline intmax_t
+__attribute__ ((__nothrow__)) wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
+{
+ return __wcstoll_internal (nptr, endptr, base, 0);
+}
+__extension__
+extern unsigned long long int __wcstoull_internal (__const __gwchar_t *
+ __restrict __nptr,
+ __gwchar_t **
+ __restrict __endptr,
+ int __base,
+ int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern __inline uintmax_t
+__attribute__ ((__nothrow__)) wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
+{
+ return __wcstoull_internal (nptr, endptr, base, 0);
+}
+typedef int ptrdiff_t;
+struct _IO_FILE;
+typedef struct _IO_FILE FILE;
+typedef struct _IO_FILE __FILE;
+typedef struct
+{
+ int __count;
+ union
+ {
+ unsigned int __wch;
+ char __wchb[4];
+ } __value;
+} __mbstate_t;
+typedef struct
+{
+ __off_t __pos;
+ __mbstate_t __state;
+} _G_fpos_t;
+typedef struct
+{
+ __off64_t __pos;
+ __mbstate_t __state;
+} _G_fpos64_t;
+typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
+typedef __builtin_va_list __gnuc_va_list;
+struct _IO_jump_t; struct _IO_FILE;
+typedef void _IO_lock_t;
+struct _IO_marker {
+ struct _IO_marker *_next;
+ struct _IO_FILE *_sbuf;
+ int _pos;
+};
+enum __codecvt_result
+{
+ __codecvt_ok,
+ __codecvt_partial,
+ __codecvt_error,
+ __codecvt_noconv
+};
+struct _IO_FILE {
+ int _flags;
+ char* _IO_read_ptr;
+ char* _IO_read_end;
+ char* _IO_read_base;
+ char* _IO_write_base;
+ char* _IO_write_ptr;
+ char* _IO_write_end;
+ char* _IO_buf_base;
+ char* _IO_buf_end;
+ char *_IO_save_base;
+ char *_IO_backup_base;
+ char *_IO_save_end;
+ struct _IO_marker *_markers;
+ struct _IO_FILE *_chain;
+ int _fileno;
+ int _flags2;
+ __off_t _old_offset;
+ unsigned short _cur_column;
+ signed char _vtable_offset;
+ char _shortbuf[1];
+ _IO_lock_t *_lock;
+ __off64_t _offset;
+ void *__pad1;
+ void *__pad2;
+ void *__pad3;
+ void *__pad4;
+ size_t __pad5;
+ int _mode;
+ char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+};
+typedef struct _IO_FILE _IO_FILE;
+struct _IO_FILE_plus;
+extern struct _IO_FILE_plus _IO_2_1_stdin_;
+extern struct _IO_FILE_plus _IO_2_1_stdout_;
+extern struct _IO_FILE_plus _IO_2_1_stderr_;
+typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
+typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
+ size_t __n);
+typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
+typedef int __io_close_fn (void *__cookie);
+typedef __io_read_fn cookie_read_function_t;
+typedef __io_write_fn cookie_write_function_t;
+typedef __io_seek_fn cookie_seek_function_t;
+typedef __io_close_fn cookie_close_function_t;
+typedef struct
+{
+ __io_read_fn *read;
+ __io_write_fn *write;
+ __io_seek_fn *seek;
+ __io_close_fn *close;
+} _IO_cookie_io_functions_t;
+typedef _IO_cookie_io_functions_t cookie_io_functions_t;
+struct _IO_cookie_file;
+extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
+ void *__cookie, _IO_cookie_io_functions_t __fns);
+extern int __underflow (_IO_FILE *);
+extern int __uflow (_IO_FILE *);
+extern int __overflow (_IO_FILE *, int);
+extern int _IO_getc (_IO_FILE *__fp);
+extern int _IO_putc (int __c, _IO_FILE *__fp);
+extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_peekc_locked (_IO_FILE *__fp);
+extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
+ __gnuc_va_list, int *__restrict);
+extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
+ __gnuc_va_list);
+extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
+extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
+extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
+extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
+extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
+typedef __gnuc_va_list va_list;
+typedef _G_fpos64_t fpos_t;
+typedef _G_fpos64_t fpos64_t;
+extern struct _IO_FILE *stdin;
+extern struct _IO_FILE *stdout;
+extern struct _IO_FILE *stderr;
+extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
+extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
+extern int renameat (int __oldfd, __const char *__old, int __newfd,
+ __const char *__new) __attribute__ ((__nothrow__));
+extern FILE *tmpfile (void) __asm__ ("" "tmpfile64") ;
+extern FILE *tmpfile64 (void) ;
+extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;
+extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern int fclose (FILE *__stream);
+extern int fflush (FILE *__stream);
+extern int fflush_unlocked (FILE *__stream);
+extern int fcloseall (void);
+extern FILE *fopen (__const char *__restrict __filename, __const char *__restrict __modes) __asm__ ("" "fopen64")
+ ;
+extern FILE *freopen (__const char *__restrict __filename, __const char *__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64")
+ ;
+extern FILE *fopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes) ;
+extern FILE *freopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) ;
+extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
+extern FILE *fopencookie (void *__restrict __magic_cookie,
+ __const char *__restrict __modes,
+ _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__)) ;
+extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
+ __attribute__ ((__nothrow__)) ;
+extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) ;
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+ int __modes, size_t __n) __attribute__ ((__nothrow__));
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+ size_t __size) __attribute__ ((__nothrow__));
+extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
+extern int fprintf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...);
+extern int printf (__const char *__restrict __format, ...);
+extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg);
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg) __attribute__ ((__nothrow__));
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
+ __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) ;
+extern int __asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
+extern int asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) ;
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) ;
+extern int scanf (__const char *__restrict __format, ...) ;
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 2, 0))) ;
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 1, 0))) ;
+extern int vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+extern int getchar (void);
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+extern int fgetc_unlocked (FILE *__stream);
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+extern int putchar (int __c);
+extern int fputc_unlocked (int __c, FILE *__stream);
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+extern int getw (FILE *__stream);
+extern int putw (int __w, FILE *__stream);
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+ ;
+extern char *gets (char *__s) ;
+extern char *fgets_unlocked (char *__restrict __s, int __n,
+ FILE *__restrict __stream) ;
+extern __ssize_t __getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+extern __ssize_t getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+extern __ssize_t getline (char **__restrict __lineptr,
+ size_t *__restrict __n,
+ FILE *__restrict __stream) ;
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+extern int puts (__const char *__s);
+extern int ungetc (int __c, FILE *__stream);
+extern size_t fread (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __s) ;
+extern int fputs_unlocked (__const char *__restrict __s,
+ FILE *__restrict __stream);
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern int fseek (FILE *__stream, long int __off, int __whence);
+extern long int ftell (FILE *__stream) ;
+extern void rewind (FILE *__stream);
+extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ ("" "fseeko64");
+extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64");
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos) __asm__ ("" "fgetpos64");
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __asm__ ("" "fsetpos64");
+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
+extern __off64_t ftello64 (FILE *__stream) ;
+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
+extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern void perror (__const char *__s);
+extern int sys_nerr;
+extern __const char *__const sys_errlist[];
+extern int _sys_nerr;
+extern __const char *__const _sys_errlist[];
+extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern FILE *popen (__const char *__command, __const char *__modes) ;
+extern int pclose (FILE *__stream);
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+extern char *cuserid (char *__s);
+struct obstack;
+extern int obstack_printf (struct obstack *__restrict __obstack,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int obstack_vprintf (struct obstack *__restrict __obstack,
+ __const char *__restrict __format,
+ __gnuc_va_list __args)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
+extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
+extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
+extern __inline int
+vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
+{
+ return vfprintf (stdout, __fmt, __arg);
+}
+extern __inline int
+getchar (void)
+{
+ return _IO_getc (stdin);
+}
+extern __inline int
+fgetc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+extern __inline int
+getc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+extern __inline int
+getchar_unlocked (void)
+{
+ return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
+}
+extern __inline int
+putchar (int __c)
+{
+ return _IO_putc (__c, stdout);
+}
+extern __inline int
+fputc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+extern __inline int
+putc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+extern __inline int
+putchar_unlocked (int __c)
+{
+ return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
+}
+extern __inline __ssize_t
+getline (char **__lineptr, size_t *__n, FILE *__stream)
+{
+ return __getdelim (__lineptr, __n, '\n', __stream);
+}
+extern __inline int
+__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x10) != 0);
+}
+extern __inline int
+__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x20) != 0);
+}
+void *ruby_xmalloc(size_t);
+void *ruby_xmalloc2(size_t,size_t);
+void *ruby_xcalloc(size_t,size_t);
+void *ruby_xrealloc(void*,size_t);
+void *ruby_xrealloc2(void*,size_t,size_t);
+void ruby_xfree(void*);
+typedef unsigned long VALUE;
+typedef unsigned long ID;
+VALUE rb_int2inum(long);
+VALUE rb_uint2inum(VALUE);
+VALUE rb_ll2inum(long long);
+VALUE rb_ull2inum(unsigned long long);
+enum ruby_special_consts {
+ RUBY_Qfalse = 0,
+ RUBY_Qtrue = 2,
+ RUBY_Qnil = 4,
+ RUBY_Qundef = 6,
+ RUBY_IMMEDIATE_MASK = 0x03,
+ RUBY_FIXNUM_FLAG = 0x01,
+ RUBY_SYMBOL_FLAG = 0x0e,
+ RUBY_SPECIAL_SHIFT = 8
+};
+enum ruby_value_type {
+ RUBY_T_NONE = 0x00,
+ RUBY_T_OBJECT = 0x01,
+ RUBY_T_CLASS = 0x02,
+ RUBY_T_MODULE = 0x03,
+ RUBY_T_FLOAT = 0x04,
+ RUBY_T_STRING = 0x05,
+ RUBY_T_REGEXP = 0x06,
+ RUBY_T_ARRAY = 0x07,
+ RUBY_T_HASH = 0x08,
+ RUBY_T_STRUCT = 0x09,
+ RUBY_T_BIGNUM = 0x0a,
+ RUBY_T_FILE = 0x0b,
+ RUBY_T_DATA = 0x0c,
+ RUBY_T_MATCH = 0x0d,
+ RUBY_T_COMPLEX = 0x0e,
+ RUBY_T_RATIONAL = 0x0f,
+ RUBY_T_NIL = 0x11,
+ RUBY_T_TRUE = 0x12,
+ RUBY_T_FALSE = 0x13,
+ RUBY_T_SYMBOL = 0x14,
+ RUBY_T_FIXNUM = 0x15,
+ RUBY_T_UNDEF = 0x1b,
+ RUBY_T_NODE = 0x1c,
+ RUBY_T_ICLASS = 0x1d,
+ RUBY_T_ZOMBIE = 0x1e,
+ RUBY_T_MASK = 0x1f
+};
+void rb_check_type(VALUE,int);
+VALUE rb_str_to_str(VALUE);
+VALUE rb_string_value(volatile VALUE*);
+char *rb_string_value_ptr(volatile VALUE*);
+char *rb_string_value_cstr(volatile VALUE*);
+void rb_check_safe_obj(VALUE);
+void rb_check_safe_str(VALUE);
+VALUE rb_str_export(VALUE);
+VALUE rb_str_export_locale(VALUE);
+VALUE rb_get_path(VALUE);
+VALUE rb_get_path_no_checksafe(VALUE);
+void rb_secure(int);
+int rb_safe_level(void);
+void rb_set_safe_level(int);
+void rb_set_safe_level_force(int);
+void rb_secure_update(VALUE);
+VALUE rb_errinfo(void);
+void rb_set_errinfo(VALUE);
+long rb_num2long(VALUE);
+VALUE rb_num2ulong(VALUE);
+static inline long
+NUM2LONG(VALUE x)
+{
+ return (((long)(x))&RUBY_FIXNUM_FLAG) ? (((long)x)>>(int)1) : rb_num2long(x);
+}
+long long rb_num2ll(VALUE);
+unsigned long long rb_num2ull(VALUE);
+static inline long long
+NUM2LL(VALUE x)
+{
+ return (((long)(x))&RUBY_FIXNUM_FLAG) ? (((long)x)>>(int)1) : rb_num2ll(x);
+}
+double rb_num2dbl(VALUE);
+VALUE rb_uint2big(VALUE);
+VALUE rb_int2big(long);
+static inline VALUE
+INT2NUM(int v)
+{
+ if (!(((v) < (2147483647L>>1)+1) && ((v) >= (((long)(-2147483647L - 1L))>>(int)1))))
+ return rb_int2big(v);
+ return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
+}
+static inline VALUE
+UINT2NUM(unsigned int v)
+{
+ if (!((v) < (2147483647L>>1)+1))
+ return rb_uint2big(v);
+ return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
+}
+static inline VALUE
+LONG2NUM(long v)
+{
+ if ((((v) < (2147483647L>>1)+1) && ((v) >= (((long)(-2147483647L - 1L))>>(int)1)))) return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
+ return rb_int2big(v);
+}
+static inline VALUE
+ULONG2NUM(unsigned long v)
+{
+ if (((v) < (2147483647L>>1)+1)) return ((VALUE)(((long)(v))<<1 | RUBY_FIXNUM_FLAG));
+ return rb_uint2big(v);
+}
+char *rb_str2cstr(VALUE,long*);
+VALUE rb_newobj(void);
+struct RBasic {
+ VALUE flags;
+ VALUE klass;
+};
+struct RObject {
+ struct RBasic basic;
+ union {
+ struct {
+ long numiv;
+ VALUE *ivptr;
+ struct st_table *iv_index_tbl;
+ } heap;
+ VALUE ary[3];
+ } as;
+};
+typedef struct {
+ VALUE super;
+ struct st_table *iv_tbl;
+} rb_classext_t;
+struct RClass {
+ struct RBasic basic;
+ rb_classext_t *ptr;
+ struct st_table *m_tbl;
+ struct st_table *iv_index_tbl;
+};
+struct RFloat {
+ struct RBasic basic;
+ double float_value;
+};
+struct RString {
+ struct RBasic basic;
+ union {
+ struct {
+ long len;
+ char *ptr;
+ union {
+ long capa;
+ VALUE shared;
+ } aux;
+ } heap;
+ char ary[((sizeof(VALUE)*3)/sizeof(char)-1) + 1];
+ } as;
+};
+struct RArray {
+ struct RBasic basic;
+ union {
+ struct {
+ long len;
+ union {
+ long capa;
+ VALUE shared;
+ } aux;
+ VALUE *ptr;
+ } heap;
+ VALUE ary[3];
+ } as;
+};
+struct RRegexp {
+ struct RBasic basic;
+ struct re_pattern_buffer *ptr;
+ VALUE src;
+ unsigned long usecnt;
+};
+struct RHash {
+ struct RBasic basic;
+ struct st_table *ntbl;
+ int iter_lev;
+ VALUE ifnone;
+};
+struct RFile {
+ struct RBasic basic;
+ struct rb_io_t *fptr;
+};
+struct RRational {
+ struct RBasic basic;
+ VALUE num;
+ VALUE den;
+};
+struct RComplex {
+ struct RBasic basic;
+ VALUE real;
+ VALUE imag;
+};
+struct RData {
+ struct RBasic basic;
+ void (*dmark)(void*);
+ void (*dfree)(void*);
+ void *data;
+};
+typedef void (*RUBY_DATA_FUNC)(void*);
+VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
+struct RStruct {
+ struct RBasic basic;
+ union {
+ struct {
+ long len;
+ VALUE *ptr;
+ } heap;
+ VALUE ary[3];
+ } as;
+};
+struct RBignum {
+ struct RBasic basic;
+ union {
+ struct {
+ long len;
+ unsigned int *digits;
+ } heap;
+ unsigned int ary[((sizeof(VALUE)*3)/sizeof(unsigned int))];
+ } as;
+};
+void rb_obj_infect(VALUE,VALUE);
+typedef int ruby_glob_func(const char*,VALUE, void*);
+void rb_glob(const char*,void(*)(const char*,VALUE,void*),VALUE);
+int ruby_glob(const char*,int,ruby_glob_func*,VALUE);
+int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE);
+VALUE rb_define_class(const char*,VALUE);
+VALUE rb_define_module(const char*);
+VALUE rb_define_class_under(VALUE, const char*, VALUE);
+VALUE rb_define_module_under(VALUE, const char*);
+void rb_include_module(VALUE,VALUE);
+void rb_extend_object(VALUE,VALUE);
+struct rb_global_variable;
+typedef VALUE rb_gvar_getter_t(ID id, void *data, struct rb_global_variable *gvar);
+typedef void rb_gvar_setter_t(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+typedef void rb_gvar_marker_t(VALUE *var);
+VALUE rb_gvar_undef_getter(ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_undef_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_undef_marker(VALUE *var);
+VALUE rb_gvar_val_getter(ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_val_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_val_marker(VALUE *var);
+VALUE rb_gvar_var_getter(ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_var_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+void rb_gvar_var_marker(VALUE *var);
+void rb_gvar_readonly_setter(VALUE val, ID id, void *data, struct rb_global_variable *gvar);
+void rb_define_variable(const char*,VALUE*);
+void rb_define_virtual_variable(const char*,VALUE(*)(),void(*)());
+void rb_define_hooked_variable(const char*,VALUE*,VALUE(*)(),void(*)());
+void rb_define_readonly_variable(const char*,VALUE*);
+void rb_define_const(VALUE,const char*,VALUE);
+void rb_define_global_const(const char*,VALUE);
+void rb_define_method(VALUE,const char*,VALUE(*)(),int);
+void rb_define_module_function(VALUE,const char*,VALUE(*)(),int);
+void rb_define_global_function(const char*,VALUE(*)(),int);
+void rb_undef_method(VALUE,const char*);
+void rb_define_alias(VALUE,const char*,const char*);
+void rb_define_attr(VALUE,const char*,int,int);
+void rb_global_variable(VALUE*);
+void rb_gc_register_mark_object(VALUE);
+void rb_gc_register_address(VALUE*);
+void rb_gc_unregister_address(VALUE*);
+ID rb_intern(const char*);
+ID rb_intern2(const char*, long);
+ID rb_intern_str(VALUE str);
+const char *rb_id2name(ID);
+ID rb_to_id(VALUE);
+VALUE rb_id2str(ID);
+const char *rb_class2name(VALUE);
+const char *rb_obj_classname(VALUE);
+void rb_p(VALUE);
+VALUE rb_eval_string(const char*);
+VALUE rb_eval_string_protect(const char*, int*);
+VALUE rb_eval_string_wrap(const char*, int*);
+VALUE rb_funcall(VALUE, ID, int, ...);
+VALUE rb_funcall2(VALUE, ID, int, const VALUE*);
+VALUE rb_funcall3(VALUE, ID, int, const VALUE*);
+int rb_scan_args(int, const VALUE*, const char*, ...);
+VALUE rb_call_super(int, const VALUE*);
+VALUE rb_gv_set(const char*, VALUE);
+VALUE rb_gv_get(const char*);
+VALUE rb_iv_get(VALUE, const char*);
+VALUE rb_iv_set(VALUE, const char*, VALUE);
+VALUE rb_equal(VALUE,VALUE);
+VALUE *rb_ruby_verbose_ptr(void);
+VALUE *rb_ruby_debug_ptr(void);
+__attribute__ ((noreturn)) void rb_raise(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
+__attribute__ ((noreturn)) void rb_fatal(const char*, ...) __attribute__((format(printf, 1, 2)));
+__attribute__ ((noreturn)) void rb_bug(const char*, ...) __attribute__((format(printf, 1, 2)));
+__attribute__ ((noreturn)) void rb_sys_fail(const char*);
+__attribute__ ((noreturn)) void rb_iter_break(void);
+__attribute__ ((noreturn)) void rb_exit(int);
+__attribute__ ((noreturn)) void rb_notimplement(void);
+void rb_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
+void rb_compile_warning(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
+void rb_sys_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
+void rb_warn(const char*, ...) __attribute__((format(printf, 1, 2)));
+void rb_compile_warn(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
+typedef VALUE rb_block_call_func(VALUE, VALUE, int, VALUE*);
+VALUE rb_each(VALUE);
+VALUE rb_yield(VALUE);
+VALUE rb_yield_values(int n, ...);
+VALUE rb_yield_values2(int n, const VALUE *argv);
+VALUE rb_yield_splat(VALUE);
+int rb_block_given_p(void);
+void rb_need_block(void);
+VALUE rb_iterate(VALUE(*)(VALUE),VALUE,VALUE(*)(),VALUE);
+VALUE rb_block_call(VALUE,ID,int,VALUE*,VALUE(*)(),VALUE);
+VALUE rb_rescue(VALUE(*)(),VALUE,VALUE(*)(),VALUE);
+VALUE rb_rescue2(VALUE(*)(),VALUE,VALUE(*)(),VALUE,...);
+VALUE rb_ensure(VALUE(*)(),VALUE,VALUE(*)(),VALUE);
+VALUE rb_catch(const char*,VALUE(*)(),VALUE);
+VALUE rb_catch_obj(VALUE,VALUE(*)(),VALUE);
+__attribute__ ((noreturn)) void rb_throw(const char*,VALUE);
+__attribute__ ((noreturn)) void rb_throw_obj(VALUE,VALUE);
+VALUE rb_require(const char*);
+void ruby_init_stack(VALUE*);
+void ruby_init(void);
+void *ruby_options(int, char**);
+int ruby_run_node(void *);
+extern VALUE rb_mKernel;
+extern VALUE rb_mComparable;
+extern VALUE rb_mEnumerable;
+extern VALUE rb_mErrno;
+extern VALUE rb_mFileTest;
+extern VALUE rb_mGC;
+extern VALUE rb_mMath;
+extern VALUE rb_mProcess;
+extern VALUE rb_cBasicObject;
+extern VALUE rb_cObject;
+extern VALUE rb_cArray;
+extern VALUE rb_cBignum;
+extern VALUE rb_cBinding;
+extern VALUE rb_cClass;
+extern VALUE rb_cCont;
+extern VALUE rb_cDir;
+extern VALUE rb_cData;
+extern VALUE rb_cFalseClass;
+extern VALUE rb_cEncoding;
+extern VALUE rb_cEnumerator;
+extern VALUE rb_cFile;
+extern VALUE rb_cFixnum;
+extern VALUE rb_cFloat;
+extern VALUE rb_cHash;
+extern VALUE rb_cInteger;
+extern VALUE rb_cIO;
+extern VALUE rb_cMatch;
+extern VALUE rb_cMethod;
+extern VALUE rb_cModule;
+extern VALUE rb_cNameErrorMesg;
+extern VALUE rb_cNilClass;
+extern VALUE rb_cNumeric;
+extern VALUE rb_cProc;
+extern VALUE rb_cRange;
+extern VALUE rb_cRational;
+extern VALUE rb_cComplex;
+extern VALUE rb_cRegexp;
+extern VALUE rb_cStat;
+extern VALUE rb_cString;
+extern VALUE rb_cStruct;
+extern VALUE rb_cSymbol;
+extern VALUE rb_cThread;
+extern VALUE rb_cTime;
+extern VALUE rb_cTrueClass;
+extern VALUE rb_cUnboundMethod;
+extern VALUE rb_eException;
+extern VALUE rb_eStandardError;
+extern VALUE rb_eSystemExit;
+extern VALUE rb_eInterrupt;
+extern VALUE rb_eSignal;
+extern VALUE rb_eFatal;
+extern VALUE rb_eArgError;
+extern VALUE rb_eEOFError;
+extern VALUE rb_eIndexError;
+extern VALUE rb_eStopIteration;
+extern VALUE rb_eKeyError;
+extern VALUE rb_eRangeError;
+extern VALUE rb_eIOError;
+extern VALUE rb_eRuntimeError;
+extern VALUE rb_eSecurityError;
+extern VALUE rb_eSystemCallError;
+extern VALUE rb_eThreadError;
+extern VALUE rb_eTypeError;
+extern VALUE rb_eZeroDivError;
+extern VALUE rb_eNotImpError;
+extern VALUE rb_eNoMemError;
+extern VALUE rb_eNoMethodError;
+extern VALUE rb_eFloatDomainError;
+extern VALUE rb_eLocalJumpError;
+extern VALUE rb_eSysStackError;
+extern VALUE rb_eRegexpError;
+extern VALUE rb_eEncodingError;
+extern VALUE rb_eEncCompatError;
+extern VALUE rb_eScriptError;
+extern VALUE rb_eNameError;
+extern VALUE rb_eSyntaxError;
+extern VALUE rb_eLoadError;
+extern VALUE rb_stdin, rb_stdout, rb_stderr;
+static inline VALUE
+rb_class_of(VALUE obj)
+{
+ if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
+ if ((((long)(obj))&RUBY_FIXNUM_FLAG)) return rb_cFixnum;
+ if (obj == ((VALUE)RUBY_Qtrue)) return rb_cTrueClass;
+ if ((((VALUE)(obj)&~(~(VALUE)0<<RUBY_SPECIAL_SHIFT))==RUBY_SYMBOL_FLAG)) return rb_cSymbol;
+ }
+ else if (!(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0)) {
+ if (obj == ((VALUE)RUBY_Qnil)) return rb_cNilClass;
+ if (obj == ((VALUE)RUBY_Qfalse)) return rb_cFalseClass;
+ }
+ return ((struct RBasic*)(obj))->klass;
+}
+static inline int
+rb_type(VALUE obj)
+{
+ if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
+ if ((((long)(obj))&RUBY_FIXNUM_FLAG)) return RUBY_T_FIXNUM;
+ if (obj == ((VALUE)RUBY_Qtrue)) return RUBY_T_TRUE;
+ if ((((VALUE)(obj)&~(~(VALUE)0<<RUBY_SPECIAL_SHIFT))==RUBY_SYMBOL_FLAG)) return RUBY_T_SYMBOL;
+ if (obj == ((VALUE)RUBY_Qundef)) return RUBY_T_UNDEF;
+ }
+ else if (!(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0)) {
+ if (obj == ((VALUE)RUBY_Qnil)) return RUBY_T_NIL;
+ if (obj == ((VALUE)RUBY_Qfalse)) return RUBY_T_FALSE;
+ }
+ return (((struct RBasic*)(obj))->flags & RUBY_T_MASK);
+}
+static inline int
+rb_special_const_p(VALUE obj)
+{
+ if ((((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !(((VALUE)(obj) & ~((VALUE)RUBY_Qnil)) != 0))) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+struct timezone
+ {
+ int tz_minuteswest;
+ int tz_dsttime;
+ };
+typedef struct timezone *__restrict __timezone_ptr_t;
+extern int gettimeofday (struct timeval *__restrict __tv,
+ __timezone_ptr_t __tz) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int settimeofday (__const struct timeval *__tv,
+ __const struct timezone *__tz)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int adjtime (__const struct timeval *__delta,
+ struct timeval *__olddelta) __attribute__ ((__nothrow__));
+enum __itimer_which
+ {
+ ITIMER_REAL = 0,
+ ITIMER_VIRTUAL = 1,
+ ITIMER_PROF = 2
+ };
+struct itimerval
+ {
+ struct timeval it_interval;
+ struct timeval it_value;
+ };
+typedef enum __itimer_which __itimer_which_t;
+extern int getitimer (__itimer_which_t __which,
+ struct itimerval *__value) __attribute__ ((__nothrow__));
+extern int setitimer (__itimer_which_t __which,
+ __const struct itimerval *__restrict __new,
+ struct itimerval *__restrict __old) __attribute__ ((__nothrow__));
+extern int utimes (__const char *__file, __const struct timeval __tvp[2])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int futimes (int __fd, __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
+extern int futimesat (int __fd, __const char *__file,
+ __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
+extern size_t strlcpy(char *, const char*, size_t);
+extern size_t strlcat(char *, const char*, size_t);
+typedef unsigned long st_data_t;
+typedef struct st_table st_table;
+typedef int st_compare_func(st_data_t, st_data_t);
+typedef int st_hash_func(st_data_t);
+struct st_hash_type {
+ int (*compare)( );
+ int (*hash)( );
+};
+typedef st_data_t st_index_t;
+struct st_table {
+ const struct st_hash_type *type;
+ st_index_t num_bins;
+ unsigned int entries_packed : 1;
+ __extension__
+ st_index_t num_entries : (sizeof(st_index_t) * 8) - 1;
+ struct st_table_entry **bins;
+ struct st_table_entry *head;
+};
+enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK};
+st_table *st_init_table(const struct st_hash_type *);
+st_table *st_init_table_with_size(const struct st_hash_type *, int);
+st_table *st_init_numtable(void);
+st_table *st_init_numtable_with_size(int);
+st_table *st_init_strtable(void);
+st_table *st_init_strtable_with_size(int);
+st_table *st_init_strcasetable(void);
+st_table *st_init_strcasetable_with_size(int);
+int st_delete(st_table *, st_data_t *, st_data_t *);
+int st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
+int st_insert(st_table *, st_data_t, st_data_t);
+int st_lookup(st_table *, st_data_t, st_data_t *);
+int st_get_key(st_table *, st_data_t, st_data_t *);
+int st_foreach(st_table *, int (*)(), st_data_t);
+int st_reverse_foreach(st_table *, int (*)(), st_data_t);
+void st_add_direct(st_table *, st_data_t, st_data_t);
+void st_free_table(st_table *);
+void st_cleanup_safe(st_table *, st_data_t);
+void st_clear(st_table *);
+st_table *st_copy(st_table *);
+int st_numcmp(st_data_t, st_data_t);
+int st_numhash(st_data_t);
+int st_strcasecmp(const char *s1, const char *s2);
+int st_strncasecmp(const char *s1, const char *s2, size_t n);
+void rb_mem_clear(register VALUE*, register long);
+VALUE rb_assoc_new(VALUE, VALUE);
+VALUE rb_check_array_type(VALUE);
+VALUE rb_ary_new(void);
+VALUE rb_ary_new2(long);
+VALUE rb_ary_new3(long,...);
+VALUE rb_ary_new4(long, const VALUE *);
+VALUE rb_ary_tmp_new(long);
+void rb_ary_free(VALUE);
+VALUE rb_ary_freeze(VALUE);
+VALUE rb_ary_aref(int, VALUE*, VALUE);
+VALUE rb_ary_subseq(VALUE, long, long);
+void rb_ary_store(VALUE, long, VALUE);
+VALUE rb_ary_dup(VALUE);
+VALUE rb_ary_to_ary(VALUE);
+VALUE rb_ary_to_s(VALUE);
+VALUE rb_ary_push(VALUE, VALUE);
+VALUE rb_ary_pop(VALUE);
+VALUE rb_ary_shift(VALUE);
+VALUE rb_ary_unshift(VALUE, VALUE);
+VALUE rb_ary_entry(VALUE, long);
+VALUE rb_ary_each(VALUE);
+VALUE rb_ary_join(VALUE, VALUE);
+VALUE rb_ary_print_on(VALUE, VALUE);
+VALUE rb_ary_reverse(VALUE);
+VALUE rb_ary_sort(VALUE);
+VALUE rb_ary_sort_bang(VALUE);
+VALUE rb_ary_delete(VALUE, VALUE);
+VALUE rb_ary_delete_at(VALUE, long);
+VALUE rb_ary_clear(VALUE);
+VALUE rb_ary_plus(VALUE, VALUE);
+VALUE rb_ary_concat(VALUE, VALUE);
+VALUE rb_ary_assoc(VALUE, VALUE);
+VALUE rb_ary_rassoc(VALUE, VALUE);
+VALUE rb_ary_includes(VALUE, VALUE);
+VALUE rb_ary_cmp(VALUE, VALUE);
+VALUE rb_ary_replace(VALUE copy, VALUE orig);
+VALUE rb_get_values_at(VALUE, long, int, VALUE*, VALUE(*)(VALUE,long));
+VALUE rb_big_clone(VALUE);
+void rb_big_2comp(VALUE);
+VALUE rb_big_norm(VALUE);
+void rb_big_resize(VALUE big, long len);
+VALUE rb_uint2big(VALUE);
+VALUE rb_int2big(long);
+VALUE rb_uint2inum(VALUE);
+VALUE rb_int2inum(long);
+VALUE rb_cstr_to_inum(const char*, int, int);
+VALUE rb_str_to_inum(VALUE, int, int);
+VALUE rb_cstr2inum(const char*, int);
+VALUE rb_str2inum(VALUE, int);
+VALUE rb_big2str(VALUE, int);
+VALUE rb_big2str0(VALUE, int, int);
+long rb_big2long(VALUE);
+VALUE rb_big2ulong(VALUE);
+VALUE rb_ll2inum(long long);
+VALUE rb_ull2inum(unsigned long long);
+long long rb_big2ll(VALUE);
+unsigned long long rb_big2ull(VALUE);
+void rb_quad_pack(char*,VALUE);
+VALUE rb_quad_unpack(const char*,int);
+int rb_uv_to_utf8(char[6],unsigned long);
+VALUE rb_dbl2big(double);
+double rb_big2dbl(VALUE);
+VALUE rb_big_cmp(VALUE, VALUE);
+VALUE rb_big_eq(VALUE, VALUE);
+VALUE rb_big_plus(VALUE, VALUE);
+VALUE rb_big_minus(VALUE, VALUE);
+VALUE rb_big_mul(VALUE, VALUE);
+VALUE rb_big_div(VALUE, VALUE);
+VALUE rb_big_modulo(VALUE, VALUE);
+VALUE rb_big_divmod(VALUE, VALUE);
+VALUE rb_big_pow(VALUE, VALUE);
+VALUE rb_big_and(VALUE, VALUE);
+VALUE rb_big_or(VALUE, VALUE);
+VALUE rb_big_xor(VALUE, VALUE);
+VALUE rb_big_lshift(VALUE, VALUE);
+VALUE rb_big_rshift(VALUE, VALUE);
+VALUE rb_rational_raw(VALUE, VALUE);
+VALUE rb_rational_new(VALUE, VALUE);
+VALUE rb_Rational(VALUE, VALUE);
+VALUE rb_complex_raw(VALUE, VALUE);
+VALUE rb_complex_new(VALUE, VALUE);
+VALUE rb_complex_polar(VALUE, VALUE);
+VALUE rb_Complex(VALUE, VALUE);
+VALUE rb_class_boot(VALUE);
+VALUE rb_class_new(VALUE);
+VALUE rb_mod_init_copy(VALUE, VALUE);
+VALUE rb_class_init_copy(VALUE, VALUE);
+VALUE rb_singleton_class_clone(VALUE);
+void rb_singleton_class_attached(VALUE,VALUE);
+VALUE rb_make_metaclass(VALUE, VALUE);
+void rb_check_inheritable(VALUE);
+VALUE rb_class_inherited(VALUE, VALUE);
+VALUE rb_define_class_id(ID, VALUE);
+VALUE rb_module_new(void);
+VALUE rb_define_module_id(ID);
+VALUE rb_mod_included_modules(VALUE);
+VALUE rb_mod_include_p(VALUE, VALUE);
+VALUE rb_mod_ancestors(VALUE);
+VALUE rb_class_instance_methods(int, VALUE*, VALUE);
+VALUE rb_class_public_instance_methods(int, VALUE*, VALUE);
+VALUE rb_class_protected_instance_methods(int, VALUE*, VALUE);
+VALUE rb_class_private_instance_methods(int, VALUE*, VALUE);
+VALUE rb_obj_singleton_methods(int, VALUE*, VALUE);
+void rb_define_method_id(VALUE, ID, VALUE (*)(), int);
+void rb_frozen_class_p(VALUE);
+void rb_undef(VALUE, ID);
+void rb_define_protected_method(VALUE, const char*, VALUE (*)(), int);
+void rb_define_private_method(VALUE, const char*, VALUE (*)(), int);
+void rb_define_singleton_method(VALUE, const char*, VALUE(*)(), int);
+VALUE rb_singleton_class(VALUE);
+int rb_cmpint(VALUE, VALUE, VALUE);
+__attribute__ ((noreturn)) void rb_cmperr(VALUE, VALUE);
+VALUE rb_fiber_new(VALUE (*)(), VALUE);
+VALUE rb_fiber_resume(VALUE fib, int argc, VALUE *args);
+VALUE rb_fiber_yield(int argc, VALUE *args);
+VALUE rb_fiber_current(void);
+VALUE rb_fiber_alive_p(VALUE);
+VALUE rb_enumeratorize(VALUE, VALUE, int, VALUE *);
+VALUE rb_exc_new(VALUE, const char*, long);
+VALUE rb_exc_new2(VALUE, const char*);
+VALUE rb_exc_new3(VALUE, VALUE);
+__attribute__ ((noreturn)) void rb_loaderror(const char*, ...) __attribute__((format(printf, 1, 2)));
+__attribute__ ((noreturn)) void rb_name_error(ID, const char*, ...) __attribute__((format(printf, 2, 3)));
+__attribute__ ((noreturn)) void rb_invalid_str(const char*, const char*);
+void rb_compile_error(const char*, int, const char*, ...) __attribute__((format(printf, 3, 4)));
+void rb_compile_error_append(const char*, ...) __attribute__((format(printf, 1, 2)));
+__attribute__ ((noreturn)) void rb_load_fail(const char*);
+__attribute__ ((noreturn)) void rb_error_frozen(const char*);
+void rb_check_frozen(VALUE);
+int rb_sourceline(void);
+const char *rb_sourcefile(void);
+typedef struct {
+ int maxfd;
+ fd_set *fdset;
+} rb_fdset_t;
+void rb_fd_init(volatile rb_fdset_t *);
+void rb_fd_term(rb_fdset_t *);
+void rb_fd_zero(rb_fdset_t *);
+void rb_fd_set(int, rb_fdset_t *);
+void rb_fd_clr(int, rb_fdset_t *);
+int rb_fd_isset(int, const rb_fdset_t *);
+void rb_fd_copy(rb_fdset_t *, const fd_set *, int);
+int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
+__attribute__ ((noreturn)) void rb_exc_raise(VALUE);
+__attribute__ ((noreturn)) void rb_exc_fatal(VALUE);
+VALUE rb_f_exit(int,VALUE*);
+VALUE rb_f_abort(int,VALUE*);
+void rb_remove_method(VALUE, const char*);
+typedef VALUE (*rb_alloc_func_t)(VALUE);
+void rb_define_alloc_func(VALUE, rb_alloc_func_t);
+void rb_undef_alloc_func(VALUE);
+rb_alloc_func_t rb_get_alloc_func(VALUE);
+void rb_clear_cache(void);
+void rb_clear_cache_by_class(VALUE);
+void rb_alias(VALUE, ID, ID);
+void rb_attr(VALUE,ID,int,int,int);
+int rb_method_boundp(VALUE, ID, int);
+int rb_method_basic_definition_p(VALUE, ID);
+VALUE rb_eval_cmd(VALUE, VALUE, int);
+int rb_obj_respond_to(VALUE, ID, int);
+int rb_respond_to(VALUE, ID);
+void rb_interrupt(void);
+VALUE rb_apply(VALUE, ID, VALUE);
+void rb_backtrace(void);
+ID rb_frame_this_func(void);
+VALUE rb_obj_instance_eval(int, VALUE*, VALUE);
+VALUE rb_obj_instance_exec(int, VALUE*, VALUE);
+VALUE rb_mod_module_eval(int, VALUE*, VALUE);
+VALUE rb_mod_module_exec(int, VALUE*, VALUE);
+void rb_load(VALUE, int);
+void rb_load_protect(VALUE, int, int*);
+__attribute__ ((noreturn)) void rb_jump_tag(int);
+int rb_provided(const char*);
+int rb_feature_provided(const char *, const char **);
+void rb_provide(const char*);
+VALUE rb_f_require(VALUE, VALUE);
+VALUE rb_require_safe(VALUE, int);
+void rb_obj_call_init(VALUE, int, VALUE*);
+VALUE rb_class_new_instance(int, VALUE*, VALUE);
+VALUE rb_block_proc(void);
+VALUE rb_f_lambda(void);
+VALUE rb_proc_new(VALUE (*)( ), VALUE);
+VALUE rb_proc_call(VALUE, VALUE);
+VALUE rb_proc_call_with_block(VALUE, int argc, VALUE *argv, VALUE);
+int rb_proc_arity(VALUE);
+VALUE rb_binding_new(void);
+VALUE rb_obj_method(VALUE, VALUE);
+VALUE rb_method_call(int, VALUE*, VALUE);
+int rb_mod_method_arity(VALUE, ID);
+int rb_obj_method_arity(VALUE, ID);
+VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*);
+void rb_set_end_proc(void (*)(VALUE), VALUE);
+void rb_mark_end_proc(void);
+void rb_exec_end_proc(void);
+void Init_jump(void);
+void ruby_finalize(void);
+__attribute__ ((noreturn)) void ruby_stop(int);
+int ruby_cleanup(int);
+void rb_gc_mark_threads(void);
+void rb_thread_schedule(void);
+void rb_thread_wait_fd(int);
+int rb_thread_fd_writable(int);
+void rb_thread_fd_close(int);
+int rb_thread_alone(void);
+void rb_thread_polling(void);
+void rb_thread_sleep(int);
+void rb_thread_sleep_forever(void);
+VALUE rb_thread_stop(void);
+VALUE rb_thread_wakeup(VALUE);
+VALUE rb_thread_run(VALUE);
+VALUE rb_thread_kill(VALUE);
+VALUE rb_thread_create(VALUE (*)(), void*);
+void rb_thread_signal_raise(void *, int);
+void rb_thread_signal_exit(void *);
+int rb_thread_select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
+void rb_thread_wait_for(struct timeval);
+VALUE rb_thread_current(void);
+VALUE rb_thread_main(void);
+VALUE rb_thread_local_aref(VALUE, ID);
+VALUE rb_thread_local_aset(VALUE, ID, VALUE);
+void rb_thread_atfork(void);
+void rb_thread_atfork_before_exec(void);
+VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE);
+VALUE rb_file_s_expand_path(int, VALUE *);
+VALUE rb_file_expand_path(VALUE, VALUE);
+VALUE rb_file_s_absolute_path(int, VALUE *);
+VALUE rb_file_absolute_path(VALUE, VALUE);
+void rb_file_const(const char*, VALUE);
+int rb_find_file_ext(VALUE*, const char* const*);
+VALUE rb_find_file(VALUE);
+char *rb_path_next(const char *);
+char *rb_path_skip_prefix(const char *);
+char *rb_path_last_separator(const char *);
+char *rb_path_end(const char *);
+VALUE rb_file_directory_p(VALUE,VALUE);
+void ruby_set_stack_size(size_t);
+__attribute__ ((noreturn)) void rb_memerror(void);
+int ruby_stack_check(void);
+size_t ruby_stack_length(VALUE**);
+int rb_during_gc(void);
+void rb_gc_mark_locations(VALUE*, VALUE*);
+void rb_mark_tbl(struct st_table*);
+void rb_mark_set(struct st_table*);
+void rb_mark_hash(struct st_table*);
+void rb_gc_mark_maybe(VALUE);
+void rb_gc_mark(VALUE);
+void rb_gc_force_recycle(VALUE);
+void rb_gc(void);
+void rb_gc_copy_finalizer(VALUE,VALUE);
+void rb_gc_finalize_deferred(void);
+void rb_gc_call_finalizer_at_exit(void);
+VALUE rb_gc_enable(void);
+VALUE rb_gc_disable(void);
+VALUE rb_gc_start(void);
+void st_foreach_safe(struct st_table *, int (*)(), st_data_t);
+void rb_hash_foreach(VALUE, int (*)(), VALUE);
+VALUE rb_hash(VALUE);
+VALUE rb_hash_new(void);
+VALUE rb_hash_dup(VALUE);
+VALUE rb_hash_freeze(VALUE);
+VALUE rb_hash_aref(VALUE, VALUE);
+VALUE rb_hash_lookup(VALUE, VALUE);
+VALUE rb_hash_lookup2(VALUE, VALUE, VALUE);
+VALUE rb_hash_fetch(VALUE, VALUE);
+VALUE rb_hash_aset(VALUE, VALUE, VALUE);
+VALUE rb_hash_delete_if(VALUE);
+VALUE rb_hash_delete(VALUE,VALUE);
+struct st_table *rb_hash_tbl(VALUE);
+int rb_path_check(const char*);
+int rb_env_path_tainted(void);
+VALUE rb_env_clear(void);
+extern VALUE rb_fs;
+extern VALUE rb_output_fs;
+extern VALUE rb_rs;
+extern VALUE rb_default_rs;
+extern VALUE rb_output_rs;
+VALUE rb_io_write(VALUE, VALUE);
+VALUE rb_io_gets(VALUE);
+VALUE rb_io_getbyte(VALUE);
+VALUE rb_io_ungetc(VALUE, VALUE);
+VALUE rb_io_ungetbyte(VALUE, VALUE);
+VALUE rb_io_close(VALUE);
+VALUE rb_io_flush(VALUE);
+VALUE rb_io_eof(VALUE);
+VALUE rb_io_binmode(VALUE);
+VALUE rb_io_ascii8bit_binmode(VALUE);
+VALUE rb_io_addstr(VALUE, VALUE);
+VALUE rb_io_printf(int, VALUE*, VALUE);
+VALUE rb_io_print(int, VALUE*, VALUE);
+VALUE rb_io_puts(int, VALUE*, VALUE);
+VALUE rb_io_fdopen(int, int, const char*);
+VALUE rb_file_open(const char*, const char*);
+VALUE rb_file_open_str(VALUE, const char*);
+VALUE rb_gets(void);
+void rb_write_error(const char*);
+void rb_write_error2(const char*, long);
+void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
+int rb_pipe(int *pipes);
+VALUE rb_marshal_dump(VALUE, VALUE);
+VALUE rb_marshal_load(VALUE);
+void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE));
+void rb_num_zerodiv(void);
+VALUE rb_num_coerce_bin(VALUE, VALUE, ID);
+VALUE rb_num_coerce_cmp(VALUE, VALUE, ID);
+VALUE rb_num_coerce_relop(VALUE, VALUE, ID);
+VALUE rb_float_new(double);
+VALUE rb_num2fix(VALUE);
+VALUE rb_fix2str(VALUE, int);
+VALUE rb_dbl_cmp(double, double);
+int rb_eql(VALUE, VALUE);
+VALUE rb_any_to_s(VALUE);
+VALUE rb_inspect(VALUE);
+VALUE rb_obj_is_instance_of(VALUE, VALUE);
+VALUE rb_obj_is_kind_of(VALUE, VALUE);
+VALUE rb_obj_alloc(VALUE);
+VALUE rb_obj_clone(VALUE);
+VALUE rb_obj_dup(VALUE);
+VALUE rb_obj_init_copy(VALUE,VALUE);
+VALUE rb_obj_taint(VALUE);
+VALUE rb_obj_tainted(VALUE);
+VALUE rb_obj_untaint(VALUE);
+VALUE rb_obj_freeze(VALUE);
+VALUE rb_obj_frozen_p(VALUE);
+VALUE rb_obj_id(VALUE);
+VALUE rb_obj_class(VALUE);
+VALUE rb_class_real(VALUE);
+VALUE rb_class_inherited_p(VALUE, VALUE);
+VALUE rb_convert_type(VALUE,int,const char*,const char*);
+VALUE rb_check_convert_type(VALUE,int,const char*,const char*);
+VALUE rb_check_to_integer(VALUE, const char *);
+VALUE rb_to_int(VALUE);
+VALUE rb_Integer(VALUE);
+VALUE rb_Float(VALUE);
+VALUE rb_String(VALUE);
+VALUE rb_Array(VALUE);
+double rb_cstr_to_dbl(const char*, int);
+double rb_str_to_dbl(VALUE, int);
+extern int ruby_sourceline;
+extern char *ruby_sourcefile;
+ID rb_id_attrset(ID);
+void rb_gc_mark_parser(void);
+int rb_is_const_id(ID);
+int rb_is_instance_id(ID);
+int rb_is_class_id(ID);
+int rb_is_local_id(ID);
+int rb_is_junk_id(ID);
+int rb_symname_p(const char*);
+int rb_sym_interned_p(VALUE);
+void rb_gc_mark_symbols(void);
+VALUE rb_backref_get(void);
+void rb_backref_set(VALUE);
+VALUE rb_lastline_get(void);
+void rb_lastline_set(VALUE);
+VALUE rb_sym_all_symbols(void);
+void rb_last_status_set(int status, pid_t pid);
+VALUE rb_last_status_get(void);
+struct rb_exec_arg {
+ int argc;
+ VALUE *argv;
+ const char *prog;
+ VALUE options;
+ VALUE redirect_fds;
+};
+int rb_proc_exec_n(int, VALUE*, const char*);
+int rb_proc_exec(const char*);
+VALUE rb_exec_arg_init(int argc, VALUE *argv, int accept_shell, struct rb_exec_arg *e);
+int rb_exec_arg_addopt(struct rb_exec_arg *e, VALUE key, VALUE val);
+void rb_exec_arg_fixup(struct rb_exec_arg *e);
+int rb_run_exec_options(const struct rb_exec_arg *e, struct rb_exec_arg *s);
+int rb_exec(const struct rb_exec_arg*);
+pid_t rb_fork(int*, int (*)(void*), void*, VALUE);
+VALUE rb_f_exec(int,VALUE*);
+pid_t rb_waitpid(pid_t pid, int *status, int flags);
+void rb_syswait(pid_t pid);
+pid_t rb_spawn(int, VALUE*);
+VALUE rb_proc_times(VALUE);
+VALUE rb_detach_process(pid_t pid);
+VALUE rb_range_new(VALUE, VALUE, int);
+VALUE rb_range_beg_len(VALUE, long*, long*, long, int);
+unsigned long rb_genrand_int32(void);
+double rb_genrand_real(void);
+void rb_reset_random_seed(void);
+int rb_memcicmp(const void*,const void*,long);
+void rb_match_busy(VALUE);
+VALUE rb_reg_nth_defined(int, VALUE);
+VALUE rb_reg_nth_match(int, VALUE);
+VALUE rb_reg_last_match(VALUE);
+VALUE rb_reg_match_pre(VALUE);
+VALUE rb_reg_match_post(VALUE);
+VALUE rb_reg_match_last(VALUE);
+VALUE rb_reg_new_str(VALUE, int);
+VALUE rb_reg_new(const char *, long, int);
+VALUE rb_reg_match(VALUE, VALUE);
+VALUE rb_reg_match2(VALUE);
+int rb_reg_options(VALUE);
+void rb_set_kcode(const char*);
+const char* rb_get_kcode(void);
+extern VALUE rb_argv0;
+VALUE rb_get_argv(void);
+void *rb_load_file(const char*);
+void ruby_script(const char*);
+void ruby_prog_init(void);
+void ruby_set_argv(int, char**);
+void *ruby_process_options(int, char**);
+void ruby_init_loadpath(void);
+void ruby_incpush(const char*);
+VALUE rb_f_kill(int, VALUE*);
+void rb_gc_mark_trap_list(void);
+void (*ruby_posix_signal(int, void (*)(int)))(int);
+void ruby_sig_finalize(void);
+void rb_trap_exit(void);
+void rb_trap_exec(void);
+const char *ruby_signal_name(int);
+void ruby_default_signal(int);
+VALUE rb_f_sprintf(int, const VALUE*);
+VALUE rb_sprintf(const char*, ...) __attribute__((format(printf, 1, 2)));
+VALUE rb_vsprintf(const char*, va_list);
+VALUE rb_str_catf(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
+VALUE rb_str_vcatf(VALUE, const char*, va_list);
+VALUE rb_str_format(int, const VALUE *, VALUE);
+VALUE rb_str_new(const char*, long);
+VALUE rb_str_new_cstr(const char*);
+VALUE rb_str_new2(const char*);
+VALUE rb_str_new_shared(VALUE);
+VALUE rb_str_new3(VALUE);
+VALUE rb_str_new_frozen(VALUE);
+VALUE rb_str_new4(VALUE);
+VALUE rb_str_new_with_class(VALUE, const char*, long);
+VALUE rb_str_new5(VALUE, const char*, long);
+VALUE rb_tainted_str_new_cstr(const char*);
+VALUE rb_tainted_str_new(const char*, long);
+VALUE rb_tainted_str_new2(const char*);
+VALUE rb_external_str_new(const char*, long);
+VALUE rb_external_str_new_cstr(const char*);
+VALUE rb_locale_str_new(const char*, long);
+VALUE rb_locale_str_new_cstr(const char*);
+VALUE rb_str_buf_new(long);
+VALUE rb_str_buf_new_cstr(const char*);
+VALUE rb_str_buf_new2(const char*);
+VALUE rb_str_tmp_new(long);
+VALUE rb_usascii_str_new(const char*, long);
+VALUE rb_usascii_str_new_cstr(const char*);
+VALUE rb_usascii_str_new2(const char*);
+void rb_str_free(VALUE);
+void rb_str_shared_replace(VALUE, VALUE);
+VALUE rb_str_buf_append(VALUE, VALUE);
+VALUE rb_str_buf_cat(VALUE, const char*, long);
+VALUE rb_str_buf_cat2(VALUE, const char*);
+VALUE rb_str_buf_cat_ascii(VALUE, const char*);
+VALUE rb_obj_as_string(VALUE);
+VALUE rb_check_string_type(VALUE);
+VALUE rb_str_dup(VALUE);
+VALUE rb_str_locktmp(VALUE);
+VALUE rb_str_unlocktmp(VALUE);
+VALUE rb_str_dup_frozen(VALUE);
+VALUE rb_str_plus(VALUE, VALUE);
+VALUE rb_str_times(VALUE, VALUE);
+long rb_str_sublen(VALUE, long);
+VALUE rb_str_substr(VALUE, long, long);
+VALUE rb_str_subseq(VALUE, long, long);
+void rb_str_modify(VALUE);
+VALUE rb_str_freeze(VALUE);
+void rb_str_set_len(VALUE, long);
+VALUE rb_str_resize(VALUE, long);
+VALUE rb_str_cat(VALUE, const char*, long);
+VALUE rb_str_cat2(VALUE, const char*);
+VALUE rb_str_append(VALUE, VALUE);
+VALUE rb_str_concat(VALUE, VALUE);
+int rb_memhash(const void *ptr, long len);
+int rb_str_hash(VALUE);
+int rb_str_hash_cmp(VALUE,VALUE);
+int rb_str_comparable(VALUE, VALUE);
+int rb_str_cmp(VALUE, VALUE);
+VALUE rb_str_equal(VALUE str1, VALUE str2);
+VALUE rb_str_drop_bytes(VALUE, long);
+void rb_str_update(VALUE, long, long, VALUE);
+VALUE rb_str_inspect(VALUE);
+VALUE rb_str_dump(VALUE);
+VALUE rb_str_split(VALUE, const char*);
+void rb_str_associate(VALUE, VALUE);
+VALUE rb_str_associated(VALUE);
+void rb_str_setter(VALUE, ID, VALUE*);
+VALUE rb_str_intern(VALUE);
+VALUE rb_sym_to_s(VALUE);
+VALUE rb_str_length(VALUE);
+size_t rb_str_capacity(VALUE);
+VALUE rb_struct_new(VALUE, ...);
+VALUE rb_struct_define(const char*, ...);
+VALUE rb_struct_alloc(VALUE, VALUE);
+VALUE rb_struct_initialize(VALUE, VALUE);
+VALUE rb_struct_aref(VALUE, VALUE);
+VALUE rb_struct_aset(VALUE, VALUE, VALUE);
+VALUE rb_struct_getmember(VALUE, ID);
+VALUE rb_struct_iv_get(VALUE, const char*);
+VALUE rb_struct_s_members(VALUE);
+VALUE rb_struct_members(VALUE);
+VALUE rb_struct_alloc_noinit(VALUE);
+VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t, ...);
+typedef void rb_unblock_function_t(void *);
+typedef VALUE rb_blocking_function_t(void *);
+void rb_thread_check_ints(void);
+int rb_thread_interrupted(VALUE thval);
+VALUE rb_thread_blocking_region(rb_blocking_function_t *func, void *data1,
+ rb_unblock_function_t *ubf, void *data2);
+VALUE rb_mutex_new(void);
+VALUE rb_mutex_locked_p(VALUE mutex);
+VALUE rb_mutex_try_lock(VALUE mutex);
+VALUE rb_mutex_lock(VALUE mutex);
+VALUE rb_mutex_unlock(VALUE mutex);
+VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
+VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);
+VALUE rb_barrier_new(void);
+VALUE rb_barrier_wait(VALUE self);
+VALUE rb_barrier_release(VALUE self);
+VALUE rb_barrier_destroy(VALUE self);
+VALUE rb_time_new(time_t, long);
+VALUE rb_time_nano_new(time_t, long);
+VALUE rb_mod_name(VALUE);
+VALUE rb_class_path(VALUE);
+void rb_set_class_path(VALUE, VALUE, const char*);
+VALUE rb_path2class(const char*);
+void rb_name_class(VALUE, ID);
+VALUE rb_class_name(VALUE);
+void rb_autoload(VALUE, ID, const char*);
+VALUE rb_autoload_load(VALUE, ID);
+VALUE rb_autoload_p(VALUE, ID);
+void rb_gc_mark_global_tbl(void);
+VALUE rb_f_trace_var(int, VALUE*);
+VALUE rb_f_untrace_var(int, VALUE*);
+VALUE rb_f_global_variables(void);
+void rb_alias_variable(ID, ID);
+struct st_table* rb_generic_ivar_table(VALUE);
+void rb_copy_generic_ivar(VALUE,VALUE);
+void rb_mark_generic_ivar(VALUE);
+void rb_mark_generic_ivar_tbl(void);
+void rb_free_generic_ivar(VALUE);
+VALUE rb_ivar_get(VALUE, ID);
+VALUE rb_ivar_set(VALUE, ID, VALUE);
+VALUE rb_ivar_defined(VALUE, ID);
+void rb_ivar_foreach(VALUE, int (*)(), st_data_t);
+VALUE rb_iv_set(VALUE, const char*, VALUE);
+VALUE rb_iv_get(VALUE, const char*);
+VALUE rb_attr_get(VALUE, ID);
+VALUE rb_obj_instance_variables(VALUE);
+VALUE rb_obj_remove_instance_variable(VALUE, VALUE);
+void *rb_mod_const_at(VALUE, void*);
+void *rb_mod_const_of(VALUE, void*);
+VALUE rb_const_list(void*);
+VALUE rb_mod_constants(int, VALUE *, VALUE);
+VALUE rb_mod_remove_const(VALUE, VALUE);
+int rb_const_defined(VALUE, ID);
+int rb_const_defined_at(VALUE, ID);
+int rb_const_defined_from(VALUE, ID);
+VALUE rb_const_get(VALUE, ID);
+VALUE rb_const_get_at(VALUE, ID);
+VALUE rb_const_get_from(VALUE, ID);
+void rb_const_set(VALUE, ID, VALUE);
+VALUE rb_mod_const_missing(VALUE,VALUE);
+VALUE rb_cvar_defined(VALUE, ID);
+void rb_cvar_set(VALUE, ID, VALUE);
+VALUE rb_cvar_get(VALUE, ID);
+void rb_cv_set(VALUE, const char*, VALUE);
+VALUE rb_cv_get(VALUE, const char*);
+void rb_define_class_variable(VALUE, const char*, VALUE);
+VALUE rb_mod_class_variables(VALUE);
+VALUE rb_mod_remove_cvar(VALUE, VALUE);
+void ruby_show_version(void);
+void ruby_show_copyright(void);
+ID rb_frame_callee(void);
+VALUE rb_str_succ(VALUE);
+VALUE rb_time_succ(VALUE);
+void rb_frame_pop(void);
+int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
+void ruby_sysinit(int *, char ***);
+int ruby_native_thread_p(void);
+typedef unsigned int rb_event_flag_t;
+typedef void (*rb_event_hook_func_t)(rb_event_flag_t, VALUE data, VALUE, ID, VALUE klass);
+typedef struct rb_event_hook_struct {
+ rb_event_flag_t flag;
+ rb_event_hook_func_t func;
+ VALUE data;
+ struct rb_event_hook_struct *next;
+} rb_event_hook_t;
+void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events,
+ VALUE data);
+int rb_remove_event_hook(rb_event_hook_func_t func);
+int rb_isalnum(int c);
+int rb_isalpha(int c);
+int rb_isblank(int c);
+int rb_iscntrl(int c);
+int rb_isdigit(int c);
+int rb_isgraph(int c);
+int rb_islower(int c);
+int rb_isprint(int c);
+int rb_ispunct(int c);
+int rb_isspace(int c);
+int rb_isupper(int c);
+int rb_isxdigit(int c);
+int rb_tolower(int c);
+int rb_toupper(int c);
+int st_strcasecmp(const char *s1, const char *s2);
+int st_strncasecmp(const char *s1, const char *s2, size_t n);
+unsigned long ruby_strtoul(const char *str, char **endptr, int base);
+typedef unsigned char OnigUChar;
+typedef unsigned int OnigCodePoint;
+typedef unsigned int OnigCtype;
+typedef unsigned int OnigDistance;
+typedef unsigned int OnigCaseFoldType;
+extern OnigCaseFoldType OnigDefaultCaseFoldFlag;
+typedef struct {
+ int byte_len;
+ int code_len;
+ OnigCodePoint code[3];
+} OnigCaseFoldCodeItem;
+typedef struct {
+ OnigCodePoint esc;
+ OnigCodePoint anychar;
+ OnigCodePoint anytime;
+ OnigCodePoint zero_or_one_time;
+ OnigCodePoint one_or_more_time;
+ OnigCodePoint anychar_anytime;
+} OnigMetaCharTableType;
+typedef int (*OnigApplyAllCaseFoldFunc)(OnigCodePoint from, OnigCodePoint* to, int to_len, void* arg);
+typedef struct OnigEncodingTypeST {
+ int (*precise_mbc_enc_len)(const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc);
+ const char* name;
+ int max_enc_len;
+ int min_enc_len;
+ int (*is_mbc_newline)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
+ OnigCodePoint (*mbc_to_code)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
+ int (*code_to_mbclen)(OnigCodePoint code, struct OnigEncodingTypeST* enc);
+ int (*code_to_mbc)(OnigCodePoint code, OnigUChar *buf, struct OnigEncodingTypeST* enc);
+ int (*mbc_case_fold)(OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* to, struct OnigEncodingTypeST* enc);
+ int (*apply_all_case_fold)(OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, struct OnigEncodingTypeST* enc);
+ int (*get_case_fold_codes_by_str)(OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem acs[], struct OnigEncodingTypeST* enc);
+ int (*property_name_to_ctype)(struct OnigEncodingTypeST* enc, OnigUChar* p, OnigUChar* end);
+ int (*is_code_ctype)(OnigCodePoint code, OnigCtype ctype, struct OnigEncodingTypeST* enc);
+ int (*get_ctype_code_range)(OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], struct OnigEncodingTypeST* enc);
+ OnigUChar* (*left_adjust_char_head)(const OnigUChar* start, const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
+ int (*is_allowed_reverse_match)(const OnigUChar* p, const OnigUChar* end, struct OnigEncodingTypeST* enc);
+ int ruby_encoding_index;
+} OnigEncodingType;
+typedef OnigEncodingType* OnigEncoding;
+extern OnigEncodingType OnigEncodingASCII;
+extern
+int onigenc_mbclen_approximate (const OnigUChar* p,const OnigUChar* e, struct OnigEncodingTypeST* enc);
+extern
+OnigUChar* onigenc_step_back (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, int n);
+extern
+int onigenc_init (void);
+extern
+int onigenc_set_default_encoding (OnigEncoding enc);
+extern
+OnigEncoding onigenc_get_default_encoding (void);
+extern
+void onigenc_set_default_caseconv_table (const OnigUChar* table);
+extern
+OnigUChar* onigenc_get_right_adjust_char_head_with_prev (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, const OnigUChar** prev);
+extern
+OnigUChar* onigenc_get_prev_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
+extern
+OnigUChar* onigenc_get_left_adjust_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
+extern
+OnigUChar* onigenc_get_right_adjust_char_head (OnigEncoding enc, const OnigUChar* start, const OnigUChar* s, const OnigUChar* end);
+extern
+int onigenc_strlen (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
+extern
+int onigenc_strlen_null (OnigEncoding enc, const OnigUChar* p);
+extern
+int onigenc_str_bytelen_null (OnigEncoding enc, const OnigUChar* p);
+typedef unsigned int OnigOptionType;
+typedef struct {
+ unsigned int op;
+ unsigned int op2;
+ unsigned int behavior;
+ OnigOptionType options;
+ OnigMetaCharTableType meta_char_table;
+} OnigSyntaxType;
+extern const OnigSyntaxType OnigSyntaxASIS;
+extern const OnigSyntaxType OnigSyntaxPosixBasic;
+extern const OnigSyntaxType OnigSyntaxPosixExtended;
+extern const OnigSyntaxType OnigSyntaxEmacs;
+extern const OnigSyntaxType OnigSyntaxGrep;
+extern const OnigSyntaxType OnigSyntaxGnuRegex;
+extern const OnigSyntaxType OnigSyntaxJava;
+extern const OnigSyntaxType OnigSyntaxPerl;
+extern const OnigSyntaxType OnigSyntaxPerl_NG;
+extern const OnigSyntaxType OnigSyntaxRuby;
+extern const OnigSyntaxType* OnigDefaultSyntax;
+typedef struct OnigCaptureTreeNodeStruct {
+ int group;
+ int beg;
+ int end;
+ int allocated;
+ int num_childs;
+ struct OnigCaptureTreeNodeStruct** childs;
+} OnigCaptureTreeNode;
+struct re_registers {
+ int allocated;
+ int num_regs;
+ int* beg;
+ int* end;
+ OnigCaptureTreeNode* history_root;
+};
+typedef struct re_registers OnigRegion;
+typedef struct {
+ OnigEncoding enc;
+ OnigUChar* par;
+ OnigUChar* par_end;
+} OnigErrorInfo;
+typedef struct {
+ int lower;
+ int upper;
+} OnigRepeatRange;
+typedef void (*OnigWarnFunc) (const char* s);
+extern void onig_null_warn (const char* s);
+typedef struct re_pattern_buffer {
+ unsigned char* p;
+ unsigned int used;
+ unsigned int alloc;
+ int state;
+ int num_mem;
+ int num_repeat;
+ int num_null_check;
+ int num_comb_exp_check;
+ int num_call;
+ unsigned int capture_history;
+ unsigned int bt_mem_start;
+ unsigned int bt_mem_end;
+ int stack_pop_level;
+ int repeat_range_alloc;
+ OnigRepeatRange* repeat_range;
+ OnigEncoding enc;
+ OnigOptionType options;
+ const OnigSyntaxType* syntax;
+ OnigCaseFoldType case_fold_flag;
+ void* name_table;
+ int optimize;
+ int threshold_len;
+ int anchor;
+ OnigDistance anchor_dmin;
+ OnigDistance anchor_dmax;
+ int sub_anchor;
+ unsigned char *exact;
+ unsigned char *exact_end;
+ unsigned char map[256];
+ int *int_map;
+ int *int_map_backward;
+ OnigDistance dmin;
+ OnigDistance dmax;
+ struct re_pattern_buffer* chain;
+} OnigRegexType;
+typedef OnigRegexType* OnigRegex;
+ typedef OnigRegexType regex_t;
+typedef struct {
+ int num_of_elements;
+ OnigEncoding pattern_enc;
+ OnigEncoding target_enc;
+ OnigSyntaxType* syntax;
+ OnigOptionType option;
+ OnigCaseFoldType case_fold_flag;
+} OnigCompileInfo;
+extern
+int onig_init (void);
+extern
+int onig_error_code_to_str (OnigUChar* s, int err_code, ...);
+extern
+void onig_set_warn_func (OnigWarnFunc f);
+extern
+void onig_set_verb_warn_func (OnigWarnFunc f);
+extern
+int onig_new (OnigRegex*, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, const OnigSyntaxType* syntax, OnigErrorInfo* einfo);
+extern
+int onig_new_deluxe (OnigRegex* reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
+extern
+void onig_free (OnigRegex);
+extern
+int onig_recompile (OnigRegex, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigOptionType option, OnigEncoding enc, OnigSyntaxType* syntax, OnigErrorInfo* einfo);
+extern
+int onig_recompile_deluxe (OnigRegex reg, const OnigUChar* pattern, const OnigUChar* pattern_end, OnigCompileInfo* ci, OnigErrorInfo* einfo);
+extern
+int onig_search (OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* start, const OnigUChar* range, OnigRegion* region, OnigOptionType option);
+extern
+int onig_match (OnigRegex, const OnigUChar* str, const OnigUChar* end, const OnigUChar* at, OnigRegion* region, OnigOptionType option);
+extern
+OnigRegion* onig_region_new (void);
+extern
+void onig_region_init (OnigRegion* region);
+extern
+void onig_region_free (OnigRegion* region, int free_self);
+extern
+void onig_region_copy (OnigRegion* to, OnigRegion* from);
+extern
+void onig_region_clear (OnigRegion* region);
+extern
+int onig_region_resize (OnigRegion* region, int n);
+extern
+int onig_region_set (OnigRegion* region, int at, int beg, int end);
+extern
+int onig_name_to_group_numbers (OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, int** nums);
+extern
+int onig_name_to_backref_number (OnigRegex reg, const OnigUChar* name, const OnigUChar* name_end, OnigRegion *region);
+extern
+int onig_foreach_name (OnigRegex reg, int (*func)(const OnigUChar*, const OnigUChar*,int,int*,OnigRegex,void*), void* arg);
+extern
+int onig_number_of_names (OnigRegex reg);
+extern
+int onig_number_of_captures (OnigRegex reg);
+extern
+int onig_number_of_capture_histories (OnigRegex reg);
+extern
+OnigCaptureTreeNode* onig_get_capture_tree (OnigRegion* region);
+extern
+int onig_capture_tree_traverse (OnigRegion* region, int at, int(*callback_func)(int,int,int,int,int,void*), void* arg);
+extern
+int onig_noname_group_capture_is_active (OnigRegex reg);
+extern
+OnigEncoding onig_get_encoding (OnigRegex reg);
+extern
+OnigOptionType onig_get_options (OnigRegex reg);
+extern
+OnigCaseFoldType onig_get_case_fold_flag (OnigRegex reg);
+extern
+const OnigSyntaxType* onig_get_syntax (OnigRegex reg);
+extern
+int onig_set_default_syntax (const OnigSyntaxType* syntax);
+extern
+void onig_copy_syntax (OnigSyntaxType* to, const OnigSyntaxType* from);
+extern
+unsigned int onig_get_syntax_op (OnigSyntaxType* syntax);
+extern
+unsigned int onig_get_syntax_op2 (OnigSyntaxType* syntax);
+extern
+unsigned int onig_get_syntax_behavior (OnigSyntaxType* syntax);
+extern
+OnigOptionType onig_get_syntax_options (OnigSyntaxType* syntax);
+extern
+void onig_set_syntax_op (OnigSyntaxType* syntax, unsigned int op);
+extern
+void onig_set_syntax_op2 (OnigSyntaxType* syntax, unsigned int op2);
+extern
+void onig_set_syntax_behavior (OnigSyntaxType* syntax, unsigned int behavior);
+extern
+void onig_set_syntax_options (OnigSyntaxType* syntax, OnigOptionType options);
+extern
+int onig_set_meta_char (OnigSyntaxType* syntax, unsigned int what, OnigCodePoint code);
+extern
+void onig_copy_encoding (OnigEncoding to, OnigEncoding from);
+extern
+OnigCaseFoldType onig_get_default_case_fold_flag (void);
+extern
+int onig_set_default_case_fold_flag (OnigCaseFoldType case_fold_flag);
+extern
+unsigned int onig_get_match_stack_limit_size (void);
+extern
+int onig_set_match_stack_limit_size (unsigned int size);
+extern
+int onig_end (void);
+extern
+const char* onig_version (void);
+extern
+const char* onig_copyright (void);
+typedef OnigEncodingType rb_encoding;
+int rb_enc_replicate(const char *, rb_encoding *);
+int rb_define_dummy_encoding(const char *);
+int rb_enc_get_index(VALUE obj);
+void rb_enc_set_index(VALUE obj, int encindex);
+int rb_enc_find_index(const char *name);
+int rb_to_encoding_index(VALUE);
+rb_encoding* rb_to_encoding(VALUE);
+rb_encoding* rb_enc_get(VALUE);
+rb_encoding* rb_enc_compatible(VALUE,VALUE);
+rb_encoding* rb_enc_check(VALUE,VALUE);
+VALUE rb_enc_associate_index(VALUE, int);
+VALUE rb_enc_associate(VALUE, rb_encoding*);
+void rb_enc_copy(VALUE dst, VALUE src);
+VALUE rb_enc_str_new(const char*, long, rb_encoding*);
+VALUE rb_enc_reg_new(const char*, long, rb_encoding*, int);
+VALUE rb_enc_sprintf(rb_encoding *, const char*, ...) __attribute__((format(printf, 2, 3)));
+VALUE rb_enc_vsprintf(rb_encoding *, const char*, va_list);
+long rb_enc_strlen(const char*, const char*, rb_encoding*);
+char* rb_enc_nth(const char*, const char*, int, rb_encoding*);
+VALUE rb_obj_encoding(VALUE);
+VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc);
+VALUE rb_external_str_new_with_enc(const char *ptr, long len, rb_encoding *);
+VALUE rb_str_export_to_enc(VALUE, rb_encoding *);
+VALUE rb_str_conv_enc(VALUE str, rb_encoding *from, rb_encoding *to);
+rb_encoding* rb_enc_from_index(int idx);
+rb_encoding * rb_enc_find(const char *name);
+int rb_enc_mbclen(const char *p, const char *e, rb_encoding *enc);
+int rb_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc);
+int rb_enc_ascget(const char *p, const char *e, int *len, rb_encoding *enc);
+unsigned int rb_enc_codepoint(const char *p, const char *e, rb_encoding *enc);
+int rb_enc_codelen(int code, rb_encoding *enc);
+int rb_enc_casefold(char *to, const char *p, const char *e, rb_encoding *enc);
+int rb_enc_toupper(int c, rb_encoding *enc);
+int rb_enc_tolower(int c, rb_encoding *enc);
+ID rb_intern3(const char*, long, rb_encoding*);
+ID rb_interned_id_p(const char *, long, rb_encoding *);
+int rb_enc_symname_p(const char*, rb_encoding*);
+int rb_enc_str_coderange(VALUE);
+long rb_str_coderange_scan_restartable(const char*, const char*, rb_encoding*, int*);
+int rb_enc_str_asciionly_p(VALUE);
+VALUE rb_enc_from_encoding(rb_encoding *enc);
+rb_encoding *rb_ascii8bit_encoding(void);
+rb_encoding *rb_utf8_encoding(void);
+rb_encoding *rb_usascii_encoding(void);
+rb_encoding *rb_locale_encoding(void);
+rb_encoding *rb_filesystem_encoding(void);
+rb_encoding *rb_default_external_encoding(void);
+rb_encoding *rb_default_internal_encoding(void);
+int rb_ascii8bit_encindex(void);
+int rb_utf8_encindex(void);
+int rb_usascii_encindex(void);
+VALUE rb_enc_default_external(void);
+VALUE rb_enc_default_internal(void);
+void rb_enc_set_default_external(VALUE encoding);
+void rb_enc_set_default_internal(VALUE encoding);
+VALUE rb_locale_charmap(VALUE klass);
+long rb_memsearch(const void*,long,const void*,long,rb_encoding*);
+extern VALUE rb_cEncoding;
+static inline int
+rb_enc_dummy_p(rb_encoding *enc)
+{
+ return ((enc)->ruby_encoding_index & (1<<24)) != 0;
+}
+typedef enum {
+ econv_invalid_byte_sequence,
+ econv_undefined_conversion,
+ econv_destination_buffer_full,
+ econv_source_buffer_empty,
+ econv_finished,
+ econv_after_output,
+ econv_incomplete_input
+} rb_econv_result_t;
+typedef struct rb_econv_t rb_econv_t;
+VALUE rb_str_encode(VALUE str, VALUE to, int ecflags, VALUE ecopts);
+int rb_econv_has_convpath_p(const char* from_encoding, const char* to_encoding);
+int rb_econv_prepare_opts(VALUE opthash, VALUE *ecopts);
+rb_econv_t *rb_econv_open(const char *source_encoding, const char *destination_encoding, int ecflags);
+rb_econv_t *rb_econv_open_opts(const char *source_encoding, const char *destination_encoding, int ecflags, VALUE ecopts);
+rb_econv_result_t rb_econv_convert(rb_econv_t *ec,
+ const unsigned char **source_buffer_ptr, const unsigned char *source_buffer_end,
+ unsigned char **destination_buffer_ptr, unsigned char *destination_buffer_end,
+ int flags);
+void rb_econv_close(rb_econv_t *ec);
+int rb_econv_set_replacement(rb_econv_t *ec, const unsigned char *str, size_t len, const char *encname);
+int rb_econv_decorate_at_first(rb_econv_t *ec, const char *decorator_name);
+int rb_econv_decorate_at_last(rb_econv_t *ec, const char *decorator_name);
+VALUE rb_econv_open_exc(const char *senc, const char *denc, int ecflags);
+int rb_econv_insert_output(rb_econv_t *ec,
+ const unsigned char *str, size_t len, const char *str_encoding);
+const char *rb_econv_encoding_to_insert_output(rb_econv_t *ec);
+void rb_econv_check_error(rb_econv_t *ec);
+VALUE rb_econv_make_exception(rb_econv_t *ec);
+int rb_econv_putbackable(rb_econv_t *ec);
+void rb_econv_putback(rb_econv_t *ec, unsigned char *p, int n);
+const char *rb_econv_asciicompat_encoding(const char *encname);
+VALUE rb_econv_str_convert(rb_econv_t *ec, VALUE src, int flags);
+VALUE rb_econv_substr_convert(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, int flags);
+VALUE rb_econv_str_append(rb_econv_t *ec, VALUE src, VALUE dst, int flags);
+VALUE rb_econv_substr_append(rb_econv_t *ec, VALUE src, long byteoff, long bytesize, VALUE dst, int flags);
+void rb_econv_binmode(rb_econv_t *ec);
+enum node_type {
+ NODE_METHOD,
+ NODE_FBODY,
+ NODE_CFUNC,
+ NODE_SCOPE,
+ NODE_BLOCK,
+ NODE_IF,
+ NODE_CASE,
+ NODE_WHEN,
+ NODE_OPT_N,
+ NODE_WHILE,
+ NODE_UNTIL,
+ NODE_ITER,
+ NODE_FOR,
+ NODE_BREAK,
+ NODE_NEXT,
+ NODE_REDO,
+ NODE_RETRY,
+ NODE_BEGIN,
+ NODE_RESCUE,
+ NODE_RESBODY,
+ NODE_ENSURE,
+ NODE_AND,
+ NODE_OR,
+ NODE_MASGN,
+ NODE_LASGN,
+ NODE_DASGN,
+ NODE_DASGN_CURR,
+ NODE_GASGN,
+ NODE_IASGN,
+ NODE_IASGN2,
+ NODE_CDECL,
+ NODE_CVASGN,
+ NODE_CVDECL,
+ NODE_OP_ASGN1,
+ NODE_OP_ASGN2,
+ NODE_OP_ASGN_AND,
+ NODE_OP_ASGN_OR,
+ NODE_CALL,
+ NODE_FCALL,
+ NODE_VCALL,
+ NODE_SUPER,
+ NODE_ZSUPER,
+ NODE_ARRAY,
+ NODE_ZARRAY,
+ NODE_VALUES,
+ NODE_HASH,
+ NODE_RETURN,
+ NODE_YIELD,
+ NODE_LVAR,
+ NODE_DVAR,
+ NODE_GVAR,
+ NODE_IVAR,
+ NODE_CONST,
+ NODE_CVAR,
+ NODE_NTH_REF,
+ NODE_BACK_REF,
+ NODE_MATCH,
+ NODE_MATCH2,
+ NODE_MATCH3,
+ NODE_LIT,
+ NODE_STR,
+ NODE_DSTR,
+ NODE_XSTR,
+ NODE_DXSTR,
+ NODE_EVSTR,
+ NODE_DREGX,
+ NODE_DREGX_ONCE,
+ NODE_ARGS,
+ NODE_ARGS_AUX,
+ NODE_OPT_ARG,
+ NODE_POSTARG,
+ NODE_ARGSCAT,
+ NODE_ARGSPUSH,
+ NODE_SPLAT,
+ NODE_TO_ARY,
+ NODE_BLOCK_ARG,
+ NODE_BLOCK_PASS,
+ NODE_DEFN,
+ NODE_DEFS,
+ NODE_ALIAS,
+ NODE_VALIAS,
+ NODE_UNDEF,
+ NODE_CLASS,
+ NODE_MODULE,
+ NODE_SCLASS,
+ NODE_COLON2,
+ NODE_COLON3,
+ NODE_DOT2,
+ NODE_DOT3,
+ NODE_FLIP2,
+ NODE_FLIP3,
+ NODE_ATTRSET,
+ NODE_SELF,
+ NODE_NIL,
+ NODE_TRUE,
+ NODE_FALSE,
+ NODE_ERRINFO,
+ NODE_DEFINED,
+ NODE_POSTEXE,
+ NODE_ALLOCA,
+ NODE_BMETHOD,
+ NODE_MEMO,
+ NODE_IFUNC,
+ NODE_DSYM,
+ NODE_ATTRASGN,
+ NODE_PRELUDE,
+ NODE_LAMBDA,
+ NODE_OPTBLOCK,
+ NODE_LAST
+};
+typedef struct RNode {
+ unsigned long flags;
+ char *nd_file;
+ union {
+ struct RNode *node;
+ ID id;
+ VALUE value;
+ VALUE (*cfunc)();
+ ID *tbl;
+ } u1;
+ union {
+ struct RNode *node;
+ ID id;
+ long argc;
+ VALUE value;
+ } u2;
+ union {
+ struct RNode *node;
+ ID id;
+ long state;
+ struct global_entry *entry;
+ long cnt;
+ VALUE value;
+ } u3;
+} NODE;
+VALUE rb_parser_new(void);
+VALUE rb_parser_end_seen_p(VALUE);
+VALUE rb_parser_encoding(VALUE);
+NODE *rb_parser_compile_cstr(volatile VALUE, const char*, const char*, int, int);
+NODE *rb_parser_compile_string(volatile VALUE, const char*, VALUE, int);
+NODE *rb_parser_compile_file(volatile VALUE, const char*, VALUE, int);
+NODE *rb_compile_cstr(const char*, const char*, int, int);
+NODE *rb_compile_string(const char*, VALUE, int);
+NODE *rb_compile_file(const char*, VALUE, int);
+void rb_add_method(VALUE, ID, NODE *, int);
+NODE *rb_node_newnode(enum node_type,VALUE,VALUE,VALUE);
+NODE* rb_method_node(VALUE klass, ID id);
+int rb_node_arity(NODE* node);
+struct global_entry *rb_global_entry(ID);
+VALUE rb_gvar_get(struct global_entry *);
+VALUE rb_gvar_set(struct global_entry *, VALUE);
+VALUE rb_gvar_defined(struct global_entry *);
+typedef union YYSTYPE
+{
+ VALUE val;
+ NODE *node;
+ ID id;
+ int num;
+}
+ YYSTYPE;
+enum ruby_method_ids {
+ idPLUS = '+',
+ idMINUS = '-',
+ idMULT = '*',
+ idDIV = '/',
+ idMOD = '%',
+ idLT = '<',
+ idLTLT = 338,
+ idLE = 329,
+ idGT = '>',
+ idGE = 328,
+ idEq = 325,
+ idEqq = 326,
+ idNeq = 327,
+ idNot = '!',
+ idBackquote = '`',
+ idEqTilde = 332,
+ idAREF = 336,
+ idASET = 337,
+ idLAST_TOKEN = 376 >> 3,
+ tIntern,
+ tMethodMissing,
+ tLength,
+ tGets,
+ tSucc,
+ tEach,
+ tLambda,
+ tSend,
+ t__send__,
+ tInitialize,
+ tLAST_ID,
+ idIntern = ((tIntern<<3)|0x00),
+ idMethodMissing = ((tMethodMissing<<3)|0x00),
+ idLength = ((tLength<<3)|0x00),
+ idGets = ((tGets<<3)|0x00),
+ idSucc = ((tSucc<<3)|0x00),
+ idEach = ((tEach<<3)|0x00),
+ idLambda = ((tLambda<<3)|0x00),
+ idSend = ((tSend<<3)|0x00),
+ id__send__ = ((t__send__<<3)|0x00),
+ idInitialize = ((tInitialize<<3)|0x00)
+};
+struct ruby_method_ids_check {
+int checking_for_tUPLUS[321 == 321 ? 1 : -1];
+int checking_for_tUMINUS[322 == 322 ? 1 : -1];
+int checking_for_tPOW[323 == 323 ? 1 : -1];
+int checking_for_tCMP[324 == 324 ? 1 : -1];
+int checking_for_tEQ[325 == 325 ? 1 : -1];
+int checking_for_tEQQ[326 == 326 ? 1 : -1];
+int checking_for_tNEQ[327 == 327 ? 1 : -1];
+int checking_for_tGEQ[328 == 328 ? 1 : -1];
+int checking_for_tLEQ[329 == 329 ? 1 : -1];
+int checking_for_tANDOP[330 == 330 ? 1 : -1];
+int checking_for_tOROP[331 == 331 ? 1 : -1];
+int checking_for_tMATCH[332 == 332 ? 1 : -1];
+int checking_for_tNMATCH[333 == 333 ? 1 : -1];
+int checking_for_tDOT2[334 == 334 ? 1 : -1];
+int checking_for_tDOT3[335 == 335 ? 1 : -1];
+int checking_for_tAREF[336 == 336 ? 1 : -1];
+int checking_for_tASET[337 == 337 ? 1 : -1];
+int checking_for_tLSHFT[338 == 338 ? 1 : -1];
+int checking_for_tRSHFT[339 == 339 ? 1 : -1];
+int checking_for_tLAMBDA[352 == 352 ? 1 : -1];
+int checking_for_idNULL[365 == 365 ? 1 : -1];
+int checking_for_idRespond_to[366 == 366 ? 1 : -1];
+int checking_for_idIFUNC[367 == 367 ? 1 : -1];
+int checking_for_idCFUNC[368 == 368 ? 1 : -1];
+int checking_for_idThrowState[369 == 369 ? 1 : -1];
+int checking_for_id_core_set_method_alias[370 == 370 ? 1 : -1];
+int checking_for_id_core_set_variable_alias[371 == 371 ? 1 : -1];
+int checking_for_id_core_undef_method[372 == 372 ? 1 : -1];
+int checking_for_id_core_define_method[373 == 373 ? 1 : -1];
+int checking_for_id_core_define_singleton_method[374 == 374 ? 1 : -1];
+int checking_for_id_core_set_postexe[375 == 375 ? 1 : -1];
+int checking_for_tLAST_TOKEN[376 == 376 ? 1 : -1];
+};
+typedef struct {
+ OnigCodePoint from;
+ OnigCodePoint to;
+} OnigPairCaseFoldCodes;
+typedef struct {
+ OnigUChar *name;
+ int ctype;
+ short int len;
+} PosixBracketEntryType;
+extern int onigenc_ascii_apply_all_case_fold (OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc);
+extern int onigenc_ascii_get_case_fold_codes_by_str (OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[], OnigEncoding enc);
+extern int onigenc_apply_all_case_fold_with_map (int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg);
+extern int onigenc_get_case_fold_codes_by_str_with_map (int map_size, const OnigPairCaseFoldCodes map[], int ess_tsett_flag, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]);
+extern int onigenc_not_support_get_ctype_code_range (OnigCtype ctype, OnigCodePoint* sb_out, const OnigCodePoint* ranges[], OnigEncoding enc);
+extern int onigenc_is_mbc_newline_0x0a (const OnigUChar* p, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_ascii_mbc_case_fold (OnigCaseFoldType flag, const OnigUChar** p, const OnigUChar* end, OnigUChar* lower, OnigEncoding enc);
+extern int onigenc_single_byte_mbc_enc_len (const OnigUChar* p, const OnigUChar* e, OnigEncoding enc);
+extern OnigCodePoint onigenc_single_byte_mbc_to_code (const OnigUChar* p, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_single_byte_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
+extern int onigenc_single_byte_code_to_mbc (OnigCodePoint code, OnigUChar *buf, OnigEncoding enc);
+extern OnigUChar* onigenc_single_byte_left_adjust_char_head (const OnigUChar* start, const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_always_true_is_allowed_reverse_match (const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_always_false_is_allowed_reverse_match (const OnigUChar* s, const OnigUChar* end, OnigEncoding enc);
+extern int onigenc_ascii_is_code_ctype (OnigCodePoint code, unsigned int ctype, OnigEncoding enc);
+extern OnigCodePoint onigenc_mbn_mbc_to_code (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end);
+extern int onigenc_mbn_mbc_case_fold (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar** p, const OnigUChar* end, OnigUChar* lower);
+extern int onigenc_mb2_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
+extern int onigenc_mb2_code_to_mbc (OnigEncoding enc, OnigCodePoint code, OnigUChar *buf);
+extern int onigenc_minimum_property_name_to_ctype (OnigEncoding enc, OnigUChar* p, OnigUChar* end);
+extern int onigenc_unicode_property_name_to_ctype (OnigEncoding enc, OnigUChar* p, OnigUChar* end);
+extern int onigenc_mb2_is_code_ctype (OnigEncoding enc, OnigCodePoint code, unsigned int ctype);
+extern int onigenc_mb4_code_to_mbclen (OnigCodePoint code, OnigEncoding enc);
+extern int onigenc_mb4_code_to_mbc (OnigEncoding enc, OnigCodePoint code, OnigUChar *buf);
+extern int onigenc_mb4_is_code_ctype (OnigEncoding enc, OnigCodePoint code, unsigned int ctype);
+extern int onigenc_unicode_is_code_ctype (OnigCodePoint code, unsigned int ctype, OnigEncoding enc);
+extern int onigenc_utf16_32_get_ctype_code_range (OnigCtype ctype, OnigCodePoint *sb_out, const OnigCodePoint* ranges[], OnigEncoding enc);
+extern int onigenc_unicode_ctype_code_range (int ctype, const OnigCodePoint* ranges[]);
+extern int onigenc_unicode_get_case_fold_codes_by_str (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar* p, const OnigUChar* end, OnigCaseFoldCodeItem items[]);
+extern int onigenc_unicode_mbc_case_fold (OnigEncoding enc, OnigCaseFoldType flag, const OnigUChar** pp, const OnigUChar* end, OnigUChar* fold);
+extern int onigenc_unicode_apply_all_case_fold (OnigCaseFoldType flag, OnigApplyAllCaseFoldFunc f, void* arg, OnigEncoding enc);
+extern const OnigUChar OnigEncISO_8859_1_ToLowerCaseTable[];
+extern const OnigUChar OnigEncISO_8859_1_ToUpperCaseTable[];
+extern int
+onigenc_with_ascii_strncmp (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end, const OnigUChar* sascii , int n);
+extern OnigUChar*
+onigenc_step (OnigEncoding enc, const OnigUChar* p, const OnigUChar* end, int n);
+extern int onig_is_in_code_range (const OnigUChar* p, OnigCodePoint code);
+extern OnigEncoding OnigEncDefaultCharEncoding;
+extern const OnigUChar OnigEncAsciiToLowerCaseTable[];
+extern const OnigUChar OnigEncAsciiToUpperCaseTable[];
+extern const unsigned short OnigEncAsciiCtypeTable[];
+extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern char *program_invocation_name, *program_invocation_short_name;
+typedef int error_t;
+enum
+{
+ _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
+ _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
+ _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
+ _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
+ _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
+ _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
+ _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
+ _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
+ _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
+ _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
+ _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
+ _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
+};
+extern __const unsigned short int **__ctype_b_loc (void)
+ __attribute__ ((__const));
+extern __const __int32_t **__ctype_tolower_loc (void)
+ __attribute__ ((__const));
+extern __const __int32_t **__ctype_toupper_loc (void)
+ __attribute__ ((__const));
+extern int isalnum (int) __attribute__ ((__nothrow__));
+extern int isalpha (int) __attribute__ ((__nothrow__));
+extern int iscntrl (int) __attribute__ ((__nothrow__));
+extern int isdigit (int) __attribute__ ((__nothrow__));
+extern int islower (int) __attribute__ ((__nothrow__));
+extern int isgraph (int) __attribute__ ((__nothrow__));
+extern int isprint (int) __attribute__ ((__nothrow__));
+extern int ispunct (int) __attribute__ ((__nothrow__));
+extern int isspace (int) __attribute__ ((__nothrow__));
+extern int isupper (int) __attribute__ ((__nothrow__));
+extern int isxdigit (int) __attribute__ ((__nothrow__));
+extern int tolower (int __c) __attribute__ ((__nothrow__));
+extern int toupper (int __c) __attribute__ ((__nothrow__));
+extern int isblank (int) __attribute__ ((__nothrow__));
+extern int isctype (int __c, int __mask) __attribute__ ((__nothrow__));
+extern int isascii (int __c) __attribute__ ((__nothrow__));
+extern int toascii (int __c) __attribute__ ((__nothrow__));
+extern int _toupper (int) __attribute__ ((__nothrow__));
+extern int _tolower (int) __attribute__ ((__nothrow__));
+extern __inline int
+__attribute__ ((__nothrow__)) tolower (int __c)
+{
+ return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
+}
+extern __inline int
+__attribute__ ((__nothrow__)) toupper (int __c)
+{
+ return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
+}
+extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+static ID register_symid(ID, const char *, long, rb_encoding *);
+static void
+Init_id(void)
+{
+ rb_encoding *enc = rb_usascii_encoding();
+ register_symid(365, "", strlen(""), enc);
+ register_symid(367, "<IFUNC>", strlen("<IFUNC>"), enc),
+ register_symid(368, "<CFUNC>", strlen("<CFUNC>"), enc),
+ register_symid(366, "respond_to?", strlen("respond_to?"), enc),
+ register_symid(369, "#__ThrowState__", strlen("#__ThrowState__"), enc),
+ register_symid(370, "core#set_method_alias", strlen("core#set_method_alias"), enc),
+ register_symid(371, "core#set_variable_alias", strlen("core#set_variable_alias"), enc),
+ register_symid(372, "core#undef_method", strlen("core#undef_method"), enc),
+ register_symid(373, "core#define_method", strlen("core#define_method"), enc),
+ register_symid(374, "core#define_singleton_method", strlen("core#define_singleton_method"), enc),
+ register_symid(375, "core#set_postexe", strlen("core#set_postexe"), enc),
+ register_symid(idEach, "each", strlen("each"), enc);
+ register_symid(idLength, "length", strlen("length"), enc);
+ register_symid(idLambda, "lambda", strlen("lambda"), enc);
+ register_symid(idIntern, "intern", strlen("intern"), enc);
+ register_symid(idGets, "gets", strlen("gets"), enc);
+ register_symid(idSucc, "succ", strlen("succ"), enc);
+ register_symid(idMethodMissing, "method_missing", strlen("method_missing"), enc);
+ register_symid(idSend, "send", strlen("send"), enc);
+ register_symid(id__send__, "__send__", strlen("__send__"), enc);
+ register_symid(idInitialize, "initialize", strlen("initialize"), enc);
+}
+enum lex_state_e {
+ EXPR_BEG,
+ EXPR_END,
+ EXPR_ENDARG,
+ EXPR_ARG,
+ EXPR_CMDARG,
+ EXPR_MID,
+ EXPR_FNAME,
+ EXPR_DOT,
+ EXPR_CLASS,
+ EXPR_VALUE
+};
+typedef unsigned long long stack_type;
+struct vtable {
+ ID *tbl;
+ int pos;
+ int capa;
+ struct vtable *prev;
+};
+struct local_vars {
+ struct vtable *args;
+ struct vtable *vars;
+ struct local_vars *prev;
+};
+static int
+vtable_size(const struct vtable *tbl)
+{
+ if (((VALUE)(tbl) & ~(VALUE)3)) {
+ return tbl->pos;
+ }
+ else {
+ return 0;
+ }
+}
+static struct vtable *
+vtable_alloc(struct vtable *prev)
+{
+ struct vtable *tbl = (struct vtable*)ruby_xmalloc(sizeof(struct vtable));
+ tbl->pos = 0;
+ tbl->capa = 8;
+ tbl->tbl = (ID*)ruby_xmalloc2((tbl->capa),sizeof(ID));
+ tbl->prev = prev;
+ if (0) printf("vtable_alloc: %p\n", (void *)tbl);
+ return tbl;
+}
+static void
+vtable_free(struct vtable *tbl)
+{
+ if (0)printf("vtable_free: %p\n", (void *)tbl);
+ if (((VALUE)(tbl) & ~(VALUE)3)) {
+ if (tbl->tbl) {
+ ruby_xfree(tbl->tbl);
+ }
+ ruby_xfree(tbl);
+ }
+}
+static void
+vtable_add(struct vtable *tbl, ID id)
+{
+ if (!((VALUE)(tbl) & ~(VALUE)3)) {
+ rb_bug("vtable_add: vtable is not allocated (%p)", (void *)tbl);
+ }
+ if (0) printf("vtable_add: %p, %s\n", (void *)tbl, rb_id2name(id));
+ if (tbl->pos == tbl->capa) {
+ tbl->capa = tbl->capa * 2;
+ (tbl->tbl)=(ID*)ruby_xrealloc2((char*)(tbl->tbl),(tbl->capa),sizeof(ID));
+ }
+ tbl->tbl[tbl->pos++] = id;
+}
+static int
+vtable_included(const struct vtable * tbl, ID id)
+{
+ int i;
+ if (((VALUE)(tbl) & ~(VALUE)3)) {
+ for (i = 0; i < tbl->pos; i++) {
+ if (tbl->tbl[i] == id) {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+typedef struct token_info {
+ const char *token;
+ int linenum;
+ int column;
+ int nonspc;
+ struct token_info *next;
+} token_info;
+struct parser_params {
+ int is_ripper;
+ NODE *heap;
+ YYSTYPE *parser_yylval;
+ VALUE eofp;
+ NODE *parser_lex_strterm;
+ enum lex_state_e parser_lex_state;
+ stack_type parser_cond_stack;
+ stack_type parser_cmdarg_stack;
+ int parser_class_nest;
+ int parser_paren_nest;
+ int parser_lpar_beg;
+ int parser_in_single;
+ int parser_in_def;
+ int parser_compile_for_eval;
+ VALUE parser_cur_mid;
+ int parser_in_defined;
+ char *parser_tokenbuf;
+ int parser_tokidx;
+ int parser_toksiz;
+ VALUE parser_lex_input;
+ VALUE parser_lex_lastline;
+ VALUE parser_lex_nextline;
+ const char *parser_lex_pbeg;
+ const char *parser_lex_p;
+ const char *parser_lex_pend;
+ int parser_heredoc_end;
+ int parser_command_start;
+ NODE *parser_deferred_nodes;
+ int parser_lex_gets_ptr;
+ VALUE (*parser_lex_gets)(struct parser_params*,VALUE);
+ struct local_vars *parser_lvtbl;
+ int parser_ruby__end__seen;
+ int line_count;
+ int has_shebang;
+ char *parser_ruby_sourcefile;
+ int parser_ruby_sourceline;
+ rb_encoding *enc;
+ rb_encoding *utf8;
+ int parser_yydebug;
+ NODE *parser_eval_tree_begin;
+ NODE *parser_eval_tree;
+ VALUE debug_lines;
+ VALUE coverage;
+ int nerr;
+ token_info *parser_token_info;
+};
+void *rb_parser_malloc(struct parser_params *, size_t);
+void *rb_parser_realloc(struct parser_params *, void *, size_t);
+void *rb_parser_calloc(struct parser_params *, size_t, size_t);
+void rb_parser_free(struct parser_params *, void *);
+static int parser_yyerror(struct parser_params*, const char*);
+static int yylex(void*, void*);
+static NODE* node_newnode(struct parser_params *, enum node_type, VALUE, VALUE, VALUE);
+static NODE *cond_gen(struct parser_params*,NODE*);
+static NODE *logop_gen(struct parser_params*,enum node_type,NODE*,NODE*);
+static NODE *newline_node(NODE*);
+static void fixpos(NODE*,NODE*);
+static int value_expr_gen(struct parser_params*,NODE*);
+static void void_expr_gen(struct parser_params*,NODE*);
+static NODE *remove_begin(NODE*);
+static void void_stmts_gen(struct parser_params*,NODE*);
+static void reduce_nodes_gen(struct parser_params*,NODE**);
+static void block_dup_check_gen(struct parser_params*,NODE*,NODE*);
+static NODE *block_append_gen(struct parser_params*,NODE*,NODE*);
+static NODE *list_append_gen(struct parser_params*,NODE*,NODE*);
+static NODE *list_concat_gen(struct parser_params*,NODE*,NODE*);
+static NODE *arg_append_gen(struct parser_params*,NODE*,NODE*);
+static NODE *arg_concat_gen(struct parser_params*,NODE*,NODE*);
+static NODE *literal_concat_gen(struct parser_params*,NODE*,NODE*);
+static NODE *new_evstr_gen(struct parser_params*,NODE*);
+static NODE *evstr2dstr_gen(struct parser_params*,NODE*);
+static NODE *splat_array(NODE*);
+static NODE *call_bin_op_gen(struct parser_params*,NODE*,ID,NODE*);
+static NODE *call_uni_op_gen(struct parser_params*,NODE*,ID);
+static NODE *new_args_gen(struct parser_params*,NODE*,NODE*,ID,NODE*,ID);
+static void shadowing_lvar_gen(struct parser_params*,ID);
+static NODE *negate_lit(NODE*);
+static NODE *ret_args_gen(struct parser_params*,NODE*);
+static NODE *arg_blk_pass(NODE*,NODE*);
+static NODE *new_yield_gen(struct parser_params*,NODE*);
+static NODE *gettable_gen(struct parser_params*,ID);
+static NODE *assignable_gen(struct parser_params*,ID,NODE*);
+static void new_bv_gen(struct parser_params*,ID);
+static NODE *aryset_gen(struct parser_params*,NODE*,NODE*);
+static NODE *attrset_gen(struct parser_params*,NODE*,ID);
+static void rb_backref_error_gen(struct parser_params*,NODE*);
+static NODE *node_assign_gen(struct parser_params*,NODE*,NODE*);
+static NODE *match_op_gen(struct parser_params*,NODE*,NODE*);
+static void local_push_gen(struct parser_params*,int);
+static void local_pop_gen(struct parser_params*);
+static int local_var_gen(struct parser_params*, ID);
+static int arg_var_gen(struct parser_params*, ID);
+static int local_id_gen(struct parser_params*, ID);
+static ID *local_tbl_gen(struct parser_params*);
+static ID internal_id_gen(struct parser_params*);
+static void dyna_push_gen(struct parser_params*);
+static void dyna_pop_gen(struct parser_params*);
+static int dyna_in_block_gen(struct parser_params*);
+static int dvar_defined_gen(struct parser_params*,ID);
+static int dvar_curr_gen(struct parser_params*,ID);
+static void fixup_nodes(NODE **);
+extern int rb_dvar_defined(ID);
+extern int rb_local_defined(ID);
+extern int rb_parse_in_eval(void);
+static VALUE reg_compile_gen(struct parser_params*, VALUE, int);
+static void reg_fragment_setenc_gen(struct parser_params*, VALUE, int);
+static void reg_fragment_check_gen(struct parser_params*, VALUE, int);
+static NODE *reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match);
+int rb_enc_symname2_p(const char *, int, rb_encoding *);
+static int lvar_defined_gen(struct parser_params*, ID);
+static void token_info_push(struct parser_params*, const char *token);
+static void token_info_pop(struct parser_params*, const char *token);
+typedef unsigned char yytype_uint8;
+typedef signed char yytype_int8;
+typedef unsigned short int yytype_uint16;
+typedef short int yytype_int16;
+union yyalloc
+{
+ yytype_int16 yyss;
+ YYSTYPE yyvs;
+ };
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 148, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 147, 123, 2, 2, 2, 121, 116, 2,
+ 143, 144, 119, 117, 141, 118, 140, 120, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 111, 146,
+ 113, 109, 112, 110, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 139, 2, 145, 115, 2, 142, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 137, 114, 138, 124, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
+ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
+ 105, 106, 107, 108, 122, 125, 126, 127, 128, 129,
+ 130, 131, 132, 133, 134, 135, 136
+};
+static const yytype_uint16 yyprhs[] =
+{
+ 0, 0, 3, 4, 7, 12, 15, 17, 19, 23,
+ 26, 27, 32, 36, 40, 44, 47, 51, 55, 59,
+ 63, 67, 68, 74, 79, 83, 87, 91, 98, 104,
+ 110, 116, 120, 124, 128, 132, 134, 136, 140, 144,
+ 148, 151, 153, 155, 157, 159, 162, 165, 168, 170,
+ 175, 180, 181, 187, 190, 194, 199, 205, 210, 216,
+ 219, 222, 224, 228, 230, 234, 236, 239, 243, 249,
+ 252, 257, 260, 265, 267, 271, 273, 277, 280, 284,
+ 286, 290, 292, 297, 301, 305, 309, 313, 316, 318,
+ 320, 325, 329, 333, 337, 341, 344, 346, 348, 350,
+ 353, 355, 359, 361, 363, 365, 367, 369, 371, 373,
+ 375, 377, 379, 380, 385, 387, 389, 391, 393, 395,
+ 397, 399, 401, 403, 405, 407, 409, 411, 413, 415,
+ 417, 419, 421, 423, 425, 427, 429, 431, 433, 435,
+ 437, 439, 441, 443, 445, 447, 449, 451, 453, 455,
+ 457, 459, 461, 463, 465, 467, 469, 471, 473, 475,
+ 477, 479, 481, 483, 485, 487, 489, 491, 493, 495,
+ 497, 499, 501, 503, 505, 507, 509, 511, 513, 515,
+ 517, 519, 521, 523, 525, 529, 535, 539, 545, 552,
+ 558, 564, 570, 576, 581, 585, 589, 593, 597, 601,
+ 605, 609, 613, 617, 622, 627, 630, 633, 637, 641,
+ 645, 649, 653, 657, 661, 665, 669, 673, 677, 681,
+ 685, 688, 691, 695, 699, 703, 707, 708, 713, 720,
+ 722, 724, 726, 729, 734, 737, 741, 743, 745, 747,
+ 749, 751, 754, 757, 762, 764, 765, 768, 771, 774,
+ 776, 778, 780, 783, 787, 792, 796, 801, 804, 806,
+ 808, 810, 812, 814, 816, 818, 820, 822, 823, 828,
+ 829, 834, 838, 842, 845, 849, 853, 855, 860, 864,
+ 866, 867, 874, 879, 883, 886, 888, 891, 894, 901,
+ 908, 909, 910, 918, 919, 920, 928, 934, 939, 940,
+ 941, 951, 952, 959, 960, 961, 970, 971, 977, 978,
+ 985, 986, 987, 997, 999, 1001, 1003, 1005, 1007, 1009,
+ 1011, 1013, 1015, 1017, 1019, 1021, 1023, 1025, 1027, 1029,
+ 1031, 1033, 1036, 1038, 1040, 1042, 1048, 1050, 1053, 1055,
+ 1057, 1059, 1063, 1065, 1069, 1071, 1076, 1083, 1087, 1093,
+ 1096, 1101, 1103, 1107, 1114, 1123, 1128, 1135, 1140, 1143,
+ 1150, 1153, 1158, 1165, 1168, 1173, 1176, 1181, 1183, 1185,
+ 1187, 1191, 1193, 1198, 1200, 1203, 1205, 1209, 1211, 1213,
+ 1214, 1218, 1223, 1225, 1229, 1233, 1234, 1240, 1243, 1248,
+ 1253, 1256, 1261, 1266, 1270, 1274, 1278, 1281, 1283, 1288,
+ 1289, 1295, 1296, 1302, 1308, 1310, 1312, 1319, 1321, 1323,
+ 1325, 1327, 1330, 1332, 1335, 1337, 1339, 1341, 1343, 1345,
+ 1347, 1349, 1352, 1356, 1360, 1364, 1368, 1372, 1373, 1377,
+ 1379, 1382, 1386, 1390, 1391, 1395, 1396, 1399, 1400, 1403,
+ 1405, 1406, 1410, 1411, 1416, 1418, 1420, 1422, 1424, 1427,
+ 1429, 1431, 1433, 1435, 1439, 1441, 1443, 1446, 1449, 1451,
+ 1453, 1455, 1457, 1459, 1461, 1463, 1465, 1467, 1469, 1471,
+ 1473, 1475, 1477, 1479, 1481, 1483, 1484, 1489, 1492, 1496,
+ 1499, 1506, 1515, 1520, 1527, 1532, 1539, 1542, 1547, 1554,
+ 1557, 1562, 1565, 1570, 1572, 1573, 1575, 1577, 1579, 1581,
+ 1583, 1585, 1587, 1591, 1593, 1597, 1601, 1605, 1607, 1611,
+ 1613, 1617, 1619, 1621, 1624, 1626, 1628, 1630, 1633, 1636,
+ 1638, 1640, 1641, 1646, 1648, 1651, 1653, 1657, 1661, 1664,
+ 1666, 1668, 1670, 1672, 1674, 1676, 1678, 1680, 1682, 1684,
+ 1686, 1688, 1689, 1691, 1692, 1694, 1697, 1700, 1701, 1703,
+ 1705, 1707, 1709, 1711, 1714
+};
+static const yytype_int16 yyrhs[] =
+{
+ 150, 0, -1, -1, 151, 153, -1, 153, 252, 228,
+ 255, -1, 154, 307, -1, 314, -1, 155, -1, 154,
+ 313, 155, -1, 1, 155, -1, -1, 45, 177, 156,
+ 177, -1, 45, 54, 54, -1, 45, 54, 64, -1,
+ 45, 54, 63, -1, 6, 178, -1, 155, 40, 159,
+ -1, 155, 41, 159, -1, 155, 42, 159, -1, 155,
+ 43, 159, -1, 155, 44, 155, -1, -1, 47, 157,
+ 137, 153, 138, -1, 48, 137, 153, 138, -1, 172,
+ 109, 160, -1, 165, 109, 160, -1, 279, 87, 160,
+ -1, 213, 139, 188, 310, 87, 160, -1, 213, 140,
+ 52, 87, 160, -1, 213, 140, 56, 87, 160, -1,
+ 213, 85, 52, 87, 160, -1, 280, 87, 160, -1,
+ 172, 109, 195, -1, 165, 109, 184, -1, 165, 109,
+ 195, -1, 158, -1, 160, -1, 158, 37, 158, -1,
+ 158, 38, 158, -1, 39, 308, 158, -1, 123, 160,
+ -1, 182, -1, 158, -1, 164, -1, 161, -1, 30,
+ 189, -1, 21, 189, -1, 22, 189, -1, 245, -1,
+ 245, 140, 304, 190, -1, 245, 85, 304, 190, -1,
+ -1, 94, 163, 234, 153, 138, -1, 303, 190, -1,
+ 303, 190, 162, -1, 213, 140, 304, 190, -1, 213,
+ 140, 304, 190, 162, -1, 213, 85, 304, 190, -1,
+ 213, 85, 304, 190, 162, -1, 32, 190, -1, 31,
+ 190, -1, 167, -1, 89, 166, 309, -1, 167, -1,
+ 89, 166, 309, -1, 169, -1, 169, 168, -1, 169,
+ 95, 171, -1, 169, 95, 171, 141, 170, -1, 169,
+ 95, -1, 169, 95, 141, 170, -1, 95, 171, -1,
+ 95, 171, 141, 170, -1, 95, -1, 95, 141, 170,
+ -1, 171, -1, 89, 166, 309, -1, 168, 141, -1,
+ 169, 168, 141, -1, 168, -1, 170, 141, 168, -1,
+ 277, -1, 213, 139, 188, 310, -1, 213, 140, 52,
+ -1, 213, 85, 52, -1, 213, 140, 56, -1, 213,
+ 85, 56, -1, 86, 56, -1, 280, -1, 277, -1,
+ 213, 139, 188, 310, -1, 213, 140, 52, -1, 213,
+ 85, 52, -1, 213, 140, 56, -1, 213, 85, 56,
+ -1, 86, 56, -1, 280, -1, 52, -1, 56, -1,
+ 86, 173, -1, 173, -1, 213, 85, 173, -1, 52,
+ -1, 56, -1, 53, -1, 180, -1, 181, -1, 175,
+ -1, 273, -1, 176, -1, 275, -1, 177, -1, -1,
+ 178, 141, 179, 177, -1, 114, -1, 115, -1, 116,
+ -1, 69, -1, 70, -1, 71, -1, 77, -1, 78,
+ -1, 112, -1, 73, -1, 113, -1, 74, -1, 72,
+ -1, 83, -1, 84, -1, 117, -1, 118, -1, 119,
+ -1, 95, -1, 120, -1, 121, -1, 68, -1, 123,
+ -1, 124, -1, 66, -1, 67, -1, 81, -1, 82,
+ -1, 142, -1, 49, -1, 50, -1, 51, -1, 47,
+ -1, 48, -1, 45, -1, 37, -1, 7, -1, 21,
+ -1, 16, -1, 3, -1, 5, -1, 46, -1, 26,
+ -1, 15, -1, 14, -1, 10, -1, 9, -1, 36,
+ -1, 20, -1, 25, -1, 4, -1, 22, -1, 34,
+ -1, 39, -1, 38, -1, 23, -1, 8, -1, 24,
+ -1, 30, -1, 33, -1, 32, -1, 13, -1, 35,
+ -1, 6, -1, 17, -1, 31, -1, 11, -1, 12,
+ -1, 18, -1, 19, -1, 172, 109, 182, -1, 172,
+ 109, 182, 44, 182, -1, 279, 87, 182, -1, 279,
+ 87, 182, 44, 182, -1, 213, 139, 188, 310, 87,
+ 182, -1, 213, 140, 52, 87, 182, -1, 213, 140,
+ 56, 87, 182, -1, 213, 85, 52, 87, 182, -1,
+ 213, 85, 56, 87, 182, -1, 86, 56, 87, 182,
+ -1, 280, 87, 182, -1, 182, 79, 182, -1, 182,
+ 80, 182, -1, 182, 117, 182, -1, 182, 118, 182,
+ -1, 182, 119, 182, -1, 182, 120, 182, -1, 182,
+ 121, 182, -1, 182, 68, 182, -1, 122, 59, 68,
+ 182, -1, 122, 60, 68, 182, -1, 66, 182, -1,
+ 67, 182, -1, 182, 114, 182, -1, 182, 115, 182,
+ -1, 182, 116, 182, -1, 182, 69, 182, -1, 182,
+ 112, 182, -1, 182, 73, 182, -1, 182, 113, 182,
+ -1, 182, 74, 182, -1, 182, 70, 182, -1, 182,
+ 71, 182, -1, 182, 72, 182, -1, 182, 77, 182,
+ -1, 182, 78, 182, -1, 123, 182, -1, 124, 182,
+ -1, 182, 83, 182, -1, 182, 84, 182, -1, 182,
+ 75, 182, -1, 182, 76, 182, -1, -1, 46, 308,
+ 183, 182, -1, 182, 110, 182, 308, 111, 182, -1,
+ 196, -1, 182, -1, 314, -1, 194, 311, -1, 194,
+ 141, 301, 311, -1, 301, 311, -1, 143, 188, 309,
+ -1, 314, -1, 186, -1, 314, -1, 189, -1, 164,
+ -1, 194, 193, -1, 301, 193, -1, 194, 141, 301,
+ 193, -1, 192, -1, -1, 191, 189, -1, 96, 184,
+ -1, 141, 192, -1, 141, -1, 314, -1, 184, -1,
+ 95, 184, -1, 194, 141, 184, -1, 194, 141, 95,
+ 184, -1, 194, 141, 184, -1, 194, 141, 95, 184,
+ -1, 95, 184, -1, 256, -1, 257, -1, 260, -1,
+ 261, -1, 262, -1, 265, -1, 278, -1, 280, -1,
+ 53, -1, -1, 214, 197, 152, 224, -1, -1, 90,
+ 158, 198, 309, -1, 89, 153, 144, -1, 213, 85,
+ 56, -1, 86, 56, -1, 92, 185, 145, -1, 93,
+ 300, 138, -1, 30, -1, 31, 143, 189, 309, -1,
+ 31, 143, 309, -1, 31, -1, -1, 46, 308, 143,
+ 199, 158, 309, -1, 39, 143, 158, 309, -1, 39,
+ 143, 309, -1, 303, 247, -1, 246, -1, 246, 247,
+ -1, 97, 239, -1, 215, 159, 225, 153, 227, 224,
+ -1, 216, 159, 225, 153, 228, 224, -1, -1, -1,
+ 217, 200, 159, 226, 201, 153, 224, -1, -1, -1,
+ 218, 202, 159, 226, 203, 153, 224, -1, 219, 159,
+ 307, 250, 224, -1, 219, 307, 250, 224, -1, -1,
+ -1, 220, 229, 25, 204, 159, 226, 205, 153, 224,
+ -1, -1, 221, 174, 281, 206, 152, 224, -1, -1,
+ -1, 221, 83, 158, 207, 312, 208, 152, 224, -1,
+ -1, 222, 174, 209, 152, 224, -1, -1, 223, 175,
+ 210, 283, 152, 224, -1, -1, -1, 223, 298, 306,
+ 211, 175, 212, 283, 152, 224, -1, 21, -1, 22,
+ -1, 23, -1, 24, -1, 196, -1, 7, -1, 11,
+ -1, 12, -1, 18, -1, 19, -1, 16, -1, 20,
+ -1, 3, -1, 4, -1, 5, -1, 10, -1, 312,
+ -1, 13, -1, 312, 13, -1, 312, -1, 27, -1,
+ 228, -1, 14, 159, 225, 153, 227, -1, 314, -1,
+ 15, 153, -1, 172, -1, 165, -1, 286, -1, 89,
+ 232, 309, -1, 230, -1, 231, 141, 230, -1, 231,
+ -1, 231, 141, 95, 286, -1, 231, 141, 95, 286,
+ 141, 231, -1, 231, 141, 95, -1, 231, 141, 95,
+ 141, 231, -1, 95, 286, -1, 95, 286, 141, 231,
+ -1, 95, -1, 95, 141, 231, -1, 288, 141, 291,
+ 141, 294, 297, -1, 288, 141, 291, 141, 294, 141,
+ 288, 297, -1, 288, 141, 291, 297, -1, 288, 141,
+ 291, 141, 288, 297, -1, 288, 141, 294, 297, -1,
+ 288, 141, -1, 288, 141, 294, 141, 288, 297, -1,
+ 288, 297, -1, 291, 141, 294, 297, -1, 291, 141,
+ 294, 141, 288, 297, -1, 291, 297, -1, 291, 141,
+ 288, 297, -1, 294, 297, -1, 294, 141, 288, 297,
+ -1, 296, -1, 314, -1, 235, -1, 114, 236, 114,
+ -1, 76, -1, 114, 233, 236, 114, -1, 314, -1,
+ 146, 237, -1, 238, -1, 237, 141, 238, -1, 52,
+ -1, 285, -1, -1, 240, 241, 242, -1, 143, 284,
+ 236, 309, -1, 284, -1, 107, 153, 138, -1, 29,
+ 153, 10, -1, -1, 28, 244, 234, 153, 10, -1,
+ 164, 243, -1, 245, 140, 304, 187, -1, 245, 85,
+ 304, 187, -1, 303, 186, -1, 213, 140, 304, 187,
+ -1, 213, 85, 304, 186, -1, 213, 85, 305, -1,
+ 213, 140, 186, -1, 213, 85, 186, -1, 32, 186,
+ -1, 32, -1, 213, 139, 188, 310, -1, -1, 137,
+ 248, 234, 153, 138, -1, -1, 26, 249, 234, 153,
+ 10, -1, 17, 194, 225, 153, 251, -1, 228, -1,
+ 250, -1, 8, 253, 254, 225, 153, 252, -1, 314,
+ -1, 184, -1, 195, -1, 314, -1, 88, 172, -1,
+ 314, -1, 9, 153, -1, 314, -1, 276, -1, 273,
+ -1, 275, -1, 258, -1, 62, -1, 259, -1, 258,
+ 259, -1, 99, 267, 106, -1, 100, 268, 106, -1,
+ 101, 268, 65, -1, 102, 147, 106, -1, 102, 263,
+ 106, -1, -1, 263, 264, 147, -1, 269, -1, 264,
+ 269, -1, 103, 147, 106, -1, 103, 266, 106, -1,
+ -1, 266, 61, 147, -1, -1, 267, 269, -1, -1,
+ 268, 269, -1, 61, -1, -1, 105, 270, 272, -1,
+ -1, 104, 271, 153, 138, -1, 54, -1, 55, -1,
+ 57, -1, 280, -1, 98, 274, -1, 175, -1, 55,
+ -1, 54, -1, 57, -1, 98, 268, 106, -1, 59,
+ -1, 60, -1, 122, 59, -1, 122, 60, -1, 52,
+ -1, 55, -1, 54, -1, 56, -1, 57, -1, 34,
+ -1, 33, -1, 35, -1, 36, -1, 50, -1, 49,
+ -1, 51, -1, 277, -1, 277, -1, 63, -1, 64,
+ -1, 312, -1, -1, 113, 282, 159, 312, -1, 1,
+ 312, -1, 143, 284, 309, -1, 284, 312, -1, 288,
+ 141, 292, 141, 294, 297, -1, 288, 141, 292, 141,
+ 294, 141, 288, 297, -1, 288, 141, 292, 297, -1,
+ 288, 141, 292, 141, 288, 297, -1, 288, 141, 294,
+ 297, -1, 288, 141, 294, 141, 288, 297, -1, 288,
+ 297, -1, 292, 141, 294, 297, -1, 292, 141, 294,
+ 141, 288, 297, -1, 292, 297, -1, 292, 141, 288,
+ 297, -1, 294, 297, -1, 294, 141, 288, 297, -1,
+ 296, -1, -1, 56, -1, 55, -1, 54, -1, 57,
+ -1, 285, -1, 52, -1, 286, -1, 89, 232, 309,
+ -1, 287, -1, 288, 141, 287, -1, 52, 109, 184,
+ -1, 52, 109, 213, -1, 290, -1, 291, 141, 290,
+ -1, 289, -1, 292, 141, 289, -1, 119, -1, 95,
+ -1, 293, 52, -1, 293, -1, 116, -1, 96, -1,
+ 295, 52, -1, 141, 296, -1, 314, -1, 278, -1,
+ -1, 143, 299, 158, 309, -1, 314, -1, 301, 311,
+ -1, 302, -1, 301, 141, 302, -1, 184, 88, 184,
+ -1, 58, 184, -1, 52, -1, 56, -1, 53, -1,
+ 52, -1, 56, -1, 53, -1, 180, -1, 52, -1,
+ 53, -1, 180, -1, 140, -1, 85, -1, -1, 313,
+ -1, -1, 148, -1, 308, 144, -1, 308, 145, -1,
+ -1, 148, -1, 141, -1, 146, -1, 148, -1, 312,
+ -1, 313, 146, -1, -1
+};
+static const yytype_uint16 yyrline[] =
+{
+ 0, 763, 763, 763, 793, 826, 837, 846, 854, 862,
+ 868, 868, 876, 884, 895, 905, 913, 922, 931, 944,
+ 957, 967, 966, 988, 1000, 1009, 1019, 1048, 1069, 1086,
+ 1103, 1120, 1130, 1139, 1148, 1157, 1160, 1161, 1169, 1177,
+ 1185, 1193, 1196, 1208, 1209, 1210, 1218, 1226, 1236, 1237,
+ 1246, 1258, 1257, 1279, 1288, 1300, 1309, 1321, 1330, 1342,
+ 1351, 1362, 1363, 1373, 1374, 1384, 1392, 1400, 1408, 1416,
+ 1424, 1432, 1440, 1448, 1456, 1466, 1467, 1477, 1485, 1495,
+ 1503, 1513, 1521, 1529, 1537, 1545, 1553, 1565, 1575, 1587,
+ 1595, 1603, 1611, 1619, 1627, 1640, 1653, 1664, 1672, 1675,
+ 1683, 1691, 1701, 1702, 1703, 1704, 1714, 1726, 1727, 1730,
+ 1738, 1741, 1749, 1749, 1759, 1760, 1761, 1762, 1763, 1764,
+ 1765, 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774,
+ 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784,
+ 1785, 1786, 1787, 1790, 1790, 1790, 1791, 1791, 1792, 1792,
+ 1792, 1793, 1793, 1793, 1793, 1794, 1794, 1794, 1794, 1795,
+ 1795, 1795, 1796, 1796, 1796, 1796, 1797, 1797, 1797, 1797,
+ 1798, 1798, 1798, 1798, 1799, 1799, 1799, 1799, 1800, 1800,
+ 1800, 1800, 1801, 1801, 1804, 1813, 1823, 1852, 1883, 1904,
+ 1921, 1938, 1955, 1966, 1977, 1988, 2002, 2016, 2024, 2032,
+ 2040, 2048, 2056, 2064, 2073, 2082, 2090, 2098, 2106, 2114,
+ 2122, 2130, 2138, 2146, 2154, 2162, 2170, 2178, 2186, 2197,
+ 2205, 2213, 2221, 2229, 2237, 2245, 2253, 2253, 2263, 2273,
+ 2279, 2291, 2292, 2296, 2304, 2314, 2324, 2325, 2328, 2329,
+ 2332, 2340, 2348, 2358, 2367, 2376, 2376, 2388, 2398, 2402,
+ 2406, 2412, 2420, 2428, 2442, 2458, 2472, 2487, 2497, 2498,
+ 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2514, 2513, 2538,
+ 2538, 2547, 2555, 2563, 2571, 2584, 2592, 2600, 2608, 2616,
+ 2624, 2624, 2634, 2642, 2650, 2661, 2662, 2673, 2677, 2689,
+ 2701, 2701, 2701, 2712, 2712, 2712, 2723, 2734, 2743, 2745,
+ 2742, 2809, 2808, 2830, 2835, 2829, 2857, 2856, 2878, 2877,
+ 2904, 2905, 2904, 2929, 2937, 2945, 2953, 2963, 2975, 2982,
+ 2989, 2996, 3003, 3010, 3017, 3024, 3031, 3038, 3045, 3052,
+ 3057, 3058, 3065, 3070, 3073, 3074, 3087, 3088, 3098, 3099,
+ 3102, 3110, 3120, 3128, 3138, 3146, 3154, 3162, 3170, 3178,
+ 3186, 3197, 3205, 3215, 3223, 3231, 3239, 3247, 3255, 3264,
+ 3272, 3280, 3288, 3296, 3304, 3312, 3320, 3328, 3338, 3339,
+ 3345, 3354, 3363, 3374, 3375, 3385, 3392, 3401, 3409, 3415,
+ 3415, 3437, 3445, 3455, 3459, 3466, 3465, 3486, 3502, 3511,
+ 3522, 3531, 3541, 3551, 3559, 3570, 3581, 3589, 3597, 3612,
+ 3611, 3633, 3632, 3653, 3665, 3666, 3669, 3688, 3691, 3699,
+ 3707, 3710, 3714, 3717, 3725, 3728, 3729, 3737, 3740, 3757,
+ 3758, 3759, 3769, 3779, 3806, 3848, 3856, 3863, 3870, 3880,
+ 3888, 3898, 3906, 3913, 3920, 3931, 3938, 3949, 3956, 3966,
+ 3968, 3967, 3984, 3983, 4005, 4013, 4021, 4029, 4032, 4044,
+ 4045, 4046, 4047, 4050, 4081, 4082, 4083, 4091, 4101, 4102,
+ 4103, 4104, 4105, 4106, 4107, 4108, 4109, 4110, 4111, 4112,
+ 4115, 4125, 4135, 4136, 4139, 4148, 4147, 4155, 4167, 4179,
+ 4185, 4193, 4201, 4209, 4217, 4225, 4233, 4241, 4249, 4257,
+ 4265, 4273, 4281, 4289, 4298, 4307, 4316, 4325, 4334, 4345,
+ 4346, 4358, 4366, 4385, 4392, 4405, 4419, 4433, 4441, 4457,
+ 4465, 4481, 4482, 4485, 4497, 4508, 4509, 4512, 4528, 4532,
+ 4542, 4552, 4552, 4581, 4582, 4592, 4599, 4609, 4617, 4627,
+ 4628, 4629, 4632, 4633, 4634, 4635, 4638, 4639, 4640, 4643,
+ 4648, 4655, 4656, 4659, 4660, 4663, 4666, 4669, 4670, 4671,
+ 4674, 4675, 4678, 4679, 4683
+};
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "keyword_class", "keyword_module",
+ "keyword_def", "keyword_undef", "keyword_begin", "keyword_rescue",
+ "keyword_ensure", "keyword_end", "keyword_if", "keyword_unless",
+ "keyword_then", "keyword_elsif", "keyword_else", "keyword_case",
+ "keyword_when", "keyword_while", "keyword_until", "keyword_for",
+ "keyword_break", "keyword_next", "keyword_redo", "keyword_retry",
+ "keyword_in", "keyword_do", "keyword_do_cond", "keyword_do_block",
+ "keyword_do_LAMBDA", "keyword_return", "keyword_yield", "keyword_super",
+ "keyword_self", "keyword_nil", "keyword_true", "keyword_false",
+ "keyword_and", "keyword_or", "keyword_not", "modifier_if",
+ "modifier_unless", "modifier_while", "modifier_until", "modifier_rescue",
+ "keyword_alias", "keyword_defined", "keyword_BEGIN", "keyword_END",
+ "keyword__LINE__", "keyword__FILE__", "keyword__ENCODING__",
+ "tIDENTIFIER", "tFID", "tGVAR", "tIVAR", "tCONSTANT", "tCVAR", "tLABEL",
+ "tINTEGER", "tFLOAT", "tSTRING_CONTENT", "tCHAR", "tNTH_REF",
+ "tBACK_REF", "tREGEXP_END", "tUPLUS", "tUMINUS", "tPOW", "tCMP", "tEQ",
+ "tEQQ", "tNEQ", "tGEQ", "tLEQ", "tANDOP", "tOROP", "tMATCH", "tNMATCH",
+ "tDOT2", "tDOT3", "tAREF", "tASET", "tLSHFT", "tRSHFT", "tCOLON2",
+ "tCOLON3", "tOP_ASGN", "tASSOC", "tLPAREN", "tLPAREN_ARG", "tRPAREN",
+ "tLBRACK", "tLBRACE", "tLBRACE_ARG", "tSTAR", "tAMPER", "tLAMBDA",
+ "tSYMBEG", "tSTRING_BEG", "tXSTRING_BEG", "tREGEXP_BEG", "tWORDS_BEG",
+ "tQWORDS_BEG", "tSTRING_DBEG", "tSTRING_DVAR", "tSTRING_END", "tLAMBEG",
+ "tLOWEST", "'='", "'?'", "':'", "'>'", "'<'", "'|'", "'^'", "'&'", "'+'",
+ "'-'", "'*'", "'/'", "'%'", "tUMINUS_NUM", "'!'", "'~'", "idNULL",
+ "idRespond_to", "idIFUNC", "idCFUNC", "idThrowState",
+ "id_core_set_method_alias", "id_core_set_variable_alias",
+ "id_core_undef_method", "id_core_define_method",
+ "id_core_define_singleton_method", "id_core_set_postexe", "tLAST_TOKEN",
+ "'{'", "'}'", "'['", "'.'", "','", "'`'", "'('", "')'", "']'", "';'",
+ "' '", "'\\n'", "$accept", "program", "@1", "bodystmt", "compstmt",
+ "stmts", "stmt", "@2", "@3", "expr", "expr_value", "command_call",
+ "block_command", "cmd_brace_block", "@4", "command", "mlhs",
+ "mlhs_inner", "mlhs_basic", "mlhs_item", "mlhs_head", "mlhs_post",
+ "mlhs_node", "lhs", "cname", "cpath", "fname", "fsym", "fitem",
+ "undef_list", "@5", "op", "reswords", "arg", "@6", "arg_value",
+ "aref_args", "paren_args", "opt_paren_args", "opt_call_args",
+ "call_args", "command_args", "@7", "block_arg", "opt_block_arg", "args",
+ "mrhs", "primary", "@8", "@9", "@10", "@11", "@12", "@13", "@14", "@15",
+ "@16", "@17", "@18", "@19", "@20", "@21", "@22", "@23", "primary_value",
+ "k_begin", "k_if", "k_unless", "k_while", "k_until", "k_case", "k_for",
+ "k_class", "k_module", "k_def", "k_end", "then", "do", "if_tail",
+ "opt_else", "for_var", "f_marg", "f_marg_list", "f_margs", "block_param",
+ "opt_block_param", "block_param_def", "opt_bv_decl", "bv_decls", "bvar",
+ "lambda", "@24", "f_larglist", "lambda_body", "do_block", "@25",
+ "block_call", "method_call", "brace_block", "@26", "@27", "case_body",
+ "cases", "opt_rescue", "exc_list", "exc_var", "opt_ensure", "literal",
+ "strings", "string", "string1", "xstring", "regexp", "words",
+ "word_list", "word", "qwords", "qword_list", "string_contents",
+ "xstring_contents", "string_content", "@28", "@29", "string_dvar",
+ "symbol", "sym", "dsym", "numeric", "variable", "var_ref", "var_lhs",
+ "backref", "superclass", "@30", "f_arglist", "f_args", "f_bad_arg",
+ "f_norm_arg", "f_arg_item", "f_arg", "f_opt", "f_block_opt",
+ "f_block_optarg", "f_optarg", "restarg_mark", "f_rest_arg",
+ "blkarg_mark", "f_block_arg", "opt_f_block_arg", "singleton", "@31",
+ "assoc_list", "assocs", "assoc", "operation", "operation2", "operation3",
+ "dot_or_colon", "opt_terms", "opt_nl", "rparen", "rbracket", "trailer",
+ "term", "terms", "none", 0
+};
+static const yytype_uint16 yyr1[] =
+{
+ 0, 149, 151, 150, 152, 153, 154, 154, 154, 154,
+ 156, 155, 155, 155, 155, 155, 155, 155, 155, 155,
+ 155, 157, 155, 155, 155, 155, 155, 155, 155, 155,
+ 155, 155, 155, 155, 155, 155, 158, 158, 158, 158,
+ 158, 158, 159, 160, 160, 160, 160, 160, 161, 161,
+ 161, 163, 162, 164, 164, 164, 164, 164, 164, 164,
+ 164, 165, 165, 166, 166, 167, 167, 167, 167, 167,
+ 167, 167, 167, 167, 167, 168, 168, 169, 169, 170,
+ 170, 171, 171, 171, 171, 171, 171, 171, 171, 172,
+ 172, 172, 172, 172, 172, 172, 172, 173, 173, 174,
+ 174, 174, 175, 175, 175, 175, 175, 176, 176, 177,
+ 177, 178, 179, 178, 180, 180, 180, 180, 180, 180,
+ 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
+ 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
+ 180, 180, 180, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
+ 181, 181, 181, 181, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 183, 182, 182, 182,
+ 184, 185, 185, 185, 185, 186, 187, 187, 188, 188,
+ 189, 189, 189, 189, 189, 191, 190, 192, 193, 193,
+ 193, 194, 194, 194, 194, 195, 195, 195, 196, 196,
+ 196, 196, 196, 196, 196, 196, 196, 197, 196, 198,
+ 196, 196, 196, 196, 196, 196, 196, 196, 196, 196,
+ 199, 196, 196, 196, 196, 196, 196, 196, 196, 196,
+ 200, 201, 196, 202, 203, 196, 196, 196, 204, 205,
+ 196, 206, 196, 207, 208, 196, 209, 196, 210, 196,
+ 211, 212, 196, 196, 196, 196, 196, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
+ 225, 225, 226, 226, 227, 227, 228, 228, 229, 229,
+ 230, 230, 231, 231, 232, 232, 232, 232, 232, 232,
+ 232, 232, 232, 233, 233, 233, 233, 233, 233, 233,
+ 233, 233, 233, 233, 233, 233, 233, 233, 234, 234,
+ 235, 235, 235, 236, 236, 237, 237, 238, 238, 240,
+ 239, 241, 241, 242, 242, 244, 243, 245, 245, 245,
+ 246, 246, 246, 246, 246, 246, 246, 246, 246, 248,
+ 247, 249, 247, 250, 251, 251, 252, 252, 253, 253,
+ 253, 254, 254, 255, 255, 256, 256, 256, 257, 258,
+ 258, 258, 259, 260, 261, 262, 262, 263, 263, 264,
+ 264, 265, 265, 266, 266, 267, 267, 268, 268, 269,
+ 270, 269, 271, 269, 272, 272, 272, 272, 273, 274,
+ 274, 274, 274, 275, 276, 276, 276, 276, 277, 277,
+ 277, 277, 277, 277, 277, 277, 277, 277, 277, 277,
+ 278, 279, 280, 280, 281, 282, 281, 281, 283, 283,
+ 284, 284, 284, 284, 284, 284, 284, 284, 284, 284,
+ 284, 284, 284, 284, 284, 285, 285, 285, 285, 286,
+ 286, 287, 287, 288, 288, 289, 290, 291, 291, 292,
+ 292, 293, 293, 294, 294, 295, 295, 296, 297, 297,
+ 298, 299, 298, 300, 300, 301, 301, 302, 302, 303,
+ 303, 303, 304, 304, 304, 304, 305, 305, 305, 306,
+ 306, 307, 307, 308, 308, 309, 310, 311, 311, 311,
+ 312, 312, 313, 313, 314
+};
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 0, 2, 4, 2, 1, 1, 3, 2,
+ 0, 4, 3, 3, 3, 2, 3, 3, 3, 3,
+ 3, 0, 5, 4, 3, 3, 3, 6, 5, 5,
+ 5, 3, 3, 3, 3, 1, 1, 3, 3, 3,
+ 2, 1, 1, 1, 1, 2, 2, 2, 1, 4,
+ 4, 0, 5, 2, 3, 4, 5, 4, 5, 2,
+ 2, 1, 3, 1, 3, 1, 2, 3, 5, 2,
+ 4, 2, 4, 1, 3, 1, 3, 2, 3, 1,
+ 3, 1, 4, 3, 3, 3, 3, 2, 1, 1,
+ 4, 3, 3, 3, 3, 2, 1, 1, 1, 2,
+ 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 0, 4, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 3, 5, 3, 5, 6, 5,
+ 5, 5, 5, 4, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 4, 4, 2, 2, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
+ 2, 2, 3, 3, 3, 3, 0, 4, 6, 1,
+ 1, 1, 2, 4, 2, 3, 1, 1, 1, 1,
+ 1, 2, 2, 4, 1, 0, 2, 2, 2, 1,
+ 1, 1, 2, 3, 4, 3, 4, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 0, 4, 0,
+ 4, 3, 3, 2, 3, 3, 1, 4, 3, 1,
+ 0, 6, 4, 3, 2, 1, 2, 2, 6, 6,
+ 0, 0, 7, 0, 0, 7, 5, 4, 0, 0,
+ 9, 0, 6, 0, 0, 8, 0, 5, 0, 6,
+ 0, 0, 9, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 1, 1, 1, 5, 1, 2, 1, 1,
+ 1, 3, 1, 3, 1, 4, 6, 3, 5, 2,
+ 4, 1, 3, 6, 8, 4, 6, 4, 2, 6,
+ 2, 4, 6, 2, 4, 2, 4, 1, 1, 1,
+ 3, 1, 4, 1, 2, 1, 3, 1, 1, 0,
+ 3, 4, 1, 3, 3, 0, 5, 2, 4, 4,
+ 2, 4, 4, 3, 3, 3, 2, 1, 4, 0,
+ 5, 0, 5, 5, 1, 1, 6, 1, 1, 1,
+ 1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 2, 3, 3, 3, 3, 3, 0, 3, 1,
+ 2, 3, 3, 0, 3, 0, 2, 0, 2, 1,
+ 0, 3, 0, 4, 1, 1, 1, 1, 2, 1,
+ 1, 1, 1, 3, 1, 1, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 0, 4, 2, 3, 2,
+ 6, 8, 4, 6, 4, 6, 2, 4, 6, 2,
+ 4, 2, 4, 1, 0, 1, 1, 1, 1, 1,
+ 1, 1, 3, 1, 3, 3, 3, 1, 3, 1,
+ 3, 1, 1, 2, 1, 1, 1, 2, 2, 1,
+ 1, 0, 4, 1, 2, 1, 3, 3, 2, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 0, 1, 0, 1, 2, 2, 0, 1, 1,
+ 1, 1, 1, 2, 0
+};
+static const yytype_uint16 yydefact[] =
+{
+ 2, 0, 0, 1, 0, 325, 326, 327, 0, 318,
+ 319, 320, 323, 321, 322, 324, 313, 314, 315, 316,
+ 276, 245, 245, 464, 463, 465, 466, 543, 0, 543,
+ 21, 0, 468, 467, 469, 458, 531, 460, 459, 461,
+ 462, 454, 455, 419, 472, 473, 0, 0, 0, 0,
+ 0, 554, 554, 73, 379, 437, 435, 437, 437, 427,
+ 433, 0, 0, 0, 3, 541, 7, 35, 36, 44,
+ 43, 0, 61, 0, 65, 75, 0, 41, 229, 0,
+ 267, 0, 0, 290, 293, 541, 0, 0, 0, 0,
+ 48, 285, 258, 259, 418, 420, 260, 261, 262, 263,
+ 416, 417, 415, 470, 264, 0, 265, 245, 6, 9,
+ 153, 164, 154, 177, 150, 170, 160, 159, 180, 181,
+ 175, 158, 157, 152, 178, 182, 183, 162, 151, 165,
+ 169, 171, 163, 156, 172, 179, 174, 173, 166, 176,
+ 161, 149, 168, 167, 148, 155, 146, 147, 143, 144,
+ 145, 102, 104, 103, 138, 139, 135, 117, 118, 119,
+ 126, 123, 125, 120, 121, 140, 141, 127, 128, 132,
+ 122, 124, 114, 115, 116, 129, 130, 131, 133, 134,
+ 136, 137, 142, 107, 109, 111, 15, 105, 106, 108,
+ 110, 313, 314, 276, 0, 0, 0, 0, 0, 0,
+ 0, 240, 0, 230, 251, 46, 244, 554, 0, 470,
+ 0, 265, 554, 525, 47, 45, 543, 60, 0, 554,
+ 396, 59, 543, 544, 0, 0, 10, 226, 0, 0,
+ 279, 397, 205, 0, 0, 206, 273, 0, 0, 543,
+ 63, 269, 0, 547, 547, 231, 0, 0, 547, 523,
+ 543, 0, 0, 0, 71, 317, 0, 81, 88, 287,
+ 494, 451, 450, 452, 449, 0, 448, 0, 0, 0,
+ 0, 0, 0, 0, 456, 457, 40, 220, 221, 550,
+ 551, 5, 552, 542, 0, 0, 0, 0, 0, 0,
+ 0, 385, 387, 0, 77, 0, 69, 66, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 554, 0, 0, 42,
+ 0, 0, 0, 0, 541, 0, 542, 0, 339, 338,
+ 0, 0, 470, 265, 97, 98, 0, 0, 100, 0,
+ 0, 470, 265, 306, 173, 166, 176, 161, 143, 144,
+ 145, 102, 103, 521, 308, 520, 0, 0, 0, 401,
+ 399, 286, 421, 0, 0, 390, 53, 284, 112, 528,
+ 273, 252, 247, 0, 0, 249, 241, 250, 0, 554,
+ 0, 0, 0, 249, 242, 543, 0, 278, 246, 543,
+ 239, 238, 543, 283, 39, 12, 14, 13, 0, 280,
+ 0, 0, 0, 0, 0, 0, 543, 271, 62, 543,
+ 274, 549, 548, 232, 549, 234, 275, 524, 0, 87,
+ 456, 457, 79, 74, 0, 0, 554, 0, 500, 497,
+ 496, 495, 498, 0, 512, 516, 515, 511, 494, 0,
+ 382, 499, 501, 503, 554, 509, 554, 514, 554, 0,
+ 493, 439, 442, 440, 453, 438, 422, 436, 423, 424,
+ 425, 426, 0, 429, 431, 0, 432, 0, 0, 553,
+ 8, 16, 17, 18, 19, 20, 37, 38, 554, 0,
+ 25, 33, 0, 34, 543, 0, 67, 78, 24, 184,
+ 251, 32, 202, 210, 215, 216, 217, 212, 214, 224,
+ 225, 218, 219, 195, 196, 222, 223, 543, 211, 213,
+ 207, 208, 209, 197, 198, 199, 200, 201, 532, 537,
+ 533, 538, 395, 245, 393, 543, 532, 534, 533, 535,
+ 394, 245, 0, 554, 330, 0, 329, 0, 0, 0,
+ 0, 0, 0, 273, 0, 554, 0, 298, 303, 97,
+ 98, 99, 0, 475, 301, 474, 0, 554, 0, 0,
+ 0, 494, 540, 539, 310, 532, 533, 245, 245, 554,
+ 554, 26, 186, 31, 194, 51, 54, 0, 184, 527,
+ 0, 253, 248, 554, 536, 533, 543, 532, 533, 526,
+ 277, 545, 235, 282, 11, 0, 227, 0, 23, 0,
+ 554, 193, 64, 270, 547, 0, 72, 84, 86, 543,
+ 532, 533, 0, 500, 0, 351, 342, 344, 543, 340,
+ 554, 0, 0, 380, 0, 486, 519, 0, 489, 513,
+ 0, 491, 517, 0, 0, 428, 430, 434, 203, 204,
+ 371, 554, 0, 369, 368, 257, 0, 76, 70, 0,
+ 0, 0, 0, 0, 392, 57, 0, 398, 0, 0,
+ 237, 391, 55, 236, 328, 268, 554, 554, 407, 554,
+ 331, 554, 333, 291, 332, 294, 0, 0, 297, 536,
+ 272, 543, 532, 533, 0, 0, 477, 0, 0, 97,
+ 98, 101, 543, 0, 543, 494, 0, 0, 0, 389,
+ 50, 388, 49, 0, 0, 0, 554, 113, 254, 243,
+ 0, 398, 0, 0, 543, 22, 233, 80, 82, 505,
+ 543, 0, 349, 0, 502, 0, 543, 373, 0, 0,
+ 504, 554, 554, 518, 554, 510, 554, 554, 0, 444,
+ 445, 446, 441, 447, 500, 554, 0, 554, 507, 554,
+ 554, 367, 0, 0, 255, 68, 185, 0, 30, 191,
+ 192, 58, 546, 0, 28, 189, 29, 190, 56, 408,
+ 409, 554, 410, 0, 554, 336, 0, 0, 334, 0,
+ 0, 0, 296, 0, 0, 398, 0, 304, 0, 0,
+ 398, 307, 522, 543, 0, 479, 311, 0, 0, 187,
+ 0, 0, 281, 341, 352, 0, 347, 343, 377, 374,
+ 375, 378, 381, 384, 383, 0, 482, 0, 484, 0,
+ 490, 0, 487, 492, 443, 0, 0, 370, 358, 360,
+ 0, 363, 0, 365, 386, 256, 228, 27, 188, 0,
+ 0, 412, 337, 0, 4, 414, 0, 288, 289, 0,
+ 0, 253, 554, 299, 0, 476, 302, 478, 309, 494,
+ 402, 400, 0, 0, 350, 0, 345, 0, 554, 554,
+ 554, 554, 0, 506, 372, 554, 554, 554, 508, 554,
+ 554, 0, 411, 0, 89, 96, 0, 413, 0, 292,
+ 295, 404, 405, 403, 0, 0, 0, 52, 348, 0,
+ 376, 483, 0, 480, 485, 488, 273, 0, 0, 355,
+ 0, 357, 364, 0, 361, 366, 95, 0, 554, 0,
+ 554, 554, 0, 305, 0, 346, 554, 536, 272, 554,
+ 554, 554, 554, 536, 94, 543, 532, 533, 406, 335,
+ 300, 312, 481, 356, 0, 353, 359, 362, 398, 554,
+ 354
+};
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 1, 2, 542, 543, 65, 66, 408, 228, 67,
+ 330, 68, 69, 586, 716, 70, 71, 239, 72, 73,
+ 74, 433, 75, 202, 348, 349, 183, 184, 185, 186,
+ 587, 539, 188, 77, 410, 204, 242, 532, 671, 399,
+ 400, 217, 218, 206, 386, 207, 493, 78, 328, 419,
+ 605, 332, 790, 333, 791, 694, 904, 698, 695, 864,
+ 569, 571, 708, 869, 233, 80, 81, 82, 83, 84,
+ 85, 86, 87, 88, 89, 675, 545, 683, 787, 788,
+ 341, 626, 627, 628, 755, 652, 653, 736, 819, 820,
+ 259, 260, 449, 633, 292, 488, 90, 91, 377, 580,
+ 579, 552, 903, 677, 781, 850, 854, 92, 93, 94,
+ 95, 96, 97, 98, 271, 472, 99, 273, 267, 265,
+ 465, 644, 643, 752, 100, 266, 101, 102, 209, 104,
+ 210, 211, 564, 697, 706, 707, 451, 452, 453, 454,
+ 455, 758, 759, 456, 457, 458, 459, 743, 635, 366,
+ 570, 247, 212, 213, 234, 609, 534, 574, 281, 396,
+ 397, 667, 423, 546, 336, 108
+};
+static const yytype_int16 yypact[] =
+{
+ -747, 103, 2364, -747, 6711, -747, -747, -747, 6222, -747,
+ -747, -747, -747, -747, -747, -747, 6820, 6820, -747, -747,
+ 6820, 3057, 2631, -747, -747, -747, -747, 282, 6082, -24,
+ -747, 64, -747, -747, -747, 5317, 2773, -747, -747, 5445,
+ -747, -747, -747, -747, -747, -747, 8019, 8019, 74, 4131,
+ 8128, 7038, 7365, 6487, -747, 5942, -747, -747, -747, 142,
+ 154, 84, 8237, 8019, -747, 473, 925, 71, -747, -747,
+ 238, 234, -747, 205, 8346, -747, 268, 2472, 31, 46,
+ -747, 8128, 8128, -747, -747, 4792, 8451, 8556, 8661, 5189,
+ 14, 70, -747, -747, 290, -747, -747, -747, -747, -747,
+ -747, -747, -747, 26, -747, 366, 355, 210, -747, 925,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -747, 321, -747, -747, -747,
+ -747, -747, -747, -747, 328, 8019, 433, 4262, 8019, 8019,
+ 8019, -747, 403, 2472, 440, -747, -747, 418, 300, 13,
+ 457, 24, 437, -747, -747, -747, 4670, -747, 6820, 6820,
+ -747, -747, 4923, -747, 8128, 438, -747, 436, 449, 4393,
+ 452, 463, -747, 346, 210, 546, 451, 4131, 474, -24,
+ 525, 71, 477, 165, 276, -747, 440, 498, 276, -747,
+ -24, 582, 250, 8766, 501, -747, 374, 384, 394, -747,
+ 933, -747, -747, -747, -747, 595, -747, 659, 673, 76,
+ 552, 721, 553, 43, 584, 596, -747, -747, -747, -747,
+ -747, -747, -747, 5045, 8128, 8128, 8128, 8128, 6711, 8128,
+ 8128, -747, -747, 7474, -747, 4131, 6599, 524, 7474, 8019,
+ 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019,
+ 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019, 8019,
+ 8019, 8019, 8019, 8019, 8019, 9033, 6820, 9111, 3431, 71,
+ 119, 119, 8128, 8128, 473, 652, 528, 614, -747, -747,
+ 424, 654, 56, 92, 335, 344, 8128, 131, -747, 42,
+ 444, -747, -747, -747, 33, 35, 53, 217, 227, 235,
+ 265, 298, 333, -747, -747, -747, 358, 10047, 10047, -747,
+ -747, -747, -747, 8237, 8237, -747, 587, -747, -747, -747,
+ 305, -747, -747, 8019, 8019, 6929, -747, -747, 9189, 6820,
+ 9267, 8019, 8019, 7147, -747, -24, 540, -747, -747, -24,
+ -747, -747, 242, -747, -747, -747, -747, -747, 6222, -747,
+ 8019, 4393, 555, 9189, 9267, 8019, -24, -747, 556, -24,
+ -747, 7256, -747, -747, 7365, -747, -747, -747, 436, 470,
+ -747, -747, -747, 557, 8766, 9345, 6820, 9423, 585, -747,
+ -747, -747, -747, 843, -747, -747, -747, -747, 835, 49,
+ -747, -747, -747, -747, 564, -747, 565, 658, 572, 662,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, 21, -747, -747, 569, -747, 8019, 8019, -747,
+ 925, -747, -747, -747, -747, -747, -747, -747, 38, 8019,
+ -747, 577, 578, -747, -24, 8766, 581, -747, -747, 2225,
+ -747, -747, 546, 2143, 2143, 2143, 2143, 1115, 1115, 2614,
+ 2024, 2143, 2143, 1738, 1738, 718, 718, 1856, 1115, 1115,
+ 619, 619, 692, 274, 274, 546, 546, 546, 3199, 5687,
+ 3285, 5801, -747, 463, -747, -24, 460, -747, 471, -747,
+ -747, 2915, 715, 734, -747, 3577, 713, 3869, 175, 175,
+ 652, 7583, 715, 96, 9501, 6820, 9579, -747, 71, -747,
+ 470, -747, 473, -747, -747, -747, 9657, 6820, 9735, 3431,
+ 8128, 1108, -747, -747, -747, -747, -747, 996, 996, 38,
+ 38, -747, 2242, -747, 2472, -747, -747, 6222, 10104, -747,
+ 8019, 440, -747, 437, 5573, 2489, -24, 367, 390, -747,
+ -747, -747, -747, -747, -747, 8128, 2472, 605, -747, 463,
+ 463, 2472, -7, -747, 276, 8766, 557, 500, 267, -24,
+ 48, 50, 8019, -747, 843, 592, -747, 603, -24, -747,
+ 600, 4539, 4393, -747, 835, -747, -747, 835, -747, -747,
+ 634, -747, -747, 4393, 865, -747, -747, -747, 546, 546,
+ -747, 411, 4539, -747, -747, 607, 7692, -747, 557, 8766,
+ 8019, 644, 8237, 8019, -747, 587, 612, 544, 8237, 8237,
+ -747, -747, 587, -747, -747, -747, 7801, 744, -747, 413,
+ -747, 744, -747, -747, -747, -747, 715, 208, -747, 62,
+ 85, -24, 117, 120, 8128, 473, -747, 8128, 3431, 500,
+ 267, -747, -24, 715, 242, 835, 3431, 473, 6362, -747,
+ -747, -747, -747, 4539, 4393, 8019, 38, -747, -747, -747,
+ 8019, 432, 8019, 8019, 242, -747, -747, -747, 465, -747,
+ -24, 788, 620, 854, -747, 885, -24, -747, 756, 631,
+ -747, 629, 633, -747, 639, -747, 642, 639, 657, -747,
+ -747, -747, -747, -747, 681, 600, 683, 665, -747, 666,
+ 676, -747, 789, 8019, 680, 557, 2472, 8019, -747, 2472,
+ 2472, -747, -747, 8237, -747, 2472, -747, 2472, -747, 577,
+ -747, 710, -747, 4000, 814, -747, 8128, 715, -747, 715,
+ 4539, 4539, -747, 7910, 3723, 133, 175, -747, 473, 715,
+ -747, -747, -747, -24, 715, -747, -747, 822, 696, 2472,
+ 4393, 8019, -747, -747, 700, 788, 621, -747, -747, 705,
+ -747, -747, -747, -747, -747, 835, -747, 634, -747, 634,
+ -747, 634, -747, -747, -747, 8871, 736, -747, 1125, -747,
+ 1125, -747, 634, -747, -747, 711, 2472, -747, 2472, 8976,
+ 119, -747, -747, 4539, -747, -747, 119, -747, -747, 715,
+ 715, -747, 505, -747, 3431, -747, -747, -747, -747, 1108,
+ -747, -747, 717, 788, 700, 788, 716, 885, 639, 720,
+ 639, 639, 807, 487, -747, 725, 726, 639, -747, 728,
+ 639, 815, -747, 522, 384, 394, 3431, -747, 3577, -747,
+ -747, -747, -747, -747, 4539, 715, 3431, -747, 700, 788,
+ -747, -747, 634, -747, -747, -747, -747, 9813, 1125, -747,
+ 634, -747, -747, 634, -747, -747, 470, 9891, 6820, 9969,
+ 734, 413, 715, -747, 715, 700, 639, 727, 730, 639,
+ 738, 639, 639, 212, 267, -24, 152, 187, -747, -747,
+ -747, -747, -747, -747, 634, -747, -747, -747, 193, 639,
+ -747
+};
+static const yytype_int16 yypgoto[] =
+{
+ -747, -747, -747, -537, 976, -747, 20, -747, -747, -14,
+ 30, -45, -747, -133, -747, 22, 772, -149, 9, -69,
+ -747, -400, -4, 1540, -303, 793, -54, -747, -12, -747,
+ -747, 0, -747, 802, -747, -48, -747, -16, -29, -313,
+ 81, 55, -747, -245, -192, -41, -272, -34, -747, -747,
+ -747, -747, -747, -747, -747, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -2, -747, -747, -747, -747, -747,
+ -747, -747, -747, -747, -747, -31, -319, -519, -49, -607,
+ -747, -664, -641, 260, -747, -487, -747, -532, -747, 8,
+ -747, -747, -747, -747, -747, -747, -747, -747, 795, -747,
+ -747, -528, -747, -42, -747, -747, -747, -747, -747, -747,
+ 799, -747, -747, -747, -747, -747, -747, -747, -747, 513,
+ -208, -747, -747, -747, -5, -747, 29, -747, 1251, 816,
+ 747, 1369, -747, -747, 47, -235, -673, -393, -569, -40,
+ -576, -746, 69, 278, -747, -474, -747, -249, 959, -747,
+ -747, -747, -6, -288, 162, -261, -747, -747, -56, -20,
+ 17, -563, -217, -44, 850, 752
+};
+static const yytype_int16 yytable[] =
+{
+ 79, 264, 79, 189, 246, 297, 220, 224, 187, 227,
+ 243, 460, 547, 535, 208, 208, 226, 276, 208, 255,
+ 394, 282, 686, 189, 109, 450, 501, 425, 187, 335,
+ 685, 427, 703, 721, 616, 364, 241, 190, 201, 201,
+ 255, 282, 201, 562, 561, 244, 248, 79, 208, 254,
+ 629, 256, 255, 255, 255, 187, 728, 190, 240, 467,
+ 208, 745, 821, 473, 533, 740, 541, 329, 329, 817,
+ 784, 329, 256, -83, 789, -85, 596, 221, 631, 208,
+ 208, -89, 461, 208, 340, 350, 350, -92, 416, 187,
+ 814, 375, 713, 714, 888, 658, 369, 205, 214, 367,
+ -471, 215, -62, 3, 475, 599, 577, 578, 289, 290,
+ -94, 392, 331, -471, 650, 334, -317, -96, -464, 756,
+ -463, -95, -89, 619, 223, 462, 463, 533, 795, 541,
+ 236, 325, 544, -96, -76, -89, 599, 461, -465, 800,
+ 592, 469, -91, 274, 275, -93, 494, 379, 592, 476,
+ 381, 382, 651, 610, 368, 563, 632, -83, -90, -85,
+ 742, 799, 376, 746, 107, -91, 107, -81, 645, 804,
+ -317, -317, 888, -464, 874, -463, 610, 760, 107, 107,
+ 462, 463, 107, 559, 432, 326, 327, 560, 279, -83,
+ 280, -85, -83, -465, -85, 79, -83, -81, -85, 460,
+ -93, 229, 682, -84, 821, -532, -90, 370, 402, 817,
+ 404, 107, 107, 630, 208, 220, 208, 208, 375, 255,
+ 208, 544, 208, 836, 107, -92, -86, 79, -533, 810,
+ 428, 629, 732, -88, 908, 79, 369, -87, 201, 403,
+ 201, 201, 691, 107, 107, 491, 240, 107, 490, 745,
+ 500, 256, 492, 498, 702, 901, 418, 492, -83, 765,
+ 740, -85, 255, 701, 646, 279, 291, 280, 935, 740,
+ 329, 329, 329, 329, -82, 486, 487, 863, 550, 289,
+ 290, 79, 208, 208, 208, 208, 79, 208, 208, 270,
+ 282, 208, 496, 79, 256, 610, 208, 395, -91, 398,
+ -91, 272, -466, 480, 240, 565, 421, 610, 485, 430,
+ 431, 540, -468, 422, 481, 482, 483, 484, 329, 329,
+ -467, 279, 460, 280, 208, 531, 79, 905, 581, 583,
+ 208, 208, 558, -93, 902, -93, 589, 591, 629, -90,
+ 629, -90, 299, 293, 208, 246, 294, 370, 201, 793,
+ -469, 879, -272, 219, 279, -532, 280, -466, -92, 107,
+ -92, -529, 548, 549, 886, 432, 889, -468, 794, 934,
+ -530, 208, 208, 591, 540, -467, 246, 298, 107, 593,
+ 107, 107, 958, -458, 107, 388, 107, 208, 531, 56,
+ 223, 107, 415, 322, 323, 324, 604, 726, 540, 107,
+ 255, 719, 761, 189, 780, -469, -272, -272, 187, 79,
+ -533, 201, 600, 531, -95, 614, 602, 424, -461, 603,
+ -458, 540, 629, 876, 422, 222, 432, 786, 783, -461,
+ 223, 413, 256, 612, 208, 531, 613, 190, -458, 389,
+ 390, 655, 374, 572, 940, 107, 107, 107, 107, 107,
+ 107, 107, 107, 373, 722, 107, 460, 107, 201, 435,
+ 107, 255, 378, 754, -96, 439, 440, 441, 442, -470,
+ 803, 222, -529, -461, -458, -458, -91, 723, -529, -265,
+ 629, -530, 629, -461, -461, 389, 414, -530, 107, 380,
+ 107, -398, 405, 256, 107, 107, -88, 661, 573, -93,
+ 443, 406, 407, 500, 684, 684, 444, 445, 107, 554,
+ 687, 657, 383, 436, 437, 666, 629, 664, 696, 811,
+ 783, 688, 551, -470, -470, 670, -536, 446, 384, 566,
+ 447, 896, 771, -265, -265, 107, 107, 898, 415, 778,
+ 540, -90, 718, 79, 391, 79, 727, 668, 709, 711,
+ -398, 107, 540, 208, 531, -273, 704, 735, 669, 385,
+ -95, 670, 670, 555, 556, 208, 531, 79, 208, -91,
+ 268, 269, 917, 107, 729, 717, 666, 201, 393, 409,
+ -93, 255, 189, 567, 568, -536, 411, 187, 665, 201,
+ 432, 724, -87, 664, 670, 216, 672, 744, 107, 666,
+ 747, -83, -398, 208, -398, -398, 219, 927, 764, -273,
+ -273, 757, -85, 256, 299, 945, 190, 768, 417, 279,
+ 460, 280, 420, 774, 776, 255, 567, 568, 779, 79,
+ 79, 773, 710, 712, -61, 492, 426, -536, 429, -536,
+ -536, 79, 434, -532, 623, 734, 439, 440, 441, 442,
+ 79, 797, 477, -90, 806, 792, 461, 256, 470, 474,
+ 208, 928, 929, 805, 478, 497, 208, 208, 610, 551,
+ 553, 666, 801, 623, 479, 439, 440, 441, 442, 557,
+ 329, 585, 666, 329, 601, -82, 623, 299, 439, 440,
+ 441, 442, 208, 608, 622, 208, 79, -76, 615, 462,
+ 463, 464, 312, 313, 79, 634, 637, 107, 187, 107,
+ 639, 79, 79, 640, 642, 845, 647, 107, -251, 656,
+ 461, 802, 659, 443, 796, 674, 680, 798, 847, 107,
+ 445, 107, 107, 731, 461, 319, 320, 321, 322, 323,
+ 324, 812, 676, 725, 733, 861, 735, 813, -252, 105,
+ 446, 105, 684, 822, 865, 767, 857, 772, 858, 783,
+ 299, 815, 875, 462, 463, 466, 823, 107, 866, 824,
+ 825, 208, 329, 868, 827, 312, 313, 462, 463, 468,
+ 829, 79, 461, 831, 208, 878, 299, 880, 79, 79,
+ 835, 881, 79, 107, 107, 834, 105, 837, 849, 844,
+ 887, 255, 890, 245, 249, 107, 838, 840, 79, 320,
+ 321, 322, 323, 324, 107, 255, 856, 842, 203, 203,
+ 867, -253, 203, 853, 107, 462, 463, 471, 899, 900,
+ 107, 107, 870, 883, 871, 320, 321, 322, 323, 324,
+ 623, 873, 439, 440, 441, 442, 877, 893, 232, 235,
+ 884, 79, -254, 203, 203, 907, 107, 909, 338, 107,
+ 107, 912, 79, 916, 277, 278, 918, 920, 107, 923,
+ -532, 926, 936, -533, 933, 107, 107, 624, 939, 954,
+ 941, 353, 949, 942, 730, 910, 371, 438, 948, 439,
+ 440, 441, 442, 372, 79, 623, 79, 439, 440, 441,
+ 442, 950, 79, 951, 79, 365, 623, 885, 439, 440,
+ 441, 442, 741, 540, 959, 283, 906, 531, 0, 749,
+ 750, 0, 751, 0, 443, 666, 208, 531, 44, 45,
+ 444, 445, 624, 0, 0, 107, 0, 818, 625, 439,
+ 440, 441, 442, 624, 105, 107, 0, 0, 107, 816,
+ 201, 446, 107, 107, 447, 0, 107, 0, 0, 387,
+ 0, 0, 0, 0, 387, 284, 285, 286, 287, 288,
+ 0, 401, 107, 0, 0, 0, 105, 0, 64, 0,
+ 0, 0, 0, 0, 105, 438, 0, 439, 440, 441,
+ 442, 0, 0, 0, 0, 0, -554, 203, 0, 0,
+ 203, 203, 277, 0, -554, -554, -554, 0, 0, -554,
+ -554, -554, 0, -554, 0, 107, 0, 0, 203, 0,
+ 203, 203, 443, -554, 0, 238, 107, 0, 444, 445,
+ 105, 0, 0, -554, -554, 105, -554, -554, -554, -554,
+ -554, 0, 105, 0, 0, 0, 0, 0, 0, 446,
+ 0, 0, 447, 0, 0, 0, 0, 0, 107, 0,
+ 107, 0, 0, 0, 0, 0, 107, 0, 107, 0,
+ 0, 0, 0, 0, 0, 105, 448, 0, 401, 0,
+ 0, -554, 0, 0, 0, 0, 0, 0, 0, 0,
+ 107, 0, 0, 0, 0, 203, 0, 0, 0, 0,
+ 499, 502, 503, 504, 505, 506, 507, 508, 509, 510,
+ 511, 512, 513, 514, 515, 516, 517, 518, 519, 520,
+ 521, 522, 523, 524, 525, 526, 527, 0, 203, 0,
+ 0, 0, 0, 0, -554, 0, -554, 0, 0, 219,
+ -554, 401, -554, 0, -554, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 105, 0,
+ 438, 0, 439, 440, 441, 442, 0, 0, 0, 0,
+ 0, 0, 0, 238, 0, 582, 584, 754, 0, 439,
+ 440, 441, 442, 299, 0, 588, 203, 203, 401, 0,
+ 0, 203, 0, 582, 584, 203, 0, 443, 312, 313,
+ 0, 0, 0, 444, 445, 412, 636, 0, 636, 0,
+ 636, 0, 606, 238, 443, 0, 0, 611, 0, 0,
+ 444, 445, 0, 203, 446, 0, 203, 447, 0, 317,
+ 318, 319, 320, 321, 322, 323, 324, 0, 203, 0,
+ 654, 446, 0, 0, 447, 0, 0, 0, 0, 0,
+ 0, 705, 0, 103, 0, 103, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 238, 0, 0, 0, 0, 0, 0, 0, 648,
+ 649, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 203, 105, 673, 105, 678, 0, 0, 0, 0,
+ 103, 0, 0, 0, 257, 0, 0, 401, 0, 0,
+ 0, 0, 0, 0, 0, 0, 105, 0, 0, 401,
+ 0, 0, 0, 0, 0, 257, 0, 0, 0, 673,
+ 673, 654, 654, 0, 0, 0, 0, 342, 351, 351,
+ 351, 0, 0, 0, 0, 387, 0, 0, 0, 0,
+ 0, 0, 0, 203, 0, 0, 0, 203, 0, 0,
+ 0, 0, 673, 0, 0, 0, 0, 0, 0, 203,
+ 0, 106, 0, 106, 0, 0, 0, 0, 105, 105,
+ 0, 0, 737, 0, 0, 0, 0, 607, 0, 0,
+ 105, 0, 203, 0, 0, 0, 0, 0, 0, 105,
+ 0, 0, 0, 737, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 638, 0, 641, 106, 0,
+ 0, 0, 258, 0, 203, 0, 0, 0, 782, 785,
+ 0, 785, 0, 785, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 258, 0, 105, 0, 0, 103, 0,
+ 0, 0, 0, 105, 0, 343, 352, 352, 203, 0,
+ 105, 105, 766, 0, 769, 770, 0, 0, 654, 0,
+ 775, 777, 0, 0, 0, 0, 0, 0, 203, 0,
+ 103, 0, 0, 0, 0, 0, 0, 0, 103, 0,
+ 0, 0, 0, 636, 636, 0, 636, 0, 636, 636,
+ 0, 0, 0, 0, 257, 0, 0, 737, 0, 636,
+ 0, 636, 636, 0, 0, 0, 0, 809, 0, 0,
+ 0, 679, 769, 681, 775, 777, 0, 0, 0, 0,
+ 105, 0, 0, 851, 103, 0, 855, 105, 105, 103,
+ 0, 105, 76, 0, 76, 0, 103, 257, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 105, 0, 0,
+ 0, 0, 0, 0, 0, 203, 106, 0, 0, 846,
+ 0, 0, 0, 0, 0, 848, 0, 0, 0, 103,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,
+ 0, 0, 0, 0, 0, 203, 0, 0, 106, 0,
+ 105, 0, 0, 0, 0, 0, 106, 738, 739, 0,
+ 0, 105, 0, 848, 785, 0, 0, 0, 0, 748,
+ 0, 0, 258, 0, 0, 0, 339, 0, 762, 0,
+ 636, 636, 636, 636, 0, 0, 0, 636, 636, 636,
+ 0, 636, 636, 105, 0, 105, 0, 0, 0, 0,
+ 0, 105, 106, 105, 0, 0, 0, 106, 0, 0,
+ 0, 0, 103, 0, 106, 258, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 401, 0, 678, 785, 0, 257, 0, 0, 636, 807,
+ 808, 636, 636, 636, 636, 0, 0, 106, 0, 0,
+ 826, 828, 0, 830, 0, 832, 833, 0, 0, 0,
+ 0, 636, 0, 0, 0, 0, 839, 0, 841, 843,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 203, 0, 0, 0, 0, 0, 0, 76, 0, 0,
+ 0, 0, 0, 0, 0, 0, 257, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 852,
+ 0, 0, 0, 0, 0, 0, 859, 860, 0, 76,
+ 862, 0, 0, 0, 0, 0, 0, 76, 0, 0,
+ 106, 0, 0, 0, 0, 0, 872, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 103, 0, 103, 0,
+ 0, 0, 0, 258, 0, 0, 299, 300, 301, 302,
+ 303, 304, 305, 306, 307, 308, 309, -555, -555, 0,
+ 103, 312, 313, 76, 0, 0, 0, 0, 76, 897,
+ 0, 0, 0, 0, 0, 76, 0, 911, 913, 914,
+ 915, 0, 0, 0, 919, 921, 922, 0, 924, 925,
+ 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
+ 0, 0, 0, 0, 258, 0, 257, 0, 76, 0,
+ 0, 0, 930, 0, 931, 0, 0, 0, 0, 0,
+ 932, 0, 103, 103, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 103, 952, 0, 0, 953, 955,
+ 956, 957, 0, 103, 0, 0, 0, 0, 0, 0,
+ 257, 0, 0, 0, 106, 0, 106, 0, 960, 0,
+ 0, 0, 0, 0, 299, 300, 301, 302, 303, 304,
+ 305, 306, 307, 308, 309, 310, 311, 0, 106, 312,
+ 313, 0, 0, 0, 0, 0, 0, 0, 0, 103,
+ 0, 76, 0, 0, 0, 0, 0, 103, 0, 0,
+ 0, 0, 0, 0, 103, 103, 314, 0, 315, 316,
+ 317, 318, 319, 320, 321, 322, 323, 324, 0, 0,
+ 0, 0, 0, 0, 258, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 106, 106, 0, 0, 223, 0, 0, 0, 0, 0,
+ 0, 0, 106, 753, 0, 0, 0, 0, 0, 0,
+ 0, 106, 0, 0, 0, 0, 0, 0, 258, 0,
+ 0, 0, 0, 0, 103, 0, 0, 0, 0, 0,
+ 0, 103, 103, 0, 0, 103, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 103, 0, 0, 0, 0, 0, 106, 0, 0,
+ 0, 0, 0, 0, 0, 106, 0, 0, 0, 0,
+ 0, 0, 106, 106, 0, 76, 351, 76, 0, 0,
+ 0, 0, 299, 300, 301, 302, 303, 304, 305, 306,
+ 894, 308, 309, 0, 103, 0, 0, 312, 313, 76,
+ 0, 0, 0, 0, 0, 103, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324, 0, 103, 0, 103,
+ 0, 0, 106, 0, 0, 103, 0, 103, 0, 106,
+ 106, 0, 0, 106, 0, 0, 0, 0, 0, 0,
+ 0, 76, 76, 0, 0, 0, 0, 0, 0, 106,
+ 0, 0, 0, 76, 0, 0, 0, 0, 0, 0,
+ 0, 0, 76, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 352, 0, 0, 0, 0, 0,
+ 0, 299, -555, -555, -555, -555, 304, 305, 895, 0,
+ -555, -555, 106, 0, 0, 0, 312, 313, 0, 0,
+ 0, 0, 0, 106, 0, 0, 0, 0, 76, 0,
+ 0, 0, 0, 0, 0, 0, 76, 0, 0, 0,
+ 0, 0, 0, 76, 76, 315, 316, 317, 318, 319,
+ 320, 321, 322, 323, 324, 106, 0, 106, 0, 660,
+ 0, 0, 0, 106, 0, 106, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 715, 0, 0, 0,
+ 0, 0, 0, 299, 300, 301, 302, 303, 304, 305,
+ 306, 307, 308, 309, 310, 311, 0, 0, 312, 313,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 76, 0, 312, 313, 0, 0, 0,
+ 76, 76, 0, 0, 76, 314, 0, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, 0, 0, 0,
+ 76, 0, 314, 0, 315, 316, 317, 318, 319, 320,
+ 321, 322, 323, 324, -554, 4, -230, 5, 6, 7,
+ 8, 9, 0, 0, 0, 10, 11, 0, 0, 0,
+ 12, 0, 13, 14, 15, 16, 17, 18, 19, 892,
+ 0, 0, 0, 76, 20, 21, 22, 23, 24, 25,
+ 26, 0, 0, 27, 76, 0, 0, 0, 0, 28,
+ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
+ 46, 47, 0, 0, 0, 0, 76, 0, 76, 0,
+ 0, 0, 0, 0, 76, 0, 76, 0, 0, 0,
+ 48, 0, 0, 49, 50, 0, 51, 52, 0, 53,
+ 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 61, 62, 63, -272,
+ 0, 0, 0, 0, 0, 0, 0, -272, -272, -272,
+ 0, 0, -272, -272, -272, 0, -272, 0, 0, 0,
+ -554, 0, -554, 0, 0, 0, -272, -272, -272, 0,
+ 0, 0, 0, 0, 0, 0, -272, -272, 0, -272,
+ -272, -272, -272, -272, 0, 0, 0, 0, 0, 0,
+ 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
+ 309, 310, 311, 0, 0, 312, 313, -272, -272, -272,
+ -272, -272, -272, -272, -272, -272, -272, -272, -272, -272,
+ 0, 0, -272, -272, -272, 0, 663, -272, 0, 0,
+ 0, 0, 314, -272, 315, 316, 317, 318, 319, 320,
+ 321, 322, 323, 324, 0, 0, -272, 0, -94, -272,
+ -272, -272, -272, -272, -272, -272, -272, -272, -272, -272,
+ -272, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -272, -272, -272,
+ -272, -397, 0, -272, -272, -272, 0, -272, 0, -397,
+ -397, -397, 0, 0, -397, -397, -397, 0, -397, 0,
+ 0, 0, 0, 0, 0, 0, 0, -397, -397, -397,
+ 0, 0, 0, 0, 0, 0, 0, 0, -397, -397,
+ 0, -397, -397, -397, -397, -397, 0, 0, 0, 0,
+ 0, 0, 299, 300, 301, 302, 303, 304, 305, 0,
+ 0, 308, 309, 0, 0, 0, 0, 312, 313, -397,
+ -397, -397, -397, -397, -397, -397, -397, -397, -397, -397,
+ -397, -397, 0, 0, -397, -397, -397, 0, 0, -397,
+ 0, 0, 0, 0, 0, -397, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324, 0, 0, 0, 0,
+ 0, -397, 0, -397, -397, -397, -397, -397, -397, -397,
+ -397, -397, -397, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -397, -397,
+ -397, -397, -397, -266, 219, -397, -397, -397, 0, -397,
+ 0, -266, -266, -266, 0, 0, -266, -266, -266, 0,
+ -266, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -266, -266, -266, 0, 0, 0, 0, 0, 0, 0,
+ -266, -266, 0, -266, -266, -266, -266, -266, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -266, -266, -266, -266, -266, -266, -266, -266, -266,
+ -266, -266, -266, -266, 0, 0, -266, -266, -266, 0,
+ 0, -266, 0, 0, 0, 0, 0, -266, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -266, 0, 0, -266, -266, -266, -266, -266, -266, -266,
+ -266, -266, -266, -266, -266, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -266, -266, -266, -266, -554, 0, -266, -266, -266,
+ 0, -266, 0, -554, -554, -554, 0, 0, -554, -554,
+ -554, 0, -554, 0, 0, 0, 0, 0, 0, 0,
+ 0, -554, -554, -554, 0, 0, 0, 0, 0, 0,
+ 0, 0, -554, -554, 0, -554, -554, -554, -554, -554,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -554, -554, -554, -554, -554, -554, -554,
+ -554, -554, -554, -554, -554, -554, 0, 0, -554, -554,
+ -554, 0, 0, -554, 0, 0, 0, 0, 0, -554,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -554, 0, -554, -554, -554,
+ -554, -554, -554, -554, -554, -554, -554, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -554, -554, -554, -554, -554, -279, 219, -554,
+ -554, -554, 0, -554, 0, -279, -279, -279, 0, 0,
+ -279, -279, -279, 0, -279, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -279, -279, 0, 0, 0, 0,
+ 0, 0, 0, 0, -279, -279, 0, -279, -279, -279,
+ -279, -279, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -279, -279, -279, -279, -279,
+ -279, -279, -279, -279, -279, -279, -279, -279, 0, 0,
+ -279, -279, -279, 0, 0, -279, 0, 0, 0, 0,
+ 0, -279, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -279, 0, -279,
+ -279, -279, -279, -279, -279, -279, -279, -279, -279, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -279, -279, -279, -279, -536,
+ 216, -279, -279, -279, 0, -279, 0, -536, -536, -536,
+ 0, 0, 0, -536, -536, 0, -536, 0, 0, 0,
+ 0, 0, 0, 0, 0, -536, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, -536, -536, 0, -536,
+ -536, -536, -536, -536, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -536, -536, -536,
+ -536, -536, -536, -536, -536, -536, -536, -536, -536, -536,
+ 0, 0, -536, -536, -536, -272, 662, 0, 0, 0,
+ 0, 0, 0, -272, -272, -272, 0, 0, 0, -272,
+ -272, 0, -272, 0, 0, 0, 0, 0, -92, -536,
+ 0, -536, -536, -536, -536, -536, -536, -536, -536, -536,
+ -536, 0, -272, -272, 0, -272, -272, -272, -272, -272,
+ 0, 0, 0, 0, 0, 0, -536, -536, -536, -536,
+ -84, 0, 0, -536, 0, -536, 0, -536, 0, 0,
+ 0, 0, 0, -272, -272, -272, -272, -272, -272, -272,
+ -272, -272, -272, -272, -272, -272, 0, 0, -272, -272,
+ -272, 0, 663, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -94, -272, 0, -272, -272, -272,
+ -272, -272, -272, -272, -272, -272, -272, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -272, -272, -272, -86, 0, 0, -272,
+ 0, -272, 4, -272, 5, 6, 7, 8, 9, -554,
+ -554, -554, 10, 11, 0, 0, -554, 12, 0, 13,
+ 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
+ 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
+ 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
+ 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 61, 62, 63, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -554, 4, -554,
+ 5, 6, 7, 8, 9, 0, 0, -554, 10, 11,
+ 0, -554, -554, 12, 0, 13, 14, 15, 16, 17,
+ 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
+ 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
+ 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
+ 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 48, 0, 0, 49, 50, 0, 51,
+ 52, 0, 53, 0, 54, 55, 56, 57, 58, 59,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 61,
+ 62, 63, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -554, 4, -554, 5, 6, 7, 8,
+ 9, 0, 0, -554, 10, 11, 0, 0, -554, 12,
+ -554, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
+ 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
+ 0, 0, 49, 50, 0, 51, 52, 0, 53, 0,
+ 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 61, 62, 63, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -554,
+ 4, -554, 5, 6, 7, 8, 9, 0, 0, -554,
+ 10, 11, 0, 0, -554, 12, 0, 13, 14, 15,
+ 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
+ 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
+ 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
+ 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
+ 0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
+ 0, 4, 0, 5, 6, 7, 8, 9, 0, -554,
+ -554, 10, 11, 0, 0, -554, 12, -554, 13, 14,
+ 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
+ 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
+ 0, 0, 0, 0, 0, 28, 29, 30, 31, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
+ 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 48, 0, 0, 49,
+ 50, 0, 51, 52, 0, 53, 0, 54, 55, 56,
+ 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 61, 62, 63, 0, 0, 0, 0, 0,
+ 0, 0, 4, 0, 5, 6, 7, 8, 9, 0,
+ 0, 0, 10, 11, 0, 0, -554, 12, -554, 13,
+ 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
+ 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
+ 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
+ 237, 50, 0, 51, 52, 0, 53, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 61, 62, 63, 0, 0, 0, 0,
+ 0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
+ 0, 0, 0, 10, 11, -554, 0, -554, 12, -554,
+ 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
+ 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
+ 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 48, 0,
+ 0, 49, 50, 0, 51, 52, 0, 53, 0, 54,
+ 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 62, 63, 0, 0, 0,
+ 0, 0, 0, 0, 4, 0, 5, 6, 7, 8,
+ 9, 0, 0, 0, 10, 11, -554, 0, -554, 12,
+ -554, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
+ 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
+ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
+ 0, 0, 49, 50, 0, 51, 52, 0, 53, 0,
+ 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 61, 62, 63, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -554, 0, 0, 0, 0, 0, 0, 0, -554,
+ 4, -554, 5, 6, 7, 8, 9, 0, 0, -554,
+ 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
+ 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
+ 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
+ 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
+ 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 48, 0, 0, 49, 50,
+ 0, 51, 52, 0, 53, 0, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 61, 62, 63, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
+ 0, 10, 11, 0, 0, -554, 12, -554, 13, 14,
+ 15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
+ 193, 21, 22, 23, 24, 25, 26, 0, 0, 194,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 195, 41,
+ 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
+ 50, 0, 51, 52, 0, 198, 199, 54, 55, 56,
+ 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 61, 200, 63, 5, 6, 7, 0, 9,
+ 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
+ 13, 14, 15, 16, 17, 18, 19, 0, 223, 0,
+ 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
+ 0, 27, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 196, 0,
+ 0, 197, 50, 0, 51, 52, 0, 0, 0, 54,
+ 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 61, 62, 63, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
+ 9, 0, 0, 0, 10, 11, 0, 0, 279, 12,
+ 280, 13, 14, 15, 16, 17, 18, 19, 0, 0,
+ 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
+ 0, 0, 27, 0, 0, 0, 0, 0, 0, 29,
+ 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
+ 0, 0, 197, 50, 0, 51, 52, 0, 0, 0,
+ 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 61, 62, 63, 5, 6,
+ 7, 8, 9, 0, 0, 0, 10, 11, 0, 0,
+ 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
+ 0, 223, 0, 0, 0, 20, 21, 22, 23, 24,
+ 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 0, 41, 42, 0, 43, 44, 45,
+ 0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 48, 0, 0, 49, 50, 0, 51, 52, 0,
+ 53, 0, 54, 55, 56, 57, 58, 59, 60, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 61, 62, 63,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 479, 110, 111, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 0, 0, 0, 134,
+ 135, 136, 354, 355, 356, 357, 141, 142, 143, 0,
+ 0, 0, 0, 0, 144, 145, 146, 147, 358, 359,
+ 360, 361, 152, 37, 38, 362, 40, 0, 0, 0,
+ 0, 0, 0, 0, 0, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
+ 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 181, 0, 0, 0, 0, 0, 0,
+ -529, -529, -529, 0, -529, 0, 0, 0, -529, -529,
+ 0, 182, 363, -529, 0, -529, -529, -529, -529, -529,
+ -529, -529, 0, -529, 0, 0, 0, -529, -529, -529,
+ -529, -529, -529, -529, 0, 0, -529, 0, 0, 0,
+ 0, 0, 0, -529, 0, 0, -529, -529, -529, -529,
+ -529, -529, -529, -529, -529, -529, -529, -529, 0, -529,
+ -529, -529, 0, -529, -529, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -529, 0, 0, -529, -529, 0, -529,
+ -529, 0, -529, -529, -529, -529, -529, -529, -529, -529,
+ -529, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -529,
+ -529, -529, 0, 0, 0, 0, 0, 0, -530, -530,
+ -530, 0, -530, 0, -529, 0, -530, -530, 0, 0,
+ -529, -530, 0, -530, -530, -530, -530, -530, -530, -530,
+ 0, -530, 0, 0, 0, -530, -530, -530, -530, -530,
+ -530, -530, 0, 0, -530, 0, 0, 0, 0, 0,
+ 0, -530, 0, 0, -530, -530, -530, -530, -530, -530,
+ -530, -530, -530, -530, -530, -530, 0, -530, -530, -530,
+ 0, -530, -530, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -530, 0, 0, -530, -530, 0, -530, -530, 0,
+ -530, -530, -530, -530, -530, -530, -530, -530, -530, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -530, -530, -530,
+ 0, 0, 0, 0, 0, 0, -532, -532, -532, 0,
+ -532, 0, -530, 0, -532, -532, 0, 0, -530, -532,
+ 0, -532, -532, -532, -532, -532, -532, -532, 0, 0,
+ 0, 0, 0, -532, -532, -532, -532, -532, -532, -532,
+ 0, 0, -532, 0, 0, 0, 0, 0, 0, -532,
+ 0, 0, -532, -532, -532, -532, -532, -532, -532, -532,
+ -532, -532, -532, -532, 0, -532, -532, -532, 0, -532,
+ -532, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -532,
+ 720, 0, -532, -532, 0, -532, -532, 0, -532, -532,
+ -532, -532, -532, -532, -532, -532, -532, 0, 0, 0,
+ 0, 0, -92, 0, 0, 0, 0, 0, 0, 0,
+ -534, -534, -534, 0, -534, -532, -532, -532, -534, -534,
+ 0, 0, 0, -534, 0, -534, -534, -534, -534, -534,
+ -534, -534, 0, 0, 0, 0, -532, -534, -534, -534,
+ -534, -534, -534, -534, 0, 0, -534, 0, 0, 0,
+ 0, 0, 0, -534, 0, 0, -534, -534, -534, -534,
+ -534, -534, -534, -534, -534, -534, -534, -534, 0, -534,
+ -534, -534, 0, -534, -534, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -534, 0, 0, -534, -534, 0, -534,
+ -534, 0, -534, -534, -534, -534, -534, -534, -534, -534,
+ -534, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -535, -535, -535, 0, -535, -534,
+ -534, -534, -535, -535, 0, 0, 0, -535, 0, -535,
+ -535, -535, -535, -535, -535, -535, 0, 0, 0, 0,
+ -534, -535, -535, -535, -535, -535, -535, -535, 0, 0,
+ -535, 0, 0, 0, 0, 0, 0, -535, 0, 0,
+ -535, -535, -535, -535, -535, -535, -535, -535, -535, -535,
+ -535, -535, 0, -535, -535, -535, 0, -535, -535, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -535, 0, 0,
+ -535, -535, 0, -535, -535, 0, -535, -535, -535, -535,
+ -535, -535, -535, -535, -535, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -535, -535, -535, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -535, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
+ 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 261, 262, 153, 263,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
+ 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
+ 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 225, 0, 153, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
+ 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
+ 55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
+ 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 0, 0, 153, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
+ 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
+ 55, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 182, 110, 111, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
+ 125, 126, 127, 128, 129, 130, 131, 132, 133, 0,
+ 0, 0, 134, 135, 136, 137, 138, 139, 140, 141,
+ 142, 143, 0, 0, 0, 0, 0, 144, 145, 146,
+ 147, 148, 149, 150, 151, 152, 0, 0, 153, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 154, 155,
+ 156, 157, 158, 159, 160, 161, 162, 0, 0, 163,
+ 164, 0, 0, 165, 166, 167, 168, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 169, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 0, 180, 181, 0, 0, 0,
+ 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
+ 0, 0, 0, 12, 182, 13, 14, 15, 191, 192,
+ 18, 19, 0, 0, 0, 0, 0, 193, 230, 231,
+ 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
+ 0, 0, 0, 250, 0, 0, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
+ 44, 45, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 251, 0, 0, 197, 50, 0, 51,
+ 52, 0, 0, 0, 54, 55, 56, 57, 58, 59,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 6, 7, 0, 9, 0, 0, 252,
+ 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
+ 191, 192, 18, 19, 0, 0, 0, 0, 253, 193,
+ 230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
+ 0, 0, 0, 0, 0, 250, 0, 0, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
+ 0, 43, 44, 45, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 251, 0, 0, 197, 50,
+ 0, 51, 52, 0, 0, 0, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 6, 7, 8, 9, 0,
+ 0, 252, 10, 11, 0, 0, 0, 12, 0, 13,
+ 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
+ 495, 20, 21, 22, 23, 24, 25, 26, 0, 0,
+ 27, 0, 0, 0, 0, 0, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 48, 0, 0,
+ 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
+ 0, 10, 11, 61, 62, 63, 12, 0, 13, 14,
+ 15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
+ 193, 21, 22, 23, 24, 25, 26, 0, 0, 194,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 195, 41,
+ 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
+ 50, 0, 51, 52, 0, 198, 199, 54, 55, 56,
+ 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
+ 10, 11, 61, 200, 63, 12, 0, 13, 14, 15,
+ 191, 192, 18, 19, 0, 0, 0, 0, 0, 193,
+ 230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
+ 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 195, 41, 42,
+ 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
+ 0, 51, 52, 0, 590, 199, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
+ 11, 61, 200, 63, 12, 0, 13, 14, 15, 191,
+ 192, 18, 19, 0, 0, 0, 0, 0, 193, 230,
+ 231, 23, 24, 25, 26, 0, 0, 194, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 195, 41, 42, 0,
+ 43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
+ 51, 52, 0, 198, 0, 54, 55, 56, 57, 58,
+ 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
+ 61, 200, 63, 12, 0, 13, 14, 15, 191, 192,
+ 18, 19, 0, 0, 0, 0, 0, 193, 230, 231,
+ 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 195, 41, 42, 0, 43,
+ 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 196, 0, 0, 197, 50, 0, 51,
+ 52, 0, 0, 199, 54, 55, 56, 57, 58, 59,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
+ 200, 63, 12, 0, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 195, 41, 42, 0, 43, 44,
+ 45, 0, 46, 47, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 196, 0, 0, 197, 50, 0, 51, 52,
+ 0, 590, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
+ 7, 0, 9, 0, 0, 0, 10, 11, 61, 200,
+ 63, 12, 0, 13, 14, 15, 191, 192, 18, 19,
+ 0, 0, 0, 0, 0, 193, 230, 231, 23, 24,
+ 25, 26, 0, 0, 194, 0, 0, 0, 0, 0,
+ 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
+ 38, 39, 40, 195, 41, 42, 0, 43, 44, 45,
+ 0, 46, 47, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 196, 0, 0, 197, 50, 0, 51, 52, 0,
+ 0, 0, 54, 55, 56, 57, 58, 59, 60, 0,
+ 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
+ 0, 9, 0, 0, 0, 10, 11, 61, 200, 63,
+ 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
+ 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
+ 26, 0, 0, 194, 0, 0, 0, 0, 0, 0,
+ 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
+ 39, 40, 0, 41, 42, 0, 43, 44, 45, 0,
+ 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 196, 0, 0, 197, 50, 0, 51, 52, 0, 489,
+ 0, 54, 55, 56, 57, 58, 59, 60, 0, 0,
+ 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
+ 9, 0, 0, 0, 10, 11, 61, 200, 63, 12,
+ 0, 13, 14, 15, 191, 192, 18, 19, 0, 0,
+ 0, 0, 0, 193, 230, 231, 23, 24, 25, 26,
+ 0, 0, 194, 0, 0, 0, 0, 0, 0, 29,
+ 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 0, 41, 42, 0, 43, 44, 45, 0, 46,
+ 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
+ 0, 0, 197, 50, 0, 51, 52, 0, 198, 0,
+ 54, 55, 56, 57, 58, 59, 60, 0, 0, 0,
+ 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
+ 0, 0, 0, 10, 11, 61, 200, 63, 12, 0,
+ 13, 14, 15, 191, 192, 18, 19, 0, 0, 0,
+ 0, 0, 193, 230, 231, 23, 24, 25, 26, 0,
+ 0, 194, 0, 0, 0, 0, 0, 0, 29, 0,
+ 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
+ 0, 41, 42, 0, 43, 44, 45, 0, 46, 47,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 196, 0,
+ 0, 197, 50, 0, 51, 52, 0, 763, 0, 54,
+ 55, 56, 57, 58, 59, 60, 0, 0, 0, 0,
+ 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
+ 0, 0, 10, 11, 61, 200, 63, 12, 0, 13,
+ 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
+ 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
+ 194, 0, 0, 0, 0, 0, 0, 29, 0, 0,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 46, 47, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 196, 0, 0,
+ 197, 50, 0, 51, 52, 0, 489, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 0,
+ 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
+ 0, 10, 11, 61, 200, 63, 12, 0, 13, 14,
+ 15, 191, 192, 18, 19, 0, 0, 0, 0, 0,
+ 193, 230, 231, 23, 24, 25, 26, 0, 0, 194,
+ 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
+ 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
+ 42, 0, 43, 44, 45, 0, 46, 47, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 196, 0, 0, 197,
+ 50, 0, 51, 52, 0, 590, 0, 54, 55, 56,
+ 57, 58, 59, 60, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
+ 10, 11, 61, 200, 63, 12, 0, 13, 14, 15,
+ 191, 192, 18, 19, 0, 0, 0, 0, 0, 193,
+ 230, 231, 23, 24, 25, 26, 0, 0, 194, 0,
+ 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
+ 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
+ 0, 43, 44, 45, 0, 46, 47, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 196, 0, 0, 197, 50,
+ 0, 51, 52, 0, 0, 0, 54, 55, 56, 57,
+ 58, 59, 60, 0, 0, 0, 0, 0, 0, 0,
+ 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
+ 11, 61, 200, 63, 12, 0, 13, 14, 15, 16,
+ 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
+ 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
+ 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
+ 35, 36, 37, 38, 39, 40, 0, 41, 42, 0,
+ 43, 44, 45, 0, 46, 47, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 196, 0, 0, 197, 50, 0,
+ 51, 52, 0, 0, 0, 54, 55, 56, 57, 58,
+ 59, 60, 0, 0, 0, 0, 0, 0, 0, 0,
+ 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
+ 61, 62, 63, 12, 0, 13, 14, 15, 16, 17,
+ 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
+ 23, 24, 25, 26, 0, 0, 194, 0, 0, 0,
+ 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 0, 41, 42, 0, 43,
+ 44, 45, 0, 46, 47, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 196, 0, 0, 197, 50, 0, 51,
+ 52, 0, 0, 0, 54, 55, 56, 57, 58, 59,
+ 60, 0, 0, 0, 0, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 61,
+ 200, 63, 12, 0, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 251, 0, 0, 295, 50, 0, 51, 52,
+ 0, 296, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
+ 0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
+ 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
+ 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
+ 194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 337, 0, 0,
+ 49, 50, 0, 51, 52, 0, 53, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
+ 0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 250, 0, 0, 32, 33, 34, 344, 36,
+ 37, 38, 345, 40, 0, 41, 42, 0, 43, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 346,
+ 0, 0, 347, 0, 0, 197, 50, 0, 51, 52,
+ 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
+ 0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
+ 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
+ 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
+ 194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+ 32, 33, 34, 344, 36, 37, 38, 345, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 347, 0, 0,
+ 197, 50, 0, 51, 52, 0, 0, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
+ 0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 251, 0, 0, 295, 50, 0, 51, 52,
+ 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
+ 0, 0, 10, 11, 0, 0, 0, 12, 252, 13,
+ 14, 15, 191, 192, 18, 19, 0, 0, 0, 0,
+ 0, 193, 230, 231, 23, 24, 25, 26, 0, 0,
+ 194, 0, 0, 0, 0, 0, 0, 250, 0, 0,
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
+ 41, 42, 0, 43, 44, 45, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 882, 0, 0,
+ 197, 50, 0, 51, 52, 0, 0, 0, 54, 55,
+ 56, 57, 58, 59, 60, 0, 0, 0, 0, 5,
+ 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
+ 0, 0, 12, 252, 13, 14, 15, 191, 192, 18,
+ 19, 0, 0, 0, 0, 0, 193, 230, 231, 23,
+ 24, 25, 26, 0, 0, 194, 0, 0, 0, 0,
+ 0, 0, 250, 0, 0, 32, 33, 34, 35, 36,
+ 37, 38, 39, 40, 0, 41, 42, 0, 43, 44,
+ 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 891, 0, 0, 197, 50, 0, 51, 52,
+ 0, 0, 0, 54, 55, 56, 57, 58, 59, 60,
+ 0, 0, 0, 0, 0, 528, 529, 0, 0, 530,
+ 0, 0, 0, 0, 0, 0, 0, 0, 252, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
+ 163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
+ 0, 0, 0, 536, 537, 0, 0, 538, 0, 0,
+ 0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
+ 0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
+ 0, 594, 529, 0, 0, 595, 0, 0, 0, 0,
+ 0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
+ 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 181, 0, 0, 0, 0, 0, 597,
+ 537, 0, 0, 598, 0, 0, 0, 0, 0, 0,
+ 0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
+ 167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
+ 180, 181, 0, 0, 0, 0, 0, 617, 529, 0,
+ 0, 618, 0, 0, 0, 0, 0, 0, 0, 182,
+ 219, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 0, 0, 163, 164, 0, 0, 165, 166, 167, 168,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 0, 180, 181,
+ 0, 0, 0, 0, 0, 620, 537, 0, 0, 621,
+ 0, 0, 0, 0, 0, 0, 0, 182, 219, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
+ 163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
+ 0, 0, 0, 689, 529, 0, 0, 690, 0, 0,
+ 0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
+ 0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
+ 0, 692, 537, 0, 0, 693, 0, 0, 0, 0,
+ 0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
+ 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 181, 0, 0, 0, 0, 0, 699,
+ 529, 0, 0, 700, 0, 0, 0, 0, 0, 0,
+ 0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
+ 167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
+ 180, 181, 0, 0, 0, 0, 0, 575, 537, 0,
+ 0, 576, 0, 0, 0, 0, 0, 0, 0, 182,
+ 219, 154, 155, 156, 157, 158, 159, 160, 161, 162,
+ 0, 0, 163, 164, 0, 0, 165, 166, 167, 168,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 170, 171, 172,
+ 173, 174, 175, 176, 177, 178, 179, 0, 180, 181,
+ 0, 0, 0, 0, 0, 937, 529, 0, 0, 938,
+ 0, 0, 0, 0, 0, 0, 0, 182, 219, 154,
+ 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
+ 163, 164, 0, 0, 165, 166, 167, 168, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 169, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 0, 180, 181, 0, 0,
+ 0, 0, 0, 943, 529, 0, 0, 944, 0, 0,
+ 0, 0, 0, 0, 0, 182, 219, 154, 155, 156,
+ 157, 158, 159, 160, 161, 162, 0, 0, 163, 164,
+ 0, 0, 165, 166, 167, 168, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 169, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 170, 171, 172, 173, 174, 175, 176,
+ 177, 178, 179, 0, 180, 181, 0, 0, 0, 0,
+ 0, 946, 537, 0, 0, 947, 0, 0, 0, 0,
+ 0, 0, 0, 182, 219, 154, 155, 156, 157, 158,
+ 159, 160, 161, 162, 0, 0, 163, 164, 0, 0,
+ 165, 166, 167, 168, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 169, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 170, 171, 172, 173, 174, 175, 176, 177, 178,
+ 179, 0, 180, 181, 0, 0, 0, 0, 0, 575,
+ 537, 0, 0, 576, 0, 0, 0, 0, 0, 0,
+ 0, 182, 219, 154, 155, 156, 157, 158, 159, 160,
+ 161, 162, 0, 0, 163, 164, 0, 0, 165, 166,
+ 167, 168, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 169, 0, 0, 0, 0, 0, 660, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 170,
+ 171, 172, 173, 174, 175, 176, 177, 178, 179, 0,
+ 180, 181, 299, 300, 301, 302, 303, 304, 305, 306,
+ 307, 308, 309, 310, 311, 0, 0, 312, 313, 182,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 314, 0, 315, 316, 317, 318,
+ 319, 320, 321, 322, 323, 324
+};
+static const yytype_int16 yycheck[] =
+{
+ 2, 55, 4, 8, 52, 74, 22, 27, 8, 29,
+ 51, 260, 331, 326, 16, 17, 28, 62, 20, 53,
+ 212, 65, 550, 28, 4, 260, 298, 244, 28, 85,
+ 549, 248, 569, 596, 434, 89, 50, 8, 16, 17,
+ 74, 85, 20, 1, 347, 51, 52, 49, 50, 53,
+ 443, 53, 86, 87, 88, 55, 619, 28, 49, 267,
+ 62, 637, 735, 271, 325, 634, 327, 81, 82, 733,
+ 677, 85, 74, 25, 681, 25, 389, 22, 29, 81,
+ 82, 25, 61, 85, 86, 87, 88, 25, 237, 89,
+ 731, 107, 579, 580, 840, 495, 26, 16, 17, 85,
+ 87, 20, 109, 0, 61, 393, 367, 368, 37, 38,
+ 25, 87, 82, 87, 76, 85, 85, 25, 85, 651,
+ 85, 25, 109, 436, 148, 104, 105, 388, 691, 390,
+ 56, 85, 13, 109, 141, 109, 424, 61, 85, 702,
+ 385, 65, 25, 59, 60, 25, 295, 195, 393, 106,
+ 198, 199, 114, 414, 140, 113, 107, 109, 25, 109,
+ 634, 698, 107, 637, 2, 13, 4, 141, 147, 706,
+ 139, 140, 918, 140, 815, 140, 437, 651, 16, 17,
+ 104, 105, 20, 52, 253, 139, 140, 56, 146, 141,
+ 148, 141, 144, 140, 144, 197, 148, 141, 148, 448,
+ 13, 137, 27, 141, 877, 143, 13, 137, 222, 873,
+ 224, 49, 50, 448, 216, 231, 218, 219, 234, 253,
+ 222, 13, 224, 755, 62, 13, 141, 229, 143, 716,
+ 250, 624, 625, 141, 875, 237, 26, 141, 216, 222,
+ 218, 219, 555, 81, 82, 293, 237, 85, 293, 825,
+ 298, 253, 293, 298, 567, 862, 239, 298, 141, 659,
+ 829, 141, 296, 566, 472, 146, 28, 148, 909, 838,
+ 284, 285, 286, 287, 141, 289, 290, 796, 334, 37,
+ 38, 283, 284, 285, 286, 287, 288, 289, 290, 147,
+ 334, 293, 296, 295, 296, 556, 298, 216, 146, 218,
+ 148, 147, 85, 283, 295, 349, 141, 568, 288, 59,
+ 60, 327, 85, 148, 284, 285, 286, 287, 332, 333,
+ 85, 146, 571, 148, 326, 325, 328, 864, 373, 374,
+ 332, 333, 346, 146, 862, 148, 384, 385, 731, 146,
+ 733, 148, 68, 109, 346, 393, 141, 137, 326, 141,
+ 85, 825, 85, 143, 146, 143, 148, 140, 146, 197,
+ 148, 26, 332, 333, 838, 434, 840, 140, 687, 906,
+ 26, 373, 374, 421, 390, 140, 424, 109, 216, 385,
+ 218, 219, 945, 85, 222, 85, 224, 389, 388, 99,
+ 148, 229, 87, 119, 120, 121, 408, 614, 414, 237,
+ 434, 593, 651, 408, 676, 140, 139, 140, 408, 411,
+ 143, 389, 395, 413, 109, 421, 399, 141, 85, 402,
+ 85, 437, 815, 816, 148, 143, 495, 14, 15, 85,
+ 148, 85, 434, 416, 436, 435, 419, 408, 140, 139,
+ 140, 489, 87, 85, 918, 283, 284, 285, 286, 287,
+ 288, 289, 290, 87, 87, 293, 705, 295, 436, 85,
+ 298, 495, 141, 52, 109, 54, 55, 56, 57, 85,
+ 705, 143, 137, 140, 139, 140, 109, 87, 143, 85,
+ 873, 137, 875, 139, 140, 139, 140, 143, 326, 56,
+ 328, 26, 54, 495, 332, 333, 141, 517, 140, 109,
+ 89, 63, 64, 551, 548, 549, 95, 96, 346, 85,
+ 551, 494, 109, 139, 140, 535, 909, 533, 562, 87,
+ 15, 552, 17, 139, 140, 541, 26, 116, 88, 85,
+ 119, 850, 665, 139, 140, 373, 374, 856, 87, 672,
+ 556, 109, 590, 545, 87, 547, 615, 87, 577, 578,
+ 85, 389, 568, 555, 554, 85, 570, 146, 87, 141,
+ 109, 577, 578, 139, 140, 567, 566, 569, 570, 109,
+ 57, 58, 85, 411, 622, 587, 596, 555, 141, 143,
+ 109, 615, 587, 139, 140, 85, 137, 587, 533, 567,
+ 659, 605, 141, 609, 610, 143, 541, 637, 436, 619,
+ 640, 141, 137, 605, 139, 140, 143, 85, 656, 139,
+ 140, 651, 141, 615, 68, 928, 587, 662, 144, 146,
+ 869, 148, 145, 668, 669, 659, 139, 140, 676, 631,
+ 632, 87, 577, 578, 109, 676, 138, 137, 56, 139,
+ 140, 643, 141, 143, 52, 628, 54, 55, 56, 57,
+ 652, 695, 68, 109, 708, 686, 61, 659, 106, 106,
+ 662, 139, 140, 707, 68, 141, 668, 669, 929, 17,
+ 56, 691, 703, 52, 146, 54, 55, 56, 57, 25,
+ 694, 94, 702, 697, 144, 141, 52, 68, 54, 55,
+ 56, 57, 694, 138, 109, 697, 698, 141, 141, 104,
+ 105, 106, 83, 84, 706, 141, 141, 545, 708, 547,
+ 52, 713, 714, 141, 52, 763, 147, 555, 141, 141,
+ 61, 704, 141, 89, 694, 10, 13, 697, 773, 567,
+ 96, 569, 570, 141, 61, 116, 117, 118, 119, 120,
+ 121, 724, 8, 138, 141, 793, 146, 730, 141, 2,
+ 116, 4, 796, 736, 798, 111, 787, 145, 789, 15,
+ 68, 141, 141, 104, 105, 106, 10, 605, 799, 138,
+ 141, 773, 786, 804, 141, 83, 84, 104, 105, 106,
+ 141, 783, 61, 141, 786, 825, 68, 827, 790, 791,
+ 109, 831, 794, 631, 632, 138, 49, 114, 88, 10,
+ 840, 835, 842, 51, 52, 643, 141, 141, 810, 117,
+ 118, 119, 120, 121, 652, 849, 786, 141, 16, 17,
+ 803, 141, 20, 9, 662, 104, 105, 106, 859, 860,
+ 668, 669, 10, 835, 138, 117, 118, 119, 120, 121,
+ 52, 141, 54, 55, 56, 57, 141, 849, 46, 47,
+ 114, 853, 141, 51, 52, 138, 694, 141, 86, 697,
+ 698, 141, 864, 56, 62, 63, 141, 141, 706, 141,
+ 143, 56, 912, 143, 905, 713, 714, 89, 918, 141,
+ 920, 88, 931, 923, 624, 877, 91, 52, 930, 54,
+ 55, 56, 57, 94, 896, 52, 898, 54, 55, 56,
+ 57, 932, 904, 934, 906, 89, 52, 838, 54, 55,
+ 56, 57, 634, 929, 954, 65, 869, 917, -1, 54,
+ 55, -1, 57, -1, 89, 945, 928, 927, 63, 64,
+ 95, 96, 89, -1, -1, 773, -1, 52, 95, 54,
+ 55, 56, 57, 89, 197, 783, -1, -1, 786, 95,
+ 928, 116, 790, 791, 119, -1, 794, -1, -1, 207,
+ -1, -1, -1, -1, 212, 40, 41, 42, 43, 44,
+ -1, 219, 810, -1, -1, -1, 229, -1, 2, -1,
+ -1, -1, -1, -1, 237, 52, -1, 54, 55, 56,
+ 57, -1, -1, -1, -1, -1, 0, 195, -1, -1,
+ 198, 199, 200, -1, 8, 9, 10, -1, -1, 13,
+ 14, 15, -1, 17, -1, 853, -1, -1, 216, -1,
+ 218, 219, 89, 27, -1, 49, 864, -1, 95, 96,
+ 283, -1, -1, 37, 38, 288, 40, 41, 42, 43,
+ 44, -1, 295, -1, -1, -1, -1, -1, -1, 116,
+ -1, -1, 119, -1, -1, -1, -1, -1, 896, -1,
+ 898, -1, -1, -1, -1, -1, 904, -1, 906, -1,
+ -1, -1, -1, -1, -1, 328, 143, -1, 326, -1,
+ -1, 85, -1, -1, -1, -1, -1, -1, -1, -1,
+ 928, -1, -1, -1, -1, 293, -1, -1, -1, -1,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, 322, 323, 324, -1, 326, -1,
+ -1, -1, -1, -1, 138, -1, 140, -1, -1, 143,
+ 144, 389, 146, -1, 148, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 411, -1,
+ 52, -1, 54, 55, 56, 57, -1, -1, -1, -1,
+ -1, -1, -1, 197, -1, 373, 374, 52, -1, 54,
+ 55, 56, 57, 68, -1, 383, 384, 385, 436, -1,
+ -1, 389, -1, 391, 392, 393, -1, 89, 83, 84,
+ -1, -1, -1, 95, 96, 229, 454, -1, 456, -1,
+ 458, -1, 410, 237, 89, -1, -1, 415, -1, -1,
+ 95, 96, -1, 421, 116, -1, 424, 119, -1, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, 436, -1,
+ 488, 116, -1, -1, 119, -1, -1, -1, -1, -1,
+ -1, 143, -1, 2, -1, 4, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 295, -1, -1, -1, -1, -1, -1, -1, 477,
+ 478, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 489, 545, 541, 547, 543, -1, -1, -1, -1,
+ 49, -1, -1, -1, 53, -1, -1, 555, -1, -1,
+ -1, -1, -1, -1, -1, -1, 569, -1, -1, 567,
+ -1, -1, -1, -1, -1, 74, -1, -1, -1, 577,
+ 578, 579, 580, -1, -1, -1, -1, 86, 87, 88,
+ 89, -1, -1, -1, -1, 593, -1, -1, -1, -1,
+ -1, -1, -1, 551, -1, -1, -1, 555, -1, -1,
+ -1, -1, 610, -1, -1, -1, -1, -1, -1, 567,
+ -1, 2, -1, 4, -1, -1, -1, -1, 631, 632,
+ -1, -1, 630, -1, -1, -1, -1, 411, -1, -1,
+ 643, -1, 590, -1, -1, -1, -1, -1, -1, 652,
+ -1, -1, -1, 651, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 456, -1, 458, 49, -1,
+ -1, -1, 53, -1, 622, -1, -1, -1, 676, 677,
+ -1, 679, -1, 681, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 74, -1, 698, -1, -1, 197, -1,
+ -1, -1, -1, 706, -1, 86, 87, 88, 656, -1,
+ 713, 714, 660, -1, 662, 663, -1, -1, 716, -1,
+ 668, 669, -1, -1, -1, -1, -1, -1, 676, -1,
+ 229, -1, -1, -1, -1, -1, -1, -1, 237, -1,
+ -1, -1, -1, 741, 742, -1, 744, -1, 746, 747,
+ -1, -1, -1, -1, 253, -1, -1, 755, -1, 757,
+ -1, 759, 760, -1, -1, -1, -1, 715, -1, -1,
+ -1, 545, 720, 547, 722, 723, -1, -1, -1, -1,
+ 783, -1, -1, 781, 283, -1, 784, 790, 791, 288,
+ -1, 794, 2, -1, 4, -1, 295, 296, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 810, -1, -1,
+ -1, -1, -1, -1, -1, 763, 197, -1, -1, 767,
+ -1, -1, -1, -1, -1, 773, -1, -1, -1, 328,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 49,
+ -1, -1, -1, -1, -1, 793, -1, -1, 229, -1,
+ 853, -1, -1, -1, -1, -1, 237, 631, 632, -1,
+ -1, 864, -1, 811, 862, -1, -1, -1, -1, 643,
+ -1, -1, 253, -1, -1, -1, 86, -1, 652, -1,
+ 878, 879, 880, 881, -1, -1, -1, 885, 886, 887,
+ -1, 889, 890, 896, -1, 898, -1, -1, -1, -1,
+ -1, 904, 283, 906, -1, -1, -1, 288, -1, -1,
+ -1, -1, 411, -1, 295, 296, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 928, -1, 930, 931, -1, 434, -1, -1, 936, 713,
+ 714, 939, 940, 941, 942, -1, -1, 328, -1, -1,
+ 741, 742, -1, 744, -1, 746, 747, -1, -1, -1,
+ -1, 959, -1, -1, -1, -1, 757, -1, 759, 760,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 928, -1, -1, -1, -1, -1, -1, 197, -1, -1,
+ -1, -1, -1, -1, -1, -1, 495, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 783,
+ -1, -1, -1, -1, -1, -1, 790, 791, -1, 229,
+ 794, -1, -1, -1, -1, -1, -1, 237, -1, -1,
+ 411, -1, -1, -1, -1, -1, 810, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 545, -1, 547, -1,
+ -1, -1, -1, 434, -1, -1, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, -1,
+ 569, 83, 84, 283, -1, -1, -1, -1, 288, 853,
+ -1, -1, -1, -1, -1, 295, -1, 878, 879, 880,
+ 881, -1, -1, -1, 885, 886, 887, -1, 889, 890,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ -1, -1, -1, -1, 495, -1, 615, -1, 328, -1,
+ -1, -1, 896, -1, 898, -1, -1, -1, -1, -1,
+ 904, -1, 631, 632, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 643, 936, -1, -1, 939, 940,
+ 941, 942, -1, 652, -1, -1, -1, -1, -1, -1,
+ 659, -1, -1, -1, 545, -1, 547, -1, 959, -1,
+ -1, -1, -1, -1, 68, 69, 70, 71, 72, 73,
+ 74, 75, 76, 77, 78, 79, 80, -1, 569, 83,
+ 84, -1, -1, -1, -1, -1, -1, -1, -1, 698,
+ -1, 411, -1, -1, -1, -1, -1, 706, -1, -1,
+ -1, -1, -1, -1, 713, 714, 110, -1, 112, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, -1, -1,
+ -1, -1, -1, -1, 615, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 631, 632, -1, -1, 148, -1, -1, -1, -1, -1,
+ -1, -1, 643, 644, -1, -1, -1, -1, -1, -1,
+ -1, 652, -1, -1, -1, -1, -1, -1, 659, -1,
+ -1, -1, -1, -1, 783, -1, -1, -1, -1, -1,
+ -1, 790, 791, -1, -1, 794, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 810, -1, -1, -1, -1, -1, 698, -1, -1,
+ -1, -1, -1, -1, -1, 706, -1, -1, -1, -1,
+ -1, -1, 713, 714, -1, 545, 835, 547, -1, -1,
+ -1, -1, 68, 69, 70, 71, 72, 73, 74, 75,
+ 849, 77, 78, -1, 853, -1, -1, 83, 84, 569,
+ -1, -1, -1, -1, -1, 864, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, -1, 896, -1, 898,
+ -1, -1, 783, -1, -1, 904, -1, 906, -1, 790,
+ 791, -1, -1, 794, -1, -1, -1, -1, -1, -1,
+ -1, 631, 632, -1, -1, -1, -1, -1, -1, 810,
+ -1, -1, -1, 643, -1, -1, -1, -1, -1, -1,
+ -1, -1, 652, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 835, -1, -1, -1, -1, -1,
+ -1, 68, 69, 70, 71, 72, 73, 74, 849, -1,
+ 77, 78, 853, -1, -1, -1, 83, 84, -1, -1,
+ -1, -1, -1, 864, -1, -1, -1, -1, 698, -1,
+ -1, -1, -1, -1, -1, -1, 706, -1, -1, -1,
+ -1, -1, -1, 713, 714, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 896, -1, 898, -1, 44,
+ -1, -1, -1, 904, -1, 906, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 44, -1, -1, -1,
+ -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, 783, -1, 83, 84, -1, -1, -1,
+ 790, 791, -1, -1, 794, 110, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
+ 810, -1, 110, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 0, 1, 141, 3, 4, 5,
+ 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
+ 16, -1, 18, 19, 20, 21, 22, 23, 24, 849,
+ -1, -1, -1, 853, 30, 31, 32, 33, 34, 35,
+ 36, -1, -1, 39, 864, -1, -1, -1, -1, 45,
+ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
+ 66, 67, -1, -1, -1, -1, 896, -1, 898, -1,
+ -1, -1, -1, -1, 904, -1, 906, -1, -1, -1,
+ 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
+ -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 122, 123, 124, 0,
+ -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
+ -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
+ 146, -1, 148, -1, -1, -1, 27, 28, 29, -1,
+ -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
+ 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
+ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
+ 78, 79, 80, -1, -1, 83, 84, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ -1, -1, 83, 84, 85, -1, 87, 88, -1, -1,
+ -1, -1, 110, 94, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, -1, 107, -1, 109, 110,
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
+ 141, 0, -1, 144, 145, 146, -1, 148, -1, 8,
+ 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
+ -1, -1, -1, -1, -1, -1, -1, 26, 27, 28,
+ -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
+ -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
+ -1, -1, 68, 69, 70, 71, 72, 73, 74, -1,
+ -1, 77, 78, -1, -1, -1, -1, 83, 84, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, -1, -1, 83, 84, 85, -1, -1, 88,
+ -1, -1, -1, -1, -1, 94, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, -1, -1, -1, -1,
+ -1, 110, -1, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
+ 139, 140, 141, 0, 143, 144, 145, 146, -1, 148,
+ -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
+ 17, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
+ 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 68, 69, 70, 71, 72, 73, 74, 75, 76,
+ 77, 78, 79, 80, -1, -1, 83, 84, 85, -1,
+ -1, 88, -1, -1, -1, -1, -1, 94, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 138, 139, 140, 141, 0, -1, 144, 145, 146,
+ -1, 148, -1, 8, 9, 10, -1, -1, 13, 14,
+ 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
+ -1, 26, 27, 28, -1, -1, -1, -1, -1, -1,
+ -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
+ 85, -1, -1, 88, -1, -1, -1, -1, -1, 94,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 110, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 137, 138, 139, 140, 141, 0, 143, 144,
+ 145, 146, -1, 148, -1, 8, 9, 10, -1, -1,
+ 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 27, 28, -1, -1, -1, -1,
+ -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
+ 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 68, 69, 70, 71, 72,
+ 73, 74, 75, 76, 77, 78, 79, 80, -1, -1,
+ 83, 84, 85, -1, -1, 88, -1, -1, -1, -1,
+ -1, 94, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 110, -1, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 138, 139, 140, 141, 0,
+ 143, 144, 145, 146, -1, 148, -1, 8, 9, 10,
+ -1, -1, -1, 14, 15, -1, 17, -1, -1, -1,
+ -1, -1, -1, -1, -1, 26, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
+ 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 68, 69, 70,
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
+ -1, -1, 83, 84, 85, 0, 87, -1, -1, -1,
+ -1, -1, -1, 8, 9, 10, -1, -1, -1, 14,
+ 15, -1, 17, -1, -1, -1, -1, -1, 109, 110,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 37, 38, -1, 40, 41, 42, 43, 44,
+ -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
+ 141, -1, -1, 144, -1, 146, -1, 148, -1, -1,
+ -1, -1, -1, 68, 69, 70, 71, 72, 73, 74,
+ 75, 76, 77, 78, 79, 80, -1, -1, 83, 84,
+ 85, -1, 87, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 109, 110, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 138, 139, 140, 141, -1, -1, 144,
+ -1, 146, 1, 148, 3, 4, 5, 6, 7, 8,
+ 9, 10, 11, 12, -1, -1, 15, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 146, 1, 148,
+ 3, 4, 5, 6, 7, -1, -1, 10, 11, 12,
+ -1, 14, 15, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, 95, -1, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 122,
+ 123, 124, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 146, 1, 148, 3, 4, 5, 6,
+ 7, -1, -1, 10, 11, 12, -1, -1, 15, 16,
+ 17, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 122, 123, 124, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 146,
+ 1, 148, 3, 4, 5, 6, 7, -1, -1, 10,
+ 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
+ -1, 1, -1, 3, 4, 5, 6, 7, -1, 9,
+ 10, 11, 12, -1, -1, 146, 16, 148, 18, 19,
+ 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
+ -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
+ 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
+ 90, -1, 92, 93, -1, 95, -1, 97, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 122, 123, 124, -1, -1, -1, -1, -1,
+ -1, -1, 1, -1, 3, 4, 5, 6, 7, -1,
+ -1, -1, 11, 12, -1, -1, 146, 16, 148, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
+ -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
+ -1, -1, -1, 11, 12, 144, -1, 146, 16, 148,
+ 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
+ -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
+ -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
+ 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 122, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
+ 7, -1, -1, -1, 11, 12, 144, -1, 146, 16,
+ 148, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 122, 123, 124, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 138, -1, -1, -1, -1, -1, -1, -1, 146,
+ 1, 148, 3, 4, 5, 6, 7, -1, -1, 10,
+ 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, 95, -1, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 122, 123, 124, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
+ -1, 11, 12, -1, -1, 146, 16, 148, 18, 19,
+ 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
+ -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
+ 90, -1, 92, 93, -1, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 122, 123, 124, 3, 4, 5, -1, 7,
+ -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
+ 18, 19, 20, 21, 22, 23, 24, -1, 148, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
+ -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
+ -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
+ -1, 89, 90, -1, 92, 93, -1, -1, -1, 97,
+ 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 122, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
+ 7, -1, -1, -1, 11, 12, -1, -1, 146, 16,
+ 148, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
+ -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ -1, -1, 89, 90, -1, 92, 93, -1, -1, -1,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 122, 123, 124, 3, 4,
+ 5, 6, 7, -1, -1, -1, 11, 12, -1, -1,
+ -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
+ -1, 148, -1, -1, -1, 30, 31, 32, 33, 34,
+ 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
+ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, -1, 59, 60, -1, 62, 63, 64,
+ -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
+ 95, -1, 97, 98, 99, 100, 101, 102, 103, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 146, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
+ -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
+ -1, -1, -1, -1, -1, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
+ 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 123, 124, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
+ -1, 142, 143, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, 26, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 122,
+ 123, 124, -1, -1, -1, -1, -1, -1, 3, 4,
+ 5, -1, 7, -1, 137, -1, 11, 12, -1, -1,
+ 143, 16, -1, 18, 19, 20, 21, 22, 23, 24,
+ -1, 26, -1, -1, -1, 30, 31, 32, 33, 34,
+ 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
+ -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, -1, 62, 63, 64,
+ -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
+ 95, 96, 97, 98, 99, 100, 101, 102, 103, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 122, 123, 124,
+ -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
+ 7, -1, 137, -1, 11, 12, -1, -1, 143, 16,
+ -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
+ -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 58, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ 87, -1, 89, 90, -1, 92, 93, -1, 95, 96,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, 109, -1, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, 7, 122, 123, 124, 11, 12,
+ -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, 143, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, 95, 96, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, 122,
+ 123, 124, 11, 12, -1, -1, -1, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ 143, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, 96, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 122, 123, 124, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 143, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
+ 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, -1, 56, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
+ 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
+ 98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
+ 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
+ 98, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 142, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
+ 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 66, 67,
+ 68, 69, 70, 71, 72, 73, 74, -1, -1, 77,
+ 78, -1, -1, 81, 82, 83, 84, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 95, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 112, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, -1, 123, 124, -1, -1, -1,
+ 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
+ -1, -1, -1, 16, 142, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
+ 63, 64, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, -1, -1, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3, 4, 5, -1, 7, -1, -1, 122,
+ 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, 141, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ -1, 62, 63, 64, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, -1, -1, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3, 4, 5, 6, 7, -1,
+ -1, 122, 11, 12, -1, -1, -1, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ 141, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
+ -1, 11, 12, 122, 123, 124, 16, -1, 18, 19,
+ 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
+ -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
+ 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
+ 90, -1, 92, 93, -1, 95, 96, 97, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
+ 11, 12, 122, 123, 124, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
+ -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, 95, 96, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
+ 12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
+ 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
+ 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
+ -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, 58, 59, 60, -1,
+ 62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
+ 92, 93, -1, 95, -1, 97, 98, 99, 100, 101,
+ 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
+ 122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, 58, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, -1, 96, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, 122,
+ 123, 124, 16, -1, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, 58, 59, 60, -1, 62, 63,
+ 64, -1, 66, 67, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, 95, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
+ 5, -1, 7, -1, -1, -1, 11, 12, 122, 123,
+ 124, 16, -1, 18, 19, 20, 21, 22, 23, 24,
+ -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
+ 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
+ -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
+ 55, 56, 57, 58, 59, 60, -1, 62, 63, 64,
+ -1, 66, 67, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 86, -1, -1, 89, 90, -1, 92, 93, -1,
+ -1, -1, 97, 98, 99, 100, 101, 102, 103, -1,
+ -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
+ -1, 7, -1, -1, -1, 11, 12, 122, 123, 124,
+ 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
+ -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
+ 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
+ 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, -1, 59, 60, -1, 62, 63, 64, -1,
+ 66, 67, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 86, -1, -1, 89, 90, -1, 92, 93, -1, 95,
+ -1, 97, 98, 99, 100, 101, 102, 103, -1, -1,
+ -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
+ 7, -1, -1, -1, 11, 12, 122, 123, 124, 16,
+ -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
+ -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
+ -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
+ -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, -1, 59, 60, -1, 62, 63, 64, -1, 66,
+ 67, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 86,
+ -1, -1, 89, 90, -1, 92, 93, -1, 95, -1,
+ 97, 98, 99, 100, 101, 102, 103, -1, -1, -1,
+ -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
+ -1, -1, -1, 11, 12, 122, 123, 124, 16, -1,
+ 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
+ -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
+ -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
+ -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
+ -1, 59, 60, -1, 62, 63, 64, -1, 66, 67,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 86, -1,
+ -1, 89, 90, -1, 92, 93, -1, 95, -1, 97,
+ 98, 99, 100, 101, 102, 103, -1, -1, -1, -1,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
+ -1, -1, 11, 12, 122, 123, 124, 16, -1, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, 66, 67, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, -1,
+ -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
+ -1, 11, 12, 122, 123, 124, 16, -1, 18, 19,
+ 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
+ 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
+ -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
+ 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
+ 60, -1, 62, 63, 64, -1, 66, 67, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 86, -1, -1, 89,
+ 90, -1, 92, 93, -1, 95, -1, 97, 98, 99,
+ 100, 101, 102, 103, -1, -1, -1, -1, -1, -1,
+ -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
+ 11, 12, 122, 123, 124, 16, -1, 18, 19, 20,
+ 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
+ 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
+ -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
+ 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
+ -1, 62, 63, 64, -1, 66, 67, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 86, -1, -1, 89, 90,
+ -1, 92, 93, -1, -1, -1, 97, 98, 99, 100,
+ 101, 102, 103, -1, -1, -1, -1, -1, -1, -1,
+ -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
+ 12, 122, 123, 124, 16, -1, 18, 19, 20, 21,
+ 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
+ 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
+ -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
+ 52, 53, 54, 55, 56, 57, -1, 59, 60, -1,
+ 62, 63, 64, -1, 66, 67, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 86, -1, -1, 89, 90, -1,
+ 92, 93, -1, -1, -1, 97, 98, 99, 100, 101,
+ 102, 103, -1, -1, -1, -1, -1, -1, -1, -1,
+ 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
+ 122, 123, 124, 16, -1, 18, 19, 20, 21, 22,
+ 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
+ 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
+ -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
+ 53, 54, 55, 56, 57, -1, 59, 60, -1, 62,
+ 63, 64, -1, 66, 67, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 86, -1, -1, 89, 90, -1, 92,
+ 93, -1, -1, -1, 97, 98, 99, 100, 101, 102,
+ 103, -1, -1, -1, -1, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, 122,
+ 123, 124, 16, -1, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, 95, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
+ -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, 95, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
+ -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 83,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
+ -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, -1, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
+ -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
+ -1, -1, 11, 12, -1, -1, -1, 16, 122, 18,
+ 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
+ -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
+ 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
+ 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
+ 59, 60, -1, 62, 63, 64, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 86, -1, -1,
+ 89, 90, -1, 92, 93, -1, -1, -1, 97, 98,
+ 99, 100, 101, 102, 103, -1, -1, -1, -1, 3,
+ 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
+ -1, -1, 16, 122, 18, 19, 20, 21, 22, 23,
+ 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
+ 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
+ -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
+ 54, 55, 56, 57, -1, 59, 60, -1, 62, 63,
+ 64, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 86, -1, -1, 89, 90, -1, 92, 93,
+ -1, -1, -1, 97, 98, 99, 100, 101, 102, 103,
+ -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
+ -1, -1, -1, -1, -1, -1, -1, -1, 122, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
+ 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
+ -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
+ -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
+ -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
+ -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
+ -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
+ 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
+ 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
+ -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
+ 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 95, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
+ 123, 124, -1, -1, -1, -1, -1, 52, 53, -1,
+ -1, 56, -1, -1, -1, -1, -1, -1, -1, 142,
+ 143, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
+ -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
+ -1, -1, -1, -1, -1, -1, -1, 142, 143, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
+ 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
+ -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
+ -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
+ -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
+ -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
+ -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
+ 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
+ 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
+ -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
+ 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 95, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
+ 123, 124, -1, -1, -1, -1, -1, 52, 53, -1,
+ -1, 56, -1, -1, -1, -1, -1, -1, -1, 142,
+ 143, 66, 67, 68, 69, 70, 71, 72, 73, 74,
+ -1, -1, 77, 78, -1, -1, 81, 82, 83, 84,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ 95, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, 112, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, -1, 123, 124,
+ -1, -1, -1, -1, -1, 52, 53, -1, -1, 56,
+ -1, -1, -1, -1, -1, -1, -1, 142, 143, 66,
+ 67, 68, 69, 70, 71, 72, 73, 74, -1, -1,
+ 77, 78, -1, -1, 81, 82, 83, 84, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 95, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, -1, 123, 124, -1, -1,
+ -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
+ -1, -1, -1, -1, -1, 142, 143, 66, 67, 68,
+ 69, 70, 71, 72, 73, 74, -1, -1, 77, 78,
+ -1, -1, 81, 82, 83, 84, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, 95, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, 112, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, -1, 123, 124, -1, -1, -1, -1,
+ -1, 52, 53, -1, -1, 56, -1, -1, -1, -1,
+ -1, -1, -1, 142, 143, 66, 67, 68, 69, 70,
+ 71, 72, 73, 74, -1, -1, 77, 78, -1, -1,
+ 81, 82, 83, 84, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 95, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 112, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, -1, 123, 124, -1, -1, -1, -1, -1, 52,
+ 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
+ -1, 142, 143, 66, 67, 68, 69, 70, 71, 72,
+ 73, 74, -1, -1, 77, 78, -1, -1, 81, 82,
+ 83, 84, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, 95, -1, -1, -1, -1, -1, 44, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, -1,
+ 123, 124, 68, 69, 70, 71, 72, 73, 74, 75,
+ 76, 77, 78, 79, 80, -1, -1, 83, 84, 142,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, 110, -1, 112, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121
+};
+static const yytype_uint16 yystos[] =
+{
+ 0, 150, 151, 0, 1, 3, 4, 5, 6, 7,
+ 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
+ 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
+ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
+ 57, 59, 60, 62, 63, 64, 66, 67, 86, 89,
+ 90, 92, 93, 95, 97, 98, 99, 100, 101, 102,
+ 103, 122, 123, 124, 153, 154, 155, 158, 160, 161,
+ 164, 165, 167, 168, 169, 171, 172, 182, 196, 213,
+ 214, 215, 216, 217, 218, 219, 220, 221, 222, 223,
+ 245, 246, 256, 257, 258, 259, 260, 261, 262, 265,
+ 273, 275, 276, 277, 278, 279, 280, 303, 314, 155,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 45, 46, 47, 48, 49, 50,
+ 51, 52, 53, 56, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 77, 78, 81, 82, 83, 84, 95,
+ 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 123, 124, 142, 175, 176, 177, 178, 180, 181, 273,
+ 275, 21, 22, 30, 39, 58, 86, 89, 95, 96,
+ 123, 164, 172, 182, 184, 189, 192, 194, 213, 277,
+ 279, 280, 301, 302, 189, 189, 143, 190, 191, 143,
+ 186, 190, 143, 148, 308, 54, 177, 308, 157, 137,
+ 31, 32, 182, 213, 303, 182, 56, 89, 153, 166,
+ 167, 158, 185, 194, 301, 314, 184, 300, 301, 314,
+ 46, 86, 122, 141, 171, 196, 213, 277, 280, 239,
+ 240, 54, 55, 57, 175, 268, 274, 267, 268, 268,
+ 147, 263, 147, 266, 59, 60, 160, 182, 182, 146,
+ 148, 307, 312, 313, 40, 41, 42, 43, 44, 37,
+ 38, 28, 243, 109, 141, 89, 95, 168, 109, 68,
+ 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,
+ 79, 80, 83, 84, 110, 112, 113, 114, 115, 116,
+ 117, 118, 119, 120, 121, 85, 139, 140, 197, 158,
+ 159, 159, 200, 202, 159, 307, 313, 86, 165, 172,
+ 213, 229, 277, 280, 52, 56, 83, 86, 173, 174,
+ 213, 277, 280, 174, 33, 34, 35, 36, 49, 50,
+ 51, 52, 56, 143, 175, 278, 298, 85, 140, 26,
+ 137, 247, 259, 87, 87, 186, 190, 247, 141, 184,
+ 56, 184, 184, 109, 88, 141, 193, 314, 85, 139,
+ 140, 87, 87, 141, 193, 189, 308, 309, 189, 188,
+ 189, 314, 158, 309, 158, 54, 63, 64, 156, 143,
+ 183, 137, 153, 85, 140, 87, 166, 144, 309, 198,
+ 145, 141, 148, 311, 141, 311, 138, 311, 308, 56,
+ 59, 60, 168, 170, 141, 85, 139, 140, 52, 54,
+ 55, 56, 57, 89, 95, 96, 116, 119, 143, 241,
+ 284, 285, 286, 287, 288, 289, 292, 293, 294, 295,
+ 296, 61, 104, 105, 106, 269, 106, 269, 106, 65,
+ 106, 106, 264, 269, 106, 61, 106, 68, 68, 146,
+ 155, 159, 159, 159, 159, 155, 158, 158, 244, 95,
+ 160, 184, 194, 195, 166, 141, 171, 141, 160, 182,
+ 184, 195, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
+ 182, 182, 182, 182, 182, 182, 182, 182, 52, 53,
+ 56, 180, 186, 304, 305, 188, 52, 53, 56, 180,
+ 186, 304, 152, 153, 13, 225, 312, 225, 159, 159,
+ 307, 17, 250, 56, 85, 139, 140, 25, 158, 52,
+ 56, 173, 1, 113, 281, 312, 85, 139, 140, 209,
+ 299, 210, 85, 140, 306, 52, 56, 304, 304, 249,
+ 248, 160, 182, 160, 182, 94, 162, 179, 182, 184,
+ 95, 184, 192, 301, 52, 56, 188, 52, 56, 302,
+ 309, 144, 309, 309, 177, 199, 182, 153, 138, 304,
+ 304, 182, 309, 309, 301, 141, 170, 52, 56, 188,
+ 52, 56, 109, 52, 89, 95, 230, 231, 232, 286,
+ 284, 29, 107, 242, 141, 297, 314, 141, 297, 52,
+ 141, 297, 52, 271, 270, 147, 269, 147, 182, 182,
+ 76, 114, 234, 235, 314, 184, 141, 309, 170, 141,
+ 44, 308, 87, 87, 186, 190, 308, 310, 87, 87,
+ 186, 187, 190, 314, 10, 224, 8, 252, 314, 153,
+ 13, 153, 27, 226, 312, 226, 250, 194, 224, 52,
+ 56, 188, 52, 56, 204, 207, 312, 282, 206, 52,
+ 56, 173, 188, 152, 158, 143, 283, 284, 211, 187,
+ 190, 187, 190, 234, 234, 44, 163, 177, 184, 193,
+ 87, 310, 87, 87, 158, 138, 311, 168, 310, 184,
+ 232, 141, 286, 141, 309, 146, 236, 314, 153, 153,
+ 287, 292, 294, 296, 288, 289, 294, 288, 153, 54,
+ 55, 57, 272, 280, 52, 233, 236, 288, 290, 291,
+ 294, 296, 153, 95, 184, 170, 182, 111, 160, 182,
+ 182, 162, 145, 87, 160, 182, 160, 182, 162, 184,
+ 195, 253, 314, 15, 228, 314, 14, 227, 228, 228,
+ 201, 203, 224, 141, 225, 310, 159, 312, 159, 152,
+ 310, 224, 309, 284, 152, 312, 175, 153, 153, 182,
+ 234, 87, 309, 309, 231, 141, 95, 230, 52, 237,
+ 238, 285, 309, 10, 138, 141, 297, 141, 297, 141,
+ 297, 141, 297, 297, 138, 109, 236, 114, 141, 297,
+ 141, 297, 141, 297, 10, 184, 182, 160, 182, 88,
+ 254, 314, 153, 9, 255, 314, 159, 224, 224, 153,
+ 153, 184, 153, 226, 208, 312, 224, 309, 224, 212,
+ 10, 138, 153, 141, 231, 141, 286, 141, 288, 294,
+ 288, 288, 86, 213, 114, 291, 294, 288, 290, 294,
+ 288, 86, 172, 213, 277, 280, 225, 153, 225, 224,
+ 224, 228, 250, 251, 205, 152, 283, 138, 231, 141,
+ 238, 297, 141, 297, 297, 297, 56, 85, 141, 297,
+ 141, 297, 297, 141, 297, 297, 56, 85, 139, 140,
+ 153, 153, 153, 224, 152, 231, 288, 52, 56, 288,
+ 294, 288, 288, 52, 56, 188, 52, 56, 252, 227,
+ 224, 224, 297, 297, 141, 297, 297, 297, 310, 288,
+ 297
+};
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_params *parser)
+{
+ if (!yyvaluep)
+ return;
+ ((void) (parser));
+ ((void) (yyoutput));
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, struct parser_params *parser)
+{
+ if (yytype < 149)
+ fprintf (yyoutput, "token %s (", yytname[yytype]);
+ else
+ fprintf (yyoutput, "nterm %s (", yytname[yytype]);
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep, parser);
+ fprintf (yyoutput, ")");
+}
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+{
+ fprintf (stderr, "Stack now");
+ for (; bottom <= top; ++bottom)
+ fprintf (stderr, " %d", *bottom);
+ fprintf (stderr, "\n");
+}
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule, struct parser_params *parser)
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ fprintf (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ , parser);
+ fprintf (stderr, "\n");
+ }
+}
+static unsigned int
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ unsigned int yyn = 0;
+ char const *yyp = yystr;
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+ if (! yyres)
+ return strlen (yystr);
+ return __builtin_stpcpy (yyres, yystr) - yyres;
+}
+static unsigned int
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+ if (! (-747 < yyn && yyn <= 10225))
+ return 0;
+ else
+ {
+ int yytype = ((unsigned int) (yychar) <= 376 ? yytranslate[yychar] : 2);
+ unsigned int yysize0 = yytnamerr (0, yytname[yytype]);
+ unsigned int yysize = yysize0;
+ unsigned int yysize1;
+ int yysize_overflow = 0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+ int yychecklim = 10225 - yyn + 1;
+ int yyxend = yychecklim < 149 ? yychecklim : 149;
+ int yycount = 1;
+ yyarg[0] = yytname[yytype];
+ yyfmt = __builtin_stpcpy (yyformat, yyunexpected);
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != 1)
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+ yyfmt = __builtin_stpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
+ }
+ yyf = yyformat;
+ yysize1 = yysize + strlen (yyf);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+ if (yysize_overflow)
+ return ((unsigned int) -1);
+ if (yyresult)
+ {
+ char *yyp = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, struct parser_params *parser)
+{
+ ((void) (yyvaluep));
+ ((void) (parser));
+ if (!yymsg)
+ yymsg = "Deleting";
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", yymsg); yy_symbol_print (stderr, yytype, yyvaluep, parser); fprintf (stderr, "\n"); } } while ((0));
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+int ruby_yyparse (struct parser_params *parser);
+int
+ruby_yyparse (struct parser_params *parser)
+{
+int yychar;
+YYSTYPE yylval;
+int yynerrs;
+ int yystate;
+ int yyn;
+ int yyresult;
+ int yyerrstatus;
+ int yytoken = 0;
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ unsigned int yymsg_alloc = sizeof yymsgbuf;
+ yytype_int16 yyssa[200];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
+ YYSTYPE yyvsa[200];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+ unsigned int yystacksize = 200;
+ YYSTYPE yyval;
+ int yylen = 0;
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Starting parse\n"); } while ((0));
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = (-2);
+ yyssp = yyss;
+ yyvsp = yyvs;
+ goto yysetstate;
+ yynewstate:
+ yyssp++;
+ yysetstate:
+ *yyssp = yystate;
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ unsigned int yysize = yyssp - yyss + 1;
+ if (10000 <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (10000 < yystacksize)
+ yystacksize = 10000;
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) rb_parser_malloc(parser, ((yystacksize) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) + (sizeof (union yyalloc) - 1)));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ do { unsigned int yynewbytes; __builtin_memcpy (&yyptr->yyss, yyss, (yysize) * sizeof (*(yyss))); yyss = &yyptr->yyss; yynewbytes = yystacksize * sizeof (*yyss) + (sizeof (union yyalloc) - 1); yyptr += yynewbytes / sizeof (*yyptr); } while ((0));
+ do { unsigned int yynewbytes; __builtin_memcpy (&yyptr->yyvs, yyvs, (yysize) * sizeof (*(yyvs))); yyvs = &yyptr->yyvs; yynewbytes = yystacksize * sizeof (*yyvs) + (sizeof (union yyalloc) - 1); yyptr += yynewbytes / sizeof (*yyptr); } while ((0));
+ if (yyss1 != yyssa)
+ rb_parser_free(parser, yyss1);
+ }
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Stack size increased to %lu\n", (unsigned long int) yystacksize); } while ((0));
+ if (yyss + yystacksize - 1 <= yyssp)
+ goto yyabortlab;
+ }
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Entering state %d\n", yystate); } while ((0));
+ goto yybackup;
+yybackup:
+ yyn = yypact[yystate];
+ if (yyn == -747)
+ goto yydefault;
+ if (yychar == (-2))
+ {
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Reading a token: "); } while ((0));
+ yychar = yylex (&yylval, parser);
+ }
+ if (yychar <= 0)
+ {
+ yychar = yytoken = 0;
+ do { if ((parser->parser_yydebug)) fprintf (stderr, "Now at end of input.\n"); } while ((0));
+ }
+ else
+ {
+ yytoken = ((unsigned int) (yychar) <= 376 ? yytranslate[yychar] : 2);
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Next token is"); yy_symbol_print (stderr, yytoken, &yylval, parser); fprintf (stderr, "\n"); } } while ((0));
+ }
+ yyn += yytoken;
+ if (yyn < 0 || 10225 < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yyn == 0 || yyn == -555)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+ if (yyn == 3)
+ goto yyacceptlab;
+ if (yyerrstatus)
+ yyerrstatus--;
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Shifting"); yy_symbol_print (stderr, yytoken, &yylval, parser); fprintf (stderr, "\n"); } } while ((0));
+ if (yychar != 0)
+ yychar = (-2);
+ yystate = yyn;
+ *++yyvsp = yylval;
+ goto yynewstate;
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+yyreduce:
+ yylen = yyr2[yyn];
+ yyval = yyvsp[1-yylen];
+ do { if ((parser->parser_yydebug)) yy_reduce_print (yyvsp, yyn, parser); } while ((0));
+ switch (yyn)
+ {
+ case 2:
+ {
+ (parser->parser_lex_state) = EXPR_BEG;
+ local_push_gen(parser,(parser->parser_compile_for_eval));
+ ;}
+ break;
+ case 3:
+ {
+ if ((yyvsp[(2) - (2)].node) && !(parser->parser_compile_for_eval)) {
+ if (((int) (((((struct RNode*)((yyvsp[(2) - (2)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) void_expr_gen(parser, (((yyvsp[(2) - (2)].node)) = remove_begin((yyvsp[(2) - (2)].node))));
+ else {
+ NODE *node = (yyvsp[(2) - (2)].node);
+ while (node->u3.node) {
+ node = node->u3.node;
+ }
+ void_expr_gen(parser, ((node->u1.node) = remove_begin(node->u1.node)));
+ }
+ }
+ (parser->parser_eval_tree) = node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)(block_append_gen(parser,(parser->parser_eval_tree),(yyvsp[(2) - (2)].node))), (VALUE)(0));
+ local_pop_gen(parser);
+ ;}
+ break;
+ case 4:
+ {
+ (yyval.node) = (yyvsp[(1) - (4)].node);
+ if ((yyvsp[(2) - (4)].node)) {
+ (yyval.node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].node)));
+ }
+ else if ((yyvsp[(3) - (4)].node)) {
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "else without rescue is useless");
+ (yyval.node) = block_append_gen(parser,(yyval.node),(yyvsp[(3) - (4)].node));
+ }
+ if ((yyvsp[(4) - (4)].node)) {
+ if ((yyval.node)) {
+ (yyval.node) = node_newnode(parser, (NODE_ENSURE), (VALUE)((yyval.node)), (VALUE)(0), (VALUE)((yyvsp[(4) - (4)].node)));
+ }
+ else {
+ (yyval.node) = block_append_gen(parser,(yyvsp[(4) - (4)].node),node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0)));
+ }
+ }
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+ ;}
+ break;
+ case 5:
+ {
+ void_stmts_gen(parser, (yyvsp[(1) - (2)].node));
+ fixup_nodes(&(parser->parser_deferred_nodes));
+ (yyval.node) = (yyvsp[(1) - (2)].node);
+ ;}
+ break;
+ case 6:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 7:
+ {
+ (yyval.node) = newline_node((yyvsp[(1) - (1)].node));
+ ;}
+ break;
+ case 8:
+ {
+ (yyval.node) = block_append_gen(parser,(yyvsp[(1) - (3)].node),newline_node((yyvsp[(3) - (3)].node)));
+ ;}
+ break;
+ case 9:
+ {
+ (yyval.node) = remove_begin((yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 10:
+ {(parser->parser_lex_state) = EXPR_FNAME;;}
+ break;
+ case 11:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ALIAS), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0));
+ ;}
+ break;
+ case 12:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_VALIAS), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 13:
+ {
+ char buf[3];
+ sprintf(buf, "$%c", (char)(yyvsp[(3) - (3)].node)->u2.argc);
+ (yyval.node) = node_newnode(parser, (NODE_VALIAS), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)((__builtin_constant_p(buf) ? __extension__ (rb_intern2(buf, strlen(buf))) : (rb_intern)(buf))), (VALUE)(0));
+ ;}
+ break;
+ case 14:
+ {
+ parser_yyerror(parser, "can't make alias for the number variables");
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 15:
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 16:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))), (VALUE)(0));
+ fixpos((yyval.node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 17:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)(0), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))));
+ fixpos((yyval.node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 18:
+ {
+ if ((yyvsp[(1) - (3)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN) {
+ (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)->u2.node), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1));
+ }
+ ;}
+ break;
+ case 19:
+ {
+ if ((yyvsp[(1) - (3)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN) {
+ (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)->u2.node), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (3)].node))), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1));
+ }
+ ;}
+ break;
+ case 20:
+ {
+ NODE *resq = node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)(remove_begin((yyvsp[(3) - (3)].node))), (VALUE)(0));
+ (yyval.node) = node_newnode(parser, (NODE_RESCUE), (VALUE)(remove_begin((yyvsp[(1) - (3)].node))), (VALUE)(resq), (VALUE)(0));
+ ;}
+ break;
+ case 21:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single)) {
+ parser_yyerror(parser, "BEGIN in method");
+ }
+ ;}
+ break;
+ case 22:
+ {
+ (parser->parser_eval_tree_begin) = block_append_gen(parser,(parser->parser_eval_tree_begin),(yyvsp[(4) - (5)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 23:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single)) {
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "END in method; use at_exit");
+ }
+ (yyval.node) = node_newnode(parser, (NODE_POSTEXE), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0))), (VALUE)(0));
+ ;}
+ break;
+ case 24:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 25:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ ;}
+ break;
+ case 26:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ if ((yyvsp[(1) - (3)].node)) {
+ ID vid = (yyvsp[(1) - (3)].node)->u1.id;
+ if ((yyvsp[(2) - (3)].id) == 331) {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
+ if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
+ (yyval.node)->u3.id = vid;
+ }
+ }
+ else if ((yyvsp[(2) - (3)].id) == 330) {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ (yyval.node)->u2.node = node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(1), (VALUE)(0))));
+ }
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ ;}
+ break;
+ case 27:
+ {
+ NODE *args;
+ value_expr_gen(parser, ((yyvsp[(6) - (6)].node)) = remove_begin((yyvsp[(6) - (6)].node)));
+ if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ args = arg_concat_gen(parser,(yyvsp[(6) - (6)].node),(yyvsp[(3) - (6)].node));
+ if ((yyvsp[(5) - (6)].id) == 331) {
+ (yyvsp[(5) - (6)].id) = 0;
+ }
+ else if ((yyvsp[(5) - (6)].id) == 330) {
+ (yyvsp[(5) - (6)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN1), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].id)), (VALUE)(args));
+ fixpos((yyval.node), (yyvsp[(1) - (6)].node));
+ ;}
+ break;
+ case 28:
+ {
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 29:
+ {
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 30:
+ {
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 31:
+ {
+ rb_backref_error_gen(parser,(yyvsp[(1) - (3)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 32:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 33:
+ {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ ;}
+ break;
+ case 34:
+ {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ ;}
+ break;
+ case 37:
+ {
+ (yyval.node) = logop_gen(parser, NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 38:
+ {
+ (yyval.node) = logop_gen(parser, NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 39:
+ {
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(3) - (3)].node)),'!');
+ ;}
+ break;
+ case 40:
+ {
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(2) - (2)].node)),'!');
+ ;}
+ break;
+ case 42:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 45:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_RETURN), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 46:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_BREAK), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 47:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_NEXT), (VALUE)(ret_args_gen(parser, (yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 49:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ ;}
+ break;
+ case 50:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ ;}
+ break;
+ case 51:
+ {
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 52:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ dyna_pop_gen(parser);
+ ;}
+ break;
+ case 53:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)((yyvsp[(2) - (2)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 54:
+ {
+ block_dup_check_gen(parser,(yyvsp[(2) - (3)].node),(yyvsp[(3) - (3)].node));
+ (yyvsp[(3) - (3)].node)->u3.node = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (3)].id)), (VALUE)((yyvsp[(2) - (3)].node)));
+ (yyval.node) = (yyvsp[(3) - (3)].node);
+ fixpos((yyval.node), (yyvsp[(2) - (3)].node));
+ ;}
+ break;
+ case 55:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+ ;}
+ break;
+ case 56:
+ {
+ block_dup_check_gen(parser,(yyvsp[(4) - (5)].node),(yyvsp[(5) - (5)].node));
+ (yyvsp[(5) - (5)].node)->u3.node = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].node)));
+ (yyval.node) = (yyvsp[(5) - (5)].node);
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 57:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+ ;}
+ break;
+ case 58:
+ {
+ block_dup_check_gen(parser,(yyvsp[(4) - (5)].node),(yyvsp[(5) - (5)].node));
+ (yyvsp[(5) - (5)].node)->u3.node = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].node)));
+ (yyval.node) = (yyvsp[(5) - (5)].node);
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 59:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_SUPER), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 60:
+ {
+ (yyval.node) = new_yield_gen(parser, (yyvsp[(2) - (2)].node));
+ fixpos((yyval.node), (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 62:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 64:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(2) - (3)].node)), (VALUE)(1), (VALUE)(0))), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 65:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 66:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(list_append_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node))), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 67:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0), (VALUE)((yyvsp[(3) - (3)].node)));
+ ;}
+ break;
+ case 68:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 69:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(-1));
+ ;}
+ break;
+ case 70:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 71:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
+ ;}
+ break;
+ case 72:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 73:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(-1));
+ ;}
+ break;
+ case 74:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 76:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 77:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 78:
+ {
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(2) - (3)].node));
+ ;}
+ break;
+ case 79:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 80:
+ {
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 81:
+ {
+ (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
+ ;}
+ break;
+ case 82:
+ {
+ (yyval.node) = aryset_gen(parser, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
+ ;}
+ break;
+ case 83:
+ {
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+ ;}
+ break;
+ case 84:
+ {
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+ ;}
+ break;
+ case 85:
+ {
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+ ;}
+ break;
+ case 86:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0))));
+ ;}
+ break;
+ case 87:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0))));
+ ;}
+ break;
+ case 88:
+ {
+ rb_backref_error_gen(parser,(yyvsp[(1) - (1)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 89:
+ {
+ if (!((yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0))) (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 90:
+ {
+ (yyval.node) = aryset_gen(parser, (yyvsp[(1) - (4)].node), (yyvsp[(3) - (4)].node));
+ ;}
+ break;
+ case 91:
+ {
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+ ;}
+ break;
+ case 92:
+ {
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+ ;}
+ break;
+ case 93:
+ {
+ (yyval.node) = attrset_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].id));
+ ;}
+ break;
+ case 94:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0))));
+ ;}
+ break;
+ case 95:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ (yyval.node) = node_newnode(parser, (NODE_CDECL), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0))));
+ ;}
+ break;
+ case 96:
+ {
+ rb_backref_error_gen(parser,(yyvsp[(1) - (1)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 97:
+ {
+ parser_yyerror(parser, "class/module name must be CONSTANT");
+ ;}
+ break;
+ case 99:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 100:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)(0), (VALUE)((yyval.node)), (VALUE)(0));
+ ;}
+ break;
+ case 101:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 105:
+ {
+ (parser->parser_lex_state) = EXPR_END;
+ (yyval.id) = (yyvsp[(1) - (1)].id);
+ ;}
+ break;
+ case 106:
+ {
+ (parser->parser_lex_state) = EXPR_END;
+ (yyval.id) = (yyvsp[(1) - (1)].id);
+ ;}
+ break;
+ case 109:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (1)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 111:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_UNDEF), (VALUE)(0), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0));
+ ;}
+ break;
+ case 112:
+ {(parser->parser_lex_state) = EXPR_FNAME;;}
+ break;
+ case 113:
+ {
+ (yyval.node) = block_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_UNDEF), (VALUE)(0), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0)));
+ ;}
+ break;
+ case 114:
+ { (yyval.id) = '|'; ;}
+ break;
+ case 115:
+ { (yyval.id) = '^'; ;}
+ break;
+ case 116:
+ { (yyval.id) = '&'; ;}
+ break;
+ case 117:
+ { (yyval.id) = 324; ;}
+ break;
+ case 118:
+ { (yyval.id) = 325; ;}
+ break;
+ case 119:
+ { (yyval.id) = 326; ;}
+ break;
+ case 120:
+ { (yyval.id) = 332; ;}
+ break;
+ case 121:
+ { (yyval.id) = 333; ;}
+ break;
+ case 122:
+ { (yyval.id) = '>'; ;}
+ break;
+ case 123:
+ { (yyval.id) = 328; ;}
+ break;
+ case 124:
+ { (yyval.id) = '<'; ;}
+ break;
+ case 125:
+ { (yyval.id) = 329; ;}
+ break;
+ case 126:
+ { (yyval.id) = 327; ;}
+ break;
+ case 127:
+ { (yyval.id) = 338; ;}
+ break;
+ case 128:
+ { (yyval.id) = 339; ;}
+ break;
+ case 129:
+ { (yyval.id) = '+'; ;}
+ break;
+ case 130:
+ { (yyval.id) = '-'; ;}
+ break;
+ case 131:
+ { (yyval.id) = '*'; ;}
+ break;
+ case 132:
+ { (yyval.id) = '*'; ;}
+ break;
+ case 133:
+ { (yyval.id) = '/'; ;}
+ break;
+ case 134:
+ { (yyval.id) = '%'; ;}
+ break;
+ case 135:
+ { (yyval.id) = 323; ;}
+ break;
+ case 136:
+ { (yyval.id) = '!'; ;}
+ break;
+ case 137:
+ { (yyval.id) = '~'; ;}
+ break;
+ case 138:
+ { (yyval.id) = 321; ;}
+ break;
+ case 139:
+ { (yyval.id) = 322; ;}
+ break;
+ case 140:
+ { (yyval.id) = 336; ;}
+ break;
+ case 141:
+ { (yyval.id) = 337; ;}
+ break;
+ case 142:
+ { (yyval.id) = '`'; ;}
+ break;
+ case 184:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 185:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (5)].node)) = remove_begin((yyvsp[(3) - (5)].node)));
+ (yyvsp[(3) - (5)].node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))), (VALUE)(0));
+ (yyval.node) = node_assign_gen(parser, (yyvsp[(1) - (5)].node), (yyvsp[(3) - (5)].node));
+ ;}
+ break;
+ case 186:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ if ((yyvsp[(1) - (3)].node)) {
+ ID vid = (yyvsp[(1) - (3)].node)->u1.id;
+ if ((yyvsp[(2) - (3)].id) == 331) {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
+ if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
+ (yyval.node)->u3.id = vid;
+ }
+ }
+ else if ((yyvsp[(2) - (3)].id) == 330) {
+ (yyvsp[(1) - (3)].node)->u2.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ (yyval.node)->u2.node = node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(2) - (3)].id)), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(1), (VALUE)(0))));
+ }
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ ;}
+ break;
+ case 187:
+ {
+ value_expr_gen(parser, ((yyvsp[(3) - (5)].node)) = remove_begin((yyvsp[(3) - (5)].node)));
+ (yyvsp[(3) - (5)].node) = node_newnode(parser, (NODE_RESCUE), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_RESBODY), (VALUE)(0), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))), (VALUE)(0));
+ if ((yyvsp[(1) - (5)].node)) {
+ ID vid = (yyvsp[(1) - (5)].node)->u1.id;
+ if ((yyvsp[(2) - (5)].id) == 331) {
+ (yyvsp[(1) - (5)].node)->u2.node = (yyvsp[(3) - (5)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_OR), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0));
+ if (((((vid)>376)) && (((vid)&0x07) == 0x03 || ((vid)&0x07) == 0x01 || ((vid)&0x07) == 0x06))) {
+ (yyval.node)->u3.id = vid;
+ }
+ }
+ else if ((yyvsp[(2) - (5)].id) == 330) {
+ (yyvsp[(1) - (5)].node)->u2.node = (yyvsp[(3) - (5)].node);
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN_AND), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = (yyvsp[(1) - (5)].node);
+ (yyval.node)->u2.node = node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,vid)), (VALUE)((yyvsp[(2) - (5)].id)), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(3) - (5)].node)), (VALUE)(1), (VALUE)(0))));
+ }
+ }
+ else {
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ ;}
+ break;
+ case 188:
+ {
+ NODE *args;
+ value_expr_gen(parser, ((yyvsp[(6) - (6)].node)) = remove_begin((yyvsp[(6) - (6)].node)));
+ if (!(yyvsp[(3) - (6)].node)) (yyvsp[(3) - (6)].node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ args = arg_concat_gen(parser,(yyvsp[(6) - (6)].node),(yyvsp[(3) - (6)].node));
+ if ((yyvsp[(5) - (6)].id) == 331) {
+ (yyvsp[(5) - (6)].id) = 0;
+ }
+ else if ((yyvsp[(5) - (6)].id) == 330) {
+ (yyvsp[(5) - (6)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN1), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].id)), (VALUE)(args));
+ fixpos((yyval.node), (yyvsp[(1) - (6)].node));
+ ;}
+ break;
+ case 189:
+ {
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 190:
+ {
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 191:
+ {
+ value_expr_gen(parser, ((yyvsp[(5) - (5)].node)) = remove_begin((yyvsp[(5) - (5)].node)));
+ if ((yyvsp[(4) - (5)].id) == 331) {
+ (yyvsp[(4) - (5)].id) = 0;
+ }
+ else if ((yyvsp[(4) - (5)].id) == 330) {
+ (yyvsp[(4) - (5)].id) = 1;
+ }
+ (yyval.node) = node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_OP_ASGN2), (VALUE)((yyvsp[(3) - (5)].id)), (VALUE)((yyvsp[(4) - (5)].id)), (VALUE)(rb_id_attrset((yyvsp[(3) - (5)].id))))));
+ fixpos((yyval.node), (yyvsp[(1) - (5)].node));
+ ;}
+ break;
+ case 192:
+ {
+ parser_yyerror(parser, "constant re-assignment");
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 193:
+ {
+ parser_yyerror(parser, "constant re-assignment");
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 194:
+ {
+ rb_backref_error_gen(parser,(yyvsp[(1) - (3)].node));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 195:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (3)].node)) = remove_begin((yyvsp[(1) - (3)].node)));
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_newnode(parser, (NODE_DOT2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0));
+ if (((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(1) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG) &&
+ ((int) (((((struct RNode*)((yyvsp[(3) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(3) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG)) {
+ (parser->parser_deferred_nodes) = list_append_gen(parser,(parser->parser_deferred_nodes),(yyval.node));
+ }
+ ;}
+ break;
+ case 196:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (3)].node)) = remove_begin((yyvsp[(1) - (3)].node)));
+ value_expr_gen(parser, ((yyvsp[(3) - (3)].node)) = remove_begin((yyvsp[(3) - (3)].node)));
+ (yyval.node) = node_newnode(parser, (NODE_DOT3), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0));
+ if (((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(1) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG) &&
+ ((int) (((((struct RNode*)((yyvsp[(3) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && (((long)((yyvsp[(3) - (3)].node)->u1.value))&RUBY_FIXNUM_FLAG)) {
+ (parser->parser_deferred_nodes) = list_append_gen(parser,(parser->parser_deferred_nodes),(yyval.node));
+ }
+ ;}
+ break;
+ case 197:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'+',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 198:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'-',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 199:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'*',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 200:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'/',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 201:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'%',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 202:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),323,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 203:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)(call_bin_op_gen(parser, (yyvsp[(2) - (4)].node),323,(yyvsp[(4) - (4)].node))), (VALUE)(322), (VALUE)(0));
+ ;}
+ break;
+ case 204:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)(call_bin_op_gen(parser, (yyvsp[(2) - (4)].node),323,(yyvsp[(4) - (4)].node))), (VALUE)(322), (VALUE)(0));
+ ;}
+ break;
+ case 205:
+ {
+ (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),321);
+ ;}
+ break;
+ case 206:
+ {
+ (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),322);
+ ;}
+ break;
+ case 207:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'|',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 208:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'^',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 209:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'&',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 210:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),324,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 211:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'>',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 212:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),328,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 213:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),'<',(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 214:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),329,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 215:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),325,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 216:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),326,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 217:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),327,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 218:
+ {
+ (yyval.node) = match_op_gen(parser, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ if (((int) (((((struct RNode*)((yyvsp[(1) - (3)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LIT && rb_type((VALUE)((yyvsp[(1) - (3)].node)->u1.value)) == RUBY_T_REGEXP) {
+ (yyval.node) = reg_named_capture_assign_gen(parser,(yyvsp[(1) - (3)].node)->u1.value,(yyval.node));
+ }
+ ;}
+ break;
+ case 219:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),333,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 220:
+ {
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(2) - (2)].node)),'!');
+ ;}
+ break;
+ case 221:
+ {
+ (yyval.node) = call_uni_op_gen(parser, (yyvsp[(2) - (2)].node),'~');
+ ;}
+ break;
+ case 222:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),338,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 223:
+ {
+ (yyval.node) = call_bin_op_gen(parser, (yyvsp[(1) - (3)].node),339,(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 224:
+ {
+ (yyval.node) = logop_gen(parser, NODE_AND, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 225:
+ {
+ (yyval.node) = logop_gen(parser, NODE_OR, (yyvsp[(1) - (3)].node), (yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 226:
+ {(parser->parser_in_defined) = 1;;}
+ break;
+ case 227:
+ {
+ (parser->parser_in_defined) = 0;
+ (yyval.node) = node_newnode(parser, (NODE_DEFINED), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 228:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (6)].node)) = remove_begin((yyvsp[(1) - (6)].node)));
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(1) - (6)].node))), (VALUE)((yyvsp[(3) - (6)].node)), (VALUE)((yyvsp[(6) - (6)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (6)].node));
+ ;}
+ break;
+ case 229:
+ {
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ ;}
+ break;
+ case 230:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 232:
+ {
+ (yyval.node) = (yyvsp[(1) - (2)].node);
+ ;}
+ break;
+ case 233:
+ {
+ (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0), (VALUE)(0)));
+ ;}
+ break;
+ case 234:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 235:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 240:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 241:
+ {
+ (yyval.node) = arg_blk_pass((yyvsp[(1) - (2)].node), (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 242:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(1) - (2)].node)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
+ (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 243:
+ {
+ (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (4)].node),node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0), (VALUE)(0)));
+ (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[(4) - (4)].node));
+ ;}
+ break;
+ case 245:
+ {
+ (yyval.num) = (parser->parser_cmdarg_stack);
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((1)&1));
+ ;}
+ break;
+ case 246:
+ {
+ (parser->parser_cmdarg_stack) = (yyvsp[(1) - (2)].num);
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 247:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_BLOCK_PASS), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0));
+ ;}
+ break;
+ case 248:
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 249:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 250:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 251:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 252:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_SPLAT), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 253:
+ {
+ NODE *n1;
+ if ((n1 = splat_array((yyvsp[(1) - (3)].node))) != 0) {
+ (yyval.node) = list_append_gen(parser,n1,(yyvsp[(3) - (3)].node));
+ }
+ else {
+ (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+ }
+ ;}
+ break;
+ case 254:
+ {
+ NODE *n1;
+ if ((((int) (((((struct RNode*)((yyvsp[(4) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) && (n1 = splat_array((yyvsp[(1) - (4)].node))) != 0) {
+ (yyval.node) = list_concat_gen(parser,n1,(yyvsp[(4) - (4)].node));
+ }
+ else {
+ (yyval.node) = arg_concat_gen(parser,(yyvsp[(1) - (4)].node),(yyvsp[(4) - (4)].node));
+ }
+ ;}
+ break;
+ case 255:
+ {
+ NODE *n1;
+ if ((n1 = splat_array((yyvsp[(1) - (3)].node))) != 0) {
+ (yyval.node) = list_append_gen(parser,n1,(yyvsp[(3) - (3)].node));
+ }
+ else {
+ (yyval.node) = arg_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+ }
+ ;}
+ break;
+ case 256:
+ {
+ NODE *n1;
+ if (((int) (((((struct RNode*)((yyvsp[(4) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY &&
+ (n1 = splat_array((yyvsp[(1) - (4)].node))) != 0) {
+ (yyval.node) = list_concat_gen(parser,n1,(yyvsp[(4) - (4)].node));
+ }
+ else {
+ (yyval.node) = arg_concat_gen(parser,(yyvsp[(1) - (4)].node),(yyvsp[(4) - (4)].node));
+ }
+ ;}
+ break;
+ case 257:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_SPLAT), (VALUE)((yyvsp[(2) - (2)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 266:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 267:
+ {
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 268:
+ {
+ if ((yyvsp[(3) - (4)].node) == ((void *)0)) {
+ (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ if (((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_RESCUE ||
+ ((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ENSURE)
+ ((struct RNode*)((yyvsp[(3) - (4)].node)))->flags=((((struct RNode*)((yyvsp[(3) - (4)].node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (4)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0));
+ }
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (4)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ ;}
+ break;
+ case 269:
+ {(parser->parser_lex_state) = EXPR_ENDARG;;}
+ break;
+ case 270:
+ {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "(...) interpreted as grouped expression");
+ (yyval.node) = (yyvsp[(2) - (4)].node);
+ ;}
+ break;
+ case 271:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 272:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_COLON2), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 273:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_COLON3), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 274:
+ {
+ if ((yyvsp[(2) - (3)].node) == 0) {
+ (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ }
+ ;}
+ break;
+ case 275:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_HASH), (VALUE)((yyvsp[(2) - (3)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 276:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_RETURN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 277:
+ {
+ (yyval.node) = new_yield_gen(parser, (yyvsp[(3) - (4)].node));
+ ;}
+ break;
+ case 278:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_YIELD), (VALUE)(0), (VALUE)(0), (VALUE)(((VALUE)RUBY_Qfalse)));
+ ;}
+ break;
+ case 279:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_YIELD), (VALUE)(0), (VALUE)(0), (VALUE)(((VALUE)RUBY_Qfalse)));
+ ;}
+ break;
+ case 280:
+ {(parser->parser_in_defined) = 1;;}
+ break;
+ case 281:
+ {
+ (parser->parser_in_defined) = 0;
+ (yyval.node) = node_newnode(parser, (NODE_DEFINED), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 282:
+ {
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, (yyvsp[(3) - (4)].node)),'!');
+ ;}
+ break;
+ case 283:
+ {
+ (yyval.node) = call_uni_op_gen(parser, cond_gen(parser, node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0))),'!');
+ ;}
+ break;
+ case 284:
+ {
+ (yyvsp[(2) - (2)].node)->u3.node = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)(0));
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ fixpos((yyvsp[(2) - (2)].node)->u3.node, (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 286:
+ {
+ block_dup_check_gen(parser,(yyvsp[(1) - (2)].node)->u3.node,(yyvsp[(2) - (2)].node));
+ (yyvsp[(2) - (2)].node)->u3.node = (yyvsp[(1) - (2)].node);
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ fixpos((yyval.node), (yyvsp[(1) - (2)].node));
+ ;}
+ break;
+ case 287:
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 288:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(2) - (6)].node))), (VALUE)((yyvsp[(4) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (6)].node));
+ ;}
+ break;
+ case 289:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(2) - (6)].node))), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)((yyvsp[(4) - (6)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (6)].node));
+ ;}
+ break;
+ case 290:
+ {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
+ break;
+ case 291:
+ {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
+ break;
+ case 292:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_WHILE), (VALUE)(cond_gen(parser, (yyvsp[(3) - (7)].node))), (VALUE)((yyvsp[(6) - (7)].node)), (VALUE)(1));
+ fixpos((yyval.node), (yyvsp[(3) - (7)].node));
+ ;}
+ break;
+ case 293:
+ {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
+ break;
+ case 294:
+ {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
+ break;
+ case 295:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_UNTIL), (VALUE)(cond_gen(parser, (yyvsp[(3) - (7)].node))), (VALUE)((yyvsp[(6) - (7)].node)), (VALUE)(1));
+ fixpos((yyval.node), (yyvsp[(3) - (7)].node));
+ ;}
+ break;
+ case 296:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CASE), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)(0));
+ fixpos((yyval.node), (yyvsp[(2) - (5)].node));
+ ;}
+ break;
+ case 297:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CASE), (VALUE)(0), (VALUE)((yyvsp[(3) - (4)].node)), (VALUE)(0));
+ ;}
+ break;
+ case 298:
+ {((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((1)&1));;}
+ break;
+ case 299:
+ {((parser->parser_cond_stack) = (parser->parser_cond_stack) >> 1);;}
+ break;
+ case 300:
+ {
+ ID id = internal_id_gen(parser);
+ ID *tbl = (ID*)ruby_xmalloc2((2),sizeof(ID));
+ NODE *m = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ NODE *args, *scope;
+ if (((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_MASGN) {
+ NODE *one = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(1))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
+ NODE *zero = node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0));
+ m->u3.node = block_append_gen(parser,node_newnode(parser, (NODE_IF), (VALUE)(node_newnode(parser, (NODE_AND), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))), (VALUE)((__builtin_constant_p("length") ? __extension__ (rb_intern2("length", strlen("length"))) : (rb_intern)("length"))), (VALUE)(0))), (VALUE)((__builtin_constant_p("==") ? __extension__ (rb_intern2("==", strlen("=="))) : (rb_intern)("=="))), (VALUE)(one))), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))), (VALUE)((__builtin_constant_p("[]") ? __extension__ (rb_intern2("[]", strlen("[]"))) : (rb_intern)("[]"))), (VALUE)(zero))), (VALUE)((__builtin_constant_p("kind_of?") ? __extension__ (rb_intern2("kind_of?", strlen("kind_of?"))) : (rb_intern)("kind_of?"))), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(rb_cArray), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0))))), (VALUE)(0))), (VALUE)(node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))), (VALUE)((__builtin_constant_p("[]") ? __extension__ (rb_intern2("[]", strlen("[]"))) : (rb_intern)("[]"))), (VALUE)(zero))), (VALUE)(0))), (VALUE)(0)),node_assign_gen(parser, (yyvsp[(2) - (9)].node), node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0))));
+ args = new_args_gen(parser, m,0,id,0,0);
+ }
+ else {
+ if (((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_LASGN ||
+ ((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DASGN ||
+ ((int) (((((struct RNode*)((yyvsp[(2) - (9)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DASGN_CURR) {
+ (yyvsp[(2) - (9)].node)->u2.node = node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ m->u2.argc = 1;
+ m->u3.node = (yyvsp[(2) - (9)].node);
+ args = new_args_gen(parser, m,0,0,0,0);
+ }
+ else {
+ m->u3.node = node_assign_gen(parser, node_newnode(parser, (NODE_MASGN), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(2) - (9)].node)), (VALUE)(1), (VALUE)(0))), (VALUE)(0), (VALUE)(0)), node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0)));
+ args = new_args_gen(parser, m,0,id,0,0);
+ }
+ }
+ scope = node_newnode(parser, (NODE_SCOPE), (VALUE)(tbl), (VALUE)((yyvsp[(8) - (9)].node)), (VALUE)(args));
+ tbl[0] = 1; tbl[1] = id;
+ (yyval.node) = node_newnode(parser, (NODE_FOR), (VALUE)(0), (VALUE)(scope), (VALUE)((yyvsp[(5) - (9)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (9)].node));
+ ;}
+ break;
+ case 301:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "class definition in method body");
+ local_push_gen(parser,0);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 302:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CLASS), (VALUE)((yyvsp[(2) - (6)].node)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)(0))), (VALUE)(((yyvsp[(3) - (6)].node))));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(4) - (6)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ local_pop_gen(parser);
+ ;}
+ break;
+ case 303:
+ {
+ (yyval.num) = (parser->parser_in_def);
+ (parser->parser_in_def) = 0;
+ ;}
+ break;
+ case 304:
+ {
+ (yyval.num) = (parser->parser_in_single);
+ (parser->parser_in_single) = 0;
+ local_push_gen(parser,0);
+ ;}
+ break;
+ case 305:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_SCLASS), (VALUE)((yyvsp[(3) - (8)].node)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(7) - (8)].node)), (VALUE)(0))), (VALUE)(0));
+ fixpos((yyval.node), (yyvsp[(3) - (8)].node));
+ local_pop_gen(parser);
+ (parser->parser_in_def) = (yyvsp[(4) - (8)].num);
+ (parser->parser_in_single) = (yyvsp[(6) - (8)].num);
+ ;}
+ break;
+ case 306:
+ {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "module definition in method body");
+ local_push_gen(parser,0);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 307:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MODULE), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)(0))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(3) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ local_pop_gen(parser);
+ ;}
+ break;
+ case 308:
+ {
+ (yyval.id) = (parser->parser_cur_mid);
+ (parser->parser_cur_mid) = (yyvsp[(2) - (2)].id);
+ (parser->parser_in_def)++;
+ local_push_gen(parser,0);
+ ;}
+ break;
+ case 309:
+ {
+ NODE *body = remove_begin((yyvsp[(5) - (6)].node));
+ reduce_nodes_gen(parser,&body);
+ (yyval.node) = node_newnode(parser, (NODE_DEFN), (VALUE)(0), (VALUE)((yyvsp[(2) - (6)].id)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)(body), (VALUE)((yyvsp[(4) - (6)].node)))));
+ fixpos((yyval.node), (yyvsp[(4) - (6)].node));
+ fixpos((yyval.node)->u3.node, (yyvsp[(4) - (6)].node));
+ local_pop_gen(parser);
+ (parser->parser_in_def)--;
+ (parser->parser_cur_mid) = (yyvsp[(3) - (6)].id);
+ ;}
+ break;
+ case 310:
+ {(parser->parser_lex_state) = EXPR_FNAME;;}
+ break;
+ case 311:
+ {
+ (parser->parser_in_single)++;
+ (parser->parser_lex_state) = EXPR_END;
+ local_push_gen(parser,0);
+ ;}
+ break;
+ case 312:
+ {
+ NODE *body = remove_begin((yyvsp[(8) - (9)].node));
+ reduce_nodes_gen(parser,&body);
+ (yyval.node) = node_newnode(parser, (NODE_DEFS), (VALUE)((yyvsp[(2) - (9)].node)), (VALUE)((yyvsp[(5) - (9)].id)), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)(body), (VALUE)((yyvsp[(7) - (9)].node)))));
+ fixpos((yyval.node), (yyvsp[(2) - (9)].node));
+ fixpos((yyval.node)->u3.node, (yyvsp[(2) - (9)].node));
+ local_pop_gen(parser);
+ (parser->parser_in_single)--;
+ ;}
+ break;
+ case 313:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_BREAK), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 314:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_NEXT), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 315:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_REDO), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 316:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_RETRY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 317:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 318:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "begin");
+ ;}
+ break;
+ case 319:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "if");
+ ;}
+ break;
+ case 320:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "unless");
+ ;}
+ break;
+ case 321:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "while");
+ ;}
+ break;
+ case 322:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "until");
+ ;}
+ break;
+ case 323:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "case");
+ ;}
+ break;
+ case 324:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "for");
+ ;}
+ break;
+ case 325:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "class");
+ ;}
+ break;
+ case 326:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "module");
+ ;}
+ break;
+ case 327:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_push(parser, "def");
+ ;}
+ break;
+ case 328:
+ {
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) token_info_pop(parser, "end");
+ ;}
+ break;
+ case 335:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_IF), (VALUE)(cond_gen(parser, (yyvsp[(2) - (5)].node))), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (5)].node));
+ ;}
+ break;
+ case 337:
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 340:
+ {
+ (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
+ ;}
+ break;
+ case 341:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 342:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 343:
+ {
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 344:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 345:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(4) - (4)].id), 0)));
+ ;}
+ break;
+ case 346:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (6)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(assignable_gen(parser, (yyvsp[(4) - (6)].id), 0)), (VALUE)((yyvsp[(6) - (6)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 347:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(0), (VALUE)(-1));
+ ;}
+ break;
+ case 348:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)((yyvsp[(1) - (5)].node)), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(5) - (5)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 349:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(2) - (2)].id), 0)));
+ ;}
+ break;
+ case 350:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(assignable_gen(parser, (yyvsp[(2) - (4)].id), 0)), (VALUE)((yyvsp[(4) - (4)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 351:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(-1));
+ ;}
+ break;
+ case 352:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_MASGN), (VALUE)(0), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_POSTARG), (VALUE)(-1), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)(0))));
+ ;}
+ break;
+ case 353:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].id),0,(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 354:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (8)].node),(yyvsp[(3) - (8)].node),(yyvsp[(5) - (8)].id),(yyvsp[(7) - (8)].node),(yyvsp[(8) - (8)].id));
+ ;}
+ break;
+ case 355:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node),0,0,(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 356:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),0,(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 357:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 358:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,1,0,0);
+ ;}
+ break;
+ case 359:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),0,(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 360:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,0,0,(yyvsp[(2) - (2)].id));
+ ;}
+ break;
+ case 361:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 362:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 363:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (2)].node),0,0,(yyvsp[(2) - (2)].id));
+ ;}
+ break;
+ case 364:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 365:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (2)].id),0,(yyvsp[(2) - (2)].id));
+ ;}
+ break;
+ case 366:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (4)].id),(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 367:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,0,0,(yyvsp[(1) - (1)].id));
+ ;}
+ break;
+ case 369:
+ {
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ ;}
+ break;
+ case 370:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 371:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 372:
+ {
+ (yyval.node) = (yyvsp[(2) - (4)].node);
+ ;}
+ break;
+ case 374:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 377:
+ {
+ new_bv_gen(parser, (yyvsp[(1) - (1)].id));
+ ;}
+ break;
+ case 378:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 379:
+ {
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_lpar_beg);
+ (parser->parser_lpar_beg) = ++(parser->parser_paren_nest);
+ ;}
+ break;
+ case 380:
+ {
+ (parser->parser_lpar_beg) = (yyvsp[(1) - (3)].num);
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ (yyval.node)->u2.node = node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(3) - (3)].node)), (VALUE)((yyvsp[(2) - (3)].node)->u1.node));
+ dyna_pop_gen(parser);
+ ;}
+ break;
+ case 381:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_LAMBDA), (VALUE)((yyvsp[(2) - (4)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 382:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_LAMBDA), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 383:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 384:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 385:
+ {
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 386:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ dyna_pop_gen(parser);
+ ;}
+ break;
+ case 387:
+ {
+ if (((int) (((((struct RNode*)((yyvsp[(1) - (2)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_YIELD) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "block given to yield");
+ }
+ else {
+ block_dup_check_gen(parser,(yyvsp[(1) - (2)].node)->u3.node,(yyvsp[(2) - (2)].node));
+ }
+ (yyvsp[(2) - (2)].node)->u3.node = (yyvsp[(1) - (2)].node);
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ fixpos((yyval.node), (yyvsp[(1) - (2)].node));
+ ;}
+ break;
+ case 388:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ ;}
+ break;
+ case 389:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ ;}
+ break;
+ case 390:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((yyvsp[(1) - (2)].id)), (VALUE)((yyvsp[(2) - (2)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 391:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+ ;}
+ break;
+ case 392:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)((yyvsp[(3) - (4)].id)), (VALUE)((yyvsp[(4) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+ ;}
+ break;
+ case 393:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((yyvsp[(3) - (3)].id)), (VALUE)(0));
+ ;}
+ break;
+ case 394:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((__builtin_constant_p("call") ? __extension__ (rb_intern2("call", strlen("call"))) : (rb_intern)("call"))), (VALUE)((yyvsp[(3) - (3)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (3)].node));
+ ;}
+ break;
+ case 395:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)((__builtin_constant_p("call") ? __extension__ (rb_intern2("call", strlen("call"))) : (rb_intern)("call"))), (VALUE)((yyvsp[(3) - (3)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (3)].node));
+ ;}
+ break;
+ case 396:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_SUPER), (VALUE)(0), (VALUE)(0), (VALUE)((yyvsp[(2) - (2)].node)));
+ ;}
+ break;
+ case 397:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ZSUPER), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 398:
+ {
+ if ((yyvsp[(1) - (4)].node) && ((int) (((((struct RNode*)((yyvsp[(1) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
+ (yyval.node) = node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)(336), (VALUE)((yyvsp[(3) - (4)].node)));
+ else
+ (yyval.node) = node_newnode(parser, (NODE_CALL), (VALUE)((yyvsp[(1) - (4)].node)), (VALUE)(336), (VALUE)((yyvsp[(3) - (4)].node)));
+ fixpos((yyval.node), (yyvsp[(1) - (4)].node));
+ ;}
+ break;
+ case 399:
+ {
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 400:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ ((struct RNode*)((yyval.node)->u2.node))->flags=((((struct RNode*)((yyval.node)->u2.node))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ ((struct RNode*)((yyval.node)->u2.node->u2.node))->flags=((((struct RNode*)((yyval.node)->u2.node->u2.node))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ dyna_pop_gen(parser);
+ ;}
+ break;
+ case 401:
+ {
+ dyna_push_gen(parser);
+ (yyval.num) = (parser->parser_ruby_sourceline);
+ ;}
+ break;
+ case 402:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ITER), (VALUE)(0), (VALUE)(node_newnode(parser, (NODE_SCOPE), (VALUE)(local_tbl_gen(parser)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(3) - (5)].node)))), (VALUE)(0));
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(-1<<(8 +7)))|((((yyvsp[(2) - (5)].num))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ dyna_pop_gen(parser);
+ ;}
+ break;
+ case 403:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_WHEN), (VALUE)((yyvsp[(2) - (5)].node)), (VALUE)((yyvsp[(4) - (5)].node)), (VALUE)((yyvsp[(5) - (5)].node)));
+ ;}
+ break;
+ case 406:
+ {
+ if ((yyvsp[(3) - (6)].node)) {
+ (yyvsp[(3) - (6)].node) = node_assign_gen(parser, (yyvsp[(3) - (6)].node), node_newnode(parser, (NODE_ERRINFO), (VALUE)(0), (VALUE)(0), (VALUE)(0)));
+ (yyvsp[(5) - (6)].node) = block_append_gen(parser,(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].node));
+ }
+ (yyval.node) = node_newnode(parser, (NODE_RESBODY), (VALUE)((yyvsp[(6) - (6)].node)), (VALUE)((yyvsp[(5) - (6)].node)), (VALUE)((yyvsp[(2) - (6)].node)));
+ fixpos((yyval.node), (yyvsp[(2) - (6)].node)?(yyvsp[(2) - (6)].node):(yyvsp[(5) - (6)].node));
+ ;}
+ break;
+ case 408:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (1)].node)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 409:
+ {
+ if (!((yyval.node) = splat_array((yyvsp[(1) - (1)].node)))) (yyval.node) = (yyvsp[(1) - (1)].node);
+ ;}
+ break;
+ case 411:
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 413:
+ {
+ (yyval.node) = (yyvsp[(2) - (2)].node);
+ ;}
+ break;
+ case 416:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (1)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 418:
+ {
+ NODE *node = (yyvsp[(1) - (1)].node);
+ if (!node) {
+ node = node_newnode(parser, (NODE_STR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ node = evstr2dstr_gen(parser,node);
+ }
+ (yyval.node) = node;
+ ;}
+ break;
+ case 421:
+ {
+ (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 422:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 423:
+ {
+ NODE *node = (yyvsp[(2) - (3)].node);
+ if (!node) {
+ node = node_newnode(parser, (NODE_XSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR:
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_XSTR)<<8)&(((VALUE)0x7f)<<8)));
+ break;
+ case NODE_DSTR:
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DXSTR)<<8)&(((VALUE)0x7f)<<8)));
+ break;
+ default:
+ node = node_newnode(parser, (NODE_DXSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node), (VALUE)(1), (VALUE)(0))));
+ break;
+ }
+ }
+ (yyval.node) = node;
+ ;}
+ break;
+ case 424:
+ {
+ int options = (yyvsp[(3) - (3)].num);
+ NODE *node = (yyvsp[(2) - (3)].node);
+ NODE *list;
+ if (!node) {
+ node = node_newnode(parser, (NODE_LIT), (VALUE)(reg_compile_gen(parser, rb_enc_str_new(0,0,parser->enc), options)), (VALUE)(0), (VALUE)(0));
+ }
+ else switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR:
+ {
+ VALUE src = node->u1.value;
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
+ node->u1.value = reg_compile_gen(parser, src, options);
+ }
+ break;
+ default:
+ node = node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node), (VALUE)(1), (VALUE)(0))));
+ case NODE_DSTR:
+ if (options & (1<<16)) {
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DREGX_ONCE)<<8)&(((VALUE)0x7f)<<8)));
+ }
+ else {
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DREGX)<<8)&(((VALUE)0x7f)<<8)));
+ }
+ node->u2.id = options & 0xff;
+ reg_fragment_check_gen(parser, node->u1.value, options);
+ for (list = node->u3.node; list; list = list->u3.node) {
+ if (((int) (((((struct RNode*)(list->u1.node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_STR) {
+ reg_fragment_check_gen(parser, list->u1.node->u1.value, options);
+ }
+ }
+ break;
+ }
+ (yyval.node) = node;
+ ;}
+ break;
+ case 425:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 426:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 427:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 428:
+ {
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),evstr2dstr_gen(parser,(yyvsp[(2) - (3)].node)));
+ ;}
+ break;
+ case 430:
+ {
+ (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 431:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_ZARRAY), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 432:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 433:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 434:
+ {
+ (yyval.node) = list_append_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(2) - (3)].node));
+ ;}
+ break;
+ case 435:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 436:
+ {
+ (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 437:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 438:
+ {
+ (yyval.node) = literal_concat_gen(parser,(yyvsp[(1) - (2)].node),(yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 440:
+ {
+ (yyval.node) = (parser->parser_lex_strterm);
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_state) = EXPR_BEG;
+ ;}
+ break;
+ case 441:
+ {
+ (parser->parser_lex_strterm) = (yyvsp[(2) - (3)].node);
+ (yyval.node) = node_newnode(parser, (NODE_EVSTR), (VALUE)(0), (VALUE)(((yyvsp[(3) - (3)].node))), (VALUE)(0));
+ ;}
+ break;
+ case 442:
+ {
+ (yyval.node) = (parser->parser_lex_strterm);
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_state) = EXPR_BEG;
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
+ ;}
+ break;
+ case 443:
+ {
+ (parser->parser_lex_strterm) = (yyvsp[(2) - (4)].node);
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack) >> 1) | ((parser->parser_cond_stack) & 1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack) >> 1) | ((parser->parser_cmdarg_stack) & 1));
+ if ((yyvsp[(3) - (4)].node)) (yyvsp[(3) - (4)].node)->flags &= ~(((VALUE)1)<<7);
+ (yyval.node) = new_evstr_gen(parser,(yyvsp[(3) - (4)].node));
+ ;}
+ break;
+ case 444:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_GVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(rb_global_entry((yyvsp[(1) - (1)].id))));
+ ;}
+ break;
+ case 445:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_IVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 446:
+ {
+ (yyval.node) = node_newnode(parser, (NODE_CVAR), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 448:
+ {
+ (parser->parser_lex_state) = EXPR_END;
+ (yyval.id) = (yyvsp[(2) - (2)].id);
+ ;}
+ break;
+ case 453:
+ {
+ (parser->parser_lex_state) = EXPR_END;
+ if (!((yyval.node) = (yyvsp[(2) - (3)].node))) {
+ (yyval.node) = node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((__builtin_constant_p("") ? __extension__ (rb_intern2("", strlen(""))) : (rb_intern)("")))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ VALUE lit;
+ switch (((int) (((((struct RNode*)((yyval.node))))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DSTR:
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DSYM)<<8)&(((VALUE)0x7f)<<8)));
+ break;
+ case NODE_STR:
+ lit = (yyval.node)->u1.value;
+ (yyval.node)->u1.value = (((VALUE)(rb_intern_str(lit))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG);
+ ((struct RNode*)((yyval.node)))->flags=((((struct RNode*)((yyval.node)))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
+ break;
+ default:
+ (yyval.node) = node_newnode(parser, (NODE_DSYM), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)((yyval.node)), (VALUE)(1), (VALUE)(0))));
+ break;
+ }
+ }
+ ;}
+ break;
+ case 456:
+ {
+ (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 457:
+ {
+ (yyval.node) = negate_lit((yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 463:
+ {(yyval.id) = 289;;}
+ break;
+ case 464:
+ {(yyval.id) = 288;;}
+ break;
+ case 465:
+ {(yyval.id) = 290;;}
+ break;
+ case 466:
+ {(yyval.id) = 291;;}
+ break;
+ case 467:
+ {(yyval.id) = 305;;}
+ break;
+ case 468:
+ {(yyval.id) = 304;;}
+ break;
+ case 469:
+ {(yyval.id) = 306;;}
+ break;
+ case 470:
+ {
+ if (!((yyval.node) = gettable_gen(parser,(yyvsp[(1) - (1)].id)))) (yyval.node) = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 471:
+ {
+ (yyval.node) = assignable_gen(parser, (yyvsp[(1) - (1)].id), 0);
+ ;}
+ break;
+ case 474:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 475:
+ {
+ (parser->parser_lex_state) = EXPR_BEG;
+ ;}
+ break;
+ case 476:
+ {
+ (yyval.node) = (yyvsp[(3) - (4)].node);
+ ;}
+ break;
+ case 477:
+ {
+ (yyerrstatus = 0);
+ (yyval.node) = 0;
+ ;}
+ break;
+ case 478:
+ {
+ (yyval.node) = (yyvsp[(2) - (3)].node);
+ (parser->parser_lex_state) = EXPR_BEG;
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ ;}
+ break;
+ case 479:
+ {
+ (yyval.node) = (yyvsp[(1) - (2)].node);
+ ;}
+ break;
+ case 480:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),(yyvsp[(5) - (6)].id),0,(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 481:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (8)].node),(yyvsp[(3) - (8)].node),(yyvsp[(5) - (8)].id),(yyvsp[(7) - (8)].node),(yyvsp[(8) - (8)].id));
+ ;}
+ break;
+ case 482:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].node),0,0,(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 483:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].node),0,(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 484:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 485:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (6)].node),0,(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 486:
+ {
+ (yyval.node) = new_args_gen(parser, (yyvsp[(1) - (2)].node),0,0,0,(yyvsp[(2) - (2)].id));
+ ;}
+ break;
+ case 487:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),(yyvsp[(3) - (4)].id),0,(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 488:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (6)].node),(yyvsp[(3) - (6)].id),(yyvsp[(5) - (6)].node),(yyvsp[(6) - (6)].id));
+ ;}
+ break;
+ case 489:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (2)].node),0,0,(yyvsp[(2) - (2)].id));
+ ;}
+ break;
+ case 490:
+ {
+ (yyval.node) = new_args_gen(parser, 0,(yyvsp[(1) - (4)].node),0,(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 491:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (2)].id),0,(yyvsp[(2) - (2)].id));
+ ;}
+ break;
+ case 492:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,(yyvsp[(1) - (4)].id),(yyvsp[(3) - (4)].node),(yyvsp[(4) - (4)].id));
+ ;}
+ break;
+ case 493:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,0,0,(yyvsp[(1) - (1)].id));
+ ;}
+ break;
+ case 494:
+ {
+ (yyval.node) = new_args_gen(parser, 0,0,0,0,0);
+ ;}
+ break;
+ case 495:
+ {
+ parser_yyerror(parser, "formal argument cannot be a constant");
+ (yyval.id) = 0;
+ ;}
+ break;
+ case 496:
+ {
+ parser_yyerror(parser, "formal argument cannot be an instance variable");
+ (yyval.id) = 0;
+ ;}
+ break;
+ case 497:
+ {
+ parser_yyerror(parser, "formal argument cannot be a global variable");
+ (yyval.id) = 0;
+ ;}
+ break;
+ case 498:
+ {
+ parser_yyerror(parser, "formal argument cannot be a class variable");
+ (yyval.id) = 0;
+ ;}
+ break;
+ case 500:
+ {
+ if (!((((yyvsp[(1) - (1)].id))>376)&&(((yyvsp[(1) - (1)].id))&0x07)==0x00))
+ parser_yyerror(parser, "formal argument must be local variable");
+ shadowing_lvar_gen(parser, (yyvsp[(1) - (1)].id));
+ (yyval.id) = (yyvsp[(1) - (1)].id);
+ ;}
+ break;
+ case 501:
+ {
+ arg_var_gen(parser, (yyvsp[(1) - (1)].id));
+ (yyval.node) = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)((yyvsp[(1) - (1)].id)), (VALUE)(1), (VALUE)(0));
+ ;}
+ break;
+ case 502:
+ {
+ ID tid = internal_id_gen(parser);
+ arg_var_gen(parser, tid);
+ if (dyna_in_block_gen(parser)) {
+ (yyvsp[(2) - (3)].node)->u2.node = node_newnode(parser, (NODE_DVAR), (VALUE)(tid), (VALUE)(0), (VALUE)(0));
+ }
+ else {
+ (yyvsp[(2) - (3)].node)->u2.node = node_newnode(parser, (NODE_LVAR), (VALUE)(tid), (VALUE)(0), (VALUE)(0));
+ }
+ (yyval.node) = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(tid), (VALUE)(1), (VALUE)(0));
+ (yyval.node)->u3.node = (yyvsp[(2) - (3)].node);
+ ;}
+ break;
+ case 504:
+ {
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ (yyval.node)->u2.argc++;
+ (yyval.node)->u3.node = block_append_gen(parser,(yyval.node)->u3.node,(yyvsp[(3) - (3)].node)->u3.node);
+ rb_gc_force_recycle((VALUE)(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 505:
+ {
+ if (!((((yyvsp[(1) - (3)].id))>376)&&(((yyvsp[(1) - (3)].id))&0x07)==0x00))
+ parser_yyerror(parser, "formal argument must be local variable");
+ shadowing_lvar_gen(parser, (yyvsp[(1) - (3)].id));
+ arg_var_gen(parser, (yyvsp[(1) - (3)].id));
+ (yyval.node) = node_newnode(parser, (NODE_OPT_ARG), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].node))), (VALUE)(0));
+ ;}
+ break;
+ case 506:
+ {
+ if (!((((yyvsp[(1) - (3)].id))>376)&&(((yyvsp[(1) - (3)].id))&0x07)==0x00))
+ parser_yyerror(parser, "formal argument must be local variable");
+ shadowing_lvar_gen(parser, (yyvsp[(1) - (3)].id));
+ arg_var_gen(parser, (yyvsp[(1) - (3)].id));
+ (yyval.node) = node_newnode(parser, (NODE_OPT_ARG), (VALUE)(0), (VALUE)(assignable_gen(parser, (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].node))), (VALUE)(0));
+ ;}
+ break;
+ case 507:
+ {
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ ;}
+ break;
+ case 508:
+ {
+ NODE *opts = (yyvsp[(1) - (3)].node);
+ while (opts->u3.node) {
+ opts = opts->u3.node;
+ }
+ opts->u3.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ ;}
+ break;
+ case 509:
+ {
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ ;}
+ break;
+ case 510:
+ {
+ NODE *opts = (yyvsp[(1) - (3)].node);
+ while (opts->u3.node) {
+ opts = opts->u3.node;
+ }
+ opts->u3.node = (yyvsp[(3) - (3)].node);
+ (yyval.node) = (yyvsp[(1) - (3)].node);
+ ;}
+ break;
+ case 513:
+ {
+ if (!((((yyvsp[(2) - (2)].id))>376)&&(((yyvsp[(2) - (2)].id))&0x07)==0x00))
+ parser_yyerror(parser, "rest argument must be local variable");
+ shadowing_lvar_gen(parser, (yyvsp[(2) - (2)].id));
+ arg_var_gen(parser, (yyvsp[(2) - (2)].id));
+ (yyval.id) = (yyvsp[(2) - (2)].id);
+ ;}
+ break;
+ case 514:
+ {
+ (yyval.id) = internal_id_gen(parser);
+ arg_var_gen(parser, (yyval.id));
+ ;}
+ break;
+ case 517:
+ {
+ if (!((((yyvsp[(2) - (2)].id))>376)&&(((yyvsp[(2) - (2)].id))&0x07)==0x00))
+ parser_yyerror(parser, "block argument must be local variable");
+ else if (!dyna_in_block_gen(parser) && local_id_gen(parser, (yyvsp[(2) - (2)].id)))
+ parser_yyerror(parser, "duplicated block argument name");
+ shadowing_lvar_gen(parser, (yyvsp[(2) - (2)].id));
+ arg_var_gen(parser, (yyvsp[(2) - (2)].id));
+ (yyval.id) = (yyvsp[(2) - (2)].id);
+ ;}
+ break;
+ case 518:
+ {
+ (yyval.id) = (yyvsp[(2) - (2)].id);
+ ;}
+ break;
+ case 519:
+ {
+ (yyval.id) = 0;
+ ;}
+ break;
+ case 520:
+ {
+ value_expr_gen(parser, ((yyvsp[(1) - (1)].node)) = remove_begin((yyvsp[(1) - (1)].node)));
+ (yyval.node) = (yyvsp[(1) - (1)].node);
+ if (!(yyval.node)) (yyval.node) = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ ;}
+ break;
+ case 521:
+ {(parser->parser_lex_state) = EXPR_BEG;;}
+ break;
+ case 522:
+ {
+ if ((yyvsp[(3) - (4)].node) == 0) {
+ parser_yyerror(parser, "can't define singleton method for ().");
+ }
+ else {
+ switch (((int) (((((struct RNode*)((yyvsp[(3) - (4)].node))))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR:
+ case NODE_DSTR:
+ case NODE_XSTR:
+ case NODE_DXSTR:
+ case NODE_DREGX:
+ case NODE_LIT:
+ case NODE_ARRAY:
+ case NODE_ZARRAY:
+ parser_yyerror(parser, "can't define singleton method for literals");
+ default:
+ value_expr_gen(parser, ((yyvsp[(3) - (4)].node)) = remove_begin((yyvsp[(3) - (4)].node)));
+ break;
+ }
+ }
+ (yyval.node) = (yyvsp[(3) - (4)].node);
+ ;}
+ break;
+ case 524:
+ {
+ (yyval.node) = (yyvsp[(1) - (2)].node);
+ ;}
+ break;
+ case 526:
+ {
+ (yyval.node) = list_concat_gen(parser,(yyvsp[(1) - (3)].node),(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 527:
+ {
+ (yyval.node) = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)((yyvsp[(1) - (3)].node)), (VALUE)(1), (VALUE)(0)),(yyvsp[(3) - (3)].node));
+ ;}
+ break;
+ case 528:
+ {
+ (yyval.node) = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)((yyvsp[(1) - (2)].id))<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0)),(yyvsp[(2) - (2)].node));
+ ;}
+ break;
+ case 550:
+ {(yyerrstatus = 0);;}
+ break;
+ case 553:
+ {(yyerrstatus = 0);;}
+ break;
+ case 554:
+ {
+ (yyval.node) = 0;
+ ;}
+ break;
+ default: break;
+ }
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "-> $$ ="); yy_symbol_print (stderr, yyr1[yyn], &yyval, parser); fprintf (stderr, "\n"); } } while ((0));
+ (yyvsp -= (yylen), yyssp -= (yylen));
+ yylen = 0;
+ do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
+ *++yyvsp = yyval;
+ yyn = yyr1[yyn];
+ yystate = yypgoto[yyn - 149] + *yyssp;
+ if (0 <= yystate && yystate <= 10225 && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - 149];
+ goto yynewstate;
+yyerrlab:
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+ {
+ unsigned int yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < ((unsigned int) -1))
+ {
+ unsigned int yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= ((unsigned int) -1)))
+ yyalloc = ((unsigned int) -1);
+ if (yymsg != yymsgbuf)
+ rb_parser_free(parser, yymsg);
+ yymsg = (char *) rb_parser_malloc(parser, yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ parser_yyerror (parser, yymsg);
+ }
+ else
+ {
+ parser_yyerror (parser, "syntax error");
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+ }
+ if (yyerrstatus == 3)
+ {
+ if (yychar <= 0)
+ {
+ if (yychar == 0)
+ goto yyabortlab;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval, parser);
+ yychar = (-2);
+ }
+ }
+ goto yyerrlab1;
+yyerrorlab:
+ if ( 0)
+ goto yyerrorlab;
+ (yyvsp -= (yylen), yyssp -= (yylen));
+ yylen = 0;
+ do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
+ yystate = *yyssp;
+ goto yyerrlab1;
+yyerrlab1:
+ yyerrstatus = 3;
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (yyn != -747)
+ {
+ yyn += 1;
+ if (0 <= yyn && yyn <= 10225 && yycheck[yyn] == 1)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+ if (yyssp == yyss)
+ goto yyabortlab;
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp, parser);
+ (yyvsp -= (1), yyssp -= (1));
+ yystate = *yyssp;
+ do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
+ }
+ if (yyn == 3)
+ goto yyacceptlab;
+ *++yyvsp = yylval;
+ do { if ((parser->parser_yydebug)) { fprintf (stderr, "%s ", "Shifting"); yy_symbol_print (stderr, yystos[yyn], yyvsp, parser); fprintf (stderr, "\n"); } } while ((0));
+ yystate = yyn;
+ goto yynewstate;
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+yyexhaustedlab:
+ parser_yyerror (parser, "memory exhausted");
+ yyresult = 2;
+yyreturn:
+ if (yychar != 0 && yychar != (-2))
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval, parser);
+ (yyvsp -= (yylen), yyssp -= (yylen));
+ do { if ((parser->parser_yydebug)) yy_stack_print ((yyss), (yyssp)); } while ((0));
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp, parser);
+ (yyvsp -= (1), yyssp -= (1));
+ }
+ if (yyss != yyssa)
+ rb_parser_free(parser, yyss);
+ if (yymsg != yymsgbuf)
+ rb_parser_free(parser, yymsg);
+ return (yyresult);
+}
+static int parser_regx_options(struct parser_params*);
+static int parser_tokadd_string(struct parser_params*,int,int,int,long*,rb_encoding**);
+static void parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc);
+static int parser_parse_string(struct parser_params*,NODE*);
+static int parser_here_document(struct parser_params*,NODE*);
+extern OnigEncoding OnigEncDefaultCharEncoding;
+unsigned long ruby_scan_oct(const char *, int, int *);
+unsigned long ruby_scan_hex(const char *, int, int *);
+void ruby_qsort(void *, const int, const int,
+ int (*)(const void *, const void *, void *), void *);
+void ruby_setenv(const char *, const char *);
+void ruby_unsetenv(const char *);
+char *ruby_strdup(const char *);
+char *ruby_getcwd(void);
+double ruby_strtod(const char *, char **);
+void ruby_each_words(const char *, void (*)(const char*, int, void*), void *);
+static int
+token_info_get_column(struct parser_params *parser, const char *token)
+{
+ int column = 1;
+ const char *p, *pend = (parser->parser_lex_p) - strlen(token);
+ for (p = (parser->parser_lex_pbeg); p < pend; p++) {
+ if (*p == '\t') {
+ column = (((column - 1) / 8) + 1) * 8;
+ }
+ column++;
+ }
+ return column;
+}
+static int
+token_info_has_nonspaces(struct parser_params *parser, const char *token)
+{
+ const char *p, *pend = (parser->parser_lex_p) - strlen(token);
+ for (p = (parser->parser_lex_pbeg); p < pend; p++) {
+ if (*p != ' ' && *p != '\t') {
+ return 1;
+ }
+ }
+ return 0;
+}
+static void
+token_info_push(struct parser_params *parser, const char *token)
+{
+ token_info *ptinfo;
+ if ((parser->parser_compile_for_eval)) return;
+ ptinfo = (token_info*)ruby_xmalloc(sizeof(token_info));
+ ptinfo->token = token;
+ ptinfo->linenum = (parser->parser_ruby_sourceline);
+ ptinfo->column = token_info_get_column(parser, token);
+ ptinfo->nonspc = token_info_has_nonspaces(parser, token);
+ ptinfo->next = parser->parser_token_info;
+ parser->parser_token_info = ptinfo;
+}
+static void
+token_info_pop(struct parser_params *parser, const char *token)
+{
+ int linenum;
+ token_info *ptinfo = parser->parser_token_info;
+ if (!ptinfo) return;
+ parser->parser_token_info = ptinfo->next;
+ if (token_info_get_column(parser, token) == ptinfo->column) {
+ goto finish;
+ }
+ linenum = (parser->parser_ruby_sourceline);
+ if (linenum == ptinfo->linenum) {
+ goto finish;
+ }
+ if (token_info_has_nonspaces(parser, token) || ptinfo->nonspc) {
+ goto finish;
+ }
+ rb_compile_warning((parser->parser_ruby_sourcefile), linenum,
+ "mismatched indentations at '%s' with '%s' at %d",
+ token, ptinfo->token, ptinfo->linenum);
+ finish:
+ ruby_xfree(ptinfo);
+}
+static int
+parser_yyerror(struct parser_params *parser, const char *msg)
+{
+ const int max_line_margin = 30;
+ const char *p, *pe;
+ char *buf;
+ int len, i;
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", msg);
+ p = (parser->parser_lex_p);
+ while ((parser->parser_lex_pbeg) <= p) {
+ if (*p == '\n') break;
+ p--;
+ }
+ p++;
+ pe = (parser->parser_lex_p);
+ while (pe < (parser->parser_lex_pend)) {
+ if (*pe == '\n') break;
+ pe++;
+ }
+ len = pe - p;
+ if (len > 4) {
+ char *p2;
+ const char *pre = "", *post = "";
+ if (len > max_line_margin * 2 + 10) {
+ if ((parser->parser_lex_p) - p > max_line_margin) {
+ p = (char *)onigenc_get_prev_char_head(rb_enc_get((parser->parser_lex_lastline)),(OnigUChar*)(p),(OnigUChar*)((parser->parser_lex_p) - max_line_margin),(OnigUChar*)(pe));
+ pre = "...";
+ }
+ if (pe - (parser->parser_lex_p) > max_line_margin) {
+ pe = (char *)onigenc_get_prev_char_head(rb_enc_get((parser->parser_lex_lastline)),(OnigUChar*)((parser->parser_lex_p)),(OnigUChar*)((parser->parser_lex_p) + max_line_margin),(OnigUChar*)(pe));
+ post = "...";
+ }
+ len = pe - p;
+ }
+ buf = (char*)__builtin_alloca (sizeof(char)*(len+2));
+ memcpy((buf), (p), sizeof(char)*(len));
+ buf[len] = '\0';
+ rb_compile_error_append("%s%s%s", pre, buf, post);
+ i = (parser->parser_lex_p) - p;
+ p2 = buf; pe = buf + len;
+ while (p2 < pe) {
+ if (*p2 != '\t') *p2 = ' ';
+ p2++;
+ }
+ buf[i] = '^';
+ buf[i+1] = '\0';
+ rb_compile_error_append("%s%s", pre, buf);
+ }
+ return 0;
+}
+static void parser_prepare(struct parser_params *parser);
+VALUE ruby_suppress_tracing(VALUE (*func)(VALUE, int), VALUE arg, int always);
+static VALUE
+debug_lines(const char *f)
+{
+ if (rb_const_defined_at(rb_cObject, (__builtin_constant_p("SCRIPT_LINES__") ? __extension__ (rb_intern2("SCRIPT_LINES__", strlen("SCRIPT_LINES__"))) : (rb_intern)("SCRIPT_LINES__")))) {
+ VALUE hash = rb_const_get_at(rb_cObject, (__builtin_constant_p("SCRIPT_LINES__") ? __extension__ (rb_intern2("SCRIPT_LINES__", strlen("SCRIPT_LINES__"))) : (rb_intern)("SCRIPT_LINES__")));
+ if (rb_type((VALUE)(hash)) == RUBY_T_HASH) {
+ VALUE fname = __extension__ ( { (__builtin_constant_p(f)) ? rb_str_new(f, strlen(f)) : rb_str_new_cstr(f); });
+ VALUE lines = rb_ary_new();
+ rb_hash_aset(hash, fname, lines);
+ return lines;
+ }
+ }
+ return 0;
+}
+static VALUE
+coverage(const char *f, int n)
+{
+ extern VALUE rb_get_coverages(void);
+ VALUE coverages = rb_get_coverages();
+ if ((((VALUE)(coverages) & ~((VALUE)RUBY_Qnil)) != 0) && ((struct RBasic*)(coverages))->klass == 0) {
+ VALUE fname = __extension__ ( { (__builtin_constant_p(f)) ? rb_str_new(f, strlen(f)) : rb_str_new_cstr(f); });
+ VALUE lines = rb_ary_new2(n);
+ int i;
+ ((struct RBasic*)(lines))->klass = 0;
+ for (i = 0; i < n; i++) ((((struct RBasic*)(lines))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RArray*)(lines))->as.ary : ((struct RArray*)(lines))->as.heap.ptr)[i] = ((VALUE)RUBY_Qnil);
+ ((struct RArray*)(lines))->as.heap.len = n;
+ rb_hash_aset(coverages, fname, lines);
+ return lines;
+ }
+ return 0;
+}
+static int
+e_option_supplied(struct parser_params *parser)
+{
+ if (__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((parser->parser_ruby_sourcefile)) && __builtin_constant_p ("-e") && (__s1_len = strlen ((parser->parser_ruby_sourcefile)), __s2_len = strlen ("-e"), (!((size_t)(const void *)(((parser->parser_ruby_sourcefile)) + 1) - (size_t)(const void *)((parser->parser_ruby_sourcefile)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("-e") + 1) - (size_t)(const void *)("-e") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e") : (__builtin_constant_p ((parser->parser_ruby_sourcefile)) && ((size_t)(const void *)(((parser->parser_ruby_sourcefile)) + 1) - (size_t)(const void *)((parser->parser_ruby_sourcefile)) == 1) && (__s1_len = strlen ((parser->parser_ruby_sourcefile)), __s1_len < 4) ? (__builtin_constant_p ("-e") && ((size_t)(const void *)(("-e") + 1) - (size_t)(const void *)("-e") == 1) ? __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("-e"); register int __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("-e") && ((size_t)(const void *)(("-e") + 1) - (size_t)(const void *)("-e") == 1) && (__s2_len = strlen ("-e"), __s2_len < 4) ? (__builtin_constant_p ((parser->parser_ruby_sourcefile)) && ((size_t)(const void *)(((parser->parser_ruby_sourcefile)) + 1) - (size_t)(const void *)((parser->parser_ruby_sourcefile)) == 1) ? __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((parser->parser_ruby_sourcefile)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("-e"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("-e"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("-e"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("-e"))[3]); } } __result; }))) : __builtin_strcmp ((parser->parser_ruby_sourcefile), "-e")))); }) == 0)
+ return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+static VALUE
+yycompile0(VALUE arg, int tracing)
+{
+ int n;
+ NODE *tree;
+ struct parser_params *parser = (struct parser_params *)arg;
+ if (!(parser->parser_compile_for_eval) && rb_safe_level() == 0) {
+ (parser->debug_lines) = debug_lines((parser->parser_ruby_sourcefile));
+ if ((parser->debug_lines) && (parser->parser_ruby_sourceline) > 0) {
+ VALUE str = rb_enc_str_new(0,0,parser->enc);
+ n = (parser->parser_ruby_sourceline);
+ do {
+ rb_ary_push((parser->debug_lines), str);
+ } while (--n);
+ }
+ if (!e_option_supplied(parser)) {
+ (parser->coverage) = coverage((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline));
+ }
+ }
+ parser_prepare(parser);
+ (parser->parser_deferred_nodes) = 0;
+ n = ruby_yyparse((void*)parser);
+ (parser->debug_lines) = 0;
+ (parser->coverage) = 0;
+ (parser->parser_compile_for_eval) = 0;
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_p) = (parser->parser_lex_pbeg) = (parser->parser_lex_pend) = 0;
+ (parser->parser_lex_lastline) = (parser->parser_lex_nextline) = 0;
+ if (parser->nerr) {
+ return 0;
+ }
+ tree = (parser->parser_eval_tree);
+ if (!tree) {
+ tree = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ if ((parser->parser_eval_tree_begin)) {
+ NODE *scope = (parser->parser_eval_tree);
+ if (scope) {
+ scope->u2.node = node_newnode(parser, (NODE_PRELUDE), (VALUE)((parser->parser_eval_tree_begin)), (VALUE)(scope->u2.node), (VALUE)(0));
+ }
+ tree = scope;
+ }
+ else {
+ tree = (parser->parser_eval_tree);
+ }
+ return (VALUE)tree;
+}
+static NODE*
+yycompile(struct parser_params *parser, const char *f, int line)
+{
+ (parser->parser_ruby_sourcefile) = ruby_strdup(f);
+ (parser->parser_ruby_sourceline) = line - 1;
+ return (NODE *)ruby_suppress_tracing(yycompile0, (VALUE)parser, ((VALUE)RUBY_Qtrue));
+}
+static VALUE
+lex_get_str(struct parser_params *parser, VALUE s)
+{
+ char *beg, *end, *pend;
+ beg = (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr);
+ if ((parser->parser_lex_gets_ptr)) {
+ if ((!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(s))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(s))->as.heap.len) == (parser->parser_lex_gets_ptr)) return ((VALUE)RUBY_Qnil);
+ beg += (parser->parser_lex_gets_ptr);
+ }
+ pend = (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr) + (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(s))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(s))->as.heap.len);
+ end = beg;
+ while (end < pend) {
+ if (*end++ == '\n') break;
+ }
+ (parser->parser_lex_gets_ptr) = end - (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr);
+ return rb_enc_str_new(beg, end - beg, rb_enc_get(s));
+}
+static VALUE
+lex_getline(struct parser_params *parser)
+{
+ VALUE line = (*parser->parser_lex_gets)(parser, parser->parser_lex_input);
+ if ((parser->debug_lines) && !((VALUE)(line) == ((VALUE)RUBY_Qnil))) {
+ rb_ary_push((parser->debug_lines), line);
+ }
+ if ((parser->coverage) && !((VALUE)(line) == ((VALUE)RUBY_Qnil))) {
+ rb_ary_push((parser->coverage), ((VALUE)RUBY_Qnil));
+ }
+ return line;
+}
+NODE*
+rb_compile_string(const char *f, VALUE s, int line)
+{
+ VALUE volatile vparser = rb_parser_new();
+ return rb_parser_compile_string(vparser, f, s, line);
+}
+NODE*
+rb_parser_compile_string(volatile VALUE vparser, const char *f, VALUE s, int line)
+{
+ struct parser_params *parser;
+ NODE *node;
+ volatile VALUE tmp;
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ (parser->parser_lex_gets) = lex_get_str;
+ (parser->parser_lex_gets_ptr) = 0;
+ (parser->parser_lex_input) = s;
+ (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (parser->parser_lex_pend) = 0;
+ (parser->parser_compile_for_eval) = rb_parse_in_eval();
+ node = yycompile(parser, f, line);
+ tmp = vparser;
+ return node;
+}
+NODE*
+rb_compile_cstr(const char *f, const char *s, int len, int line)
+{
+ return rb_compile_string(f, rb_str_new(s, len), line);
+}
+NODE*
+rb_parser_compile_cstr(volatile VALUE vparser, const char *f, const char *s, int len, int line)
+{
+ return rb_parser_compile_string(vparser, f, rb_str_new(s, len), line);
+}
+static VALUE
+lex_io_gets(struct parser_params *parser, VALUE io)
+{
+ return rb_io_gets(io);
+}
+NODE*
+rb_compile_file(const char *f, VALUE file, int start)
+{
+ VALUE volatile vparser = rb_parser_new();
+ return rb_parser_compile_file(vparser, f, file, start);
+}
+NODE*
+rb_parser_compile_file(volatile VALUE vparser, const char *f, VALUE file, int start)
+{
+ struct parser_params *parser;
+ volatile VALUE tmp;
+ NODE *node;
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ (parser->parser_lex_gets) = lex_io_gets;
+ (parser->parser_lex_input) = file;
+ (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (parser->parser_lex_pend) = 0;
+ (parser->parser_compile_for_eval) = rb_parse_in_eval();
+ node = yycompile(parser, f, start);
+ tmp = vparser;
+ return node;
+}
+enum string_type {
+ str_squote = (0),
+ str_dquote = (0x02),
+ str_xquote = (0x02),
+ str_regexp = (0x04|0x01|0x02),
+ str_sword = (0x08),
+ str_dword = (0x08|0x02),
+ str_ssym = (0x10),
+ str_dsym = (0x10|0x02)
+};
+static VALUE
+parser_str_new(const char *p, long n, rb_encoding *enc, int func, rb_encoding *enc0)
+{
+ VALUE str;
+ str = rb_enc_str_new(p, n, enc);
+ if (!(func & 0x04) && ((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
+ if (rb_enc_str_coderange(str) == (((VALUE)1)<<(12 +8))) {
+ }
+ else if (enc0 == rb_usascii_encoding() && enc != rb_utf8_encoding()) {
+ rb_enc_associate(str, rb_ascii8bit_encoding());
+ }
+ }
+ return str;
+}
+static inline int
+parser_nextc(struct parser_params *parser)
+{
+ int c;
+ if ((parser->parser_lex_p) == (parser->parser_lex_pend)) {
+ VALUE v = (parser->parser_lex_nextline);
+ (parser->parser_lex_nextline) = 0;
+ if (!v) {
+ if (parser->eofp)
+ return -1;
+ if (!(parser->parser_lex_input) || ((VALUE)(v = lex_getline(parser)) == ((VALUE)RUBY_Qnil))) {
+ parser->eofp = ((VALUE)RUBY_Qtrue);
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ return -1;
+ }
+ }
+ {
+ if ((parser->parser_heredoc_end) > 0) {
+ (parser->parser_ruby_sourceline) = (parser->parser_heredoc_end);
+ (parser->parser_heredoc_end) = 0;
+ }
+ (parser->parser_ruby_sourceline)++;
+ parser->line_count++;
+ (parser->parser_lex_pbeg) = (parser->parser_lex_p) = (!(((struct RBasic*)(v))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(v))->as.ary : ((struct RString*)(v))->as.heap.ptr);
+ (parser->parser_lex_pend) = (parser->parser_lex_p) + (!(((struct RBasic*)(v))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(v))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(v))->as.heap.len);
+ (parser->parser_lex_lastline) = v;
+ }
+ }
+ c = (unsigned char)*(parser->parser_lex_p)++;
+ if (c == '\r' && ((parser->parser_lex_p) < (parser->parser_lex_pend) && ('\n') == *(parser->parser_lex_p))) {
+ (parser->parser_lex_p)++;
+ c = '\n';
+ }
+ return c;
+}
+static void
+parser_pushback(struct parser_params *parser, int c)
+{
+ if (c == -1) return;
+ (parser->parser_lex_p)--;
+ if ((parser->parser_lex_p) > (parser->parser_lex_pbeg) && (parser->parser_lex_p)[0] == '\n' && (parser->parser_lex_p)[-1] == '\r') {
+ (parser->parser_lex_p)--;
+ }
+}
+static char*
+parser_newtok(struct parser_params *parser)
+{
+ (parser->parser_tokidx) = 0;
+ if (!(parser->parser_tokenbuf)) {
+ (parser->parser_toksiz) = 60;
+ (parser->parser_tokenbuf) = (char*)ruby_xmalloc2((60),sizeof(char));
+ }
+ if ((parser->parser_toksiz) > 4096) {
+ (parser->parser_toksiz) = 60;
+ ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),(60),sizeof(char));
+ }
+ return (parser->parser_tokenbuf);
+}
+static char *
+parser_tokspace(struct parser_params *parser, int n)
+{
+ (parser->parser_tokidx) += n;
+ if ((parser->parser_tokidx) >= (parser->parser_toksiz)) {
+ do {(parser->parser_toksiz) *= 2;} while ((parser->parser_toksiz) < (parser->parser_tokidx));
+ ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),((parser->parser_toksiz)),sizeof(char));
+ }
+ return &(parser->parser_tokenbuf)[(parser->parser_tokidx)-n];
+}
+static void
+parser_tokadd(struct parser_params *parser, int c)
+{
+ (parser->parser_tokenbuf)[(parser->parser_tokidx)++] = (char)c;
+ if ((parser->parser_tokidx) >= (parser->parser_toksiz)) {
+ (parser->parser_toksiz) *= 2;
+ ((parser->parser_tokenbuf))=(char*)ruby_xrealloc2((char*)((parser->parser_tokenbuf)),((parser->parser_toksiz)),sizeof(char));
+ }
+}
+static int
+parser_tok_hex(struct parser_params *parser, int *numlen)
+{
+ int c;
+ c = ruby_scan_hex((parser->parser_lex_p), 2, numlen);
+ if (!*numlen) {
+ parser_yyerror(parser, "invalid hex escape");
+ return 0;
+ }
+ (parser->parser_lex_p) += *numlen;
+ return c;
+}
+static int
+parser_tokadd_utf8(struct parser_params *parser, rb_encoding **encp,
+ int string_literal, int symbol_literal, int regexp_literal)
+{
+ int codepoint;
+ int numlen;
+ if (regexp_literal) { parser_tokadd(parser, '\\'); parser_tokadd(parser, 'u'); }
+ if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('{') == *(parser->parser_lex_p))) {
+ do {
+ if (regexp_literal) { parser_tokadd(parser, *(parser->parser_lex_p)); }
+ parser_nextc(parser);
+ codepoint = ruby_scan_hex((parser->parser_lex_p), 6, &numlen);
+ if (numlen == 0) {
+ parser_yyerror(parser, "invalid Unicode escape");
+ return 0;
+ }
+ if (codepoint > 0x10ffff) {
+ parser_yyerror(parser, "invalid Unicode codepoint (too large)");
+ return 0;
+ }
+ (parser->parser_lex_p) += numlen;
+ if (regexp_literal) {
+ memcpy(parser_tokspace(parser, numlen), (parser->parser_lex_p) - (numlen), (numlen));
+ }
+ else if (codepoint >= 0x80) {
+ *encp = (parser->utf8 ? parser->utf8 : (parser->utf8 = rb_utf8_encoding()));
+ if (string_literal) parser_tokaddmbc(parser, codepoint, *encp);
+ }
+ else if (string_literal) {
+ if (codepoint == 0 && symbol_literal) {
+ parser_yyerror(parser, "symbol cannot contain '\\u{0}'");
+ return 0;
+ }
+ parser_tokadd(parser, codepoint);
+ }
+ } while (string_literal && (((parser->parser_lex_p) < (parser->parser_lex_pend) && (' ') == *(parser->parser_lex_p)) || ((parser->parser_lex_p) < (parser->parser_lex_pend) && ('\t') == *(parser->parser_lex_p))));
+ if (!((parser->parser_lex_p) < (parser->parser_lex_pend) && ('}') == *(parser->parser_lex_p))) {
+ parser_yyerror(parser, "unterminated Unicode escape");
+ return 0;
+ }
+ if (regexp_literal) { parser_tokadd(parser, '}'); }
+ parser_nextc(parser);
+ }
+ else {
+ codepoint = ruby_scan_hex((parser->parser_lex_p), 4, &numlen);
+ if (numlen < 4) {
+ parser_yyerror(parser, "invalid Unicode escape");
+ return 0;
+ }
+ (parser->parser_lex_p) += 4;
+ if (regexp_literal) {
+ memcpy(parser_tokspace(parser, 4), (parser->parser_lex_p) - (4), (4));
+ }
+ else if (codepoint >= 0x80) {
+ *encp = (parser->utf8 ? parser->utf8 : (parser->utf8 = rb_utf8_encoding()));
+ if (string_literal) parser_tokaddmbc(parser, codepoint, *encp);
+ }
+ else if (string_literal) {
+ if (codepoint == 0 && symbol_literal) {
+ parser_yyerror(parser, "symbol cannot contain '\\u0000'");
+ return 0;
+ }
+ parser_tokadd(parser, codepoint);
+ }
+ }
+ return codepoint;
+}
+static int
+parser_read_escape(struct parser_params *parser, int flags,
+ rb_encoding **encp)
+{
+ int c;
+ int numlen;
+ switch (c = parser_nextc(parser)) {
+ case '\\':
+ return c;
+ case 'n':
+ return '\n';
+ case 't':
+ return '\t';
+ case 'r':
+ return '\r';
+ case 'f':
+ return '\f';
+ case 'v':
+ return '\13';
+ case 'a':
+ return '\007';
+ case 'e':
+ return 033;
+ case '0': case '1': case '2': case '3':
+ case '4': case '5': case '6': case '7':
+ if (flags & (1|2)) goto eof;
+ {
+ int numlen;
+ parser_pushback(parser, c);
+ c = ruby_scan_oct((parser->parser_lex_p), 3, &numlen);
+ (parser->parser_lex_p) += numlen;
+ }
+ return c;
+ case 'x':
+ if (flags & (1|2)) goto eof;
+ c = parser_tok_hex(parser, &numlen);
+ if (numlen == 0) return 0;
+ return c;
+ case 'b':
+ return '\010';
+ case 's':
+ return ' ';
+ case 'M':
+ if (flags & 2) goto eof;
+ if ((c = parser_nextc(parser)) != '-') {
+ parser_pushback(parser, c);
+ goto eof;
+ }
+ if ((c = parser_nextc(parser)) == '\\') {
+ return parser_read_escape(parser, flags|2, encp) | 0x80;
+ }
+ else if (c == -1 || !((unsigned long)((unsigned char)(c)) < 128)) goto eof;
+ else {
+ return ((c & 0xff) | 0x80);
+ }
+ case 'C':
+ if ((c = parser_nextc(parser)) != '-') {
+ parser_pushback(parser, c);
+ goto eof;
+ }
+ case 'c':
+ if (flags & 1) goto eof;
+ if ((c = parser_nextc(parser))== '\\') {
+ c = parser_read_escape(parser, flags|1, encp);
+ }
+ else if (c == '?')
+ return 0177;
+ else if (c == -1 || !((unsigned long)((unsigned char)(c)) < 128)) goto eof;
+ return c & 0x9f;
+ eof:
+ case -1:
+ parser_yyerror(parser, "Invalid escape character syntax");
+ return '\0';
+ default:
+ return c;
+ }
+}
+static void
+parser_tokaddmbc(struct parser_params *parser, int c, rb_encoding *enc)
+{
+ int len = rb_enc_codelen(c, enc);
+ (enc)->code_to_mbc(c,(OnigUChar*)(parser_tokspace(parser, len)),enc);
+}
+static int
+parser_tokadd_escape(struct parser_params *parser, rb_encoding **encp)
+{
+ int c;
+ int flags = 0;
+ first:
+ switch (c = parser_nextc(parser)) {
+ case '\n':
+ return 0;
+ case '0': case '1': case '2': case '3':
+ case '4': case '5': case '6': case '7':
+ if (flags & (1|2)) goto eof;
+ {
+ int numlen;
+ int oct;
+ oct = ruby_scan_oct(--(parser->parser_lex_p), 3, &numlen);
+ if (numlen == 0) goto eof;
+ (parser->parser_lex_p) += numlen;
+ memcpy(parser_tokspace(parser, numlen + 1), (parser->parser_lex_p) - (numlen + 1), (numlen + 1));
+ }
+ return 0;
+ case 'x':
+ if (flags & (1|2)) goto eof;
+ {
+ int numlen;
+ int hex;
+ hex = parser_tok_hex(parser, &numlen);
+ if (numlen == 0) goto eof;
+ memcpy(parser_tokspace(parser, numlen + 2), (parser->parser_lex_p) - (numlen + 2), (numlen + 2));
+ }
+ return 0;
+ case 'M':
+ if (flags & 2) goto eof;
+ if ((c = parser_nextc(parser)) != '-') {
+ parser_pushback(parser, c);
+ goto eof;
+ }
+ memcpy(parser_tokspace(parser, 3), (parser->parser_lex_p) - (3), (3));
+ flags |= 2;
+ goto escaped;
+ case 'C':
+ if (flags & 1) goto eof;
+ if ((c = parser_nextc(parser)) != '-') {
+ parser_pushback(parser, c);
+ goto eof;
+ }
+ memcpy(parser_tokspace(parser, 3), (parser->parser_lex_p) - (3), (3));
+ goto escaped;
+ case 'c':
+ if (flags & 1) goto eof;
+ memcpy(parser_tokspace(parser, 2), (parser->parser_lex_p) - (2), (2));
+ flags |= 1;
+ escaped:
+ if ((c = parser_nextc(parser)) == '\\') {
+ goto first;
+ }
+ else if (c == -1) goto eof;
+ parser_tokadd(parser, c);
+ return 0;
+ eof:
+ case -1:
+ parser_yyerror(parser, "Invalid escape character syntax");
+ return -1;
+ default:
+ parser_tokadd(parser, '\\');
+ parser_tokadd(parser, c);
+ }
+ return 0;
+}
+extern int rb_char_to_option_kcode(int c, int *option, int *kcode);
+static int
+parser_regx_options(struct parser_params *parser)
+{
+ int kcode = 0;
+ int options = 0;
+ int c, opt, kc;
+ parser_newtok(parser);
+ while (c = parser_nextc(parser), rb_isalpha((unsigned char)(c))) {
+ if (c == 'o') {
+ options |= (1<<16);
+ }
+ else if (rb_char_to_option_kcode(c, &opt, &kc)) {
+ options |= opt;
+ if (kc >= 0) kcode = c;
+ }
+ else {
+ parser_tokadd(parser, c);
+ }
+ }
+ parser_pushback(parser, c);
+ if ((parser->parser_tokidx)) {
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unknown regexp option%s - %s",
+ (parser->parser_tokidx) > 1 ? "s" : "", (parser->parser_tokenbuf));
+ }
+ return options | (((kcode)&0xff)<<8);
+}
+static void
+dispose_string(VALUE str)
+{
+ if (((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1)))
+ ruby_xfree((!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr));
+ rb_gc_force_recycle(str);
+}
+static int
+parser_tokadd_mbchar(struct parser_params *parser, int c)
+{
+ int len = rb_enc_precise_mbclen(((parser->parser_lex_p)-1),(parser->parser_lex_pend),parser->enc);
+ if (!(0 < (len))) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid multibyte char (%s)", (parser->enc->name));
+ return -1;
+ }
+ parser_tokadd(parser, c);
+ (parser->parser_lex_p) += --len;
+ if (len > 0) memcpy(parser_tokspace(parser, len), (parser->parser_lex_p) - (len), (len));
+ return c;
+}
+static int
+parser_tokadd_string(struct parser_params *parser,
+ int func, int term, int paren, long *nest,
+ rb_encoding **encp)
+{
+ int c;
+ int has_nonascii = 0;
+ rb_encoding *enc = *encp;
+ char *errbuf = 0;
+ static const char mixed_msg[] = "%s mixed within %s source";
+ while ((c = parser_nextc(parser)) != -1) {
+ if (paren && c == paren) {
+ ++*nest;
+ }
+ else if (c == term) {
+ if (!nest || !*nest) {
+ parser_pushback(parser, c);
+ break;
+ }
+ --*nest;
+ }
+ else if ((func & 0x02) && c == '#' && (parser->parser_lex_p) < (parser->parser_lex_pend)) {
+ int c2 = *(parser->parser_lex_p);
+ if (c2 == '$' || c2 == '@' || c2 == '{') {
+ parser_pushback(parser, c);
+ break;
+ }
+ }
+ else if (c == '\\') {
+ const char *beg = (parser->parser_lex_p) - 1;
+ c = parser_nextc(parser);
+ switch (c) {
+ case '\n':
+ if (func & 0x08) break;
+ if (func & 0x02) continue;
+ parser_tokadd(parser, '\\');
+ break;
+ case '\\':
+ if (func & 0x01) parser_tokadd(parser, c);
+ break;
+ case 'u':
+ if ((func & 0x02) == 0) {
+ parser_tokadd(parser, '\\');
+ break;
+ }
+ parser_tokadd_utf8(parser, &enc, 1,
+ func & 0x10,
+ func & 0x04);
+ if (has_nonascii && enc != *encp) {
+ do { const char *pos = (parser->parser_lex_p); (parser->parser_lex_p) = beg; if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); }; (parser->parser_lex_p) = pos; } while (0);
+ }
+ continue;
+ default:
+ if (func & 0x04) {
+ parser_pushback(parser, c);
+ if ((c = parser_tokadd_escape(parser, &enc)) < 0)
+ return -1;
+ if (has_nonascii && enc != *encp) {
+ do { const char *pos = (parser->parser_lex_p); (parser->parser_lex_p) = beg; if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); }; (parser->parser_lex_p) = pos; } while (0);
+ }
+ continue;
+ }
+ else if (func & 0x02) {
+ parser_pushback(parser, c);
+ if (func & 0x01) parser_tokadd(parser, '\\');
+ c = parser_read_escape(parser, 0, &enc);
+ }
+ else if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
+ }
+ else if (c != term && !(paren && c == paren)) {
+ parser_tokadd(parser, '\\');
+ }
+ }
+ }
+ else if (!((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
+ has_nonascii = 1;
+ if (enc != *encp) {
+ if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); };
+ continue;
+ }
+ if (parser_tokadd_mbchar(parser, c) == -1) return -1;
+ continue;
+ }
+ else if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
+ parser_pushback(parser, c);
+ break;
+ }
+ if (!c && (func & 0x10)) {
+ func &= ~0x10;
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "symbol cannot contain '\\0'");
+ continue;
+ }
+ if (c & 0x80) {
+ has_nonascii = 1;
+ if (enc != *encp) {
+ if (!errbuf) { int len = sizeof(mixed_msg) - 4; len += strlen((enc)->name); len += strlen((*encp)->name); errbuf = (char*)__builtin_alloca (sizeof(char)*(len)); snprintf(errbuf, len, mixed_msg, (enc)->name, (*encp)->name); parser_yyerror(parser, errbuf); };
+ continue;
+ }
+ }
+ parser_tokadd(parser, c);
+ }
+ *encp = enc;
+ return c;
+}
+static int
+parser_parse_string(struct parser_params *parser, NODE *quote)
+{
+ int func = quote->u1.id;
+ int term = ((signed short)(quote)->u2.id);
+ int paren = (char)((quote)->u2.id >> 8*2);
+ int c, space = 0;
+ rb_encoding *enc = parser->enc;
+ if (func == -1) return 361;
+ c = parser_nextc(parser);
+ if ((func & 0x08) && rb_isspace((unsigned char)(c))) {
+ do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
+ space = 1;
+ }
+ if (c == term && !quote->u3.cnt) {
+ if (func & 0x08) {
+ quote->u1.id = -1;
+ return ' ';
+ }
+ if (!(func & 0x04)) return 361;
+ (*((YYSTYPE*)(parser->parser_yylval))).num = parser_regx_options(parser);
+ return 320;
+ }
+ if (space) {
+ parser_pushback(parser, c);
+ return ' ';
+ }
+ parser_newtok(parser);
+ if ((func & 0x02) && c == '#') {
+ switch (c = parser_nextc(parser)) {
+ case '$':
+ case '@':
+ parser_pushback(parser, c);
+ return 360;
+ case '{':
+ return 359;
+ }
+ parser_tokadd(parser, '#');
+ }
+ parser_pushback(parser, c);
+ if (parser_tokadd_string(parser,func,term,paren,"e->u3.cnt,&enc) == -1) {
+ (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(quote)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
+ if (func & 0x04) {
+ if (parser->eofp)
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated regexp meets end of file");
+ return 320;
+ }
+ else {
+ if (parser->eofp)
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated string meets end of file");
+ return 361;
+ }
+ }
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc)), (VALUE)(0), (VALUE)(0));
+ return 316;
+}
+static int
+parser_heredoc_identifier(struct parser_params *parser)
+{
+ int c = parser_nextc(parser), term, func = 0, len;
+ if (c == '-') {
+ c = parser_nextc(parser);
+ func = 0x20;
+ }
+ switch (c) {
+ case '\'':
+ func |= str_squote; goto quoted;
+ case '"':
+ func |= str_dquote; goto quoted;
+ case '`':
+ func |= str_xquote;
+ quoted:
+ parser_newtok(parser);
+ parser_tokadd(parser, func);
+ term = c;
+ while ((c = parser_nextc(parser)) != -1 && c != term) {
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ }
+ if (c == -1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated here document identifier");
+ return 0;
+ }
+ break;
+ default:
+ if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ parser_pushback(parser, c);
+ if (func & 0x20) {
+ parser_pushback(parser, '-');
+ }
+ return 0;
+ }
+ parser_newtok(parser);
+ term = '"';
+ parser_tokadd(parser, func |= str_dquote);
+ do {
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ } while ((c = parser_nextc(parser)) != -1 && (!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128))));
+ parser_pushback(parser, c);
+ break;
+ }
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ len = (parser->parser_lex_p) - (parser->parser_lex_pbeg);
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ARRAY, rb_enc_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),parser->enc), len, (parser->parser_lex_lastline));
+ ((struct RNode*)((parser->parser_lex_strterm)))->flags=((((struct RNode*)((parser->parser_lex_strterm)))->flags&~(-1<<(8 +7)))|((((parser->parser_ruby_sourceline))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ return term == '`' ? 355 : 354;
+}
+static void
+parser_heredoc_restore(struct parser_params *parser, NODE *here)
+{
+ VALUE line;
+ line = here->u3.value;
+ (parser->parser_lex_lastline) = line;
+ (parser->parser_lex_pbeg) = (!(((struct RBasic*)(line))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(line))->as.ary : ((struct RString*)(line))->as.heap.ptr);
+ (parser->parser_lex_pend) = (parser->parser_lex_pbeg) + (!(((struct RBasic*)(line))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(line))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(line))->as.heap.len);
+ (parser->parser_lex_p) = (parser->parser_lex_pbeg) + here->u2.argc;
+ (parser->parser_heredoc_end) = (parser->parser_ruby_sourceline);
+ (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(here)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
+ dispose_string(here->u1.value);
+ rb_gc_force_recycle((VALUE)here);
+}
+static int
+parser_whole_match_p(struct parser_params *parser,
+ const char *eos, int len, int indent)
+{
+ const char *p = (parser->parser_lex_pbeg);
+ int n;
+ if (indent) {
+ while (*p && rb_isspace((unsigned char)(*p))) p++;
+ }
+ n= (parser->parser_lex_pend) - (p + len);
+ if (n < 0 || (n > 0 && p[len] != '\n' && p[len] != '\r')) return ((VALUE)RUBY_Qfalse);
+ if ((__extension__ (__builtin_constant_p (len) && ((__builtin_constant_p (eos) && strlen (eos) < ((size_t) (len))) || (__builtin_constant_p (p) && strlen (p) < ((size_t) (len)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (eos) && __builtin_constant_p (p) && (__s1_len = strlen (eos), __s2_len = strlen (p), (!((size_t)(const void *)((eos) + 1) - (size_t)(const void *)(eos) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((p) + 1) - (size_t)(const void *)(p) == 1) || __s2_len >= 4)) ? __builtin_strcmp (eos, p) : (__builtin_constant_p (eos) && ((size_t)(const void *)((eos) + 1) - (size_t)(const void *)(eos) == 1) && (__s1_len = strlen (eos), __s1_len < 4) ? (__builtin_constant_p (p) && ((size_t)(const void *)((p) + 1) - (size_t)(const void *)(p) == 1) ? __builtin_strcmp (eos, p) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (p); register int __result = (((__const unsigned char *) (__const char *) (eos))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (eos))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (eos))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (eos))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (p) && ((size_t)(const void *)((p) + 1) - (size_t)(const void *)(p) == 1) && (__s2_len = strlen (p), __s2_len < 4) ? (__builtin_constant_p (eos) && ((size_t)(const void *)((eos) + 1) - (size_t)(const void *)(eos) == 1) ? __builtin_strcmp (eos, p) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (eos); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (p))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (p))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (p))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (p))[3]); } } __result; }))) : __builtin_strcmp (eos, p)))); }) : strncmp (eos, p, len))) == 0) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+static int
+parser_here_document(struct parser_params *parser, NODE *here)
+{
+ int c, func, indent = 0;
+ const char *eos, *p, *pend;
+ long len;
+ VALUE str = 0;
+ eos = (!(((struct RBasic*)(here->u1.value))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(here->u1.value))->as.ary : ((struct RString*)(here->u1.value))->as.heap.ptr);
+ len = (!(((struct RBasic*)(here->u1.value))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(here->u1.value))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(here->u1.value))->as.heap.len) - 1;
+ indent = (func = *eos++) & 0x20;
+ if ((c = parser_nextc(parser)) == -1) {
+ error:
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "can't find string \"%s\" anywhere before EOF", eos);
+ restore:
+ parser_heredoc_restore(parser,(parser->parser_lex_strterm));
+ (parser->parser_lex_strterm) = 0;
+ return 0;
+ }
+ if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1) && parser_whole_match_p(parser,eos,len,indent)) {
+ parser_heredoc_restore(parser,(parser->parser_lex_strterm));
+ return 361;
+ }
+ if (!(func & 0x02)) {
+ do {
+ p = (!(((struct RBasic*)((parser->parser_lex_lastline)))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)((parser->parser_lex_lastline)))->as.ary : ((struct RString*)((parser->parser_lex_lastline)))->as.heap.ptr);
+ pend = (parser->parser_lex_pend);
+ if (pend > p) {
+ switch (pend[-1]) {
+ case '\n':
+ if (--pend == p || pend[-1] != '\r') {
+ pend++;
+ break;
+ }
+ case '\r':
+ --pend;
+ }
+ }
+ if (str)
+ rb_str_cat(str, p, pend - p);
+ else
+ str = rb_enc_str_new((p),(pend - p),parser->enc);
+ if (pend < (parser->parser_lex_pend)) rb_str_cat(str, "\n", 1);
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ if (parser_nextc(parser) == -1) {
+ if (str) dispose_string(str);
+ goto error;
+ }
+ } while (!parser_whole_match_p(parser,eos,len,indent));
+ }
+ else {
+ rb_encoding *enc = parser->enc;
+ parser_newtok(parser);
+ if (c == '#') {
+ switch (c = parser_nextc(parser)) {
+ case '$':
+ case '@':
+ parser_pushback(parser, c);
+ return 360;
+ case '{':
+ return 359;
+ }
+ parser_tokadd(parser, '#');
+ }
+ do {
+ parser_pushback(parser, c);
+ if ((c = parser_tokadd_string(parser,func,'\n',0,((void *)0),&enc)) == -1) {
+ if (parser->eofp) goto error;
+ goto restore;
+ }
+ if (c != '\n') {
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc)), (VALUE)(0), (VALUE)(0));
+ return 316;
+ }
+ parser_tokadd(parser, parser_nextc(parser));
+ if ((c = parser_nextc(parser)) == -1) goto error;
+ } while (!parser_whole_match_p(parser,eos,len,indent));
+ str = parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(func),parser->enc);
+ }
+ parser_heredoc_restore(parser,(parser->parser_lex_strterm));
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (-1), (0) | ((0) << (8 * 2)), 0);
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(str), (VALUE)(0), (VALUE)(0));
+ return 316;
+}
+struct kwtable {const char *name; int id[2]; enum lex_state_e state;};
+const struct kwtable *rb_reserved_word(const char *, unsigned int);
+struct kwtable;
+__inline
+static unsigned int
+hash (str, len)
+ register const char *str;
+ register unsigned int len;
+{
+ static const unsigned char asso_values[] =
+ {
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 26, 51, 51, 14, 51, 16, 8,
+ 11, 13, 51, 51, 51, 51, 10, 51, 13, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 11, 51, 13, 1, 26,
+ 4, 1, 8, 28, 51, 23, 51, 1, 1, 27,
+ 5, 19, 21, 51, 8, 3, 3, 11, 51, 21,
+ 24, 16, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51
+ };
+ register int hval = len;
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char)str[2]];
+ case 2:
+ case 1:
+ hval += asso_values[(unsigned char)str[0]];
+ break;
+ }
+ return hval + asso_values[(unsigned char)str[len - 1]];
+}
+__inline
+const struct kwtable *
+rb_reserved_word (str, len)
+ register const char *str;
+ register unsigned int len;
+{
+ static const struct kwtable wordlist[] =
+ {
+ {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+ {"break", {276, 276}, EXPR_MID},
+ {"else", {270, 270}, EXPR_BEG},
+ {"nil", {289, 289}, EXPR_END},
+ {"ensure", {264, 264}, EXPR_BEG},
+ {"end", {265, 265}, EXPR_END},
+ {"then", {268, 268}, EXPR_BEG},
+ {"not", {294, 294}, EXPR_ARG},
+ {"false", {291, 291}, EXPR_END},
+ {"self", {288, 288}, EXPR_END},
+ {"elsif", {269, 269}, EXPR_VALUE},
+ {"rescue", {263, 299}, EXPR_MID},
+ {"true", {290, 290}, EXPR_END},
+ {"until", {274, 298}, EXPR_VALUE},
+ {"unless", {267, 296}, EXPR_VALUE},
+ {"return", {285, 285}, EXPR_MID},
+ {"def", {260, 260}, EXPR_FNAME},
+ {"and", {292, 292}, EXPR_VALUE},
+ {"do", {281, 281}, EXPR_BEG},
+ {"yield", {286, 286}, EXPR_ARG},
+ {"for", {275, 275}, EXPR_VALUE},
+ {"undef", {261, 261}, EXPR_FNAME},
+ {"or", {293, 293}, EXPR_VALUE},
+ {"in", {280, 280}, EXPR_VALUE},
+ {"when", {272, 272}, EXPR_VALUE},
+ {"retry", {279, 279}, EXPR_END},
+ {"if", {266, 295}, EXPR_VALUE},
+ {"case", {271, 271}, EXPR_VALUE},
+ {"redo", {278, 278}, EXPR_END},
+ {"next", {277, 277}, EXPR_MID},
+ {"super", {287, 287}, EXPR_ARG},
+ {"module", {259, 259}, EXPR_VALUE},
+ {"begin", {262, 262}, EXPR_BEG},
+ {"__LINE__", {304, 304}, EXPR_END},
+ {"__FILE__", {305, 305}, EXPR_END},
+ {"__ENCODING__", {306, 306}, EXPR_END},
+ {"END", {303, 303}, EXPR_END},
+ {"alias", {300, 300}, EXPR_FNAME},
+ {"BEGIN", {302, 302}, EXPR_END},
+ {"defined?", {301, 301}, EXPR_ARG},
+ {"class", {258, 258}, EXPR_CLASS},
+ {""}, {""},
+ {"while", {273, 297}, EXPR_VALUE}
+ };
+ if (len <= 12 && len >= 2)
+ {
+ register int key = hash (str, len);
+ if (key <= 50 && key >= 0)
+ {
+ register const char *s = wordlist[key].name;
+ if (*str == *s && !__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (str + 1) && __builtin_constant_p (s + 1) && (__s1_len = strlen (str + 1), __s2_len = strlen (s + 1), (!((size_t)(const void *)((str + 1) + 1) - (size_t)(const void *)(str + 1) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((s + 1) + 1) - (size_t)(const void *)(s + 1) == 1) || __s2_len >= 4)) ? __builtin_strcmp (str + 1, s + 1) : (__builtin_constant_p (str + 1) && ((size_t)(const void *)((str + 1) + 1) - (size_t)(const void *)(str + 1) == 1) && (__s1_len = strlen (str + 1), __s1_len < 4) ? (__builtin_constant_p (s + 1) && ((size_t)(const void *)((s + 1) + 1) - (size_t)(const void *)(s + 1) == 1) ? __builtin_strcmp (str + 1, s + 1) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (s + 1); register int __result = (((__const unsigned char *) (__const char *) (str + 1))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (str + 1))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (str + 1))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (str + 1))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (s + 1) && ((size_t)(const void *)((s + 1) + 1) - (size_t)(const void *)(s + 1) == 1) && (__s2_len = strlen (s + 1), __s2_len < 4) ? (__builtin_constant_p (str + 1) && ((size_t)(const void *)((str + 1) + 1) - (size_t)(const void *)(str + 1) == 1) ? __builtin_strcmp (str + 1, s + 1) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (str + 1); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (s + 1))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (s + 1))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (s + 1))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (s + 1))[3]); } } __result; }))) : __builtin_strcmp (str + 1, s + 1)))); }))
+ return &wordlist[key];
+ }
+ }
+ return 0;
+}
+static void
+arg_ambiguous_gen(struct parser_params *parser)
+{
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "ambiguous first argument; put parentheses or even spaces");
+}
+static int
+lvar_defined_gen(struct parser_params *parser, ID id)
+{
+ return (dyna_in_block_gen(parser) && dvar_defined_gen(parser, id)) || local_id_gen(parser, id);
+}
+static int
+parser_encode_length(struct parser_params *parser, const char *name, int len)
+{
+ int nlen;
+ if (len > 5 && name[nlen = len - 5] == '-') {
+ if (rb_memcicmp(name + nlen + 1, "unix", 4) == 0)
+ return nlen;
+ }
+ if (len > 4 && name[nlen = len - 5] == '-') {
+ if (rb_memcicmp(name + nlen + 1, "dos", 3) == 0)
+ return nlen;
+ if (rb_memcicmp(name + nlen + 1, "mac", 3) == 0)
+ return nlen;
+ }
+ return len;
+}
+static void
+parser_set_encode(struct parser_params *parser, const char *name)
+{
+ int idx = rb_enc_find_index(name);
+ rb_encoding *enc;
+ if (idx < 0) {
+ rb_raise(rb_eArgError, "unknown encoding name: %s", name);
+ }
+ enc = rb_enc_from_index(idx);
+ if (!((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
+ rb_raise(rb_eArgError, "%s is not ASCII compatible", (enc)->name);
+ }
+ parser->enc = enc;
+}
+static int
+comment_at_top(struct parser_params *parser)
+{
+ const char *p = (parser->parser_lex_pbeg), *pend = (parser->parser_lex_p) - 1;
+ if (parser->line_count != (parser->has_shebang ? 2 : 1)) return 0;
+ while (p < pend) {
+ if (!rb_isspace((unsigned char)(*p))) return 0;
+ p++;
+ }
+ return 1;
+}
+typedef int (*rb_magic_comment_length_t)(struct parser_params *parser, const char *name, int len);
+typedef void (*rb_magic_comment_setter_t)(struct parser_params *parser, const char *name, const char *val);
+static void
+magic_comment_encoding(struct parser_params *parser, const char *name, const char *val)
+{
+ if (!comment_at_top(parser)) {
+ rb_warning("encoding '%s' is ignored, valid only in the first line except for shebang line.",
+ val);
+ return;
+ }
+ parser_set_encode(parser, val);
+}
+struct magic_comment {
+ const char *name;
+ rb_magic_comment_setter_t func;
+ rb_magic_comment_length_t length;
+};
+static const struct magic_comment magic_comments[] = {
+ {"coding", magic_comment_encoding, parser_encode_length},
+ {"encoding", magic_comment_encoding, parser_encode_length},
+};
+static const char *
+magic_comment_marker(const char *str, int len)
+{
+ int i = 2;
+ while (i < len) {
+ switch (str[i]) {
+ case '-':
+ if (str[i-1] == '*' && str[i-2] == '-') {
+ return str + i + 1;
+ }
+ i += 2;
+ break;
+ case '*':
+ if (i + 1 >= len) return 0;
+ if (str[i+1] != '-') {
+ i += 4;
+ }
+ else if (str[i-1] != '-') {
+ i += 2;
+ }
+ else {
+ return str + i + 2;
+ }
+ break;
+ default:
+ i += 3;
+ break;
+ }
+ }
+ return 0;
+}
+static int
+parser_magic_comment(struct parser_params *parser, const char *str, int len)
+{
+ VALUE name = 0, val = 0;
+ const char *beg, *end, *vbeg, *vend;
+ if (len <= 7) return ((VALUE)RUBY_Qfalse);
+ if (!(beg = magic_comment_marker(str, len))) return ((VALUE)RUBY_Qfalse);
+ if (!(end = magic_comment_marker(beg, str + len - beg))) return ((VALUE)RUBY_Qfalse);
+ str = beg;
+ len = end - beg - 3;
+ while (len > 0) {
+ const struct magic_comment *p = magic_comments;
+ char *s;
+ int i, n = 0;
+ for (; len > 0 && *str; str++, --len) {
+ switch (*str) {
+ case '\'': case '"': case ':': case ';':
+ continue;
+ }
+ if (!rb_isspace((unsigned char)(*str))) break;
+ }
+ for (beg = str; len > 0; str++, --len) {
+ switch (*str) {
+ case '\'': case '"': case ':': case ';':
+ break;
+ default:
+ if (rb_isspace((unsigned char)(*str))) break;
+ continue;
+ }
+ break;
+ }
+ for (end = str; len > 0 && rb_isspace((unsigned char)(*str)); str++, --len);
+ if (!len) break;
+ if (*str != ':') continue;
+ do str++; while (--len > 0 && rb_isspace((unsigned char)(*str)));
+ if (!len) break;
+ if (*str == '"') {
+ for (vbeg = ++str; --len > 0 && *str != '"'; str++) {
+ if (*str == '\\') {
+ --len;
+ ++str;
+ }
+ }
+ vend = str;
+ if (len) {
+ --len;
+ ++str;
+ }
+ }
+ else {
+ for (vbeg = str; len > 0 && *str != '"' && *str != ';' && !rb_isspace((unsigned char)(*str)); --len, str++);
+ vend = str;
+ }
+ while (len > 0 && (*str == ';' || rb_isspace((unsigned char)(*str)))) --len, str++;
+ n = end - beg;
+ ((name) ? (rb_str_resize((name), (n)), memcpy(((!(((struct RBasic*)(name))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(name))->as.ary : ((struct RString*)(name))->as.heap.ptr)), ((beg)), sizeof(char)*((n))), (name)) : ((name) = rb_enc_str_new(((beg)),((n)),parser->enc)));
+ s = (!(((struct RBasic*)(name))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(name))->as.ary : ((struct RString*)(name))->as.heap.ptr);
+ for (i = 0; i < n; ++i) {
+ if (*s == '-') *s = '_';
+ }
+ do {
+ if ((st_strncasecmp(p->name, s, n)) == 0) {
+ n = vend - vbeg;
+ if (p->length) {
+ n = (*p->length)(parser, vbeg, n);
+ }
+ ((val) ? (rb_str_resize((val), (n)), memcpy(((!(((struct RBasic*)(val))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(val))->as.ary : ((struct RString*)(val))->as.heap.ptr)), ((vbeg)), sizeof(char)*((n))), (val)) : ((val) = rb_enc_str_new(((vbeg)),((n)),parser->enc)));
+ (*p->func)(parser, s, (!(((struct RBasic*)(val))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(val))->as.ary : ((struct RString*)(val))->as.heap.ptr));
+ break;
+ }
+ } while (++p < magic_comments + sizeof(magic_comments) / sizeof(*p));
+ }
+ return ((VALUE)RUBY_Qtrue);
+}
+static void
+set_file_encoding(struct parser_params *parser, const char *str, const char *send)
+{
+ int sep = 0;
+ const char *beg = str;
+ VALUE s;
+ for (;;) {
+ if (send - str <= 6) return;
+ switch (str[6]) {
+ case 'C': case 'c': str += 6; continue;
+ case 'O': case 'o': str += 5; continue;
+ case 'D': case 'd': str += 4; continue;
+ case 'I': case 'i': str += 3; continue;
+ case 'N': case 'n': str += 2; continue;
+ case 'G': case 'g': str += 1; continue;
+ case '=': case ':':
+ sep = 1;
+ str += 6;
+ break;
+ default:
+ str += 6;
+ if (rb_isspace((unsigned char)(*str))) break;
+ continue;
+ }
+ if ((st_strncasecmp(str-6, "coding", 6)) == 0) break;
+ }
+ for (;;) {
+ do {
+ if (++str >= send) return;
+ } while (rb_isspace((unsigned char)(*str)));
+ if (sep) break;
+ if (*str != '=' && *str != ':') return;
+ sep = 1;
+ str++;
+ }
+ beg = str;
+ while ((*str == '-' || *str == '_' || rb_isalnum((unsigned char)(*str))) && ++str < send);
+ s = rb_str_new(beg, parser_encode_length(parser, beg, str - beg));
+ parser_set_encode(parser, (!(((struct RBasic*)(s))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(s))->as.ary : ((struct RString*)(s))->as.heap.ptr));
+ rb_str_resize(s, 0);
+}
+static void
+parser_prepare(struct parser_params *parser)
+{
+ int c = parser_nextc(parser);
+ switch (c) {
+ case '#':
+ if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('!') == *(parser->parser_lex_p))) parser->has_shebang = 1;
+ break;
+ case 0xef:
+ if ((parser->parser_lex_pend) - (parser->parser_lex_p) >= 2 &&
+ (unsigned char)(parser->parser_lex_p)[0] == 0xbb &&
+ (unsigned char)(parser->parser_lex_p)[1] == 0xbf) {
+ parser->enc = rb_utf8_encoding();
+ (parser->parser_lex_p) += 2;
+ (parser->parser_lex_pbeg) = (parser->parser_lex_p);
+ return;
+ }
+ break;
+ case (-1):
+ return;
+ }
+ parser_pushback(parser, c);
+ parser->enc = rb_enc_get((parser->parser_lex_lastline));
+}
+static int
+parser_yylex(struct parser_params *parser)
+{
+ register int c;
+ int space_seen = 0;
+ int cmd_state;
+ enum lex_state_e last_state;
+ rb_encoding *enc;
+ int mb;
+ if ((parser->parser_lex_strterm)) {
+ int token;
+ if (((int) (((((struct RNode*)((parser->parser_lex_strterm))))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) {
+ token = parser_here_document(parser,(parser->parser_lex_strterm));
+ if (token == 361) {
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_state) = EXPR_END;
+ }
+ }
+ else {
+ token = parser_parse_string(parser,(parser->parser_lex_strterm));
+ if (token == 361 || token == 320) {
+ rb_gc_force_recycle((VALUE)(parser->parser_lex_strterm));
+ (parser->parser_lex_strterm) = 0;
+ (parser->parser_lex_state) = EXPR_END;
+ }
+ }
+ return token;
+ }
+ cmd_state = (parser->parser_command_start);
+ (parser->parser_command_start) = ((VALUE)RUBY_Qfalse);
+ retry:
+ switch (c = parser_nextc(parser)) {
+ case '\0':
+ case '\004':
+ case '\032':
+ case -1:
+ return 0;
+ case ' ': case '\t': case '\f': case '\r':
+ case '\13':
+ space_seen++;
+ goto retry;
+ case '#':
+ if (!parser_magic_comment(parser, (parser->parser_lex_p), (parser->parser_lex_pend) - (parser->parser_lex_p))) {
+ if (comment_at_top(parser)) {
+ set_file_encoding(parser, (parser->parser_lex_p), (parser->parser_lex_pend));
+ }
+ }
+ (parser->parser_lex_p) = (parser->parser_lex_pend);
+ case '\n':
+ switch ((parser->parser_lex_state)) {
+ case EXPR_BEG:
+ case EXPR_FNAME:
+ case EXPR_DOT:
+ case EXPR_CLASS:
+ case EXPR_VALUE:
+ goto retry;
+ default:
+ break;
+ }
+ while ((c = parser_nextc(parser))) {
+ switch (c) {
+ case ' ': case '\t': case '\f': case '\r':
+ case '\13':
+ space_seen++;
+ break;
+ case '.': {
+ if ((c = parser_nextc(parser)) != '.') {
+ parser_pushback(parser, c);
+ parser_pushback(parser, '.');
+ goto retry;
+ }
+ }
+ default:
+ --(parser->parser_ruby_sourceline);
+ (parser->parser_lex_nextline) = (parser->parser_lex_lastline);
+ case -1:
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ goto normal_newline;
+ }
+ }
+ normal_newline:
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ (parser->parser_lex_state) = EXPR_BEG;
+ return '\n';
+ case '*':
+ if ((c = parser_nextc(parser)) == '*') {
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 323;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ c = 323;
+ }
+ else {
+ if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '*';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`*' interpreted as argument prefix");
+ c = 350;
+ }
+ else if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ c = 350;
+ }
+ else {
+ c = '*';
+ }
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ return c;
+ case '!':
+ c = parser_nextc(parser);
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ if (c == '@') {
+ return '!';
+ }
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_BEG;
+ }
+ if (c == '=') {
+ return 327;
+ }
+ if (c == '~') {
+ return 333;
+ }
+ parser_pushback(parser, c);
+ return '!';
+ case '=':
+ if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1)) {
+ if ((__extension__ (__builtin_constant_p (5) && ((__builtin_constant_p ((parser->parser_lex_p)) && strlen ((parser->parser_lex_p)) < ((size_t) (5))) || (__builtin_constant_p ("begin") && strlen ("begin") < ((size_t) (5)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((parser->parser_lex_p)) && __builtin_constant_p ("begin") && (__s1_len = strlen ((parser->parser_lex_p)), __s2_len = strlen ("begin"), (!((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("begin") + 1) - (size_t)(const void *)("begin") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((parser->parser_lex_p), "begin") : (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) && (__s1_len = strlen ((parser->parser_lex_p)), __s1_len < 4) ? (__builtin_constant_p ("begin") && ((size_t)(const void *)(("begin") + 1) - (size_t)(const void *)("begin") == 1) ? __builtin_strcmp ((parser->parser_lex_p), "begin") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("begin"); register int __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("begin") && ((size_t)(const void *)(("begin") + 1) - (size_t)(const void *)("begin") == 1) && (__s2_len = strlen ("begin"), __s2_len < 4) ? (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) ? __builtin_strcmp ((parser->parser_lex_p), "begin") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((parser->parser_lex_p)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("begin"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("begin"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("begin"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("begin"))[3]); } } __result; }))) : __builtin_strcmp ((parser->parser_lex_p), "begin")))); }) : strncmp ((parser->parser_lex_p), "begin", 5))) == 0 && rb_isspace((unsigned char)((parser->parser_lex_p)[5]))) {
+ for (;;) {
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ c = parser_nextc(parser);
+ if (c == -1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "embedded document meets end of file");
+ return 0;
+ }
+ if (c != '=') continue;
+ if ((__extension__ (__builtin_constant_p (3) && ((__builtin_constant_p ((parser->parser_lex_p)) && strlen ((parser->parser_lex_p)) < ((size_t) (3))) || (__builtin_constant_p ("end") && strlen ("end") < ((size_t) (3)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((parser->parser_lex_p)) && __builtin_constant_p ("end") && (__s1_len = strlen ((parser->parser_lex_p)), __s2_len = strlen ("end"), (!((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) || __s2_len >= 4)) ? __builtin_strcmp ((parser->parser_lex_p), "end") : (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) && (__s1_len = strlen ((parser->parser_lex_p)), __s1_len < 4) ? (__builtin_constant_p ("end") && ((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) ? __builtin_strcmp ((parser->parser_lex_p), "end") : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ("end"); register int __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((parser->parser_lex_p)))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ("end") && ((size_t)(const void *)(("end") + 1) - (size_t)(const void *)("end") == 1) && (__s2_len = strlen ("end"), __s2_len < 4) ? (__builtin_constant_p ((parser->parser_lex_p)) && ((size_t)(const void *)(((parser->parser_lex_p)) + 1) - (size_t)(const void *)((parser->parser_lex_p)) == 1) ? __builtin_strcmp ((parser->parser_lex_p), "end") : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((parser->parser_lex_p)); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ("end"))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ("end"))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ("end"))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ("end"))[3]); } } __result; }))) : __builtin_strcmp ((parser->parser_lex_p), "end")))); }) : strncmp ((parser->parser_lex_p), "end", 3))) == 0 &&
+ ((parser->parser_lex_p) + 3 == (parser->parser_lex_pend) || rb_isspace((unsigned char)((parser->parser_lex_p)[3])))) {
+ break;
+ }
+ }
+ (parser->parser_lex_p = parser->parser_lex_pend);
+ goto retry;
+ }
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ if ((c = parser_nextc(parser)) == '=') {
+ if ((c = parser_nextc(parser)) == '=') {
+ return 326;
+ }
+ parser_pushback(parser, c);
+ return 325;
+ }
+ if (c == '~') {
+ return 332;
+ }
+ else if (c == '>') {
+ return 343;
+ }
+ parser_pushback(parser, c);
+ return '=';
+ case '<':
+ c = parser_nextc(parser);
+ if (c == '<' &&
+ (parser->parser_lex_state) != EXPR_END &&
+ (parser->parser_lex_state) != EXPR_DOT &&
+ (parser->parser_lex_state) != EXPR_ENDARG &&
+ (parser->parser_lex_state) != EXPR_CLASS &&
+ (!((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) || space_seen)) {
+ int token = parser_heredoc_identifier(parser);
+ if (token) return token;
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ if (c == '=') {
+ if ((c = parser_nextc(parser)) == '>') {
+ return 324;
+ }
+ parser_pushback(parser, c);
+ return 329;
+ }
+ if (c == '<') {
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 338;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ return 338;
+ }
+ parser_pushback(parser, c);
+ return '<';
+ case '>':
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ if ((c = parser_nextc(parser)) == '=') {
+ return 328;
+ }
+ if (c == '>') {
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 339;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ return 339;
+ }
+ parser_pushback(parser, c);
+ return '>';
+ case '"':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dquote), ('"') | ((0) << (8 * 2)), 0);
+ return 354;
+ case '`':
+ if ((parser->parser_lex_state) == EXPR_FNAME) {
+ (parser->parser_lex_state) = EXPR_END;
+ return c;
+ }
+ if ((parser->parser_lex_state) == EXPR_DOT) {
+ if (cmd_state)
+ (parser->parser_lex_state) = EXPR_CMDARG;
+ else
+ (parser->parser_lex_state) = EXPR_ARG;
+ return c;
+ }
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_xquote), ('`') | ((0) << (8 * 2)), 0);
+ return 355;
+ case '\'':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_squote), ('\'') | ((0) << (8 * 2)), 0);
+ return 354;
+ case '?':
+ if ((parser->parser_lex_state) == EXPR_END || (parser->parser_lex_state) == EXPR_ENDARG) {
+ (parser->parser_lex_state) = EXPR_VALUE;
+ return '?';
+ }
+ c = parser_nextc(parser);
+ if (c == -1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "incomplete character syntax");
+ return 0;
+ }
+ if ((parser->enc)->is_code_ctype(c,9,parser->enc)) {
+ if (!((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
+ int c2 = 0;
+ switch (c) {
+ case ' ':
+ c2 = 's';
+ break;
+ case '\n':
+ c2 = 'n';
+ break;
+ case '\t':
+ c2 = 't';
+ break;
+ case '\v':
+ c2 = 'v';
+ break;
+ case '\r':
+ c2 = 'r';
+ break;
+ case '\f':
+ c2 = 'f';
+ break;
+ }
+ if (c2) {
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid character syntax; use ?\\%c", c2);
+ }
+ }
+ ternary:
+ parser_pushback(parser, c);
+ (parser->parser_lex_state) = EXPR_VALUE;
+ return '?';
+ }
+ parser_newtok(parser);
+ enc = parser->enc;
+ if (!((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ }
+ else if (((parser->enc)->is_code_ctype(c,13,parser->enc) || c == '_') &&
+ (parser->parser_lex_p) < (parser->parser_lex_pend) && ((parser->enc)->is_code_ctype(*(parser->parser_lex_p),13,parser->enc) || (*(parser->parser_lex_p)) == '_' || !((unsigned long)((unsigned char)(*(parser->parser_lex_p))) < 128))) {
+ goto ternary;
+ }
+ else if (c == '\\') {
+ if (((parser->parser_lex_p) < (parser->parser_lex_pend) && ('u') == *(parser->parser_lex_p))) {
+ parser_nextc(parser);
+ c = parser_tokadd_utf8(parser, &enc, 0, 0, 0);
+ if (0x80 <= c) {
+ parser_tokaddmbc(parser, c, enc);
+ }
+ else {
+ parser_tokadd(parser, c);
+ }
+ }
+ else {
+ c = parser_read_escape(parser, 0, &enc);
+ parser_tokadd(parser, c);
+ }
+ }
+ else {
+ parser_tokadd(parser, c);
+ }
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_STR), (VALUE)(parser_str_new(((parser->parser_tokenbuf)),((parser->parser_tokidx)),(enc),(0),parser->enc)), (VALUE)(0), (VALUE)(0));
+ (parser->parser_lex_state) = EXPR_END;
+ return 317;
+ case '&':
+ if ((c = parser_nextc(parser)) == '&') {
+ (parser->parser_lex_state) = EXPR_BEG;
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 330;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ return 330;
+ }
+ else if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '&';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`&' interpreted as argument prefix");
+ c = 351;
+ }
+ else if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ c = 351;
+ }
+ else {
+ c = '&';
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG;
+ }
+ return c;
+ case '|':
+ if ((c = parser_nextc(parser)) == '|') {
+ (parser->parser_lex_state) = EXPR_BEG;
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = 331;
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ return 331;
+ }
+ if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '|';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_BEG;
+ }
+ parser_pushback(parser, c);
+ return '|';
+ case '+':
+ c = parser_nextc(parser);
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ if (c == '@') {
+ return 321;
+ }
+ parser_pushback(parser, c);
+ return '+';
+ }
+ if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '+';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
+ (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c)))) {
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) arg_ambiguous_gen(parser);
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_pushback(parser, c);
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ c = '+';
+ goto start_num;
+ }
+ return 321;
+ }
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_pushback(parser, c);
+ return '+';
+ case '-':
+ c = parser_nextc(parser);
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ if (c == '@') {
+ return 322;
+ }
+ parser_pushback(parser, c);
+ return '-';
+ }
+ if (c == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '-';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ if (c == '>') {
+ (parser->parser_lex_state) = EXPR_ARG;
+ return 352;
+ }
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
+ (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c)))) {
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) arg_ambiguous_gen(parser);
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_pushback(parser, c);
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ return 364;
+ }
+ return 322;
+ }
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_pushback(parser, c);
+ return '-';
+ case '.':
+ (parser->parser_lex_state) = EXPR_BEG;
+ if ((c = parser_nextc(parser)) == '.') {
+ if ((c = parser_nextc(parser)) == '.') {
+ return 335;
+ }
+ parser_pushback(parser, c);
+ return 334;
+ }
+ parser_pushback(parser, c);
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ parser_yyerror(parser, "no .<digit> floating literal anymore; put 0 before dot");
+ }
+ (parser->parser_lex_state) = EXPR_DOT;
+ return '.';
+ start_num:
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ {
+ int is_float, seen_point, seen_e, nondigit;
+ is_float = seen_point = seen_e = nondigit = 0;
+ (parser->parser_lex_state) = EXPR_END;
+ parser_newtok(parser);
+ if (c == '-' || c == '+') {
+ parser_tokadd(parser, c);
+ c = parser_nextc(parser);
+ }
+ if (c == '0') {
+ int start = (parser->parser_tokidx);
+ c = parser_nextc(parser);
+ if (c == 'x' || c == 'X') {
+ c = parser_nextc(parser);
+ if (c != -1 && rb_isxdigit((unsigned char)(c))) {
+ do {
+ if (c == '_') {
+ if (nondigit) break;
+ nondigit = c;
+ continue;
+ }
+ if (!rb_isxdigit((unsigned char)(c))) break;
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ } while ((c = parser_nextc(parser)) != -1);
+ }
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if ((parser->parser_tokidx) == start) {
+ parser_yyerror(parser, "numeric literal without digits");
+ }
+ else if (nondigit) goto trailing_uc;
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 16, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ if (c == 'b' || c == 'B') {
+ c = parser_nextc(parser);
+ if (c == '0' || c == '1') {
+ do {
+ if (c == '_') {
+ if (nondigit) break;
+ nondigit = c;
+ continue;
+ }
+ if (c != '0' && c != '1') break;
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ } while ((c = parser_nextc(parser)) != -1);
+ }
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if ((parser->parser_tokidx) == start) {
+ parser_yyerror(parser, "numeric literal without digits");
+ }
+ else if (nondigit) goto trailing_uc;
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 2, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ if (c == 'd' || c == 'D') {
+ c = parser_nextc(parser);
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ do {
+ if (c == '_') {
+ if (nondigit) break;
+ nondigit = c;
+ continue;
+ }
+ if (!rb_isdigit((unsigned char)(c))) break;
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ } while ((c = parser_nextc(parser)) != -1);
+ }
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if ((parser->parser_tokidx) == start) {
+ parser_yyerror(parser, "numeric literal without digits");
+ }
+ else if (nondigit) goto trailing_uc;
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 10, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ if (c == '_') {
+ goto octal_number;
+ }
+ if (c == 'o' || c == 'O') {
+ c = parser_nextc(parser);
+ if (c == -1 || c == '_' || !rb_isdigit((unsigned char)(c))) {
+ parser_yyerror(parser, "numeric literal without digits");
+ }
+ }
+ if (c >= '0' && c <= '7') {
+ octal_number:
+ do {
+ if (c == '_') {
+ if (nondigit) break;
+ nondigit = c;
+ continue;
+ }
+ if (c < '0' || c > '9') break;
+ if (c > '7') goto invalid_octal;
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ } while ((c = parser_nextc(parser)) != -1);
+ if ((parser->parser_tokidx) > start) {
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if (nondigit) goto trailing_uc;
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 8, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ if (nondigit) {
+ parser_pushback(parser, c);
+ goto trailing_uc;
+ }
+ }
+ if (c > '7' && c <= '9') {
+ invalid_octal:
+ parser_yyerror(parser, "Invalid octal digit");
+ }
+ else if (c == '.' || c == 'e' || c == 'E') {
+ parser_tokadd(parser, '0');
+ }
+ else {
+ parser_pushback(parser, c);
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ }
+ for (;;) {
+ switch (c) {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ nondigit = 0;
+ parser_tokadd(parser, c);
+ break;
+ case '.':
+ if (nondigit) goto trailing_uc;
+ if (seen_point || seen_e) {
+ goto decode_num;
+ }
+ else {
+ int c0 = parser_nextc(parser);
+ if (c == -1 || !rb_isdigit((unsigned char)(c0))) {
+ parser_pushback(parser, c0);
+ goto decode_num;
+ }
+ c = c0;
+ }
+ parser_tokadd(parser, '.');
+ parser_tokadd(parser, c);
+ is_float++;
+ seen_point++;
+ nondigit = 0;
+ break;
+ case 'e':
+ case 'E':
+ if (nondigit) {
+ parser_pushback(parser, c);
+ c = nondigit;
+ goto decode_num;
+ }
+ if (seen_e) {
+ goto decode_num;
+ }
+ parser_tokadd(parser, c);
+ seen_e++;
+ is_float++;
+ nondigit = c;
+ c = parser_nextc(parser);
+ if (c != '-' && c != '+') continue;
+ parser_tokadd(parser, c);
+ nondigit = c;
+ break;
+ case '_':
+ if (nondigit) goto decode_num;
+ nondigit = c;
+ break;
+ default:
+ goto decode_num;
+ }
+ c = parser_nextc(parser);
+ }
+ decode_num:
+ parser_pushback(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ if (nondigit) {
+ char tmp[30];
+ trailing_uc:
+ sprintf(tmp, "trailing `%c' in number", nondigit);
+ parser_yyerror(parser, tmp);
+ }
+ if (is_float) {
+ double d = ruby_strtod((parser->parser_tokenbuf),0);
+ if ((*__errno_location ()) == 34) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Float %s out of range", (parser->parser_tokenbuf));
+ (*__errno_location ()) = 0;
+ }
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_float_new(d)), (VALUE)(0), (VALUE)(0));
+ return 315;
+ }
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_LIT), (VALUE)(rb_cstr_to_inum((parser->parser_tokenbuf), 10, ((VALUE)RUBY_Qfalse))), (VALUE)(0), (VALUE)(0));
+ return 314;
+ }
+ case ')':
+ case ']':
+ (parser->parser_paren_nest)--;
+ case '}':
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack) >> 1) | ((parser->parser_cond_stack) & 1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack) >> 1) | ((parser->parser_cmdarg_stack) & 1));
+ if (c == ')')
+ (parser->parser_lex_state) = EXPR_END;
+ else
+ (parser->parser_lex_state) = EXPR_ENDARG;
+ return c;
+ case ':':
+ c = parser_nextc(parser);
+ if (c == ':') {
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
+ (parser->parser_lex_state) == EXPR_CLASS || (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen)) {
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 341;
+ }
+ (parser->parser_lex_state) = EXPR_DOT;
+ return 340;
+ }
+ if ((parser->parser_lex_state) == EXPR_END || (parser->parser_lex_state) == EXPR_ENDARG || (c != -1 && rb_isspace((unsigned char)(c)))) {
+ parser_pushback(parser, c);
+ (parser->parser_lex_state) = EXPR_BEG;
+ return ':';
+ }
+ switch (c) {
+ case '\'':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_ssym), (c) | ((0) << (8 * 2)), 0);
+ break;
+ case '"':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dsym), (c) | ((0) << (8 * 2)), 0);
+ break;
+ default:
+ parser_pushback(parser, c);
+ break;
+ }
+ (parser->parser_lex_state) = EXPR_FNAME;
+ return 353;
+ case '/':
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), ('/') | ((0) << (8 * 2)), 0);
+ return 356;
+ }
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '/';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ parser_pushback(parser, c);
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen) {
+ if (!rb_isspace((unsigned char)(c))) {
+ arg_ambiguous_gen(parser);
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), ('/') | ((0) << (8 * 2)), 0);
+ return 356;
+ }
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ return '/';
+ case '^':
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '^';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ parser_pushback(parser, c);
+ return '^';
+ case ';':
+ (parser->parser_lex_state) = EXPR_BEG;
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ return ';';
+ case ',':
+ (parser->parser_lex_state) = EXPR_BEG;
+ return ',';
+ case '~':
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ if ((c = parser_nextc(parser)) != '@') {
+ parser_pushback(parser, c);
+ }
+ (parser->parser_lex_state) = EXPR_ARG;
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_BEG;
+ }
+ return '~';
+ case '(':
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ c = 344;
+ }
+ else if (space_seen) {
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
+ c = 345;
+ }
+ }
+ (parser->parser_paren_nest)++;
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
+ (parser->parser_lex_state) = EXPR_BEG;
+ return c;
+ case '[':
+ (parser->parser_paren_nest)++;
+ if ((parser->parser_lex_state) == EXPR_FNAME || (parser->parser_lex_state) == EXPR_DOT) {
+ (parser->parser_lex_state) = EXPR_ARG;
+ if ((c = parser_nextc(parser)) == ']') {
+ if ((c = parser_nextc(parser)) == '=') {
+ return 337;
+ }
+ parser_pushback(parser, c);
+ return 336;
+ }
+ parser_pushback(parser, c);
+ return '[';
+ }
+ else if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ c = 347;
+ }
+ else if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen) {
+ c = 347;
+ }
+ (parser->parser_lex_state) = EXPR_BEG;
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
+ return c;
+ case '{':
+ if ((parser->parser_lpar_beg) && (parser->parser_lpar_beg) == (parser->parser_paren_nest)) {
+ (parser->parser_lex_state) = EXPR_BEG;
+ (parser->parser_lpar_beg) = 0;
+ --(parser->parser_paren_nest);
+ return 362;
+ }
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) || (parser->parser_lex_state) == EXPR_END)
+ c = '{';
+ else if ((parser->parser_lex_state) == EXPR_ENDARG)
+ c = 349;
+ else
+ c = 348;
+ ((parser->parser_cond_stack) = ((parser->parser_cond_stack)<<1)|((0)&1));
+ ((parser->parser_cmdarg_stack) = ((parser->parser_cmdarg_stack)<<1)|((0)&1));
+ (parser->parser_lex_state) = EXPR_BEG;
+ if (c != 348) (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ return c;
+ case '\\':
+ c = parser_nextc(parser);
+ if (c == '\n') {
+ space_seen = 1;
+ goto retry;
+ }
+ parser_pushback(parser, c);
+ return '\\';
+ case '%':
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS)) {
+ int term;
+ int paren;
+ c = parser_nextc(parser);
+ quotation:
+ if (c == -1 || !rb_isalnum((unsigned char)(c))) {
+ term = c;
+ c = 'Q';
+ }
+ else {
+ term = parser_nextc(parser);
+ if ((parser->enc)->is_code_ctype(term,13,parser->enc) || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)) {
+ parser_yyerror(parser, "unknown type of %string");
+ return 0;
+ }
+ }
+ if (c == -1 || term == -1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "unterminated quoted string meets end of file");
+ return 0;
+ }
+ paren = term;
+ if (term == '(') term = ')';
+ else if (term == '[') term = ']';
+ else if (term == '{') term = '}';
+ else if (term == '<') term = '>';
+ else paren = 0;
+ switch (c) {
+ case 'Q':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dquote), (term) | ((paren) << (8 * 2)), 0);
+ return 354;
+ case 'q':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_squote), (term) | ((paren) << (8 * 2)), 0);
+ return 354;
+ case 'W':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_dword), (term) | ((paren) << (8 * 2)), 0);
+ do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
+ parser_pushback(parser, c);
+ return 357;
+ case 'w':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_sword), (term) | ((paren) << (8 * 2)), 0);
+ do {c = parser_nextc(parser);} while (rb_isspace((unsigned char)(c)));
+ parser_pushback(parser, c);
+ return 358;
+ case 'x':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_xquote), (term) | ((paren) << (8 * 2)), 0);
+ return 355;
+ case 'r':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_regexp), (term) | ((paren) << (8 * 2)), 0);
+ return 356;
+ case 's':
+ (parser->parser_lex_strterm) = node_newnode(parser, NODE_ZARRAY, (str_ssym), (term) | ((paren) << (8 * 2)), 0);
+ (parser->parser_lex_state) = EXPR_FNAME;
+ return 353;
+ default:
+ parser_yyerror(parser, "unknown type of %string");
+ return 0;
+ }
+ }
+ if ((c = parser_nextc(parser)) == '=') {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = '%';
+ (parser->parser_lex_state) = EXPR_BEG;
+ return 342;
+ }
+ if (((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG) && space_seen && !rb_isspace((unsigned char)(c))) {
+ goto quotation;
+ }
+ switch ((parser->parser_lex_state)) {
+ case EXPR_FNAME: case EXPR_DOT:
+ (parser->parser_lex_state) = EXPR_ARG; break;
+ default:
+ (parser->parser_lex_state) = EXPR_BEG; break;
+ }
+ parser_pushback(parser, c);
+ return '%';
+ case '$':
+ last_state = (parser->parser_lex_state);
+ (parser->parser_lex_state) = EXPR_END;
+ parser_newtok(parser);
+ c = parser_nextc(parser);
+ switch (c) {
+ case '_':
+ c = parser_nextc(parser);
+ if ((!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ parser_tokadd(parser, '$');
+ parser_tokadd(parser, '_');
+ break;
+ }
+ parser_pushback(parser, c);
+ c = '_';
+ case '~':
+ case '*':
+ case '$':
+ case '?':
+ case '!':
+ case '@':
+ case '/':
+ case '\\':
+ case ';':
+ case ',':
+ case '.':
+ case '=':
+ case ':':
+ case '<':
+ case '>':
+ case '\"':
+ parser_tokadd(parser, '$');
+ parser_tokadd(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p((parser->parser_tokenbuf)) ? __extension__ (rb_intern2((parser->parser_tokenbuf), strlen((parser->parser_tokenbuf)))) : (rb_intern)((parser->parser_tokenbuf)));
+ return 309;
+ case '-':
+ parser_tokadd(parser, '$');
+ parser_tokadd(parser, c);
+ c = parser_nextc(parser);
+ if ((!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ }
+ else {
+ parser_pushback(parser, c);
+ }
+ gvar:
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p((parser->parser_tokenbuf)) ? __extension__ (rb_intern2((parser->parser_tokenbuf), strlen((parser->parser_tokenbuf)))) : (rb_intern)((parser->parser_tokenbuf)));
+ return 309;
+ case '&':
+ case '`':
+ case '\'':
+ case '+':
+ if (last_state == EXPR_FNAME) {
+ parser_tokadd(parser, '$');
+ parser_tokadd(parser, c);
+ goto gvar;
+ }
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_BACK_REF), (VALUE)(0), (VALUE)(c), (VALUE)(0));
+ return 319;
+ case '1': case '2': case '3':
+ case '4': case '5': case '6':
+ case '7': case '8': case '9':
+ parser_tokadd(parser, '$');
+ do {
+ parser_tokadd(parser, c);
+ c = parser_nextc(parser);
+ } while (c != -1 && rb_isdigit((unsigned char)(c)));
+ parser_pushback(parser, c);
+ if (last_state == EXPR_FNAME) goto gvar;
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ (*((YYSTYPE*)(parser->parser_yylval))).node = node_newnode(parser, (NODE_NTH_REF), (VALUE)(0), (VALUE)(atoi((parser->parser_tokenbuf)+1)), (VALUE)(0));
+ return 318;
+ default:
+ if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ parser_pushback(parser, c);
+ return '$';
+ }
+ case '0':
+ parser_tokadd(parser, '$');
+ }
+ break;
+ case '@':
+ c = parser_nextc(parser);
+ parser_newtok(parser);
+ parser_tokadd(parser, '@');
+ if (c == '@') {
+ parser_tokadd(parser, '@');
+ c = parser_nextc(parser);
+ }
+ if (c != -1 && rb_isdigit((unsigned char)(c))) {
+ if ((parser->parser_tokidx) == 1) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`@%c' is not allowed as an instance variable name", c);
+ }
+ else {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "`@@%c' is not allowed as a class variable name", c);
+ }
+ return 0;
+ }
+ if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ parser_pushback(parser, c);
+ return '@';
+ }
+ break;
+ case '_':
+ if (((parser->parser_lex_p) == (parser->parser_lex_pbeg) + 1) && parser_whole_match_p(parser,"__END__",7,0)) {
+ (parser->parser_ruby__end__seen) = 1;
+ parser->eofp = ((VALUE)RUBY_Qtrue);
+ return -1;
+ }
+ parser_newtok(parser);
+ break;
+ default:
+ if (!(!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128)))) {
+ rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Invalid char `\\x%02X' in expression", c);
+ goto retry;
+ }
+ parser_newtok(parser);
+ break;
+ }
+ mb = (((VALUE)1)<<(12 +8));
+ do {
+ if (!((unsigned long)((unsigned char)(c)) < 128)) mb = 0;
+ if (parser_tokadd_mbchar(parser, c) == -1) return 0;
+ c = parser_nextc(parser);
+ } while ((!parser->eofp && ((parser->enc)->is_code_ctype(*((parser->parser_lex_p)-1),13,parser->enc) || (*((parser->parser_lex_p)-1)) == '_' || !((unsigned long)((unsigned char)(*((parser->parser_lex_p)-1))) < 128))));
+ switch ((parser->parser_tokenbuf)[0]) {
+ case '@': case '$':
+ parser_pushback(parser, c);
+ break;
+ default:
+ if ((c == '!' || c == '?') && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('=') == *(parser->parser_lex_p))) {
+ parser_tokadd(parser, c);
+ }
+ else {
+ parser_pushback(parser, c);
+ }
+ }
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ {
+ int result = 0;
+ last_state = (parser->parser_lex_state);
+ switch ((parser->parser_tokenbuf)[0]) {
+ case '$':
+ (parser->parser_lex_state) = EXPR_END;
+ result = 309;
+ break;
+ case '@':
+ (parser->parser_lex_state) = EXPR_END;
+ if ((parser->parser_tokenbuf)[1] == '@')
+ result = 312;
+ else
+ result = 310;
+ break;
+ default:
+ if (((parser->parser_tokidx)>0?(parser->parser_tokenbuf)[(parser->parser_tokidx)-1]:0) == '!' || ((parser->parser_tokidx)>0?(parser->parser_tokenbuf)[(parser->parser_tokidx)-1]:0) == '?') {
+ result = 308;
+ }
+ else {
+ if ((parser->parser_lex_state) == EXPR_FNAME) {
+ if ((c = parser_nextc(parser)) == '=' && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('~') == *(parser->parser_lex_p)) && !((parser->parser_lex_p) < (parser->parser_lex_pend) && ('>') == *(parser->parser_lex_p)) &&
+ (!((parser->parser_lex_p) < (parser->parser_lex_pend) && ('=') == *(parser->parser_lex_p)) || ((parser->parser_lex_p) + 1 < (parser->parser_lex_pend) && (parser->parser_lex_p)[1] == '>'))) {
+ result = 307;
+ parser_tokadd(parser, c);
+ ((parser->parser_tokenbuf)[(parser->parser_tokidx)]='\0');
+ }
+ else {
+ parser_pushback(parser, c);
+ }
+ }
+ if (result == 0 && rb_isupper((unsigned char)((parser->parser_tokenbuf)[0]))) {
+ result = 311;
+ }
+ else {
+ result = 307;
+ }
+ }
+ if (((parser->parser_lex_state) == EXPR_BEG && !cmd_state) ||
+ (parser->parser_lex_state) == EXPR_ARG ||
+ (parser->parser_lex_state) == EXPR_CMDARG) {
+ if (((parser->parser_lex_p) < (parser->parser_lex_pend) && (':') == *(parser->parser_lex_p)) && !((parser->parser_lex_p) + 1 < (parser->parser_lex_pend) && (parser->parser_lex_p)[1] == ':')) {
+ (parser->parser_lex_state) = EXPR_BEG;
+ parser_nextc(parser);
+ (*((YYSTYPE*)(parser->parser_yylval))).id = rb_intern3((parser->parser_tokenbuf), (parser->parser_tokidx), parser->enc);
+ return 313;
+ }
+ }
+ if (mb == (((VALUE)1)<<(12 +8)) && (parser->parser_lex_state) != EXPR_DOT) {
+ const struct kwtable *kw;
+ kw = rb_reserved_word((parser->parser_tokenbuf), (parser->parser_tokidx));
+ if (kw) {
+ enum lex_state_e state = (parser->parser_lex_state);
+ (parser->parser_lex_state) = kw->state;
+ if (state == EXPR_FNAME) {
+ (*((YYSTYPE*)(parser->parser_yylval))).id = (__builtin_constant_p(kw->name) ? __extension__ (rb_intern2(kw->name, strlen(kw->name))) : (rb_intern)(kw->name));
+ return kw->id[0];
+ }
+ if (kw->id[0] == 281) {
+ (parser->parser_command_start) = ((VALUE)RUBY_Qtrue);
+ if ((parser->parser_lpar_beg) && (parser->parser_lpar_beg) == (parser->parser_paren_nest)) {
+ (parser->parser_lpar_beg) = 0;
+ --(parser->parser_paren_nest);
+ return 284;
+ }
+ if (((parser->parser_cond_stack)&1)) return 282;
+ if (((parser->parser_cmdarg_stack)&1) && state != EXPR_CMDARG)
+ return 283;
+ if (state == EXPR_ENDARG || state == EXPR_BEG)
+ return 283;
+ return 281;
+ }
+ if (state == EXPR_BEG || state == EXPR_VALUE)
+ return kw->id[0];
+ else {
+ if (kw->id[0] != kw->id[1])
+ (parser->parser_lex_state) = EXPR_BEG;
+ return kw->id[1];
+ }
+ }
+ }
+ if (((parser->parser_lex_state) == EXPR_BEG || (parser->parser_lex_state) == EXPR_MID || (parser->parser_lex_state) == EXPR_VALUE || (parser->parser_lex_state) == EXPR_CLASS) ||
+ (parser->parser_lex_state) == EXPR_DOT ||
+ ((parser->parser_lex_state) == EXPR_ARG || (parser->parser_lex_state) == EXPR_CMDARG)) {
+ if (cmd_state) {
+ (parser->parser_lex_state) = EXPR_CMDARG;
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_ARG;
+ }
+ }
+ else {
+ (parser->parser_lex_state) = EXPR_END;
+ }
+ }
+ {
+ ID ident = rb_intern3((parser->parser_tokenbuf), (parser->parser_tokidx), parser->enc);
+ (*((YYSTYPE*)(parser->parser_yylval))).id = ident;
+ if (last_state != EXPR_DOT && (((ident)>376)&&((ident)&0x07)==0x00) && lvar_defined_gen(parser, ident)) {
+ (parser->parser_lex_state) = EXPR_END;
+ }
+ }
+ return result;
+ }
+}
+static int
+yylex(void *lval, void *p)
+{
+ struct parser_params *parser = (struct parser_params*)p;
+ int t;
+ parser->parser_yylval = lval;
+ parser->parser_yylval->val = ((VALUE)RUBY_Qundef);
+ t = parser_yylex(parser);
+ return t;
+}
+static NODE*
+node_newnode(struct parser_params *parser, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
+{
+ NODE *n = (rb_node_newnode)(type, a0, a1, a2);
+ ((struct RNode*)(n))->flags=((((struct RNode*)(n))->flags&~(-1<<(8 +7)))|((((parser->parser_ruby_sourceline))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+ return n;
+}
+enum node_type
+nodetype(NODE *node)
+{
+ return (enum node_type)((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8));
+}
+int
+nodeline(NODE *node)
+{
+ return ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
+}
+static NODE*
+newline_node(NODE *node)
+{
+ if (node) {
+ node = remove_begin(node);
+ node->flags |= (((VALUE)1)<<7);
+ }
+ return node;
+}
+static void
+fixpos(NODE *node, NODE *orig)
+{
+ if (!node) return;
+ if (!orig) return;
+ if (orig == (NODE*)1) return;
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(-1<<(8 +7)))|(((((VALUE)(((((struct RNode*)(orig)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))<<(8 +7)));
+}
+static void
+parser_warning(struct parser_params *parser, NODE *node, const char *mesg)
+{
+ rb_compile_warning((parser->parser_ruby_sourcefile), ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))), "%s", mesg);
+}
+static void
+parser_warn(struct parser_params *parser, NODE *node, const char *mesg)
+{
+ rb_compile_warn((parser->parser_ruby_sourcefile), ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1))), "%s", mesg);
+}
+static NODE*
+block_append_gen(struct parser_params *parser, NODE *head, NODE *tail)
+{
+ NODE *end, *h = head, *nd;
+ if (tail == 0) return head;
+ if (h == 0) return tail;
+ switch (((int) (((((struct RNode*)(h)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_SELF:
+ case NODE_TRUE:
+ case NODE_FALSE:
+ case NODE_NIL:
+ parser_warning(parser, h, "unused literal ignored");
+ return tail;
+ default:
+ h = end = node_newnode(parser, (NODE_BLOCK), (VALUE)(head), (VALUE)(0), (VALUE)(0));
+ end->u2.node = end;
+ fixpos(end, head);
+ head = end;
+ break;
+ case NODE_BLOCK:
+ end = h->u2.node;
+ break;
+ }
+ nd = end->u1.node;
+ switch (((int) (((((struct RNode*)(nd)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_RETURN:
+ case NODE_BREAK:
+ case NODE_NEXT:
+ case NODE_REDO:
+ case NODE_RETRY:
+ if ((((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) {
+ parser_warning(parser, nd, "statement not reached");
+ }
+ break;
+ default:
+ break;
+ }
+ if (((int) (((((struct RNode*)(tail)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) {
+ tail = node_newnode(parser, (NODE_BLOCK), (VALUE)(tail), (VALUE)(0), (VALUE)(0));
+ tail->u2.node = tail;
+ }
+ end->u3.node = tail;
+ h->u2.node = tail->u2.node;
+ return head;
+}
+static NODE*
+list_append_gen(struct parser_params *parser, NODE *list, NODE *item)
+{
+ NODE *last;
+ if (list == 0) return node_newnode(parser, (NODE_ARRAY), (VALUE)(item), (VALUE)(1), (VALUE)(0));
+ if (list->u3.node) {
+ last = list->u3.node->u2.node;
+ }
+ else {
+ last = list;
+ }
+ list->u2.argc += 1;
+ last->u3.node = node_newnode(parser, (NODE_ARRAY), (VALUE)(item), (VALUE)(1), (VALUE)(0));
+ list->u3.node->u2.node = last->u3.node;
+ return list;
+}
+static NODE*
+list_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
+{
+ NODE *last;
+ if (head->u3.node) {
+ last = head->u3.node->u2.node;
+ }
+ else {
+ last = head;
+ }
+ head->u2.argc += tail->u2.argc;
+ last->u3.node = tail;
+ if (tail->u3.node) {
+ head->u3.node->u2.node = tail->u3.node->u2.node;
+ }
+ else {
+ head->u3.node->u2.node = tail;
+ }
+ return head;
+}
+static int
+literal_concat0(struct parser_params *parser, VALUE head, VALUE tail)
+{
+ if (!rb_enc_compatible(head, tail)) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "string literal encodings differ (%s / %s)",
+ (rb_enc_get(head))->name,
+ (rb_enc_get(tail))->name);
+ rb_str_resize(head, 0);
+ rb_str_resize(tail, 0);
+ return 0;
+ }
+ rb_str_buf_append(head, tail);
+ return 1;
+}
+static NODE *
+literal_concat_gen(struct parser_params *parser, NODE *head, NODE *tail)
+{
+ enum node_type htype;
+ if (!head) return tail;
+ if (!tail) return head;
+ htype = ((int) (((((struct RNode*)(head)))->flags & (((VALUE)0x7f)<<8))>>8));
+ if (htype == NODE_EVSTR) {
+ NODE *node = node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(0));
+ head = list_append_gen(parser,node,head);
+ }
+ switch (((int) (((((struct RNode*)(tail)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR:
+ if (htype == NODE_STR) {
+ if (!literal_concat0(parser, head->u1.value, tail->u1.value)) {
+ error:
+ rb_gc_force_recycle((VALUE)head);
+ rb_gc_force_recycle((VALUE)tail);
+ return 0;
+ }
+ rb_gc_force_recycle((VALUE)tail);
+ }
+ else {
+ list_append_gen(parser,head,tail);
+ }
+ break;
+ case NODE_DSTR:
+ if (htype == NODE_STR) {
+ if (!literal_concat0(parser, head->u1.value, tail->u1.value))
+ goto error;
+ tail->u1.value = head->u1.value;
+ rb_gc_force_recycle((VALUE)head);
+ head = tail;
+ }
+ else {
+ ((struct RNode*)(tail))->flags=((((struct RNode*)(tail))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARRAY)<<8)&(((VALUE)0x7f)<<8)));
+ tail->u1.node = node_newnode(parser, (NODE_STR), (VALUE)(tail->u1.value), (VALUE)(0), (VALUE)(0));
+ list_concat_gen(parser,head,tail);
+ }
+ break;
+ case NODE_EVSTR:
+ if (htype == NODE_STR) {
+ ((struct RNode*)(head))->flags=((((struct RNode*)(head))->flags&~(((VALUE)0x7f)<<8))|(((NODE_DSTR)<<8)&(((VALUE)0x7f)<<8)));
+ head->u2.argc = 1;
+ }
+ list_append_gen(parser,head,tail);
+ break;
+ }
+ return head;
+}
+static NODE *
+evstr2dstr_gen(struct parser_params *parser, NODE *node)
+{
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_EVSTR) {
+ node = list_append_gen(parser,node_newnode(parser, (NODE_DSTR), (VALUE)(rb_enc_str_new(0,0,parser->enc)), (VALUE)(1), (VALUE)(0)),node);
+ }
+ return node;
+}
+static NODE *
+new_evstr_gen(struct parser_params *parser, NODE *node)
+{
+ NODE *head = node;
+ if (node) {
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_STR: case NODE_DSTR: case NODE_EVSTR:
+ return node;
+ }
+ }
+ return node_newnode(parser, (NODE_EVSTR), (VALUE)(0), (VALUE)((head)), (VALUE)(0));
+}
+static NODE *
+call_bin_op_gen(struct parser_params *parser, NODE *recv, ID id, NODE *arg1)
+{
+ value_expr_gen(parser, (recv) = remove_begin(recv));
+ value_expr_gen(parser, (arg1) = remove_begin(arg1));
+ return node_newnode(parser, (NODE_CALL), (VALUE)(recv), (VALUE)(id), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(arg1), (VALUE)(1), (VALUE)(0))));
+}
+static NODE *
+call_uni_op_gen(struct parser_params *parser, NODE *recv, ID id)
+{
+ value_expr_gen(parser, (recv) = remove_begin(recv));
+ return node_newnode(parser, (NODE_CALL), (VALUE)(recv), (VALUE)(id), (VALUE)(0));
+}
+static NODE*
+match_op_gen(struct parser_params *parser, NODE *node1, NODE *node2)
+{
+ value_expr_gen(parser, (node1) = remove_begin(node1));
+ value_expr_gen(parser, (node2) = remove_begin(node2));
+ if (node1) {
+ switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ return node_newnode(parser, (NODE_MATCH2), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
+ case NODE_LIT:
+ if (rb_type((VALUE)(node1->u1.value)) == RUBY_T_REGEXP) {
+ return node_newnode(parser, (NODE_MATCH2), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
+ }
+ }
+ }
+ if (node2) {
+ switch (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ return node_newnode(parser, (NODE_MATCH3), (VALUE)(node2), (VALUE)(node1), (VALUE)(0));
+ case NODE_LIT:
+ if (rb_type((VALUE)(node2->u1.value)) == RUBY_T_REGEXP) {
+ return node_newnode(parser, (NODE_MATCH3), (VALUE)(node2), (VALUE)(node1), (VALUE)(0));
+ }
+ }
+ }
+ return node_newnode(parser, (NODE_CALL), (VALUE)(node1), (VALUE)(332), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node2), (VALUE)(1), (VALUE)(0))));
+}
+static NODE*
+gettable_gen(struct parser_params *parser, ID id)
+{
+ if (id == 288) {
+ return node_newnode(parser, (NODE_SELF), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 289) {
+ return node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 290) {
+ return node_newnode(parser, (NODE_TRUE), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 291) {
+ return node_newnode(parser, (NODE_FALSE), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 305) {
+ return node_newnode(parser, (NODE_STR), (VALUE)(rb_external_str_new_with_enc((parser->parser_ruby_sourcefile), strlen((parser->parser_ruby_sourcefile)), rb_filesystem_encoding())), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 304) {
+ return node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)((parser->parser_ruby_sourceline)))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0));
+ }
+ else if (id == 306) {
+ return node_newnode(parser, (NODE_LIT), (VALUE)(rb_enc_from_encoding(parser->enc)), (VALUE)(0), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x00)) {
+ if (dyna_in_block_gen(parser) && dvar_defined_gen(parser, id)) return node_newnode(parser, (NODE_DVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ if (local_id_gen(parser, id)) return node_newnode(parser, (NODE_LVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ return node_newnode(parser, (NODE_VCALL), (VALUE)(0), (VALUE)(id), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x03)) {
+ return node_newnode(parser, (NODE_GVAR), (VALUE)(id), (VALUE)(0), (VALUE)(rb_global_entry(id)));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x01)) {
+ return node_newnode(parser, (NODE_IVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x05)) {
+ return node_newnode(parser, (NODE_CONST), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x06)) {
+ return node_newnode(parser, (NODE_CVAR), (VALUE)(id), (VALUE)(0), (VALUE)(0));
+ }
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "identifier %s is not valid to get", rb_id2name(id));
+ return 0;
+}
+static NODE*
+assignable_gen(struct parser_params *parser, ID id, NODE *val)
+{
+ if (!id) return 0;
+ if (id == 288) {
+ parser_yyerror(parser, "Can't change the value of self");
+ }
+ else if (id == 289) {
+ parser_yyerror(parser, "Can't assign to nil");
+ }
+ else if (id == 290) {
+ parser_yyerror(parser, "Can't assign to true");
+ }
+ else if (id == 291) {
+ parser_yyerror(parser, "Can't assign to false");
+ }
+ else if (id == 305) {
+ parser_yyerror(parser, "Can't assign to __FILE__");
+ }
+ else if (id == 304) {
+ parser_yyerror(parser, "Can't assign to __LINE__");
+ }
+ else if (id == 306) {
+ parser_yyerror(parser, "Can't assign to __ENCODING__");
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x00)) {
+ if (dyna_in_block_gen(parser)) {
+ if (dvar_curr_gen(parser, id)) {
+ return node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else if (dvar_defined_gen(parser, id)) {
+ return node_newnode(parser, (NODE_DASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else if (local_id_gen(parser, id)) {
+ return node_newnode(parser, (NODE_LASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else{
+ local_var_gen(parser, id);;
+ return node_newnode(parser, (NODE_DASGN_CURR), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ }
+ else {
+ if (!local_id_gen(parser, id)) {
+ local_var_gen(parser, id);;
+ }
+ return node_newnode(parser, (NODE_LASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x03)) {
+ return node_newnode(parser, (NODE_GASGN), (VALUE)(id), (VALUE)(val), (VALUE)(rb_global_entry(id)));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x01)) {
+ return node_newnode(parser, (NODE_IASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x05)) {
+ if ((parser->parser_in_def) || (parser->parser_in_single))
+ parser_yyerror(parser, "dynamic constant assignment");
+ return node_newnode(parser, (NODE_CDECL), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else if ((((id)>376)&&((id)&0x07)==0x06)) {
+ return node_newnode(parser, (NODE_CVASGN), (VALUE)(id), (VALUE)(val), (VALUE)(0));
+ }
+ else {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "identifier %s is not valid to set", rb_id2name(id));
+ }
+ return 0;
+}
+static void
+shadowing_lvar_gen(struct parser_params *parser, ID name)
+{
+ ID uscore;
+ do { static ID rb_intern_id_cache; if (!rb_intern_id_cache) rb_intern_id_cache = rb_intern2("_", strlen("_")); uscore = rb_intern_id_cache; } while (0);
+ if (uscore == name) return;
+ if (dyna_in_block_gen(parser)) {
+ if (dvar_curr_gen(parser, name)) {
+ parser_yyerror(parser, "duplicated argument name");
+ }
+ else if (dvar_defined_gen(parser, name) || local_id_gen(parser, name)) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "shadowing outer local variable - %s", rb_id2name(name));
+ vtable_add((parser->parser_lvtbl)->vars, name);
+ }
+ }
+ else {
+ if (local_id_gen(parser, name)) {
+ parser_yyerror(parser, "duplicated argument name");
+ }
+ }
+}
+static void
+new_bv_gen(struct parser_params *parser, ID name)
+{
+ if (!name) return;
+ if (!(((name)>376)&&((name)&0x07)==0x00)) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "invalid local variable - %s",
+ rb_id2name(name));
+ return;
+ }
+ shadowing_lvar_gen(parser, name);
+ local_var_gen(parser, name);;
+}
+static NODE *
+aryset_gen(struct parser_params *parser, NODE *recv, NODE *idx)
+{
+ if (recv && ((int) (((((struct RNode*)(recv)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
+ recv = (NODE *)1;
+ return node_newnode(parser, (NODE_ATTRASGN), (VALUE)(recv), (VALUE)(337), (VALUE)(idx));
+}
+static void
+block_dup_check_gen(struct parser_params *parser, NODE *node1, NODE *node2)
+{
+ if (node2 && node1 && ((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BLOCK_PASS) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "both block arg and actual block given");
+ }
+}
+ID
+rb_id_attrset(ID id)
+{
+ id &= ~0x07;
+ id |= 0x04;
+ return id;
+}
+static NODE *
+attrset_gen(struct parser_params *parser, NODE *recv, ID id)
+{
+ if (recv && ((int) (((((struct RNode*)(recv)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SELF)
+ recv = (NODE *)1;
+ return node_newnode(parser, (NODE_ATTRASGN), (VALUE)(recv), (VALUE)(rb_id_attrset(id)), (VALUE)(0));
+}
+static void
+rb_backref_error_gen(struct parser_params *parser, NODE *node)
+{
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_NTH_REF:
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Can't set variable $%ld", node->u2.argc);
+ break;
+ case NODE_BACK_REF:
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "Can't set variable $%c", (int)node->u2.argc);
+ break;
+ }
+}
+static NODE *
+arg_concat_gen(struct parser_params *parser, NODE *node1, NODE *node2)
+{
+ if (!node2) return node1;
+ switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_BLOCK_PASS:
+ node1->u3.node = arg_concat_gen(parser,node1->u3.node,node2);
+ return node1;
+ case NODE_ARGSPUSH:
+ if (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY) break;
+ node1->u2.node = list_concat_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node1->u2.node), (VALUE)(1), (VALUE)(0)),node2);
+ ((struct RNode*)(node1))->flags=((((struct RNode*)(node1))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARGSCAT)<<8)&(((VALUE)0x7f)<<8)));
+ return node1;
+ case NODE_ARGSCAT:
+ if (((int) (((((struct RNode*)(node2)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY ||
+ ((int) (((((struct RNode*)(node1->u2.node)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_ARRAY) break;
+ node1->u2.node = list_concat_gen(parser,node1->u2.node,node2);
+ return node1;
+ }
+ return node_newnode(parser, (NODE_ARGSCAT), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
+}
+static NODE *
+arg_append_gen(struct parser_params *parser, NODE *node1, NODE *node2)
+{
+ if (!node1) return node_newnode(parser, (NODE_ARRAY), (VALUE)(node2), (VALUE)(1), (VALUE)(0));
+ switch (((int) (((((struct RNode*)(node1)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_ARRAY:
+ return list_append_gen(parser,node1,node2);
+ case NODE_BLOCK_PASS:
+ node1->u1.node = arg_append_gen(parser,node1->u1.node,node2);
+ return node1;
+ case NODE_ARGSPUSH:
+ node1->u2.node = list_append_gen(parser,node_newnode(parser, (NODE_ARRAY), (VALUE)(node1->u2.node), (VALUE)(1), (VALUE)(0)),node2);
+ ((struct RNode*)(node1))->flags=((((struct RNode*)(node1))->flags&~(((VALUE)0x7f)<<8))|(((NODE_ARGSCAT)<<8)&(((VALUE)0x7f)<<8)));
+ return node1;
+ }
+ return node_newnode(parser, (NODE_ARGSPUSH), (VALUE)(node1), (VALUE)(node2), (VALUE)(0));
+}
+static NODE *
+splat_array(NODE* node)
+{
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SPLAT) node = node->u1.node;
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) return node;
+ return 0;
+}
+static NODE *
+node_assign_gen(struct parser_params *parser, NODE *lhs, NODE *rhs)
+{
+ if (!lhs) return 0;
+ switch (((int) (((((struct RNode*)(lhs)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_GASGN:
+ case NODE_IASGN:
+ case NODE_IASGN2:
+ case NODE_LASGN:
+ case NODE_DASGN:
+ case NODE_DASGN_CURR:
+ case NODE_MASGN:
+ case NODE_CDECL:
+ case NODE_CVASGN:
+ lhs->u2.node = rhs;
+ break;
+ case NODE_ATTRASGN:
+ case NODE_CALL:
+ lhs->u3.node = arg_append_gen(parser,lhs->u3.node,rhs);
+ break;
+ default:
+ break;
+ }
+ return lhs;
+}
+static int
+value_expr_gen(struct parser_params *parser, NODE *node)
+{
+ int cond = 0;
+ if (!node) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "empty expression");
+ }
+ while (node) {
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DEFN:
+ case NODE_DEFS:
+ parser_warning(parser, node, "void value expression");
+ return ((VALUE)RUBY_Qfalse);
+ case NODE_RETURN:
+ case NODE_BREAK:
+ case NODE_NEXT:
+ case NODE_REDO:
+ case NODE_RETRY:
+ if (!cond) parser_yyerror(parser, "void value expression");
+ return ((VALUE)RUBY_Qfalse);
+ case NODE_BLOCK:
+ while (node->u3.node) {
+ node = node->u3.node;
+ }
+ node = node->u1.node;
+ break;
+ case NODE_BEGIN:
+ node = node->u2.node;
+ break;
+ case NODE_IF:
+ if (!node->u2.node) {
+ node = node->u3.node;
+ break;
+ }
+ else if (!node->u3.node) {
+ node = node->u2.node;
+ break;
+ }
+ if (!value_expr_gen(parser, (node->u2.node) = remove_begin(node->u2.node))) return ((VALUE)RUBY_Qfalse);
+ node = node->u3.node;
+ break;
+ case NODE_AND:
+ case NODE_OR:
+ cond = 1;
+ node = node->u2.node;
+ break;
+ default:
+ return ((VALUE)RUBY_Qtrue);
+ }
+ }
+ return ((VALUE)RUBY_Qtrue);
+}
+static void
+void_expr_gen(struct parser_params *parser, NODE *node)
+{
+ const char *useless = 0;
+ if (!(((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) return;
+ if (!node) return;
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_CALL:
+ switch (node->u2.id) {
+ case '+':
+ case '-':
+ case '*':
+ case '/':
+ case '%':
+ case 323:
+ case 321:
+ case 322:
+ case '|':
+ case '^':
+ case '&':
+ case 324:
+ case '>':
+ case 328:
+ case '<':
+ case 329:
+ case 325:
+ case 327:
+ useless = rb_id2name(node->u2.id);
+ break;
+ }
+ break;
+ case NODE_LVAR:
+ case NODE_DVAR:
+ case NODE_GVAR:
+ case NODE_IVAR:
+ case NODE_CVAR:
+ case NODE_NTH_REF:
+ case NODE_BACK_REF:
+ useless = "a variable";
+ break;
+ case NODE_CONST:
+ useless = "a constant";
+ break;
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_DSTR:
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ useless = "a literal";
+ break;
+ case NODE_COLON2:
+ case NODE_COLON3:
+ useless = "::";
+ break;
+ case NODE_DOT2:
+ useless = "..";
+ break;
+ case NODE_DOT3:
+ useless = "...";
+ break;
+ case NODE_SELF:
+ useless = "self";
+ break;
+ case NODE_NIL:
+ useless = "nil";
+ break;
+ case NODE_TRUE:
+ useless = "true";
+ break;
+ case NODE_FALSE:
+ useless = "false";
+ break;
+ case NODE_DEFINED:
+ useless = "defined?";
+ break;
+ }
+ if (useless) {
+ int line = (parser->parser_ruby_sourceline);
+ (parser->parser_ruby_sourceline) = ((VALUE)(((((struct RNode*)(node)))->flags>>(8 +7))&(((long)1<<(sizeof(VALUE)*8 -(8 +7)))-1)));
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "useless use of %s in void context", useless);
+ (parser->parser_ruby_sourceline) = line;
+ }
+}
+static void
+void_stmts_gen(struct parser_params *parser, NODE *node)
+{
+ if (!(((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0)) return;
+ if (!node) return;
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) != NODE_BLOCK) return;
+ for (;;) {
+ if (!node->u3.node) return;
+ void_expr_gen(parser, (node->u1.node));
+ node = node->u3.node;
+ }
+}
+static NODE *
+remove_begin(NODE *node)
+{
+ NODE **n = &node, *n1 = node;
+ while (n1 && ((int) (((((struct RNode*)(n1)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BEGIN && n1->u2.node) {
+ *n = n1 = n1->u2.node;
+ }
+ return node;
+}
+static void
+reduce_nodes_gen(struct parser_params *parser, NODE **body)
+{
+ NODE *node = *body;
+ if (!node) {
+ *body = node_newnode(parser, (NODE_NIL), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ return;
+ }
+ while (node) {
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ end:
+ case NODE_NIL:
+ *body = 0;
+ return;
+ case NODE_RETURN:
+ *body = node = node->u1.node;
+ continue;
+ case NODE_BEGIN:
+ *body = node = node->u2.node;
+ continue;
+ case NODE_BLOCK:
+ body = &node->u2.node->u1.node;
+ break;
+ case NODE_IF:
+ if (((!node->u2.node) ? (node->u3.node ? (body = &node->u3.node, 1) : 0) : (!node->u3.node) ? (body = &node->u2.node, 1) : (reduce_nodes_gen(parser,&node->u2.node), body = &node->u3.node, 1))) break;
+ return;
+ case NODE_CASE:
+ body = &node->u2.node;
+ break;
+ case NODE_WHEN:
+ if (!((!node->u2.node) ? (node->u3.node ? (body = &node->u3.node, 1) : 0) : (!node->u3.node) ? (body = &node->u2.node, 1) : (reduce_nodes_gen(parser,&node->u2.node), body = &node->u3.node, 1))) goto end;
+ break;
+ case NODE_ENSURE:
+ if (!((!node->u1.node) ? (node->u2.node ? (body = &node->u2.node, 1) : 0) : (!node->u2.node) ? (body = &node->u1.node, 1) : (reduce_nodes_gen(parser,&node->u1.node), body = &node->u2.node, 1))) goto end;
+ break;
+ case NODE_RESCUE:
+ if (!((!node->u1.node) ? (node->u2.node ? (body = &node->u2.node, 1) : 0) : (!node->u2.node) ? (body = &node->u1.node, 1) : (reduce_nodes_gen(parser,&node->u1.node), body = &node->u2.node, 1))) goto end;
+ break;
+ default:
+ return;
+ }
+ node = *body;
+ }
+}
+static int
+assign_in_cond(struct parser_params *parser, NODE *node)
+{
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_MASGN:
+ parser_yyerror(parser, "multiple assignment in conditional");
+ return 1;
+ case NODE_LASGN:
+ case NODE_DASGN:
+ case NODE_GASGN:
+ case NODE_IASGN:
+ break;
+ default:
+ return 0;
+ }
+ switch (((int) (((((struct RNode*)(node->u2.node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_NIL:
+ case NODE_TRUE:
+ case NODE_FALSE:
+ parser_warn(parser, node->u2.node, "found = in conditional, should be ==");
+ return 1;
+ case NODE_DSTR:
+ case NODE_XSTR:
+ case NODE_DXSTR:
+ case NODE_EVSTR:
+ case NODE_DREGX:
+ default:
+ break;
+ }
+ return 1;
+}
+static void
+warn_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
+{
+ if (!e_option_supplied(parser)) parser_warn(parser, node, str);
+}
+static void
+warning_unless_e_option(struct parser_params *parser, NODE *node, const char *str)
+{
+ if (!e_option_supplied(parser)) parser_warning(parser, node, str);
+}
+static void
+fixup_nodes(NODE **rootnode)
+{
+ NODE *node, *next, *head;
+ for (node = *rootnode; node; node = next) {
+ enum node_type type;
+ VALUE val;
+ next = node->u3.node;
+ head = node->u1.node;
+ rb_gc_force_recycle((VALUE)node);
+ *rootnode = next;
+ switch (type = ((int) (((((struct RNode*)(head)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DOT2:
+ case NODE_DOT3:
+ val = rb_range_new(head->u1.node->u1.value, head->u2.node->u1.value,
+ type == NODE_DOT3 ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse));
+ rb_gc_force_recycle((VALUE)head->u1.node);
+ rb_gc_force_recycle((VALUE)head->u2.node);
+ ((struct RNode*)(head))->flags=((((struct RNode*)(head))->flags&~(((VALUE)0x7f)<<8))|(((NODE_LIT)<<8)&(((VALUE)0x7f)<<8)));
+ head->u1.value = val;
+ break;
+ default:
+ break;
+ }
+ }
+}
+static NODE *cond0(struct parser_params*,NODE*);
+static NODE*
+range_op(struct parser_params *parser, NODE *node)
+{
+ enum node_type type;
+ if (node == 0) return 0;
+ type = ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8));
+ value_expr_gen(parser, (node) = remove_begin(node));
+ if (type == NODE_LIT && (((long)(node->u1.value))&RUBY_FIXNUM_FLAG)) {
+ warn_unless_e_option(parser, node, "integer literal in conditional range");
+ return node_newnode(parser, (NODE_CALL), (VALUE)(node), (VALUE)(325), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$.") ? __extension__ (rb_intern2("$.", strlen("$."))) : (rb_intern)("$."))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$.") ? __extension__ (rb_intern2("$.", strlen("$."))) : (rb_intern)("$.")))))), (VALUE)(1), (VALUE)(0))));
+ }
+ return cond0(parser, node);
+}
+static int
+literal_node(NODE *node)
+{
+ if (!node) return 1;
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_LIT:
+ case NODE_STR:
+ case NODE_DSTR:
+ case NODE_EVSTR:
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ case NODE_DSYM:
+ return 2;
+ case NODE_TRUE:
+ case NODE_FALSE:
+ case NODE_NIL:
+ return 1;
+ }
+ return 0;
+}
+static NODE*
+cond0(struct parser_params *parser, NODE *node)
+{
+ if (node == 0) return 0;
+ assign_in_cond(parser, node);
+ switch (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8))) {
+ case NODE_DSTR:
+ case NODE_EVSTR:
+ case NODE_STR:
+ rb_compile_warn((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "string literal in condition");
+ break;
+ case NODE_DREGX:
+ case NODE_DREGX_ONCE:
+ warning_unless_e_option(parser, node, "regex literal in condition");
+ return node_newnode(parser, (NODE_MATCH2), (VALUE)(node), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)(0));
+ case NODE_AND:
+ case NODE_OR:
+ node->u1.node = cond0(parser, node->u1.node);
+ node->u2.node = cond0(parser, node->u2.node);
+ break;
+ case NODE_DOT2:
+ case NODE_DOT3:
+ node->u1.node = range_op(parser, node->u1.node);
+ node->u2.node = range_op(parser, node->u2.node);
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DOT2) ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_FLIP2)<<8)&(((VALUE)0x7f)<<8)));
+ else if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_DOT3) ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_FLIP3)<<8)&(((VALUE)0x7f)<<8)));
+ if (!e_option_supplied(parser)) {
+ int b = literal_node(node->u1.node);
+ int e = literal_node(node->u2.node);
+ if ((b == 1 && e == 1) || (b + e >= 2 && (((VALUE)((*rb_ruby_verbose_ptr())) & ~((VALUE)RUBY_Qnil)) != 0))) {
+ parser_warn(parser, node, "range literal in condition");
+ }
+ }
+ break;
+ case NODE_DSYM:
+ parser_warning(parser, node, "literal in condition");
+ break;
+ case NODE_LIT:
+ if (rb_type((VALUE)(node->u1.value)) == RUBY_T_REGEXP) {
+ warn_unless_e_option(parser, node, "regex literal in condition");
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_MATCH)<<8)&(((VALUE)0x7f)<<8)));
+ }
+ else {
+ parser_warning(parser, node, "literal in condition");
+ }
+ default:
+ break;
+ }
+ return node;
+}
+static NODE*
+cond_gen(struct parser_params *parser, NODE *node)
+{
+ if (node == 0) return 0;
+ return cond0(parser, node);
+}
+static NODE*
+logop_gen(struct parser_params *parser, enum node_type type, NODE *left, NODE *right)
+{
+ value_expr_gen(parser, (left) = remove_begin(left));
+ if (left && ((int) (((((struct RNode*)(left)))->flags & (((VALUE)0x7f)<<8))>>8)) == type) {
+ NODE *node = left, *second;
+ while ((second = node->u2.node) != 0 && ((int) (((((struct RNode*)(second)))->flags & (((VALUE)0x7f)<<8))>>8)) == type) {
+ node = second;
+ }
+ node->u2.node = node_newnode(parser, (type), (VALUE)(second), (VALUE)(right), (VALUE)(0));
+ return left;
+ }
+ return node_newnode(parser, (type), (VALUE)(left), (VALUE)(right), (VALUE)(0));
+}
+static void
+no_blockarg(struct parser_params *parser, NODE *node)
+{
+ if (node && ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_BLOCK_PASS) {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "block argument should not be given");
+ }
+}
+static NODE *
+ret_args_gen(struct parser_params *parser, NODE *node)
+{
+ if (node) {
+ no_blockarg(parser, node);
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_ARRAY) {
+ if (node->u3.node == 0) {
+ node = node->u1.node;
+ }
+ else {
+ ((struct RNode*)(node))->flags=((((struct RNode*)(node))->flags&~(((VALUE)0x7f)<<8))|(((NODE_VALUES)<<8)&(((VALUE)0x7f)<<8)));
+ }
+ }
+ }
+ return node;
+}
+static NODE *
+new_yield_gen(struct parser_params *parser, NODE *node)
+{
+ long state = ((VALUE)RUBY_Qtrue);
+ if (node) {
+ no_blockarg(parser, node);
+ if (node && ((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_SPLAT) {
+ state = ((VALUE)RUBY_Qtrue);
+ }
+ }
+ else {
+ state = ((VALUE)RUBY_Qfalse);
+ }
+ return node_newnode(parser, (NODE_YIELD), (VALUE)(node), (VALUE)(0), (VALUE)(state));
+}
+static NODE*
+negate_lit(NODE *node)
+{
+ switch (rb_type((VALUE)(node->u1.value))) {
+ case RUBY_T_FIXNUM:
+ node->u1.value = ((VALUE)(((long)(-(((long)node->u1.value)>>(int)1)))<<1 | RUBY_FIXNUM_FLAG));
+ break;
+ case RUBY_T_BIGNUM:
+ node->u1.value = rb_funcall(node->u1.value,322,0,0);
+ break;
+ case RUBY_T_FLOAT:
+ ((struct RFloat*)(node->u1.value))->float_value = -(((struct RFloat*)(node->u1.value))->float_value);
+ break;
+ default:
+ break;
+ }
+ return node;
+}
+static NODE *
+arg_blk_pass(NODE *node1, NODE *node2)
+{
+ if (node2) {
+ node2->u1.node = node1;
+ return node2;
+ }
+ return node1;
+}
+static NODE*
+new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, ID b)
+{
+ int saved_line = (parser->parser_ruby_sourceline);
+ NODE *node;
+ NODE *i1, *i2 = 0;
+ node = node_newnode(parser, (NODE_ARGS), (VALUE)(o), (VALUE)(m ? m->u2.argc : 0), (VALUE)(0));
+ i1 = m ? m->u3.node : 0;
+ node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(r), (VALUE)(b), (VALUE)(0));
+ if (p) {
+ i2 = p->u3.node;
+ node->u3.node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(p->u1.id), (VALUE)(p->u2.argc), (VALUE)(0));
+ }
+ else if (i1) {
+ node->u3.node->u3.node = node_newnode(parser, (NODE_ARGS_AUX), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ if (i1 || i2) {
+ node->u3.node->u3.node->u3.node = node_newnode(parser, (NODE_AND), (VALUE)(i1), (VALUE)(i2), (VALUE)(0));
+ }
+ (parser->parser_ruby_sourceline) = saved_line;
+ return node;
+}
+static void
+local_push_gen(struct parser_params *parser, int inherit_dvars)
+{
+ struct local_vars *local;
+ local = (struct local_vars*)ruby_xmalloc(sizeof(struct local_vars));
+ local->prev = (parser->parser_lvtbl);
+ local->args = vtable_alloc(0);
+ local->vars = vtable_alloc(inherit_dvars ? ((void*)1) : ((void *)0));
+ (parser->parser_lvtbl) = local;
+}
+static void
+local_pop_gen(struct parser_params *parser)
+{
+ struct local_vars *local = (parser->parser_lvtbl)->prev;
+ vtable_free((parser->parser_lvtbl)->args);
+ vtable_free((parser->parser_lvtbl)->vars);
+ ruby_xfree((parser->parser_lvtbl));
+ (parser->parser_lvtbl) = local;
+}
+static ID*
+vtable_tblcpy(ID *buf, const struct vtable *src)
+{
+ int i, cnt = vtable_size(src);
+ if (cnt > 0) {
+ buf[0] = cnt;
+ for (i = 0; i < cnt; i++) {
+ buf[i] = src->tbl[i];
+ }
+ return buf;
+ }
+ return 0;
+}
+static ID*
+local_tbl_gen(struct parser_params *parser)
+{
+ int cnt = vtable_size((parser->parser_lvtbl)->args) + vtable_size((parser->parser_lvtbl)->vars);
+ ID *buf;
+ if (cnt <= 0) return 0;
+ buf = (ID*)ruby_xmalloc2((cnt + 1),sizeof(ID));
+ vtable_tblcpy(buf+1, (parser->parser_lvtbl)->args);
+ vtable_tblcpy(buf+vtable_size((parser->parser_lvtbl)->args)+1, (parser->parser_lvtbl)->vars);
+ buf[0] = cnt;
+ return buf;
+}
+static int
+arg_var_gen(struct parser_params *parser, ID id)
+{
+ vtable_add((parser->parser_lvtbl)->args, id);
+ return vtable_size((parser->parser_lvtbl)->args) - 1;
+}
+static int
+local_var_gen(struct parser_params *parser, ID id)
+{
+ vtable_add((parser->parser_lvtbl)->vars, id);
+ return vtable_size((parser->parser_lvtbl)->vars) - 1;
+}
+static int
+local_id_gen(struct parser_params *parser, ID id)
+{
+ struct vtable *vars, *args;
+ vars = (parser->parser_lvtbl)->vars;
+ args = (parser->parser_lvtbl)->args;
+ while (vars && ((VALUE)(vars->prev) & ~(VALUE)3)) {
+ vars = vars->prev;
+ args = args->prev;
+ }
+ if (vars && vars->prev == ((void*)1)) {
+ return rb_local_defined(id);
+ }
+ else {
+ return (vtable_included(args, id) ||
+ vtable_included(vars, id));
+ }
+}
+static void
+dyna_push_gen(struct parser_params *parser)
+{
+ (parser->parser_lvtbl)->args = vtable_alloc((parser->parser_lvtbl)->args);
+ (parser->parser_lvtbl)->vars = vtable_alloc((parser->parser_lvtbl)->vars);
+}
+static void
+dyna_pop_gen(struct parser_params *parser)
+{
+ struct vtable *tmp;
+ tmp = (parser->parser_lvtbl)->args;
+ (parser->parser_lvtbl)->args = (parser->parser_lvtbl)->args->prev;
+ vtable_free(tmp);
+ tmp = (parser->parser_lvtbl)->vars;
+ (parser->parser_lvtbl)->vars = (parser->parser_lvtbl)->vars->prev;
+ vtable_free(tmp);
+}
+static int
+dyna_in_block_gen(struct parser_params *parser)
+{
+ return ((VALUE)((parser->parser_lvtbl)->vars) & ~(VALUE)3) && (parser->parser_lvtbl)->vars->prev != ((void *)0);
+}
+static int
+dvar_defined_gen(struct parser_params *parser, ID id)
+{
+ struct vtable *vars, *args;
+ args = (parser->parser_lvtbl)->args;
+ vars = (parser->parser_lvtbl)->vars;
+ while (((VALUE)(vars) & ~(VALUE)3)) {
+ if (vtable_included(args, id)) {
+ return 1;
+ }
+ if (vtable_included(vars, id)) {
+ return 1;
+ }
+ args = args->prev;
+ vars = vars->prev;
+ }
+ if (vars == ((void*)1)) {
+ return rb_dvar_defined(id);
+ }
+ return 0;
+}
+static int
+dvar_curr_gen(struct parser_params *parser, ID id)
+{
+ return (vtable_included((parser->parser_lvtbl)->args, id) ||
+ vtable_included((parser->parser_lvtbl)->vars, id));
+}
+VALUE rb_reg_compile(VALUE str, int options);
+VALUE rb_reg_check_preprocess(VALUE);
+static void
+reg_fragment_setenc_gen(struct parser_params* parser, VALUE str, int options)
+{
+ int c = (((options)>>8)&0xff);
+ if (c) {
+ int opt, idx;
+ rb_char_to_option_kcode(c, &opt, &idx);
+ if (idx != (((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) != 1023 ? ((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) : rb_enc_get_index(str)) &&
+ rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
+ goto error;
+ }
+ do { VALUE rb_encoding_set_obj = (str); int encoding_set_enc_index = (idx); if (encoding_set_enc_index < 1023) do { ((struct RBasic*)(rb_encoding_set_obj))->flags &= ~(1023<<(12 +10)); ((struct RBasic*)(rb_encoding_set_obj))->flags |= (encoding_set_enc_index) << (12 +10);} while (0); else rb_enc_set_index(rb_encoding_set_obj, encoding_set_enc_index); } while (0);
+ }
+ else if (((options)&32)) {
+ if (!(((((struct RBasic*)(str))->flags & (1023<<(12 +10)))>>(12 +10)) == 0) &&
+ rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
+ c = 'n';
+ goto error;
+ }
+ rb_enc_associate(str, rb_ascii8bit_encoding());
+ }
+ else if (parser->enc == rb_usascii_encoding()) {
+ if (rb_enc_str_coderange(str) != (((VALUE)1)<<(12 +8))) {
+ rb_enc_associate(str, rb_usascii_encoding());
+ }
+ else {
+ rb_enc_associate(str, rb_ascii8bit_encoding());
+ }
+ }
+ return;
+ error:
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline),
+ "regexp encoding option '%c' differs from source encoding '%s'",
+ c, (rb_enc_get(str))->name);
+}
+static void
+reg_fragment_check_gen(struct parser_params* parser, VALUE str, int options)
+{
+ VALUE err;
+ reg_fragment_setenc_gen(parser, str, options);
+ err = rb_reg_check_preprocess(str);
+ if (err != ((VALUE)RUBY_Qnil)) {
+ err = rb_obj_as_string(err);
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", (!(((struct RBasic*)(err))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(err))->as.ary : ((struct RString*)(err))->as.heap.ptr));
+ (*(volatile VALUE *)&(err));
+ }
+}
+typedef struct {
+ struct parser_params* parser;
+ rb_encoding *enc;
+ NODE *succ_block;
+ NODE *fail_block;
+ int num;
+} reg_named_capture_assign_t;
+static int
+reg_named_capture_assign_iter(const OnigUChar *name, const OnigUChar *name_end,
+ int back_num, int *back_refs, OnigRegex regex, void *arg0)
+{
+ reg_named_capture_assign_t *arg = (reg_named_capture_assign_t*)arg0;
+ struct parser_params* parser = arg->parser;
+ rb_encoding *enc = arg->enc;
+ int len = name_end - name;
+ const char *s = (const char *)name;
+ ID var;
+ arg->num++;
+ if (arg->succ_block == 0) {
+ arg->succ_block = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ arg->fail_block = node_newnode(parser, (NODE_BEGIN), (VALUE)(0), (VALUE)(0), (VALUE)(0));
+ }
+ if (!len || (*name != '_' && ((unsigned long)((unsigned char)(*name)) < 128) && !(enc)->is_code_ctype(*name,6,enc)) ||
+ rb_reserved_word(s, len) || !rb_enc_symname2_p(s, len, enc)) {
+ return ST_CONTINUE;
+ }
+ var = rb_intern3(s, len, enc);
+ if (dvar_defined_gen(parser, var) || local_id_gen(parser, var)) {
+ rb_compile_warning((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "named capture conflicts a local variable - %s", rb_id2name(var));
+ }
+ arg->succ_block = block_append_gen(parser,arg->succ_block,newline_node(node_assign_gen(parser, assignable_gen(parser, var, 0), node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,(__builtin_constant_p("$~") ? __extension__ (rb_intern2("$~", strlen("$~"))) : (rb_intern)("$~")))), (VALUE)(idAREF), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)((((VALUE)(var)<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG)), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0)))))));
+ arg->fail_block = block_append_gen(parser,arg->fail_block,newline_node(node_assign_gen(parser, assignable_gen(parser, var, 0), node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)RUBY_Qnil)), (VALUE)(0), (VALUE)(0)))));
+ return ST_CONTINUE;
+}
+static NODE *
+reg_named_capture_assign_gen(struct parser_params* parser, VALUE regexp, NODE *match)
+{
+ reg_named_capture_assign_t arg;
+ arg.parser = parser;
+ arg.enc = rb_enc_get(regexp);
+ arg.succ_block = 0;
+ arg.fail_block = 0;
+ arg.num = 0;
+ onig_foreach_name(((struct RRegexp*)(regexp))->ptr, reg_named_capture_assign_iter, (void*)&arg);
+ if (arg.num == 0)
+ return match;
+ return
+ block_append_gen(parser,newline_node(match),node_newnode(parser, (NODE_IF), (VALUE)(gettable_gen(parser,(__builtin_constant_p("$~") ? __extension__ (rb_intern2("$~", strlen("$~"))) : (rb_intern)("$~")))), (VALUE)(block_append_gen(parser,newline_node(arg.succ_block),newline_node( node_newnode(parser, (NODE_CALL), (VALUE)(gettable_gen(parser,(__builtin_constant_p("$~") ? __extension__ (rb_intern2("$~", strlen("$~"))) : (rb_intern)("$~")))), (VALUE)((__builtin_constant_p("begin") ? __extension__ (rb_intern2("begin", strlen("begin"))) : (rb_intern)("begin"))), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)(((long)(0))<<1 | RUBY_FIXNUM_FLAG))), (VALUE)(0), (VALUE)(0))), (VALUE)(1), (VALUE)(0))))))), (VALUE)(block_append_gen(parser,newline_node(arg.fail_block),newline_node( node_newnode(parser, (NODE_LIT), (VALUE)(((VALUE)RUBY_Qnil)), (VALUE)(0), (VALUE)(0)))))));
+}
+static VALUE
+reg_compile_gen(struct parser_params* parser, VALUE str, int options)
+{
+ VALUE re;
+ VALUE err;
+ reg_fragment_setenc_gen(parser, str, options);
+ err = rb_errinfo();
+ re = rb_reg_compile(str, options & 0xff);
+ if (((VALUE)(re) == ((VALUE)RUBY_Qnil))) {
+ ID mesg = (__builtin_constant_p("mesg") ? __extension__ (rb_intern2("mesg", strlen("mesg"))) : (rb_intern)("mesg"));
+ VALUE m = rb_attr_get(rb_errinfo(), mesg);
+ rb_set_errinfo(err);
+ if (!((VALUE)(err) == ((VALUE)RUBY_Qnil))) {
+ rb_str_append(rb_str_cat(rb_attr_get(err, mesg), "\n", 1), m);
+ }
+ else {
+ parser->nerr++,rb_compile_error((parser->parser_ruby_sourcefile), (parser->parser_ruby_sourceline), "%s", (!(((struct RBasic*)(m))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(m))->as.ary : ((struct RString*)(m))->as.heap.ptr));
+ }
+ return ((VALUE)RUBY_Qnil);
+ }
+ return re;
+}
+void
+rb_gc_mark_parser(void)
+{
+}
+NODE*
+rb_parser_append_print(VALUE vparser, NODE *node)
+{
+ NODE *prelude = 0;
+ NODE *scope = node;
+ struct parser_params *parser;
+ if (!node) return node;
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ node = node->u2.node;
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_PRELUDE) {
+ prelude = node;
+ node = node->u2.node;
+ }
+ node = block_append_gen(parser,node,node_newnode(parser, (NODE_FCALL), (VALUE)(0), (VALUE)((__builtin_constant_p("print") ? __extension__ (rb_intern2("print", strlen("print"))) : (rb_intern)("print"))), (VALUE)(node_newnode(parser, (NODE_ARRAY), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)(1), (VALUE)(0)))));
+ if (prelude) {
+ prelude->u2.node = node;
+ scope->u2.node = prelude;
+ }
+ else {
+ scope->u2.node = node;
+ }
+ return scope;
+}
+NODE *
+rb_parser_while_loop(VALUE vparser, NODE *node, int chop, int split)
+{
+ NODE *prelude = 0;
+ NODE *scope = node;
+ struct parser_params *parser;
+ if (!node) return node;
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ node = node->u2.node;
+ if (((int) (((((struct RNode*)(node)))->flags & (((VALUE)0x7f)<<8))>>8)) == NODE_PRELUDE) {
+ prelude = node;
+ node = node->u2.node;
+ }
+ if (split) {
+ node = block_append_gen(parser,node_newnode(parser, (NODE_GASGN), (VALUE)((__builtin_constant_p("$F") ? __extension__ (rb_intern2("$F", strlen("$F"))) : (rb_intern)("$F"))), (VALUE)(node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)((__builtin_constant_p("split") ? __extension__ (rb_intern2("split", strlen("split"))) : (rb_intern)("split"))), (VALUE)(0))), (VALUE)(rb_global_entry((__builtin_constant_p("$F") ? __extension__ (rb_intern2("$F", strlen("$F"))) : (rb_intern)("$F"))))),node);
+ }
+ if (chop) {
+ node = block_append_gen(parser,node_newnode(parser, (NODE_CALL), (VALUE)(node_newnode(parser, (NODE_GVAR), (VALUE)((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_"))), (VALUE)(0), (VALUE)(rb_global_entry((__builtin_constant_p("$_") ? __extension__ (rb_intern2("$_", strlen("$_"))) : (rb_intern)("$_")))))), (VALUE)((__builtin_constant_p("chop!") ? __extension__ (rb_intern2("chop!", strlen("chop!"))) : (rb_intern)("chop!"))), (VALUE)(0)),node);
+ }
+ node = node_newnode(parser, (NODE_OPT_N), (VALUE)(0), (VALUE)(node), (VALUE)(0));
+ if (prelude) {
+ prelude->u2.node = node;
+ scope->u2.node = prelude;
+ }
+ else {
+ scope->u2.node = node;
+ }
+ return scope;
+}
+static const struct {
+ ID token;
+ const char *name;
+} op_tbl[] = {
+ {334, ".."},
+ {335, "..."},
+ {'+', "+(binary)"},
+ {'-', "-(binary)"},
+ {323, "**"},
+ {321, "+@"},
+ {322, "-@"},
+ {324, "<=>"},
+ {328, ">="},
+ {329, "<="},
+ {325, "=="},
+ {326, "==="},
+ {327, "!="},
+ {332, "=~"},
+ {333, "!~"},
+ {336, "[]"},
+ {337, "[]="},
+ {338, "<<"},
+ {339, ">>"},
+ {340, "::"},
+};
+static struct symbols {
+ ID last_id;
+ st_table *sym_id;
+ st_table *id_str;
+ st_table *ivar2_id;
+ st_table *id_ivar2;
+ VALUE op_sym[376];
+} global_symbols = {tLAST_ID};
+static const struct st_hash_type symhash = {
+ rb_str_hash_cmp,
+ rb_str_hash,
+};
+struct ivar2_key {
+ ID id;
+ VALUE klass;
+};
+static int
+ivar2_cmp(struct ivar2_key *key1, struct ivar2_key *key2)
+{
+ if (key1->id == key2->id && key1->klass == key2->klass) {
+ return 0;
+ }
+ return 1;
+}
+static int
+ivar2_hash(struct ivar2_key *key)
+{
+ return (key->id << 8) ^ (key->klass >> 2);
+}
+static const struct st_hash_type ivar2_hash_type = {
+ ivar2_cmp,
+ ivar2_hash,
+};
+void
+Init_sym(void)
+{
+ global_symbols.sym_id = st_init_table_with_size(&symhash, 1000);
+ global_symbols.id_str = st_init_numtable_with_size(1000);
+ global_symbols.ivar2_id = st_init_table_with_size(&ivar2_hash_type, 1000);
+ global_symbols.id_ivar2 = st_init_numtable_with_size(1000);
+ Init_id();
+}
+void
+rb_gc_mark_symbols(void)
+{
+ rb_mark_tbl(global_symbols.id_str);
+ rb_gc_mark_locations(global_symbols.op_sym,
+ global_symbols.op_sym + 376);
+}
+static ID
+internal_id_gen(struct parser_params *parser)
+{
+ ID id = (ID)vtable_size((parser->parser_lvtbl)->args) + (ID)vtable_size((parser->parser_lvtbl)->vars);
+ id += ((376 - 0x07) >> 3) + 1;
+ return 0x07 | (id << 3);
+}
+static int
+is_special_global_name(const char *m, const char *e, rb_encoding *enc)
+{
+ int mb = 0;
+ if (m >= e) return 0;
+ switch (*m) {
+ case '~': case '*': case '$': case '?': case '!': case '@':
+ case '/': case '\\': case ';': case ',': case '.': case '=':
+ case ':': case '<': case '>': case '\"':
+ case '&': case '`': case '\'': case '+':
+ case '0':
+ ++m;
+ break;
+ case '-':
+ ++m;
+ if (m < e && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) {
+ if (!((unsigned long)((unsigned char)(*m)) < 128)) mb = 1;
+ m += rb_enc_mbclen(m, e, enc);
+ }
+ break;
+ default:
+ if (!(enc)->is_code_ctype(*m,4,enc)) return 0;
+ do {
+ if (!((unsigned long)((unsigned char)(*m)) < 128)) mb = 1;
+ ++m;
+ } while ((enc)->is_code_ctype(*m,4,enc));
+ }
+ return m == e ? mb + 1 : 0;
+}
+int
+rb_symname_p(const char *name)
+{
+ return rb_enc_symname_p(name, rb_ascii8bit_encoding());
+}
+int
+rb_enc_symname_p(const char *name, rb_encoding *enc)
+{
+ return rb_enc_symname2_p(name, strlen(name), enc);
+}
+int
+rb_enc_symname2_p(const char *name, int len, rb_encoding *enc)
+{
+ const char *m = name;
+ const char *e = m + len;
+ int localid = ((VALUE)RUBY_Qfalse);
+ if (!m) return ((VALUE)RUBY_Qfalse);
+ switch (*m) {
+ case '\0':
+ return ((VALUE)RUBY_Qfalse);
+ case '$':
+ if (is_special_global_name(++m, e, enc)) return ((VALUE)RUBY_Qtrue);
+ goto id;
+ case '@':
+ if (*++m == '@') ++m;
+ goto id;
+ case '<':
+ switch (*++m) {
+ case '<': ++m; break;
+ case '=': if (*++m == '>') ++m; break;
+ default: break;
+ }
+ break;
+ case '>':
+ switch (*++m) {
+ case '>': case '=': ++m; break;
+ }
+ break;
+ case '=':
+ switch (*++m) {
+ case '~': ++m; break;
+ case '=': if (*++m == '=') ++m; break;
+ default: return ((VALUE)RUBY_Qfalse);
+ }
+ break;
+ case '*':
+ if (*++m == '*') ++m;
+ break;
+ case '+': case '-':
+ if (*++m == '@') ++m;
+ break;
+ case '|': case '^': case '&': case '/': case '%': case '~': case '`':
+ ++m;
+ break;
+ case '[':
+ if (*++m != ']') return ((VALUE)RUBY_Qfalse);
+ if (*++m == '=') ++m;
+ break;
+ case '!':
+ switch (*++m) {
+ case '\0': return ((VALUE)RUBY_Qtrue);
+ case '=': case '~': ++m; break;
+ default: return ((VALUE)RUBY_Qfalse);
+ }
+ break;
+ default:
+ localid = !(enc)->is_code_ctype(*m,10,enc);
+ id:
+ if (m >= e || (*m != '_' && !(enc)->is_code_ctype(*m,1,enc) && ((unsigned long)((unsigned char)(*m)) < 128)))
+ return ((VALUE)RUBY_Qfalse);
+ while (m < e && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) m += rb_enc_mbclen(m, e, enc);
+ if (localid) {
+ switch (*m) {
+ case '!': case '?': case '=': ++m;
+ }
+ }
+ break;
+ }
+ return *m ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
+}
+static ID
+register_symid(ID id, const char *name, long len, rb_encoding *enc)
+{
+ VALUE str = rb_enc_str_new(name, len, enc);
+ do {if ((!(((VALUE)((str)) & RUBY_IMMEDIATE_MASK) || !(((VALUE)((str)) & ~((VALUE)RUBY_Qnil)) != 0)) && (((struct RBasic*)((str)))->flags & RUBY_T_MASK) != RUBY_T_NODE)) ((struct RBasic*)((str)))->flags |= ((((VALUE)1)<<11));} while (0);
+ st_add_direct(global_symbols.sym_id, (st_data_t)str, id);
+ st_add_direct(global_symbols.id_str, id, (st_data_t)str);
+ return id;
+}
+ID
+rb_intern3(const char *name, long len, rb_encoding *enc)
+{
+ const char *m = name;
+ const char *e = m + len;
+ unsigned char c;
+ VALUE str;
+ ID id;
+ int last;
+ int mb;
+ struct RString fake_str;
+ fake_str.basic.flags = RUBY_T_STRING|(((VALUE)1)<<(12 +1))|(((VALUE)1)<<11);
+ fake_str.basic.klass = rb_cString;
+ fake_str.as.heap.len = len;
+ fake_str.as.heap.ptr = (char *)name;
+ fake_str.as.heap.aux.capa = len;
+ str = (VALUE)&fake_str;
+ rb_enc_associate(str, enc);
+ if (st_lookup(global_symbols.sym_id, str, (st_data_t *)&id))
+ return id;
+ if (rb_cString && !((enc)->min_enc_len==1 && !rb_enc_dummy_p(enc))) {
+ id = 0x07;
+ goto new_id;
+ }
+ last = len-1;
+ id = 0;
+ switch (*m) {
+ case '$':
+ id |= 0x03;
+ if ((mb = is_special_global_name(++m, e, enc)) != 0) {
+ if (!--mb) enc = rb_ascii8bit_encoding();
+ goto new_id;
+ }
+ break;
+ case '@':
+ if (m[1] == '@') {
+ m++;
+ id |= 0x06;
+ }
+ else {
+ id |= 0x01;
+ }
+ m++;
+ break;
+ default:
+ c = m[0];
+ if (c != '_' && ((c) < 128) && (enc)->is_code_ctype(c,8,enc)) {
+ int i;
+ if (len == 1) {
+ id = c;
+ goto id_register;
+ }
+ for (i = 0; i < (sizeof(op_tbl) / sizeof(op_tbl[0])); i++) {
+ if (*op_tbl[i].name == *m &&
+ __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (op_tbl[i].name) && __builtin_constant_p (m) && (__s1_len = strlen (op_tbl[i].name), __s2_len = strlen (m), (!((size_t)(const void *)((op_tbl[i].name) + 1) - (size_t)(const void *)(op_tbl[i].name) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((m) + 1) - (size_t)(const void *)(m) == 1) || __s2_len >= 4)) ? __builtin_strcmp (op_tbl[i].name, m) : (__builtin_constant_p (op_tbl[i].name) && ((size_t)(const void *)((op_tbl[i].name) + 1) - (size_t)(const void *)(op_tbl[i].name) == 1) && (__s1_len = strlen (op_tbl[i].name), __s1_len < 4) ? (__builtin_constant_p (m) && ((size_t)(const void *)((m) + 1) - (size_t)(const void *)(m) == 1) ? __builtin_strcmp (op_tbl[i].name, m) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) (m); register int __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) (op_tbl[i].name))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (m) && ((size_t)(const void *)((m) + 1) - (size_t)(const void *)(m) == 1) && (__s2_len = strlen (m), __s2_len < 4) ? (__builtin_constant_p (op_tbl[i].name) && ((size_t)(const void *)((op_tbl[i].name) + 1) - (size_t)(const void *)(op_tbl[i].name) == 1) ? __builtin_strcmp (op_tbl[i].name, m) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) (op_tbl[i].name); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) (m))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) (m))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) (m))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) (m))[3]); } } __result; }))) : __builtin_strcmp (op_tbl[i].name, m)))); }) == 0) {
+ id = op_tbl[i].token;
+ goto id_register;
+ }
+ }
+ }
+ if (m[last] == '=') {
+ id = rb_intern3(name, last, enc);
+ if (id > 376 && !(((id)>376)&&((id)&0x07)==0x04)) {
+ enc = rb_enc_get(rb_id2str(id));
+ id = rb_id_attrset(id);
+ goto id_register;
+ }
+ id = 0x04;
+ }
+ else if ((enc)->is_code_ctype(m[0],10,enc)) {
+ id = 0x05;
+ }
+ else {
+ id = 0x00;
+ }
+ break;
+ }
+ mb = 0;
+ if (!(enc)->is_code_ctype(*m,4,enc)) {
+ while (m <= name + last && ((enc)->is_code_ctype(*m,13,enc) || (*m) == '_' || !((unsigned long)((unsigned char)(*m)) < 128))) {
+ if (((unsigned long)((unsigned char)(*m)) < 128)) {
+ m++;
+ }
+ else {
+ mb = 1;
+ m += rb_enc_mbclen(m, e, enc);
+ }
+ }
+ }
+ if (m - name < len) id = 0x07;
+ if (enc != rb_usascii_encoding()) {
+ if (!mb) {
+ for (; m <= name + len; ++m) {
+ if (!((unsigned long)((unsigned char)(*m)) < 128)) goto mbstr;
+ }
+ enc = rb_usascii_encoding();
+ }
+ mbstr:;
+ }
+ new_id:
+ id |= ++global_symbols.last_id << 3;
+ id_register:
+ return register_symid(id, name, len, enc);
+}
+ID
+rb_intern2(const char *name, long len)
+{
+ return rb_intern3(name, len, rb_usascii_encoding());
+}
+ID
+rb_intern(const char *name)
+{
+ return rb_intern2(name, strlen(name));
+}
+ID
+rb_intern_str(VALUE str)
+{
+ rb_encoding *enc;
+ ID id;
+ if (rb_enc_str_coderange(str) == (((VALUE)1)<<(12 +8))) {
+ enc = rb_usascii_encoding();
+ }
+ else {
+ enc = rb_enc_get(str);
+ }
+ id = rb_intern3((!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr), (!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? (long)((((struct RBasic*)(str))->flags >> (12 +2)) & (((((VALUE)1)<<(12 +2))|(((VALUE)1)<<(12 +3))|(((VALUE)1)<<(12 +4))|(((VALUE)1)<<(12 +5))|(((VALUE)1)<<(12 +6))) >> (12 +2))) : ((struct RString*)(str))->as.heap.len), enc);
+ (*(volatile VALUE *)&(str));
+ return id;
+}
+VALUE
+rb_id2str(ID id)
+{
+ st_data_t data;
+ if (id < 376) {
+ int i = 0;
+ if (rb_ispunct(id)) {
+ VALUE str = global_symbols.op_sym[i = (int)id];
+ if (!str) {
+ char name[2];
+ name[0] = (char)id;
+ name[1] = 0;
+ str = rb_usascii_str_new(name, 1);
+ do {if ((!(((VALUE)((str)) & RUBY_IMMEDIATE_MASK) || !(((VALUE)((str)) & ~((VALUE)RUBY_Qnil)) != 0)) && (((struct RBasic*)((str)))->flags & RUBY_T_MASK) != RUBY_T_NODE)) ((struct RBasic*)((str)))->flags |= ((((VALUE)1)<<11));} while (0);
+ global_symbols.op_sym[i] = str;
+ }
+ return str;
+ }
+ for (i = 0; i < (sizeof(op_tbl) / sizeof(op_tbl[0])); i++) {
+ if (op_tbl[i].token == id) {
+ VALUE str = global_symbols.op_sym[i];
+ if (!str) {
+ str = __extension__ ( { (__builtin_constant_p(op_tbl[i].name)) ? rb_usascii_str_new(op_tbl[i].name, strlen(op_tbl[i].name)) : rb_usascii_str_new_cstr(op_tbl[i].name); });
+ do {if ((!(((VALUE)((str)) & RUBY_IMMEDIATE_MASK) || !(((VALUE)((str)) & ~((VALUE)RUBY_Qnil)) != 0)) && (((struct RBasic*)((str)))->flags & RUBY_T_MASK) != RUBY_T_NODE)) ((struct RBasic*)((str)))->flags |= ((((VALUE)1)<<11));} while (0);
+ global_symbols.op_sym[i] = str;
+ }
+ return str;
+ }
+ }
+ }
+ if (st_lookup(global_symbols.id_str, id, &data)) {
+ VALUE str = (VALUE)data;
+ if (((struct RBasic*)(str))->klass == 0)
+ ((struct RBasic*)(str))->klass = rb_cString;
+ return str;
+ }
+ if ((((id)>376)&&((id)&0x07)==0x04)) {
+ ID id2 = (id & ~0x07) | 0x00;
+ VALUE str;
+ while (!(str = rb_id2str(id2))) {
+ if (!(((id2)>376)&&((id2)&0x07)==0x00)) return 0;
+ id2 = (id & ~0x07) | 0x05;
+ }
+ str = rb_str_dup(str);
+ rb_str_cat(str, "=", 1);
+ rb_intern_str(str);
+ if (st_lookup(global_symbols.id_str, id, &data)) {
+ VALUE str = (VALUE)data;
+ if (((struct RBasic*)(str))->klass == 0)
+ ((struct RBasic*)(str))->klass = rb_cString;
+ return str;
+ }
+ }
+ return 0;
+}
+const char *
+rb_id2name(ID id)
+{
+ VALUE str = rb_id2str(id);
+ if (!str) return 0;
+ return (!(((struct RBasic*)(str))->flags & (((VALUE)1)<<(12 +1))) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr);
+}
+static int
+symbols_i(VALUE sym, ID value, VALUE ary)
+{
+ rb_ary_push(ary, (((VALUE)(value)<<RUBY_SPECIAL_SHIFT)|RUBY_SYMBOL_FLAG));
+ return ST_CONTINUE;
+}
+VALUE
+rb_sym_all_symbols(void)
+{
+ VALUE ary = rb_ary_new2(global_symbols.sym_id->num_entries);
+ st_foreach(global_symbols.sym_id, symbols_i, ary);
+ return ary;
+}
+int
+rb_is_const_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x05)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+int
+rb_is_class_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x06)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+int
+rb_is_instance_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x01)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+int
+rb_is_local_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x00)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+int
+rb_is_junk_id(ID id)
+{
+ if ((((id)>376)&&((id)&0x07)==0x07)) return ((VALUE)RUBY_Qtrue);
+ return ((VALUE)RUBY_Qfalse);
+}
+static void
+parser_initialize(struct parser_params *parser)
+{
+ parser->eofp = ((VALUE)RUBY_Qfalse);
+ parser->parser_lex_strterm = 0;
+ parser->parser_cond_stack = 0;
+ parser->parser_cmdarg_stack = 0;
+ parser->parser_class_nest = 0;
+ parser->parser_paren_nest = 0;
+ parser->parser_lpar_beg = 0;
+ parser->parser_in_single = 0;
+ parser->parser_in_def = 0;
+ parser->parser_in_defined = 0;
+ parser->parser_compile_for_eval = 0;
+ parser->parser_cur_mid = 0;
+ parser->parser_tokenbuf = ((void *)0);
+ parser->parser_tokidx = 0;
+ parser->parser_toksiz = 0;
+ parser->parser_heredoc_end = 0;
+ parser->parser_command_start = ((VALUE)RUBY_Qtrue);
+ parser->parser_deferred_nodes = 0;
+ parser->parser_lex_pbeg = 0;
+ parser->parser_lex_p = 0;
+ parser->parser_lex_pend = 0;
+ parser->parser_lvtbl = 0;
+ parser->parser_ruby__end__seen = 0;
+ parser->parser_ruby_sourcefile = 0;
+ parser->is_ripper = 0;
+ parser->parser_eval_tree_begin = 0;
+ parser->parser_eval_tree = 0;
+ parser->heap = ((void *)0);
+ parser->enc = rb_usascii_encoding();
+}
+static void
+parser_mark(void *ptr)
+{
+ struct parser_params *p = (struct parser_params*)ptr;
+ rb_gc_mark((VALUE)p->parser_lex_strterm);
+ rb_gc_mark((VALUE)p->parser_deferred_nodes);
+ rb_gc_mark(p->parser_lex_input);
+ rb_gc_mark(p->parser_lex_lastline);
+ rb_gc_mark(p->parser_lex_nextline);
+ rb_gc_mark((VALUE)p->parser_eval_tree_begin) ;
+ rb_gc_mark((VALUE)p->parser_eval_tree) ;
+ rb_gc_mark(p->debug_lines);
+ rb_gc_mark((VALUE)p->heap);
+}
+static void
+parser_free(void *ptr)
+{
+ struct parser_params *p = (struct parser_params*)ptr;
+ struct local_vars *local, *prev;
+ if (p->parser_tokenbuf) {
+ ruby_xfree(p->parser_tokenbuf);
+ }
+ for (local = p->parser_lvtbl; local; local = prev) {
+ if (local->vars) ruby_xfree(local->vars);
+ prev = local->prev;
+ ruby_xfree(local);
+ }
+ ruby_xfree(p->parser_ruby_sourcefile);
+ ruby_xfree(p);
+}
+VALUE rb_parser_get_yydebug(VALUE);
+VALUE rb_parser_set_yydebug(VALUE, VALUE);
+static struct parser_params *
+parser_new(void)
+{
+ struct parser_params *p;
+ p = (struct parser_params*)ruby_xmalloc2((1),sizeof(struct parser_params));
+ memset((p), 0, sizeof(struct parser_params)*(1));
+ parser_initialize(p);
+ return p;
+}
+VALUE
+rb_parser_new(void)
+{
+ struct parser_params *p = parser_new();
+ return rb_data_object_alloc(0,p,(RUBY_DATA_FUNC)parser_mark,(RUBY_DATA_FUNC)parser_free);
+}
+VALUE
+rb_parser_end_seen_p(VALUE vparser)
+{
+ struct parser_params *parser;
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ return (parser->parser_ruby__end__seen) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
+}
+VALUE
+rb_parser_encoding(VALUE vparser)
+{
+ struct parser_params *parser;
+ do { rb_check_type((VALUE)(vparser),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(vparser))->data);} while (0);
+ return rb_enc_from_encoding(parser->enc);
+}
+VALUE
+rb_parser_get_yydebug(VALUE self)
+{
+ struct parser_params *parser;
+ do { rb_check_type((VALUE)(self),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(self))->data);} while (0);
+ return (parser->parser_yydebug) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
+}
+VALUE
+rb_parser_set_yydebug(VALUE self, VALUE flag)
+{
+ struct parser_params *parser;
+ do { rb_check_type((VALUE)(self),RUBY_T_DATA); parser = (struct parser_params*)(((struct RData*)(self))->data);} while (0);
+ (parser->parser_yydebug) = (((VALUE)(flag) & ~((VALUE)RUBY_Qnil)) != 0);
+ return flag;
+}
+void *
+rb_parser_malloc(struct parser_params *parser, size_t size)
+{
+ size_t cnt = ((1) * (size) / sizeof(YYSTYPE));
+ NODE *n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
+ void *ptr = ruby_xmalloc(size);
+ return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
+}
+void *
+rb_parser_calloc(struct parser_params *parser, size_t nelem, size_t size)
+{
+ size_t cnt = ((nelem) * (size) / sizeof(YYSTYPE));
+ NODE *n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
+ void *ptr = ruby_xcalloc(nelem, size);
+ return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
+}
+void *
+rb_parser_realloc(struct parser_params *parser, void *ptr, size_t size)
+{
+ NODE *n;
+ size_t cnt = ((1) * (size) / sizeof(YYSTYPE));
+ if (ptr && (n = parser->heap) != ((void *)0)) {
+ do {
+ if (n->u1.node == ptr) {
+ n->u1.node = ptr = ruby_xrealloc(ptr, size);
+ if (n->u3.cnt) n->u3.cnt = cnt;
+ return ptr;
+ }
+ } while ((n = n->u2.node) != ((void *)0));
+ }
+ n = node_newnode(parser, NODE_ALLOCA, 0, (VALUE)parser->heap, 0);
+ ptr = ruby_xrealloc(ptr, size);
+ return ((parser->heap = (n))->u1.node = (ptr), (n)->u3.cnt = (cnt), (ptr));
+}
+void
+rb_parser_free(struct parser_params *parser, void *ptr)
+{
+ NODE **prev = &parser->heap, *n;
+ while ((n = *prev) != ((void *)0)) {
+ if (n->u1.node == ptr) {
+ *prev = n->u2.node;
+ rb_gc_force_recycle((VALUE)n);
+ break;
+ }
+ prev = &n->u2.node;
+ }
+ ruby_xfree(ptr);
+}
--- /dev/null
+#!/bin/bash
+#
+# Run like:
+# multidelta -level=# ./reduce-ice $FILE
+# levels: 0 0 1 1 2 2 10 10
+#
+
+FILE=svolume_mmx.i
+CC=gcc
+CFLAGS="-O1 -fweb"
+
+num=$($CC -pipe -c $CFLAGS $FILE 2>&1 | grep "error: invalid 'asm': invalid expression as operand" | wc -l)
+[ $num -eq 3 ]
--- /dev/null
+f(short *samples, int *volumes, unsigned channels, unsigned length)
+{
+ long channel, temp;
+ asm volatile("sub %5, %4"
+ : "+r"(samples), "+r"(volumes), "+r"(length),
+ "=D"((long) channel), "=&r"(temp)
+ : "rm"((long) channels)
+ : "cc");
+}
--- /dev/null
+# 1 "pulsecore/svolume_mmx.c"
+# 1 "<built-in>"
+# 1 "<command-line>"
+# 1 "pulsecore/svolume_mmx.c"
+# 24 "pulsecore/svolume_mmx.c"
+# 1 "../config.h" 1
+# 25 "pulsecore/svolume_mmx.c" 2
+
+
+# 1 "./pulse/timeval.h" 1
+# 26 "./pulse/timeval.h"
+# 1 "./pulse/cdecl.h" 1
+# 27 "./pulse/timeval.h" 2
+# 1 "./pulse/gccmacro.h" 1
+# 28 "./pulse/timeval.h" 2
+# 1 "./pulse/sample.h" 1
+# 26 "./pulse/sample.h"
+# 1 "/usr/include/inttypes.h" 1 3 4
+# 26 "/usr/include/inttypes.h" 3 4
+# 1 "/usr/include/features.h" 1 3 4
+# 347 "/usr/include/features.h" 3 4
+# 1 "/usr/include/sys/cdefs.h" 1 3 4
+# 353 "/usr/include/sys/cdefs.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 354 "/usr/include/sys/cdefs.h" 2 3 4
+# 348 "/usr/include/features.h" 2 3 4
+# 371 "/usr/include/features.h" 3 4
+# 1 "/usr/include/gnu/stubs.h" 1 3 4
+
+
+
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 5 "/usr/include/gnu/stubs.h" 2 3 4
+
+
+
+
+# 1 "/usr/include/gnu/stubs-64.h" 1 3 4
+# 10 "/usr/include/gnu/stubs.h" 2 3 4
+# 372 "/usr/include/features.h" 2 3 4
+# 27 "/usr/include/inttypes.h" 2 3 4
+
+# 1 "/usr/include/stdint.h" 1 3 4
+# 27 "/usr/include/stdint.h" 3 4
+# 1 "/usr/include/bits/wchar.h" 1 3 4
+# 28 "/usr/include/stdint.h" 2 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 29 "/usr/include/stdint.h" 2 3 4
+# 37 "/usr/include/stdint.h" 3 4
+typedef signed char int8_t;
+typedef short int int16_t;
+typedef int int32_t;
+
+typedef long int int64_t;
+
+
+
+
+
+
+
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+
+typedef unsigned int uint32_t;
+
+
+
+typedef unsigned long int uint64_t;
+# 66 "/usr/include/stdint.h" 3 4
+typedef signed char int_least8_t;
+typedef short int int_least16_t;
+typedef int int_least32_t;
+
+typedef long int int_least64_t;
+
+
+
+
+
+
+typedef unsigned char uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int uint_least32_t;
+
+typedef unsigned long int uint_least64_t;
+# 91 "/usr/include/stdint.h" 3 4
+typedef signed char int_fast8_t;
+
+typedef long int int_fast16_t;
+typedef long int int_fast32_t;
+typedef long int int_fast64_t;
+# 104 "/usr/include/stdint.h" 3 4
+typedef unsigned char uint_fast8_t;
+
+typedef unsigned long int uint_fast16_t;
+typedef unsigned long int uint_fast32_t;
+typedef unsigned long int uint_fast64_t;
+# 120 "/usr/include/stdint.h" 3 4
+typedef long int intptr_t;
+
+
+typedef unsigned long int uintptr_t;
+# 135 "/usr/include/stdint.h" 3 4
+typedef long int intmax_t;
+typedef unsigned long int uintmax_t;
+# 29 "/usr/include/inttypes.h" 2 3 4
+
+
+
+
+
+
+typedef int __gwchar_t;
+# 274 "/usr/include/inttypes.h" 3 4
+
+
+
+
+
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } imaxdiv_t;
+# 298 "/usr/include/inttypes.h" 3 4
+extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern intmax_t strtoimax (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base) __attribute__ ((__nothrow__));
+
+
+extern uintmax_t strtoumax (__const char *__restrict __nptr,
+ char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__));
+
+
+extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr,
+ __gwchar_t **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__));
+
+
+extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
+ __gwchar_t ** __restrict __endptr, int __base)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+extern long int __strtol_internal (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern __inline __attribute__ ((__gnu_inline__)) intmax_t
+__attribute__ ((__nothrow__)) strtoimax (__const char *__restrict nptr, char **__restrict endptr, int base)
+
+{
+ return __strtol_internal (nptr, endptr, base, 0);
+}
+
+extern unsigned long int __strtoul_internal (__const char *
+ __restrict __nptr,
+ char ** __restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern __inline __attribute__ ((__gnu_inline__)) uintmax_t
+__attribute__ ((__nothrow__)) strtoumax (__const char *__restrict nptr, char **__restrict endptr, int base)
+
+{
+ return __strtoul_internal (nptr, endptr, base, 0);
+}
+
+extern long int __wcstol_internal (__const __gwchar_t * __restrict __nptr,
+ __gwchar_t **__restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern __inline __attribute__ ((__gnu_inline__)) intmax_t
+__attribute__ ((__nothrow__)) wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
+
+{
+ return __wcstol_internal (nptr, endptr, base, 0);
+}
+
+extern unsigned long int __wcstoul_internal (__const __gwchar_t *
+ __restrict __nptr,
+ __gwchar_t **
+ __restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern __inline __attribute__ ((__gnu_inline__)) uintmax_t
+__attribute__ ((__nothrow__)) wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
+
+{
+ return __wcstoul_internal (nptr, endptr, base, 0);
+}
+# 442 "/usr/include/inttypes.h" 3 4
+
+# 27 "./pulse/sample.h" 2
+# 1 "/usr/include/sys/types.h" 1 3 4
+# 29 "/usr/include/sys/types.h" 3 4
+
+
+# 1 "/usr/include/bits/types.h" 1 3 4
+# 28 "/usr/include/bits/types.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 29 "/usr/include/bits/types.h" 2 3 4
+
+
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+
+
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+
+typedef signed long int __int64_t;
+typedef unsigned long int __uint64_t;
+
+
+
+
+
+
+
+typedef long int __quad_t;
+typedef unsigned long int __u_quad_t;
+# 131 "/usr/include/bits/types.h" 3 4
+# 1 "/usr/include/bits/typesizes.h" 1 3 4
+# 132 "/usr/include/bits/types.h" 2 3 4
+
+
+typedef unsigned long int __dev_t;
+typedef unsigned int __uid_t;
+typedef unsigned int __gid_t;
+typedef unsigned long int __ino_t;
+typedef unsigned long int __ino64_t;
+typedef unsigned int __mode_t;
+typedef unsigned long int __nlink_t;
+typedef long int __off_t;
+typedef long int __off64_t;
+typedef int __pid_t;
+typedef struct { int __val[2]; } __fsid_t;
+typedef long int __clock_t;
+typedef unsigned long int __rlim_t;
+typedef unsigned long int __rlim64_t;
+typedef unsigned int __id_t;
+typedef long int __time_t;
+typedef unsigned int __useconds_t;
+typedef long int __suseconds_t;
+
+typedef int __daddr_t;
+typedef long int __swblk_t;
+typedef int __key_t;
+
+
+typedef int __clockid_t;
+
+
+typedef void * __timer_t;
+
+
+typedef long int __blksize_t;
+
+
+
+
+typedef long int __blkcnt_t;
+typedef long int __blkcnt64_t;
+
+
+typedef unsigned long int __fsblkcnt_t;
+typedef unsigned long int __fsblkcnt64_t;
+
+
+typedef unsigned long int __fsfilcnt_t;
+typedef unsigned long int __fsfilcnt64_t;
+
+typedef long int __ssize_t;
+
+
+
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+
+
+typedef long int __intptr_t;
+
+
+typedef unsigned int __socklen_t;
+# 32 "/usr/include/sys/types.h" 2 3 4
+
+
+
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+
+
+
+
+typedef __loff_t loff_t;
+
+
+
+typedef __ino_t ino_t;
+
+
+
+
+
+
+typedef __ino64_t ino64_t;
+
+
+
+
+typedef __dev_t dev_t;
+
+
+
+
+typedef __gid_t gid_t;
+
+
+
+
+typedef __mode_t mode_t;
+
+
+
+
+typedef __nlink_t nlink_t;
+
+
+
+
+typedef __uid_t uid_t;
+
+
+
+
+
+typedef __off_t off_t;
+
+
+
+
+
+
+typedef __off64_t off64_t;
+
+
+
+
+typedef __pid_t pid_t;
+
+
+
+
+typedef __id_t id_t;
+
+
+
+
+typedef __ssize_t ssize_t;
+
+
+
+
+
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+
+
+
+
+
+typedef __key_t key_t;
+# 133 "/usr/include/sys/types.h" 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 58 "/usr/include/time.h" 3 4
+
+
+typedef __clock_t clock_t;
+
+
+
+# 74 "/usr/include/time.h" 3 4
+
+
+typedef __time_t time_t;
+
+
+
+# 92 "/usr/include/time.h" 3 4
+typedef __clockid_t clockid_t;
+# 104 "/usr/include/time.h" 3 4
+typedef __timer_t timer_t;
+# 134 "/usr/include/sys/types.h" 2 3 4
+
+
+
+typedef __useconds_t useconds_t;
+
+
+
+typedef __suseconds_t suseconds_t;
+
+
+
+
+
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stddef.h" 1 3 4
+# 211 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stddef.h" 3 4
+typedef long unsigned int size_t;
+# 148 "/usr/include/sys/types.h" 2 3 4
+
+
+
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+# 201 "/usr/include/sys/types.h" 3 4
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+# 217 "/usr/include/sys/types.h" 3 4
+# 1 "/usr/include/endian.h" 1 3 4
+# 37 "/usr/include/endian.h" 3 4
+# 1 "/usr/include/bits/endian.h" 1 3 4
+# 38 "/usr/include/endian.h" 2 3 4
+# 61 "/usr/include/endian.h" 3 4
+# 1 "/usr/include/bits/byteswap.h" 1 3 4
+# 28 "/usr/include/bits/byteswap.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 29 "/usr/include/bits/byteswap.h" 2 3 4
+# 62 "/usr/include/endian.h" 2 3 4
+# 218 "/usr/include/sys/types.h" 2 3 4
+
+
+# 1 "/usr/include/sys/select.h" 1 3 4
+# 31 "/usr/include/sys/select.h" 3 4
+# 1 "/usr/include/bits/select.h" 1 3 4
+# 23 "/usr/include/bits/select.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 24 "/usr/include/bits/select.h" 2 3 4
+# 32 "/usr/include/sys/select.h" 2 3 4
+
+
+# 1 "/usr/include/bits/sigset.h" 1 3 4
+# 24 "/usr/include/bits/sigset.h" 3 4
+typedef int __sig_atomic_t;
+
+
+
+
+typedef struct
+ {
+ unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+ } __sigset_t;
+# 35 "/usr/include/sys/select.h" 2 3 4
+
+
+
+typedef __sigset_t sigset_t;
+
+
+
+
+
+# 1 "/usr/include/time.h" 1 3 4
+# 120 "/usr/include/time.h" 3 4
+struct timespec
+ {
+ __time_t tv_sec;
+ long int tv_nsec;
+ };
+# 45 "/usr/include/sys/select.h" 2 3 4
+
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 69 "/usr/include/bits/time.h" 3 4
+struct timeval
+ {
+ __time_t tv_sec;
+ __suseconds_t tv_usec;
+ };
+# 47 "/usr/include/sys/select.h" 2 3 4
+# 55 "/usr/include/sys/select.h" 3 4
+typedef long int __fd_mask;
+# 67 "/usr/include/sys/select.h" 3 4
+typedef struct
+ {
+
+
+
+ __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
+
+
+
+
+
+ } fd_set;
+
+
+
+
+
+
+typedef __fd_mask fd_mask;
+# 99 "/usr/include/sys/select.h" 3 4
+
+# 109 "/usr/include/sys/select.h" 3 4
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ struct timeval *__restrict __timeout);
+# 121 "/usr/include/sys/select.h" 3 4
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+ const __sigset_t *__restrict __sigmask);
+
+
+
+# 221 "/usr/include/sys/types.h" 2 3 4
+
+
+# 1 "/usr/include/sys/sysmacros.h" 1 3 4
+# 30 "/usr/include/sys/sysmacros.h" 3 4
+__extension__
+extern unsigned int gnu_dev_major (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned int gnu_dev_minor (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned long long int gnu_dev_makedev (unsigned int __major,
+ unsigned int __minor)
+ __attribute__ ((__nothrow__));
+
+
+__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
+{
+ return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
+}
+
+__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
+{
+ return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
+}
+
+__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned long long int
+__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
+{
+ return ((__minor & 0xff) | ((__major & 0xfff) << 8)
+ | (((unsigned long long int) (__minor & ~0xff)) << 12)
+ | (((unsigned long long int) (__major & ~0xfff)) << 32));
+}
+# 224 "/usr/include/sys/types.h" 2 3 4
+
+
+
+
+typedef __blksize_t blksize_t;
+
+
+
+
+
+
+typedef __blkcnt_t blkcnt_t;
+
+
+
+typedef __fsblkcnt_t fsblkcnt_t;
+
+
+
+typedef __fsfilcnt_t fsfilcnt_t;
+# 262 "/usr/include/sys/types.h" 3 4
+typedef __blkcnt64_t blkcnt64_t;
+typedef __fsblkcnt64_t fsblkcnt64_t;
+typedef __fsfilcnt64_t fsfilcnt64_t;
+
+
+
+
+
+# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
+# 23 "/usr/include/bits/pthreadtypes.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 24 "/usr/include/bits/pthreadtypes.h" 2 3 4
+# 50 "/usr/include/bits/pthreadtypes.h" 3 4
+typedef unsigned long int pthread_t;
+
+
+typedef union
+{
+ char __size[56];
+ long int __align;
+} pthread_attr_t;
+
+
+
+typedef struct __pthread_internal_list
+{
+ struct __pthread_internal_list *__prev;
+ struct __pthread_internal_list *__next;
+} __pthread_list_t;
+# 76 "/usr/include/bits/pthreadtypes.h" 3 4
+typedef union
+{
+ struct __pthread_mutex_s
+ {
+ int __lock;
+ unsigned int __count;
+ int __owner;
+
+ unsigned int __nusers;
+
+
+
+ int __kind;
+
+ int __spins;
+ __pthread_list_t __list;
+# 101 "/usr/include/bits/pthreadtypes.h" 3 4
+ } __data;
+ char __size[40];
+ long int __align;
+} pthread_mutex_t;
+
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_mutexattr_t;
+
+
+
+
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __futex;
+ __extension__ unsigned long long int __total_seq;
+ __extension__ unsigned long long int __wakeup_seq;
+ __extension__ unsigned long long int __woken_seq;
+ void *__mutex;
+ unsigned int __nwaiters;
+ unsigned int __broadcast_seq;
+ } __data;
+ char __size[48];
+ __extension__ long long int __align;
+} pthread_cond_t;
+
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_condattr_t;
+
+
+
+typedef unsigned int pthread_key_t;
+
+
+
+typedef int pthread_once_t;
+
+
+
+
+
+typedef union
+{
+
+ struct
+ {
+ int __lock;
+ unsigned int __nr_readers;
+ unsigned int __readers_wakeup;
+ unsigned int __writer_wakeup;
+ unsigned int __nr_readers_queued;
+ unsigned int __nr_writers_queued;
+ int __writer;
+ int __shared;
+ unsigned long int __pad1;
+ unsigned long int __pad2;
+
+
+ unsigned int __flags;
+ } __data;
+# 187 "/usr/include/bits/pthreadtypes.h" 3 4
+ char __size[56];
+ long int __align;
+} pthread_rwlock_t;
+
+typedef union
+{
+ char __size[8];
+ long int __align;
+} pthread_rwlockattr_t;
+
+
+
+
+
+typedef volatile int pthread_spinlock_t;
+
+
+
+
+typedef union
+{
+ char __size[32];
+ long int __align;
+} pthread_barrier_t;
+
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_barrierattr_t;
+# 271 "/usr/include/sys/types.h" 2 3 4
+
+
+
+# 28 "./pulse/sample.h" 2
+# 1 "/usr/include/sys/param.h" 1 3 4
+# 26 "/usr/include/sys/param.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include-fixed/limits.h" 1 3 4
+# 11 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include-fixed/limits.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include-fixed/syslimits.h" 1 3 4
+
+
+
+
+
+
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include-fixed/limits.h" 1 3 4
+# 122 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include-fixed/limits.h" 3 4
+# 1 "/usr/include/limits.h" 1 3 4
+# 145 "/usr/include/limits.h" 3 4
+# 1 "/usr/include/bits/posix1_lim.h" 1 3 4
+# 157 "/usr/include/bits/posix1_lim.h" 3 4
+# 1 "/usr/include/bits/local_lim.h" 1 3 4
+# 39 "/usr/include/bits/local_lim.h" 3 4
+# 1 "/usr/include/linux/limits.h" 1 3 4
+# 40 "/usr/include/bits/local_lim.h" 2 3 4
+# 158 "/usr/include/bits/posix1_lim.h" 2 3 4
+# 146 "/usr/include/limits.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/posix2_lim.h" 1 3 4
+# 150 "/usr/include/limits.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/xopen_lim.h" 1 3 4
+# 34 "/usr/include/bits/xopen_lim.h" 3 4
+# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
+# 35 "/usr/include/bits/xopen_lim.h" 2 3 4
+# 154 "/usr/include/limits.h" 2 3 4
+# 123 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include-fixed/limits.h" 2 3 4
+# 8 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include-fixed/syslimits.h" 2 3 4
+# 12 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include-fixed/limits.h" 2 3 4
+# 27 "/usr/include/sys/param.h" 2 3 4
+
+# 1 "/usr/include/linux/param.h" 1 3 4
+
+
+
+# 1 "/usr/include/asm/param.h" 1 3 4
+# 5 "/usr/include/linux/param.h" 2 3 4
+# 29 "/usr/include/sys/param.h" 2 3 4
+# 29 "./pulse/sample.h" 2
+# 1 "/usr/include/math.h" 1 3 4
+# 30 "/usr/include/math.h" 3 4
+
+
+
+
+# 1 "/usr/include/bits/huge_val.h" 1 3 4
+# 35 "/usr/include/math.h" 2 3 4
+
+# 1 "/usr/include/bits/huge_valf.h" 1 3 4
+# 37 "/usr/include/math.h" 2 3 4
+# 1 "/usr/include/bits/huge_vall.h" 1 3 4
+# 38 "/usr/include/math.h" 2 3 4
+
+
+# 1 "/usr/include/bits/inf.h" 1 3 4
+# 41 "/usr/include/math.h" 2 3 4
+
+
+# 1 "/usr/include/bits/nan.h" 1 3 4
+# 44 "/usr/include/math.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/mathdef.h" 1 3 4
+# 26 "/usr/include/bits/mathdef.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 27 "/usr/include/bits/mathdef.h" 2 3 4
+
+
+
+
+typedef float float_t;
+typedef double double_t;
+# 48 "/usr/include/math.h" 2 3 4
+# 71 "/usr/include/math.h" 3 4
+# 1 "/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern double acos (double __x) __attribute__ ((__nothrow__)); extern double __acos (double __x) __attribute__ ((__nothrow__));
+
+extern double asin (double __x) __attribute__ ((__nothrow__)); extern double __asin (double __x) __attribute__ ((__nothrow__));
+
+extern double atan (double __x) __attribute__ ((__nothrow__)); extern double __atan (double __x) __attribute__ ((__nothrow__));
+
+extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__)); extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__));
+
+
+extern double cos (double __x) __attribute__ ((__nothrow__)); extern double __cos (double __x) __attribute__ ((__nothrow__));
+
+extern double sin (double __x) __attribute__ ((__nothrow__)); extern double __sin (double __x) __attribute__ ((__nothrow__));
+
+extern double tan (double __x) __attribute__ ((__nothrow__)); extern double __tan (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern double cosh (double __x) __attribute__ ((__nothrow__)); extern double __cosh (double __x) __attribute__ ((__nothrow__));
+
+extern double sinh (double __x) __attribute__ ((__nothrow__)); extern double __sinh (double __x) __attribute__ ((__nothrow__));
+
+extern double tanh (double __x) __attribute__ ((__nothrow__)); extern double __tanh (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern void sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__)); extern void __sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double acosh (double __x) __attribute__ ((__nothrow__)); extern double __acosh (double __x) __attribute__ ((__nothrow__));
+
+extern double asinh (double __x) __attribute__ ((__nothrow__)); extern double __asinh (double __x) __attribute__ ((__nothrow__));
+
+extern double atanh (double __x) __attribute__ ((__nothrow__)); extern double __atanh (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern double exp (double __x) __attribute__ ((__nothrow__)); extern double __exp (double __x) __attribute__ ((__nothrow__));
+
+
+extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__)); extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__));
+
+
+extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__)); extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__));
+
+
+extern double log (double __x) __attribute__ ((__nothrow__)); extern double __log (double __x) __attribute__ ((__nothrow__));
+
+
+extern double log10 (double __x) __attribute__ ((__nothrow__)); extern double __log10 (double __x) __attribute__ ((__nothrow__));
+
+
+extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__)); extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__));
+
+
+
+
+extern double exp10 (double __x) __attribute__ ((__nothrow__)); extern double __exp10 (double __x) __attribute__ ((__nothrow__));
+
+extern double pow10 (double __x) __attribute__ ((__nothrow__)); extern double __pow10 (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern double expm1 (double __x) __attribute__ ((__nothrow__)); extern double __expm1 (double __x) __attribute__ ((__nothrow__));
+
+
+extern double log1p (double __x) __attribute__ ((__nothrow__)); extern double __log1p (double __x) __attribute__ ((__nothrow__));
+
+
+extern double logb (double __x) __attribute__ ((__nothrow__)); extern double __logb (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double exp2 (double __x) __attribute__ ((__nothrow__)); extern double __exp2 (double __x) __attribute__ ((__nothrow__));
+
+
+extern double log2 (double __x) __attribute__ ((__nothrow__)); extern double __log2 (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern double pow (double __x, double __y) __attribute__ ((__nothrow__)); extern double __pow (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+extern double sqrt (double __x) __attribute__ ((__nothrow__)); extern double __sqrt (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern double hypot (double __x, double __y) __attribute__ ((__nothrow__)); extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double cbrt (double __x) __attribute__ ((__nothrow__)); extern double __cbrt (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern double ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double fmod (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+
+extern int __isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int __finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double drem (double __x, double __y) __attribute__ ((__nothrow__)); extern double __drem (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+extern double significand (double __x) __attribute__ ((__nothrow__)); extern double __significand (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern double copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+
+extern double nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern int isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double j0 (double) __attribute__ ((__nothrow__)); extern double __j0 (double) __attribute__ ((__nothrow__));
+extern double j1 (double) __attribute__ ((__nothrow__)); extern double __j1 (double) __attribute__ ((__nothrow__));
+extern double jn (int, double) __attribute__ ((__nothrow__)); extern double __jn (int, double) __attribute__ ((__nothrow__));
+extern double y0 (double) __attribute__ ((__nothrow__)); extern double __y0 (double) __attribute__ ((__nothrow__));
+extern double y1 (double) __attribute__ ((__nothrow__)); extern double __y1 (double) __attribute__ ((__nothrow__));
+extern double yn (int, double) __attribute__ ((__nothrow__)); extern double __yn (int, double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double erf (double) __attribute__ ((__nothrow__)); extern double __erf (double) __attribute__ ((__nothrow__));
+extern double erfc (double) __attribute__ ((__nothrow__)); extern double __erfc (double) __attribute__ ((__nothrow__));
+extern double lgamma (double) __attribute__ ((__nothrow__)); extern double __lgamma (double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double tgamma (double) __attribute__ ((__nothrow__)); extern double __tgamma (double) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern double gamma (double) __attribute__ ((__nothrow__)); extern double __gamma (double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__)); extern double __lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern double rint (double __x) __attribute__ ((__nothrow__)); extern double __rint (double __x) __attribute__ ((__nothrow__));
+
+
+extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+extern double nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern double remainder (double __x, double __y) __attribute__ ((__nothrow__)); extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__)); extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__));
+
+
+
+extern int ilogb (double __x) __attribute__ ((__nothrow__)); extern int __ilogb (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern double scalbln (double __x, long int __n) __attribute__ ((__nothrow__)); extern double __scalbln (double __x, long int __n) __attribute__ ((__nothrow__));
+
+
+
+extern double nearbyint (double __x) __attribute__ ((__nothrow__)); extern double __nearbyint (double __x) __attribute__ ((__nothrow__));
+
+
+
+extern double round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern double trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern double remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__)); extern double __remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long int lrint (double __x) __attribute__ ((__nothrow__)); extern long int __lrint (double __x) __attribute__ ((__nothrow__));
+extern long long int llrint (double __x) __attribute__ ((__nothrow__)); extern long long int __llrint (double __x) __attribute__ ((__nothrow__));
+
+
+
+extern long int lround (double __x) __attribute__ ((__nothrow__)); extern long int __lround (double __x) __attribute__ ((__nothrow__));
+extern long long int llround (double __x) __attribute__ ((__nothrow__)); extern long long int __llround (double __x) __attribute__ ((__nothrow__));
+
+
+
+extern double fdim (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fdim (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+extern double fmax (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmax (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+extern double fmin (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmin (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+extern int __fpclassify (double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+extern int __signbit (double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+
+extern double fma (double __x, double __y, double __z) __attribute__ ((__nothrow__)); extern double __fma (double __x, double __y, double __z) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern double scalb (double __x, double __n) __attribute__ ((__nothrow__)); extern double __scalb (double __x, double __n) __attribute__ ((__nothrow__));
+# 72 "/usr/include/math.h" 2 3 4
+# 94 "/usr/include/math.h" 3 4
+# 1 "/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern float acosf (float __x) __attribute__ ((__nothrow__)); extern float __acosf (float __x) __attribute__ ((__nothrow__));
+
+extern float asinf (float __x) __attribute__ ((__nothrow__)); extern float __asinf (float __x) __attribute__ ((__nothrow__));
+
+extern float atanf (float __x) __attribute__ ((__nothrow__)); extern float __atanf (float __x) __attribute__ ((__nothrow__));
+
+extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__)); extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__));
+
+
+extern float cosf (float __x) __attribute__ ((__nothrow__)); extern float __cosf (float __x) __attribute__ ((__nothrow__));
+
+extern float sinf (float __x) __attribute__ ((__nothrow__)); extern float __sinf (float __x) __attribute__ ((__nothrow__));
+
+extern float tanf (float __x) __attribute__ ((__nothrow__)); extern float __tanf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern float coshf (float __x) __attribute__ ((__nothrow__)); extern float __coshf (float __x) __attribute__ ((__nothrow__));
+
+extern float sinhf (float __x) __attribute__ ((__nothrow__)); extern float __sinhf (float __x) __attribute__ ((__nothrow__));
+
+extern float tanhf (float __x) __attribute__ ((__nothrow__)); extern float __tanhf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern void sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__)); extern void __sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float acoshf (float __x) __attribute__ ((__nothrow__)); extern float __acoshf (float __x) __attribute__ ((__nothrow__));
+
+extern float asinhf (float __x) __attribute__ ((__nothrow__)); extern float __asinhf (float __x) __attribute__ ((__nothrow__));
+
+extern float atanhf (float __x) __attribute__ ((__nothrow__)); extern float __atanhf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern float expf (float __x) __attribute__ ((__nothrow__)); extern float __expf (float __x) __attribute__ ((__nothrow__));
+
+
+extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__)); extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__));
+
+
+extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__)); extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__));
+
+
+extern float logf (float __x) __attribute__ ((__nothrow__)); extern float __logf (float __x) __attribute__ ((__nothrow__));
+
+
+extern float log10f (float __x) __attribute__ ((__nothrow__)); extern float __log10f (float __x) __attribute__ ((__nothrow__));
+
+
+extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__)); extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__));
+
+
+
+
+extern float exp10f (float __x) __attribute__ ((__nothrow__)); extern float __exp10f (float __x) __attribute__ ((__nothrow__));
+
+extern float pow10f (float __x) __attribute__ ((__nothrow__)); extern float __pow10f (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern float expm1f (float __x) __attribute__ ((__nothrow__)); extern float __expm1f (float __x) __attribute__ ((__nothrow__));
+
+
+extern float log1pf (float __x) __attribute__ ((__nothrow__)); extern float __log1pf (float __x) __attribute__ ((__nothrow__));
+
+
+extern float logbf (float __x) __attribute__ ((__nothrow__)); extern float __logbf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float exp2f (float __x) __attribute__ ((__nothrow__)); extern float __exp2f (float __x) __attribute__ ((__nothrow__));
+
+
+extern float log2f (float __x) __attribute__ ((__nothrow__)); extern float __log2f (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern float powf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __powf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+extern float sqrtf (float __x) __attribute__ ((__nothrow__)); extern float __sqrtf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float cbrtf (float __x) __attribute__ ((__nothrow__)); extern float __cbrtf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern float ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+
+extern int __isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int __finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float dremf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __dremf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+extern float significandf (float __x) __attribute__ ((__nothrow__)); extern float __significandf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+
+extern float nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern int isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float j0f (float) __attribute__ ((__nothrow__)); extern float __j0f (float) __attribute__ ((__nothrow__));
+extern float j1f (float) __attribute__ ((__nothrow__)); extern float __j1f (float) __attribute__ ((__nothrow__));
+extern float jnf (int, float) __attribute__ ((__nothrow__)); extern float __jnf (int, float) __attribute__ ((__nothrow__));
+extern float y0f (float) __attribute__ ((__nothrow__)); extern float __y0f (float) __attribute__ ((__nothrow__));
+extern float y1f (float) __attribute__ ((__nothrow__)); extern float __y1f (float) __attribute__ ((__nothrow__));
+extern float ynf (int, float) __attribute__ ((__nothrow__)); extern float __ynf (int, float) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float erff (float) __attribute__ ((__nothrow__)); extern float __erff (float) __attribute__ ((__nothrow__));
+extern float erfcf (float) __attribute__ ((__nothrow__)); extern float __erfcf (float) __attribute__ ((__nothrow__));
+extern float lgammaf (float) __attribute__ ((__nothrow__)); extern float __lgammaf (float) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float tgammaf (float) __attribute__ ((__nothrow__)); extern float __tgammaf (float) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern float gammaf (float) __attribute__ ((__nothrow__)); extern float __gammaf (float) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__)); extern float __lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern float rintf (float __x) __attribute__ ((__nothrow__)); extern float __rintf (float __x) __attribute__ ((__nothrow__));
+
+
+extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+extern float nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__)); extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__));
+
+
+
+extern int ilogbf (float __x) __attribute__ ((__nothrow__)); extern int __ilogbf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern float scalblnf (float __x, long int __n) __attribute__ ((__nothrow__)); extern float __scalblnf (float __x, long int __n) __attribute__ ((__nothrow__));
+
+
+
+extern float nearbyintf (float __x) __attribute__ ((__nothrow__)); extern float __nearbyintf (float __x) __attribute__ ((__nothrow__));
+
+
+
+extern float roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern float truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern float remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__)); extern float __remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long int lrintf (float __x) __attribute__ ((__nothrow__)); extern long int __lrintf (float __x) __attribute__ ((__nothrow__));
+extern long long int llrintf (float __x) __attribute__ ((__nothrow__)); extern long long int __llrintf (float __x) __attribute__ ((__nothrow__));
+
+
+
+extern long int lroundf (float __x) __attribute__ ((__nothrow__)); extern long int __lroundf (float __x) __attribute__ ((__nothrow__));
+extern long long int llroundf (float __x) __attribute__ ((__nothrow__)); extern long long int __llroundf (float __x) __attribute__ ((__nothrow__));
+
+
+
+extern float fdimf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fdimf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+extern float fmaxf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmaxf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+extern float fminf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fminf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+extern int __fpclassifyf (float __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+extern int __signbitf (float __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+
+extern float fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__)); extern float __fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern float scalbf (float __x, float __n) __attribute__ ((__nothrow__)); extern float __scalbf (float __x, float __n) __attribute__ ((__nothrow__));
+# 95 "/usr/include/math.h" 2 3 4
+# 141 "/usr/include/math.h" 3 4
+# 1 "/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern long double acosl (long double __x) __attribute__ ((__nothrow__)); extern long double __acosl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double asinl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double atanl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__)); extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double cosl (long double __x) __attribute__ ((__nothrow__)); extern long double __cosl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double sinl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double tanl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern long double coshl (long double __x) __attribute__ ((__nothrow__)); extern long double __coshl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double sinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinhl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double tanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanhl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern void sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__)); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double acoshl (long double __x) __attribute__ ((__nothrow__)); extern long double __acoshl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double asinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinhl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double atanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanhl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern long double expl (long double __x) __attribute__ ((__nothrow__)); extern long double __expl (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__)); extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__));
+
+
+extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__)); extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__));
+
+
+extern long double logl (long double __x) __attribute__ ((__nothrow__)); extern long double __logl (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double log10l (long double __x) __attribute__ ((__nothrow__)); extern long double __log10l (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__)); extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__));
+
+
+
+
+extern long double exp10l (long double __x) __attribute__ ((__nothrow__)); extern long double __exp10l (long double __x) __attribute__ ((__nothrow__));
+
+extern long double pow10l (long double __x) __attribute__ ((__nothrow__)); extern long double __pow10l (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern long double expm1l (long double __x) __attribute__ ((__nothrow__)); extern long double __expm1l (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double log1pl (long double __x) __attribute__ ((__nothrow__)); extern long double __log1pl (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double logbl (long double __x) __attribute__ ((__nothrow__)); extern long double __logbl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double exp2l (long double __x) __attribute__ ((__nothrow__)); extern long double __exp2l (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double log2l (long double __x) __attribute__ ((__nothrow__)); extern long double __log2l (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+extern long double sqrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double cbrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern long double ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+
+extern int __isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int __finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double dreml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __dreml (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+extern long double significandl (long double __x) __attribute__ ((__nothrow__)); extern long double __significandl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+
+extern long double nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern int isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double j0l (long double) __attribute__ ((__nothrow__)); extern long double __j0l (long double) __attribute__ ((__nothrow__));
+extern long double j1l (long double) __attribute__ ((__nothrow__)); extern long double __j1l (long double) __attribute__ ((__nothrow__));
+extern long double jnl (int, long double) __attribute__ ((__nothrow__)); extern long double __jnl (int, long double) __attribute__ ((__nothrow__));
+extern long double y0l (long double) __attribute__ ((__nothrow__)); extern long double __y0l (long double) __attribute__ ((__nothrow__));
+extern long double y1l (long double) __attribute__ ((__nothrow__)); extern long double __y1l (long double) __attribute__ ((__nothrow__));
+extern long double ynl (int, long double) __attribute__ ((__nothrow__)); extern long double __ynl (int, long double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double erfl (long double) __attribute__ ((__nothrow__)); extern long double __erfl (long double) __attribute__ ((__nothrow__));
+extern long double erfcl (long double) __attribute__ ((__nothrow__)); extern long double __erfcl (long double) __attribute__ ((__nothrow__));
+extern long double lgammal (long double) __attribute__ ((__nothrow__)); extern long double __lgammal (long double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double tgammal (long double) __attribute__ ((__nothrow__)); extern long double __tgammal (long double) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern long double gammal (long double) __attribute__ ((__nothrow__)); extern long double __gammal (long double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__)); extern long double __lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern long double rintl (long double __x) __attribute__ ((__nothrow__)); extern long double __rintl (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+extern long double nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__)); extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__));
+
+
+
+extern int ilogbl (long double __x) __attribute__ ((__nothrow__)); extern int __ilogbl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern long double scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__)); extern long double __scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__));
+
+
+
+extern long double nearbyintl (long double __x) __attribute__ ((__nothrow__)); extern long double __nearbyintl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+extern long double roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern long double truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern long double remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__)); extern long double __remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long int lrintl (long double __x) __attribute__ ((__nothrow__)); extern long int __lrintl (long double __x) __attribute__ ((__nothrow__));
+extern long long int llrintl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llrintl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+extern long int lroundl (long double __x) __attribute__ ((__nothrow__)); extern long int __lroundl (long double __x) __attribute__ ((__nothrow__));
+extern long long int llroundl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llroundl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+extern long double fdiml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fdiml (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+extern long double fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+extern long double fminl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fminl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+extern int __fpclassifyl (long double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+extern int __signbitl (long double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+
+extern long double fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__)); extern long double __fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern long double scalbl (long double __x, long double __n) __attribute__ ((__nothrow__)); extern long double __scalbl (long double __x, long double __n) __attribute__ ((__nothrow__));
+# 142 "/usr/include/math.h" 2 3 4
+# 157 "/usr/include/math.h" 3 4
+extern int signgam;
+# 198 "/usr/include/math.h" 3 4
+enum
+ {
+ FP_NAN,
+
+ FP_INFINITE,
+
+ FP_ZERO,
+
+ FP_SUBNORMAL,
+
+ FP_NORMAL
+
+ };
+# 284 "/usr/include/math.h" 3 4
+typedef enum
+{
+ _IEEE_ = -1,
+ _SVID_,
+ _XOPEN_,
+ _POSIX_,
+ _ISOC_
+} _LIB_VERSION_TYPE;
+
+
+
+
+extern _LIB_VERSION_TYPE _LIB_VERSION;
+# 309 "/usr/include/math.h" 3 4
+struct exception
+
+ {
+ int type;
+ char *name;
+ double arg1;
+ double arg2;
+ double retval;
+ };
+
+
+
+
+extern int matherr (struct exception *__exc);
+# 409 "/usr/include/math.h" 3 4
+# 1 "/usr/include/bits/mathinline.h" 1 3 4
+# 35 "/usr/include/bits/mathinline.h" 3 4
+extern __inline __attribute__ ((__gnu_inline__)) int
+__attribute__ ((__nothrow__)) __signbitf (float __x)
+{
+ __extension__ union { float __f; int __i; } __u = { __f: __x };
+ return __u.__i < 0;
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+__attribute__ ((__nothrow__)) __signbit (double __x)
+{
+ __extension__ union { double __d; int __i[2]; } __u = { __d: __x };
+ return __u.__i[1] < 0;
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+__attribute__ ((__nothrow__)) __signbitl (long double __x)
+{
+ __extension__ union { long double __l; int __i[3]; } __u = { __l: __x };
+ return (__u.__i[2] & 0x8000) != 0;
+}
+# 410 "/usr/include/math.h" 2 3 4
+# 465 "/usr/include/math.h" 3 4
+
+# 30 "./pulse/sample.h" 2
+
+
+
+# 1 "./pulse/version.h" 1
+# 33 "./pulse/version.h"
+
+# 42 "./pulse/version.h"
+const char* pa_get_library_version(void);
+# 70 "./pulse/version.h"
+
+# 34 "./pulse/sample.h" 2
+# 110 "./pulse/sample.h"
+
+# 127 "./pulse/sample.h"
+typedef enum pa_sample_format {
+ PA_SAMPLE_U8,
+
+
+ PA_SAMPLE_ALAW,
+
+
+ PA_SAMPLE_ULAW,
+
+
+ PA_SAMPLE_S16LE,
+
+
+ PA_SAMPLE_S16BE,
+
+
+ PA_SAMPLE_FLOAT32LE,
+
+
+ PA_SAMPLE_FLOAT32BE,
+
+
+ PA_SAMPLE_S32LE,
+
+
+ PA_SAMPLE_S32BE,
+
+
+ PA_SAMPLE_S24LE,
+
+
+ PA_SAMPLE_S24BE,
+
+
+ PA_SAMPLE_S24_32LE,
+
+
+ PA_SAMPLE_S24_32BE,
+
+
+ PA_SAMPLE_MAX,
+
+
+ PA_SAMPLE_INVALID = -1
+
+} pa_sample_format_t;
+# 241 "./pulse/sample.h"
+typedef struct pa_sample_spec {
+ pa_sample_format_t format;
+
+
+ uint32_t rate;
+
+
+ uint8_t channels;
+
+} pa_sample_spec;
+
+
+typedef uint64_t pa_usec_t;
+
+
+size_t pa_bytes_per_second(const pa_sample_spec *spec) __attribute__ ((pure));
+
+
+size_t pa_frame_size(const pa_sample_spec *spec) __attribute__ ((pure));
+
+
+size_t pa_sample_size(const pa_sample_spec *spec) __attribute__ ((pure));
+
+
+
+size_t pa_sample_size_of_format(pa_sample_format_t f) __attribute__ ((pure));
+
+
+
+
+pa_usec_t pa_bytes_to_usec(uint64_t length, const pa_sample_spec *spec) __attribute__ ((pure));
+
+
+
+
+size_t pa_usec_to_bytes(pa_usec_t t, const pa_sample_spec *spec) __attribute__ ((pure));
+
+
+
+
+pa_sample_spec* pa_sample_spec_init(pa_sample_spec *spec);
+
+
+int pa_sample_spec_valid(const pa_sample_spec *spec) __attribute__ ((pure));
+
+
+int pa_sample_spec_equal(const pa_sample_spec*a, const pa_sample_spec*b) __attribute__ ((pure));
+
+
+const char *pa_sample_format_to_string(pa_sample_format_t f) __attribute__ ((pure));
+
+
+pa_sample_format_t pa_parse_sample_format(const char *format) __attribute__ ((pure));
+# 303 "./pulse/sample.h"
+char* pa_sample_spec_snprint(char *s, size_t l, const pa_sample_spec *spec);
+# 313 "./pulse/sample.h"
+char* pa_bytes_snprint(char *s, size_t l, unsigned v);
+
+
+
+int pa_sample_format_is_le(pa_sample_format_t f) __attribute__ ((pure));
+
+
+
+int pa_sample_format_is_be(pa_sample_format_t f) __attribute__ ((pure));
+# 335 "./pulse/sample.h"
+
+# 29 "./pulse/timeval.h" 2
+
+
+
+
+
+
+# 60 "./pulse/timeval.h"
+struct timeval;
+
+
+struct timeval *pa_gettimeofday(struct timeval *tv);
+
+
+
+pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b) __attribute__ ((pure));
+
+
+int pa_timeval_cmp(const struct timeval *a, const struct timeval *b) __attribute__ ((pure));
+
+
+pa_usec_t pa_timeval_age(const struct timeval *tv);
+
+
+struct timeval* pa_timeval_add(struct timeval *tv, pa_usec_t v);
+
+
+struct timeval* pa_timeval_sub(struct timeval *tv, pa_usec_t v);
+
+
+struct timeval* pa_timeval_store(struct timeval *tv, pa_usec_t v);
+
+
+pa_usec_t pa_timeval_load(const struct timeval *tv);
+
+
+# 28 "pulsecore/svolume_mmx.c" 2
+# 1 "./pulsecore/random.h" 1
+# 28 "./pulsecore/random.h"
+void pa_random_seed(void);
+void pa_random(void *ret_data, size_t length);
+# 29 "pulsecore/svolume_mmx.c" 2
+# 1 "./pulsecore/macro.h" 1
+# 26 "./pulsecore/macro.h"
+# 1 "/usr/include/unistd.h" 1 3 4
+# 28 "/usr/include/unistd.h" 3 4
+
+# 175 "/usr/include/unistd.h" 3 4
+# 1 "/usr/include/bits/posix_opt.h" 1 3 4
+# 176 "/usr/include/unistd.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/environments.h" 1 3 4
+# 23 "/usr/include/bits/environments.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 24 "/usr/include/bits/environments.h" 2 3 4
+# 180 "/usr/include/unistd.h" 2 3 4
+# 199 "/usr/include/unistd.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stddef.h" 1 3 4
+# 200 "/usr/include/unistd.h" 2 3 4
+# 247 "/usr/include/unistd.h" 3 4
+typedef __socklen_t socklen_t;
+# 260 "/usr/include/unistd.h" 3 4
+extern int access (__const char *__name, int __type) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int euidaccess (__const char *__name, int __type)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int eaccess (__const char *__name, int __type)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int faccessat (int __fd, __const char *__file, int __type, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
+# 303 "/usr/include/unistd.h" 3 4
+extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__));
+# 314 "/usr/include/unistd.h" 3 4
+extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int close (int __fd);
+
+
+
+
+
+
+extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern ssize_t write (int __fd, __const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__));
+# 345 "/usr/include/unistd.h" 3 4
+extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
+ __off_t __offset) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
+ __off_t __offset) __attribute__ ((__warn_unused_result__));
+# 373 "/usr/include/unistd.h" 3 4
+extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
+ __off64_t __offset) __attribute__ ((__warn_unused_result__));
+
+
+extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
+ __off64_t __offset) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int pipe2 (int __pipedes[2], int __flags) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+# 401 "/usr/include/unistd.h" 3 4
+extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__));
+# 413 "/usr/include/unistd.h" 3 4
+extern unsigned int sleep (unsigned int __seconds);
+
+
+
+
+
+
+extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int usleep (__useconds_t __useconds);
+# 437 "/usr/include/unistd.h" 3 4
+extern int pause (void);
+
+
+
+extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
+ __gid_t __group, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int chdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int fchdir (int __fd) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+# 479 "/usr/include/unistd.h" 3 4
+extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern char *get_current_dir_name (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern char *getwd (char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int dup (int __fd) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__));
+
+
+
+
+extern int dup3 (int __fd, int __fd2, int __flags) __attribute__ ((__nothrow__));
+
+
+
+extern char **__environ;
+
+extern char **environ;
+
+
+
+
+
+extern int execve (__const char *__path, char *__const __argv[],
+ char *__const __envp[]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
+ __attribute__ ((__nothrow__));
+
+
+
+
+extern int execv (__const char *__path, char *__const __argv[])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int execle (__const char *__path, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int execl (__const char *__path, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int execvp (__const char *__file, char *__const __argv[])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int execlp (__const char *__file, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int nice (int __inc) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern void _exit (int __status) __attribute__ ((__noreturn__));
+
+
+
+
+
+# 1 "/usr/include/bits/confname.h" 1 3 4
+# 26 "/usr/include/bits/confname.h" 3 4
+enum
+ {
+ _PC_LINK_MAX,
+
+ _PC_MAX_CANON,
+
+ _PC_MAX_INPUT,
+
+ _PC_NAME_MAX,
+
+ _PC_PATH_MAX,
+
+ _PC_PIPE_BUF,
+
+ _PC_CHOWN_RESTRICTED,
+
+ _PC_NO_TRUNC,
+
+ _PC_VDISABLE,
+
+ _PC_SYNC_IO,
+
+ _PC_ASYNC_IO,
+
+ _PC_PRIO_IO,
+
+ _PC_SOCK_MAXBUF,
+
+ _PC_FILESIZEBITS,
+
+ _PC_REC_INCR_XFER_SIZE,
+
+ _PC_REC_MAX_XFER_SIZE,
+
+ _PC_REC_MIN_XFER_SIZE,
+
+ _PC_REC_XFER_ALIGN,
+
+ _PC_ALLOC_SIZE_MIN,
+
+ _PC_SYMLINK_MAX,
+
+ _PC_2_SYMLINKS
+
+ };
+
+
+enum
+ {
+ _SC_ARG_MAX,
+
+ _SC_CHILD_MAX,
+
+ _SC_CLK_TCK,
+
+ _SC_NGROUPS_MAX,
+
+ _SC_OPEN_MAX,
+
+ _SC_STREAM_MAX,
+
+ _SC_TZNAME_MAX,
+
+ _SC_JOB_CONTROL,
+
+ _SC_SAVED_IDS,
+
+ _SC_REALTIME_SIGNALS,
+
+ _SC_PRIORITY_SCHEDULING,
+
+ _SC_TIMERS,
+
+ _SC_ASYNCHRONOUS_IO,
+
+ _SC_PRIORITIZED_IO,
+
+ _SC_SYNCHRONIZED_IO,
+
+ _SC_FSYNC,
+
+ _SC_MAPPED_FILES,
+
+ _SC_MEMLOCK,
+
+ _SC_MEMLOCK_RANGE,
+
+ _SC_MEMORY_PROTECTION,
+
+ _SC_MESSAGE_PASSING,
+
+ _SC_SEMAPHORES,
+
+ _SC_SHARED_MEMORY_OBJECTS,
+
+ _SC_AIO_LISTIO_MAX,
+
+ _SC_AIO_MAX,
+
+ _SC_AIO_PRIO_DELTA_MAX,
+
+ _SC_DELAYTIMER_MAX,
+
+ _SC_MQ_OPEN_MAX,
+
+ _SC_MQ_PRIO_MAX,
+
+ _SC_VERSION,
+
+ _SC_PAGESIZE,
+
+
+ _SC_RTSIG_MAX,
+
+ _SC_SEM_NSEMS_MAX,
+
+ _SC_SEM_VALUE_MAX,
+
+ _SC_SIGQUEUE_MAX,
+
+ _SC_TIMER_MAX,
+
+
+
+
+ _SC_BC_BASE_MAX,
+
+ _SC_BC_DIM_MAX,
+
+ _SC_BC_SCALE_MAX,
+
+ _SC_BC_STRING_MAX,
+
+ _SC_COLL_WEIGHTS_MAX,
+
+ _SC_EQUIV_CLASS_MAX,
+
+ _SC_EXPR_NEST_MAX,
+
+ _SC_LINE_MAX,
+
+ _SC_RE_DUP_MAX,
+
+ _SC_CHARCLASS_NAME_MAX,
+
+
+ _SC_2_VERSION,
+
+ _SC_2_C_BIND,
+
+ _SC_2_C_DEV,
+
+ _SC_2_FORT_DEV,
+
+ _SC_2_FORT_RUN,
+
+ _SC_2_SW_DEV,
+
+ _SC_2_LOCALEDEF,
+
+
+ _SC_PII,
+
+ _SC_PII_XTI,
+
+ _SC_PII_SOCKET,
+
+ _SC_PII_INTERNET,
+
+ _SC_PII_OSI,
+
+ _SC_POLL,
+
+ _SC_SELECT,
+
+ _SC_UIO_MAXIOV,
+
+ _SC_IOV_MAX = _SC_UIO_MAXIOV,
+
+ _SC_PII_INTERNET_STREAM,
+
+ _SC_PII_INTERNET_DGRAM,
+
+ _SC_PII_OSI_COTS,
+
+ _SC_PII_OSI_CLTS,
+
+ _SC_PII_OSI_M,
+
+ _SC_T_IOV_MAX,
+
+
+
+ _SC_THREADS,
+
+ _SC_THREAD_SAFE_FUNCTIONS,
+
+ _SC_GETGR_R_SIZE_MAX,
+
+ _SC_GETPW_R_SIZE_MAX,
+
+ _SC_LOGIN_NAME_MAX,
+
+ _SC_TTY_NAME_MAX,
+
+ _SC_THREAD_DESTRUCTOR_ITERATIONS,
+
+ _SC_THREAD_KEYS_MAX,
+
+ _SC_THREAD_STACK_MIN,
+
+ _SC_THREAD_THREADS_MAX,
+
+ _SC_THREAD_ATTR_STACKADDR,
+
+ _SC_THREAD_ATTR_STACKSIZE,
+
+ _SC_THREAD_PRIORITY_SCHEDULING,
+
+ _SC_THREAD_PRIO_INHERIT,
+
+ _SC_THREAD_PRIO_PROTECT,
+
+ _SC_THREAD_PROCESS_SHARED,
+
+
+ _SC_NPROCESSORS_CONF,
+
+ _SC_NPROCESSORS_ONLN,
+
+ _SC_PHYS_PAGES,
+
+ _SC_AVPHYS_PAGES,
+
+ _SC_ATEXIT_MAX,
+
+ _SC_PASS_MAX,
+
+
+ _SC_XOPEN_VERSION,
+
+ _SC_XOPEN_XCU_VERSION,
+
+ _SC_XOPEN_UNIX,
+
+ _SC_XOPEN_CRYPT,
+
+ _SC_XOPEN_ENH_I18N,
+
+ _SC_XOPEN_SHM,
+
+
+ _SC_2_CHAR_TERM,
+
+ _SC_2_C_VERSION,
+
+ _SC_2_UPE,
+
+
+ _SC_XOPEN_XPG2,
+
+ _SC_XOPEN_XPG3,
+
+ _SC_XOPEN_XPG4,
+
+
+ _SC_CHAR_BIT,
+
+ _SC_CHAR_MAX,
+
+ _SC_CHAR_MIN,
+
+ _SC_INT_MAX,
+
+ _SC_INT_MIN,
+
+ _SC_LONG_BIT,
+
+ _SC_WORD_BIT,
+
+ _SC_MB_LEN_MAX,
+
+ _SC_NZERO,
+
+ _SC_SSIZE_MAX,
+
+ _SC_SCHAR_MAX,
+
+ _SC_SCHAR_MIN,
+
+ _SC_SHRT_MAX,
+
+ _SC_SHRT_MIN,
+
+ _SC_UCHAR_MAX,
+
+ _SC_UINT_MAX,
+
+ _SC_ULONG_MAX,
+
+ _SC_USHRT_MAX,
+
+
+ _SC_NL_ARGMAX,
+
+ _SC_NL_LANGMAX,
+
+ _SC_NL_MSGMAX,
+
+ _SC_NL_NMAX,
+
+ _SC_NL_SETMAX,
+
+ _SC_NL_TEXTMAX,
+
+
+ _SC_XBS5_ILP32_OFF32,
+
+ _SC_XBS5_ILP32_OFFBIG,
+
+ _SC_XBS5_LP64_OFF64,
+
+ _SC_XBS5_LPBIG_OFFBIG,
+
+
+ _SC_XOPEN_LEGACY,
+
+ _SC_XOPEN_REALTIME,
+
+ _SC_XOPEN_REALTIME_THREADS,
+
+
+ _SC_ADVISORY_INFO,
+
+ _SC_BARRIERS,
+
+ _SC_BASE,
+
+ _SC_C_LANG_SUPPORT,
+
+ _SC_C_LANG_SUPPORT_R,
+
+ _SC_CLOCK_SELECTION,
+
+ _SC_CPUTIME,
+
+ _SC_THREAD_CPUTIME,
+
+ _SC_DEVICE_IO,
+
+ _SC_DEVICE_SPECIFIC,
+
+ _SC_DEVICE_SPECIFIC_R,
+
+ _SC_FD_MGMT,
+
+ _SC_FIFO,
+
+ _SC_PIPE,
+
+ _SC_FILE_ATTRIBUTES,
+
+ _SC_FILE_LOCKING,
+
+ _SC_FILE_SYSTEM,
+
+ _SC_MONOTONIC_CLOCK,
+
+ _SC_MULTI_PROCESS,
+
+ _SC_SINGLE_PROCESS,
+
+ _SC_NETWORKING,
+
+ _SC_READER_WRITER_LOCKS,
+
+ _SC_SPIN_LOCKS,
+
+ _SC_REGEXP,
+
+ _SC_REGEX_VERSION,
+
+ _SC_SHELL,
+
+ _SC_SIGNALS,
+
+ _SC_SPAWN,
+
+ _SC_SPORADIC_SERVER,
+
+ _SC_THREAD_SPORADIC_SERVER,
+
+ _SC_SYSTEM_DATABASE,
+
+ _SC_SYSTEM_DATABASE_R,
+
+ _SC_TIMEOUTS,
+
+ _SC_TYPED_MEMORY_OBJECTS,
+
+ _SC_USER_GROUPS,
+
+ _SC_USER_GROUPS_R,
+
+ _SC_2_PBS,
+
+ _SC_2_PBS_ACCOUNTING,
+
+ _SC_2_PBS_LOCATE,
+
+ _SC_2_PBS_MESSAGE,
+
+ _SC_2_PBS_TRACK,
+
+ _SC_SYMLOOP_MAX,
+
+ _SC_STREAMS,
+
+ _SC_2_PBS_CHECKPOINT,
+
+
+ _SC_V6_ILP32_OFF32,
+
+ _SC_V6_ILP32_OFFBIG,
+
+ _SC_V6_LP64_OFF64,
+
+ _SC_V6_LPBIG_OFFBIG,
+
+
+ _SC_HOST_NAME_MAX,
+
+ _SC_TRACE,
+
+ _SC_TRACE_EVENT_FILTER,
+
+ _SC_TRACE_INHERIT,
+
+ _SC_TRACE_LOG,
+
+
+ _SC_LEVEL1_ICACHE_SIZE,
+
+ _SC_LEVEL1_ICACHE_ASSOC,
+
+ _SC_LEVEL1_ICACHE_LINESIZE,
+
+ _SC_LEVEL1_DCACHE_SIZE,
+
+ _SC_LEVEL1_DCACHE_ASSOC,
+
+ _SC_LEVEL1_DCACHE_LINESIZE,
+
+ _SC_LEVEL2_CACHE_SIZE,
+
+ _SC_LEVEL2_CACHE_ASSOC,
+
+ _SC_LEVEL2_CACHE_LINESIZE,
+
+ _SC_LEVEL3_CACHE_SIZE,
+
+ _SC_LEVEL3_CACHE_ASSOC,
+
+ _SC_LEVEL3_CACHE_LINESIZE,
+
+ _SC_LEVEL4_CACHE_SIZE,
+
+ _SC_LEVEL4_CACHE_ASSOC,
+
+ _SC_LEVEL4_CACHE_LINESIZE,
+
+
+
+ _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
+
+ _SC_RAW_SOCKETS,
+
+
+ _SC_V7_ILP32_OFF32,
+
+ _SC_V7_ILP32_OFFBIG,
+
+ _SC_V7_LP64_OFF64,
+
+ _SC_V7_LPBIG_OFFBIG,
+
+
+ _SC_SS_REPL_MAX,
+
+
+ _SC_TRACE_EVENT_NAME_MAX,
+
+ _SC_TRACE_NAME_MAX,
+
+ _SC_TRACE_SYS_MAX,
+
+ _SC_TRACE_USER_EVENT_MAX,
+
+
+ _SC_XOPEN_STREAMS,
+
+
+ _SC_THREAD_ROBUST_PRIO_INHERIT,
+
+ _SC_THREAD_ROBUST_PRIO_PROTECT,
+
+ };
+
+
+enum
+ {
+ _CS_PATH,
+
+
+ _CS_V6_WIDTH_RESTRICTED_ENVS,
+
+
+
+ _CS_GNU_LIBC_VERSION,
+
+ _CS_GNU_LIBPTHREAD_VERSION,
+
+
+ _CS_V5_WIDTH_RESTRICTED_ENVS,
+
+
+
+ _CS_V7_WIDTH_RESTRICTED_ENVS,
+
+
+
+ _CS_LFS_CFLAGS = 1000,
+
+ _CS_LFS_LDFLAGS,
+
+ _CS_LFS_LIBS,
+
+ _CS_LFS_LINTFLAGS,
+
+ _CS_LFS64_CFLAGS,
+
+ _CS_LFS64_LDFLAGS,
+
+ _CS_LFS64_LIBS,
+
+ _CS_LFS64_LINTFLAGS,
+
+
+ _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
+
+ _CS_XBS5_ILP32_OFF32_LDFLAGS,
+
+ _CS_XBS5_ILP32_OFF32_LIBS,
+
+ _CS_XBS5_ILP32_OFF32_LINTFLAGS,
+
+ _CS_XBS5_ILP32_OFFBIG_CFLAGS,
+
+ _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
+
+ _CS_XBS5_ILP32_OFFBIG_LIBS,
+
+ _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
+
+ _CS_XBS5_LP64_OFF64_CFLAGS,
+
+ _CS_XBS5_LP64_OFF64_LDFLAGS,
+
+ _CS_XBS5_LP64_OFF64_LIBS,
+
+ _CS_XBS5_LP64_OFF64_LINTFLAGS,
+
+ _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
+
+ _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
+
+ _CS_XBS5_LPBIG_OFFBIG_LIBS,
+
+ _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
+
+
+ _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFF32_LIBS,
+
+ _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
+
+ _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
+
+ _CS_POSIX_V6_LP64_OFF64_CFLAGS,
+
+ _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
+
+ _CS_POSIX_V6_LP64_OFF64_LIBS,
+
+ _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
+
+ _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
+
+ _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
+
+ _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
+
+ _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
+
+
+ _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFF32_LIBS,
+
+ _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
+
+ _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
+
+ _CS_POSIX_V7_LP64_OFF64_CFLAGS,
+
+ _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
+
+ _CS_POSIX_V7_LP64_OFF64_LIBS,
+
+ _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
+
+ _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
+
+ _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
+
+ _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
+
+ _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
+
+ };
+# 569 "/usr/include/unistd.h" 2 3 4
+
+
+extern long int pathconf (__const char *__path, int __name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__));
+
+
+extern long int sysconf (int __name) __attribute__ ((__nothrow__));
+
+
+
+extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__));
+
+
+
+
+extern __pid_t getpid (void) __attribute__ ((__nothrow__));
+
+
+extern __pid_t getppid (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern __pid_t getpgrp (void) __attribute__ ((__nothrow__));
+# 605 "/usr/include/unistd.h" 3 4
+extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__));
+
+extern __pid_t getpgid (__pid_t __pid) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__));
+# 631 "/usr/include/unistd.h" 3 4
+extern int setpgrp (void) __attribute__ ((__nothrow__));
+# 648 "/usr/include/unistd.h" 3 4
+extern __pid_t setsid (void) __attribute__ ((__nothrow__));
+
+
+
+extern __pid_t getsid (__pid_t __pid) __attribute__ ((__nothrow__));
+
+
+
+extern __uid_t getuid (void) __attribute__ ((__nothrow__));
+
+
+extern __uid_t geteuid (void) __attribute__ ((__nothrow__));
+
+
+extern __gid_t getgid (void) __attribute__ ((__nothrow__));
+
+
+extern __gid_t getegid (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int group_member (__gid_t __gid) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__));
+
+
+
+
+extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
+ __attribute__ ((__nothrow__));
+
+
+
+extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
+ __attribute__ ((__nothrow__));
+
+
+
+extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
+ __attribute__ ((__nothrow__));
+
+
+
+extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern __pid_t fork (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern __pid_t vfork (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *ttyname (int __fd) __attribute__ ((__nothrow__));
+
+
+
+extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int isatty (int __fd) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int ttyslot (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int link (__const char *__from, __const char *__to)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int linkat (int __fromfd, __const char *__from, int __tofd,
+ __const char *__to, int __flags)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int symlink (__const char *__from, __const char *__to)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern ssize_t readlink (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int symlinkat (__const char *__from, int __tofd,
+ __const char *__to) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+
+
+extern ssize_t readlinkat (int __fd, __const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int unlink (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int unlinkat (int __fd, __const char *__name, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+extern int rmdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__));
+
+
+extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern char *getlogin (void);
+
+
+
+
+
+
+
+extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int setlogin (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 851 "/usr/include/unistd.h" 3 4
+# 1 "/usr/include/getopt.h" 1 3 4
+# 59 "/usr/include/getopt.h" 3 4
+extern char *optarg;
+# 73 "/usr/include/getopt.h" 3 4
+extern int optind;
+
+
+
+
+extern int opterr;
+
+
+
+extern int optopt;
+# 152 "/usr/include/getopt.h" 3 4
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ __attribute__ ((__nothrow__));
+# 852 "/usr/include/unistd.h" 2 3 4
+
+
+
+
+
+
+
+extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int sethostname (__const char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int sethostid (long int __id) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int getdomainname (char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int setdomainname (__const char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int vhangup (void) __attribute__ ((__nothrow__));
+
+
+extern int revoke (__const char *__file) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern int profil (unsigned short int *__sample_buffer, size_t __size,
+ size_t __offset, unsigned int __scale)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int acct (__const char *__name) __attribute__ ((__nothrow__));
+
+
+
+extern char *getusershell (void) __attribute__ ((__nothrow__));
+extern void endusershell (void) __attribute__ ((__nothrow__));
+extern void setusershell (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern int chroot (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1)));
+# 937 "/usr/include/unistd.h" 3 4
+extern int fsync (int __fd);
+
+
+
+
+
+
+extern long int gethostid (void);
+
+
+extern void sync (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int getpagesize (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern int getdtablesize (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int truncate (__const char *__file, __off_t __length)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 974 "/usr/include/unistd.h" 3 4
+extern int truncate64 (__const char *__file, __off64_t __length)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 984 "/usr/include/unistd.h" 3 4
+extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+# 994 "/usr/include/unistd.h" 3 4
+extern int ftruncate64 (int __fd, __off64_t __length) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+# 1004 "/usr/include/unistd.h" 3 4
+extern int brk (void *__addr) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__));
+# 1025 "/usr/include/unistd.h" 3 4
+extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__));
+# 1048 "/usr/include/unistd.h" 3 4
+extern int lockf (int __fd, int __cmd, __off_t __len) __attribute__ ((__warn_unused_result__));
+# 1058 "/usr/include/unistd.h" 3 4
+extern int lockf64 (int __fd, int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__));
+# 1079 "/usr/include/unistd.h" 3 4
+extern int fdatasync (int __fildes);
+
+
+
+
+
+
+
+extern char *crypt (__const char *__key, __const char *__salt)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern void encrypt (char *__block, int __edflag) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern void swab (__const void *__restrict __from, void *__restrict __to,
+ ssize_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+
+
+
+
+
+# 1 "/usr/include/bits/unistd.h" 1 3 4
+# 24 "/usr/include/bits/unistd.h" 3 4
+extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes,
+ size_t __buflen) __attribute__ ((__warn_unused_result__));
+extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") __attribute__ ((__warn_unused_result__));
+
+extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk")
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
+read (int __fd, void *__buf, size_t __nbytes)
+{
+ if (__builtin_object_size (__buf, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__nbytes))
+ return __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0));
+
+ if (__nbytes > __builtin_object_size (__buf, 0))
+ return __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0));
+ }
+ return __read_alias (__fd, __buf, __nbytes);
+}
+
+
+extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes,
+ __off_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__));
+extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes,
+ __off64_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__));
+extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") __attribute__ ((__warn_unused_result__));
+
+
+extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") __attribute__ ((__warn_unused_result__));
+
+
+extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk")
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer")));
+
+extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk")
+
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer")));
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
+pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
+{
+ if (__builtin_object_size (__buf, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__nbytes))
+ return __pread_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0));
+
+ if ( __nbytes > __builtin_object_size (__buf, 0))
+ return __pread_chk_warn (__fd, __buf, __nbytes, __offset,
+ __builtin_object_size (__buf, 0));
+ }
+ return __pread_alias (__fd, __buf, __nbytes, __offset);
+}
+# 105 "/usr/include/bits/unistd.h" 3 4
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
+pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
+{
+ if (__builtin_object_size (__buf, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__nbytes))
+ return __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0));
+
+ if ( __nbytes > __builtin_object_size (__buf, 0))
+ return __pread64_chk_warn (__fd, __buf, __nbytes, __offset,
+ __builtin_object_size (__buf, 0));
+ }
+
+ return __pread64_alias (__fd, __buf, __nbytes, __offset);
+}
+
+
+
+
+extern ssize_t __readlink_chk (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len,
+ size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+extern ssize_t __readlink_alias (__const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("" "readlink") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+extern ssize_t __readlink_chk_warn (__const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("" "__readlink_chk") __attribute__ ((__nothrow__))
+
+
+
+ __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t
+__attribute__ ((__nothrow__)) readlink (__const char *__restrict __path, char *__restrict __buf, size_t __len)
+
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+
+ if ( __len > __builtin_object_size (__buf, 2 > 1))
+ return __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __readlink_alias (__path, __buf, __len);
+}
+
+
+
+extern ssize_t __readlinkat_chk (int __fd, __const char *__restrict __path,
+ char *__restrict __buf, size_t __len,
+ size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
+extern ssize_t __readlinkat_alias (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("" "readlinkat") __attribute__ ((__nothrow__))
+
+
+
+ __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
+extern ssize_t __readlinkat_chk_warn (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("" "__readlinkat_chk") __attribute__ ((__nothrow__))
+
+
+
+ __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer")));
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t
+__attribute__ ((__nothrow__)) readlinkat (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len)
+
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+
+ if (__len > __builtin_object_size (__buf, 2 > 1))
+ return __readlinkat_chk_warn (__fd, __path, __buf, __len,
+ __builtin_object_size (__buf, 2 > 1));
+ }
+ return __readlinkat_alias (__fd, __path, __buf, __len);
+}
+
+
+extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern char *__getcwd_alias (char *__buf, size_t __size) __asm__ ("" "getcwd") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) __asm__ ("" "__getcwd_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+__attribute__ ((__nothrow__)) getcwd (char *__buf, size_t __size)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__size))
+ return __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1));
+
+ if (__size > __builtin_object_size (__buf, 2 > 1))
+ return __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __getcwd_alias (__buf, __size);
+}
+
+
+extern char *__getwd_chk (char *__buf, size_t buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern char *__getwd_warn (char *__buf) __asm__ ("" "getwd") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char *
+__attribute__ ((__nothrow__)) getwd (char *__buf)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1));
+ return __getwd_warn (__buf);
+}
+
+
+extern size_t __confstr_chk (int __name, char *__buf, size_t __len,
+ size_t __buflen) __attribute__ ((__nothrow__));
+extern size_t __confstr_alias (int __name, char *__buf, size_t __len) __asm__ ("" "confstr") __attribute__ ((__nothrow__));
+
+extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) __asm__ ("" "__confstr_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
+__attribute__ ((__nothrow__)) confstr (int __name, char *__buf, size_t __len)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+
+ if (__builtin_object_size (__buf, 2 > 1) < __len)
+ return __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __confstr_alias (__name, __buf, __len);
+}
+
+
+extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int __getgroups_alias (int __size, __gid_t __list[]) __asm__ ("" "getgroups") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) __asm__ ("" "__getgroups_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) getgroups (int __size, __gid_t __list[])
+{
+ if (__builtin_object_size (__list, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__size) || __size < 0)
+ return __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1));
+
+ if (__size * sizeof (__gid_t) > __builtin_object_size (__list, 2 > 1))
+ return __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1));
+ }
+ return __getgroups_alias (__size, __list);
+}
+
+
+extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen,
+ size_t __nreal) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ttyname_r") __attribute__ ((__nothrow__))
+
+ __attribute__ ((__nonnull__ (2)));
+extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ttyname_r_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) ttyname_r (int __fd, char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __ttyname_r_alias (__fd, __buf, __buflen);
+}
+
+
+
+extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal)
+ __attribute__ ((__nonnull__ (1)));
+extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") __attribute__ ((__nonnull__ (1)));
+
+extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk")
+
+
+ __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+getlogin_r (char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __getlogin_r_alias (__buf, __buflen);
+}
+
+
+
+
+extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int __gethostname_alias (char *__buf, size_t __buflen) __asm__ ("" "gethostname") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__gethostname_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) gethostname (char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __gethostname_alias (__buf, __buflen);
+}
+
+
+
+
+extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int __getdomainname_alias (char *__buf, size_t __buflen) __asm__ ("" "getdomainname") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getdomainname_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer")));
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) getdomainname (char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __getdomainname_alias (__buf, __buflen);
+}
+# 1115 "/usr/include/unistd.h" 2 3 4
+
+
+
+# 27 "./pulsecore/macro.h" 2
+# 1 "/usr/include/assert.h" 1 3 4
+# 66 "/usr/include/assert.h" 3 4
+
+
+
+extern void __assert_fail (__const char *__assertion, __const char *__file,
+ unsigned int __line, __const char *__function)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+extern void __assert_perror_fail (int __errnum, __const char *__file,
+ unsigned int __line,
+ __const char *__function)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+extern void __assert (const char *__assertion, const char *__file, int __line)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+# 28 "./pulsecore/macro.h" 2
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include-fixed/limits.h" 1 3 4
+# 29 "./pulsecore/macro.h" 2
+
+# 1 "/usr/include/stdio.h" 1 3 4
+# 30 "/usr/include/stdio.h" 3 4
+
+
+
+
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stddef.h" 1 3 4
+# 35 "/usr/include/stdio.h" 2 3 4
+# 45 "/usr/include/stdio.h" 3 4
+struct _IO_FILE;
+
+
+
+typedef struct _IO_FILE FILE;
+
+
+
+
+
+# 65 "/usr/include/stdio.h" 3 4
+typedef struct _IO_FILE __FILE;
+# 75 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/libio.h" 1 3 4
+# 32 "/usr/include/libio.h" 3 4
+# 1 "/usr/include/_G_config.h" 1 3 4
+# 15 "/usr/include/_G_config.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stddef.h" 1 3 4
+# 16 "/usr/include/_G_config.h" 2 3 4
+
+
+
+
+# 1 "/usr/include/wchar.h" 1 3 4
+# 83 "/usr/include/wchar.h" 3 4
+typedef struct
+{
+ int __count;
+ union
+ {
+
+ unsigned int __wch;
+
+
+
+ char __wchb[4];
+ } __value;
+} __mbstate_t;
+# 21 "/usr/include/_G_config.h" 2 3 4
+
+typedef struct
+{
+ __off_t __pos;
+ __mbstate_t __state;
+} _G_fpos_t;
+typedef struct
+{
+ __off64_t __pos;
+ __mbstate_t __state;
+} _G_fpos64_t;
+# 53 "/usr/include/_G_config.h" 3 4
+typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
+# 33 "/usr/include/libio.h" 2 3 4
+# 53 "/usr/include/libio.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stdarg.h" 1 3 4
+# 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stdarg.h" 3 4
+typedef __builtin_va_list __gnuc_va_list;
+# 54 "/usr/include/libio.h" 2 3 4
+# 170 "/usr/include/libio.h" 3 4
+struct _IO_jump_t; struct _IO_FILE;
+# 180 "/usr/include/libio.h" 3 4
+typedef void _IO_lock_t;
+
+
+
+
+
+struct _IO_marker {
+ struct _IO_marker *_next;
+ struct _IO_FILE *_sbuf;
+
+
+
+ int _pos;
+# 203 "/usr/include/libio.h" 3 4
+};
+
+
+enum __codecvt_result
+{
+ __codecvt_ok,
+ __codecvt_partial,
+ __codecvt_error,
+ __codecvt_noconv
+};
+# 271 "/usr/include/libio.h" 3 4
+struct _IO_FILE {
+ int _flags;
+
+
+
+
+ char* _IO_read_ptr;
+ char* _IO_read_end;
+ char* _IO_read_base;
+ char* _IO_write_base;
+ char* _IO_write_ptr;
+ char* _IO_write_end;
+ char* _IO_buf_base;
+ char* _IO_buf_end;
+
+ char *_IO_save_base;
+ char *_IO_backup_base;
+ char *_IO_save_end;
+
+ struct _IO_marker *_markers;
+
+ struct _IO_FILE *_chain;
+
+ int _fileno;
+
+
+
+ int _flags2;
+
+ __off_t _old_offset;
+
+
+
+ unsigned short _cur_column;
+ signed char _vtable_offset;
+ char _shortbuf[1];
+
+
+
+ _IO_lock_t *_lock;
+# 319 "/usr/include/libio.h" 3 4
+ __off64_t _offset;
+# 328 "/usr/include/libio.h" 3 4
+ void *__pad1;
+ void *__pad2;
+ void *__pad3;
+ void *__pad4;
+ size_t __pad5;
+
+ int _mode;
+
+ char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+
+};
+
+
+typedef struct _IO_FILE _IO_FILE;
+
+
+struct _IO_FILE_plus;
+
+extern struct _IO_FILE_plus _IO_2_1_stdin_;
+extern struct _IO_FILE_plus _IO_2_1_stdout_;
+extern struct _IO_FILE_plus _IO_2_1_stderr_;
+# 364 "/usr/include/libio.h" 3 4
+typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
+
+
+
+
+
+
+
+typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
+ size_t __n);
+
+
+
+
+
+
+
+typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
+
+
+typedef int __io_close_fn (void *__cookie);
+
+
+
+
+typedef __io_read_fn cookie_read_function_t;
+typedef __io_write_fn cookie_write_function_t;
+typedef __io_seek_fn cookie_seek_function_t;
+typedef __io_close_fn cookie_close_function_t;
+
+
+typedef struct
+{
+ __io_read_fn *read;
+ __io_write_fn *write;
+ __io_seek_fn *seek;
+ __io_close_fn *close;
+} _IO_cookie_io_functions_t;
+typedef _IO_cookie_io_functions_t cookie_io_functions_t;
+
+struct _IO_cookie_file;
+
+
+extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
+ void *__cookie, _IO_cookie_io_functions_t __fns);
+
+
+
+
+
+
+
+extern int __underflow (_IO_FILE *);
+extern int __uflow (_IO_FILE *);
+extern int __overflow (_IO_FILE *, int);
+# 458 "/usr/include/libio.h" 3 4
+extern int _IO_getc (_IO_FILE *__fp);
+extern int _IO_putc (int __c, _IO_FILE *__fp);
+extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+
+extern int _IO_peekc_locked (_IO_FILE *__fp);
+
+
+
+
+
+extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+# 488 "/usr/include/libio.h" 3 4
+extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
+ __gnuc_va_list, int *__restrict);
+extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
+ __gnuc_va_list);
+extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
+extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
+
+extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
+extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
+
+extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
+# 76 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+typedef __gnuc_va_list va_list;
+# 89 "/usr/include/stdio.h" 3 4
+
+
+typedef _G_fpos_t fpos_t;
+
+
+
+
+
+typedef _G_fpos64_t fpos64_t;
+# 141 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
+# 142 "/usr/include/stdio.h" 2 3 4
+
+
+
+extern struct _IO_FILE *stdin;
+extern struct _IO_FILE *stdout;
+extern struct _IO_FILE *stderr;
+
+
+
+
+
+
+
+extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
+
+extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
+
+
+
+
+extern int renameat (int __oldfd, __const char *__old, int __newfd,
+ __const char *__new) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern FILE *tmpfile (void) __attribute__ ((__warn_unused_result__));
+# 182 "/usr/include/stdio.h" 3 4
+extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__));
+
+
+
+extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+# 204 "/usr/include/stdio.h" 3 4
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+extern int fclose (FILE *__stream);
+
+
+
+
+extern int fflush (FILE *__stream);
+
+# 229 "/usr/include/stdio.h" 3 4
+extern int fflush_unlocked (FILE *__stream);
+# 239 "/usr/include/stdio.h" 3 4
+extern int fcloseall (void);
+
+
+
+
+
+
+
+
+
+extern FILE *fopen (__const char *__restrict __filename,
+ __const char *__restrict __modes) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern FILE *freopen (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+# 272 "/usr/include/stdio.h" 3 4
+
+
+extern FILE *fopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes) __attribute__ ((__warn_unused_result__));
+extern FILE *freopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern FILE *fopencookie (void *__restrict __magic_cookie,
+ __const char *__restrict __modes,
+ _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
+
+
+
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+ int __modes, size_t __n) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+ size_t __size) __attribute__ ((__nothrow__));
+
+
+extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int fprintf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...);
+
+
+
+
+extern int printf (__const char *__restrict __format, ...);
+
+extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg);
+
+
+
+
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+
+
+
+
+
+
+extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
+ __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__));
+extern int __asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
+extern int asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
+# 394 "/usr/include/stdio.h" 3 4
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+
+
+
+
+
+
+
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int scanf (__const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
+
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+# 445 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+
+
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__));
+
+
+extern int vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
+# 504 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+
+
+
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+
+
+
+
+
+extern int getchar (void);
+
+# 532 "/usr/include/stdio.h" 3 4
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+# 543 "/usr/include/stdio.h" 3 4
+extern int fgetc_unlocked (FILE *__stream);
+
+
+
+
+
+
+
+
+
+
+
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+
+
+
+
+
+extern int putchar (int __c);
+
+# 576 "/usr/include/stdio.h" 3 4
+extern int fputc_unlocked (int __c, FILE *__stream);
+
+
+
+
+
+
+
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+
+
+
+
+
+
+extern int getw (FILE *__stream);
+
+
+extern int putw (int __w, FILE *__stream);
+
+
+
+
+
+
+
+
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+ __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern char *gets (char *__s) __attribute__ ((__warn_unused_result__));
+
+# 622 "/usr/include/stdio.h" 3 4
+extern char *fgets_unlocked (char *__restrict __s, int __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+# 638 "/usr/include/stdio.h" 3 4
+extern __ssize_t __getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern __ssize_t getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern __ssize_t getline (char **__restrict __lineptr,
+ size_t *__restrict __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+
+
+
+
+
+extern int puts (__const char *__s);
+
+
+
+
+
+
+extern int ungetc (int __c, FILE *__stream);
+
+
+
+
+
+
+extern size_t fread (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __s) __attribute__ ((__warn_unused_result__));
+
+# 699 "/usr/include/stdio.h" 3 4
+extern int fputs_unlocked (__const char *__restrict __s,
+ FILE *__restrict __stream);
+# 710 "/usr/include/stdio.h" 3 4
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+extern int fseek (FILE *__stream, long int __off, int __whence);
+
+
+
+
+extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern void rewind (FILE *__stream);
+
+# 746 "/usr/include/stdio.h" 3 4
+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
+
+
+
+
+extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__));
+# 765 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
+
+
+
+
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+# 788 "/usr/include/stdio.h" 3 4
+
+
+
+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
+extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__));
+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
+
+
+
+
+extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
+
+extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+extern void perror (__const char *__s);
+
+
+
+
+
+
+# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
+# 27 "/usr/include/bits/sys_errlist.h" 3 4
+extern int sys_nerr;
+extern __const char *__const sys_errlist[];
+
+
+extern int _sys_nerr;
+extern __const char *__const _sys_errlist[];
+# 827 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+# 846 "/usr/include/stdio.h" 3 4
+extern FILE *popen (__const char *__command, __const char *__modes) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int pclose (FILE *__stream);
+
+
+
+
+
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *cuserid (char *__s);
+
+
+
+
+struct obstack;
+
+
+extern int obstack_printf (struct obstack *__restrict __obstack,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int obstack_vprintf (struct obstack *__restrict __obstack,
+ __const char *__restrict __format,
+ __gnuc_va_list __args)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
+
+
+
+
+
+
+
+extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
+# 907 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/bits/stdio.h" 1 3 4
+# 44 "/usr/include/bits/stdio.h" 3 4
+extern __inline __attribute__ ((__gnu_inline__)) int
+getchar (void)
+{
+ return _IO_getc (stdin);
+}
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+fgetc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+getc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+getchar_unlocked (void)
+{
+ return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
+}
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+putchar (int __c)
+{
+ return _IO_putc (__c, stdout);
+}
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+fputc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+putc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+putchar_unlocked (int __c)
+{
+ return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
+}
+
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) __ssize_t
+getline (char **__lineptr, size_t *__n, FILE *__stream)
+{
+ return __getdelim (__lineptr, __n, '\n', __stream);
+}
+
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x10) != 0);
+}
+
+
+extern __inline __attribute__ ((__gnu_inline__)) int
+__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x20) != 0);
+}
+# 908 "/usr/include/stdio.h" 2 3 4
+
+
+# 1 "/usr/include/bits/stdio2.h" 1 3 4
+# 24 "/usr/include/bits/stdio2.h" 3 4
+extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,
+ __const char *__restrict __format,
+ __gnuc_va_list __ap) __attribute__ ((__nothrow__));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) sprintf (char *__restrict __s, __const char *__restrict __fmt, ...)
+{
+ return __builtin___sprintf_chk (__s, 2 - 1,
+ __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ());
+}
+
+
+
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) vsprintf (char *__restrict __s, __const char *__restrict __fmt, __gnuc_va_list __ap)
+
+{
+ return __builtin___vsprintf_chk (__s, 2 - 1,
+ __builtin_object_size (__s, 2 > 1), __fmt, __ap);
+}
+
+
+
+extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag,
+ size_t __slen, __const char *__restrict __format,
+ ...) __attribute__ ((__nothrow__));
+extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,
+ size_t __slen, __const char *__restrict __format,
+ __gnuc_va_list __ap) __attribute__ ((__nothrow__));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) snprintf (char *__restrict __s, size_t __n, __const char *__restrict __fmt, ...)
+
+{
+ return __builtin___snprintf_chk (__s, __n, 2 - 1,
+ __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ());
+}
+
+
+
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) vsnprintf (char *__restrict __s, size_t __n, __const char *__restrict __fmt, __gnuc_va_list __ap)
+
+{
+ return __builtin___vsnprintf_chk (__s, __n, 2 - 1,
+ __builtin_object_size (__s, 2 > 1), __fmt, __ap);
+}
+
+
+
+
+
+extern int __fprintf_chk (FILE *__restrict __stream, int __flag,
+ __const char *__restrict __format, ...);
+extern int __printf_chk (int __flag, __const char *__restrict __format, ...);
+extern int __vfprintf_chk (FILE *__restrict __stream, int __flag,
+ __const char *__restrict __format, __gnuc_va_list __ap);
+extern int __vprintf_chk (int __flag, __const char *__restrict __format,
+ __gnuc_va_list __ap);
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+fprintf (FILE *__restrict __stream, __const char *__restrict __fmt, ...)
+{
+ return __fprintf_chk (__stream, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+printf (__const char *__restrict __fmt, ...)
+{
+ return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ());
+}
+
+
+
+
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+vprintf (__const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+
+ return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap);
+
+
+
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+vfprintf (FILE *__restrict __stream,
+ __const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+ return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap);
+}
+
+
+
+extern int __asprintf_chk (char **__restrict __ptr, int __flag,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__));
+extern int __vasprintf_chk (char **__restrict __ptr, int __flag,
+ __const char *__restrict __fmt, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__));
+extern int __dprintf_chk (int __fd, int __flag, __const char *__restrict __fmt,
+ ...) __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int __vdprintf_chk (int __fd, int __flag,
+ __const char *__restrict __fmt, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 3, 0)));
+extern int __obstack_printf_chk (struct obstack *__restrict __obstack,
+ int __flag, __const char *__restrict __format,
+ ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack,
+ int __flag,
+ __const char *__restrict __format,
+ __gnuc_va_list __args)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...)
+{
+ return __asprintf_chk (__ptr, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) __asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...)
+
+{
+ return __asprintf_chk (__ptr, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+dprintf (int __fd, __const char *__restrict __fmt, ...)
+{
+ return __dprintf_chk (__fd, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) obstack_printf (struct obstack *__restrict __obstack, __const char *__restrict __fmt, ...)
+
+{
+ return __obstack_printf_chk (__obstack, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+# 195 "/usr/include/bits/stdio2.h" 3 4
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) vasprintf (char **__restrict __ptr, __const char *__restrict __fmt, __gnuc_va_list __ap)
+
+{
+ return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+vdprintf (int __fd, __const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+ return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) obstack_vprintf (struct obstack *__restrict __obstack, __const char *__restrict __fmt, __gnuc_va_list __ap)
+
+{
+ return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt,
+ __ap);
+}
+
+
+
+
+
+extern char *__gets_chk (char *__str, size_t) __attribute__ ((__warn_unused_result__));
+extern char *__gets_warn (char *__str) __asm__ ("" "gets")
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use fgets or getline instead, gets can't " "specify buffer size")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+gets (char *__str)
+{
+ if (__builtin_object_size (__str, 2 > 1) != (size_t) -1)
+ return __gets_chk (__str, __builtin_object_size (__str, 2 > 1));
+ return __gets_warn (__str);
+}
+
+extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") __attribute__ ((__warn_unused_result__));
+
+
+extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk")
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+{
+ if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__n) || __n <= 0)
+ return __fgets_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+
+ if ((size_t) __n > __builtin_object_size (__s, 2 > 1))
+ return __fgets_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+ }
+ return __fgets_alias (__s, __n, __stream);
+}
+
+extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen,
+ size_t __size, size_t __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") __attribute__ ((__warn_unused_result__));
+
+
+
+extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk")
+
+
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) size_t
+fread (void *__restrict __ptr, size_t __size, size_t __n,
+ FILE *__restrict __stream)
+{
+ if (__builtin_object_size (__ptr, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__size)
+ || !__builtin_constant_p (__n)
+ || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
+ return __fread_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream);
+
+ if (__size * __n > __builtin_object_size (__ptr, 0))
+ return __fread_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream);
+ }
+ return __fread_alias (__ptr, __size, __n, __stream);
+}
+
+
+extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,
+ int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") __attribute__ ((__warn_unused_result__));
+
+
+extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk")
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
+{
+ if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__n) || __n <= 0)
+ return __fgets_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+
+ if ((size_t) __n > __builtin_object_size (__s, 2 > 1))
+ return __fgets_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+ }
+ return __fgets_unlocked_alias (__s, __n, __stream);
+}
+
+
+
+
+extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen,
+ size_t __size, size_t __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") __attribute__ ((__warn_unused_result__));
+
+
+
+extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk")
+
+
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) size_t
+fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
+ FILE *__restrict __stream)
+{
+ if (__builtin_object_size (__ptr, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__size)
+ || !__builtin_constant_p (__n)
+ || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
+ return __fread_unlocked_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n,
+ __stream);
+
+ if (__size * __n > __builtin_object_size (__ptr, 0))
+ return __fread_unlocked_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n,
+ __stream);
+ }
+
+
+ if (__builtin_constant_p (__size)
+ && __builtin_constant_p (__n)
+ && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2))
+ && __size * __n <= 8)
+ {
+ size_t __cnt = __size * __n;
+ char *__cptr = (char *) __ptr;
+ if (__cnt == 0)
+ return 0;
+
+ for (; __cnt > 0; --__cnt)
+ {
+ int __c = (__builtin_expect (((__stream)->_IO_read_ptr >= (__stream)->_IO_read_end), 0) ? __uflow (__stream) : *(unsigned char *) (__stream)->_IO_read_ptr++);
+ if (__c == (-1))
+ break;
+ *__cptr++ = __c;
+ }
+ return (__cptr - (char *) __ptr) / __size;
+ }
+
+ return __fread_unlocked_alias (__ptr, __size, __n, __stream);
+}
+# 911 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+
+
+# 31 "./pulsecore/macro.h" 2
+# 1 "/usr/include/stdlib.h" 1 3 4
+# 33 "/usr/include/stdlib.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stddef.h" 1 3 4
+# 323 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stddef.h" 3 4
+typedef int wchar_t;
+# 34 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+
+
+
+
+# 1 "/usr/include/bits/waitflags.h" 1 3 4
+# 43 "/usr/include/stdlib.h" 2 3 4
+# 1 "/usr/include/bits/waitstatus.h" 1 3 4
+# 67 "/usr/include/bits/waitstatus.h" 3 4
+union wait
+ {
+ int w_status;
+ struct
+ {
+
+ unsigned int __w_termsig:7;
+ unsigned int __w_coredump:1;
+ unsigned int __w_retcode:8;
+ unsigned int:16;
+
+
+
+
+
+
+
+ } __wait_terminated;
+ struct
+ {
+
+ unsigned int __w_stopval:8;
+ unsigned int __w_stopsig:8;
+ unsigned int:16;
+
+
+
+
+
+
+ } __wait_stopped;
+ };
+# 44 "/usr/include/stdlib.h" 2 3 4
+# 68 "/usr/include/stdlib.h" 3 4
+typedef union
+ {
+ union wait *__uptr;
+ int *__iptr;
+ } __WAIT_STATUS __attribute__ ((__transparent_union__));
+# 96 "/usr/include/stdlib.h" 3 4
+
+
+typedef struct
+ {
+ int quot;
+ int rem;
+ } div_t;
+
+
+
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } ldiv_t;
+
+
+
+
+
+
+
+__extension__ typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } lldiv_t;
+
+
+# 140 "/usr/include/stdlib.h" 3 4
+extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern double atof (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern int atoi (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern long int atol (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+__extension__ extern long long int atoll (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern double strtod (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern float strtof (__const char *__restrict __nptr,
+ char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern long double strtold (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern long int strtol (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+# 236 "/usr/include/stdlib.h" 3 4
+# 1 "/usr/include/xlocale.h" 1 3 4
+# 28 "/usr/include/xlocale.h" 3 4
+typedef struct __locale_struct
+{
+
+ struct locale_data *__locales[13];
+
+
+ const unsigned short int *__ctype_b;
+ const int *__ctype_tolower;
+ const int *__ctype_toupper;
+
+
+ const char *__names[13];
+} *__locale_t;
+
+
+typedef __locale_t locale_t;
+# 237 "/usr/include/stdlib.h" 2 3 4
+
+
+
+extern long int strtol_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base,
+ __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+
+extern unsigned long int strtoul_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+
+__extension__
+extern long long int strtoll_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+
+__extension__
+extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+
+extern double strtod_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+
+extern float strtof_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+
+extern long double strtold_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern __inline __attribute__ ((__gnu_inline__)) double
+__attribute__ ((__nothrow__)) atof (__const char *__nptr)
+{
+ return strtod (__nptr, (char **) ((void *)0));
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
+{
+ return (int) strtol (__nptr, (char **) ((void *)0), 10);
+}
+extern __inline __attribute__ ((__gnu_inline__)) long int
+__attribute__ ((__nothrow__)) atol (__const char *__nptr)
+{
+ return strtol (__nptr, (char **) ((void *)0), 10);
+}
+
+
+
+
+__extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int
+__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
+{
+ return strtoll (__nptr, (char **) ((void *)0), 10);
+}
+
+# 311 "/usr/include/stdlib.h" 3 4
+extern char *l64a (long int __n) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern long int a64l (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 327 "/usr/include/stdlib.h" 3 4
+extern long int random (void) __attribute__ ((__nothrow__));
+
+
+extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *initstate (unsigned int __seed, char *__statebuf,
+ size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+struct random_data
+ {
+ int32_t *fptr;
+ int32_t *rptr;
+ int32_t *state;
+ int rand_type;
+ int rand_deg;
+ int rand_sep;
+ int32_t *end_ptr;
+ };
+
+extern int random_r (struct random_data *__restrict __buf,
+ int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+ size_t __statelen,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+
+extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern int rand (void) __attribute__ ((__nothrow__));
+
+extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
+
+
+
+
+extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern double drand48 (void) __attribute__ ((__nothrow__));
+extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int lrand48 (void) __attribute__ ((__nothrow__));
+extern long int nrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int mrand48 (void) __attribute__ ((__nothrow__));
+extern long int jrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+struct drand48_data
+ {
+ unsigned short int __x[3];
+ unsigned short int __old_x[3];
+ unsigned short int __c;
+ unsigned short int __init;
+ unsigned long long int __a;
+ };
+
+
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+extern int seed48_r (unsigned short int __seed16v[3],
+ struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int lcong48_r (unsigned short int __param[7],
+ struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+
+
+
+extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+extern void *calloc (size_t __nmemb, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+
+
+extern void *realloc (void *__ptr, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+extern void free (void *__ptr) __attribute__ ((__nothrow__));
+
+
+
+
+extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
+
+
+
+# 1 "/usr/include/alloca.h" 1 3 4
+# 25 "/usr/include/alloca.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stddef.h" 1 3 4
+# 26 "/usr/include/alloca.h" 2 3 4
+
+
+
+
+
+
+
+extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+# 498 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 527 "/usr/include/stdlib.h" 3 4
+extern int at_quick_exit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+
+extern void quick_exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+
+extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern char *__secure_getenv (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int clearenv (void) __attribute__ ((__nothrow__));
+# 604 "/usr/include/stdlib.h" 3 4
+extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 615 "/usr/include/stdlib.h" 3 4
+extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 625 "/usr/include/stdlib.h" 3 4
+extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 635 "/usr/include/stdlib.h" 3 4
+extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 646 "/usr/include/stdlib.h" 3 4
+extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 656 "/usr/include/stdlib.h" 3 4
+extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+
+extern int system (__const char *__command) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern char *canonicalize_file_name (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 683 "/usr/include/stdlib.h" 3 4
+extern char *realpath (__const char *__restrict __name,
+ char *__restrict __resolved) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+
+
+typedef __compar_fn_t comparison_fn_t;
+
+
+
+typedef int (*__compar_d_fn_t) (__const void *, __const void *, void *);
+
+
+
+
+
+extern void *bsearch (__const void *__key, __const void *__base,
+ size_t __nmemb, size_t __size, __compar_fn_t __compar)
+ __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+ __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+
+extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
+ __compar_d_fn_t __compar, void *__arg)
+ __attribute__ ((__nonnull__ (1, 4)));
+
+
+
+
+extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+
+
+
+__extension__ extern long long int llabs (long long int __x)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern div_t div (int __numer, int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+extern ldiv_t ldiv (long int __numer, long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+__extension__ extern lldiv_t lldiv (long long int __numer,
+ long long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+
+# 756 "/usr/include/stdlib.h" 3 4
+extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern char *qecvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+extern char *qfcvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+extern char *qgcvt (long double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+
+extern int qecvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qfcvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+
+
+
+
+
+
+
+extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern int mbtowc (wchar_t *__restrict __pwc,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+extern size_t mbstowcs (wchar_t *__restrict __pwcs,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
+
+extern size_t wcstombs (char *__restrict __s,
+ __const wchar_t *__restrict __pwcs, size_t __n)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 844 "/usr/include/stdlib.h" 3 4
+extern int getsubopt (char **__restrict __optionp,
+ char *__const *__restrict __tokens,
+ char **__restrict __valuep)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern int grantpt (int __fd) __attribute__ ((__nothrow__));
+
+
+
+extern int unlockpt (int __fd) __attribute__ ((__nothrow__));
+
+
+
+
+extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+extern int getpt (void);
+
+
+
+
+
+
+extern int getloadavg (double __loadavg[], int __nelem)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+# 1 "/usr/include/bits/stdlib.h" 1 3 4
+# 24 "/usr/include/bits/stdlib.h" 3 4
+extern char *__realpath_chk (__const char *__restrict __name,
+ char *__restrict __resolved,
+ size_t __resolvedlen) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern char *__realpath_alias (__const char *__restrict __name, char *__restrict __resolved) __asm__ ("" "realpath") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern char *__realpath_chk_warn (__const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) __asm__ ("" "__realpath_chk") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__))
+
+
+
+ __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+__attribute__ ((__nothrow__)) realpath (__const char *__restrict __name, char *__restrict __resolved)
+{
+ if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1)
+ {
+
+ if (__builtin_object_size (__resolved, 2 > 1) < 4096)
+ return __realpath_chk_warn (__name, __resolved, __builtin_object_size (__resolved, 2 > 1));
+
+ return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1));
+ }
+
+ return __realpath_alias (__name, __resolved);
+}
+
+
+extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
+ size_t __nreal) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ptsname_r") __attribute__ ((__nothrow__))
+
+ __attribute__ ((__nonnull__ (2)));
+extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ptsname_r_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) ptsname_r (int __fd, char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __ptsname_r_alias (__fd, __buf, __buflen);
+}
+
+
+extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int __wctomb_alias (char *__s, wchar_t __wchar) __asm__ ("" "wctomb") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) int
+__attribute__ ((__nothrow__)) wctomb (char *__s, wchar_t __wchar)
+{
+
+
+
+
+
+
+
+ if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1))
+ return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1));
+ return __wctomb_alias (__s, __wchar);
+}
+
+
+extern size_t __mbstowcs_chk (wchar_t *__restrict __dst,
+ __const char *__restrict __src,
+ size_t __len, size_t __dstlen) __attribute__ ((__nothrow__));
+extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len) __asm__ ("" "mbstowcs") __attribute__ ((__nothrow__));
+
+
+
+extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__mbstowcs_chk") __attribute__ ((__nothrow__))
+
+
+
+ __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
+__attribute__ ((__nothrow__)) mbstowcs (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len)
+
+{
+ if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __mbstowcs_chk (__dst, __src, __len,
+ __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
+
+ if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t))
+ return __mbstowcs_chk_warn (__dst, __src, __len,
+ __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
+ }
+ return __mbstowcs_alias (__dst, __src, __len);
+}
+
+
+extern size_t __wcstombs_chk (char *__restrict __dst,
+ __const wchar_t *__restrict __src,
+ size_t __len, size_t __dstlen) __attribute__ ((__nothrow__));
+extern size_t __wcstombs_alias (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len) __asm__ ("" "wcstombs") __attribute__ ((__nothrow__));
+
+
+
+extern size_t __wcstombs_chk_warn (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__wcstombs_chk") __attribute__ ((__nothrow__))
+
+
+
+ __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len")));
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
+__attribute__ ((__nothrow__)) wcstombs (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len)
+
+{
+ if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
+ if (__len > __builtin_object_size (__dst, 2 > 1))
+ return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
+ }
+ return __wcstombs_alias (__dst, __src, __len);
+}
+# 904 "/usr/include/stdlib.h" 2 3 4
+# 912 "/usr/include/stdlib.h" 3 4
+
+# 32 "./pulsecore/macro.h" 2
+# 1 "/usr/include/string.h" 1 3 4
+# 28 "/usr/include/string.h" 3 4
+
+
+
+
+
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stddef.h" 1 3 4
+# 34 "/usr/include/string.h" 2 3 4
+
+
+
+
+
+
+
+
+
+extern void *memcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void *memmove (void *__dest, __const void *__src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
+ int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 94 "/usr/include/string.h" 3 4
+extern void *memchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+# 108 "/usr/include/string.h" 3 4
+extern void *rawmemchr (__const void *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+# 119 "/usr/include/string.h" 3 4
+extern void *memrchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
+ size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strcmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strcoll (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern size_t strxfrm (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+# 164 "/usr/include/string.h" 3 4
+extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
+ __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+
+
+
+
+extern char *strdup (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern char *strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+# 208 "/usr/include/string.h" 3 4
+
+# 233 "/usr/include/string.h" 3 4
+extern char *strchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+# 260 "/usr/include/string.h" 3 4
+extern char *strrchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+# 274 "/usr/include/string.h" 3 4
+extern char *strchrnul (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern size_t strcspn (__const char *__s, __const char *__reject)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern size_t strspn (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 312 "/usr/include/string.h" 3 4
+extern char *strpbrk (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 340 "/usr/include/string.h" 3 4
+extern char *strstr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+extern char *__strtok_r (char *__restrict __s,
+ __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+
+extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+# 371 "/usr/include/string.h" 3 4
+extern char *strcasestr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+
+extern void *memmem (__const void *__haystack, size_t __haystacklen,
+ __const void *__needle, size_t __needlelen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
+
+
+
+extern void *__mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern size_t strlen (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern size_t strnlen (__const char *__string, size_t __maxlen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
+
+# 436 "/usr/include/string.h" 3 4
+extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern void bcopy (__const void *__src, void *__dest, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 487 "/usr/include/string.h" 3 4
+extern char *index (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+# 515 "/usr/include/string.h" 3 4
+extern char *rindex (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+__extension__ extern int ffsll (long long int __ll)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern int strcasecmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern int strcasecmp_l (__const char *__s1, __const char *__s2,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+extern int strncasecmp_l (__const char *__s1, __const char *__s2,
+ size_t __n, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
+
+
+
+
+
+extern char *strsep (char **__restrict __stringp,
+ __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+extern char *strsignal (int __sig) __attribute__ ((__nothrow__));
+
+
+extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern char *__stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+extern int strverscmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 604 "/usr/include/string.h" 3 4
+extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 632 "/usr/include/string.h" 3 4
+# 1 "/usr/include/bits/string.h" 1 3 4
+# 633 "/usr/include/string.h" 2 3 4
+
+
+# 1 "/usr/include/bits/string2.h" 1 3 4
+# 394 "/usr/include/bits/string2.h" 3 4
+extern void *__rawmemchr (const void *__s, int __c);
+# 969 "/usr/include/bits/string2.h" 3 4
+extern __inline __attribute__ ((__gnu_inline__)) size_t __strcspn_c1 (__const char *__s, int __reject);
+extern __inline __attribute__ ((__gnu_inline__)) size_t
+__strcspn_c1 (__const char *__s, int __reject)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject)
+ ++__result;
+ return __result;
+}
+
+extern __inline __attribute__ ((__gnu_inline__)) size_t __strcspn_c2 (__const char *__s, int __reject1,
+ int __reject2);
+extern __inline __attribute__ ((__gnu_inline__)) size_t
+__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2)
+ ++__result;
+ return __result;
+}
+
+extern __inline __attribute__ ((__gnu_inline__)) size_t __strcspn_c3 (__const char *__s, int __reject1,
+ int __reject2, int __reject3);
+extern __inline __attribute__ ((__gnu_inline__)) size_t
+__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
+ int __reject3)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2 && __s[__result] != __reject3)
+ ++__result;
+ return __result;
+}
+# 1045 "/usr/include/bits/string2.h" 3 4
+extern __inline __attribute__ ((__gnu_inline__)) size_t __strspn_c1 (__const char *__s, int __accept);
+extern __inline __attribute__ ((__gnu_inline__)) size_t
+__strspn_c1 (__const char *__s, int __accept)
+{
+ register size_t __result = 0;
+
+ while (__s[__result] == __accept)
+ ++__result;
+ return __result;
+}
+
+extern __inline __attribute__ ((__gnu_inline__)) size_t __strspn_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline __attribute__ ((__gnu_inline__)) size_t
+__strspn_c2 (__const char *__s, int __accept1, int __accept2)
+{
+ register size_t __result = 0;
+
+ while (__s[__result] == __accept1 || __s[__result] == __accept2)
+ ++__result;
+ return __result;
+}
+
+extern __inline __attribute__ ((__gnu_inline__)) size_t __strspn_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline __attribute__ ((__gnu_inline__)) size_t
+__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
+{
+ register size_t __result = 0;
+
+ while (__s[__result] == __accept1 || __s[__result] == __accept2
+ || __s[__result] == __accept3)
+ ++__result;
+ return __result;
+}
+# 1121 "/usr/include/bits/string2.h" 3 4
+extern __inline __attribute__ ((__gnu_inline__)) char *__strpbrk_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline __attribute__ ((__gnu_inline__)) char *
+__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
+{
+
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+
+extern __inline __attribute__ ((__gnu_inline__)) char *__strpbrk_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline __attribute__ ((__gnu_inline__)) char *
+__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
+ int __accept3)
+{
+
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
+ && *__s != __accept3)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+# 1172 "/usr/include/bits/string2.h" 3 4
+extern __inline __attribute__ ((__gnu_inline__)) char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
+extern __inline __attribute__ ((__gnu_inline__)) char *
+__strtok_r_1c (char *__s, char __sep, char **__nextp)
+{
+ char *__result;
+ if (__s == ((void *)0))
+ __s = *__nextp;
+ while (*__s == __sep)
+ ++__s;
+ __result = ((void *)0);
+ if (*__s != '\0')
+ {
+ __result = __s++;
+ while (*__s != '\0')
+ if (*__s++ == __sep)
+ {
+ __s[-1] = '\0';
+ break;
+ }
+ }
+ *__nextp = __s;
+ return __result;
+}
+# 1204 "/usr/include/bits/string2.h" 3 4
+extern char *__strsep_g (char **__stringp, __const char *__delim);
+# 1222 "/usr/include/bits/string2.h" 3 4
+extern __inline __attribute__ ((__gnu_inline__)) char *__strsep_1c (char **__s, char __reject);
+extern __inline __attribute__ ((__gnu_inline__)) char *
+__strsep_1c (char **__s, char __reject)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
+ *(*__s)++ = '\0';
+ return __retval;
+}
+
+extern __inline __attribute__ ((__gnu_inline__)) char *__strsep_2c (char **__s, char __reject1, char __reject2);
+extern __inline __attribute__ ((__gnu_inline__)) char *
+__strsep_2c (char **__s, char __reject1, char __reject2)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+
+extern __inline __attribute__ ((__gnu_inline__)) char *__strsep_3c (char **__s, char __reject1, char __reject2,
+ char __reject3);
+extern __inline __attribute__ ((__gnu_inline__)) char *
+__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+# 1303 "/usr/include/bits/string2.h" 3 4
+extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+# 1322 "/usr/include/bits/string2.h" 3 4
+extern char *__strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+# 636 "/usr/include/string.h" 2 3 4
+
+
+
+
+# 1 "/usr/include/bits/string3.h" 1 3 4
+# 23 "/usr/include/bits/string3.h" 3 4
+extern void __warn_memset_zero_len (void) __attribute__((__warning__ ("memset used with constant zero length parameter; this could be due to transposed parameters")));
+# 48 "/usr/include/bits/string3.h" 3 4
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+__attribute__ ((__nothrow__)) memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __len)
+
+{
+ return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+__attribute__ ((__nothrow__)) memmove (void *__restrict __dest, __const void *__restrict __src, size_t __len)
+
+{
+ return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+__attribute__ ((__nothrow__)) mempcpy (void *__restrict __dest, __const void *__restrict __src, size_t __len)
+
+{
+ return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+# 77 "/usr/include/bits/string3.h" 3 4
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+__attribute__ ((__nothrow__)) memset (void *__dest, int __ch, size_t __len)
+{
+ if (__builtin_constant_p (__len) && __len == 0)
+ {
+ __warn_memset_zero_len ();
+ return __dest;
+ }
+ return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void
+__attribute__ ((__nothrow__)) bcopy (__const void *__restrict __src, void *__restrict __dest, size_t __len)
+
+{
+ (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void
+__attribute__ ((__nothrow__)) bzero (void *__dest, size_t __len)
+{
+ (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+__attribute__ ((__nothrow__)) strcpy (char *__restrict __dest, __const char *__restrict __src)
+{
+ return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+__attribute__ ((__nothrow__)) stpcpy (char *__restrict __dest, __const char *__restrict __src)
+{
+ return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
+}
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+__attribute__ ((__nothrow__)) strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __len)
+
+{
+ return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
+}
+
+
+extern char *__stpncpy_chk (char *__dest, __const char *__src, size_t __n,
+ size_t __destlen) __attribute__ ((__nothrow__));
+extern char *__stpncpy_alias (char *__dest, __const char *__src, size_t __n) __asm__ ("" "stpncpy") __attribute__ ((__nothrow__));
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+__attribute__ ((__nothrow__)) stpncpy (char *__dest, __const char *__src, size_t __n)
+{
+ if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1
+ && (!__builtin_constant_p (__n) || __n <= __builtin_object_size (__dest, 2 > 1)))
+ return __stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1));
+ return __stpncpy_alias (__dest, __src, __n);
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+__attribute__ ((__nothrow__)) strcat (char *__restrict __dest, __const char *__restrict __src)
+{
+ return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+__attribute__ ((__nothrow__)) strncat (char *__restrict __dest, __const char *__restrict __src, size_t __len)
+
+{
+ return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
+}
+# 641 "/usr/include/string.h" 2 3 4
+
+
+
+
+# 33 "./pulsecore/macro.h" 2
+# 62 "./pulsecore/macro.h"
+static inline void* PA_ALIGN_PTR(const void *p) {
+ return (void*) (((size_t) p) & ~(sizeof(void*) - 1));
+}
+
+
+static inline size_t PA_ALIGN(size_t l) {
+ return ((l + sizeof(void*) - 1) & ~(sizeof(void*) - 1));
+}
+
+
+static inline void* PA_PAGE_ALIGN_PTR(const void *p) {
+ return (void*) (((size_t) p) & ~(((size_t) (sysconf(_SC_PAGESIZE))) - 1));
+}
+
+
+static inline size_t PA_PAGE_ALIGN(size_t l) {
+ return (l + ((size_t) (sysconf(_SC_PAGESIZE))) - 1) & ~(((size_t) (sysconf(_SC_PAGESIZE))) - 1);
+}
+# 179 "./pulsecore/macro.h"
+typedef _Bool pa_bool_t;
+# 320 "./pulsecore/macro.h"
+# 1 "./pulsecore/log.h" 1
+# 26 "./pulsecore/log.h"
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stdarg.h" 1 3 4
+# 27 "./pulsecore/log.h" 2
+
+
+# 1 "./pulsecore/macro.h" 1
+# 30 "./pulsecore/log.h" 2
+
+
+
+
+
+typedef enum pa_log_target {
+ PA_LOG_STDERR,
+ PA_LOG_SYSLOG,
+ PA_LOG_NULL,
+ PA_LOG_TARGET_MAX
+} pa_log_target_t;
+
+typedef enum pa_log_level {
+ PA_LOG_ERROR = 0,
+ PA_LOG_WARN = 1,
+ PA_LOG_NOTICE = 2,
+ PA_LOG_INFO = 3,
+ PA_LOG_DEBUG = 4,
+ PA_LOG_LEVEL_MAX
+} pa_log_level_t;
+
+typedef enum pa_log_flags {
+ PA_LOG_COLORS = 0x01,
+ PA_LOG_PRINT_TIME = 0x02,
+ PA_LOG_PRINT_FILE = 0x04,
+ PA_LOG_PRINT_META = 0x08,
+ PA_LOG_PRINT_LEVEL = 0x10,
+} pa_log_flags_t;
+
+typedef enum pa_log_merge {
+ PA_LOG_SET,
+ PA_LOG_UNSET,
+ PA_LOG_RESET
+} pa_log_merge_t;
+
+
+void pa_log_set_ident(const char *p);
+
+
+void pa_log_set_target(pa_log_target_t t);
+
+
+void pa_log_set_level(pa_log_level_t l);
+
+
+void pa_log_set_flags(pa_log_flags_t flags, pa_log_merge_t merge);
+
+
+void pa_log_set_show_backtrace(unsigned nlevels);
+
+
+void pa_log_set_skip_backtrace(unsigned nlevels);
+
+void pa_log_level_meta(
+ pa_log_level_t level,
+ const char*file,
+ int line,
+ const char *func,
+ const char *format, ...) __attribute__ ((format (printf, 5, 6)));
+
+void pa_log_levelv_meta(
+ pa_log_level_t level,
+ const char*file,
+ int line,
+ const char *func,
+ const char *format,
+ va_list ap);
+
+void pa_log_level(
+ pa_log_level_t level,
+ const char *format, ...) __attribute__ ((format (printf, 2, 3)));
+
+void pa_log_levelv(
+ pa_log_level_t level,
+ const char *format,
+ va_list ap);
+# 138 "./pulsecore/log.h"
+pa_bool_t pa_log_ratelimit(void);
+# 321 "./pulsecore/macro.h" 2
+# 30 "pulsecore/svolume_mmx.c" 2
+# 1 "./pulsecore/g711.h" 1
+# 26 "./pulsecore/g711.h"
+unsigned char st_13linear2alaw(int16_t pcm_val);
+int16_t st_alaw2linear16(unsigned char);
+# 36 "./pulsecore/g711.h"
+unsigned char st_14linear2ulaw(int16_t pcm_val);
+int16_t st_ulaw2linear16(unsigned char);
+# 31 "pulsecore/svolume_mmx.c" 2
+# 1 "./pulsecore/core-util.h" 1
+# 33 "./pulsecore/core-util.h"
+# 1 "/usr/include/sys/resource.h" 1 3 4
+# 25 "/usr/include/sys/resource.h" 3 4
+# 1 "/usr/include/bits/resource.h" 1 3 4
+# 33 "/usr/include/bits/resource.h" 3 4
+enum __rlimit_resource
+{
+
+ RLIMIT_CPU = 0,
+
+
+
+ RLIMIT_FSIZE = 1,
+
+
+
+ RLIMIT_DATA = 2,
+
+
+
+ RLIMIT_STACK = 3,
+
+
+
+ RLIMIT_CORE = 4,
+
+
+
+
+
+
+ __RLIMIT_RSS = 5,
+
+
+
+ RLIMIT_NOFILE = 7,
+ __RLIMIT_OFILE = RLIMIT_NOFILE,
+
+
+
+
+ RLIMIT_AS = 9,
+
+
+
+ __RLIMIT_NPROC = 6,
+
+
+
+ __RLIMIT_MEMLOCK = 8,
+
+
+
+ __RLIMIT_LOCKS = 10,
+
+
+
+ __RLIMIT_SIGPENDING = 11,
+
+
+
+ __RLIMIT_MSGQUEUE = 12,
+
+
+
+
+
+ __RLIMIT_NICE = 13,
+
+
+
+
+ __RLIMIT_RTPRIO = 14,
+
+
+ __RLIMIT_NLIMITS = 15,
+ __RLIM_NLIMITS = __RLIMIT_NLIMITS
+
+
+};
+# 127 "/usr/include/bits/resource.h" 3 4
+typedef __rlim_t rlim_t;
+
+
+
+
+typedef __rlim64_t rlim64_t;
+
+
+struct rlimit
+ {
+
+ rlim_t rlim_cur;
+
+ rlim_t rlim_max;
+ };
+
+
+struct rlimit64
+ {
+
+ rlim64_t rlim_cur;
+
+ rlim64_t rlim_max;
+ };
+
+
+
+enum __rusage_who
+{
+
+ RUSAGE_SELF = 0,
+
+
+
+ RUSAGE_CHILDREN = -1
+
+
+
+ ,
+
+ RUSAGE_THREAD = 1
+
+
+
+
+};
+
+
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 176 "/usr/include/bits/resource.h" 2 3 4
+
+
+struct rusage
+ {
+
+ struct timeval ru_utime;
+
+ struct timeval ru_stime;
+
+ long int ru_maxrss;
+
+
+ long int ru_ixrss;
+
+ long int ru_idrss;
+
+ long int ru_isrss;
+
+
+ long int ru_minflt;
+
+ long int ru_majflt;
+
+ long int ru_nswap;
+
+
+ long int ru_inblock;
+
+ long int ru_oublock;
+
+ long int ru_msgsnd;
+
+ long int ru_msgrcv;
+
+ long int ru_nsignals;
+
+
+
+ long int ru_nvcsw;
+
+
+ long int ru_nivcsw;
+ };
+
+
+
+
+
+
+
+enum __priority_which
+{
+ PRIO_PROCESS = 0,
+
+ PRIO_PGRP = 1,
+
+ PRIO_USER = 2
+
+};
+# 26 "/usr/include/sys/resource.h" 2 3 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef enum __rlimit_resource __rlimit_resource_t;
+typedef enum __rusage_who __rusage_who_t;
+typedef enum __priority_which __priority_which_t;
+# 51 "/usr/include/sys/resource.h" 3 4
+extern int getrlimit (__rlimit_resource_t __resource,
+ struct rlimit *__rlimits) __attribute__ ((__nothrow__));
+# 62 "/usr/include/sys/resource.h" 3 4
+extern int getrlimit64 (__rlimit_resource_t __resource,
+ struct rlimit64 *__rlimits) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int setrlimit (__rlimit_resource_t __resource,
+ __const struct rlimit *__rlimits) __attribute__ ((__nothrow__));
+# 82 "/usr/include/sys/resource.h" 3 4
+extern int setrlimit64 (__rlimit_resource_t __resource,
+ __const struct rlimit64 *__rlimits) __attribute__ ((__nothrow__));
+
+
+
+
+extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int getpriority (__priority_which_t __which, id_t __who) __attribute__ ((__nothrow__));
+
+
+
+extern int setpriority (__priority_which_t __which, id_t __who, int __prio)
+ __attribute__ ((__nothrow__));
+
+
+# 34 "./pulsecore/core-util.h" 2
+# 43 "./pulsecore/core-util.h"
+struct timeval;
+# 57 "./pulsecore/core-util.h"
+void pa_make_fd_nonblock(int fd);
+void pa_make_fd_cloexec(int fd);
+
+int pa_make_secure_dir(const char* dir, mode_t m, uid_t uid, gid_t gid);
+int pa_make_secure_parent_dir(const char *fn, mode_t, uid_t uid, gid_t gid);
+
+ssize_t pa_read(int fd, void *buf, size_t count, int *type);
+ssize_t pa_write(int fd, const void *buf, size_t count, int *type);
+ssize_t pa_loop_read(int fd, void*data, size_t size, int *type);
+ssize_t pa_loop_write(int fd, const void*data, size_t size, int *type);
+
+int pa_close(int fd);
+
+void pa_check_signal_is_blocked(int sig);
+
+char *pa_sprintf_malloc(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
+char *pa_vsprintf_malloc(const char *format, va_list ap);
+
+char *pa_strlcpy(char *b, const char *s, size_t l);
+
+char *pa_parent_dir(const char *fn);
+
+int pa_make_realtime(int rtprio);
+int pa_raise_priority(int nice_level);
+void pa_reset_priority(void);
+
+int pa_parse_boolean(const char *s) __attribute__ ((pure));
+
+static inline const char *pa_yes_no(pa_bool_t b) {
+ return b ? "yes" : "no";
+}
+
+static inline const char *pa_strnull(const char *x) {
+ return x ? x : "(null)";
+}
+
+static inline const char *pa_strempty(const char *x) {
+ return x ? x : "";
+}
+
+static inline const char *pa_strna(const char *x) {
+ return x ? x : "n/a";
+}
+
+char *pa_split(const char *c, const char*delimiters, const char **state);
+char *pa_split_spaces(const char *c, const char **state);
+
+char *pa_strip_nl(char *s);
+
+const char *pa_sig2str(int sig) __attribute__ ((pure));
+
+int pa_own_uid_in_group(const char *name, gid_t *gid);
+int pa_uid_in_group(uid_t uid, const char *name);
+gid_t pa_get_gid_of_group(const char *name);
+int pa_check_in_group(gid_t g);
+
+int pa_lock_fd(int fd, int b);
+
+int pa_lock_lockfile(const char *fn);
+int pa_unlock_lockfile(const char *fn, int fd);
+
+char *pa_hexstr(const uint8_t* d, size_t dlength, char *s, size_t slength);
+size_t pa_parsehex(const char *p, uint8_t *d, size_t dlength);
+
+pa_bool_t pa_startswith(const char *s, const char *pfx) __attribute__ ((pure));
+pa_bool_t pa_endswith(const char *s, const char *sfx) __attribute__ ((pure));
+
+FILE *pa_open_config_file(const char *global, const char *local, const char *env, char **result);
+char* pa_find_config_file(const char *global, const char *local, const char *env);
+
+char *pa_get_runtime_dir(void);
+char *pa_get_state_dir(void);
+char *pa_get_home_dir_malloc(void);
+char *pa_get_binary_name_malloc(void);
+char *pa_runtime_path(const char *fn);
+char *pa_state_path(const char *fn, pa_bool_t prepend_machine_id);
+
+int pa_atoi(const char *s, int32_t *ret_i);
+int pa_atou(const char *s, uint32_t *ret_u);
+int pa_atod(const char *s, double *ret_d);
+
+size_t pa_snprintf(char *str, size_t size, const char *format, ...);
+size_t pa_vsnprintf(char *str, size_t size, const char *format, va_list ap);
+
+char *pa_truncate_utf8(char *c, size_t l);
+
+int pa_match(const char *expr, const char *v);
+
+char *pa_getcwd(void);
+char *pa_make_path_absolute(const char *p);
+pa_bool_t pa_is_path_absolute(const char *p);
+
+void *pa_will_need(const void *p, size_t l);
+
+static inline int pa_is_power_of_two(unsigned n) {
+ return !(n & (n - 1));
+}
+
+static inline unsigned pa_ulog2(unsigned n) {
+
+ if (n <= 1)
+ return 0;
+
+
+ return 8U * (unsigned) sizeof(unsigned) - (unsigned) __builtin_clz(n) - 1;
+# 176 "./pulsecore/core-util.h"
+}
+
+static inline unsigned pa_make_power_of_two(unsigned n) {
+
+ if (pa_is_power_of_two(n))
+ return n;
+
+ return 1U << (pa_ulog2(n) + 1);
+}
+
+void pa_close_pipe(int fds[2]);
+
+char *pa_readlink(const char *p);
+
+int pa_close_all(int except_fd, ...);
+int pa_close_allv(const int except_fds[]);
+int pa_unblock_sigs(int except, ...);
+int pa_unblock_sigsv(const int except[]);
+int pa_reset_sigs(int except, ...);
+int pa_reset_sigsv(const int except[]);
+
+void pa_set_env(const char *key, const char *value);
+void pa_set_env_and_record(const char *key, const char *value);
+void pa_unset_env_recorded(void);
+
+pa_bool_t pa_in_system_mode(void);
+
+
+
+char *pa_get_host_name_malloc(void);
+char *pa_get_user_name_malloc(void);
+
+char *pa_machine_id(void);
+char *pa_session_id(void);
+char *pa_uname_string(void);
+
+
+pa_bool_t pa_in_valgrind(void);
+
+
+
+
+
+
+unsigned pa_gcd(unsigned a, unsigned b);
+void pa_reduce(unsigned *num, unsigned *den);
+
+unsigned pa_ncpus(void);
+
+char *pa_replace(const char*s, const char*a, const char *b);
+
+char *pa_unescape(char *p);
+
+char *pa_realpath(const char *path);
+
+void pa_disable_sigpipe(void);
+
+void pa_xfreev(void**a);
+
+static inline void pa_xstrfreev(char **a) {
+ pa_xfreev((void**) a);
+}
+
+char **pa_split_spaces_strv(const char *s);
+
+char* pa_maybe_prefix_path(const char *path, const char *prefix);
+
+
+size_t pa_pipe_buf(int fd);
+
+void pa_reset_personality(void);
+
+
+
+
+
+const char *pa_get_temp_dir(void);
+# 32 "pulsecore/svolume_mmx.c" 2
+
+# 1 "pulsecore/cpu-x86.h" 1
+# 28 "pulsecore/cpu-x86.h"
+typedef enum pa_cpu_x86_flag {
+ PA_CPU_X86_MMX = (1 << 0),
+ PA_CPU_X86_MMXEXT = (1 << 1),
+ PA_CPU_X86_SSE = (1 << 2),
+ PA_CPU_X86_SSE2 = (1 << 3),
+ PA_CPU_X86_SSE3 = (1 << 4),
+ PA_CPU_X86_SSSE3 = (1 << 5),
+ PA_CPU_X86_SSE4_1 = (1 << 6),
+ PA_CPU_X86_SSE4_2 = (1 << 7),
+ PA_CPU_X86_3DNOW = (1 << 8),
+ PA_CPU_X86_3DNOWEXT = (1 << 9)
+} pa_cpu_x86_flag_t;
+
+void pa_cpu_init_x86 (void);
+# 53 "pulsecore/cpu-x86.h"
+typedef int64_t pa_reg_x86;
+# 63 "pulsecore/cpu-x86.h"
+void pa_volume_func_init_mmx(pa_cpu_x86_flag_t flags);
+void pa_volume_func_init_sse(pa_cpu_x86_flag_t flags);
+
+void pa_remap_func_init_mmx(pa_cpu_x86_flag_t flags);
+void pa_remap_func_init_sse(pa_cpu_x86_flag_t flags);
+
+void pa_convert_func_init_sse (pa_cpu_x86_flag_t flags);
+# 34 "pulsecore/svolume_mmx.c" 2
+
+# 1 "pulsecore/sample-util.h" 1
+# 27 "pulsecore/sample-util.h"
+# 1 "./pulse/volume.h" 1
+# 27 "./pulse/volume.h"
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include-fixed/limits.h" 1 3 4
+# 28 "./pulse/volume.h" 2
+
+
+
+
+# 1 "./pulse/channelmap.h" 1
+# 70 "./pulse/channelmap.h"
+
+
+
+typedef enum pa_channel_position {
+ PA_CHANNEL_POSITION_INVALID = -1,
+ PA_CHANNEL_POSITION_MONO = 0,
+
+ PA_CHANNEL_POSITION_FRONT_LEFT,
+ PA_CHANNEL_POSITION_FRONT_RIGHT,
+ PA_CHANNEL_POSITION_FRONT_CENTER,
+
+
+ PA_CHANNEL_POSITION_LEFT = PA_CHANNEL_POSITION_FRONT_LEFT,
+ PA_CHANNEL_POSITION_RIGHT = PA_CHANNEL_POSITION_FRONT_RIGHT,
+ PA_CHANNEL_POSITION_CENTER = PA_CHANNEL_POSITION_FRONT_CENTER,
+
+
+ PA_CHANNEL_POSITION_REAR_CENTER,
+ PA_CHANNEL_POSITION_REAR_LEFT,
+ PA_CHANNEL_POSITION_REAR_RIGHT,
+
+ PA_CHANNEL_POSITION_LFE,
+
+ PA_CHANNEL_POSITION_SUBWOOFER = PA_CHANNEL_POSITION_LFE,
+
+
+ PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER,
+ PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER,
+
+ PA_CHANNEL_POSITION_SIDE_LEFT,
+ PA_CHANNEL_POSITION_SIDE_RIGHT,
+
+ PA_CHANNEL_POSITION_AUX0,
+ PA_CHANNEL_POSITION_AUX1,
+ PA_CHANNEL_POSITION_AUX2,
+ PA_CHANNEL_POSITION_AUX3,
+ PA_CHANNEL_POSITION_AUX4,
+ PA_CHANNEL_POSITION_AUX5,
+ PA_CHANNEL_POSITION_AUX6,
+ PA_CHANNEL_POSITION_AUX7,
+ PA_CHANNEL_POSITION_AUX8,
+ PA_CHANNEL_POSITION_AUX9,
+ PA_CHANNEL_POSITION_AUX10,
+ PA_CHANNEL_POSITION_AUX11,
+ PA_CHANNEL_POSITION_AUX12,
+ PA_CHANNEL_POSITION_AUX13,
+ PA_CHANNEL_POSITION_AUX14,
+ PA_CHANNEL_POSITION_AUX15,
+ PA_CHANNEL_POSITION_AUX16,
+ PA_CHANNEL_POSITION_AUX17,
+ PA_CHANNEL_POSITION_AUX18,
+ PA_CHANNEL_POSITION_AUX19,
+ PA_CHANNEL_POSITION_AUX20,
+ PA_CHANNEL_POSITION_AUX21,
+ PA_CHANNEL_POSITION_AUX22,
+ PA_CHANNEL_POSITION_AUX23,
+ PA_CHANNEL_POSITION_AUX24,
+ PA_CHANNEL_POSITION_AUX25,
+ PA_CHANNEL_POSITION_AUX26,
+ PA_CHANNEL_POSITION_AUX27,
+ PA_CHANNEL_POSITION_AUX28,
+ PA_CHANNEL_POSITION_AUX29,
+ PA_CHANNEL_POSITION_AUX30,
+ PA_CHANNEL_POSITION_AUX31,
+
+ PA_CHANNEL_POSITION_TOP_CENTER,
+
+ PA_CHANNEL_POSITION_TOP_FRONT_LEFT,
+ PA_CHANNEL_POSITION_TOP_FRONT_RIGHT,
+ PA_CHANNEL_POSITION_TOP_FRONT_CENTER,
+
+ PA_CHANNEL_POSITION_TOP_REAR_LEFT,
+ PA_CHANNEL_POSITION_TOP_REAR_RIGHT,
+ PA_CHANNEL_POSITION_TOP_REAR_CENTER,
+
+ PA_CHANNEL_POSITION_MAX
+} pa_channel_position_t;
+# 209 "./pulse/channelmap.h"
+typedef uint64_t pa_channel_position_mask_t;
+
+
+
+
+
+typedef enum pa_channel_map_def {
+ PA_CHANNEL_MAP_AIFF,
+
+
+
+ PA_CHANNEL_MAP_ALSA,
+
+
+
+
+
+ PA_CHANNEL_MAP_AUX,
+
+
+ PA_CHANNEL_MAP_WAVEEX,
+
+
+
+
+ PA_CHANNEL_MAP_OSS,
+
+
+
+
+
+
+
+ PA_CHANNEL_MAP_DEF_MAX,
+
+ PA_CHANNEL_MAP_DEFAULT = PA_CHANNEL_MAP_AIFF
+
+} pa_channel_map_def_t;
+# 261 "./pulse/channelmap.h"
+typedef struct pa_channel_map {
+ uint8_t channels;
+
+
+ pa_channel_position_t map[32U];
+
+} pa_channel_map;
+
+
+
+
+pa_channel_map* pa_channel_map_init(pa_channel_map *m);
+
+
+pa_channel_map* pa_channel_map_init_mono(pa_channel_map *m);
+
+
+pa_channel_map* pa_channel_map_init_stereo(pa_channel_map *m);
+
+
+
+
+
+pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, pa_channel_map_def_t def);
+
+
+
+
+
+pa_channel_map* pa_channel_map_init_extend(pa_channel_map *m, unsigned channels, pa_channel_map_def_t def);
+
+
+const char* pa_channel_position_to_string(pa_channel_position_t pos) __attribute__ ((pure));
+
+
+pa_channel_position_t pa_channel_position_from_string(const char *s) __attribute__ ((pure));
+
+
+const char* pa_channel_position_to_pretty_string(pa_channel_position_t pos);
+# 309 "./pulse/channelmap.h"
+char* pa_channel_map_snprint(char *s, size_t l, const pa_channel_map *map);
+
+
+
+
+
+pa_channel_map *pa_channel_map_parse(pa_channel_map *map, const char *s);
+
+
+int pa_channel_map_equal(const pa_channel_map *a, const pa_channel_map *b) __attribute__ ((pure));
+
+
+int pa_channel_map_valid(const pa_channel_map *map) __attribute__ ((pure));
+
+
+
+int pa_channel_map_compatible(const pa_channel_map *map, const pa_sample_spec *ss) __attribute__ ((pure));
+
+
+int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) __attribute__ ((pure));
+
+
+
+
+int pa_channel_map_can_balance(const pa_channel_map *map) __attribute__ ((pure));
+
+
+
+
+int pa_channel_map_can_fade(const pa_channel_map *map) __attribute__ ((pure));
+
+
+
+
+
+const char* pa_channel_map_to_name(const pa_channel_map *map) __attribute__ ((pure));
+
+
+
+
+const char* pa_channel_map_to_pretty_name(const pa_channel_map *map) __attribute__ ((pure));
+
+
+
+int pa_channel_map_has_position(const pa_channel_map *map, pa_channel_position_t p) __attribute__ ((pure));
+
+
+pa_channel_position_mask_t pa_channel_map_mask(const pa_channel_map *map) __attribute__ ((pure));
+
+
+# 33 "./pulse/volume.h" 2
+# 97 "./pulse/volume.h"
+
+
+
+
+
+
+
+typedef uint32_t pa_volume_t;
+# 119 "./pulse/volume.h"
+typedef struct pa_cvolume {
+ uint8_t channels;
+ pa_volume_t values[32U];
+} pa_cvolume;
+
+
+int pa_cvolume_equal(const pa_cvolume *a, const pa_cvolume *b) __attribute__ ((pure));
+
+
+
+
+pa_cvolume* pa_cvolume_init(pa_cvolume *a);
+# 139 "./pulse/volume.h"
+pa_cvolume* pa_cvolume_set(pa_cvolume *a, unsigned channels, pa_volume_t v);
+# 149 "./pulse/volume.h"
+char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c);
+# 159 "./pulse/volume.h"
+char *pa_sw_cvolume_snprint_dB(char *s, size_t l, const pa_cvolume *c);
+# 169 "./pulse/volume.h"
+char *pa_volume_snprint(char *s, size_t l, pa_volume_t v);
+# 179 "./pulse/volume.h"
+char *pa_sw_volume_snprint_dB(char *s, size_t l, pa_volume_t v);
+
+
+pa_volume_t pa_cvolume_avg(const pa_cvolume *a) __attribute__ ((pure));
+
+
+
+
+
+
+pa_volume_t pa_cvolume_avg_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) __attribute__ ((pure));
+
+
+pa_volume_t pa_cvolume_max(const pa_cvolume *a) __attribute__ ((pure));
+
+
+
+
+
+
+pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) __attribute__ ((pure));
+
+
+pa_volume_t pa_cvolume_min(const pa_cvolume *a) __attribute__ ((pure));
+
+
+
+
+
+
+pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) __attribute__ ((pure));
+
+
+int pa_cvolume_valid(const pa_cvolume *v) __attribute__ ((pure));
+
+
+int pa_cvolume_channels_equal_to(const pa_cvolume *a, pa_volume_t v) __attribute__ ((pure));
+# 226 "./pulse/volume.h"
+pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) __attribute__ ((const));
+
+
+
+
+pa_cvolume *pa_sw_cvolume_multiply(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
+
+
+
+
+
+pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b);
+
+
+
+
+
+pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) __attribute__ ((const));
+
+
+
+
+pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
+
+
+
+
+
+pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b);
+
+
+pa_volume_t pa_sw_volume_from_dB(double f) __attribute__ ((const));
+
+
+double pa_sw_volume_to_dB(pa_volume_t v) __attribute__ ((const));
+
+
+pa_volume_t pa_sw_volume_from_linear(double v) __attribute__ ((const));
+
+
+double pa_sw_volume_to_linear(pa_volume_t v) __attribute__ ((const));
+# 276 "./pulse/volume.h"
+pa_cvolume *pa_cvolume_remap(pa_cvolume *v, const pa_channel_map *from, const pa_channel_map *to);
+
+
+
+int pa_cvolume_compatible(const pa_cvolume *v, const pa_sample_spec *ss) __attribute__ ((pure));
+
+
+
+int pa_cvolume_compatible_with_channel_map(const pa_cvolume *v, const pa_channel_map *cm) __attribute__ ((pure));
+
+
+
+
+
+
+float pa_cvolume_get_balance(const pa_cvolume *v, const pa_channel_map *map) __attribute__ ((pure));
+# 302 "./pulse/volume.h"
+pa_cvolume* pa_cvolume_set_balance(pa_cvolume *v, const pa_channel_map *map, float new_balance);
+
+
+
+
+
+
+float pa_cvolume_get_fade(const pa_cvolume *v, const pa_channel_map *map) __attribute__ ((pure));
+# 320 "./pulse/volume.h"
+pa_cvolume* pa_cvolume_set_fade(pa_cvolume *v, const pa_channel_map *map, float new_fade);
+
+
+
+
+pa_cvolume* pa_cvolume_scale(pa_cvolume *v, pa_volume_t max);
+
+
+
+
+
+pa_cvolume* pa_cvolume_scale_mask(pa_cvolume *v, pa_volume_t max, pa_channel_map *cm, pa_channel_position_mask_t mask);
+
+
+
+
+
+
+pa_cvolume* pa_cvolume_set_position(pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t, pa_volume_t v);
+
+
+
+
+
+pa_volume_t pa_cvolume_get_position(pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t) __attribute__ ((pure));
+
+
+
+
+pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
+
+
+
+pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc);
+
+
+
+pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec);
+
+
+# 28 "pulsecore/sample-util.h" 2
+
+# 1 "./pulsecore/memblock.h" 1
+# 29 "./pulsecore/memblock.h"
+# 1 "./pulse/def.h" 1
+# 27 "./pulse/def.h"
+# 1 "/usr/include/sys/time.h" 1 3 4
+# 27 "/usr/include/sys/time.h" 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 28 "/usr/include/sys/time.h" 2 3 4
+
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 30 "/usr/include/sys/time.h" 2 3 4
+# 39 "/usr/include/sys/time.h" 3 4
+
+# 57 "/usr/include/sys/time.h" 3 4
+struct timezone
+ {
+ int tz_minuteswest;
+ int tz_dsttime;
+ };
+
+typedef struct timezone *__restrict __timezone_ptr_t;
+# 73 "/usr/include/sys/time.h" 3 4
+extern int gettimeofday (struct timeval *__restrict __tv,
+ __timezone_ptr_t __tz) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int settimeofday (__const struct timeval *__tv,
+ __const struct timezone *__tz)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int adjtime (__const struct timeval *__delta,
+ struct timeval *__olddelta) __attribute__ ((__nothrow__));
+
+
+
+
+enum __itimer_which
+ {
+
+ ITIMER_REAL = 0,
+
+
+ ITIMER_VIRTUAL = 1,
+
+
+
+ ITIMER_PROF = 2
+
+ };
+
+
+
+struct itimerval
+ {
+
+ struct timeval it_interval;
+
+ struct timeval it_value;
+ };
+
+
+
+
+typedef enum __itimer_which __itimer_which_t;
+
+
+
+
+
+
+extern int getitimer (__itimer_which_t __which,
+ struct itimerval *__value) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setitimer (__itimer_which_t __which,
+ __const struct itimerval *__restrict __new,
+ struct itimerval *__restrict __old) __attribute__ ((__nothrow__));
+
+
+
+
+extern int utimes (__const char *__file, __const struct timeval __tvp[2])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int futimes (int __fd, __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int futimesat (int __fd, __const char *__file,
+ __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
+# 191 "/usr/include/sys/time.h" 3 4
+
+# 28 "./pulse/def.h" 2
+# 1 "/usr/include/time.h" 1 3 4
+# 30 "/usr/include/time.h" 3 4
+
+
+
+
+
+
+
+
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.1/include/stddef.h" 1 3 4
+# 39 "/usr/include/time.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 43 "/usr/include/time.h" 2 3 4
+# 131 "/usr/include/time.h" 3 4
+
+
+struct tm
+{
+ int tm_sec;
+ int tm_min;
+ int tm_hour;
+ int tm_mday;
+ int tm_mon;
+ int tm_year;
+ int tm_wday;
+ int tm_yday;
+ int tm_isdst;
+
+
+ long int tm_gmtoff;
+ __const char *tm_zone;
+
+
+
+
+};
+
+
+
+
+
+
+
+
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+
+
+struct sigevent;
+# 180 "/usr/include/time.h" 3 4
+
+
+
+extern clock_t clock (void) __attribute__ ((__nothrow__));
+
+
+extern time_t time (time_t *__timer) __attribute__ ((__nothrow__));
+
+
+extern double difftime (time_t __time1, time_t __time0)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern size_t strftime (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format,
+ __const struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *strptime (__const char *__restrict __s,
+ __const char *__restrict __fmt, struct tm *__tp)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format,
+ __const struct tm *__restrict __tp,
+ __locale_t __loc) __attribute__ ((__nothrow__));
+
+
+
+extern char *strptime_l (__const char *__restrict __s,
+ __const char *__restrict __fmt, struct tm *__tp,
+ __locale_t __loc) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern struct tm *gmtime (__const time_t *__timer) __attribute__ ((__nothrow__));
+
+
+
+extern struct tm *localtime (__const time_t *__timer) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern struct tm *gmtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+
+
+
+extern struct tm *localtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *asctime (__const struct tm *__tp) __attribute__ ((__nothrow__));
+
+
+extern char *ctime (__const time_t *__timer) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern char *asctime_r (__const struct tm *__restrict __tp,
+ char *__restrict __buf) __attribute__ ((__nothrow__));
+
+
+extern char *ctime_r (__const time_t *__restrict __timer,
+ char *__restrict __buf) __attribute__ ((__nothrow__));
+
+
+
+
+extern char *__tzname[2];
+extern int __daylight;
+extern long int __timezone;
+
+
+
+
+extern char *tzname[2];
+
+
+
+extern void tzset (void) __attribute__ ((__nothrow__));
+
+
+
+extern int daylight;
+extern long int timezone;
+
+
+
+
+
+extern int stime (__const time_t *__when) __attribute__ ((__nothrow__));
+# 313 "/usr/include/time.h" 3 4
+extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__));
+
+
+extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__));
+
+
+extern int dysize (int __year) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+# 328 "/usr/include/time.h" 3 4
+extern int nanosleep (__const struct timespec *__requested_time,
+ struct timespec *__remaining);
+
+
+
+extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__));
+
+
+extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__));
+
+
+extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int clock_nanosleep (clockid_t __clock_id, int __flags,
+ __const struct timespec *__req,
+ struct timespec *__rem);
+
+
+extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__));
+
+
+
+
+extern int timer_create (clockid_t __clock_id,
+ struct sigevent *__restrict __evp,
+ timer_t *__restrict __timerid) __attribute__ ((__nothrow__));
+
+
+extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__));
+
+
+extern int timer_settime (timer_t __timerid, int __flags,
+ __const struct itimerspec *__restrict __value,
+ struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__));
+
+
+extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
+ __attribute__ ((__nothrow__));
+
+
+extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__));
+# 390 "/usr/include/time.h" 3 4
+extern int getdate_err;
+# 399 "/usr/include/time.h" 3 4
+extern struct tm *getdate (__const char *__string);
+# 413 "/usr/include/time.h" 3 4
+extern int getdate_r (__const char *__restrict __string,
+ struct tm *__restrict __resbufp);
+
+
+
+# 29 "./pulse/def.h" 2
+# 37 "./pulse/def.h"
+
+
+
+typedef enum pa_context_state {
+ PA_CONTEXT_UNCONNECTED,
+ PA_CONTEXT_CONNECTING,
+ PA_CONTEXT_AUTHORIZING,
+ PA_CONTEXT_SETTING_NAME,
+ PA_CONTEXT_READY,
+ PA_CONTEXT_FAILED,
+ PA_CONTEXT_TERMINATED
+} pa_context_state_t;
+
+
+static inline int PA_CONTEXT_IS_GOOD(pa_context_state_t x) {
+ return
+ x == PA_CONTEXT_CONNECTING ||
+ x == PA_CONTEXT_AUTHORIZING ||
+ x == PA_CONTEXT_SETTING_NAME ||
+ x == PA_CONTEXT_READY;
+}
+# 70 "./pulse/def.h"
+typedef enum pa_stream_state {
+ PA_STREAM_UNCONNECTED,
+ PA_STREAM_CREATING,
+ PA_STREAM_READY,
+ PA_STREAM_FAILED,
+ PA_STREAM_TERMINATED
+} pa_stream_state_t;
+
+
+static inline int PA_STREAM_IS_GOOD(pa_stream_state_t x) {
+ return
+ x == PA_STREAM_CREATING ||
+ x == PA_STREAM_READY;
+}
+# 95 "./pulse/def.h"
+typedef enum pa_operation_state {
+ PA_OPERATION_RUNNING,
+ PA_OPERATION_DONE,
+ PA_OPERATION_CANCELLED
+} pa_operation_state_t;
+# 112 "./pulse/def.h"
+typedef enum pa_context_flags {
+ PA_CONTEXT_NOFLAGS = 0x0000U,
+
+ PA_CONTEXT_NOAUTOSPAWN = 0x0001U,
+
+ PA_CONTEXT_NOFAIL = 0x0002U
+
+} pa_context_flags_t;
+# 128 "./pulse/def.h"
+typedef enum pa_stream_direction {
+ PA_STREAM_NODIRECTION,
+ PA_STREAM_PLAYBACK,
+ PA_STREAM_RECORD,
+ PA_STREAM_UPLOAD
+} pa_stream_direction_t;
+# 143 "./pulse/def.h"
+typedef enum pa_stream_flags {
+
+ PA_STREAM_NOFLAGS = 0x0000U,
+
+
+ PA_STREAM_START_CORKED = 0x0001U,
+
+
+
+ PA_STREAM_INTERPOLATE_TIMING = 0x0002U,
+# 164 "./pulse/def.h"
+ PA_STREAM_NOT_MONOTONIC = 0x0004U,
+# 176 "./pulse/def.h"
+ PA_STREAM_AUTO_TIMING_UPDATE = 0x0008U,
+
+
+
+
+
+
+ PA_STREAM_NO_REMAP_CHANNELS = 0x0010U,
+
+
+
+
+
+ PA_STREAM_NO_REMIX_CHANNELS = 0x0020U,
+
+
+
+
+
+ PA_STREAM_FIX_FORMAT = 0x0040U,
+# 207 "./pulse/def.h"
+ PA_STREAM_FIX_RATE = 0x0080U,
+
+
+
+
+
+ PA_STREAM_FIX_CHANNELS = 0x0100,
+
+
+
+
+
+
+ PA_STREAM_DONT_MOVE = 0x0200U,
+# 229 "./pulse/def.h"
+ PA_STREAM_VARIABLE_RATE = 0x0400U,
+
+
+
+
+
+ PA_STREAM_PEAK_DETECT = 0x0800U,
+
+
+ PA_STREAM_START_MUTED = 0x1000U,
+
+
+
+
+
+ PA_STREAM_ADJUST_LATENCY = 0x2000U,
+
+
+
+
+
+
+ PA_STREAM_EARLY_REQUESTS = 0x4000U,
+# 268 "./pulse/def.h"
+ PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND = 0x8000U,
+
+
+
+
+ PA_STREAM_START_UNMUTED = 0x10000U,
+
+
+
+
+
+ PA_STREAM_FAIL_ON_SUSPEND = 0x20000U
+
+
+
+
+} pa_stream_flags_t;
+# 314 "./pulse/def.h"
+typedef struct pa_buffer_attr {
+ uint32_t maxlength;
+
+
+
+
+ uint32_t tlength;
+# 338 "./pulse/def.h"
+ uint32_t prebuf;
+# 349 "./pulse/def.h"
+ uint32_t minreq;
+# 359 "./pulse/def.h"
+ uint32_t fragsize;
+# 373 "./pulse/def.h"
+} pa_buffer_attr;
+
+
+enum {
+ PA_OK = 0,
+ PA_ERR_ACCESS,
+ PA_ERR_COMMAND,
+ PA_ERR_INVALID,
+ PA_ERR_EXIST,
+ PA_ERR_NOENTITY,
+ PA_ERR_CONNECTIONREFUSED,
+ PA_ERR_PROTOCOL,
+ PA_ERR_TIMEOUT,
+ PA_ERR_AUTHKEY,
+ PA_ERR_INTERNAL,
+ PA_ERR_CONNECTIONTERMINATED,
+ PA_ERR_KILLED,
+ PA_ERR_INVALIDSERVER,
+ PA_ERR_MODINITFAILED,
+ PA_ERR_BADSTATE,
+ PA_ERR_NODATA,
+ PA_ERR_VERSION,
+ PA_ERR_TOOLARGE,
+ PA_ERR_NOTSUPPORTED,
+ PA_ERR_UNKNOWN,
+ PA_ERR_NOEXTENSION,
+ PA_ERR_OBSOLETE,
+ PA_ERR_NOTIMPLEMENTED,
+ PA_ERR_FORKED,
+ PA_ERR_IO,
+ PA_ERR_BUSY,
+ PA_ERR_MAX
+};
+# 437 "./pulse/def.h"
+typedef enum pa_subscription_mask {
+ PA_SUBSCRIPTION_MASK_NULL = 0x0000U,
+
+
+ PA_SUBSCRIPTION_MASK_SINK = 0x0001U,
+
+
+ PA_SUBSCRIPTION_MASK_SOURCE = 0x0002U,
+
+
+ PA_SUBSCRIPTION_MASK_SINK_INPUT = 0x0004U,
+
+
+ PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 0x0008U,
+
+
+ PA_SUBSCRIPTION_MASK_MODULE = 0x0010U,
+
+
+ PA_SUBSCRIPTION_MASK_CLIENT = 0x0020U,
+
+
+ PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 0x0040U,
+
+
+ PA_SUBSCRIPTION_MASK_SERVER = 0x0080U,
+
+
+
+ PA_SUBSCRIPTION_MASK_AUTOLOAD = 0x0100U,
+
+
+
+ PA_SUBSCRIPTION_MASK_CARD = 0x0200U,
+
+
+ PA_SUBSCRIPTION_MASK_ALL = 0x02ffU
+
+} pa_subscription_mask_t;
+
+
+typedef enum pa_subscription_event_type {
+ PA_SUBSCRIPTION_EVENT_SINK = 0x0000U,
+
+
+ PA_SUBSCRIPTION_EVENT_SOURCE = 0x0001U,
+
+
+ PA_SUBSCRIPTION_EVENT_SINK_INPUT = 0x0002U,
+
+
+ PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 0x0003U,
+
+
+ PA_SUBSCRIPTION_EVENT_MODULE = 0x0004U,
+
+
+ PA_SUBSCRIPTION_EVENT_CLIENT = 0x0005U,
+
+
+ PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 0x0006U,
+
+
+ PA_SUBSCRIPTION_EVENT_SERVER = 0x0007U,
+
+
+
+ PA_SUBSCRIPTION_EVENT_AUTOLOAD = 0x0008U,
+
+
+
+ PA_SUBSCRIPTION_EVENT_CARD = 0x0009U,
+
+
+ PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 0x000FU,
+
+
+ PA_SUBSCRIPTION_EVENT_NEW = 0x0000U,
+
+
+ PA_SUBSCRIPTION_EVENT_CHANGE = 0x0010U,
+
+
+ PA_SUBSCRIPTION_EVENT_REMOVE = 0x0020U,
+
+
+ PA_SUBSCRIPTION_EVENT_TYPE_MASK = 0x0030U
+
+
+} pa_subscription_event_type_t;
+# 579 "./pulse/def.h"
+typedef struct pa_timing_info {
+ struct timeval timestamp;
+
+
+ int synchronized_clocks;
+
+
+
+
+
+
+ pa_usec_t sink_usec;
+
+
+
+
+ pa_usec_t source_usec;
+
+
+
+ pa_usec_t transport_usec;
+
+
+
+ int playing;
+
+
+
+
+
+
+ int write_index_corrupt;
+
+
+
+
+
+
+ int64_t write_index;
+
+
+
+
+
+ int read_index_corrupt;
+
+
+
+
+ int64_t read_index;
+
+
+
+
+
+ pa_usec_t configured_sink_usec;
+
+
+ pa_usec_t configured_source_usec;
+
+
+ int64_t since_underrun;
+
+
+
+
+
+} pa_timing_info;
+# 655 "./pulse/def.h"
+typedef struct pa_spawn_api {
+ void (*prefork)(void);
+
+
+
+ void (*postfork)(void);
+
+
+
+ void (*atfork)(void);
+
+
+
+
+
+} pa_spawn_api;
+
+
+typedef enum pa_seek_mode {
+ PA_SEEK_RELATIVE = 0,
+
+
+ PA_SEEK_ABSOLUTE = 1,
+
+
+ PA_SEEK_RELATIVE_ON_READ = 2,
+
+
+ PA_SEEK_RELATIVE_END = 3
+
+} pa_seek_mode_t;
+# 695 "./pulse/def.h"
+typedef enum pa_sink_flags {
+ PA_SINK_NOFLAGS = 0x0000U,
+
+
+ PA_SINK_HW_VOLUME_CTRL = 0x0001U,
+
+
+ PA_SINK_LATENCY = 0x0002U,
+
+
+ PA_SINK_HARDWARE = 0x0004U,
+
+
+
+ PA_SINK_NETWORK = 0x0008U,
+
+
+ PA_SINK_HW_MUTE_CTRL = 0x0010U,
+
+
+ PA_SINK_DECIBEL_VOLUME = 0x0020U,
+
+
+
+ PA_SINK_FLAT_VOLUME = 0x0040U,
+
+
+
+ PA_SINK_DYNAMIC_LATENCY = 0x0080U
+
+
+} pa_sink_flags_t;
+# 740 "./pulse/def.h"
+typedef enum pa_sink_state {
+ PA_SINK_INVALID_STATE = -1,
+
+
+ PA_SINK_RUNNING = 0,
+
+
+ PA_SINK_IDLE = 1,
+
+
+ PA_SINK_SUSPENDED = 2,
+# 760 "./pulse/def.h"
+ PA_SINK_INIT = -2,
+
+
+ PA_SINK_UNLINKED = -3
+
+
+
+} pa_sink_state_t;
+
+
+static inline int PA_SINK_IS_OPENED(pa_sink_state_t x) {
+ return x == PA_SINK_RUNNING || x == PA_SINK_IDLE;
+}
+# 785 "./pulse/def.h"
+typedef enum pa_source_flags {
+ PA_SOURCE_NOFLAGS = 0x0000U,
+
+
+ PA_SOURCE_HW_VOLUME_CTRL = 0x0001U,
+
+
+ PA_SOURCE_LATENCY = 0x0002U,
+
+
+ PA_SOURCE_HARDWARE = 0x0004U,
+
+
+
+ PA_SOURCE_NETWORK = 0x0008U,
+
+
+ PA_SOURCE_HW_MUTE_CTRL = 0x0010U,
+
+
+ PA_SOURCE_DECIBEL_VOLUME = 0x0020U,
+
+
+
+ PA_SOURCE_DYNAMIC_LATENCY = 0x0040U
+
+
+} pa_source_flags_t;
+# 825 "./pulse/def.h"
+typedef enum pa_source_state {
+ PA_SOURCE_INVALID_STATE = -1,
+
+
+ PA_SOURCE_RUNNING = 0,
+
+
+ PA_SOURCE_IDLE = 1,
+
+
+ PA_SOURCE_SUSPENDED = 2,
+# 845 "./pulse/def.h"
+ PA_SOURCE_INIT = -2,
+
+
+ PA_SOURCE_UNLINKED = -3
+
+
+
+} pa_source_state_t;
+
+
+static inline int PA_SOURCE_IS_OPENED(pa_source_state_t x) {
+ return x == PA_SOURCE_RUNNING || x == PA_SOURCE_IDLE;
+}
+# 870 "./pulse/def.h"
+typedef void (*pa_free_cb_t)(void *p);
+# 882 "./pulse/def.h"
+
+# 30 "./pulsecore/memblock.h" 2
+# 1 "./pulsecore/llist.h" 1
+# 31 "./pulsecore/memblock.h" 2
+# 1 "./pulsecore/refcnt.h" 1
+# 25 "./pulsecore/refcnt.h"
+# 1 "./pulsecore/atomic.h" 1
+# 49 "./pulsecore/atomic.h"
+typedef struct pa_atomic {
+ volatile int value;
+} pa_atomic_t;
+
+
+
+static inline int pa_atomic_load(const pa_atomic_t *a) {
+ __sync_synchronize();
+ return a->value;
+}
+
+static inline void pa_atomic_store(pa_atomic_t *a, int i) {
+ a->value = i;
+ __sync_synchronize();
+}
+
+
+static inline int pa_atomic_add(pa_atomic_t *a, int i) {
+ return __sync_fetch_and_add(&a->value, i);
+}
+
+
+static inline int pa_atomic_sub(pa_atomic_t *a, int i) {
+ return __sync_fetch_and_sub(&a->value, i);
+}
+
+
+static inline int pa_atomic_inc(pa_atomic_t *a) {
+ return pa_atomic_add(a, 1);
+}
+
+
+static inline int pa_atomic_dec(pa_atomic_t *a) {
+ return pa_atomic_sub(a, 1);
+}
+
+
+static inline pa_bool_t pa_atomic_cmpxchg(pa_atomic_t *a, int old_i, int new_i) {
+ return __sync_bool_compare_and_swap(&a->value, old_i, new_i);
+}
+
+typedef struct pa_atomic_ptr {
+ volatile unsigned long value;
+} pa_atomic_ptr_t;
+
+
+
+static inline void* pa_atomic_ptr_load(const pa_atomic_ptr_t *a) {
+ __sync_synchronize();
+ return (void*) a->value;
+}
+
+static inline void pa_atomic_ptr_store(pa_atomic_ptr_t *a, void *p) {
+ a->value = (unsigned long) p;
+ __sync_synchronize();
+}
+
+static inline pa_bool_t pa_atomic_ptr_cmpxchg(pa_atomic_ptr_t *a, void *old_p, void* new_p) {
+ return __sync_bool_compare_and_swap(&a->value, (long) old_p, (long) new_p);
+}
+# 26 "./pulsecore/refcnt.h" 2
+# 32 "./pulsecore/memblock.h" 2
+# 40 "./pulsecore/memblock.h"
+typedef enum pa_memblock_type {
+ PA_MEMBLOCK_POOL,
+ PA_MEMBLOCK_POOL_EXTERNAL,
+ PA_MEMBLOCK_APPENDED,
+ PA_MEMBLOCK_USER,
+ PA_MEMBLOCK_FIXED,
+ PA_MEMBLOCK_IMPORTED,
+ PA_MEMBLOCK_TYPE_MAX
+} pa_memblock_type_t;
+
+typedef struct pa_memblock pa_memblock;
+typedef struct pa_mempool pa_mempool;
+typedef struct pa_mempool_stat pa_mempool_stat;
+typedef struct pa_memimport_segment pa_memimport_segment;
+typedef struct pa_memimport pa_memimport;
+typedef struct pa_memexport pa_memexport;
+
+typedef void (*pa_memimport_release_cb_t)(pa_memimport *i, uint32_t block_id, void *userdata);
+typedef void (*pa_memexport_revoke_cb_t)(pa_memexport *e, uint32_t block_id, void *userdata);
+
+
+
+
+
+struct pa_mempool_stat {
+ pa_atomic_t n_allocated;
+ pa_atomic_t n_accumulated;
+ pa_atomic_t n_imported;
+ pa_atomic_t n_exported;
+ pa_atomic_t allocated_size;
+ pa_atomic_t accumulated_size;
+ pa_atomic_t imported_size;
+ pa_atomic_t exported_size;
+
+ pa_atomic_t n_too_large_for_pool;
+ pa_atomic_t n_pool_full;
+
+ pa_atomic_t n_allocated_by_type[PA_MEMBLOCK_TYPE_MAX];
+ pa_atomic_t n_accumulated_by_type[PA_MEMBLOCK_TYPE_MAX];
+};
+
+
+pa_memblock *pa_memblock_new(pa_mempool *, size_t length);
+
+
+pa_memblock *pa_memblock_new_pool(pa_mempool *, size_t length);
+
+
+pa_memblock *pa_memblock_new_user(pa_mempool *, void *data, size_t length, pa_free_cb_t free_cb, pa_bool_t read_only);
+
+
+
+
+
+pa_memblock *pa_memblock_new_fixed(pa_mempool *, void *data, size_t length, pa_bool_t read_only);
+
+void pa_memblock_unref(pa_memblock*b);
+pa_memblock* pa_memblock_ref(pa_memblock*b);
+
+
+
+
+
+
+
+void pa_memblock_unref_fixed(pa_memblock*b);
+
+pa_bool_t pa_memblock_is_read_only(pa_memblock *b);
+pa_bool_t pa_memblock_is_silence(pa_memblock *b);
+pa_bool_t pa_memblock_ref_is_one(pa_memblock *b);
+void pa_memblock_set_is_silence(pa_memblock *b, pa_bool_t v);
+
+void* pa_memblock_acquire(pa_memblock *b);
+void pa_memblock_release(pa_memblock *b);
+size_t pa_memblock_get_length(pa_memblock *b);
+pa_mempool * pa_memblock_get_pool(pa_memblock *b);
+
+pa_memblock *pa_memblock_will_need(pa_memblock *b);
+
+
+pa_mempool* pa_mempool_new(pa_bool_t shared, size_t size);
+void pa_mempool_free(pa_mempool *p);
+const pa_mempool_stat* pa_mempool_get_stat(pa_mempool *p);
+void pa_mempool_vacuum(pa_mempool *p);
+int pa_mempool_get_shm_id(pa_mempool *p, uint32_t *id);
+pa_bool_t pa_mempool_is_shared(pa_mempool *p);
+size_t pa_mempool_block_size_max(pa_mempool *p);
+
+
+pa_memimport* pa_memimport_new(pa_mempool *p, pa_memimport_release_cb_t cb, void *userdata);
+void pa_memimport_free(pa_memimport *i);
+pa_memblock* pa_memimport_get(pa_memimport *i, uint32_t block_id, uint32_t shm_id, size_t offset, size_t size);
+int pa_memimport_process_revoke(pa_memimport *i, uint32_t block_id);
+
+
+pa_memexport* pa_memexport_new(pa_mempool *p, pa_memexport_revoke_cb_t cb, void *userdata);
+void pa_memexport_free(pa_memexport *e);
+int pa_memexport_put(pa_memexport *e, pa_memblock *b, uint32_t *block_id, uint32_t *shm_id, size_t *offset, size_t *size);
+int pa_memexport_process_release(pa_memexport *e, uint32_t id);
+# 30 "pulsecore/sample-util.h" 2
+# 1 "./pulsecore/memchunk.h" 1
+# 31 "./pulsecore/memchunk.h"
+typedef struct pa_memchunk {
+ pa_memblock *memblock;
+ size_t index, length;
+} pa_memchunk;
+
+
+
+
+
+
+pa_memchunk* pa_memchunk_make_writable(pa_memchunk *c, size_t min);
+
+
+
+pa_memchunk* pa_memchunk_reset(pa_memchunk *c);
+
+
+pa_memchunk *pa_memchunk_will_need(const pa_memchunk *c);
+
+
+pa_memchunk* pa_memchunk_memcpy(pa_memchunk *dst, pa_memchunk *src);
+# 31 "pulsecore/sample-util.h" 2
+
+typedef struct pa_silence_cache {
+ pa_memblock* blocks[PA_SAMPLE_MAX];
+} pa_silence_cache;
+
+void pa_silence_cache_init(pa_silence_cache *cache);
+void pa_silence_cache_done(pa_silence_cache *cache);
+
+void *pa_silence_memory(void *p, size_t length, const pa_sample_spec *spec);
+pa_memchunk* pa_silence_memchunk(pa_memchunk *c, const pa_sample_spec *spec);
+pa_memblock* pa_silence_memblock(pa_memblock *b, const pa_sample_spec *spec);
+
+pa_memchunk* pa_silence_memchunk_get(pa_silence_cache *cache, pa_mempool *pool, pa_memchunk* ret, const pa_sample_spec *spec, size_t length);
+
+typedef struct pa_mix_info {
+ pa_memchunk chunk;
+ pa_cvolume volume;
+ void *userdata;
+
+
+
+ void *ptr;
+ union {
+ int32_t i;
+ float f;
+ } linear[32U];
+} pa_mix_info;
+
+size_t pa_mix(
+ pa_mix_info channels[],
+ unsigned nchannels,
+ void *data,
+ size_t length,
+ const pa_sample_spec *spec,
+ const pa_cvolume *volume,
+ pa_bool_t mute);
+
+void pa_volume_memchunk(
+ pa_memchunk*c,
+ const pa_sample_spec *spec,
+ const pa_cvolume *volume);
+
+size_t pa_frame_align(size_t l, const pa_sample_spec *ss) __attribute__ ((pure));
+
+pa_bool_t pa_frame_aligned(size_t l, const pa_sample_spec *ss) __attribute__ ((pure));
+
+void pa_interleave(const void *src[], unsigned channels, void *dst, size_t ss, unsigned n);
+void pa_deinterleave(const void *src, void *dst[], unsigned channels, size_t ss, unsigned n);
+
+void pa_sample_clamp(pa_sample_format_t format, void *dst, size_t dstr, const void *src, size_t sstr, unsigned n);
+
+pa_usec_t pa_bytes_to_usec_round_up(uint64_t length, const pa_sample_spec *spec);
+size_t pa_usec_to_bytes_round_up(pa_usec_t t, const pa_sample_spec *spec);
+
+void pa_memchunk_dump_to_file(pa_memchunk *c, const char *fn);
+
+void pa_memchunk_sine(pa_memchunk *c, pa_mempool *pool, unsigned rate, unsigned freq);
+
+typedef void (*pa_do_volume_func_t) (void *samples, void *volumes, unsigned channels, unsigned length);
+
+pa_do_volume_func_t pa_get_volume_func(pa_sample_format_t f);
+void pa_set_volume_func(pa_sample_format_t f, pa_do_volume_func_t func);
+
+size_t pa_convert_size(size_t size, const pa_sample_spec *from, const pa_sample_spec *to);
+# 36 "pulsecore/svolume_mmx.c" 2
+# 1 "pulsecore/endianmacros.h" 1
+# 33 "pulsecore/endianmacros.h"
+# 1 "/usr/include/byteswap.h" 1 3 4
+# 23 "/usr/include/byteswap.h" 3 4
+# 1 "/usr/include/bits/byteswap.h" 1 3 4
+# 24 "/usr/include/byteswap.h" 2 3 4
+# 34 "pulsecore/endianmacros.h" 2
+# 48 "pulsecore/endianmacros.h"
+static inline uint32_t PA_READ24BE(const uint8_t *p) {
+ return
+ ((uint32_t) p[0] << 16) |
+ ((uint32_t) p[1] << 8) |
+ ((uint32_t) p[2]);
+}
+
+static inline uint32_t PA_READ24LE(const uint8_t *p) {
+ return
+ ((uint32_t) p[2] << 16) |
+ ((uint32_t) p[1] << 8) |
+ ((uint32_t) p[0]);
+}
+
+static inline void PA_WRITE24BE(uint8_t *p, uint32_t u) {
+ p[0] = (uint8_t) (u >> 16);
+ p[1] = (uint8_t) (u >> 8);
+ p[2] = (uint8_t) u;
+}
+
+static inline void PA_WRITE24LE(uint8_t *p, uint32_t u) {
+ p[2] = (uint8_t) (u >> 16);
+ p[1] = (uint8_t) (u >> 8);
+ p[0] = (uint8_t) u;
+}
+
+static inline float PA_FLOAT32_SWAP(float x) {
+ union {
+ float f;
+ uint32_t u;
+ } t;
+
+ t.f = x;
+ t.u = ((uint32_t) (__extension__ ({ register unsigned int __v, __x = ((uint32_t) t.u); if (__builtin_constant_p (__x)) __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) | (((__x) & 0x000000ff) << 24)); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; })));
+ return t.f;
+}
+# 37 "pulsecore/svolume_mmx.c" 2
+# 94 "pulsecore/svolume_mmx.c"
+static void
+pa_volume_s16ne_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ pa_reg_x86 channel, temp;
+
+
+
+ channels = __extension__ ({ typeof(4U) _a = (4U); typeof(channels) _b = (channels); _a > _b ? _a : _b; });
+
+ __asm__ __volatile__ (
+ " xor %3, %3 \n\t"
+ " sar $1, %2 \n\t"
+
+ " test $1, %2 \n\t"
+ " je 2f \n\t"
+
+ " movd (%1, %3, 4), %%mm0 \n\t"
+ " movw (%0), %w4 \n\t"
+ " movd %4, %%mm1 \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm1"" \n\t" " pcmpgtw ""%%mm0"", %%mm4 \n\t" " pand ""%%mm1"", %%mm4 \n\t" " movq ""%%mm1"", %%mm5 \n\t" " pmulhw ""%%mm0"", ""%%mm1"" \n\t" " paddw %%mm4, ""%%mm1"" \n\t" " psrld $16, ""%%mm0"" \n\t" " pmaddwd %%mm5, ""%%mm0"" \n\t" " paddd ""%%mm1"", ""%%mm0"" \n\t" " packssdw ""%%mm0"", ""%%mm0"" \n\t"
+ " movd %%mm0, %4 \n\t"
+ " movw %w4, (%0) \n\t"
+ " add $2, %0 \n\t"
+ " add ""$1"", %3 \n\t" " mov %3, %4 \n\t" " sub ""%5"", %4 \n\t" " cmovae %4, %3 \n\t"
+
+ "2: \n\t"
+ " sar $1, %2 \n\t"
+ " test $1, %2 \n\t"
+ " je 4f \n\t"
+
+ "3: \n\t"
+ " movq (%1, %3, 4), %%mm0 \n\t"
+ " movd (%0), %%mm1 \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm1"" \n\t" " pcmpgtw ""%%mm0"", %%mm4 \n\t" " pand ""%%mm1"", %%mm4 \n\t" " movq ""%%mm1"", %%mm5 \n\t" " pmulhw ""%%mm0"", ""%%mm1"" \n\t" " paddw %%mm4, ""%%mm1"" \n\t" " psrld $16, ""%%mm0"" \n\t" " pmaddwd %%mm5, ""%%mm0"" \n\t" " paddd ""%%mm1"", ""%%mm0"" \n\t" " packssdw ""%%mm0"", ""%%mm0"" \n\t"
+ " movd %%mm0, (%0) \n\t"
+ " add $4, %0 \n\t"
+ " add ""$2"", %3 \n\t" " mov %3, %4 \n\t" " sub ""%5"", %4 \n\t" " cmovae %4, %3 \n\t"
+
+ "4: \n\t"
+ " sar $1, %2 \n\t"
+ " cmp $0, %2 \n\t"
+ " je 6f \n\t"
+
+ "5: \n\t"
+ " movq (%1, %3, 4), %%mm0 \n\t"
+ " movq 8(%1, %3, 4), %%mm2 \n\t"
+ " movd (%0), %%mm1 \n\t"
+ " movd 4(%0), %%mm3 \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm1"" \n\t" " pcmpgtw ""%%mm0"", %%mm4 \n\t" " pand ""%%mm1"", %%mm4 \n\t" " movq ""%%mm1"", %%mm5 \n\t" " pmulhw ""%%mm0"", ""%%mm1"" \n\t" " paddw %%mm4, ""%%mm1"" \n\t" " psrld $16, ""%%mm0"" \n\t" " pmaddwd %%mm5, ""%%mm0"" \n\t" " paddd ""%%mm1"", ""%%mm0"" \n\t" " packssdw ""%%mm0"", ""%%mm0"" \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm3"" \n\t" " pcmpgtw ""%%mm2"", %%mm4 \n\t" " pand ""%%mm3"", %%mm4 \n\t" " movq ""%%mm3"", %%mm5 \n\t" " pmulhw ""%%mm2"", ""%%mm3"" \n\t" " paddw %%mm4, ""%%mm3"" \n\t" " psrld $16, ""%%mm2"" \n\t" " pmaddwd %%mm5, ""%%mm2"" \n\t" " paddd ""%%mm3"", ""%%mm2"" \n\t" " packssdw ""%%mm2"", ""%%mm2"" \n\t"
+ " movd %%mm0, (%0) \n\t"
+ " movd %%mm2, 4(%0) \n\t"
+ " add $8, %0 \n\t"
+ " add ""$4"", %3 \n\t" " mov %3, %4 \n\t" " sub ""%5"", %4 \n\t" " cmovae %4, %3 \n\t"
+ " dec %2 \n\t"
+ " jne 5b \n\t"
+
+ "6: \n\t"
+ " emms \n\t"
+
+ : "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp)
+ : "X" ((pa_reg_x86)channels)
+ : "cc"
+ );
+}
+
+static void
+pa_volume_s16re_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ pa_reg_x86 channel, temp;
+
+
+
+ channels = __extension__ ({ typeof(4U) _a = (4U); typeof(channels) _b = (channels); _a > _b ? _a : _b; });
+
+ __asm__ __volatile__ (
+ " xor %3, %3 \n\t"
+ " sar $1, %2 \n\t"
+ " pcmpeqw %%mm6, %%mm6 \n\t"
+ " pcmpeqw %%mm7, %%mm7 \n\t"
+ " pslld $16, %%mm6 \n\t"
+ " psrld $31, %%mm7 \n\t"
+
+ " test $1, %2 \n\t"
+ " je 2f \n\t"
+
+ " movd (%1, %3, 4), %%mm0 \n\t"
+ " movw (%0), %w4 \n\t"
+ " rorw $8, %w4 \n\t"
+ " movd %4, %%mm1 \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm1"" \n\t" " pcmpgtw ""%%mm0"", %%mm4 \n\t" " pand ""%%mm1"", %%mm4 \n\t" " movq ""%%mm1"", %%mm5 \n\t" " pmulhw ""%%mm0"", ""%%mm1"" \n\t" " paddw %%mm4, ""%%mm1"" \n\t" " psrld $16, ""%%mm0"" \n\t" " pmaddwd %%mm5, ""%%mm0"" \n\t" " paddd ""%%mm1"", ""%%mm0"" \n\t" " packssdw ""%%mm0"", ""%%mm0"" \n\t"
+ " movd %%mm0, %4 \n\t"
+ " rorw $8, %w4 \n\t"
+ " movw %w4, (%0) \n\t"
+ " add $2, %0 \n\t"
+ " add ""$1"", %3 \n\t" " mov %3, %4 \n\t" " sub ""%5"", %4 \n\t" " cmovae %4, %3 \n\t"
+
+ "2: \n\t"
+ " sar $1, %2 \n\t"
+ " test $1, %2 \n\t"
+ " je 4f \n\t"
+
+ "3: \n\t"
+ " movq (%1, %3, 4), %%mm0 \n\t"
+ " movd (%0), %%mm1 \n\t"
+ " movq ""%%mm1"", %%mm4 \n\t" " psrlw $8, %%mm4 \n\t" " psllw $8, ""%%mm1"" \n\t" " por %%mm4, ""%%mm1"" \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm1"" \n\t" " pcmpgtw ""%%mm0"", %%mm4 \n\t" " pand ""%%mm1"", %%mm4 \n\t" " movq ""%%mm1"", %%mm5 \n\t" " pmulhw ""%%mm0"", ""%%mm1"" \n\t" " paddw %%mm4, ""%%mm1"" \n\t" " psrld $16, ""%%mm0"" \n\t" " pmaddwd %%mm5, ""%%mm0"" \n\t" " paddd ""%%mm1"", ""%%mm0"" \n\t" " packssdw ""%%mm0"", ""%%mm0"" \n\t"
+ " movq ""%%mm0"", %%mm4 \n\t" " psrlw $8, %%mm4 \n\t" " psllw $8, ""%%mm0"" \n\t" " por %%mm4, ""%%mm0"" \n\t"
+ " movd %%mm0, (%0) \n\t"
+ " add $4, %0 \n\t"
+ " add ""$2"", %3 \n\t" " mov %3, %4 \n\t" " sub ""%5"", %4 \n\t" " cmovae %4, %3 \n\t"
+
+ "4: \n\t"
+ " sar $1, %2 \n\t"
+ " cmp $0, %2 \n\t"
+ " je 6f \n\t"
+
+ "5: \n\t"
+ " movq (%1, %3, 4), %%mm0 \n\t"
+ " movq 8(%1, %3, 4), %%mm2 \n\t"
+ " movd (%0), %%mm1 \n\t"
+ " movd 4(%0), %%mm3 \n\t"
+ " movq ""%%mm1"", %%mm4 \n\t" " movq ""%%mm3"", %%mm5 \n\t" " psrlw $8, %%mm4 \n\t" " psrlw $8, %%mm5 \n\t" " psllw $8, ""%%mm1"" \n\t" " psllw $8, ""%%mm3"" \n\t" " por %%mm4, ""%%mm1"" \n\t" " por %%mm5, ""%%mm3"" \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm1"" \n\t" " pcmpgtw ""%%mm0"", %%mm4 \n\t" " pand ""%%mm1"", %%mm4 \n\t" " movq ""%%mm1"", %%mm5 \n\t" " pmulhw ""%%mm0"", ""%%mm1"" \n\t" " paddw %%mm4, ""%%mm1"" \n\t" " psrld $16, ""%%mm0"" \n\t" " pmaddwd %%mm5, ""%%mm0"" \n\t" " paddd ""%%mm1"", ""%%mm0"" \n\t" " packssdw ""%%mm0"", ""%%mm0"" \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm3"" \n\t" " pcmpgtw ""%%mm2"", %%mm4 \n\t" " pand ""%%mm3"", %%mm4 \n\t" " movq ""%%mm3"", %%mm5 \n\t" " pmulhw ""%%mm2"", ""%%mm3"" \n\t" " paddw %%mm4, ""%%mm3"" \n\t" " psrld $16, ""%%mm2"" \n\t" " pmaddwd %%mm5, ""%%mm2"" \n\t" " paddd ""%%mm3"", ""%%mm2"" \n\t" " packssdw ""%%mm2"", ""%%mm2"" \n\t"
+ " movq ""%%mm0"", %%mm4 \n\t" " movq ""%%mm2"", %%mm5 \n\t" " psrlw $8, %%mm4 \n\t" " psrlw $8, %%mm5 \n\t" " psllw $8, ""%%mm0"" \n\t" " psllw $8, ""%%mm2"" \n\t" " por %%mm4, ""%%mm0"" \n\t" " por %%mm5, ""%%mm2"" \n\t"
+ " movd %%mm0, (%0) \n\t"
+ " movd %%mm2, 4(%0) \n\t"
+ " add $8, %0 \n\t"
+ " add ""$4"", %3 \n\t" " mov %3, %4 \n\t" " sub ""%5"", %4 \n\t" " cmovae %4, %3 \n\t"
+ " dec %2 \n\t"
+ " jne 5b \n\t"
+
+ "6: \n\t"
+ " emms \n\t"
+
+ : "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp)
+ : "X" ((pa_reg_x86)channels)
+ : "cc"
+ );
+}
+# 296 "pulsecore/svolume_mmx.c"
+void pa_volume_func_init_mmx (pa_cpu_x86_flag_t flags) {
+
+
+
+
+
+
+ if (flags & PA_CPU_X86_MMX) {
+ pa_log_level_meta(PA_LOG_INFO, "pulsecore/svolume_mmx.c", 304, __func__, "Initialising MMX optimized functions.");
+
+ pa_set_volume_func (PA_SAMPLE_S16LE, (pa_do_volume_func_t) pa_volume_s16ne_mmx);
+ pa_set_volume_func (PA_SAMPLE_S16BE, (pa_do_volume_func_t) pa_volume_s16re_mmx);
+ }
+
+}
--- /dev/null
+typedef signed char int8_t;
+typedef short int int16_t;
+typedef int int32_t;
+typedef long int int64_t;
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned int uint32_t;
+typedef unsigned long int uint64_t;
+typedef signed char int_least8_t;
+typedef short int int_least16_t;
+typedef int int_least32_t;
+typedef long int int_least64_t;
+typedef unsigned char uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int uint_least32_t;
+typedef unsigned long int uint_least64_t;
+typedef signed char int_fast8_t;
+typedef long int int_fast16_t;
+typedef long int int_fast32_t;
+typedef long int int_fast64_t;
+typedef unsigned char uint_fast8_t;
+typedef unsigned long int uint_fast16_t;
+typedef unsigned long int uint_fast32_t;
+typedef unsigned long int uint_fast64_t;
+typedef long int intptr_t;
+typedef unsigned long int uintptr_t;
+typedef long int intmax_t;
+typedef unsigned long int uintmax_t;
+typedef int __gwchar_t;
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } imaxdiv_t;
+extern intmax_t imaxabs (intmax_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern imaxdiv_t imaxdiv (intmax_t __numer, intmax_t __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern intmax_t strtoimax (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base) __attribute__ ((__nothrow__));
+extern uintmax_t strtoumax (__const char *__restrict __nptr,
+ char ** __restrict __endptr, int __base) __attribute__ ((__nothrow__));
+extern intmax_t wcstoimax (__const __gwchar_t *__restrict __nptr,
+ __gwchar_t **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__));
+extern uintmax_t wcstoumax (__const __gwchar_t *__restrict __nptr,
+ __gwchar_t ** __restrict __endptr, int __base)
+ __attribute__ ((__nothrow__));
+extern long int __strtol_internal (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern __inline __attribute__ ((__gnu_inline__)) intmax_t
+__attribute__ ((__nothrow__)) strtoimax (__const char *__restrict nptr, char **__restrict endptr, int base)
+{
+ return __strtol_internal (nptr, endptr, base, 0);
+}
+extern unsigned long int __strtoul_internal (__const char *
+ __restrict __nptr,
+ char ** __restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern __inline __attribute__ ((__gnu_inline__)) uintmax_t
+__attribute__ ((__nothrow__)) strtoumax (__const char *__restrict nptr, char **__restrict endptr, int base)
+{
+ return __strtoul_internal (nptr, endptr, base, 0);
+}
+extern long int __wcstol_internal (__const __gwchar_t * __restrict __nptr,
+ __gwchar_t **__restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern __inline __attribute__ ((__gnu_inline__)) intmax_t
+__attribute__ ((__nothrow__)) wcstoimax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
+{
+ return __wcstol_internal (nptr, endptr, base, 0);
+}
+extern unsigned long int __wcstoul_internal (__const __gwchar_t *
+ __restrict __nptr,
+ __gwchar_t **
+ __restrict __endptr,
+ int __base, int __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern __inline __attribute__ ((__gnu_inline__)) uintmax_t
+__attribute__ ((__nothrow__)) wcstoumax (__const __gwchar_t *__restrict nptr, __gwchar_t **__restrict endptr, int base)
+{
+ return __wcstoul_internal (nptr, endptr, base, 0);
+}
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+typedef signed long int __int64_t;
+typedef unsigned long int __uint64_t;
+typedef long int __quad_t;
+typedef unsigned long int __u_quad_t;
+typedef unsigned long int __dev_t;
+typedef unsigned int __uid_t;
+typedef unsigned int __gid_t;
+typedef unsigned long int __ino_t;
+typedef unsigned long int __ino64_t;
+typedef unsigned int __mode_t;
+typedef unsigned long int __nlink_t;
+typedef long int __off_t;
+typedef long int __off64_t;
+typedef int __pid_t;
+typedef struct { int __val[2]; } __fsid_t;
+typedef long int __clock_t;
+typedef unsigned long int __rlim_t;
+typedef unsigned long int __rlim64_t;
+typedef unsigned int __id_t;
+typedef long int __time_t;
+typedef unsigned int __useconds_t;
+typedef long int __suseconds_t;
+typedef int __daddr_t;
+typedef long int __swblk_t;
+typedef int __key_t;
+typedef int __clockid_t;
+typedef void * __timer_t;
+typedef long int __blksize_t;
+typedef long int __blkcnt_t;
+typedef long int __blkcnt64_t;
+typedef unsigned long int __fsblkcnt_t;
+typedef unsigned long int __fsblkcnt64_t;
+typedef unsigned long int __fsfilcnt_t;
+typedef unsigned long int __fsfilcnt64_t;
+typedef long int __ssize_t;
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+typedef long int __intptr_t;
+typedef unsigned int __socklen_t;
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+typedef __loff_t loff_t;
+typedef __ino_t ino_t;
+typedef __ino64_t ino64_t;
+typedef __dev_t dev_t;
+typedef __gid_t gid_t;
+typedef __mode_t mode_t;
+typedef __nlink_t nlink_t;
+typedef __uid_t uid_t;
+typedef __off_t off_t;
+typedef __off64_t off64_t;
+typedef __pid_t pid_t;
+typedef __id_t id_t;
+typedef __ssize_t ssize_t;
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+typedef __key_t key_t;
+typedef __clock_t clock_t;
+typedef __time_t time_t;
+typedef __clockid_t clockid_t;
+typedef __timer_t timer_t;
+typedef __useconds_t useconds_t;
+typedef __suseconds_t suseconds_t;
+typedef long unsigned int size_t;
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+typedef int __sig_atomic_t;
+typedef struct
+ {
+ unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+ } __sigset_t;
+typedef __sigset_t sigset_t;
+struct timespec
+ {
+ __time_t tv_sec;
+ long int tv_nsec;
+ };
+struct timeval
+ {
+ __time_t tv_sec;
+ __suseconds_t tv_usec;
+ };
+typedef long int __fd_mask;
+typedef struct
+ {
+ __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
+ } fd_set;
+typedef __fd_mask fd_mask;
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ struct timeval *__restrict __timeout);
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+ const __sigset_t *__restrict __sigmask);
+__extension__
+extern unsigned int gnu_dev_major (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned int gnu_dev_minor (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned long long int gnu_dev_makedev (unsigned int __major,
+ unsigned int __minor)
+ __attribute__ ((__nothrow__));
+__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
+{
+ return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
+}
+__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
+{
+ return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
+}
+__extension__ extern __inline __attribute__ ((__gnu_inline__)) unsigned long long int
+__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
+{
+ return ((__minor & 0xff) | ((__major & 0xfff) << 8)
+ | (((unsigned long long int) (__minor & ~0xff)) << 12)
+ | (((unsigned long long int) (__major & ~0xfff)) << 32));
+}
+typedef __blksize_t blksize_t;
+typedef __blkcnt_t blkcnt_t;
+typedef __fsblkcnt_t fsblkcnt_t;
+typedef __fsfilcnt_t fsfilcnt_t;
+typedef __blkcnt64_t blkcnt64_t;
+typedef __fsblkcnt64_t fsblkcnt64_t;
+typedef __fsfilcnt64_t fsfilcnt64_t;
+typedef unsigned long int pthread_t;
+typedef union
+{
+ char __size[56];
+ long int __align;
+} pthread_attr_t;
+typedef struct __pthread_internal_list
+{
+ struct __pthread_internal_list *__prev;
+ struct __pthread_internal_list *__next;
+} __pthread_list_t;
+typedef union
+{
+ struct __pthread_mutex_s
+ {
+ int __lock;
+ unsigned int __count;
+ int __owner;
+ unsigned int __nusers;
+ int __kind;
+ int __spins;
+ __pthread_list_t __list;
+ } __data;
+ char __size[40];
+ long int __align;
+} pthread_mutex_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_mutexattr_t;
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __futex;
+ __extension__ unsigned long long int __total_seq;
+ __extension__ unsigned long long int __wakeup_seq;
+ __extension__ unsigned long long int __woken_seq;
+ void *__mutex;
+ unsigned int __nwaiters;
+ unsigned int __broadcast_seq;
+ } __data;
+ char __size[48];
+ __extension__ long long int __align;
+} pthread_cond_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_condattr_t;
+typedef unsigned int pthread_key_t;
+typedef int pthread_once_t;
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __nr_readers;
+ unsigned int __readers_wakeup;
+ unsigned int __writer_wakeup;
+ unsigned int __nr_readers_queued;
+ unsigned int __nr_writers_queued;
+ int __writer;
+ int __shared;
+ unsigned long int __pad1;
+ unsigned long int __pad2;
+ unsigned int __flags;
+ } __data;
+ char __size[56];
+ long int __align;
+} pthread_rwlock_t;
+typedef union
+{
+ char __size[8];
+ long int __align;
+} pthread_rwlockattr_t;
+typedef volatile int pthread_spinlock_t;
+typedef union
+{
+ char __size[32];
+ long int __align;
+} pthread_barrier_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_barrierattr_t;
+typedef float float_t;
+typedef double double_t;
+extern double acos (double __x) __attribute__ ((__nothrow__)); extern double __acos (double __x) __attribute__ ((__nothrow__));
+extern double asin (double __x) __attribute__ ((__nothrow__)); extern double __asin (double __x) __attribute__ ((__nothrow__));
+extern double atan (double __x) __attribute__ ((__nothrow__)); extern double __atan (double __x) __attribute__ ((__nothrow__));
+extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__)); extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__));
+extern double cos (double __x) __attribute__ ((__nothrow__)); extern double __cos (double __x) __attribute__ ((__nothrow__));
+extern double sin (double __x) __attribute__ ((__nothrow__)); extern double __sin (double __x) __attribute__ ((__nothrow__));
+extern double tan (double __x) __attribute__ ((__nothrow__)); extern double __tan (double __x) __attribute__ ((__nothrow__));
+extern double cosh (double __x) __attribute__ ((__nothrow__)); extern double __cosh (double __x) __attribute__ ((__nothrow__));
+extern double sinh (double __x) __attribute__ ((__nothrow__)); extern double __sinh (double __x) __attribute__ ((__nothrow__));
+extern double tanh (double __x) __attribute__ ((__nothrow__)); extern double __tanh (double __x) __attribute__ ((__nothrow__));
+extern void sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__)); extern void __sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__));
+extern double acosh (double __x) __attribute__ ((__nothrow__)); extern double __acosh (double __x) __attribute__ ((__nothrow__));
+extern double asinh (double __x) __attribute__ ((__nothrow__)); extern double __asinh (double __x) __attribute__ ((__nothrow__));
+extern double atanh (double __x) __attribute__ ((__nothrow__)); extern double __atanh (double __x) __attribute__ ((__nothrow__));
+extern double exp (double __x) __attribute__ ((__nothrow__)); extern double __exp (double __x) __attribute__ ((__nothrow__));
+extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__)); extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__));
+extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__)); extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__));
+extern double log (double __x) __attribute__ ((__nothrow__)); extern double __log (double __x) __attribute__ ((__nothrow__));
+extern double log10 (double __x) __attribute__ ((__nothrow__)); extern double __log10 (double __x) __attribute__ ((__nothrow__));
+extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__)); extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__));
+extern double exp10 (double __x) __attribute__ ((__nothrow__)); extern double __exp10 (double __x) __attribute__ ((__nothrow__));
+extern double pow10 (double __x) __attribute__ ((__nothrow__)); extern double __pow10 (double __x) __attribute__ ((__nothrow__));
+extern double expm1 (double __x) __attribute__ ((__nothrow__)); extern double __expm1 (double __x) __attribute__ ((__nothrow__));
+extern double log1p (double __x) __attribute__ ((__nothrow__)); extern double __log1p (double __x) __attribute__ ((__nothrow__));
+extern double logb (double __x) __attribute__ ((__nothrow__)); extern double __logb (double __x) __attribute__ ((__nothrow__));
+extern double exp2 (double __x) __attribute__ ((__nothrow__)); extern double __exp2 (double __x) __attribute__ ((__nothrow__));
+extern double log2 (double __x) __attribute__ ((__nothrow__)); extern double __log2 (double __x) __attribute__ ((__nothrow__));
+extern double pow (double __x, double __y) __attribute__ ((__nothrow__)); extern double __pow (double __x, double __y) __attribute__ ((__nothrow__));
+extern double sqrt (double __x) __attribute__ ((__nothrow__)); extern double __sqrt (double __x) __attribute__ ((__nothrow__));
+extern double hypot (double __x, double __y) __attribute__ ((__nothrow__)); extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__));
+extern double cbrt (double __x) __attribute__ ((__nothrow__)); extern double __cbrt (double __x) __attribute__ ((__nothrow__));
+extern double ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double fmod (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__));
+extern int __isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int __finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double drem (double __x, double __y) __attribute__ ((__nothrow__)); extern double __drem (double __x, double __y) __attribute__ ((__nothrow__));
+extern double significand (double __x) __attribute__ ((__nothrow__)); extern double __significand (double __x) __attribute__ ((__nothrow__));
+extern double copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int __isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double j0 (double) __attribute__ ((__nothrow__)); extern double __j0 (double) __attribute__ ((__nothrow__));
+extern double j1 (double) __attribute__ ((__nothrow__)); extern double __j1 (double) __attribute__ ((__nothrow__));
+extern double jn (int, double) __attribute__ ((__nothrow__)); extern double __jn (int, double) __attribute__ ((__nothrow__));
+extern double y0 (double) __attribute__ ((__nothrow__)); extern double __y0 (double) __attribute__ ((__nothrow__));
+extern double y1 (double) __attribute__ ((__nothrow__)); extern double __y1 (double) __attribute__ ((__nothrow__));
+extern double yn (int, double) __attribute__ ((__nothrow__)); extern double __yn (int, double) __attribute__ ((__nothrow__));
+extern double erf (double) __attribute__ ((__nothrow__)); extern double __erf (double) __attribute__ ((__nothrow__));
+extern double erfc (double) __attribute__ ((__nothrow__)); extern double __erfc (double) __attribute__ ((__nothrow__));
+extern double lgamma (double) __attribute__ ((__nothrow__)); extern double __lgamma (double) __attribute__ ((__nothrow__));
+extern double tgamma (double) __attribute__ ((__nothrow__)); extern double __tgamma (double) __attribute__ ((__nothrow__));
+extern double gamma (double) __attribute__ ((__nothrow__)); extern double __gamma (double) __attribute__ ((__nothrow__));
+extern double lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__)); extern double __lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__));
+extern double rint (double __x) __attribute__ ((__nothrow__)); extern double __rint (double __x) __attribute__ ((__nothrow__));
+extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double remainder (double __x, double __y) __attribute__ ((__nothrow__)); extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__));
+extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__)); extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__));
+extern int ilogb (double __x) __attribute__ ((__nothrow__)); extern int __ilogb (double __x) __attribute__ ((__nothrow__));
+extern double scalbln (double __x, long int __n) __attribute__ ((__nothrow__)); extern double __scalbln (double __x, long int __n) __attribute__ ((__nothrow__));
+extern double nearbyint (double __x) __attribute__ ((__nothrow__)); extern double __nearbyint (double __x) __attribute__ ((__nothrow__));
+extern double round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__)); extern double __remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__));
+extern long int lrint (double __x) __attribute__ ((__nothrow__)); extern long int __lrint (double __x) __attribute__ ((__nothrow__));
+extern long long int llrint (double __x) __attribute__ ((__nothrow__)); extern long long int __llrint (double __x) __attribute__ ((__nothrow__));
+extern long int lround (double __x) __attribute__ ((__nothrow__)); extern long int __lround (double __x) __attribute__ ((__nothrow__));
+extern long long int llround (double __x) __attribute__ ((__nothrow__)); extern long long int __llround (double __x) __attribute__ ((__nothrow__));
+extern double fdim (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fdim (double __x, double __y) __attribute__ ((__nothrow__));
+extern double fmax (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmax (double __x, double __y) __attribute__ ((__nothrow__));
+extern double fmin (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmin (double __x, double __y) __attribute__ ((__nothrow__));
+extern int __fpclassify (double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+extern int __signbit (double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+extern double fma (double __x, double __y, double __z) __attribute__ ((__nothrow__)); extern double __fma (double __x, double __y, double __z) __attribute__ ((__nothrow__));
+extern double scalb (double __x, double __n) __attribute__ ((__nothrow__)); extern double __scalb (double __x, double __n) __attribute__ ((__nothrow__));
+extern float acosf (float __x) __attribute__ ((__nothrow__)); extern float __acosf (float __x) __attribute__ ((__nothrow__));
+extern float asinf (float __x) __attribute__ ((__nothrow__)); extern float __asinf (float __x) __attribute__ ((__nothrow__));
+extern float atanf (float __x) __attribute__ ((__nothrow__)); extern float __atanf (float __x) __attribute__ ((__nothrow__));
+extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__)); extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__));
+extern float cosf (float __x) __attribute__ ((__nothrow__)); extern float __cosf (float __x) __attribute__ ((__nothrow__));
+extern float sinf (float __x) __attribute__ ((__nothrow__)); extern float __sinf (float __x) __attribute__ ((__nothrow__));
+extern float tanf (float __x) __attribute__ ((__nothrow__)); extern float __tanf (float __x) __attribute__ ((__nothrow__));
+extern float coshf (float __x) __attribute__ ((__nothrow__)); extern float __coshf (float __x) __attribute__ ((__nothrow__));
+extern float sinhf (float __x) __attribute__ ((__nothrow__)); extern float __sinhf (float __x) __attribute__ ((__nothrow__));
+extern float tanhf (float __x) __attribute__ ((__nothrow__)); extern float __tanhf (float __x) __attribute__ ((__nothrow__));
+extern void sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__)); extern void __sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__));
+extern float acoshf (float __x) __attribute__ ((__nothrow__)); extern float __acoshf (float __x) __attribute__ ((__nothrow__));
+extern float asinhf (float __x) __attribute__ ((__nothrow__)); extern float __asinhf (float __x) __attribute__ ((__nothrow__));
+extern float atanhf (float __x) __attribute__ ((__nothrow__)); extern float __atanhf (float __x) __attribute__ ((__nothrow__));
+extern float expf (float __x) __attribute__ ((__nothrow__)); extern float __expf (float __x) __attribute__ ((__nothrow__));
+extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__)); extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__));
+extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__)); extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__));
+extern float logf (float __x) __attribute__ ((__nothrow__)); extern float __logf (float __x) __attribute__ ((__nothrow__));
+extern float log10f (float __x) __attribute__ ((__nothrow__)); extern float __log10f (float __x) __attribute__ ((__nothrow__));
+extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__)); extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__));
+extern float exp10f (float __x) __attribute__ ((__nothrow__)); extern float __exp10f (float __x) __attribute__ ((__nothrow__));
+extern float pow10f (float __x) __attribute__ ((__nothrow__)); extern float __pow10f (float __x) __attribute__ ((__nothrow__));
+extern float expm1f (float __x) __attribute__ ((__nothrow__)); extern float __expm1f (float __x) __attribute__ ((__nothrow__));
+extern float log1pf (float __x) __attribute__ ((__nothrow__)); extern float __log1pf (float __x) __attribute__ ((__nothrow__));
+extern float logbf (float __x) __attribute__ ((__nothrow__)); extern float __logbf (float __x) __attribute__ ((__nothrow__));
+extern float exp2f (float __x) __attribute__ ((__nothrow__)); extern float __exp2f (float __x) __attribute__ ((__nothrow__));
+extern float log2f (float __x) __attribute__ ((__nothrow__)); extern float __log2f (float __x) __attribute__ ((__nothrow__));
+extern float powf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __powf (float __x, float __y) __attribute__ ((__nothrow__));
+extern float sqrtf (float __x) __attribute__ ((__nothrow__)); extern float __sqrtf (float __x) __attribute__ ((__nothrow__));
+extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__));
+extern float cbrtf (float __x) __attribute__ ((__nothrow__)); extern float __cbrtf (float __x) __attribute__ ((__nothrow__));
+extern float ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__));
+extern int __isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int __finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float dremf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __dremf (float __x, float __y) __attribute__ ((__nothrow__));
+extern float significandf (float __x) __attribute__ ((__nothrow__)); extern float __significandf (float __x) __attribute__ ((__nothrow__));
+extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int __isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float j0f (float) __attribute__ ((__nothrow__)); extern float __j0f (float) __attribute__ ((__nothrow__));
+extern float j1f (float) __attribute__ ((__nothrow__)); extern float __j1f (float) __attribute__ ((__nothrow__));
+extern float jnf (int, float) __attribute__ ((__nothrow__)); extern float __jnf (int, float) __attribute__ ((__nothrow__));
+extern float y0f (float) __attribute__ ((__nothrow__)); extern float __y0f (float) __attribute__ ((__nothrow__));
+extern float y1f (float) __attribute__ ((__nothrow__)); extern float __y1f (float) __attribute__ ((__nothrow__));
+extern float ynf (int, float) __attribute__ ((__nothrow__)); extern float __ynf (int, float) __attribute__ ((__nothrow__));
+extern float erff (float) __attribute__ ((__nothrow__)); extern float __erff (float) __attribute__ ((__nothrow__));
+extern float erfcf (float) __attribute__ ((__nothrow__)); extern float __erfcf (float) __attribute__ ((__nothrow__));
+extern float lgammaf (float) __attribute__ ((__nothrow__)); extern float __lgammaf (float) __attribute__ ((__nothrow__));
+extern float tgammaf (float) __attribute__ ((__nothrow__)); extern float __tgammaf (float) __attribute__ ((__nothrow__));
+extern float gammaf (float) __attribute__ ((__nothrow__)); extern float __gammaf (float) __attribute__ ((__nothrow__));
+extern float lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__)); extern float __lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__));
+extern float rintf (float __x) __attribute__ ((__nothrow__)); extern float __rintf (float __x) __attribute__ ((__nothrow__));
+extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__));
+extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__)); extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__));
+extern int ilogbf (float __x) __attribute__ ((__nothrow__)); extern int __ilogbf (float __x) __attribute__ ((__nothrow__));
+extern float scalblnf (float __x, long int __n) __attribute__ ((__nothrow__)); extern float __scalblnf (float __x, long int __n) __attribute__ ((__nothrow__));
+extern float nearbyintf (float __x) __attribute__ ((__nothrow__)); extern float __nearbyintf (float __x) __attribute__ ((__nothrow__));
+extern float roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__)); extern float __remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__));
+extern long int lrintf (float __x) __attribute__ ((__nothrow__)); extern long int __lrintf (float __x) __attribute__ ((__nothrow__));
+extern long long int llrintf (float __x) __attribute__ ((__nothrow__)); extern long long int __llrintf (float __x) __attribute__ ((__nothrow__));
+extern long int lroundf (float __x) __attribute__ ((__nothrow__)); extern long int __lroundf (float __x) __attribute__ ((__nothrow__));
+extern long long int llroundf (float __x) __attribute__ ((__nothrow__)); extern long long int __llroundf (float __x) __attribute__ ((__nothrow__));
+extern float fdimf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fdimf (float __x, float __y) __attribute__ ((__nothrow__));
+extern float fmaxf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmaxf (float __x, float __y) __attribute__ ((__nothrow__));
+extern float fminf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fminf (float __x, float __y) __attribute__ ((__nothrow__));
+extern int __fpclassifyf (float __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+extern int __signbitf (float __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+extern float fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__)); extern float __fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__));
+extern float scalbf (float __x, float __n) __attribute__ ((__nothrow__)); extern float __scalbf (float __x, float __n) __attribute__ ((__nothrow__));
+extern long double acosl (long double __x) __attribute__ ((__nothrow__)); extern long double __acosl (long double __x) __attribute__ ((__nothrow__));
+extern long double asinl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinl (long double __x) __attribute__ ((__nothrow__));
+extern long double atanl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanl (long double __x) __attribute__ ((__nothrow__));
+extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__)); extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__));
+extern long double cosl (long double __x) __attribute__ ((__nothrow__)); extern long double __cosl (long double __x) __attribute__ ((__nothrow__));
+extern long double sinl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinl (long double __x) __attribute__ ((__nothrow__));
+extern long double tanl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanl (long double __x) __attribute__ ((__nothrow__));
+extern long double coshl (long double __x) __attribute__ ((__nothrow__)); extern long double __coshl (long double __x) __attribute__ ((__nothrow__));
+extern long double sinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinhl (long double __x) __attribute__ ((__nothrow__));
+extern long double tanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanhl (long double __x) __attribute__ ((__nothrow__));
+extern void sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__)); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__));
+extern long double acoshl (long double __x) __attribute__ ((__nothrow__)); extern long double __acoshl (long double __x) __attribute__ ((__nothrow__));
+extern long double asinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinhl (long double __x) __attribute__ ((__nothrow__));
+extern long double atanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanhl (long double __x) __attribute__ ((__nothrow__));
+extern long double expl (long double __x) __attribute__ ((__nothrow__)); extern long double __expl (long double __x) __attribute__ ((__nothrow__));
+extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__)); extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__));
+extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__)); extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__));
+extern long double logl (long double __x) __attribute__ ((__nothrow__)); extern long double __logl (long double __x) __attribute__ ((__nothrow__));
+extern long double log10l (long double __x) __attribute__ ((__nothrow__)); extern long double __log10l (long double __x) __attribute__ ((__nothrow__));
+extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__)); extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__));
+extern long double exp10l (long double __x) __attribute__ ((__nothrow__)); extern long double __exp10l (long double __x) __attribute__ ((__nothrow__));
+extern long double pow10l (long double __x) __attribute__ ((__nothrow__)); extern long double __pow10l (long double __x) __attribute__ ((__nothrow__));
+extern long double expm1l (long double __x) __attribute__ ((__nothrow__)); extern long double __expm1l (long double __x) __attribute__ ((__nothrow__));
+extern long double log1pl (long double __x) __attribute__ ((__nothrow__)); extern long double __log1pl (long double __x) __attribute__ ((__nothrow__));
+extern long double logbl (long double __x) __attribute__ ((__nothrow__)); extern long double __logbl (long double __x) __attribute__ ((__nothrow__));
+extern long double exp2l (long double __x) __attribute__ ((__nothrow__)); extern long double __exp2l (long double __x) __attribute__ ((__nothrow__));
+extern long double log2l (long double __x) __attribute__ ((__nothrow__)); extern long double __log2l (long double __x) __attribute__ ((__nothrow__));
+extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern long double sqrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__));
+extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern long double cbrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__));
+extern long double ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern int __isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int __finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double dreml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __dreml (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern long double significandl (long double __x) __attribute__ ((__nothrow__)); extern long double __significandl (long double __x) __attribute__ ((__nothrow__));
+extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int __isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double j0l (long double) __attribute__ ((__nothrow__)); extern long double __j0l (long double) __attribute__ ((__nothrow__));
+extern long double j1l (long double) __attribute__ ((__nothrow__)); extern long double __j1l (long double) __attribute__ ((__nothrow__));
+extern long double jnl (int, long double) __attribute__ ((__nothrow__)); extern long double __jnl (int, long double) __attribute__ ((__nothrow__));
+extern long double y0l (long double) __attribute__ ((__nothrow__)); extern long double __y0l (long double) __attribute__ ((__nothrow__));
+extern long double y1l (long double) __attribute__ ((__nothrow__)); extern long double __y1l (long double) __attribute__ ((__nothrow__));
+extern long double ynl (int, long double) __attribute__ ((__nothrow__)); extern long double __ynl (int, long double) __attribute__ ((__nothrow__));
+extern long double erfl (long double) __attribute__ ((__nothrow__)); extern long double __erfl (long double) __attribute__ ((__nothrow__));
+extern long double erfcl (long double) __attribute__ ((__nothrow__)); extern long double __erfcl (long double) __attribute__ ((__nothrow__));
+extern long double lgammal (long double) __attribute__ ((__nothrow__)); extern long double __lgammal (long double) __attribute__ ((__nothrow__));
+extern long double tgammal (long double) __attribute__ ((__nothrow__)); extern long double __tgammal (long double) __attribute__ ((__nothrow__));
+extern long double gammal (long double) __attribute__ ((__nothrow__)); extern long double __gammal (long double) __attribute__ ((__nothrow__));
+extern long double lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__)); extern long double __lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__));
+extern long double rintl (long double __x) __attribute__ ((__nothrow__)); extern long double __rintl (long double __x) __attribute__ ((__nothrow__));
+extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__)); extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__));
+extern int ilogbl (long double __x) __attribute__ ((__nothrow__)); extern int __ilogbl (long double __x) __attribute__ ((__nothrow__));
+extern long double scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__)); extern long double __scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__));
+extern long double nearbyintl (long double __x) __attribute__ ((__nothrow__)); extern long double __nearbyintl (long double __x) __attribute__ ((__nothrow__));
+extern long double roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__)); extern long double __remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__));
+extern long int lrintl (long double __x) __attribute__ ((__nothrow__)); extern long int __lrintl (long double __x) __attribute__ ((__nothrow__));
+extern long long int llrintl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llrintl (long double __x) __attribute__ ((__nothrow__));
+extern long int lroundl (long double __x) __attribute__ ((__nothrow__)); extern long int __lroundl (long double __x) __attribute__ ((__nothrow__));
+extern long long int llroundl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llroundl (long double __x) __attribute__ ((__nothrow__));
+extern long double fdiml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fdiml (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern long double fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern long double fminl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fminl (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern int __fpclassifyl (long double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+extern int __signbitl (long double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+extern long double fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__)); extern long double __fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__));
+extern long double scalbl (long double __x, long double __n) __attribute__ ((__nothrow__)); extern long double __scalbl (long double __x, long double __n) __attribute__ ((__nothrow__));
+extern int signgam;
+enum
+ {
+ FP_NAN,
+ FP_INFINITE,
+ FP_ZERO,
+ FP_SUBNORMAL,
+ FP_NORMAL
+ };
+typedef enum
+{
+ _IEEE_ = -1,
+ _SVID_,
+ _XOPEN_,
+ _POSIX_,
+ _ISOC_
+} _LIB_VERSION_TYPE;
+extern _LIB_VERSION_TYPE _LIB_VERSION;
+struct exception
+ {
+ int type;
+ char *name;
+ double arg1;
+ double arg2;
+ double retval;
+ };
+extern int matherr (struct exception *__exc);
+extern __inline __attribute__ ((__gnu_inline__)) int
+__attribute__ ((__nothrow__)) __signbitf (float __x)
+{
+ __extension__ union { float __f; int __i; } __u = { __f: __x };
+ return __u.__i < 0;
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+__attribute__ ((__nothrow__)) __signbit (double __x)
+{
+ __extension__ union { double __d; int __i[2]; } __u = { __d: __x };
+ return __u.__i[1] < 0;
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+__attribute__ ((__nothrow__)) __signbitl (long double __x)
+{
+ __extension__ union { long double __l; int __i[3]; } __u = { __l: __x };
+ return (__u.__i[2] & 0x8000) != 0;
+}
+const char* pa_get_library_version(void);
+typedef enum pa_sample_format {
+ PA_SAMPLE_U8,
+ PA_SAMPLE_ALAW,
+ PA_SAMPLE_ULAW,
+ PA_SAMPLE_S16LE,
+ PA_SAMPLE_S16BE,
+ PA_SAMPLE_FLOAT32LE,
+ PA_SAMPLE_FLOAT32BE,
+ PA_SAMPLE_S32LE,
+ PA_SAMPLE_S32BE,
+ PA_SAMPLE_S24LE,
+ PA_SAMPLE_S24BE,
+ PA_SAMPLE_S24_32LE,
+ PA_SAMPLE_S24_32BE,
+ PA_SAMPLE_MAX,
+ PA_SAMPLE_INVALID = -1
+} pa_sample_format_t;
+typedef struct pa_sample_spec {
+ pa_sample_format_t format;
+ uint32_t rate;
+ uint8_t channels;
+} pa_sample_spec;
+typedef uint64_t pa_usec_t;
+size_t pa_bytes_per_second(const pa_sample_spec *spec) __attribute__ ((pure));
+size_t pa_frame_size(const pa_sample_spec *spec) __attribute__ ((pure));
+size_t pa_sample_size(const pa_sample_spec *spec) __attribute__ ((pure));
+size_t pa_sample_size_of_format(pa_sample_format_t f) __attribute__ ((pure));
+pa_usec_t pa_bytes_to_usec(uint64_t length, const pa_sample_spec *spec) __attribute__ ((pure));
+size_t pa_usec_to_bytes(pa_usec_t t, const pa_sample_spec *spec) __attribute__ ((pure));
+pa_sample_spec* pa_sample_spec_init(pa_sample_spec *spec);
+int pa_sample_spec_valid(const pa_sample_spec *spec) __attribute__ ((pure));
+int pa_sample_spec_equal(const pa_sample_spec*a, const pa_sample_spec*b) __attribute__ ((pure));
+const char *pa_sample_format_to_string(pa_sample_format_t f) __attribute__ ((pure));
+pa_sample_format_t pa_parse_sample_format(const char *format) __attribute__ ((pure));
+char* pa_sample_spec_snprint(char *s, size_t l, const pa_sample_spec *spec);
+char* pa_bytes_snprint(char *s, size_t l, unsigned v);
+int pa_sample_format_is_le(pa_sample_format_t f) __attribute__ ((pure));
+int pa_sample_format_is_be(pa_sample_format_t f) __attribute__ ((pure));
+struct timeval;
+struct timeval *pa_gettimeofday(struct timeval *tv);
+pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b) __attribute__ ((pure));
+int pa_timeval_cmp(const struct timeval *a, const struct timeval *b) __attribute__ ((pure));
+pa_usec_t pa_timeval_age(const struct timeval *tv);
+struct timeval* pa_timeval_add(struct timeval *tv, pa_usec_t v);
+struct timeval* pa_timeval_sub(struct timeval *tv, pa_usec_t v);
+struct timeval* pa_timeval_store(struct timeval *tv, pa_usec_t v);
+pa_usec_t pa_timeval_load(const struct timeval *tv);
+void pa_random_seed(void);
+void pa_random(void *ret_data, size_t length);
+typedef __socklen_t socklen_t;
+extern int access (__const char *__name, int __type) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int euidaccess (__const char *__name, int __type)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int eaccess (__const char *__name, int __type)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int faccessat (int __fd, __const char *__file, int __type, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
+extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__));
+extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
+ __attribute__ ((__nothrow__));
+extern int close (int __fd);
+extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__));
+extern ssize_t write (int __fd, __const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__));
+extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
+ __off_t __offset) __attribute__ ((__warn_unused_result__));
+extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
+ __off_t __offset) __attribute__ ((__warn_unused_result__));
+extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
+ __off64_t __offset) __attribute__ ((__warn_unused_result__));
+extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
+ __off64_t __offset) __attribute__ ((__warn_unused_result__));
+extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int pipe2 (int __pipedes[2], int __flags) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__));
+extern unsigned int sleep (unsigned int __seconds);
+extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
+ __attribute__ ((__nothrow__));
+extern int usleep (__useconds_t __useconds);
+extern int pause (void);
+extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
+ __gid_t __group, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
+extern int chdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int fchdir (int __fd) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern char *get_current_dir_name (void) __attribute__ ((__nothrow__));
+extern char *getwd (char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__));
+extern int dup (int __fd) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__));
+extern int dup3 (int __fd, int __fd2, int __flags) __attribute__ ((__nothrow__));
+extern char **__environ;
+extern char **environ;
+extern int execve (__const char *__path, char *__const __argv[],
+ char *__const __envp[]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
+ __attribute__ ((__nothrow__));
+extern int execv (__const char *__path, char *__const __argv[])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int execle (__const char *__path, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int execl (__const char *__path, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int execvp (__const char *__file, char *__const __argv[])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int execlp (__const char *__file, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int nice (int __inc) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern void _exit (int __status) __attribute__ ((__noreturn__));
+enum
+ {
+ _PC_LINK_MAX,
+ _PC_MAX_CANON,
+ _PC_MAX_INPUT,
+ _PC_NAME_MAX,
+ _PC_PATH_MAX,
+ _PC_PIPE_BUF,
+ _PC_CHOWN_RESTRICTED,
+ _PC_NO_TRUNC,
+ _PC_VDISABLE,
+ _PC_SYNC_IO,
+ _PC_ASYNC_IO,
+ _PC_PRIO_IO,
+ _PC_SOCK_MAXBUF,
+ _PC_FILESIZEBITS,
+ _PC_REC_INCR_XFER_SIZE,
+ _PC_REC_MAX_XFER_SIZE,
+ _PC_REC_MIN_XFER_SIZE,
+ _PC_REC_XFER_ALIGN,
+ _PC_ALLOC_SIZE_MIN,
+ _PC_SYMLINK_MAX,
+ _PC_2_SYMLINKS
+ };
+enum
+ {
+ _SC_ARG_MAX,
+ _SC_CHILD_MAX,
+ _SC_CLK_TCK,
+ _SC_NGROUPS_MAX,
+ _SC_OPEN_MAX,
+ _SC_STREAM_MAX,
+ _SC_TZNAME_MAX,
+ _SC_JOB_CONTROL,
+ _SC_SAVED_IDS,
+ _SC_REALTIME_SIGNALS,
+ _SC_PRIORITY_SCHEDULING,
+ _SC_TIMERS,
+ _SC_ASYNCHRONOUS_IO,
+ _SC_PRIORITIZED_IO,
+ _SC_SYNCHRONIZED_IO,
+ _SC_FSYNC,
+ _SC_MAPPED_FILES,
+ _SC_MEMLOCK,
+ _SC_MEMLOCK_RANGE,
+ _SC_MEMORY_PROTECTION,
+ _SC_MESSAGE_PASSING,
+ _SC_SEMAPHORES,
+ _SC_SHARED_MEMORY_OBJECTS,
+ _SC_AIO_LISTIO_MAX,
+ _SC_AIO_MAX,
+ _SC_AIO_PRIO_DELTA_MAX,
+ _SC_DELAYTIMER_MAX,
+ _SC_MQ_OPEN_MAX,
+ _SC_MQ_PRIO_MAX,
+ _SC_VERSION,
+ _SC_PAGESIZE,
+ _SC_RTSIG_MAX,
+ _SC_SEM_NSEMS_MAX,
+ _SC_SEM_VALUE_MAX,
+ _SC_SIGQUEUE_MAX,
+ _SC_TIMER_MAX,
+ _SC_BC_BASE_MAX,
+ _SC_BC_DIM_MAX,
+ _SC_BC_SCALE_MAX,
+ _SC_BC_STRING_MAX,
+ _SC_COLL_WEIGHTS_MAX,
+ _SC_EQUIV_CLASS_MAX,
+ _SC_EXPR_NEST_MAX,
+ _SC_LINE_MAX,
+ _SC_RE_DUP_MAX,
+ _SC_CHARCLASS_NAME_MAX,
+ _SC_2_VERSION,
+ _SC_2_C_BIND,
+ _SC_2_C_DEV,
+ _SC_2_FORT_DEV,
+ _SC_2_FORT_RUN,
+ _SC_2_SW_DEV,
+ _SC_2_LOCALEDEF,
+ _SC_PII,
+ _SC_PII_XTI,
+ _SC_PII_SOCKET,
+ _SC_PII_INTERNET,
+ _SC_PII_OSI,
+ _SC_POLL,
+ _SC_SELECT,
+ _SC_UIO_MAXIOV,
+ _SC_IOV_MAX = _SC_UIO_MAXIOV,
+ _SC_PII_INTERNET_STREAM,
+ _SC_PII_INTERNET_DGRAM,
+ _SC_PII_OSI_COTS,
+ _SC_PII_OSI_CLTS,
+ _SC_PII_OSI_M,
+ _SC_T_IOV_MAX,
+ _SC_THREADS,
+ _SC_THREAD_SAFE_FUNCTIONS,
+ _SC_GETGR_R_SIZE_MAX,
+ _SC_GETPW_R_SIZE_MAX,
+ _SC_LOGIN_NAME_MAX,
+ _SC_TTY_NAME_MAX,
+ _SC_THREAD_DESTRUCTOR_ITERATIONS,
+ _SC_THREAD_KEYS_MAX,
+ _SC_THREAD_STACK_MIN,
+ _SC_THREAD_THREADS_MAX,
+ _SC_THREAD_ATTR_STACKADDR,
+ _SC_THREAD_ATTR_STACKSIZE,
+ _SC_THREAD_PRIORITY_SCHEDULING,
+ _SC_THREAD_PRIO_INHERIT,
+ _SC_THREAD_PRIO_PROTECT,
+ _SC_THREAD_PROCESS_SHARED,
+ _SC_NPROCESSORS_CONF,
+ _SC_NPROCESSORS_ONLN,
+ _SC_PHYS_PAGES,
+ _SC_AVPHYS_PAGES,
+ _SC_ATEXIT_MAX,
+ _SC_PASS_MAX,
+ _SC_XOPEN_VERSION,
+ _SC_XOPEN_XCU_VERSION,
+ _SC_XOPEN_UNIX,
+ _SC_XOPEN_CRYPT,
+ _SC_XOPEN_ENH_I18N,
+ _SC_XOPEN_SHM,
+ _SC_2_CHAR_TERM,
+ _SC_2_C_VERSION,
+ _SC_2_UPE,
+ _SC_XOPEN_XPG2,
+ _SC_XOPEN_XPG3,
+ _SC_XOPEN_XPG4,
+ _SC_CHAR_BIT,
+ _SC_CHAR_MAX,
+ _SC_CHAR_MIN,
+ _SC_INT_MAX,
+ _SC_INT_MIN,
+ _SC_LONG_BIT,
+ _SC_WORD_BIT,
+ _SC_MB_LEN_MAX,
+ _SC_NZERO,
+ _SC_SSIZE_MAX,
+ _SC_SCHAR_MAX,
+ _SC_SCHAR_MIN,
+ _SC_SHRT_MAX,
+ _SC_SHRT_MIN,
+ _SC_UCHAR_MAX,
+ _SC_UINT_MAX,
+ _SC_ULONG_MAX,
+ _SC_USHRT_MAX,
+ _SC_NL_ARGMAX,
+ _SC_NL_LANGMAX,
+ _SC_NL_MSGMAX,
+ _SC_NL_NMAX,
+ _SC_NL_SETMAX,
+ _SC_NL_TEXTMAX,
+ _SC_XBS5_ILP32_OFF32,
+ _SC_XBS5_ILP32_OFFBIG,
+ _SC_XBS5_LP64_OFF64,
+ _SC_XBS5_LPBIG_OFFBIG,
+ _SC_XOPEN_LEGACY,
+ _SC_XOPEN_REALTIME,
+ _SC_XOPEN_REALTIME_THREADS,
+ _SC_ADVISORY_INFO,
+ _SC_BARRIERS,
+ _SC_BASE,
+ _SC_C_LANG_SUPPORT,
+ _SC_C_LANG_SUPPORT_R,
+ _SC_CLOCK_SELECTION,
+ _SC_CPUTIME,
+ _SC_THREAD_CPUTIME,
+ _SC_DEVICE_IO,
+ _SC_DEVICE_SPECIFIC,
+ _SC_DEVICE_SPECIFIC_R,
+ _SC_FD_MGMT,
+ _SC_FIFO,
+ _SC_PIPE,
+ _SC_FILE_ATTRIBUTES,
+ _SC_FILE_LOCKING,
+ _SC_FILE_SYSTEM,
+ _SC_MONOTONIC_CLOCK,
+ _SC_MULTI_PROCESS,
+ _SC_SINGLE_PROCESS,
+ _SC_NETWORKING,
+ _SC_READER_WRITER_LOCKS,
+ _SC_SPIN_LOCKS,
+ _SC_REGEXP,
+ _SC_REGEX_VERSION,
+ _SC_SHELL,
+ _SC_SIGNALS,
+ _SC_SPAWN,
+ _SC_SPORADIC_SERVER,
+ _SC_THREAD_SPORADIC_SERVER,
+ _SC_SYSTEM_DATABASE,
+ _SC_SYSTEM_DATABASE_R,
+ _SC_TIMEOUTS,
+ _SC_TYPED_MEMORY_OBJECTS,
+ _SC_USER_GROUPS,
+ _SC_USER_GROUPS_R,
+ _SC_2_PBS,
+ _SC_2_PBS_ACCOUNTING,
+ _SC_2_PBS_LOCATE,
+ _SC_2_PBS_MESSAGE,
+ _SC_2_PBS_TRACK,
+ _SC_SYMLOOP_MAX,
+ _SC_STREAMS,
+ _SC_2_PBS_CHECKPOINT,
+ _SC_V6_ILP32_OFF32,
+ _SC_V6_ILP32_OFFBIG,
+ _SC_V6_LP64_OFF64,
+ _SC_V6_LPBIG_OFFBIG,
+ _SC_HOST_NAME_MAX,
+ _SC_TRACE,
+ _SC_TRACE_EVENT_FILTER,
+ _SC_TRACE_INHERIT,
+ _SC_TRACE_LOG,
+ _SC_LEVEL1_ICACHE_SIZE,
+ _SC_LEVEL1_ICACHE_ASSOC,
+ _SC_LEVEL1_ICACHE_LINESIZE,
+ _SC_LEVEL1_DCACHE_SIZE,
+ _SC_LEVEL1_DCACHE_ASSOC,
+ _SC_LEVEL1_DCACHE_LINESIZE,
+ _SC_LEVEL2_CACHE_SIZE,
+ _SC_LEVEL2_CACHE_ASSOC,
+ _SC_LEVEL2_CACHE_LINESIZE,
+ _SC_LEVEL3_CACHE_SIZE,
+ _SC_LEVEL3_CACHE_ASSOC,
+ _SC_LEVEL3_CACHE_LINESIZE,
+ _SC_LEVEL4_CACHE_SIZE,
+ _SC_LEVEL4_CACHE_ASSOC,
+ _SC_LEVEL4_CACHE_LINESIZE,
+ _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
+ _SC_RAW_SOCKETS,
+ _SC_V7_ILP32_OFF32,
+ _SC_V7_ILP32_OFFBIG,
+ _SC_V7_LP64_OFF64,
+ _SC_V7_LPBIG_OFFBIG,
+ _SC_SS_REPL_MAX,
+ _SC_TRACE_EVENT_NAME_MAX,
+ _SC_TRACE_NAME_MAX,
+ _SC_TRACE_SYS_MAX,
+ _SC_TRACE_USER_EVENT_MAX,
+ _SC_XOPEN_STREAMS,
+ _SC_THREAD_ROBUST_PRIO_INHERIT,
+ _SC_THREAD_ROBUST_PRIO_PROTECT,
+ };
+enum
+ {
+ _CS_PATH,
+ _CS_V6_WIDTH_RESTRICTED_ENVS,
+ _CS_GNU_LIBC_VERSION,
+ _CS_GNU_LIBPTHREAD_VERSION,
+ _CS_V5_WIDTH_RESTRICTED_ENVS,
+ _CS_V7_WIDTH_RESTRICTED_ENVS,
+ _CS_LFS_CFLAGS = 1000,
+ _CS_LFS_LDFLAGS,
+ _CS_LFS_LIBS,
+ _CS_LFS_LINTFLAGS,
+ _CS_LFS64_CFLAGS,
+ _CS_LFS64_LDFLAGS,
+ _CS_LFS64_LIBS,
+ _CS_LFS64_LINTFLAGS,
+ _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
+ _CS_XBS5_ILP32_OFF32_LDFLAGS,
+ _CS_XBS5_ILP32_OFF32_LIBS,
+ _CS_XBS5_ILP32_OFF32_LINTFLAGS,
+ _CS_XBS5_ILP32_OFFBIG_CFLAGS,
+ _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
+ _CS_XBS5_ILP32_OFFBIG_LIBS,
+ _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
+ _CS_XBS5_LP64_OFF64_CFLAGS,
+ _CS_XBS5_LP64_OFF64_LDFLAGS,
+ _CS_XBS5_LP64_OFF64_LIBS,
+ _CS_XBS5_LP64_OFF64_LINTFLAGS,
+ _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
+ _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
+ _CS_XBS5_LPBIG_OFFBIG_LIBS,
+ _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
+ _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
+ _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
+ _CS_POSIX_V6_ILP32_OFF32_LIBS,
+ _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
+ _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
+ _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
+ _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
+ _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
+ _CS_POSIX_V6_LP64_OFF64_CFLAGS,
+ _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
+ _CS_POSIX_V6_LP64_OFF64_LIBS,
+ _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
+ _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
+ _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
+ _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
+ _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
+ _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
+ _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
+ _CS_POSIX_V7_ILP32_OFF32_LIBS,
+ _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
+ _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
+ _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
+ _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
+ _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
+ _CS_POSIX_V7_LP64_OFF64_CFLAGS,
+ _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
+ _CS_POSIX_V7_LP64_OFF64_LIBS,
+ _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
+ _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
+ _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
+ _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
+ _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
+ };
+extern long int pathconf (__const char *__path, int __name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__));
+extern long int sysconf (int __name) __attribute__ ((__nothrow__));
+extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__));
+extern __pid_t getpid (void) __attribute__ ((__nothrow__));
+extern __pid_t getppid (void) __attribute__ ((__nothrow__));
+extern __pid_t getpgrp (void) __attribute__ ((__nothrow__));
+extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__));
+extern __pid_t getpgid (__pid_t __pid) __attribute__ ((__nothrow__));
+extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__));
+extern int setpgrp (void) __attribute__ ((__nothrow__));
+extern __pid_t setsid (void) __attribute__ ((__nothrow__));
+extern __pid_t getsid (__pid_t __pid) __attribute__ ((__nothrow__));
+extern __uid_t getuid (void) __attribute__ ((__nothrow__));
+extern __uid_t geteuid (void) __attribute__ ((__nothrow__));
+extern __gid_t getgid (void) __attribute__ ((__nothrow__));
+extern __gid_t getegid (void) __attribute__ ((__nothrow__));
+extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int group_member (__gid_t __gid) __attribute__ ((__nothrow__));
+extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__));
+extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__));
+extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__));
+extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__));
+extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__));
+extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__));
+extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
+ __attribute__ ((__nothrow__));
+extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
+ __attribute__ ((__nothrow__));
+extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
+ __attribute__ ((__nothrow__));
+extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
+ __attribute__ ((__nothrow__));
+extern __pid_t fork (void) __attribute__ ((__nothrow__));
+extern __pid_t vfork (void) __attribute__ ((__nothrow__));
+extern char *ttyname (int __fd) __attribute__ ((__nothrow__));
+extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
+extern int isatty (int __fd) __attribute__ ((__nothrow__));
+extern int ttyslot (void) __attribute__ ((__nothrow__));
+extern int link (__const char *__from, __const char *__to)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+extern int linkat (int __fromfd, __const char *__from, int __tofd,
+ __const char *__to, int __flags)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__));
+extern int symlink (__const char *__from, __const char *__to)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+extern ssize_t readlink (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+extern int symlinkat (__const char *__from, int __tofd,
+ __const char *__to) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+extern ssize_t readlinkat (int __fd, __const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
+extern int unlink (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int unlinkat (int __fd, __const char *__name, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int rmdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__));
+extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__));
+extern char *getlogin (void);
+extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));
+extern int setlogin (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern char *optarg;
+extern int optind;
+extern int opterr;
+extern int optopt;
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ __attribute__ ((__nothrow__));
+extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int sethostname (__const char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int sethostid (long int __id) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int getdomainname (char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int setdomainname (__const char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int vhangup (void) __attribute__ ((__nothrow__));
+extern int revoke (__const char *__file) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int profil (unsigned short int *__sample_buffer, size_t __size,
+ size_t __offset, unsigned int __scale)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int acct (__const char *__name) __attribute__ ((__nothrow__));
+extern char *getusershell (void) __attribute__ ((__nothrow__));
+extern void endusershell (void) __attribute__ ((__nothrow__));
+extern void setusershell (void) __attribute__ ((__nothrow__));
+extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int chroot (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1)));
+extern int fsync (int __fd);
+extern long int gethostid (void);
+extern void sync (void) __attribute__ ((__nothrow__));
+extern int getpagesize (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int getdtablesize (void) __attribute__ ((__nothrow__));
+extern int truncate (__const char *__file, __off_t __length)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int truncate64 (__const char *__file, __off64_t __length)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int ftruncate64 (int __fd, __off64_t __length) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int brk (void *__addr) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__));
+extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__));
+extern int lockf (int __fd, int __cmd, __off_t __len) __attribute__ ((__warn_unused_result__));
+extern int lockf64 (int __fd, int __cmd, __off64_t __len) __attribute__ ((__warn_unused_result__));
+extern int fdatasync (int __fildes);
+extern char *crypt (__const char *__key, __const char *__salt)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void encrypt (char *__block, int __edflag) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void swab (__const void *__restrict __from, void *__restrict __to,
+ ssize_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes,
+ size_t __buflen) __attribute__ ((__warn_unused_result__));
+extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") __attribute__ ((__warn_unused_result__));
+extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk")
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
+read (int __fd, void *__buf, size_t __nbytes)
+{
+ if (__builtin_object_size (__buf, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__nbytes))
+ return __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0));
+ if (__nbytes > __builtin_object_size (__buf, 0))
+ return __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0));
+ }
+ return __read_alias (__fd, __buf, __nbytes);
+}
+extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes,
+ __off_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__));
+extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes,
+ __off64_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__));
+extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") __attribute__ ((__warn_unused_result__));
+extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") __attribute__ ((__warn_unused_result__));
+extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk")
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer")));
+extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk")
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
+pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
+{
+ if (__builtin_object_size (__buf, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__nbytes))
+ return __pread_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0));
+ if ( __nbytes > __builtin_object_size (__buf, 0))
+ return __pread_chk_warn (__fd, __buf, __nbytes, __offset,
+ __builtin_object_size (__buf, 0));
+ }
+ return __pread_alias (__fd, __buf, __nbytes, __offset);
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
+pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
+{
+ if (__builtin_object_size (__buf, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__nbytes))
+ return __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0));
+ if ( __nbytes > __builtin_object_size (__buf, 0))
+ return __pread64_chk_warn (__fd, __buf, __nbytes, __offset,
+ __builtin_object_size (__buf, 0));
+ }
+ return __pread64_alias (__fd, __buf, __nbytes, __offset);
+}
+extern ssize_t __readlink_chk (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len,
+ size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+extern ssize_t __readlink_alias (__const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("" "readlink") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+extern ssize_t __readlink_chk_warn (__const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("" "__readlink_chk") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t
+__attribute__ ((__nothrow__)) readlink (__const char *__restrict __path, char *__restrict __buf, size_t __len)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+ if ( __len > __builtin_object_size (__buf, 2 > 1))
+ return __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __readlink_alias (__path, __buf, __len);
+}
+extern ssize_t __readlinkat_chk (int __fd, __const char *__restrict __path,
+ char *__restrict __buf, size_t __len,
+ size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
+extern ssize_t __readlinkat_alias (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("" "readlinkat") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
+extern ssize_t __readlinkat_chk_warn (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("" "__readlinkat_chk") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t
+__attribute__ ((__nothrow__)) readlinkat (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+ if (__len > __builtin_object_size (__buf, 2 > 1))
+ return __readlinkat_chk_warn (__fd, __path, __buf, __len,
+ __builtin_object_size (__buf, 2 > 1));
+ }
+ return __readlinkat_alias (__fd, __path, __buf, __len);
+}
+extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern char *__getcwd_alias (char *__buf, size_t __size) __asm__ ("" "getcwd") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) __asm__ ("" "__getcwd_chk") __attribute__ ((__nothrow__))
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+__attribute__ ((__nothrow__)) getcwd (char *__buf, size_t __size)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__size))
+ return __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1));
+ if (__size > __builtin_object_size (__buf, 2 > 1))
+ return __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __getcwd_alias (__buf, __size);
+}
+extern char *__getwd_chk (char *__buf, size_t buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern char *__getwd_warn (char *__buf) __asm__ ("" "getwd") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char *
+__attribute__ ((__nothrow__)) getwd (char *__buf)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1));
+ return __getwd_warn (__buf);
+}
+extern size_t __confstr_chk (int __name, char *__buf, size_t __len,
+ size_t __buflen) __attribute__ ((__nothrow__));
+extern size_t __confstr_alias (int __name, char *__buf, size_t __len) __asm__ ("" "confstr") __attribute__ ((__nothrow__));
+extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) __asm__ ("" "__confstr_chk") __attribute__ ((__nothrow__))
+ __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
+__attribute__ ((__nothrow__)) confstr (int __name, char *__buf, size_t __len)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+ if (__builtin_object_size (__buf, 2 > 1) < __len)
+ return __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __confstr_alias (__name, __buf, __len);
+}
+extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int __getgroups_alias (int __size, __gid_t __list[]) __asm__ ("" "getgroups") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) __asm__ ("" "__getgroups_chk") __attribute__ ((__nothrow__))
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) getgroups (int __size, __gid_t __list[])
+{
+ if (__builtin_object_size (__list, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__size) || __size < 0)
+ return __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1));
+ if (__size * sizeof (__gid_t) > __builtin_object_size (__list, 2 > 1))
+ return __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1));
+ }
+ return __getgroups_alias (__size, __list);
+}
+extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen,
+ size_t __nreal) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ttyname_r") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (2)));
+extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ttyname_r_chk") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) ttyname_r (int __fd, char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __ttyname_r_alias (__fd, __buf, __buflen);
+}
+extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal)
+ __attribute__ ((__nonnull__ (1)));
+extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") __attribute__ ((__nonnull__ (1)));
+extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk")
+ __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+getlogin_r (char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __getlogin_r_alias (__buf, __buflen);
+}
+extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int __gethostname_alias (char *__buf, size_t __buflen) __asm__ ("" "gethostname") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__gethostname_chk") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) gethostname (char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __gethostname_alias (__buf, __buflen);
+}
+extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int __getdomainname_alias (char *__buf, size_t __buflen) __asm__ ("" "getdomainname") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getdomainname_chk") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) getdomainname (char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __getdomainname_alias (__buf, __buflen);
+}
+extern void __assert_fail (__const char *__assertion, __const char *__file,
+ unsigned int __line, __const char *__function)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern void __assert_perror_fail (int __errnum, __const char *__file,
+ unsigned int __line,
+ __const char *__function)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern void __assert (const char *__assertion, const char *__file, int __line)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+struct _IO_FILE;
+typedef struct _IO_FILE FILE;
+typedef struct _IO_FILE __FILE;
+typedef struct
+{
+ int __count;
+ union
+ {
+ unsigned int __wch;
+ char __wchb[4];
+ } __value;
+} __mbstate_t;
+typedef struct
+{
+ __off_t __pos;
+ __mbstate_t __state;
+} _G_fpos_t;
+typedef struct
+{
+ __off64_t __pos;
+ __mbstate_t __state;
+} _G_fpos64_t;
+typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
+typedef __builtin_va_list __gnuc_va_list;
+struct _IO_jump_t; struct _IO_FILE;
+typedef void _IO_lock_t;
+struct _IO_marker {
+ struct _IO_marker *_next;
+ struct _IO_FILE *_sbuf;
+ int _pos;
+};
+enum __codecvt_result
+{
+ __codecvt_ok,
+ __codecvt_partial,
+ __codecvt_error,
+ __codecvt_noconv
+};
+struct _IO_FILE {
+ int _flags;
+ char* _IO_read_ptr;
+ char* _IO_read_end;
+ char* _IO_read_base;
+ char* _IO_write_base;
+ char* _IO_write_ptr;
+ char* _IO_write_end;
+ char* _IO_buf_base;
+ char* _IO_buf_end;
+ char *_IO_save_base;
+ char *_IO_backup_base;
+ char *_IO_save_end;
+ struct _IO_marker *_markers;
+ struct _IO_FILE *_chain;
+ int _fileno;
+ int _flags2;
+ __off_t _old_offset;
+ unsigned short _cur_column;
+ signed char _vtable_offset;
+ char _shortbuf[1];
+ _IO_lock_t *_lock;
+ __off64_t _offset;
+ void *__pad1;
+ void *__pad2;
+ void *__pad3;
+ void *__pad4;
+ size_t __pad5;
+ int _mode;
+ char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+};
+typedef struct _IO_FILE _IO_FILE;
+struct _IO_FILE_plus;
+extern struct _IO_FILE_plus _IO_2_1_stdin_;
+extern struct _IO_FILE_plus _IO_2_1_stdout_;
+extern struct _IO_FILE_plus _IO_2_1_stderr_;
+typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
+typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
+ size_t __n);
+typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
+typedef int __io_close_fn (void *__cookie);
+typedef __io_read_fn cookie_read_function_t;
+typedef __io_write_fn cookie_write_function_t;
+typedef __io_seek_fn cookie_seek_function_t;
+typedef __io_close_fn cookie_close_function_t;
+typedef struct
+{
+ __io_read_fn *read;
+ __io_write_fn *write;
+ __io_seek_fn *seek;
+ __io_close_fn *close;
+} _IO_cookie_io_functions_t;
+typedef _IO_cookie_io_functions_t cookie_io_functions_t;
+struct _IO_cookie_file;
+extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
+ void *__cookie, _IO_cookie_io_functions_t __fns);
+extern int __underflow (_IO_FILE *);
+extern int __uflow (_IO_FILE *);
+extern int __overflow (_IO_FILE *, int);
+extern int _IO_getc (_IO_FILE *__fp);
+extern int _IO_putc (int __c, _IO_FILE *__fp);
+extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_peekc_locked (_IO_FILE *__fp);
+extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
+ __gnuc_va_list, int *__restrict);
+extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
+ __gnuc_va_list);
+extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
+extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
+extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
+extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
+extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
+typedef __gnuc_va_list va_list;
+typedef _G_fpos_t fpos_t;
+typedef _G_fpos64_t fpos64_t;
+extern struct _IO_FILE *stdin;
+extern struct _IO_FILE *stdout;
+extern struct _IO_FILE *stderr;
+extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
+extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
+extern int renameat (int __oldfd, __const char *__old, int __newfd,
+ __const char *__new) __attribute__ ((__nothrow__));
+extern FILE *tmpfile (void) __attribute__ ((__warn_unused_result__));
+extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__));
+extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+extern int fclose (FILE *__stream);
+extern int fflush (FILE *__stream);
+extern int fflush_unlocked (FILE *__stream);
+extern int fcloseall (void);
+extern FILE *fopen (__const char *__restrict __filename,
+ __const char *__restrict __modes) __attribute__ ((__warn_unused_result__));
+extern FILE *freopen (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern FILE *fopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes) __attribute__ ((__warn_unused_result__));
+extern FILE *freopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern FILE *fopencookie (void *__restrict __magic_cookie,
+ __const char *__restrict __modes,
+ _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+ int __modes, size_t __n) __attribute__ ((__nothrow__));
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+ size_t __size) __attribute__ ((__nothrow__));
+extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
+extern int fprintf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...);
+extern int printf (__const char *__restrict __format, ...);
+extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg);
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg) __attribute__ ((__nothrow__));
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
+ __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__));
+extern int __asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
+extern int asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
+extern int scanf (__const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__));
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__));
+extern int vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+extern int getchar (void);
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+extern int fgetc_unlocked (FILE *__stream);
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+extern int putchar (int __c);
+extern int fputc_unlocked (int __c, FILE *__stream);
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+extern int getw (FILE *__stream);
+extern int putw (int __w, FILE *__stream);
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+ __attribute__ ((__warn_unused_result__));
+extern char *gets (char *__s) __attribute__ ((__warn_unused_result__));
+extern char *fgets_unlocked (char *__restrict __s, int __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern __ssize_t __getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern __ssize_t getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern __ssize_t getline (char **__restrict __lineptr,
+ size_t *__restrict __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+extern int puts (__const char *__s);
+extern int ungetc (int __c, FILE *__stream);
+extern size_t fread (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __s) __attribute__ ((__warn_unused_result__));
+extern int fputs_unlocked (__const char *__restrict __s,
+ FILE *__restrict __stream);
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern int fseek (FILE *__stream, long int __off, int __whence);
+extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__));
+extern void rewind (FILE *__stream);
+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
+extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__));
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
+extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__));
+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
+extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern void perror (__const char *__s);
+extern int sys_nerr;
+extern __const char *__const sys_errlist[];
+extern int _sys_nerr;
+extern __const char *__const _sys_errlist[];
+extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern FILE *popen (__const char *__command, __const char *__modes) __attribute__ ((__warn_unused_result__));
+extern int pclose (FILE *__stream);
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+extern char *cuserid (char *__s);
+struct obstack;
+extern int obstack_printf (struct obstack *__restrict __obstack,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int obstack_vprintf (struct obstack *__restrict __obstack,
+ __const char *__restrict __format,
+ __gnuc_va_list __args)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
+extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
+extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
+extern __inline __attribute__ ((__gnu_inline__)) int
+getchar (void)
+{
+ return _IO_getc (stdin);
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+fgetc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+getc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+getchar_unlocked (void)
+{
+ return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+putchar (int __c)
+{
+ return _IO_putc (__c, stdout);
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+fputc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+putc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+putchar_unlocked (int __c)
+{
+ return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
+}
+extern __inline __attribute__ ((__gnu_inline__)) __ssize_t
+getline (char **__lineptr, size_t *__n, FILE *__stream)
+{
+ return __getdelim (__lineptr, __n, '\n', __stream);
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x10) != 0);
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x20) != 0);
+}
+extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,
+ __const char *__restrict __format,
+ __gnuc_va_list __ap) __attribute__ ((__nothrow__));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) sprintf (char *__restrict __s, __const char *__restrict __fmt, ...)
+{
+ return __builtin___sprintf_chk (__s, 2 - 1,
+ __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ());
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) vsprintf (char *__restrict __s, __const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+ return __builtin___vsprintf_chk (__s, 2 - 1,
+ __builtin_object_size (__s, 2 > 1), __fmt, __ap);
+}
+extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag,
+ size_t __slen, __const char *__restrict __format,
+ ...) __attribute__ ((__nothrow__));
+extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,
+ size_t __slen, __const char *__restrict __format,
+ __gnuc_va_list __ap) __attribute__ ((__nothrow__));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) snprintf (char *__restrict __s, size_t __n, __const char *__restrict __fmt, ...)
+{
+ return __builtin___snprintf_chk (__s, __n, 2 - 1,
+ __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ());
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) vsnprintf (char *__restrict __s, size_t __n, __const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+ return __builtin___vsnprintf_chk (__s, __n, 2 - 1,
+ __builtin_object_size (__s, 2 > 1), __fmt, __ap);
+}
+extern int __fprintf_chk (FILE *__restrict __stream, int __flag,
+ __const char *__restrict __format, ...);
+extern int __printf_chk (int __flag, __const char *__restrict __format, ...);
+extern int __vfprintf_chk (FILE *__restrict __stream, int __flag,
+ __const char *__restrict __format, __gnuc_va_list __ap);
+extern int __vprintf_chk (int __flag, __const char *__restrict __format,
+ __gnuc_va_list __ap);
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+fprintf (FILE *__restrict __stream, __const char *__restrict __fmt, ...)
+{
+ return __fprintf_chk (__stream, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+printf (__const char *__restrict __fmt, ...)
+{
+ return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ());
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+vprintf (__const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+ return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap);
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+vfprintf (FILE *__restrict __stream,
+ __const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+ return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap);
+}
+extern int __asprintf_chk (char **__restrict __ptr, int __flag,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__));
+extern int __vasprintf_chk (char **__restrict __ptr, int __flag,
+ __const char *__restrict __fmt, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__));
+extern int __dprintf_chk (int __fd, int __flag, __const char *__restrict __fmt,
+ ...) __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int __vdprintf_chk (int __fd, int __flag,
+ __const char *__restrict __fmt, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 3, 0)));
+extern int __obstack_printf_chk (struct obstack *__restrict __obstack,
+ int __flag, __const char *__restrict __format,
+ ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack,
+ int __flag,
+ __const char *__restrict __format,
+ __gnuc_va_list __args)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...)
+{
+ return __asprintf_chk (__ptr, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) __asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...)
+{
+ return __asprintf_chk (__ptr, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+dprintf (int __fd, __const char *__restrict __fmt, ...)
+{
+ return __dprintf_chk (__fd, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) obstack_printf (struct obstack *__restrict __obstack, __const char *__restrict __fmt, ...)
+{
+ return __obstack_printf_chk (__obstack, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) vasprintf (char **__restrict __ptr, __const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+ return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap);
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+vdprintf (int __fd, __const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+ return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap);
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) obstack_vprintf (struct obstack *__restrict __obstack, __const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+ return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt,
+ __ap);
+}
+extern char *__gets_chk (char *__str, size_t) __attribute__ ((__warn_unused_result__));
+extern char *__gets_warn (char *__str) __asm__ ("" "gets")
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use fgets or getline instead, gets can't " "specify buffer size")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+gets (char *__str)
+{
+ if (__builtin_object_size (__str, 2 > 1) != (size_t) -1)
+ return __gets_chk (__str, __builtin_object_size (__str, 2 > 1));
+ return __gets_warn (__str);
+}
+extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") __attribute__ ((__warn_unused_result__));
+extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk")
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+{
+ if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__n) || __n <= 0)
+ return __fgets_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+ if ((size_t) __n > __builtin_object_size (__s, 2 > 1))
+ return __fgets_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+ }
+ return __fgets_alias (__s, __n, __stream);
+}
+extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen,
+ size_t __size, size_t __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") __attribute__ ((__warn_unused_result__));
+extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk")
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) size_t
+fread (void *__restrict __ptr, size_t __size, size_t __n,
+ FILE *__restrict __stream)
+{
+ if (__builtin_object_size (__ptr, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__size)
+ || !__builtin_constant_p (__n)
+ || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
+ return __fread_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream);
+ if (__size * __n > __builtin_object_size (__ptr, 0))
+ return __fread_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream);
+ }
+ return __fread_alias (__ptr, __size, __n, __stream);
+}
+extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,
+ int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") __attribute__ ((__warn_unused_result__));
+extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk")
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
+{
+ if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__n) || __n <= 0)
+ return __fgets_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+ if ((size_t) __n > __builtin_object_size (__s, 2 > 1))
+ return __fgets_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+ }
+ return __fgets_unlocked_alias (__s, __n, __stream);
+}
+extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen,
+ size_t __size, size_t __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") __attribute__ ((__warn_unused_result__));
+extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk")
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) size_t
+fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
+ FILE *__restrict __stream)
+{
+ if (__builtin_object_size (__ptr, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__size)
+ || !__builtin_constant_p (__n)
+ || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
+ return __fread_unlocked_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n,
+ __stream);
+ if (__size * __n > __builtin_object_size (__ptr, 0))
+ return __fread_unlocked_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n,
+ __stream);
+ }
+ if (__builtin_constant_p (__size)
+ && __builtin_constant_p (__n)
+ && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2))
+ && __size * __n <= 8)
+ {
+ size_t __cnt = __size * __n;
+ char *__cptr = (char *) __ptr;
+ if (__cnt == 0)
+ return 0;
+ for (; __cnt > 0; --__cnt)
+ {
+ int __c = (__builtin_expect (((__stream)->_IO_read_ptr >= (__stream)->_IO_read_end), 0) ? __uflow (__stream) : *(unsigned char *) (__stream)->_IO_read_ptr++);
+ if (__c == (-1))
+ break;
+ *__cptr++ = __c;
+ }
+ return (__cptr - (char *) __ptr) / __size;
+ }
+ return __fread_unlocked_alias (__ptr, __size, __n, __stream);
+}
+typedef int wchar_t;
+union wait
+ {
+ int w_status;
+ struct
+ {
+ unsigned int __w_termsig:7;
+ unsigned int __w_coredump:1;
+ unsigned int __w_retcode:8;
+ unsigned int:16;
+ } __wait_terminated;
+ struct
+ {
+ unsigned int __w_stopval:8;
+ unsigned int __w_stopsig:8;
+ unsigned int:16;
+ } __wait_stopped;
+ };
+typedef union
+ {
+ union wait *__uptr;
+ int *__iptr;
+ } __WAIT_STATUS __attribute__ ((__transparent_union__));
+typedef struct
+ {
+ int quot;
+ int rem;
+ } div_t;
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } ldiv_t;
+__extension__ typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } lldiv_t;
+extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern double atof (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int atoi (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern long int atol (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+__extension__ extern long long int atoll (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern double strtod (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern float strtof (__const char *__restrict __nptr,
+ char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern long double strtold (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern long int strtol (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+typedef struct __locale_struct
+{
+ struct locale_data *__locales[13];
+ const unsigned short int *__ctype_b;
+ const int *__ctype_tolower;
+ const int *__ctype_toupper;
+ const char *__names[13];
+} *__locale_t;
+typedef __locale_t locale_t;
+extern long int strtol_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base,
+ __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+extern unsigned long int strtoul_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+__extension__
+extern long long int strtoll_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+__extension__
+extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+extern double strtod_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+extern float strtof_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+extern long double strtold_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+extern __inline __attribute__ ((__gnu_inline__)) double
+__attribute__ ((__nothrow__)) atof (__const char *__nptr)
+{
+ return strtod (__nptr, (char **) ((void *)0));
+}
+extern __inline __attribute__ ((__gnu_inline__)) int
+__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
+{
+ return (int) strtol (__nptr, (char **) ((void *)0), 10);
+}
+extern __inline __attribute__ ((__gnu_inline__)) long int
+__attribute__ ((__nothrow__)) atol (__const char *__nptr)
+{
+ return strtol (__nptr, (char **) ((void *)0), 10);
+}
+__extension__ extern __inline __attribute__ ((__gnu_inline__)) long long int
+__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
+{
+ return strtoll (__nptr, (char **) ((void *)0), 10);
+}
+extern char *l64a (long int __n) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern long int a64l (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern long int random (void) __attribute__ ((__nothrow__));
+extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
+extern char *initstate (unsigned int __seed, char *__statebuf,
+ size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+struct random_data
+ {
+ int32_t *fptr;
+ int32_t *rptr;
+ int32_t *state;
+ int rand_type;
+ int rand_deg;
+ int rand_sep;
+ int32_t *end_ptr;
+ };
+extern int random_r (struct random_data *__restrict __buf,
+ int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+ size_t __statelen,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int rand (void) __attribute__ ((__nothrow__));
+extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
+extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
+extern double drand48 (void) __attribute__ ((__nothrow__));
+extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern long int lrand48 (void) __attribute__ ((__nothrow__));
+extern long int nrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern long int mrand48 (void) __attribute__ ((__nothrow__));
+extern long int jrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+struct drand48_data
+ {
+ unsigned short int __x[3];
+ unsigned short int __old_x[3];
+ unsigned short int __c;
+ unsigned short int __init;
+ unsigned long long int __a;
+ };
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int seed48_r (unsigned short int __seed16v[3],
+ struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int lcong48_r (unsigned short int __param[7],
+ struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+extern void *calloc (size_t __nmemb, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+extern void *realloc (void *__ptr, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern void free (void *__ptr) __attribute__ ((__nothrow__));
+extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
+extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
+extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int at_quick_exit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern void quick_exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern char *__secure_getenv (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
+extern int clearenv (void) __attribute__ ((__nothrow__));
+extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int system (__const char *__command) __attribute__ ((__warn_unused_result__));
+extern char *canonicalize_file_name (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern char *realpath (__const char *__restrict __name,
+ char *__restrict __resolved) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+typedef __compar_fn_t comparison_fn_t;
+typedef int (*__compar_d_fn_t) (__const void *, __const void *, void *);
+extern void *bsearch (__const void *__key, __const void *__base,
+ size_t __nmemb, size_t __size, __compar_fn_t __compar)
+ __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__));
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+ __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
+ __compar_d_fn_t __compar, void *__arg)
+ __attribute__ ((__nonnull__ (1, 4)));
+extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+__extension__ extern long long int llabs (long long int __x)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+extern div_t div (int __numer, int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+extern ldiv_t ldiv (long int __numer, long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+__extension__ extern lldiv_t lldiv (long long int __numer,
+ long long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
+extern char *qecvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+extern char *qfcvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+extern char *qgcvt (long double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
+extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qecvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qfcvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int mbtowc (wchar_t *__restrict __pwc,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern size_t mbstowcs (wchar_t *__restrict __pwcs,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
+extern size_t wcstombs (char *__restrict __s,
+ __const wchar_t *__restrict __pwcs, size_t __n)
+ __attribute__ ((__nothrow__));
+extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int getsubopt (char **__restrict __optionp,
+ char *__const *__restrict __tokens,
+ char **__restrict __valuep)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__));
+extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__));
+extern int grantpt (int __fd) __attribute__ ((__nothrow__));
+extern int unlockpt (int __fd) __attribute__ ((__nothrow__));
+extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int getpt (void);
+extern int getloadavg (double __loadavg[], int __nelem)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern char *__realpath_chk (__const char *__restrict __name,
+ char *__restrict __resolved,
+ size_t __resolvedlen) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern char *__realpath_alias (__const char *__restrict __name, char *__restrict __resolved) __asm__ ("" "realpath") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern char *__realpath_chk_warn (__const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) __asm__ ("" "__realpath_chk") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__))
+ __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) char *
+__attribute__ ((__nothrow__)) realpath (__const char *__restrict __name, char *__restrict __resolved)
+{
+ if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1)
+ {
+ if (__builtin_object_size (__resolved, 2 > 1) < 4096)
+ return __realpath_chk_warn (__name, __resolved, __builtin_object_size (__resolved, 2 > 1));
+ return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1));
+ }
+ return __realpath_alias (__name, __resolved);
+}
+extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
+ size_t __nreal) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ptsname_r") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (2)));
+extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ptsname_r_chk") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) int
+__attribute__ ((__nothrow__)) ptsname_r (int __fd, char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __ptsname_r_alias (__fd, __buf, __buflen);
+}
+extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int __wctomb_alias (char *__s, wchar_t __wchar) __asm__ ("" "wctomb") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) __attribute__ ((__warn_unused_result__)) int
+__attribute__ ((__nothrow__)) wctomb (char *__s, wchar_t __wchar)
+{
+ if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1))
+ return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1));
+ return __wctomb_alias (__s, __wchar);
+}
+extern size_t __mbstowcs_chk (wchar_t *__restrict __dst,
+ __const char *__restrict __src,
+ size_t __len, size_t __dstlen) __attribute__ ((__nothrow__));
+extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len) __asm__ ("" "mbstowcs") __attribute__ ((__nothrow__));
+extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__mbstowcs_chk") __attribute__ ((__nothrow__))
+ __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
+__attribute__ ((__nothrow__)) mbstowcs (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len)
+{
+ if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __mbstowcs_chk (__dst, __src, __len,
+ __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
+ if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t))
+ return __mbstowcs_chk_warn (__dst, __src, __len,
+ __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
+ }
+ return __mbstowcs_alias (__dst, __src, __len);
+}
+extern size_t __wcstombs_chk (char *__restrict __dst,
+ __const wchar_t *__restrict __src,
+ size_t __len, size_t __dstlen) __attribute__ ((__nothrow__));
+extern size_t __wcstombs_alias (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len) __asm__ ("" "wcstombs") __attribute__ ((__nothrow__));
+extern size_t __wcstombs_chk_warn (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__wcstombs_chk") __attribute__ ((__nothrow__))
+ __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) size_t
+__attribute__ ((__nothrow__)) wcstombs (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len)
+{
+ if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
+ if (__len > __builtin_object_size (__dst, 2 > 1))
+ return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
+ }
+ return __wcstombs_alias (__dst, __src, __len);
+}
+extern void *memcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memmove (void *__dest, __const void *__src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
+ int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern void *rawmemchr (__const void *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern void *memrchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
+ size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strcmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strcoll (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strxfrm (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
+ __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+extern char *strdup (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+extern char *strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+extern char *strchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strrchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strchrnul (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern size_t strcspn (__const char *__s, __const char *__reject)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strspn (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strpbrk (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strstr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *__strtok_r (char *__restrict __s,
+ __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern char *strcasestr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memmem (__const void *__haystack, size_t __haystacklen,
+ __const void *__needle, size_t __needlelen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
+extern void *__mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strlen (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern size_t strnlen (__const char *__string, size_t __maxlen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
+extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__));
+extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void bcopy (__const void *__src, void *__dest, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *index (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *rindex (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+__extension__ extern int ffsll (long long int __ll)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int strcasecmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strcasecmp_l (__const char *__s1, __const char *__s2,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+extern int strncasecmp_l (__const char *__s1, __const char *__s2,
+ size_t __n, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
+extern char *strsep (char **__restrict __stringp,
+ __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strsignal (int __sig) __attribute__ ((__nothrow__));
+extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *__stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strverscmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void *__rawmemchr (const void *__s, int __c);
+extern __inline __attribute__ ((__gnu_inline__)) size_t __strcspn_c1 (__const char *__s, int __reject);
+extern __inline __attribute__ ((__gnu_inline__)) size_t
+__strcspn_c1 (__const char *__s, int __reject)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject)
+ ++__result;
+ return __result;
+}
+extern __inline __attribute__ ((__gnu_inline__)) size_t __strcspn_c2 (__const char *__s, int __reject1,
+ int __reject2);
+extern __inline __attribute__ ((__gnu_inline__)) size_t
+__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2)
+ ++__result;
+ return __result;
+}
+extern __inline __attribute__ ((__gnu_inline__)) size_t __strcspn_c3 (__const char *__s, int __reject1,
+ int __reject2, int __reject3);
+extern __inline __attribute__ ((__gnu_inline__)) size_t
+__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
+ int __reject3)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2 && __s[__result] != __reject3)
+ ++__result;
+ return __result;
+}
+extern __inline __attribute__ ((__gnu_inline__)) size_t __strspn_c1 (__const char *__s, int __accept);
+extern __inline __attribute__ ((__gnu_inline__)) size_t
+__strspn_c1 (__const char *__s, int __accept)
+{
+ register size_t __result = 0;
+ while (__s[__result] == __accept)
+ ++__result;
+ return __result;
+}
+extern __inline __attribute__ ((__gnu_inline__)) size_t __strspn_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline __attribute__ ((__gnu_inline__)) size_t
+__strspn_c2 (__const char *__s, int __accept1, int __accept2)
+{
+ register size_t __result = 0;
+ while (__s[__result] == __accept1 || __s[__result] == __accept2)
+ ++__result;
+ return __result;
+}
+extern __inline __attribute__ ((__gnu_inline__)) size_t __strspn_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline __attribute__ ((__gnu_inline__)) size_t
+__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
+{
+ register size_t __result = 0;
+ while (__s[__result] == __accept1 || __s[__result] == __accept2
+ || __s[__result] == __accept3)
+ ++__result;
+ return __result;
+}
+extern __inline __attribute__ ((__gnu_inline__)) char *__strpbrk_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline __attribute__ ((__gnu_inline__)) char *
+__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
+{
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+extern __inline __attribute__ ((__gnu_inline__)) char *__strpbrk_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline __attribute__ ((__gnu_inline__)) char *
+__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
+ int __accept3)
+{
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
+ && *__s != __accept3)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+extern __inline __attribute__ ((__gnu_inline__)) char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
+extern __inline __attribute__ ((__gnu_inline__)) char *
+__strtok_r_1c (char *__s, char __sep, char **__nextp)
+{
+ char *__result;
+ if (__s == ((void *)0))
+ __s = *__nextp;
+ while (*__s == __sep)
+ ++__s;
+ __result = ((void *)0);
+ if (*__s != '\0')
+ {
+ __result = __s++;
+ while (*__s != '\0')
+ if (*__s++ == __sep)
+ {
+ __s[-1] = '\0';
+ break;
+ }
+ }
+ *__nextp = __s;
+ return __result;
+}
+extern char *__strsep_g (char **__stringp, __const char *__delim);
+extern __inline __attribute__ ((__gnu_inline__)) char *__strsep_1c (char **__s, char __reject);
+extern __inline __attribute__ ((__gnu_inline__)) char *
+__strsep_1c (char **__s, char __reject)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
+ *(*__s)++ = '\0';
+ return __retval;
+}
+extern __inline __attribute__ ((__gnu_inline__)) char *__strsep_2c (char **__s, char __reject1, char __reject2);
+extern __inline __attribute__ ((__gnu_inline__)) char *
+__strsep_2c (char **__s, char __reject1, char __reject2)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+extern __inline __attribute__ ((__gnu_inline__)) char *__strsep_3c (char **__s, char __reject1, char __reject2,
+ char __reject3);
+extern __inline __attribute__ ((__gnu_inline__)) char *
+__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+extern char *__strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+extern void __warn_memset_zero_len (void) __attribute__((__warning__ ("memset used with constant zero length parameter; this could be due to transposed parameters")));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+__attribute__ ((__nothrow__)) memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __len)
+{
+ return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+__attribute__ ((__nothrow__)) memmove (void *__restrict __dest, __const void *__restrict __src, size_t __len)
+{
+ return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+__attribute__ ((__nothrow__)) mempcpy (void *__restrict __dest, __const void *__restrict __src, size_t __len)
+{
+ return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void *
+__attribute__ ((__nothrow__)) memset (void *__dest, int __ch, size_t __len)
+{
+ if (__builtin_constant_p (__len) && __len == 0)
+ {
+ __warn_memset_zero_len ();
+ return __dest;
+ }
+ return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0));
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void
+__attribute__ ((__nothrow__)) bcopy (__const void *__restrict __src, void *__restrict __dest, size_t __len)
+{
+ (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) void
+__attribute__ ((__nothrow__)) bzero (void *__dest, size_t __len)
+{
+ (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0));
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+__attribute__ ((__nothrow__)) strcpy (char *__restrict __dest, __const char *__restrict __src)
+{
+ return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+__attribute__ ((__nothrow__)) stpcpy (char *__restrict __dest, __const char *__restrict __src)
+{
+ return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+__attribute__ ((__nothrow__)) strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __len)
+{
+ return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
+}
+extern char *__stpncpy_chk (char *__dest, __const char *__src, size_t __n,
+ size_t __destlen) __attribute__ ((__nothrow__));
+extern char *__stpncpy_alias (char *__dest, __const char *__src, size_t __n) __asm__ ("" "stpncpy") __attribute__ ((__nothrow__));
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+__attribute__ ((__nothrow__)) stpncpy (char *__dest, __const char *__src, size_t __n)
+{
+ if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1
+ && (!__builtin_constant_p (__n) || __n <= __builtin_object_size (__dest, 2 > 1)))
+ return __stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1));
+ return __stpncpy_alias (__dest, __src, __n);
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+__attribute__ ((__nothrow__)) strcat (char *__restrict __dest, __const char *__restrict __src)
+{
+ return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
+}
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__gnu_inline__, __artificial__)) char *
+__attribute__ ((__nothrow__)) strncat (char *__restrict __dest, __const char *__restrict __src, size_t __len)
+{
+ return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
+}
+static inline void* PA_ALIGN_PTR(const void *p) {
+ return (void*) (((size_t) p) & ~(sizeof(void*) - 1));
+}
+static inline size_t PA_ALIGN(size_t l) {
+ return ((l + sizeof(void*) - 1) & ~(sizeof(void*) - 1));
+}
+static inline void* PA_PAGE_ALIGN_PTR(const void *p) {
+ return (void*) (((size_t) p) & ~(((size_t) (sysconf(_SC_PAGESIZE))) - 1));
+}
+static inline size_t PA_PAGE_ALIGN(size_t l) {
+ return (l + ((size_t) (sysconf(_SC_PAGESIZE))) - 1) & ~(((size_t) (sysconf(_SC_PAGESIZE))) - 1);
+}
+typedef _Bool pa_bool_t;
+typedef enum pa_log_target {
+ PA_LOG_STDERR,
+ PA_LOG_SYSLOG,
+ PA_LOG_NULL,
+ PA_LOG_TARGET_MAX
+} pa_log_target_t;
+typedef enum pa_log_level {
+ PA_LOG_ERROR = 0,
+ PA_LOG_WARN = 1,
+ PA_LOG_NOTICE = 2,
+ PA_LOG_INFO = 3,
+ PA_LOG_DEBUG = 4,
+ PA_LOG_LEVEL_MAX
+} pa_log_level_t;
+typedef enum pa_log_flags {
+ PA_LOG_COLORS = 0x01,
+ PA_LOG_PRINT_TIME = 0x02,
+ PA_LOG_PRINT_FILE = 0x04,
+ PA_LOG_PRINT_META = 0x08,
+ PA_LOG_PRINT_LEVEL = 0x10,
+} pa_log_flags_t;
+typedef enum pa_log_merge {
+ PA_LOG_SET,
+ PA_LOG_UNSET,
+ PA_LOG_RESET
+} pa_log_merge_t;
+void pa_log_set_ident(const char *p);
+void pa_log_set_target(pa_log_target_t t);
+void pa_log_set_level(pa_log_level_t l);
+void pa_log_set_flags(pa_log_flags_t flags, pa_log_merge_t merge);
+void pa_log_set_show_backtrace(unsigned nlevels);
+void pa_log_set_skip_backtrace(unsigned nlevels);
+void pa_log_level_meta(
+ pa_log_level_t level,
+ const char*file,
+ int line,
+ const char *func,
+ const char *format, ...) __attribute__ ((format (printf, 5, 6)));
+void pa_log_levelv_meta(
+ pa_log_level_t level,
+ const char*file,
+ int line,
+ const char *func,
+ const char *format,
+ va_list ap);
+void pa_log_level(
+ pa_log_level_t level,
+ const char *format, ...) __attribute__ ((format (printf, 2, 3)));
+void pa_log_levelv(
+ pa_log_level_t level,
+ const char *format,
+ va_list ap);
+pa_bool_t pa_log_ratelimit(void);
+unsigned char st_13linear2alaw(int16_t pcm_val);
+int16_t st_alaw2linear16(unsigned char);
+unsigned char st_14linear2ulaw(int16_t pcm_val);
+int16_t st_ulaw2linear16(unsigned char);
+enum __rlimit_resource
+{
+ RLIMIT_CPU = 0,
+ RLIMIT_FSIZE = 1,
+ RLIMIT_DATA = 2,
+ RLIMIT_STACK = 3,
+ RLIMIT_CORE = 4,
+ __RLIMIT_RSS = 5,
+ RLIMIT_NOFILE = 7,
+ __RLIMIT_OFILE = RLIMIT_NOFILE,
+ RLIMIT_AS = 9,
+ __RLIMIT_NPROC = 6,
+ __RLIMIT_MEMLOCK = 8,
+ __RLIMIT_LOCKS = 10,
+ __RLIMIT_SIGPENDING = 11,
+ __RLIMIT_MSGQUEUE = 12,
+ __RLIMIT_NICE = 13,
+ __RLIMIT_RTPRIO = 14,
+ __RLIMIT_NLIMITS = 15,
+ __RLIM_NLIMITS = __RLIMIT_NLIMITS
+};
+typedef __rlim_t rlim_t;
+typedef __rlim64_t rlim64_t;
+struct rlimit
+ {
+ rlim_t rlim_cur;
+ rlim_t rlim_max;
+ };
+struct rlimit64
+ {
+ rlim64_t rlim_cur;
+ rlim64_t rlim_max;
+ };
+enum __rusage_who
+{
+ RUSAGE_SELF = 0,
+ RUSAGE_CHILDREN = -1
+ ,
+ RUSAGE_THREAD = 1
+};
+struct rusage
+ {
+ struct timeval ru_utime;
+ struct timeval ru_stime;
+ long int ru_maxrss;
+ long int ru_ixrss;
+ long int ru_idrss;
+ long int ru_isrss;
+ long int ru_minflt;
+ long int ru_majflt;
+ long int ru_nswap;
+ long int ru_inblock;
+ long int ru_oublock;
+ long int ru_msgsnd;
+ long int ru_msgrcv;
+ long int ru_nsignals;
+ long int ru_nvcsw;
+ long int ru_nivcsw;
+ };
+enum __priority_which
+{
+ PRIO_PROCESS = 0,
+ PRIO_PGRP = 1,
+ PRIO_USER = 2
+};
+typedef enum __rlimit_resource __rlimit_resource_t;
+typedef enum __rusage_who __rusage_who_t;
+typedef enum __priority_which __priority_which_t;
+extern int getrlimit (__rlimit_resource_t __resource,
+ struct rlimit *__rlimits) __attribute__ ((__nothrow__));
+extern int getrlimit64 (__rlimit_resource_t __resource,
+ struct rlimit64 *__rlimits) __attribute__ ((__nothrow__));
+extern int setrlimit (__rlimit_resource_t __resource,
+ __const struct rlimit *__rlimits) __attribute__ ((__nothrow__));
+extern int setrlimit64 (__rlimit_resource_t __resource,
+ __const struct rlimit64 *__rlimits) __attribute__ ((__nothrow__));
+extern int getrusage (__rusage_who_t __who, struct rusage *__usage) __attribute__ ((__nothrow__));
+extern int getpriority (__priority_which_t __which, id_t __who) __attribute__ ((__nothrow__));
+extern int setpriority (__priority_which_t __which, id_t __who, int __prio)
+ __attribute__ ((__nothrow__));
+struct timeval;
+void pa_make_fd_nonblock(int fd);
+void pa_make_fd_cloexec(int fd);
+int pa_make_secure_dir(const char* dir, mode_t m, uid_t uid, gid_t gid);
+int pa_make_secure_parent_dir(const char *fn, mode_t, uid_t uid, gid_t gid);
+ssize_t pa_read(int fd, void *buf, size_t count, int *type);
+ssize_t pa_write(int fd, const void *buf, size_t count, int *type);
+ssize_t pa_loop_read(int fd, void*data, size_t size, int *type);
+ssize_t pa_loop_write(int fd, const void*data, size_t size, int *type);
+int pa_close(int fd);
+void pa_check_signal_is_blocked(int sig);
+char *pa_sprintf_malloc(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
+char *pa_vsprintf_malloc(const char *format, va_list ap);
+char *pa_strlcpy(char *b, const char *s, size_t l);
+char *pa_parent_dir(const char *fn);
+int pa_make_realtime(int rtprio);
+int pa_raise_priority(int nice_level);
+void pa_reset_priority(void);
+int pa_parse_boolean(const char *s) __attribute__ ((pure));
+static inline const char *pa_yes_no(pa_bool_t b) {
+ return b ? "yes" : "no";
+}
+static inline const char *pa_strnull(const char *x) {
+ return x ? x : "(null)";
+}
+static inline const char *pa_strempty(const char *x) {
+ return x ? x : "";
+}
+static inline const char *pa_strna(const char *x) {
+ return x ? x : "n/a";
+}
+char *pa_split(const char *c, const char*delimiters, const char **state);
+char *pa_split_spaces(const char *c, const char **state);
+char *pa_strip_nl(char *s);
+const char *pa_sig2str(int sig) __attribute__ ((pure));
+int pa_own_uid_in_group(const char *name, gid_t *gid);
+int pa_uid_in_group(uid_t uid, const char *name);
+gid_t pa_get_gid_of_group(const char *name);
+int pa_check_in_group(gid_t g);
+int pa_lock_fd(int fd, int b);
+int pa_lock_lockfile(const char *fn);
+int pa_unlock_lockfile(const char *fn, int fd);
+char *pa_hexstr(const uint8_t* d, size_t dlength, char *s, size_t slength);
+size_t pa_parsehex(const char *p, uint8_t *d, size_t dlength);
+pa_bool_t pa_startswith(const char *s, const char *pfx) __attribute__ ((pure));
+pa_bool_t pa_endswith(const char *s, const char *sfx) __attribute__ ((pure));
+FILE *pa_open_config_file(const char *global, const char *local, const char *env, char **result);
+char* pa_find_config_file(const char *global, const char *local, const char *env);
+char *pa_get_runtime_dir(void);
+char *pa_get_state_dir(void);
+char *pa_get_home_dir_malloc(void);
+char *pa_get_binary_name_malloc(void);
+char *pa_runtime_path(const char *fn);
+char *pa_state_path(const char *fn, pa_bool_t prepend_machine_id);
+int pa_atoi(const char *s, int32_t *ret_i);
+int pa_atou(const char *s, uint32_t *ret_u);
+int pa_atod(const char *s, double *ret_d);
+size_t pa_snprintf(char *str, size_t size, const char *format, ...);
+size_t pa_vsnprintf(char *str, size_t size, const char *format, va_list ap);
+char *pa_truncate_utf8(char *c, size_t l);
+int pa_match(const char *expr, const char *v);
+char *pa_getcwd(void);
+char *pa_make_path_absolute(const char *p);
+pa_bool_t pa_is_path_absolute(const char *p);
+void *pa_will_need(const void *p, size_t l);
+static inline int pa_is_power_of_two(unsigned n) {
+ return !(n & (n - 1));
+}
+static inline unsigned pa_ulog2(unsigned n) {
+ if (n <= 1)
+ return 0;
+ return 8U * (unsigned) sizeof(unsigned) - (unsigned) __builtin_clz(n) - 1;
+}
+static inline unsigned pa_make_power_of_two(unsigned n) {
+ if (pa_is_power_of_two(n))
+ return n;
+ return 1U << (pa_ulog2(n) + 1);
+}
+void pa_close_pipe(int fds[2]);
+char *pa_readlink(const char *p);
+int pa_close_all(int except_fd, ...);
+int pa_close_allv(const int except_fds[]);
+int pa_unblock_sigs(int except, ...);
+int pa_unblock_sigsv(const int except[]);
+int pa_reset_sigs(int except, ...);
+int pa_reset_sigsv(const int except[]);
+void pa_set_env(const char *key, const char *value);
+void pa_set_env_and_record(const char *key, const char *value);
+void pa_unset_env_recorded(void);
+pa_bool_t pa_in_system_mode(void);
+char *pa_get_host_name_malloc(void);
+char *pa_get_user_name_malloc(void);
+char *pa_machine_id(void);
+char *pa_session_id(void);
+char *pa_uname_string(void);
+pa_bool_t pa_in_valgrind(void);
+unsigned pa_gcd(unsigned a, unsigned b);
+void pa_reduce(unsigned *num, unsigned *den);
+unsigned pa_ncpus(void);
+char *pa_replace(const char*s, const char*a, const char *b);
+char *pa_unescape(char *p);
+char *pa_realpath(const char *path);
+void pa_disable_sigpipe(void);
+void pa_xfreev(void**a);
+static inline void pa_xstrfreev(char **a) {
+ pa_xfreev((void**) a);
+}
+char **pa_split_spaces_strv(const char *s);
+char* pa_maybe_prefix_path(const char *path, const char *prefix);
+size_t pa_pipe_buf(int fd);
+void pa_reset_personality(void);
+const char *pa_get_temp_dir(void);
+typedef enum pa_cpu_x86_flag {
+ PA_CPU_X86_MMX = (1 << 0),
+ PA_CPU_X86_MMXEXT = (1 << 1),
+ PA_CPU_X86_SSE = (1 << 2),
+ PA_CPU_X86_SSE2 = (1 << 3),
+ PA_CPU_X86_SSE3 = (1 << 4),
+ PA_CPU_X86_SSSE3 = (1 << 5),
+ PA_CPU_X86_SSE4_1 = (1 << 6),
+ PA_CPU_X86_SSE4_2 = (1 << 7),
+ PA_CPU_X86_3DNOW = (1 << 8),
+ PA_CPU_X86_3DNOWEXT = (1 << 9)
+} pa_cpu_x86_flag_t;
+void pa_cpu_init_x86 (void);
+typedef int64_t pa_reg_x86;
+void pa_volume_func_init_mmx(pa_cpu_x86_flag_t flags);
+void pa_volume_func_init_sse(pa_cpu_x86_flag_t flags);
+void pa_remap_func_init_mmx(pa_cpu_x86_flag_t flags);
+void pa_remap_func_init_sse(pa_cpu_x86_flag_t flags);
+void pa_convert_func_init_sse (pa_cpu_x86_flag_t flags);
+typedef enum pa_channel_position {
+ PA_CHANNEL_POSITION_INVALID = -1,
+ PA_CHANNEL_POSITION_MONO = 0,
+ PA_CHANNEL_POSITION_FRONT_LEFT,
+ PA_CHANNEL_POSITION_FRONT_RIGHT,
+ PA_CHANNEL_POSITION_FRONT_CENTER,
+ PA_CHANNEL_POSITION_LEFT = PA_CHANNEL_POSITION_FRONT_LEFT,
+ PA_CHANNEL_POSITION_RIGHT = PA_CHANNEL_POSITION_FRONT_RIGHT,
+ PA_CHANNEL_POSITION_CENTER = PA_CHANNEL_POSITION_FRONT_CENTER,
+ PA_CHANNEL_POSITION_REAR_CENTER,
+ PA_CHANNEL_POSITION_REAR_LEFT,
+ PA_CHANNEL_POSITION_REAR_RIGHT,
+ PA_CHANNEL_POSITION_LFE,
+ PA_CHANNEL_POSITION_SUBWOOFER = PA_CHANNEL_POSITION_LFE,
+ PA_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER,
+ PA_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER,
+ PA_CHANNEL_POSITION_SIDE_LEFT,
+ PA_CHANNEL_POSITION_SIDE_RIGHT,
+ PA_CHANNEL_POSITION_AUX0,
+ PA_CHANNEL_POSITION_AUX1,
+ PA_CHANNEL_POSITION_AUX2,
+ PA_CHANNEL_POSITION_AUX3,
+ PA_CHANNEL_POSITION_AUX4,
+ PA_CHANNEL_POSITION_AUX5,
+ PA_CHANNEL_POSITION_AUX6,
+ PA_CHANNEL_POSITION_AUX7,
+ PA_CHANNEL_POSITION_AUX8,
+ PA_CHANNEL_POSITION_AUX9,
+ PA_CHANNEL_POSITION_AUX10,
+ PA_CHANNEL_POSITION_AUX11,
+ PA_CHANNEL_POSITION_AUX12,
+ PA_CHANNEL_POSITION_AUX13,
+ PA_CHANNEL_POSITION_AUX14,
+ PA_CHANNEL_POSITION_AUX15,
+ PA_CHANNEL_POSITION_AUX16,
+ PA_CHANNEL_POSITION_AUX17,
+ PA_CHANNEL_POSITION_AUX18,
+ PA_CHANNEL_POSITION_AUX19,
+ PA_CHANNEL_POSITION_AUX20,
+ PA_CHANNEL_POSITION_AUX21,
+ PA_CHANNEL_POSITION_AUX22,
+ PA_CHANNEL_POSITION_AUX23,
+ PA_CHANNEL_POSITION_AUX24,
+ PA_CHANNEL_POSITION_AUX25,
+ PA_CHANNEL_POSITION_AUX26,
+ PA_CHANNEL_POSITION_AUX27,
+ PA_CHANNEL_POSITION_AUX28,
+ PA_CHANNEL_POSITION_AUX29,
+ PA_CHANNEL_POSITION_AUX30,
+ PA_CHANNEL_POSITION_AUX31,
+ PA_CHANNEL_POSITION_TOP_CENTER,
+ PA_CHANNEL_POSITION_TOP_FRONT_LEFT,
+ PA_CHANNEL_POSITION_TOP_FRONT_RIGHT,
+ PA_CHANNEL_POSITION_TOP_FRONT_CENTER,
+ PA_CHANNEL_POSITION_TOP_REAR_LEFT,
+ PA_CHANNEL_POSITION_TOP_REAR_RIGHT,
+ PA_CHANNEL_POSITION_TOP_REAR_CENTER,
+ PA_CHANNEL_POSITION_MAX
+} pa_channel_position_t;
+typedef uint64_t pa_channel_position_mask_t;
+typedef enum pa_channel_map_def {
+ PA_CHANNEL_MAP_AIFF,
+ PA_CHANNEL_MAP_ALSA,
+ PA_CHANNEL_MAP_AUX,
+ PA_CHANNEL_MAP_WAVEEX,
+ PA_CHANNEL_MAP_OSS,
+ PA_CHANNEL_MAP_DEF_MAX,
+ PA_CHANNEL_MAP_DEFAULT = PA_CHANNEL_MAP_AIFF
+} pa_channel_map_def_t;
+typedef struct pa_channel_map {
+ uint8_t channels;
+ pa_channel_position_t map[32U];
+} pa_channel_map;
+pa_channel_map* pa_channel_map_init(pa_channel_map *m);
+pa_channel_map* pa_channel_map_init_mono(pa_channel_map *m);
+pa_channel_map* pa_channel_map_init_stereo(pa_channel_map *m);
+pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, pa_channel_map_def_t def);
+pa_channel_map* pa_channel_map_init_extend(pa_channel_map *m, unsigned channels, pa_channel_map_def_t def);
+const char* pa_channel_position_to_string(pa_channel_position_t pos) __attribute__ ((pure));
+pa_channel_position_t pa_channel_position_from_string(const char *s) __attribute__ ((pure));
+const char* pa_channel_position_to_pretty_string(pa_channel_position_t pos);
+char* pa_channel_map_snprint(char *s, size_t l, const pa_channel_map *map);
+pa_channel_map *pa_channel_map_parse(pa_channel_map *map, const char *s);
+int pa_channel_map_equal(const pa_channel_map *a, const pa_channel_map *b) __attribute__ ((pure));
+int pa_channel_map_valid(const pa_channel_map *map) __attribute__ ((pure));
+int pa_channel_map_compatible(const pa_channel_map *map, const pa_sample_spec *ss) __attribute__ ((pure));
+int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) __attribute__ ((pure));
+int pa_channel_map_can_balance(const pa_channel_map *map) __attribute__ ((pure));
+int pa_channel_map_can_fade(const pa_channel_map *map) __attribute__ ((pure));
+const char* pa_channel_map_to_name(const pa_channel_map *map) __attribute__ ((pure));
+const char* pa_channel_map_to_pretty_name(const pa_channel_map *map) __attribute__ ((pure));
+int pa_channel_map_has_position(const pa_channel_map *map, pa_channel_position_t p) __attribute__ ((pure));
+pa_channel_position_mask_t pa_channel_map_mask(const pa_channel_map *map) __attribute__ ((pure));
+typedef uint32_t pa_volume_t;
+typedef struct pa_cvolume {
+ uint8_t channels;
+ pa_volume_t values[32U];
+} pa_cvolume;
+int pa_cvolume_equal(const pa_cvolume *a, const pa_cvolume *b) __attribute__ ((pure));
+pa_cvolume* pa_cvolume_init(pa_cvolume *a);
+pa_cvolume* pa_cvolume_set(pa_cvolume *a, unsigned channels, pa_volume_t v);
+char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c);
+char *pa_sw_cvolume_snprint_dB(char *s, size_t l, const pa_cvolume *c);
+char *pa_volume_snprint(char *s, size_t l, pa_volume_t v);
+char *pa_sw_volume_snprint_dB(char *s, size_t l, pa_volume_t v);
+pa_volume_t pa_cvolume_avg(const pa_cvolume *a) __attribute__ ((pure));
+pa_volume_t pa_cvolume_avg_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) __attribute__ ((pure));
+pa_volume_t pa_cvolume_max(const pa_cvolume *a) __attribute__ ((pure));
+pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) __attribute__ ((pure));
+pa_volume_t pa_cvolume_min(const pa_cvolume *a) __attribute__ ((pure));
+pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) __attribute__ ((pure));
+int pa_cvolume_valid(const pa_cvolume *v) __attribute__ ((pure));
+int pa_cvolume_channels_equal_to(const pa_cvolume *a, pa_volume_t v) __attribute__ ((pure));
+pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) __attribute__ ((const));
+pa_cvolume *pa_sw_cvolume_multiply(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
+pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b);
+pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) __attribute__ ((const));
+pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
+pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b);
+pa_volume_t pa_sw_volume_from_dB(double f) __attribute__ ((const));
+double pa_sw_volume_to_dB(pa_volume_t v) __attribute__ ((const));
+pa_volume_t pa_sw_volume_from_linear(double v) __attribute__ ((const));
+double pa_sw_volume_to_linear(pa_volume_t v) __attribute__ ((const));
+pa_cvolume *pa_cvolume_remap(pa_cvolume *v, const pa_channel_map *from, const pa_channel_map *to);
+int pa_cvolume_compatible(const pa_cvolume *v, const pa_sample_spec *ss) __attribute__ ((pure));
+int pa_cvolume_compatible_with_channel_map(const pa_cvolume *v, const pa_channel_map *cm) __attribute__ ((pure));
+float pa_cvolume_get_balance(const pa_cvolume *v, const pa_channel_map *map) __attribute__ ((pure));
+pa_cvolume* pa_cvolume_set_balance(pa_cvolume *v, const pa_channel_map *map, float new_balance);
+float pa_cvolume_get_fade(const pa_cvolume *v, const pa_channel_map *map) __attribute__ ((pure));
+pa_cvolume* pa_cvolume_set_fade(pa_cvolume *v, const pa_channel_map *map, float new_fade);
+pa_cvolume* pa_cvolume_scale(pa_cvolume *v, pa_volume_t max);
+pa_cvolume* pa_cvolume_scale_mask(pa_cvolume *v, pa_volume_t max, pa_channel_map *cm, pa_channel_position_mask_t mask);
+pa_cvolume* pa_cvolume_set_position(pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t, pa_volume_t v);
+pa_volume_t pa_cvolume_get_position(pa_cvolume *cv, const pa_channel_map *map, pa_channel_position_t t) __attribute__ ((pure));
+pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b);
+pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc);
+pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec);
+struct timezone
+ {
+ int tz_minuteswest;
+ int tz_dsttime;
+ };
+typedef struct timezone *__restrict __timezone_ptr_t;
+extern int gettimeofday (struct timeval *__restrict __tv,
+ __timezone_ptr_t __tz) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int settimeofday (__const struct timeval *__tv,
+ __const struct timezone *__tz)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int adjtime (__const struct timeval *__delta,
+ struct timeval *__olddelta) __attribute__ ((__nothrow__));
+enum __itimer_which
+ {
+ ITIMER_REAL = 0,
+ ITIMER_VIRTUAL = 1,
+ ITIMER_PROF = 2
+ };
+struct itimerval
+ {
+ struct timeval it_interval;
+ struct timeval it_value;
+ };
+typedef enum __itimer_which __itimer_which_t;
+extern int getitimer (__itimer_which_t __which,
+ struct itimerval *__value) __attribute__ ((__nothrow__));
+extern int setitimer (__itimer_which_t __which,
+ __const struct itimerval *__restrict __new,
+ struct itimerval *__restrict __old) __attribute__ ((__nothrow__));
+extern int utimes (__const char *__file, __const struct timeval __tvp[2])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int futimes (int __fd, __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
+extern int futimesat (int __fd, __const char *__file,
+ __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
+struct tm
+{
+ int tm_sec;
+ int tm_min;
+ int tm_hour;
+ int tm_mday;
+ int tm_mon;
+ int tm_year;
+ int tm_wday;
+ int tm_yday;
+ int tm_isdst;
+ long int tm_gmtoff;
+ __const char *tm_zone;
+};
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+struct sigevent;
+extern clock_t clock (void) __attribute__ ((__nothrow__));
+extern time_t time (time_t *__timer) __attribute__ ((__nothrow__));
+extern double difftime (time_t __time1, time_t __time0)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__));
+extern size_t strftime (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format,
+ __const struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+extern char *strptime (__const char *__restrict __s,
+ __const char *__restrict __fmt, struct tm *__tp)
+ __attribute__ ((__nothrow__));
+extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format,
+ __const struct tm *__restrict __tp,
+ __locale_t __loc) __attribute__ ((__nothrow__));
+extern char *strptime_l (__const char *__restrict __s,
+ __const char *__restrict __fmt, struct tm *__tp,
+ __locale_t __loc) __attribute__ ((__nothrow__));
+extern struct tm *gmtime (__const time_t *__timer) __attribute__ ((__nothrow__));
+extern struct tm *localtime (__const time_t *__timer) __attribute__ ((__nothrow__));
+extern struct tm *gmtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+extern struct tm *localtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+extern char *asctime (__const struct tm *__tp) __attribute__ ((__nothrow__));
+extern char *ctime (__const time_t *__timer) __attribute__ ((__nothrow__));
+extern char *asctime_r (__const struct tm *__restrict __tp,
+ char *__restrict __buf) __attribute__ ((__nothrow__));
+extern char *ctime_r (__const time_t *__restrict __timer,
+ char *__restrict __buf) __attribute__ ((__nothrow__));
+extern char *__tzname[2];
+extern int __daylight;
+extern long int __timezone;
+extern char *tzname[2];
+extern void tzset (void) __attribute__ ((__nothrow__));
+extern int daylight;
+extern long int timezone;
+extern int stime (__const time_t *__when) __attribute__ ((__nothrow__));
+extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__));
+extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__));
+extern int dysize (int __year) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int nanosleep (__const struct timespec *__requested_time,
+ struct timespec *__remaining);
+extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__));
+extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__));
+extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
+ __attribute__ ((__nothrow__));
+extern int clock_nanosleep (clockid_t __clock_id, int __flags,
+ __const struct timespec *__req,
+ struct timespec *__rem);
+extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__));
+extern int timer_create (clockid_t __clock_id,
+ struct sigevent *__restrict __evp,
+ timer_t *__restrict __timerid) __attribute__ ((__nothrow__));
+extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__));
+extern int timer_settime (timer_t __timerid, int __flags,
+ __const struct itimerspec *__restrict __value,
+ struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__));
+extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
+ __attribute__ ((__nothrow__));
+extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__));
+extern int getdate_err;
+extern struct tm *getdate (__const char *__string);
+extern int getdate_r (__const char *__restrict __string,
+ struct tm *__restrict __resbufp);
+typedef enum pa_context_state {
+ PA_CONTEXT_UNCONNECTED,
+ PA_CONTEXT_CONNECTING,
+ PA_CONTEXT_AUTHORIZING,
+ PA_CONTEXT_SETTING_NAME,
+ PA_CONTEXT_READY,
+ PA_CONTEXT_FAILED,
+ PA_CONTEXT_TERMINATED
+} pa_context_state_t;
+static inline int PA_CONTEXT_IS_GOOD(pa_context_state_t x) {
+ return
+ x == PA_CONTEXT_CONNECTING ||
+ x == PA_CONTEXT_AUTHORIZING ||
+ x == PA_CONTEXT_SETTING_NAME ||
+ x == PA_CONTEXT_READY;
+}
+typedef enum pa_stream_state {
+ PA_STREAM_UNCONNECTED,
+ PA_STREAM_CREATING,
+ PA_STREAM_READY,
+ PA_STREAM_FAILED,
+ PA_STREAM_TERMINATED
+} pa_stream_state_t;
+static inline int PA_STREAM_IS_GOOD(pa_stream_state_t x) {
+ return
+ x == PA_STREAM_CREATING ||
+ x == PA_STREAM_READY;
+}
+typedef enum pa_operation_state {
+ PA_OPERATION_RUNNING,
+ PA_OPERATION_DONE,
+ PA_OPERATION_CANCELLED
+} pa_operation_state_t;
+typedef enum pa_context_flags {
+ PA_CONTEXT_NOFLAGS = 0x0000U,
+ PA_CONTEXT_NOAUTOSPAWN = 0x0001U,
+ PA_CONTEXT_NOFAIL = 0x0002U
+} pa_context_flags_t;
+typedef enum pa_stream_direction {
+ PA_STREAM_NODIRECTION,
+ PA_STREAM_PLAYBACK,
+ PA_STREAM_RECORD,
+ PA_STREAM_UPLOAD
+} pa_stream_direction_t;
+typedef enum pa_stream_flags {
+ PA_STREAM_NOFLAGS = 0x0000U,
+ PA_STREAM_START_CORKED = 0x0001U,
+ PA_STREAM_INTERPOLATE_TIMING = 0x0002U,
+ PA_STREAM_NOT_MONOTONIC = 0x0004U,
+ PA_STREAM_AUTO_TIMING_UPDATE = 0x0008U,
+ PA_STREAM_NO_REMAP_CHANNELS = 0x0010U,
+ PA_STREAM_NO_REMIX_CHANNELS = 0x0020U,
+ PA_STREAM_FIX_FORMAT = 0x0040U,
+ PA_STREAM_FIX_RATE = 0x0080U,
+ PA_STREAM_FIX_CHANNELS = 0x0100,
+ PA_STREAM_DONT_MOVE = 0x0200U,
+ PA_STREAM_VARIABLE_RATE = 0x0400U,
+ PA_STREAM_PEAK_DETECT = 0x0800U,
+ PA_STREAM_START_MUTED = 0x1000U,
+ PA_STREAM_ADJUST_LATENCY = 0x2000U,
+ PA_STREAM_EARLY_REQUESTS = 0x4000U,
+ PA_STREAM_DONT_INHIBIT_AUTO_SUSPEND = 0x8000U,
+ PA_STREAM_START_UNMUTED = 0x10000U,
+ PA_STREAM_FAIL_ON_SUSPEND = 0x20000U
+} pa_stream_flags_t;
+typedef struct pa_buffer_attr {
+ uint32_t maxlength;
+ uint32_t tlength;
+ uint32_t prebuf;
+ uint32_t minreq;
+ uint32_t fragsize;
+} pa_buffer_attr;
+enum {
+ PA_OK = 0,
+ PA_ERR_ACCESS,
+ PA_ERR_COMMAND,
+ PA_ERR_INVALID,
+ PA_ERR_EXIST,
+ PA_ERR_NOENTITY,
+ PA_ERR_CONNECTIONREFUSED,
+ PA_ERR_PROTOCOL,
+ PA_ERR_TIMEOUT,
+ PA_ERR_AUTHKEY,
+ PA_ERR_INTERNAL,
+ PA_ERR_CONNECTIONTERMINATED,
+ PA_ERR_KILLED,
+ PA_ERR_INVALIDSERVER,
+ PA_ERR_MODINITFAILED,
+ PA_ERR_BADSTATE,
+ PA_ERR_NODATA,
+ PA_ERR_VERSION,
+ PA_ERR_TOOLARGE,
+ PA_ERR_NOTSUPPORTED,
+ PA_ERR_UNKNOWN,
+ PA_ERR_NOEXTENSION,
+ PA_ERR_OBSOLETE,
+ PA_ERR_NOTIMPLEMENTED,
+ PA_ERR_FORKED,
+ PA_ERR_IO,
+ PA_ERR_BUSY,
+ PA_ERR_MAX
+};
+typedef enum pa_subscription_mask {
+ PA_SUBSCRIPTION_MASK_NULL = 0x0000U,
+ PA_SUBSCRIPTION_MASK_SINK = 0x0001U,
+ PA_SUBSCRIPTION_MASK_SOURCE = 0x0002U,
+ PA_SUBSCRIPTION_MASK_SINK_INPUT = 0x0004U,
+ PA_SUBSCRIPTION_MASK_SOURCE_OUTPUT = 0x0008U,
+ PA_SUBSCRIPTION_MASK_MODULE = 0x0010U,
+ PA_SUBSCRIPTION_MASK_CLIENT = 0x0020U,
+ PA_SUBSCRIPTION_MASK_SAMPLE_CACHE = 0x0040U,
+ PA_SUBSCRIPTION_MASK_SERVER = 0x0080U,
+ PA_SUBSCRIPTION_MASK_AUTOLOAD = 0x0100U,
+ PA_SUBSCRIPTION_MASK_CARD = 0x0200U,
+ PA_SUBSCRIPTION_MASK_ALL = 0x02ffU
+} pa_subscription_mask_t;
+typedef enum pa_subscription_event_type {
+ PA_SUBSCRIPTION_EVENT_SINK = 0x0000U,
+ PA_SUBSCRIPTION_EVENT_SOURCE = 0x0001U,
+ PA_SUBSCRIPTION_EVENT_SINK_INPUT = 0x0002U,
+ PA_SUBSCRIPTION_EVENT_SOURCE_OUTPUT = 0x0003U,
+ PA_SUBSCRIPTION_EVENT_MODULE = 0x0004U,
+ PA_SUBSCRIPTION_EVENT_CLIENT = 0x0005U,
+ PA_SUBSCRIPTION_EVENT_SAMPLE_CACHE = 0x0006U,
+ PA_SUBSCRIPTION_EVENT_SERVER = 0x0007U,
+ PA_SUBSCRIPTION_EVENT_AUTOLOAD = 0x0008U,
+ PA_SUBSCRIPTION_EVENT_CARD = 0x0009U,
+ PA_SUBSCRIPTION_EVENT_FACILITY_MASK = 0x000FU,
+ PA_SUBSCRIPTION_EVENT_NEW = 0x0000U,
+ PA_SUBSCRIPTION_EVENT_CHANGE = 0x0010U,
+ PA_SUBSCRIPTION_EVENT_REMOVE = 0x0020U,
+ PA_SUBSCRIPTION_EVENT_TYPE_MASK = 0x0030U
+} pa_subscription_event_type_t;
+typedef struct pa_timing_info {
+ struct timeval timestamp;
+ int synchronized_clocks;
+ pa_usec_t sink_usec;
+ pa_usec_t source_usec;
+ pa_usec_t transport_usec;
+ int playing;
+ int write_index_corrupt;
+ int64_t write_index;
+ int read_index_corrupt;
+ int64_t read_index;
+ pa_usec_t configured_sink_usec;
+ pa_usec_t configured_source_usec;
+ int64_t since_underrun;
+} pa_timing_info;
+typedef struct pa_spawn_api {
+ void (*prefork)(void);
+ void (*postfork)(void);
+ void (*atfork)(void);
+} pa_spawn_api;
+typedef enum pa_seek_mode {
+ PA_SEEK_RELATIVE = 0,
+ PA_SEEK_ABSOLUTE = 1,
+ PA_SEEK_RELATIVE_ON_READ = 2,
+ PA_SEEK_RELATIVE_END = 3
+} pa_seek_mode_t;
+typedef enum pa_sink_flags {
+ PA_SINK_NOFLAGS = 0x0000U,
+ PA_SINK_HW_VOLUME_CTRL = 0x0001U,
+ PA_SINK_LATENCY = 0x0002U,
+ PA_SINK_HARDWARE = 0x0004U,
+ PA_SINK_NETWORK = 0x0008U,
+ PA_SINK_HW_MUTE_CTRL = 0x0010U,
+ PA_SINK_DECIBEL_VOLUME = 0x0020U,
+ PA_SINK_FLAT_VOLUME = 0x0040U,
+ PA_SINK_DYNAMIC_LATENCY = 0x0080U
+} pa_sink_flags_t;
+typedef enum pa_sink_state {
+ PA_SINK_INVALID_STATE = -1,
+ PA_SINK_RUNNING = 0,
+ PA_SINK_IDLE = 1,
+ PA_SINK_SUSPENDED = 2,
+ PA_SINK_INIT = -2,
+ PA_SINK_UNLINKED = -3
+} pa_sink_state_t;
+static inline int PA_SINK_IS_OPENED(pa_sink_state_t x) {
+ return x == PA_SINK_RUNNING || x == PA_SINK_IDLE;
+}
+typedef enum pa_source_flags {
+ PA_SOURCE_NOFLAGS = 0x0000U,
+ PA_SOURCE_HW_VOLUME_CTRL = 0x0001U,
+ PA_SOURCE_LATENCY = 0x0002U,
+ PA_SOURCE_HARDWARE = 0x0004U,
+ PA_SOURCE_NETWORK = 0x0008U,
+ PA_SOURCE_HW_MUTE_CTRL = 0x0010U,
+ PA_SOURCE_DECIBEL_VOLUME = 0x0020U,
+ PA_SOURCE_DYNAMIC_LATENCY = 0x0040U
+} pa_source_flags_t;
+typedef enum pa_source_state {
+ PA_SOURCE_INVALID_STATE = -1,
+ PA_SOURCE_RUNNING = 0,
+ PA_SOURCE_IDLE = 1,
+ PA_SOURCE_SUSPENDED = 2,
+ PA_SOURCE_INIT = -2,
+ PA_SOURCE_UNLINKED = -3
+} pa_source_state_t;
+static inline int PA_SOURCE_IS_OPENED(pa_source_state_t x) {
+ return x == PA_SOURCE_RUNNING || x == PA_SOURCE_IDLE;
+}
+typedef void (*pa_free_cb_t)(void *p);
+typedef struct pa_atomic {
+ volatile int value;
+} pa_atomic_t;
+static inline int pa_atomic_load(const pa_atomic_t *a) {
+ __sync_synchronize();
+ return a->value;
+}
+static inline void pa_atomic_store(pa_atomic_t *a, int i) {
+ a->value = i;
+ __sync_synchronize();
+}
+static inline int pa_atomic_add(pa_atomic_t *a, int i) {
+ return __sync_fetch_and_add(&a->value, i);
+}
+static inline int pa_atomic_sub(pa_atomic_t *a, int i) {
+ return __sync_fetch_and_sub(&a->value, i);
+}
+static inline int pa_atomic_inc(pa_atomic_t *a) {
+ return pa_atomic_add(a, 1);
+}
+static inline int pa_atomic_dec(pa_atomic_t *a) {
+ return pa_atomic_sub(a, 1);
+}
+static inline pa_bool_t pa_atomic_cmpxchg(pa_atomic_t *a, int old_i, int new_i) {
+ return __sync_bool_compare_and_swap(&a->value, old_i, new_i);
+}
+typedef struct pa_atomic_ptr {
+ volatile unsigned long value;
+} pa_atomic_ptr_t;
+static inline void* pa_atomic_ptr_load(const pa_atomic_ptr_t *a) {
+ __sync_synchronize();
+ return (void*) a->value;
+}
+static inline void pa_atomic_ptr_store(pa_atomic_ptr_t *a, void *p) {
+ a->value = (unsigned long) p;
+ __sync_synchronize();
+}
+static inline pa_bool_t pa_atomic_ptr_cmpxchg(pa_atomic_ptr_t *a, void *old_p, void* new_p) {
+ return __sync_bool_compare_and_swap(&a->value, (long) old_p, (long) new_p);
+}
+typedef enum pa_memblock_type {
+ PA_MEMBLOCK_POOL,
+ PA_MEMBLOCK_POOL_EXTERNAL,
+ PA_MEMBLOCK_APPENDED,
+ PA_MEMBLOCK_USER,
+ PA_MEMBLOCK_FIXED,
+ PA_MEMBLOCK_IMPORTED,
+ PA_MEMBLOCK_TYPE_MAX
+} pa_memblock_type_t;
+typedef struct pa_memblock pa_memblock;
+typedef struct pa_mempool pa_mempool;
+typedef struct pa_mempool_stat pa_mempool_stat;
+typedef struct pa_memimport_segment pa_memimport_segment;
+typedef struct pa_memimport pa_memimport;
+typedef struct pa_memexport pa_memexport;
+typedef void (*pa_memimport_release_cb_t)(pa_memimport *i, uint32_t block_id, void *userdata);
+typedef void (*pa_memexport_revoke_cb_t)(pa_memexport *e, uint32_t block_id, void *userdata);
+struct pa_mempool_stat {
+ pa_atomic_t n_allocated;
+ pa_atomic_t n_accumulated;
+ pa_atomic_t n_imported;
+ pa_atomic_t n_exported;
+ pa_atomic_t allocated_size;
+ pa_atomic_t accumulated_size;
+ pa_atomic_t imported_size;
+ pa_atomic_t exported_size;
+ pa_atomic_t n_too_large_for_pool;
+ pa_atomic_t n_pool_full;
+ pa_atomic_t n_allocated_by_type[PA_MEMBLOCK_TYPE_MAX];
+ pa_atomic_t n_accumulated_by_type[PA_MEMBLOCK_TYPE_MAX];
+};
+pa_memblock *pa_memblock_new(pa_mempool *, size_t length);
+pa_memblock *pa_memblock_new_pool(pa_mempool *, size_t length);
+pa_memblock *pa_memblock_new_user(pa_mempool *, void *data, size_t length, pa_free_cb_t free_cb, pa_bool_t read_only);
+pa_memblock *pa_memblock_new_fixed(pa_mempool *, void *data, size_t length, pa_bool_t read_only);
+void pa_memblock_unref(pa_memblock*b);
+pa_memblock* pa_memblock_ref(pa_memblock*b);
+void pa_memblock_unref_fixed(pa_memblock*b);
+pa_bool_t pa_memblock_is_read_only(pa_memblock *b);
+pa_bool_t pa_memblock_is_silence(pa_memblock *b);
+pa_bool_t pa_memblock_ref_is_one(pa_memblock *b);
+void pa_memblock_set_is_silence(pa_memblock *b, pa_bool_t v);
+void* pa_memblock_acquire(pa_memblock *b);
+void pa_memblock_release(pa_memblock *b);
+size_t pa_memblock_get_length(pa_memblock *b);
+pa_mempool * pa_memblock_get_pool(pa_memblock *b);
+pa_memblock *pa_memblock_will_need(pa_memblock *b);
+pa_mempool* pa_mempool_new(pa_bool_t shared, size_t size);
+void pa_mempool_free(pa_mempool *p);
+const pa_mempool_stat* pa_mempool_get_stat(pa_mempool *p);
+void pa_mempool_vacuum(pa_mempool *p);
+int pa_mempool_get_shm_id(pa_mempool *p, uint32_t *id);
+pa_bool_t pa_mempool_is_shared(pa_mempool *p);
+size_t pa_mempool_block_size_max(pa_mempool *p);
+pa_memimport* pa_memimport_new(pa_mempool *p, pa_memimport_release_cb_t cb, void *userdata);
+void pa_memimport_free(pa_memimport *i);
+pa_memblock* pa_memimport_get(pa_memimport *i, uint32_t block_id, uint32_t shm_id, size_t offset, size_t size);
+int pa_memimport_process_revoke(pa_memimport *i, uint32_t block_id);
+pa_memexport* pa_memexport_new(pa_mempool *p, pa_memexport_revoke_cb_t cb, void *userdata);
+void pa_memexport_free(pa_memexport *e);
+int pa_memexport_put(pa_memexport *e, pa_memblock *b, uint32_t *block_id, uint32_t *shm_id, size_t *offset, size_t *size);
+int pa_memexport_process_release(pa_memexport *e, uint32_t id);
+typedef struct pa_memchunk {
+ pa_memblock *memblock;
+ size_t index, length;
+} pa_memchunk;
+pa_memchunk* pa_memchunk_make_writable(pa_memchunk *c, size_t min);
+pa_memchunk* pa_memchunk_reset(pa_memchunk *c);
+pa_memchunk *pa_memchunk_will_need(const pa_memchunk *c);
+pa_memchunk* pa_memchunk_memcpy(pa_memchunk *dst, pa_memchunk *src);
+typedef struct pa_silence_cache {
+ pa_memblock* blocks[PA_SAMPLE_MAX];
+} pa_silence_cache;
+void pa_silence_cache_init(pa_silence_cache *cache);
+void pa_silence_cache_done(pa_silence_cache *cache);
+void *pa_silence_memory(void *p, size_t length, const pa_sample_spec *spec);
+pa_memchunk* pa_silence_memchunk(pa_memchunk *c, const pa_sample_spec *spec);
+pa_memblock* pa_silence_memblock(pa_memblock *b, const pa_sample_spec *spec);
+pa_memchunk* pa_silence_memchunk_get(pa_silence_cache *cache, pa_mempool *pool, pa_memchunk* ret, const pa_sample_spec *spec, size_t length);
+typedef struct pa_mix_info {
+ pa_memchunk chunk;
+ pa_cvolume volume;
+ void *userdata;
+ void *ptr;
+ union {
+ int32_t i;
+ float f;
+ } linear[32U];
+} pa_mix_info;
+size_t pa_mix(
+ pa_mix_info channels[],
+ unsigned nchannels,
+ void *data,
+ size_t length,
+ const pa_sample_spec *spec,
+ const pa_cvolume *volume,
+ pa_bool_t mute);
+void pa_volume_memchunk(
+ pa_memchunk*c,
+ const pa_sample_spec *spec,
+ const pa_cvolume *volume);
+size_t pa_frame_align(size_t l, const pa_sample_spec *ss) __attribute__ ((pure));
+pa_bool_t pa_frame_aligned(size_t l, const pa_sample_spec *ss) __attribute__ ((pure));
+void pa_interleave(const void *src[], unsigned channels, void *dst, size_t ss, unsigned n);
+void pa_deinterleave(const void *src, void *dst[], unsigned channels, size_t ss, unsigned n);
+void pa_sample_clamp(pa_sample_format_t format, void *dst, size_t dstr, const void *src, size_t sstr, unsigned n);
+pa_usec_t pa_bytes_to_usec_round_up(uint64_t length, const pa_sample_spec *spec);
+size_t pa_usec_to_bytes_round_up(pa_usec_t t, const pa_sample_spec *spec);
+void pa_memchunk_dump_to_file(pa_memchunk *c, const char *fn);
+void pa_memchunk_sine(pa_memchunk *c, pa_mempool *pool, unsigned rate, unsigned freq);
+typedef void (*pa_do_volume_func_t) (void *samples, void *volumes, unsigned channels, unsigned length);
+pa_do_volume_func_t pa_get_volume_func(pa_sample_format_t f);
+void pa_set_volume_func(pa_sample_format_t f, pa_do_volume_func_t func);
+size_t pa_convert_size(size_t size, const pa_sample_spec *from, const pa_sample_spec *to);
+static inline uint32_t PA_READ24BE(const uint8_t *p) {
+ return
+ ((uint32_t) p[0] << 16) |
+ ((uint32_t) p[1] << 8) |
+ ((uint32_t) p[2]);
+}
+static inline uint32_t PA_READ24LE(const uint8_t *p) {
+ return
+ ((uint32_t) p[2] << 16) |
+ ((uint32_t) p[1] << 8) |
+ ((uint32_t) p[0]);
+}
+static inline void PA_WRITE24BE(uint8_t *p, uint32_t u) {
+ p[0] = (uint8_t) (u >> 16);
+ p[1] = (uint8_t) (u >> 8);
+ p[2] = (uint8_t) u;
+}
+static inline void PA_WRITE24LE(uint8_t *p, uint32_t u) {
+ p[2] = (uint8_t) (u >> 16);
+ p[1] = (uint8_t) (u >> 8);
+ p[0] = (uint8_t) u;
+}
+static inline float PA_FLOAT32_SWAP(float x) {
+ union {
+ float f;
+ uint32_t u;
+ } t;
+ t.f = x;
+ t.u = ((uint32_t) (__extension__ ({ register unsigned int __v, __x = ((uint32_t) t.u); if (__builtin_constant_p (__x)) __v = ((((__x) & 0xff000000) >> 24) | (((__x) & 0x00ff0000) >> 8) | (((__x) & 0x0000ff00) << 8) | (((__x) & 0x000000ff) << 24)); else __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); __v; })));
+ return t.f;
+}
+static void
+pa_volume_s16ne_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ pa_reg_x86 channel, temp;
+ channels = __extension__ ({ typeof(4U) _a = (4U); typeof(channels) _b = (channels); _a > _b ? _a : _b; });
+ __asm__ __volatile__ (
+ " xor %3, %3 \n\t"
+ " sar $1, %2 \n\t"
+ " test $1, %2 \n\t"
+ " je 2f \n\t"
+ " movd (%1, %3, 4), %%mm0 \n\t"
+ " movw (%0), %w4 \n\t"
+ " movd %4, %%mm1 \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm1"" \n\t" " pcmpgtw ""%%mm0"", %%mm4 \n\t" " pand ""%%mm1"", %%mm4 \n\t" " movq ""%%mm1"", %%mm5 \n\t" " pmulhw ""%%mm0"", ""%%mm1"" \n\t" " paddw %%mm4, ""%%mm1"" \n\t" " psrld $16, ""%%mm0"" \n\t" " pmaddwd %%mm5, ""%%mm0"" \n\t" " paddd ""%%mm1"", ""%%mm0"" \n\t" " packssdw ""%%mm0"", ""%%mm0"" \n\t"
+ " movd %%mm0, %4 \n\t"
+ " movw %w4, (%0) \n\t"
+ " add $2, %0 \n\t"
+ " add ""$1"", %3 \n\t" " mov %3, %4 \n\t" " sub ""%5"", %4 \n\t" " cmovae %4, %3 \n\t"
+ "2: \n\t"
+ " sar $1, %2 \n\t"
+ " test $1, %2 \n\t"
+ " je 4f \n\t"
+ "3: \n\t"
+ " movq (%1, %3, 4), %%mm0 \n\t"
+ " movd (%0), %%mm1 \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm1"" \n\t" " pcmpgtw ""%%mm0"", %%mm4 \n\t" " pand ""%%mm1"", %%mm4 \n\t" " movq ""%%mm1"", %%mm5 \n\t" " pmulhw ""%%mm0"", ""%%mm1"" \n\t" " paddw %%mm4, ""%%mm1"" \n\t" " psrld $16, ""%%mm0"" \n\t" " pmaddwd %%mm5, ""%%mm0"" \n\t" " paddd ""%%mm1"", ""%%mm0"" \n\t" " packssdw ""%%mm0"", ""%%mm0"" \n\t"
+ " movd %%mm0, (%0) \n\t"
+ " add $4, %0 \n\t"
+ " add ""$2"", %3 \n\t" " mov %3, %4 \n\t" " sub ""%5"", %4 \n\t" " cmovae %4, %3 \n\t"
+ "4: \n\t"
+ " sar $1, %2 \n\t"
+ " cmp $0, %2 \n\t"
+ " je 6f \n\t"
+ "5: \n\t"
+ " movq (%1, %3, 4), %%mm0 \n\t"
+ " movq 8(%1, %3, 4), %%mm2 \n\t"
+ " movd (%0), %%mm1 \n\t"
+ " movd 4(%0), %%mm3 \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm1"" \n\t" " pcmpgtw ""%%mm0"", %%mm4 \n\t" " pand ""%%mm1"", %%mm4 \n\t" " movq ""%%mm1"", %%mm5 \n\t" " pmulhw ""%%mm0"", ""%%mm1"" \n\t" " paddw %%mm4, ""%%mm1"" \n\t" " psrld $16, ""%%mm0"" \n\t" " pmaddwd %%mm5, ""%%mm0"" \n\t" " paddd ""%%mm1"", ""%%mm0"" \n\t" " packssdw ""%%mm0"", ""%%mm0"" \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm3"" \n\t" " pcmpgtw ""%%mm2"", %%mm4 \n\t" " pand ""%%mm3"", %%mm4 \n\t" " movq ""%%mm3"", %%mm5 \n\t" " pmulhw ""%%mm2"", ""%%mm3"" \n\t" " paddw %%mm4, ""%%mm3"" \n\t" " psrld $16, ""%%mm2"" \n\t" " pmaddwd %%mm5, ""%%mm2"" \n\t" " paddd ""%%mm3"", ""%%mm2"" \n\t" " packssdw ""%%mm2"", ""%%mm2"" \n\t"
+ " movd %%mm0, (%0) \n\t"
+ " movd %%mm2, 4(%0) \n\t"
+ " add $8, %0 \n\t"
+ " add ""$4"", %3 \n\t" " mov %3, %4 \n\t" " sub ""%5"", %4 \n\t" " cmovae %4, %3 \n\t"
+ " dec %2 \n\t"
+ " jne 5b \n\t"
+ "6: \n\t"
+ " emms \n\t"
+ : "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp)
+ : "X" ((pa_reg_x86)channels)
+ : "cc"
+ );
+}
+static void
+pa_volume_s16re_mmx (int16_t *samples, int32_t *volumes, unsigned channels, unsigned length)
+{
+ pa_reg_x86 channel, temp;
+ channels = __extension__ ({ typeof(4U) _a = (4U); typeof(channels) _b = (channels); _a > _b ? _a : _b; });
+ __asm__ __volatile__ (
+ " xor %3, %3 \n\t"
+ " sar $1, %2 \n\t"
+ " pcmpeqw %%mm6, %%mm6 \n\t"
+ " pcmpeqw %%mm7, %%mm7 \n\t"
+ " pslld $16, %%mm6 \n\t"
+ " psrld $31, %%mm7 \n\t"
+ " test $1, %2 \n\t"
+ " je 2f \n\t"
+ " movd (%1, %3, 4), %%mm0 \n\t"
+ " movw (%0), %w4 \n\t"
+ " rorw $8, %w4 \n\t"
+ " movd %4, %%mm1 \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm1"" \n\t" " pcmpgtw ""%%mm0"", %%mm4 \n\t" " pand ""%%mm1"", %%mm4 \n\t" " movq ""%%mm1"", %%mm5 \n\t" " pmulhw ""%%mm0"", ""%%mm1"" \n\t" " paddw %%mm4, ""%%mm1"" \n\t" " psrld $16, ""%%mm0"" \n\t" " pmaddwd %%mm5, ""%%mm0"" \n\t" " paddd ""%%mm1"", ""%%mm0"" \n\t" " packssdw ""%%mm0"", ""%%mm0"" \n\t"
+ " movd %%mm0, %4 \n\t"
+ " rorw $8, %w4 \n\t"
+ " movw %w4, (%0) \n\t"
+ " add $2, %0 \n\t"
+ " add ""$1"", %3 \n\t" " mov %3, %4 \n\t" " sub ""%5"", %4 \n\t" " cmovae %4, %3 \n\t"
+ "2: \n\t"
+ " sar $1, %2 \n\t"
+ " test $1, %2 \n\t"
+ " je 4f \n\t"
+ "3: \n\t"
+ " movq (%1, %3, 4), %%mm0 \n\t"
+ " movd (%0), %%mm1 \n\t"
+ " movq ""%%mm1"", %%mm4 \n\t" " psrlw $8, %%mm4 \n\t" " psllw $8, ""%%mm1"" \n\t" " por %%mm4, ""%%mm1"" \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm1"" \n\t" " pcmpgtw ""%%mm0"", %%mm4 \n\t" " pand ""%%mm1"", %%mm4 \n\t" " movq ""%%mm1"", %%mm5 \n\t" " pmulhw ""%%mm0"", ""%%mm1"" \n\t" " paddw %%mm4, ""%%mm1"" \n\t" " psrld $16, ""%%mm0"" \n\t" " pmaddwd %%mm5, ""%%mm0"" \n\t" " paddd ""%%mm1"", ""%%mm0"" \n\t" " packssdw ""%%mm0"", ""%%mm0"" \n\t"
+ " movq ""%%mm0"", %%mm4 \n\t" " psrlw $8, %%mm4 \n\t" " psllw $8, ""%%mm0"" \n\t" " por %%mm4, ""%%mm0"" \n\t"
+ " movd %%mm0, (%0) \n\t"
+ " add $4, %0 \n\t"
+ " add ""$2"", %3 \n\t" " mov %3, %4 \n\t" " sub ""%5"", %4 \n\t" " cmovae %4, %3 \n\t"
+ "4: \n\t"
+ " sar $1, %2 \n\t"
+ " cmp $0, %2 \n\t"
+ " je 6f \n\t"
+ "5: \n\t"
+ " movq (%1, %3, 4), %%mm0 \n\t"
+ " movq 8(%1, %3, 4), %%mm2 \n\t"
+ " movd (%0), %%mm1 \n\t"
+ " movd 4(%0), %%mm3 \n\t"
+ " movq ""%%mm1"", %%mm4 \n\t" " movq ""%%mm3"", %%mm5 \n\t" " psrlw $8, %%mm4 \n\t" " psrlw $8, %%mm5 \n\t" " psllw $8, ""%%mm1"" \n\t" " psllw $8, ""%%mm3"" \n\t" " por %%mm4, ""%%mm1"" \n\t" " por %%mm5, ""%%mm3"" \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm1"" \n\t" " pcmpgtw ""%%mm0"", %%mm4 \n\t" " pand ""%%mm1"", %%mm4 \n\t" " movq ""%%mm1"", %%mm5 \n\t" " pmulhw ""%%mm0"", ""%%mm1"" \n\t" " paddw %%mm4, ""%%mm1"" \n\t" " psrld $16, ""%%mm0"" \n\t" " pmaddwd %%mm5, ""%%mm0"" \n\t" " paddd ""%%mm1"", ""%%mm0"" \n\t" " packssdw ""%%mm0"", ""%%mm0"" \n\t"
+ " pxor %%mm4, %%mm4 \n\t" " punpcklwd %%mm4, ""%%mm3"" \n\t" " pcmpgtw ""%%mm2"", %%mm4 \n\t" " pand ""%%mm3"", %%mm4 \n\t" " movq ""%%mm3"", %%mm5 \n\t" " pmulhw ""%%mm2"", ""%%mm3"" \n\t" " paddw %%mm4, ""%%mm3"" \n\t" " psrld $16, ""%%mm2"" \n\t" " pmaddwd %%mm5, ""%%mm2"" \n\t" " paddd ""%%mm3"", ""%%mm2"" \n\t" " packssdw ""%%mm2"", ""%%mm2"" \n\t"
+ " movq ""%%mm0"", %%mm4 \n\t" " movq ""%%mm2"", %%mm5 \n\t" " psrlw $8, %%mm4 \n\t" " psrlw $8, %%mm5 \n\t" " psllw $8, ""%%mm0"" \n\t" " psllw $8, ""%%mm2"" \n\t" " por %%mm4, ""%%mm0"" \n\t" " por %%mm5, ""%%mm2"" \n\t"
+ " movd %%mm0, (%0) \n\t"
+ " movd %%mm2, 4(%0) \n\t"
+ " add $8, %0 \n\t"
+ " add ""$4"", %3 \n\t" " mov %3, %4 \n\t" " sub ""%5"", %4 \n\t" " cmovae %4, %3 \n\t"
+ " dec %2 \n\t"
+ " jne 5b \n\t"
+ "6: \n\t"
+ " emms \n\t"
+ : "+r" (samples), "+r" (volumes), "+r" (length), "=D" ((pa_reg_x86)channel), "=&r" (temp)
+ : "X" ((pa_reg_x86)channels)
+ : "cc"
+ );
+}
+void pa_volume_func_init_mmx (pa_cpu_x86_flag_t flags) {
+ if (flags & PA_CPU_X86_MMX) {
+ pa_log_level_meta(PA_LOG_INFO, "pulsecore/svolume_mmx.c", 304, __func__, "Initialising MMX optimized functions.");
+ pa_set_volume_func (PA_SAMPLE_S16LE, (pa_do_volume_func_t) pa_volume_s16ne_mmx);
+ pa_set_volume_func (PA_SAMPLE_S16BE, (pa_do_volume_func_t) pa_volume_s16re_mmx);
+ }
+}
--- /dev/null
+typedef short int int16_t;
+typedef int int32_t;
+typedef long int int64_t;
+typedef enum pa_sample_format {
+ PA_SAMPLE_U8, PA_SAMPLE_ALAW, PA_SAMPLE_ULAW, PA_SAMPLE_S16LE,
+ PA_SAMPLE_S16BE, PA_SAMPLE_FLOAT32LE, PA_SAMPLE_FLOAT32BE,
+ PA_SAMPLE_S32LE, PA_SAMPLE_S32BE, PA_SAMPLE_S24LE, PA_SAMPLE_S24BE,
+ PA_SAMPLE_S24_32LE, PA_SAMPLE_S24_32BE, PA_SAMPLE_MAX,
+ PA_SAMPLE_INVALID = -1
+} pa_log_target_t;
+typedef enum pa_cpu_x86_flag {
+ PA_CPU_X86_MMX = (1 << 0), PA_CPU_X86_MMXEXT =
+ (1 << 1), PA_CPU_X86_SSE = (1 << 2), PA_CPU_X86_SSE2 =
+ (1 << 3), PA_CPU_X86_SSE3 = (1 << 4), PA_CPU_X86_SSSE3 =
+ (1 << 5), PA_CPU_X86_SSE4_1 = (1 << 6), PA_CPU_X86_SSE4_2 =
+ (1 << 7), PA_CPU_X86_3DNOW = (1 << 8), PA_CPU_X86_3DNOWEXT =
+ (1 << 9)
+} pa_cpu_x86_flag_t;
+typedef int64_t pa_reg_x86;
+typedef void (*pa_do_volume_func_t) (void *samples, void *volumes,
+ unsigned channels, unsigned length);
+
+void pa_volume_s16ne_mmx(short * samples, int * volumes,
+ unsigned channels, unsigned length)
+{
+ long int channel;
+ long int temp;
+ __asm__ __volatile__(" xor %3, %3 \n\t"
+ " sar $1, %2 \n\t"
+ " test $1, %2 \n\t"
+ " je 2f \n\t"
+ " movd (%1, %3, 4), %%mm0 \n\t"
+ " movw (%0), %w4 \n\t"
+ " movd %4, %%mm1 \n\t"
+ " pxor %%mm4, %%mm4 \n\t"
+ " punpcklwd %%mm4, " "%%mm1" " \n\t"
+ " pcmpgtw " "%%mm0" ", %%mm4 \n\t"
+ " pand " "%%mm1" ", %%mm4 \n\t"
+ " movq " "%%mm1" ", %%mm5 \n\t"
+ " pmulhw " "%%mm0" ", " "%%mm1" " \n\t"
+ " paddw %%mm4, " "%%mm1" " \n\t"
+ " psrld $16, " "%%mm0" " \n\t"
+ " pmaddwd %%mm5, " "%%mm0" " \n\t"
+ " paddd " "%%mm1" ", " "%%mm0" " \n\t"
+ " packssdw " "%%mm0" ", " "%%mm0" " \n\t"
+ " movd %%mm0, %4 \n\t"
+ " movw %w4, (%0) \n\t"
+ " add $2, %0 \n\t" " add " "$1"
+ ", %3 \n\t"
+ " mov %3, %4 \n\t" " sub " "%5"
+ ", %4 \n\t"
+ " cmovae %4, %3 \n\t"
+ "2: \n\t"
+ " sar $1, %2 \n\t"
+ " test $1, %2 \n\t"
+ " je 4f \n\t"
+ "3: \n\t"
+ " movq (%1, %3, 4), %%mm0 \n\t"
+ " movd (%0), %%mm1 \n\t"
+ " pxor %%mm4, %%mm4 \n\t"
+ " punpcklwd %%mm4, " "%%mm1" " \n\t"
+ " pcmpgtw " "%%mm0" ", %%mm4 \n\t"
+ " pand " "%%mm1" ", %%mm4 \n\t"
+ " movq " "%%mm1" ", %%mm5 \n\t"
+ " pmulhw " "%%mm0" ", " "%%mm1" " \n\t"
+ " paddw %%mm4, " "%%mm1" " \n\t"
+ " psrld $16, " "%%mm0" " \n\t"
+ " pmaddwd %%mm5, " "%%mm0" " \n\t"
+ " paddd " "%%mm1" ", " "%%mm0" " \n\t"
+ " packssdw " "%%mm0" ", " "%%mm0" " \n\t"
+ " movd %%mm0, (%0) \n\t"
+ " add $4, %0 \n\t" " add " "$2"
+ ", %3 \n\t"
+ " mov %3, %4 \n\t" " sub " "%5"
+ ", %4 \n\t"
+ " cmovae %4, %3 \n\t"
+ "4: \n\t"
+ " sar $1, %2 \n\t"
+ " cmp $0, %2 \n\t"
+ " je 6f \n\t"
+ "5: \n\t"
+ " movq (%1, %3, 4), %%mm0 \n\t"
+ " movq 8(%1, %3, 4), %%mm2 \n\t"
+ " movd (%0), %%mm1 \n\t"
+ " movd 4(%0), %%mm3 \n\t"
+ " pxor %%mm4, %%mm4 \n\t"
+ " punpcklwd %%mm4, " "%%mm1" " \n\t"
+ " pcmpgtw " "%%mm0" ", %%mm4 \n\t"
+ " pand " "%%mm1" ", %%mm4 \n\t"
+ " movq " "%%mm1" ", %%mm5 \n\t"
+ " pmulhw " "%%mm0" ", " "%%mm1" " \n\t"
+ " paddw %%mm4, " "%%mm1" " \n\t"
+ " psrld $16, " "%%mm0" " \n\t"
+ " pmaddwd %%mm5, " "%%mm0" " \n\t"
+ " paddd " "%%mm1" ", " "%%mm0" " \n\t"
+ " packssdw " "%%mm0" ", " "%%mm0" " \n\t"
+ " pxor %%mm4, %%mm4 \n\t"
+ " punpcklwd %%mm4, " "%%mm3" " \n\t"
+ " pcmpgtw " "%%mm2" ", %%mm4 \n\t"
+ " pand " "%%mm3" ", %%mm4 \n\t"
+ " movq " "%%mm3" ", %%mm5 \n\t"
+ " pmulhw " "%%mm2" ", " "%%mm3" " \n\t"
+ " paddw %%mm4, " "%%mm3" " \n\t"
+ " psrld $16, " "%%mm2" " \n\t"
+ " pmaddwd %%mm5, " "%%mm2" " \n\t"
+ " paddd " "%%mm3" ", " "%%mm2" " \n\t"
+ " packssdw " "%%mm2" ", " "%%mm2" " \n\t"
+ " movd %%mm0, (%0) \n\t"
+ " movd %%mm2, 4(%0) \n\t"
+ " add $8, %0 \n\t" " add " "$4"
+ ", %3 \n\t"
+ " mov %3, %4 \n\t" " sub " "%5"
+ ", %4 \n\t"
+ " cmovae %4, %3 \n\t"
+ " dec %2 \n\t"
+ " jne 5b \n\t"
+ "6: \n\t"
+ " emms \n\t":"+r"
+ (samples), "+r"(volumes), "+r"(length),
+ "=D"((pa_reg_x86) channel),
+ "=&r"(temp):"X"((pa_reg_x86) channels):"cc");
+}
+
+void pa_volume_func_init_mmx(pa_cpu_x86_flag_t flags)
+{
+ if (flags & PA_CPU_X86_MMX) {
+ pa_set_volume_func(PA_SAMPLE_S16LE,
+ (pa_do_volume_func_t) pa_volume_s16ne_mmx);
+ }
+}
--- /dev/null
+typedef long int int64_t;
+typedef int64_t pa_reg_x86;
+void pa_volume_s16ne_mmx(short *samples, int *volumes, unsigned channels,
+ unsigned length)
+{
+ long int channel;
+ long int temp;
+ __asm__ __volatile__(" xor %3, %3 \n\t"
+ " sar $1, %2 \n\t"
+ " test $1, %2 \n\t"
+ " je 2f \n\t"
+ " movd (%1, %3, 4), %%mm0 \n\t"
+ " movw (%0), %w4 \n\t"
+ " movd %4, %%mm1 \n\t"
+ " pxor %%mm4, %%mm4 \n\t"
+ " punpcklwd %%mm4, " "%%mm1" " \n\t"
+ " pcmpgtw " "%%mm0" ", %%mm4 \n\t"
+ " pand " "%%mm1" ", %%mm4 \n\t"
+ " movq " "%%mm1" ", %%mm5 \n\t"
+ " pmulhw " "%%mm0" ", " "%%mm1" " \n\t"
+ " paddw %%mm4, " "%%mm1" " \n\t"
+ " psrld $16, " "%%mm0" " \n\t"
+ " pmaddwd %%mm5, " "%%mm0" " \n\t"
+ " paddd " "%%mm1" ", " "%%mm0" " \n\t"
+ " packssdw " "%%mm0" ", " "%%mm0" " \n\t"
+ " movd %%mm0, %4 \n\t"
+ " movw %w4, (%0) \n\t"
+ " add $2, %0 \n\t" " add " "$1"
+ ", %3 \n\t"
+ " mov %3, %4 \n\t" " sub " "%5"
+ ", %4 \n\t"
+ " cmovae %4, %3 \n\t"
+ "2: \n\t"
+ " sar $1, %2 \n\t"
+ " test $1, %2 \n\t"
+ " je 4f \n\t"
+ "3: \n\t"
+ " movq (%1, %3, 4), %%mm0 \n\t"
+ " movd (%0), %%mm1 \n\t"
+ " pxor %%mm4, %%mm4 \n\t"
+ " punpcklwd %%mm4, " "%%mm1" " \n\t"
+ " pcmpgtw " "%%mm0" ", %%mm4 \n\t"
+ " pand " "%%mm1" ", %%mm4 \n\t"
+ " movq " "%%mm1" ", %%mm5 \n\t"
+ " pmulhw " "%%mm0" ", " "%%mm1" " \n\t"
+ " paddw %%mm4, " "%%mm1" " \n\t"
+ " psrld $16, " "%%mm0" " \n\t"
+ " pmaddwd %%mm5, " "%%mm0" " \n\t"
+ " paddd " "%%mm1" ", " "%%mm0" " \n\t"
+ " packssdw " "%%mm0" ", " "%%mm0" " \n\t"
+ " movd %%mm0, (%0) \n\t"
+ " add $4, %0 \n\t" " add " "$2"
+ ", %3 \n\t"
+ " mov %3, %4 \n\t" " sub " "%5"
+ ", %4 \n\t"
+ " cmovae %4, %3 \n\t"
+ "4: \n\t"
+ " sar $1, %2 \n\t"
+ " cmp $0, %2 \n\t"
+ " je 6f \n\t"
+ "5: \n\t"
+ " movq (%1, %3, 4), %%mm0 \n\t"
+ " movq 8(%1, %3, 4), %%mm2 \n\t"
+ " movd (%0), %%mm1 \n\t"
+ " movd 4(%0), %%mm3 \n\t"
+ " pxor %%mm4, %%mm4 \n\t"
+ " punpcklwd %%mm4, " "%%mm1" " \n\t"
+ " pcmpgtw " "%%mm0" ", %%mm4 \n\t"
+ " pand " "%%mm1" ", %%mm4 \n\t"
+ " movq " "%%mm1" ", %%mm5 \n\t"
+ " pmulhw " "%%mm0" ", " "%%mm1" " \n\t"
+ " paddw %%mm4, " "%%mm1" " \n\t"
+ " psrld $16, " "%%mm0" " \n\t"
+ " pmaddwd %%mm5, " "%%mm0" " \n\t"
+ " paddd " "%%mm1" ", " "%%mm0" " \n\t"
+ " packssdw " "%%mm0" ", " "%%mm0" " \n\t"
+ " pxor %%mm4, %%mm4 \n\t"
+ " punpcklwd %%mm4, " "%%mm3" " \n\t"
+ " pcmpgtw " "%%mm2" ", %%mm4 \n\t"
+ " pand " "%%mm3" ", %%mm4 \n\t"
+ " movq " "%%mm3" ", %%mm5 \n\t"
+ " pmulhw " "%%mm2" ", " "%%mm3" " \n\t"
+ " paddw %%mm4, " "%%mm3" " \n\t"
+ " psrld $16, " "%%mm2" " \n\t"
+ " pmaddwd %%mm5, " "%%mm2" " \n\t"
+ " paddd " "%%mm3" ", " "%%mm2" " \n\t"
+ " packssdw " "%%mm2" ", " "%%mm2" " \n\t"
+ " movd %%mm0, (%0) \n\t"
+ " movd %%mm2, 4(%0) \n\t"
+ " add $8, %0 \n\t" " add " "$4"
+ ", %3 \n\t"
+ " mov %3, %4 \n\t" " sub " "%5"
+ ", %4 \n\t"
+ " cmovae %4, %3 \n\t"
+ " dec %2 \n\t"
+ " jne 5b \n\t"
+ "6: \n\t"
+ " emms \n\t":"+r"
+ (samples), "+r"(volumes), "+r"(length),
+ "=D"((pa_reg_x86) channel),
+ "=&r"(temp):"X"((pa_reg_x86) channels):"cc");
+}
--- /dev/null
+f(short *samples, int *volumes, unsigned channels,
+ unsigned length)
+{
+ long channel, temp;
+ asm volatile(" xor %3, %3\n"
+ "2:\n"
+ " sar $1, %2\n"
+ " test $1, %2\n"
+ " je 4f\n"
+ "3:\n"
+ " movq (%1, %3, 4), %%mm0\n"
+ " movd (%0), %%mm1\n"
+ " pxor %%mm4, %%mm4\n"
+ " punpcklwd %%mm4, %%mm1\n"
+ " pcmpgtw %%mm0, %%mm4\n"
+ " pand %%mm1, %%mm4\n"
+ " movq %%mm1, %%mm5\n"
+ " pmulhw %%mm0, %%mm1\n"
+ " paddw %%mm4, %%mm1\n"
+ " psrld $16, %%mm0\n"
+ " pmaddwd %%mm5, %%mm0\n"
+ " paddd %%mm1, %%mm0\n"
+ " packssdw %%mm0, %%mm0\n"
+ " movd %%mm0, (%0)\n"
+ " add $4, %0\n"
+ " add $2, %3\n"
+ " mov %3, %4\n"
+ " sub %5, %4\n"
+ " cmovae %4, %3\n"
+ "4:\n"
+ " sar $1, %2\n"
+ " cmp $0, %2\n"
+ " je 6f\n"
+ "5:\n"
+ " movq (%1, %3, 4), %%mm0\n"
+ " movq 8(%1, %3, 4), %%mm2\n"
+ " movd (%0), %%mm1\n"
+ " movd 4(%0), %%mm3\n"
+ " pxor %%mm4, %%mm4\n"
+ " punpcklwd %%mm4, %%mm1\n"
+ " pcmpgtw %%mm0, %%mm4\n"
+ " pand %%mm1, %%mm4\n"
+ " movq %%mm1, %%mm5\n"
+ " pmulhw %%mm0, %%mm1\n"
+ " paddw %%mm4, %%mm1\n"
+ " psrld $16, %%mm0\n"
+ " pmaddwd %%mm5, %%mm0\n"
+ " paddd %%mm1, %%mm0\n"
+ " packssdw %%mm0, %%mm0\n"
+ " pxor %%mm4, %%mm4\n"
+ " punpcklwd %%mm4, %%mm3\n"
+ " pcmpgtw %%mm2, %%mm4\n"
+ " pand %%mm3, %%mm4\n"
+ " movq %%mm3, %%mm5\n"
+ " pmulhw %%mm2, %%mm3\n"
+ " paddw %%mm4, %%mm3\n"
+ " psrld $16, %%mm2\n"
+ " pmaddwd %%mm5, %%mm2\n"
+ " paddd %%mm3, %%mm2\n"
+ " packssdw %%mm2, %%mm2\n"
+ " movd %%mm0, (%0)\n"
+ " movd %%mm2, 4(%0)\n"
+ " add $8, %0\n"
+ " add $4, %3\n"
+ " mov %3, %4\n"
+ " sub %5, %4\n"
+ " cmovae %4, %3\n"
+ " dec %2\n"
+ " jne 5b\n"
+ "6:\n"
+ " emms\n":"+r"
+ (samples), "+r"(volumes), "+r"(length),
+ "=D"((long) channel),
+ "=&r"(temp):"X"((long) channels):"cc");
+}
--- /dev/null
+#!/bin/bash
+#
+# Run like:
+# multidelta -level=# ./reduce-ice $FILE
+# levels: 0 0 1 1 2 2 10 10
+#
+
+FILE=test.i
+CC=gcc
+CFLAGS="-Wall -std=gnu99 -O3"
+STRING="subscript"
+
+$CC -pipe -c $CFLAGS $FILE 2>&1 | grep "$STRING"
--- /dev/null
+#include <stdio.h>
+
+typedef unsigned char u8;
+typedef unsigned short u16;
+
+struct s {
+ u8 anchor[5];
+ u16 table_length;
+} __attribute__((packed));
+
+void some_function(int x);
+
+void other_function(const struct s *pointer)
+{
+ u8 checksum = 0;
+ const u8 *ptr = (const u8 *)(pointer);
+
+ for (unsigned int i = 0; i < 7; ++i)
+ printf("%x\n", ptr[i]);
+// checksum = (checksum + ptr[i]) & 0xFF;
+
+ printf("%x\n", checksum);
+// some_function((int)checksum);
+}
+
+int main() {
+ printf("%lu\n", sizeof(struct s));
+ return 0;
+}
--- /dev/null
+typedef unsigned char u8;
+typedef unsigned short u16;
+
+struct s {
+ u8 anchor[5];
+ u16 table_length;
+};
+
+void some_function(int x);
+
+void other_function(const struct s *pointer)
+{
+ u8 checksum = 0;
+ const u8 *ptr = (const u8 *)(pointer);
+
+ for (unsigned int i = 0; i < sizeof(*pointer); ++i)
+ checksum = (checksum + ptr[i]) & 0xFF;
+
+ some_function((int)checksum);
+}
--- /dev/null
+foo()
+{
+ volatile long int lock;
+ retry:
+ if (__sync_fetch_and_add(&lock, 0x00100000))
+ goto retry;
+}
--- /dev/null
+# 1 "buf/buf0buf.c"
+# 1 "<built-in>"
+# 1 "<command-line>"
+# 1 "buf/buf0buf.c"
+# 23 "buf/buf0buf.c"
+# 1 "./include/buf0buf.h" 1
+# 26 "./include/buf0buf.h"
+# 1 "./include/univ.i" 1
+# 33 "./include/univ.i"
+# 1 "./../include/my_global.h" 1
+# 83 "./../include/my_global.h"
+# 1 "./../include/my_config.h" 1
+# 84 "./../include/my_global.h" 2
+# 241 "./../include/my_global.h"
+# 1 "/usr/include/pthread.h" 1 3 4
+# 23 "/usr/include/pthread.h" 3 4
+# 1 "/usr/include/features.h" 1 3 4
+# 347 "/usr/include/features.h" 3 4
+# 1 "/usr/include/sys/cdefs.h" 1 3 4
+# 353 "/usr/include/sys/cdefs.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 354 "/usr/include/sys/cdefs.h" 2 3 4
+# 348 "/usr/include/features.h" 2 3 4
+# 371 "/usr/include/features.h" 3 4
+# 1 "/usr/include/gnu/stubs.h" 1 3 4
+
+
+
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 5 "/usr/include/gnu/stubs.h" 2 3 4
+
+
+
+
+# 1 "/usr/include/gnu/stubs-64.h" 1 3 4
+# 10 "/usr/include/gnu/stubs.h" 2 3 4
+# 372 "/usr/include/features.h" 2 3 4
+# 24 "/usr/include/pthread.h" 2 3 4
+# 1 "/usr/include/endian.h" 1 3 4
+# 37 "/usr/include/endian.h" 3 4
+# 1 "/usr/include/bits/endian.h" 1 3 4
+# 38 "/usr/include/endian.h" 2 3 4
+# 61 "/usr/include/endian.h" 3 4
+# 1 "/usr/include/bits/byteswap.h" 1 3 4
+# 62 "/usr/include/endian.h" 2 3 4
+# 25 "/usr/include/pthread.h" 2 3 4
+# 1 "/usr/include/sched.h" 1 3 4
+# 26 "/usr/include/sched.h" 3 4
+# 1 "/usr/include/bits/types.h" 1 3 4
+# 28 "/usr/include/bits/types.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 29 "/usr/include/bits/types.h" 2 3 4
+
+
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+
+
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+
+typedef signed long int __int64_t;
+typedef unsigned long int __uint64_t;
+
+
+
+
+
+
+
+typedef long int __quad_t;
+typedef unsigned long int __u_quad_t;
+# 131 "/usr/include/bits/types.h" 3 4
+# 1 "/usr/include/bits/typesizes.h" 1 3 4
+# 132 "/usr/include/bits/types.h" 2 3 4
+
+
+typedef unsigned long int __dev_t;
+typedef unsigned int __uid_t;
+typedef unsigned int __gid_t;
+typedef unsigned long int __ino_t;
+typedef unsigned long int __ino64_t;
+typedef unsigned int __mode_t;
+typedef unsigned long int __nlink_t;
+typedef long int __off_t;
+typedef long int __off64_t;
+typedef int __pid_t;
+typedef struct { int __val[2]; } __fsid_t;
+typedef long int __clock_t;
+typedef unsigned long int __rlim_t;
+typedef unsigned long int __rlim64_t;
+typedef unsigned int __id_t;
+typedef long int __time_t;
+typedef unsigned int __useconds_t;
+typedef long int __suseconds_t;
+
+typedef int __daddr_t;
+typedef long int __swblk_t;
+typedef int __key_t;
+
+
+typedef int __clockid_t;
+
+
+typedef void * __timer_t;
+
+
+typedef long int __blksize_t;
+
+
+
+
+typedef long int __blkcnt_t;
+typedef long int __blkcnt64_t;
+
+
+typedef unsigned long int __fsblkcnt_t;
+typedef unsigned long int __fsblkcnt64_t;
+
+
+typedef unsigned long int __fsfilcnt_t;
+typedef unsigned long int __fsfilcnt64_t;
+
+typedef long int __ssize_t;
+
+
+
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+
+
+typedef long int __intptr_t;
+
+
+typedef unsigned int __socklen_t;
+# 27 "/usr/include/sched.h" 2 3 4
+
+
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 214 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 3 4
+typedef long unsigned int size_t;
+# 30 "/usr/include/sched.h" 2 3 4
+
+
+# 1 "/usr/include/time.h" 1 3 4
+# 120 "/usr/include/time.h" 3 4
+struct timespec
+ {
+ __time_t tv_sec;
+ long int tv_nsec;
+ };
+# 33 "/usr/include/sched.h" 2 3 4
+
+
+# 1 "/usr/include/bits/sched.h" 1 3 4
+# 71 "/usr/include/bits/sched.h" 3 4
+struct sched_param
+ {
+ int __sched_priority;
+ };
+
+
+
+
+
+extern int clone (int (*__fn) (void *__arg), void *__child_stack,
+ int __flags, void *__arg, ...) __attribute__ ((__nothrow__));
+
+
+extern int unshare (int __flags) __attribute__ ((__nothrow__));
+
+
+extern int sched_getcpu (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+
+
+struct __sched_param
+ {
+ int __sched_priority;
+ };
+# 113 "/usr/include/bits/sched.h" 3 4
+typedef unsigned long int __cpu_mask;
+
+
+
+
+
+
+typedef struct
+{
+ __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
+} cpu_set_t;
+# 196 "/usr/include/bits/sched.h" 3 4
+
+
+extern int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp)
+ __attribute__ ((__nothrow__));
+extern cpu_set_t *__sched_cpualloc (size_t __count) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern void __sched_cpufree (cpu_set_t *__set) __attribute__ ((__nothrow__));
+
+
+# 36 "/usr/include/sched.h" 2 3 4
+
+
+
+
+
+
+
+extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
+ __attribute__ ((__nothrow__));
+
+
+extern int sched_getparam (__pid_t __pid, struct sched_param *__param) __attribute__ ((__nothrow__));
+
+
+extern int sched_setscheduler (__pid_t __pid, int __policy,
+ __const struct sched_param *__param) __attribute__ ((__nothrow__));
+
+
+extern int sched_getscheduler (__pid_t __pid) __attribute__ ((__nothrow__));
+
+
+extern int sched_yield (void) __attribute__ ((__nothrow__));
+
+
+extern int sched_get_priority_max (int __algorithm) __attribute__ ((__nothrow__));
+
+
+extern int sched_get_priority_min (int __algorithm) __attribute__ ((__nothrow__));
+
+
+extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __attribute__ ((__nothrow__));
+# 110 "/usr/include/sched.h" 3 4
+extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
+ __const cpu_set_t *__cpuset) __attribute__ ((__nothrow__));
+
+
+extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
+ cpu_set_t *__cpuset) __attribute__ ((__nothrow__));
+
+
+
+# 26 "/usr/include/pthread.h" 2 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 30 "/usr/include/time.h" 3 4
+
+
+
+
+
+
+
+
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 39 "/usr/include/time.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 43 "/usr/include/time.h" 2 3 4
+# 58 "/usr/include/time.h" 3 4
+
+
+typedef __clock_t clock_t;
+
+
+
+# 74 "/usr/include/time.h" 3 4
+
+
+typedef __time_t time_t;
+
+
+
+# 92 "/usr/include/time.h" 3 4
+typedef __clockid_t clockid_t;
+# 104 "/usr/include/time.h" 3 4
+typedef __timer_t timer_t;
+# 131 "/usr/include/time.h" 3 4
+
+
+struct tm
+{
+ int tm_sec;
+ int tm_min;
+ int tm_hour;
+ int tm_mday;
+ int tm_mon;
+ int tm_year;
+ int tm_wday;
+ int tm_yday;
+ int tm_isdst;
+
+
+ long int tm_gmtoff;
+ __const char *tm_zone;
+
+
+
+
+};
+
+
+
+
+
+
+
+
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+
+
+struct sigevent;
+
+
+
+
+
+typedef __pid_t pid_t;
+
+
+
+
+
+
+
+
+extern clock_t clock (void) __attribute__ ((__nothrow__));
+
+
+extern time_t time (time_t *__timer) __attribute__ ((__nothrow__));
+
+
+extern double difftime (time_t __time1, time_t __time0)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern size_t strftime (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format,
+ __const struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *strptime (__const char *__restrict __s,
+ __const char *__restrict __fmt, struct tm *__tp)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+# 1 "/usr/include/xlocale.h" 1 3 4
+# 28 "/usr/include/xlocale.h" 3 4
+typedef struct __locale_struct
+{
+
+ struct locale_data *__locales[13];
+
+
+ const unsigned short int *__ctype_b;
+ const int *__ctype_tolower;
+ const int *__ctype_toupper;
+
+
+ const char *__names[13];
+} *__locale_t;
+
+
+typedef __locale_t locale_t;
+# 216 "/usr/include/time.h" 2 3 4
+
+extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format,
+ __const struct tm *__restrict __tp,
+ __locale_t __loc) __attribute__ ((__nothrow__));
+
+
+
+extern char *strptime_l (__const char *__restrict __s,
+ __const char *__restrict __fmt, struct tm *__tp,
+ __locale_t __loc) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern struct tm *gmtime (__const time_t *__timer) __attribute__ ((__nothrow__));
+
+
+
+extern struct tm *localtime (__const time_t *__timer) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern struct tm *gmtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+
+
+
+extern struct tm *localtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *asctime (__const struct tm *__tp) __attribute__ ((__nothrow__));
+
+
+extern char *ctime (__const time_t *__timer) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern char *asctime_r (__const struct tm *__restrict __tp,
+ char *__restrict __buf) __attribute__ ((__nothrow__));
+
+
+extern char *ctime_r (__const time_t *__restrict __timer,
+ char *__restrict __buf) __attribute__ ((__nothrow__));
+
+
+
+
+extern char *__tzname[2];
+extern int __daylight;
+extern long int __timezone;
+
+
+
+
+extern char *tzname[2];
+
+
+
+extern void tzset (void) __attribute__ ((__nothrow__));
+
+
+
+extern int daylight;
+extern long int timezone;
+
+
+
+
+
+extern int stime (__const time_t *__when) __attribute__ ((__nothrow__));
+# 313 "/usr/include/time.h" 3 4
+extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__));
+
+
+extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__));
+
+
+extern int dysize (int __year) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+# 328 "/usr/include/time.h" 3 4
+extern int nanosleep (__const struct timespec *__requested_time,
+ struct timespec *__remaining);
+
+
+
+extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__));
+
+
+extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__));
+
+
+extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int clock_nanosleep (clockid_t __clock_id, int __flags,
+ __const struct timespec *__req,
+ struct timespec *__rem);
+
+
+extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__));
+
+
+
+
+extern int timer_create (clockid_t __clock_id,
+ struct sigevent *__restrict __evp,
+ timer_t *__restrict __timerid) __attribute__ ((__nothrow__));
+
+
+extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__));
+
+
+extern int timer_settime (timer_t __timerid, int __flags,
+ __const struct itimerspec *__restrict __value,
+ struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__));
+
+
+extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
+ __attribute__ ((__nothrow__));
+
+
+extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__));
+# 390 "/usr/include/time.h" 3 4
+extern int getdate_err;
+# 399 "/usr/include/time.h" 3 4
+extern struct tm *getdate (__const char *__string);
+# 413 "/usr/include/time.h" 3 4
+extern int getdate_r (__const char *__restrict __string,
+ struct tm *__restrict __resbufp);
+
+
+
+# 27 "/usr/include/pthread.h" 2 3 4
+
+
+# 1 "/usr/include/signal.h" 1 3 4
+# 31 "/usr/include/signal.h" 3 4
+
+
+# 1 "/usr/include/bits/sigset.h" 1 3 4
+# 24 "/usr/include/bits/sigset.h" 3 4
+typedef int __sig_atomic_t;
+
+
+
+
+typedef struct
+ {
+ unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+ } __sigset_t;
+# 34 "/usr/include/signal.h" 2 3 4
+# 50 "/usr/include/signal.h" 3 4
+typedef __sigset_t sigset_t;
+# 408 "/usr/include/signal.h" 3 4
+
+# 30 "/usr/include/pthread.h" 2 3 4
+# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
+# 24 "/usr/include/bits/pthreadtypes.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 25 "/usr/include/bits/pthreadtypes.h" 2 3 4
+# 51 "/usr/include/bits/pthreadtypes.h" 3 4
+typedef unsigned long int pthread_t;
+
+
+typedef union
+{
+ char __size[56];
+ long int __align;
+} pthread_attr_t;
+
+
+
+typedef struct __pthread_internal_list
+{
+ struct __pthread_internal_list *__prev;
+ struct __pthread_internal_list *__next;
+} __pthread_list_t;
+# 77 "/usr/include/bits/pthreadtypes.h" 3 4
+typedef union
+{
+ struct __pthread_mutex_s
+ {
+ int __lock;
+ unsigned int __count;
+ int __owner;
+
+ unsigned int __nusers;
+
+
+
+ int __kind;
+
+ int __spins;
+ __pthread_list_t __list;
+# 102 "/usr/include/bits/pthreadtypes.h" 3 4
+ } __data;
+ char __size[40];
+ long int __align;
+} pthread_mutex_t;
+
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_mutexattr_t;
+
+
+
+
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __futex;
+ __extension__ unsigned long long int __total_seq;
+ __extension__ unsigned long long int __wakeup_seq;
+ __extension__ unsigned long long int __woken_seq;
+ void *__mutex;
+ unsigned int __nwaiters;
+ unsigned int __broadcast_seq;
+ } __data;
+ char __size[48];
+ __extension__ long long int __align;
+} pthread_cond_t;
+
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_condattr_t;
+
+
+
+typedef unsigned int pthread_key_t;
+
+
+
+typedef int pthread_once_t;
+
+
+
+
+
+typedef union
+{
+
+ struct
+ {
+ int __lock;
+ unsigned int __nr_readers;
+ unsigned int __readers_wakeup;
+ unsigned int __writer_wakeup;
+ unsigned int __nr_readers_queued;
+ unsigned int __nr_writers_queued;
+ int __writer;
+ int __shared;
+ unsigned long int __pad1;
+ unsigned long int __pad2;
+
+
+ unsigned int __flags;
+ } __data;
+# 188 "/usr/include/bits/pthreadtypes.h" 3 4
+ char __size[56];
+ long int __align;
+} pthread_rwlock_t;
+
+typedef union
+{
+ char __size[8];
+ long int __align;
+} pthread_rwlockattr_t;
+
+
+
+
+
+typedef volatile int pthread_spinlock_t;
+
+
+
+
+typedef union
+{
+ char __size[32];
+ long int __align;
+} pthread_barrier_t;
+
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_barrierattr_t;
+# 31 "/usr/include/pthread.h" 2 3 4
+# 1 "/usr/include/bits/setjmp.h" 1 3 4
+# 33 "/usr/include/bits/setjmp.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 34 "/usr/include/bits/setjmp.h" 2 3 4
+# 44 "/usr/include/bits/setjmp.h" 3 4
+typedef long int __jmp_buf[64] __attribute__ ((__aligned__ (16)));
+# 32 "/usr/include/pthread.h" 2 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 33 "/usr/include/pthread.h" 2 3 4
+
+
+
+enum
+{
+ PTHREAD_CREATE_JOINABLE,
+
+ PTHREAD_CREATE_DETACHED
+
+};
+
+
+
+enum
+{
+ PTHREAD_MUTEX_TIMED_NP,
+ PTHREAD_MUTEX_RECURSIVE_NP,
+ PTHREAD_MUTEX_ERRORCHECK_NP,
+ PTHREAD_MUTEX_ADAPTIVE_NP
+
+ ,
+ PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_TIMED_NP,
+ PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
+ PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
+ PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
+
+
+
+ , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_TIMED_NP
+
+};
+
+
+
+
+enum
+{
+ PTHREAD_MUTEX_STALLED,
+ PTHREAD_MUTEX_STALLED_NP = PTHREAD_MUTEX_STALLED,
+ PTHREAD_MUTEX_ROBUST,
+ PTHREAD_MUTEX_ROBUST_NP = PTHREAD_MUTEX_ROBUST
+};
+
+
+
+
+
+enum
+{
+ PTHREAD_PRIO_NONE,
+ PTHREAD_PRIO_INHERIT,
+ PTHREAD_PRIO_PROTECT
+};
+# 117 "/usr/include/pthread.h" 3 4
+enum
+{
+ PTHREAD_RWLOCK_PREFER_READER_NP,
+ PTHREAD_RWLOCK_PREFER_WRITER_NP,
+ PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
+ PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_READER_NP
+};
+# 149 "/usr/include/pthread.h" 3 4
+enum
+{
+ PTHREAD_INHERIT_SCHED,
+
+ PTHREAD_EXPLICIT_SCHED
+
+};
+
+
+
+enum
+{
+ PTHREAD_SCOPE_SYSTEM,
+
+ PTHREAD_SCOPE_PROCESS
+
+};
+
+
+
+enum
+{
+ PTHREAD_PROCESS_PRIVATE,
+
+ PTHREAD_PROCESS_SHARED
+
+};
+# 184 "/usr/include/pthread.h" 3 4
+struct _pthread_cleanup_buffer
+{
+ void (*__routine) (void *);
+ void *__arg;
+ int __canceltype;
+ struct _pthread_cleanup_buffer *__prev;
+};
+
+
+enum
+{
+ PTHREAD_CANCEL_ENABLE,
+
+ PTHREAD_CANCEL_DISABLE
+
+};
+enum
+{
+ PTHREAD_CANCEL_DEFERRED,
+
+ PTHREAD_CANCEL_ASYNCHRONOUS
+
+};
+# 222 "/usr/include/pthread.h" 3 4
+
+
+
+
+
+extern int pthread_create (pthread_t *__restrict __newthread,
+ __const pthread_attr_t *__restrict __attr,
+ void *(*__start_routine) (void *),
+ void *__restrict __arg) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
+
+
+
+
+
+extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+
+extern int pthread_join (pthread_t __th, void **__thread_return);
+
+
+
+
+extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,
+ __const struct timespec *__abstime);
+
+
+
+
+
+
+extern int pthread_detach (pthread_t __th) __attribute__ ((__nothrow__));
+
+
+
+extern pthread_t pthread_self (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern int pthread_attr_init (pthread_attr_t *__attr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_attr_destroy (pthread_attr_t *__attr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
+ int *__detachstate)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
+ int __detachstate)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr,
+ size_t *__guardsize)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
+ size_t __guardsize)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
+ __attr,
+ struct sched_param *__restrict __param)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
+ __const struct sched_param *__restrict
+ __param) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
+ __attr, int *__restrict __policy)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
+ __attr, int *__restrict __inherit)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
+ int __inherit)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
+ int *__restrict __scope)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
+ __attr, void **__restrict __stackaddr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__));
+
+
+
+
+
+extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
+ void *__stackaddr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));
+
+
+extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
+ __attr, size_t *__restrict __stacksize)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
+ size_t __stacksize)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
+ void **__restrict __stackaddr,
+ size_t *__restrict __stacksize)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+
+
+
+extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
+ size_t __stacksize) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,
+ size_t __cpusetsize,
+ __const cpu_set_t *__cpuset)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
+
+
+
+extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr,
+ size_t __cpusetsize,
+ cpu_set_t *__cpuset)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
+
+
+
+
+
+extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+
+
+extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
+ __const struct sched_param *__param)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
+
+
+extern int pthread_getschedparam (pthread_t __target_thread,
+ int *__restrict __policy,
+ struct sched_param *__restrict __param)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+
+
+extern int pthread_setschedprio (pthread_t __target_thread, int __prio)
+ __attribute__ ((__nothrow__));
+
+
+
+
+extern int pthread_getconcurrency (void) __attribute__ ((__nothrow__));
+
+
+extern int pthread_setconcurrency (int __level) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern int pthread_yield (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,
+ __const cpu_set_t *__cpuset)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
+
+
+extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,
+ cpu_set_t *__cpuset)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
+# 468 "/usr/include/pthread.h" 3 4
+extern int pthread_once (pthread_once_t *__once_control,
+ void (*__init_routine) (void)) __attribute__ ((__nonnull__ (1, 2)));
+# 480 "/usr/include/pthread.h" 3 4
+extern int pthread_setcancelstate (int __state, int *__oldstate);
+
+
+
+extern int pthread_setcanceltype (int __type, int *__oldtype);
+
+
+extern int pthread_cancel (pthread_t __th);
+
+
+
+
+extern void pthread_testcancel (void);
+
+
+
+
+typedef struct
+{
+ struct
+ {
+ __jmp_buf __cancel_jmp_buf;
+ int __mask_was_saved;
+ } __cancel_jmp_buf[1];
+ void *__pad[4];
+} __pthread_unwind_buf_t __attribute__ ((__aligned__));
+# 514 "/usr/include/pthread.h" 3 4
+struct __pthread_cleanup_frame
+{
+ void (*__cancel_routine) (void *);
+ void *__cancel_arg;
+ int __do_it;
+ int __cancel_type;
+};
+# 654 "/usr/include/pthread.h" 3 4
+extern void __pthread_register_cancel (__pthread_unwind_buf_t *__buf)
+ ;
+# 666 "/usr/include/pthread.h" 3 4
+extern void __pthread_unregister_cancel (__pthread_unwind_buf_t *__buf)
+ ;
+# 689 "/usr/include/pthread.h" 3 4
+extern void __pthread_register_cancel_defer (__pthread_unwind_buf_t *__buf)
+ ;
+# 702 "/usr/include/pthread.h" 3 4
+extern void __pthread_unregister_cancel_restore (__pthread_unwind_buf_t *__buf)
+ ;
+
+
+
+extern void __pthread_unwind_next (__pthread_unwind_buf_t *__buf)
+ __attribute__ ((__noreturn__))
+
+ __attribute__ ((__weak__))
+
+ ;
+
+
+
+struct __jmp_buf_tag;
+extern int __sigsetjmp (struct __jmp_buf_tag *__env, int __savemask) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int pthread_mutex_init (pthread_mutex_t *__mutex,
+ __const pthread_mutexattr_t *__mutexattr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_mutex_destroy (pthread_mutex_t *__mutex)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_mutex_trylock (pthread_mutex_t *__mutex)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_mutex_lock (pthread_mutex_t *__mutex)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
+ __const struct timespec *__restrict
+ __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern int pthread_mutex_unlock (pthread_mutex_t *__mutex)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int pthread_mutex_getprioceiling (__const pthread_mutex_t *
+ __restrict __mutex,
+ int *__restrict __prioceiling)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern int pthread_mutex_setprioceiling (pthread_mutex_t *__restrict __mutex,
+ int __prioceiling,
+ int *__restrict __old_ceiling)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
+
+
+
+
+
+extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+extern int pthread_mutex_consistent_np (pthread_mutex_t *__mutex)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 782 "/usr/include/pthread.h" 3 4
+extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
+ __restrict __attr,
+ int *__restrict __pshared)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
+ int __pshared)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
+ __attr, int *__restrict __kind)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_mutexattr_getprotocol (__const pthread_mutexattr_t *
+ __restrict __attr,
+ int *__restrict __protocol)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern int pthread_mutexattr_setprotocol (pthread_mutexattr_t *__attr,
+ int __protocol)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_mutexattr_getprioceiling (__const pthread_mutexattr_t *
+ __restrict __attr,
+ int *__restrict __prioceiling)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *__attr,
+ int __prioceiling)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int pthread_mutexattr_getrobust (__const pthread_mutexattr_t *__attr,
+ int *__robustness)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int pthread_mutexattr_getrobust_np (__const pthread_mutexattr_t *__attr,
+ int *__robustness)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern int pthread_mutexattr_setrobust (pthread_mutexattr_t *__attr,
+ int __robustness)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+extern int pthread_mutexattr_setrobust_np (pthread_mutexattr_t *__attr,
+ int __robustness)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 864 "/usr/include/pthread.h" 3 4
+extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
+ __const pthread_rwlockattr_t *__restrict
+ __attr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
+ __const struct timespec *__restrict
+ __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
+ __const struct timespec *__restrict
+ __abstime) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
+ __restrict __attr,
+ int *__restrict __pshared)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
+ int __pshared)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *
+ __restrict __attr,
+ int *__restrict __pref)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
+ int __pref) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
+ __const pthread_condattr_t *__restrict
+ __cond_attr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_cond_destroy (pthread_cond_t *__cond)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_cond_signal (pthread_cond_t *__cond)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_cond_broadcast (pthread_cond_t *__cond)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
+ pthread_mutex_t *__restrict __mutex)
+ __attribute__ ((__nonnull__ (1, 2)));
+# 976 "/usr/include/pthread.h" 3 4
+extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
+ pthread_mutex_t *__restrict __mutex,
+ __const struct timespec *__restrict
+ __abstime) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+
+
+
+extern int pthread_condattr_init (pthread_condattr_t *__attr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_condattr_destroy (pthread_condattr_t *__attr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_condattr_getpshared (__const pthread_condattr_t *
+ __restrict __attr,
+ int *__restrict __pshared)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
+ int __pshared) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int pthread_condattr_getclock (__const pthread_condattr_t *
+ __restrict __attr,
+ __clockid_t *__restrict __clock_id)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_condattr_setclock (pthread_condattr_t *__attr,
+ __clockid_t __clock_id)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 1020 "/usr/include/pthread.h" 3 4
+extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_spin_destroy (pthread_spinlock_t *__lock)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_spin_lock (pthread_spinlock_t *__lock)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_spin_trylock (pthread_spinlock_t *__lock)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_spin_unlock (pthread_spinlock_t *__lock)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,
+ __const pthread_barrierattr_t *__restrict
+ __attr, unsigned int __count)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_barrier_wait (pthread_barrier_t *__barrier)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *
+ __restrict __attr,
+ int *__restrict __pshared)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,
+ int __pshared)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 1087 "/usr/include/pthread.h" 3 4
+extern int pthread_key_create (pthread_key_t *__key,
+ void (*__destr_function) (void *))
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int pthread_key_delete (pthread_key_t __key) __attribute__ ((__nothrow__));
+
+
+extern void *pthread_getspecific (pthread_key_t __key) __attribute__ ((__nothrow__));
+
+
+extern int pthread_setspecific (pthread_key_t __key,
+ __const void *__pointer) __attribute__ ((__nothrow__)) ;
+
+
+
+
+extern int pthread_getcpuclockid (pthread_t __thread_id,
+ __clockid_t *__clock_id)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+# 1121 "/usr/include/pthread.h" 3 4
+extern int pthread_atfork (void (*__prepare) (void),
+ void (*__parent) (void),
+ void (*__child) (void)) __attribute__ ((__nothrow__));
+
+
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) pthread_equal (pthread_t __thread1, pthread_t __thread2)
+{
+ return __thread1 == __thread2;
+}
+
+
+
+# 242 "./../include/my_global.h" 2
+# 311 "./../include/my_global.h"
+# 1 "/usr/include/stdio.h" 1 3 4
+# 30 "/usr/include/stdio.h" 3 4
+
+
+
+
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 35 "/usr/include/stdio.h" 2 3 4
+# 45 "/usr/include/stdio.h" 3 4
+struct _IO_FILE;
+
+
+
+typedef struct _IO_FILE FILE;
+
+
+
+
+
+# 65 "/usr/include/stdio.h" 3 4
+typedef struct _IO_FILE __FILE;
+# 75 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/libio.h" 1 3 4
+# 32 "/usr/include/libio.h" 3 4
+# 1 "/usr/include/_G_config.h" 1 3 4
+# 15 "/usr/include/_G_config.h" 3 4
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 16 "/usr/include/_G_config.h" 2 3 4
+
+
+
+
+# 1 "/usr/include/wchar.h" 1 3 4
+# 83 "/usr/include/wchar.h" 3 4
+typedef struct
+{
+ int __count;
+ union
+ {
+
+ unsigned int __wch;
+
+
+
+ char __wchb[4];
+ } __value;
+} __mbstate_t;
+# 21 "/usr/include/_G_config.h" 2 3 4
+
+typedef struct
+{
+ __off_t __pos;
+ __mbstate_t __state;
+} _G_fpos_t;
+typedef struct
+{
+ __off64_t __pos;
+ __mbstate_t __state;
+} _G_fpos64_t;
+# 53 "/usr/include/_G_config.h" 3 4
+typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
+# 33 "/usr/include/libio.h" 2 3 4
+# 53 "/usr/include/libio.h" 3 4
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stdarg.h" 1 3 4
+# 43 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stdarg.h" 3 4
+typedef __builtin_va_list __gnuc_va_list;
+# 54 "/usr/include/libio.h" 2 3 4
+# 170 "/usr/include/libio.h" 3 4
+struct _IO_jump_t; struct _IO_FILE;
+# 180 "/usr/include/libio.h" 3 4
+typedef void _IO_lock_t;
+
+
+
+
+
+struct _IO_marker {
+ struct _IO_marker *_next;
+ struct _IO_FILE *_sbuf;
+
+
+
+ int _pos;
+# 203 "/usr/include/libio.h" 3 4
+};
+
+
+enum __codecvt_result
+{
+ __codecvt_ok,
+ __codecvt_partial,
+ __codecvt_error,
+ __codecvt_noconv
+};
+# 271 "/usr/include/libio.h" 3 4
+struct _IO_FILE {
+ int _flags;
+
+
+
+
+ char* _IO_read_ptr;
+ char* _IO_read_end;
+ char* _IO_read_base;
+ char* _IO_write_base;
+ char* _IO_write_ptr;
+ char* _IO_write_end;
+ char* _IO_buf_base;
+ char* _IO_buf_end;
+
+ char *_IO_save_base;
+ char *_IO_backup_base;
+ char *_IO_save_end;
+
+ struct _IO_marker *_markers;
+
+ struct _IO_FILE *_chain;
+
+ int _fileno;
+
+
+
+ int _flags2;
+
+ __off_t _old_offset;
+
+
+
+ unsigned short _cur_column;
+ signed char _vtable_offset;
+ char _shortbuf[1];
+
+
+
+ _IO_lock_t *_lock;
+# 319 "/usr/include/libio.h" 3 4
+ __off64_t _offset;
+# 328 "/usr/include/libio.h" 3 4
+ void *__pad1;
+ void *__pad2;
+ void *__pad3;
+ void *__pad4;
+ size_t __pad5;
+
+ int _mode;
+
+ char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+
+};
+
+
+typedef struct _IO_FILE _IO_FILE;
+
+
+struct _IO_FILE_plus;
+
+extern struct _IO_FILE_plus _IO_2_1_stdin_;
+extern struct _IO_FILE_plus _IO_2_1_stdout_;
+extern struct _IO_FILE_plus _IO_2_1_stderr_;
+# 364 "/usr/include/libio.h" 3 4
+typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
+
+
+
+
+
+
+
+typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
+ size_t __n);
+
+
+
+
+
+
+
+typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
+
+
+typedef int __io_close_fn (void *__cookie);
+
+
+
+
+typedef __io_read_fn cookie_read_function_t;
+typedef __io_write_fn cookie_write_function_t;
+typedef __io_seek_fn cookie_seek_function_t;
+typedef __io_close_fn cookie_close_function_t;
+
+
+typedef struct
+{
+ __io_read_fn *read;
+ __io_write_fn *write;
+ __io_seek_fn *seek;
+ __io_close_fn *close;
+} _IO_cookie_io_functions_t;
+typedef _IO_cookie_io_functions_t cookie_io_functions_t;
+
+struct _IO_cookie_file;
+
+
+extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
+ void *__cookie, _IO_cookie_io_functions_t __fns);
+
+
+
+
+
+
+
+extern int __underflow (_IO_FILE *);
+extern int __uflow (_IO_FILE *);
+extern int __overflow (_IO_FILE *, int);
+# 458 "/usr/include/libio.h" 3 4
+extern int _IO_getc (_IO_FILE *__fp);
+extern int _IO_putc (int __c, _IO_FILE *__fp);
+extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+
+extern int _IO_peekc_locked (_IO_FILE *__fp);
+
+
+
+
+
+extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+# 488 "/usr/include/libio.h" 3 4
+extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
+ __gnuc_va_list, int *__restrict);
+extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
+ __gnuc_va_list);
+extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
+extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
+
+extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
+extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
+
+extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
+# 76 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+typedef __gnuc_va_list va_list;
+# 89 "/usr/include/stdio.h" 3 4
+
+
+typedef _G_fpos_t fpos_t;
+
+
+
+
+
+typedef _G_fpos64_t fpos64_t;
+# 141 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
+# 142 "/usr/include/stdio.h" 2 3 4
+
+
+
+extern struct _IO_FILE *stdin;
+extern struct _IO_FILE *stdout;
+extern struct _IO_FILE *stderr;
+
+
+
+
+
+
+
+extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
+
+extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
+
+
+
+
+extern int renameat (int __oldfd, __const char *__old, int __newfd,
+ __const char *__new) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern FILE *tmpfile (void) __attribute__ ((__warn_unused_result__));
+# 182 "/usr/include/stdio.h" 3 4
+extern FILE *tmpfile64 (void) __attribute__ ((__warn_unused_result__));
+
+
+
+extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+# 204 "/usr/include/stdio.h" 3 4
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+extern int fclose (FILE *__stream);
+
+
+
+
+extern int fflush (FILE *__stream);
+
+# 229 "/usr/include/stdio.h" 3 4
+extern int fflush_unlocked (FILE *__stream);
+# 239 "/usr/include/stdio.h" 3 4
+extern int fcloseall (void);
+
+
+
+
+
+
+
+
+
+extern FILE *fopen (__const char *__restrict __filename,
+ __const char *__restrict __modes) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern FILE *freopen (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+# 272 "/usr/include/stdio.h" 3 4
+
+
+extern FILE *fopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes) __attribute__ ((__warn_unused_result__));
+extern FILE *freopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern FILE *fopencookie (void *__restrict __magic_cookie,
+ __const char *__restrict __modes,
+ _IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
+
+
+
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+ int __modes, size_t __n) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+ size_t __size) __attribute__ ((__nothrow__));
+
+
+extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int fprintf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...);
+
+
+
+
+extern int printf (__const char *__restrict __format, ...);
+
+extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg);
+
+
+
+
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+
+
+
+
+
+
+extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
+ __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0))) __attribute__ ((__warn_unused_result__));
+extern int __asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
+extern int asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3))) __attribute__ ((__warn_unused_result__));
+# 394 "/usr/include/stdio.h" 3 4
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+
+
+
+
+
+
+
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int scanf (__const char *__restrict __format, ...) __attribute__ ((__warn_unused_result__));
+
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+# 445 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+
+
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 2, 0))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 1, 0))) __attribute__ ((__warn_unused_result__));
+
+
+extern int vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
+# 504 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+
+
+
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+
+
+
+
+
+extern int getchar (void);
+
+# 532 "/usr/include/stdio.h" 3 4
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+# 543 "/usr/include/stdio.h" 3 4
+extern int fgetc_unlocked (FILE *__stream);
+
+
+
+
+
+
+
+
+
+
+
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+
+
+
+
+
+extern int putchar (int __c);
+
+# 576 "/usr/include/stdio.h" 3 4
+extern int fputc_unlocked (int __c, FILE *__stream);
+
+
+
+
+
+
+
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+
+
+
+
+
+
+extern int getw (FILE *__stream);
+
+
+extern int putw (int __w, FILE *__stream);
+
+
+
+
+
+
+
+
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+ __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern char *gets (char *__s) __attribute__ ((__warn_unused_result__));
+
+# 622 "/usr/include/stdio.h" 3 4
+extern char *fgets_unlocked (char *__restrict __s, int __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+# 638 "/usr/include/stdio.h" 3 4
+extern __ssize_t __getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern __ssize_t getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern __ssize_t getline (char **__restrict __lineptr,
+ size_t *__restrict __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+
+
+
+
+
+extern int puts (__const char *__s);
+
+
+
+
+
+
+extern int ungetc (int __c, FILE *__stream);
+
+
+
+
+
+
+extern size_t fread (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __s) __attribute__ ((__warn_unused_result__));
+
+# 699 "/usr/include/stdio.h" 3 4
+extern int fputs_unlocked (__const char *__restrict __s,
+ FILE *__restrict __stream);
+# 710 "/usr/include/stdio.h" 3 4
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+extern int fseek (FILE *__stream, long int __off, int __whence);
+
+
+
+
+extern long int ftell (FILE *__stream) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern void rewind (FILE *__stream);
+
+# 746 "/usr/include/stdio.h" 3 4
+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
+
+
+
+
+extern __off_t ftello (FILE *__stream) __attribute__ ((__warn_unused_result__));
+# 765 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
+
+
+
+
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+# 788 "/usr/include/stdio.h" 3 4
+
+
+
+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
+extern __off64_t ftello64 (FILE *__stream) __attribute__ ((__warn_unused_result__));
+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
+
+
+
+
+extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
+
+extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+extern void perror (__const char *__s);
+
+
+
+
+
+
+# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
+# 27 "/usr/include/bits/sys_errlist.h" 3 4
+extern int sys_nerr;
+extern __const char *__const sys_errlist[];
+
+
+extern int _sys_nerr;
+extern __const char *__const _sys_errlist[];
+# 827 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+# 846 "/usr/include/stdio.h" 3 4
+extern FILE *popen (__const char *__command, __const char *__modes) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int pclose (FILE *__stream);
+
+
+
+
+
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *cuserid (char *__s);
+
+
+
+
+struct obstack;
+
+
+extern int obstack_printf (struct obstack *__restrict __obstack,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int obstack_vprintf (struct obstack *__restrict __obstack,
+ __const char *__restrict __format,
+ __gnuc_va_list __args)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2, 0)));
+
+
+
+
+
+
+
+extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
+# 907 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/bits/stdio.h" 1 3 4
+# 44 "/usr/include/bits/stdio.h" 3 4
+extern __inline int
+getchar (void)
+{
+ return _IO_getc (stdin);
+}
+
+
+
+
+extern __inline int
+fgetc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+
+
+
+
+
+extern __inline int
+getc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+
+
+extern __inline int
+getchar_unlocked (void)
+{
+ return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
+}
+
+
+
+
+extern __inline int
+putchar (int __c)
+{
+ return _IO_putc (__c, stdout);
+}
+
+
+
+
+extern __inline int
+fputc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+
+
+
+
+
+extern __inline int
+putc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+
+
+extern __inline int
+putchar_unlocked (int __c)
+{
+ return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
+}
+
+
+
+
+
+extern __inline __ssize_t
+getline (char **__lineptr, size_t *__n, FILE *__stream)
+{
+ return __getdelim (__lineptr, __n, '\n', __stream);
+}
+
+
+
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x10) != 0);
+}
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x20) != 0);
+}
+# 908 "/usr/include/stdio.h" 2 3 4
+
+
+# 1 "/usr/include/bits/stdio2.h" 1 3 4
+# 24 "/usr/include/bits/stdio2.h" 3 4
+extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,
+ __const char *__restrict __format,
+ __gnuc_va_list __ap) __attribute__ ((__nothrow__));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) sprintf (char *__restrict __s, __const char *__restrict __fmt, ...)
+{
+ return __builtin___sprintf_chk (__s, 2 - 1,
+ __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ());
+}
+
+
+
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) vsprintf (char *__restrict __s, __const char *__restrict __fmt, __gnuc_va_list __ap)
+
+{
+ return __builtin___vsprintf_chk (__s, 2 - 1,
+ __builtin_object_size (__s, 2 > 1), __fmt, __ap);
+}
+
+
+
+extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag,
+ size_t __slen, __const char *__restrict __format,
+ ...) __attribute__ ((__nothrow__));
+extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,
+ size_t __slen, __const char *__restrict __format,
+ __gnuc_va_list __ap) __attribute__ ((__nothrow__));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) snprintf (char *__restrict __s, size_t __n, __const char *__restrict __fmt, ...)
+
+{
+ return __builtin___snprintf_chk (__s, __n, 2 - 1,
+ __builtin_object_size (__s, 2 > 1), __fmt, __builtin_va_arg_pack ());
+}
+
+
+
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) vsnprintf (char *__restrict __s, size_t __n, __const char *__restrict __fmt, __gnuc_va_list __ap)
+
+{
+ return __builtin___vsnprintf_chk (__s, __n, 2 - 1,
+ __builtin_object_size (__s, 2 > 1), __fmt, __ap);
+}
+
+
+
+
+
+extern int __fprintf_chk (FILE *__restrict __stream, int __flag,
+ __const char *__restrict __format, ...);
+extern int __printf_chk (int __flag, __const char *__restrict __format, ...);
+extern int __vfprintf_chk (FILE *__restrict __stream, int __flag,
+ __const char *__restrict __format, __gnuc_va_list __ap);
+extern int __vprintf_chk (int __flag, __const char *__restrict __format,
+ __gnuc_va_list __ap);
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+fprintf (FILE *__restrict __stream, __const char *__restrict __fmt, ...)
+{
+ return __fprintf_chk (__stream, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+printf (__const char *__restrict __fmt, ...)
+{
+ return __printf_chk (2 - 1, __fmt, __builtin_va_arg_pack ());
+}
+
+
+
+
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+vprintf (__const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+
+ return __vfprintf_chk (stdout, 2 - 1, __fmt, __ap);
+
+
+
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+vfprintf (FILE *__restrict __stream,
+ __const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+ return __vfprintf_chk (__stream, 2 - 1, __fmt, __ap);
+}
+
+
+
+extern int __asprintf_chk (char **__restrict __ptr, int __flag,
+ __const char *__restrict __fmt, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4))) __attribute__ ((__warn_unused_result__));
+extern int __vasprintf_chk (char **__restrict __ptr, int __flag,
+ __const char *__restrict __fmt, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0))) __attribute__ ((__warn_unused_result__));
+extern int __dprintf_chk (int __fd, int __flag, __const char *__restrict __fmt,
+ ...) __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int __vdprintf_chk (int __fd, int __flag,
+ __const char *__restrict __fmt, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 3, 0)));
+extern int __obstack_printf_chk (struct obstack *__restrict __obstack,
+ int __flag, __const char *__restrict __format,
+ ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack,
+ int __flag,
+ __const char *__restrict __format,
+ __gnuc_va_list __args)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...)
+{
+ return __asprintf_chk (__ptr, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) __asprintf (char **__restrict __ptr, __const char *__restrict __fmt, ...)
+
+{
+ return __asprintf_chk (__ptr, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+dprintf (int __fd, __const char *__restrict __fmt, ...)
+{
+ return __dprintf_chk (__fd, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) obstack_printf (struct obstack *__restrict __obstack, __const char *__restrict __fmt, ...)
+
+{
+ return __obstack_printf_chk (__obstack, 2 - 1, __fmt,
+ __builtin_va_arg_pack ());
+}
+# 195 "/usr/include/bits/stdio2.h" 3 4
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) vasprintf (char **__restrict __ptr, __const char *__restrict __fmt, __gnuc_va_list __ap)
+
+{
+ return __vasprintf_chk (__ptr, 2 - 1, __fmt, __ap);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+vdprintf (int __fd, __const char *__restrict __fmt, __gnuc_va_list __ap)
+{
+ return __vdprintf_chk (__fd, 2 - 1, __fmt, __ap);
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) obstack_vprintf (struct obstack *__restrict __obstack, __const char *__restrict __fmt, __gnuc_va_list __ap)
+
+{
+ return __obstack_vprintf_chk (__obstack, 2 - 1, __fmt,
+ __ap);
+}
+
+
+
+
+
+extern char *__gets_chk (char *__str, size_t) __attribute__ ((__warn_unused_result__));
+extern char *__gets_warn (char *__str) __asm__ ("" "gets")
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use fgets or getline instead, gets can't " "specify buffer size")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char *
+gets (char *__str)
+{
+ if (__builtin_object_size (__str, 2 > 1) != (size_t) -1)
+ return __gets_chk (__str, __builtin_object_size (__str, 2 > 1));
+ return __gets_warn (__str);
+}
+
+extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern char *__fgets_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets") __attribute__ ((__warn_unused_result__));
+
+
+extern char *__fgets_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_chk")
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets called with bigger size than length " "of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char *
+fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+{
+ if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__n) || __n <= 0)
+ return __fgets_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+
+ if ((size_t) __n > __builtin_object_size (__s, 2 > 1))
+ return __fgets_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+ }
+ return __fgets_alias (__s, __n, __stream);
+}
+
+extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen,
+ size_t __size, size_t __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t __fread_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread") __attribute__ ((__warn_unused_result__));
+
+
+
+extern size_t __fread_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_chk")
+
+
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread called with bigger size * nmemb than length " "of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t
+fread (void *__restrict __ptr, size_t __size, size_t __n,
+ FILE *__restrict __stream)
+{
+ if (__builtin_object_size (__ptr, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__size)
+ || !__builtin_constant_p (__n)
+ || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
+ return __fread_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream);
+
+ if (__size * __n > __builtin_object_size (__ptr, 0))
+ return __fread_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n, __stream);
+ }
+ return __fread_alias (__ptr, __size, __n, __stream);
+}
+
+
+extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,
+ int __n, FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern char *__fgets_unlocked_alias (char *__restrict __s, int __n, FILE *__restrict __stream) __asm__ ("" "fgets_unlocked") __attribute__ ((__warn_unused_result__));
+
+
+extern char *__fgets_unlocked_chk_warn (char *__restrict __s, size_t __size, int __n, FILE *__restrict __stream) __asm__ ("" "__fgets_unlocked_chk")
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fgets_unlocked called with bigger size than length " "of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char *
+fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
+{
+ if (__builtin_object_size (__s, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__n) || __n <= 0)
+ return __fgets_unlocked_chk (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+
+ if ((size_t) __n > __builtin_object_size (__s, 2 > 1))
+ return __fgets_unlocked_chk_warn (__s, __builtin_object_size (__s, 2 > 1), __n, __stream);
+ }
+ return __fgets_unlocked_alias (__s, __n, __stream);
+}
+
+
+
+
+extern size_t __fread_unlocked_chk (void *__restrict __ptr, size_t __ptrlen,
+ size_t __size, size_t __n,
+ FILE *__restrict __stream) __attribute__ ((__warn_unused_result__));
+extern size_t __fread_unlocked_alias (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "fread_unlocked") __attribute__ ((__warn_unused_result__));
+
+
+
+extern size_t __fread_unlocked_chk_warn (void *__restrict __ptr, size_t __ptrlen, size_t __size, size_t __n, FILE *__restrict __stream) __asm__ ("" "__fread_unlocked_chk")
+
+
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("fread_unlocked called with bigger size * nmemb than " "length of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) size_t
+fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
+ FILE *__restrict __stream)
+{
+ if (__builtin_object_size (__ptr, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__size)
+ || !__builtin_constant_p (__n)
+ || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
+ return __fread_unlocked_chk (__ptr, __builtin_object_size (__ptr, 0), __size, __n,
+ __stream);
+
+ if (__size * __n > __builtin_object_size (__ptr, 0))
+ return __fread_unlocked_chk_warn (__ptr, __builtin_object_size (__ptr, 0), __size, __n,
+ __stream);
+ }
+
+
+ if (__builtin_constant_p (__size)
+ && __builtin_constant_p (__n)
+ && (__size | __n) < (((size_t) 1) << (8 * sizeof (size_t) / 2))
+ && __size * __n <= 8)
+ {
+ size_t __cnt = __size * __n;
+ char *__cptr = (char *) __ptr;
+ if (__cnt == 0)
+ return 0;
+
+ for (; __cnt > 0; --__cnt)
+ {
+ int __c = (__builtin_expect (((__stream)->_IO_read_ptr >= (__stream)->_IO_read_end), 0) ? __uflow (__stream) : *(unsigned char *) (__stream)->_IO_read_ptr++);
+ if (__c == (-1))
+ break;
+ *__cptr++ = __c;
+ }
+ return (__cptr - (char *) __ptr) / __size;
+ }
+
+ return __fread_unlocked_alias (__ptr, __size, __n, __stream);
+}
+# 911 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+
+
+# 312 "./../include/my_global.h" 2
+
+
+# 1 "/usr/include/stdlib.h" 1 3 4
+# 33 "/usr/include/stdlib.h" 3 4
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 326 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 3 4
+typedef int wchar_t;
+# 34 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+
+
+
+
+# 1 "/usr/include/bits/waitflags.h" 1 3 4
+# 43 "/usr/include/stdlib.h" 2 3 4
+# 1 "/usr/include/bits/waitstatus.h" 1 3 4
+# 67 "/usr/include/bits/waitstatus.h" 3 4
+union wait
+ {
+ int w_status;
+ struct
+ {
+
+
+
+
+
+
+
+ unsigned int:16;
+ unsigned int __w_retcode:8;
+ unsigned int __w_coredump:1;
+ unsigned int __w_termsig:7;
+
+ } __wait_terminated;
+ struct
+ {
+
+
+
+
+
+
+ unsigned int:16;
+ unsigned int __w_stopsig:8;
+ unsigned int __w_stopval:8;
+
+ } __wait_stopped;
+ };
+# 44 "/usr/include/stdlib.h" 2 3 4
+# 68 "/usr/include/stdlib.h" 3 4
+typedef union
+ {
+ union wait *__uptr;
+ int *__iptr;
+ } __WAIT_STATUS __attribute__ ((__transparent_union__));
+# 96 "/usr/include/stdlib.h" 3 4
+
+
+typedef struct
+ {
+ int quot;
+ int rem;
+ } div_t;
+
+
+
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } ldiv_t;
+
+
+
+
+
+
+
+__extension__ typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } lldiv_t;
+
+
+# 140 "/usr/include/stdlib.h" 3 4
+extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern double atof (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern int atoi (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern long int atol (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+__extension__ extern long long int atoll (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern double strtod (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern float strtof (__const char *__restrict __nptr,
+ char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern long double strtold (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern long int strtol (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+# 240 "/usr/include/stdlib.h" 3 4
+extern long int strtol_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base,
+ __locale_t __loc) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+
+extern unsigned long int strtoul_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+
+__extension__
+extern long long int strtoll_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+
+__extension__
+extern unsigned long long int strtoull_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ int __base, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 4))) __attribute__ ((__warn_unused_result__));
+
+extern double strtod_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+
+extern float strtof_l (__const char *__restrict __nptr,
+ char **__restrict __endptr, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+
+extern long double strtold_l (__const char *__restrict __nptr,
+ char **__restrict __endptr,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern __inline double
+__attribute__ ((__nothrow__)) atof (__const char *__nptr)
+{
+ return strtod (__nptr, (char **) ((void *)0));
+}
+extern __inline int
+__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
+{
+ return (int) strtol (__nptr, (char **) ((void *)0), 10);
+}
+extern __inline long int
+__attribute__ ((__nothrow__)) atol (__const char *__nptr)
+{
+ return strtol (__nptr, (char **) ((void *)0), 10);
+}
+
+
+
+
+__extension__ extern __inline long long int
+__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
+{
+ return strtoll (__nptr, (char **) ((void *)0), 10);
+}
+
+# 311 "/usr/include/stdlib.h" 3 4
+extern char *l64a (long int __n) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern long int a64l (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+# 1 "/usr/include/sys/types.h" 1 3 4
+# 29 "/usr/include/sys/types.h" 3 4
+
+
+
+
+
+
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+
+
+
+
+typedef __loff_t loff_t;
+
+
+
+typedef __ino_t ino_t;
+
+
+
+
+
+
+typedef __ino64_t ino64_t;
+
+
+
+
+typedef __dev_t dev_t;
+
+
+
+
+typedef __gid_t gid_t;
+
+
+
+
+typedef __mode_t mode_t;
+
+
+
+
+typedef __nlink_t nlink_t;
+
+
+
+
+typedef __uid_t uid_t;
+
+
+
+
+
+typedef __off_t off_t;
+
+
+
+
+
+
+typedef __off64_t off64_t;
+# 105 "/usr/include/sys/types.h" 3 4
+typedef __id_t id_t;
+
+
+
+
+typedef __ssize_t ssize_t;
+
+
+
+
+
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+
+
+
+
+
+typedef __key_t key_t;
+# 137 "/usr/include/sys/types.h" 3 4
+typedef __useconds_t useconds_t;
+
+
+
+typedef __suseconds_t suseconds_t;
+
+
+
+
+
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 148 "/usr/include/sys/types.h" 2 3 4
+
+
+
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+# 195 "/usr/include/sys/types.h" 3 4
+typedef int int8_t __attribute__ ((__mode__ (__QI__)));
+typedef int int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int int32_t __attribute__ ((__mode__ (__SI__)));
+typedef int int64_t __attribute__ ((__mode__ (__DI__)));
+
+
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+# 220 "/usr/include/sys/types.h" 3 4
+# 1 "/usr/include/sys/select.h" 1 3 4
+# 31 "/usr/include/sys/select.h" 3 4
+# 1 "/usr/include/bits/select.h" 1 3 4
+# 32 "/usr/include/sys/select.h" 2 3 4
+
+
+# 1 "/usr/include/bits/sigset.h" 1 3 4
+# 35 "/usr/include/sys/select.h" 2 3 4
+# 46 "/usr/include/sys/select.h" 3 4
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 69 "/usr/include/bits/time.h" 3 4
+struct timeval
+ {
+ __time_t tv_sec;
+ __suseconds_t tv_usec;
+ };
+# 47 "/usr/include/sys/select.h" 2 3 4
+# 55 "/usr/include/sys/select.h" 3 4
+typedef long int __fd_mask;
+# 67 "/usr/include/sys/select.h" 3 4
+typedef struct
+ {
+
+
+
+ __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
+
+
+
+
+
+ } fd_set;
+
+
+
+
+
+
+typedef __fd_mask fd_mask;
+# 99 "/usr/include/sys/select.h" 3 4
+
+# 109 "/usr/include/sys/select.h" 3 4
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ struct timeval *__restrict __timeout);
+# 121 "/usr/include/sys/select.h" 3 4
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+ const __sigset_t *__restrict __sigmask);
+
+
+
+# 221 "/usr/include/sys/types.h" 2 3 4
+
+
+# 1 "/usr/include/sys/sysmacros.h" 1 3 4
+# 30 "/usr/include/sys/sysmacros.h" 3 4
+__extension__
+extern unsigned int gnu_dev_major (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned int gnu_dev_minor (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned long long int gnu_dev_makedev (unsigned int __major,
+ unsigned int __minor)
+ __attribute__ ((__nothrow__));
+
+
+__extension__ extern __inline unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
+{
+ return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
+}
+
+__extension__ extern __inline unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
+{
+ return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
+}
+
+__extension__ extern __inline unsigned long long int
+__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
+{
+ return ((__minor & 0xff) | ((__major & 0xfff) << 8)
+ | (((unsigned long long int) (__minor & ~0xff)) << 12)
+ | (((unsigned long long int) (__major & ~0xfff)) << 32));
+}
+# 224 "/usr/include/sys/types.h" 2 3 4
+
+
+
+
+typedef __blksize_t blksize_t;
+
+
+
+
+
+
+typedef __blkcnt_t blkcnt_t;
+
+
+
+typedef __fsblkcnt_t fsblkcnt_t;
+
+
+
+typedef __fsfilcnt_t fsfilcnt_t;
+# 262 "/usr/include/sys/types.h" 3 4
+typedef __blkcnt64_t blkcnt64_t;
+typedef __fsblkcnt64_t fsblkcnt64_t;
+typedef __fsfilcnt64_t fsfilcnt64_t;
+# 273 "/usr/include/sys/types.h" 3 4
+
+# 321 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+
+
+extern long int random (void) __attribute__ ((__nothrow__));
+
+
+extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *initstate (unsigned int __seed, char *__statebuf,
+ size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+struct random_data
+ {
+ int32_t *fptr;
+ int32_t *rptr;
+ int32_t *state;
+ int rand_type;
+ int rand_deg;
+ int rand_sep;
+ int32_t *end_ptr;
+ };
+
+extern int random_r (struct random_data *__restrict __buf,
+ int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+ size_t __statelen,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+
+extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern int rand (void) __attribute__ ((__nothrow__));
+
+extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
+
+
+
+
+extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern double drand48 (void) __attribute__ ((__nothrow__));
+extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int lrand48 (void) __attribute__ ((__nothrow__));
+extern long int nrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int mrand48 (void) __attribute__ ((__nothrow__));
+extern long int jrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+struct drand48_data
+ {
+ unsigned short int __x[3];
+ unsigned short int __old_x[3];
+ unsigned short int __c;
+ unsigned short int __init;
+ unsigned long long int __a;
+ };
+
+
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+extern int seed48_r (unsigned short int __seed16v[3],
+ struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int lcong48_r (unsigned short int __param[7],
+ struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+
+
+
+extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+extern void *calloc (size_t __nmemb, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+
+
+extern void *realloc (void *__ptr, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+extern void free (void *__ptr) __attribute__ ((__nothrow__));
+
+
+
+
+extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
+
+
+
+# 1 "/usr/include/alloca.h" 1 3 4
+# 25 "/usr/include/alloca.h" 3 4
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 26 "/usr/include/alloca.h" 2 3 4
+
+
+
+
+
+
+
+extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+# 498 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 527 "/usr/include/stdlib.h" 3 4
+extern int at_quick_exit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+
+extern void quick_exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+
+extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern char *__secure_getenv (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int clearenv (void) __attribute__ ((__nothrow__));
+# 604 "/usr/include/stdlib.h" 3 4
+extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 615 "/usr/include/stdlib.h" 3 4
+extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 625 "/usr/include/stdlib.h" 3 4
+extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 635 "/usr/include/stdlib.h" 3 4
+extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 646 "/usr/include/stdlib.h" 3 4
+extern int mkostemp (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 656 "/usr/include/stdlib.h" 3 4
+extern int mkostemp64 (char *__template, int __flags) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+
+
+extern int system (__const char *__command) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern char *canonicalize_file_name (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 683 "/usr/include/stdlib.h" 3 4
+extern char *realpath (__const char *__restrict __name,
+ char *__restrict __resolved) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+
+
+typedef __compar_fn_t comparison_fn_t;
+
+
+
+typedef int (*__compar_d_fn_t) (__const void *, __const void *, void *);
+
+
+
+
+
+extern void *bsearch (__const void *__key, __const void *__base,
+ size_t __nmemb, size_t __size, __compar_fn_t __compar)
+ __attribute__ ((__nonnull__ (1, 2, 5))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+ __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+
+extern void qsort_r (void *__base, size_t __nmemb, size_t __size,
+ __compar_d_fn_t __compar, void *__arg)
+ __attribute__ ((__nonnull__ (1, 4)));
+
+
+
+
+extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+
+
+
+__extension__ extern long long int llabs (long long int __x)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern div_t div (int __numer, int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+extern ldiv_t ldiv (long int __numer, long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+__extension__ extern lldiv_t lldiv (long long int __numer,
+ long long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) __attribute__ ((__warn_unused_result__));
+
+# 756 "/usr/include/stdlib.h" 3 4
+extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern char *qecvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+extern char *qfcvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) __attribute__ ((__warn_unused_result__));
+extern char *qgcvt (long double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+
+extern int qecvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qfcvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+
+
+
+
+
+
+
+extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern int mbtowc (wchar_t *__restrict __pwc,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+extern size_t mbstowcs (wchar_t *__restrict __pwcs,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
+
+extern size_t wcstombs (char *__restrict __s,
+ __const wchar_t *__restrict __pwcs, size_t __n)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 844 "/usr/include/stdlib.h" 3 4
+extern int getsubopt (char **__restrict __optionp,
+ char *__const *__restrict __tokens,
+ char **__restrict __valuep)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+extern int posix_openpt (int __oflag) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern int grantpt (int __fd) __attribute__ ((__nothrow__));
+
+
+
+extern int unlockpt (int __fd) __attribute__ ((__nothrow__));
+
+
+
+
+extern char *ptsname (int __fd) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+extern int getpt (void);
+
+
+
+
+
+
+extern int getloadavg (double __loadavg[], int __nelem)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+# 1 "/usr/include/bits/stdlib.h" 1 3 4
+# 24 "/usr/include/bits/stdlib.h" 3 4
+extern char *__realpath_chk (__const char *__restrict __name,
+ char *__restrict __resolved,
+ size_t __resolvedlen) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern char *__realpath_alias (__const char *__restrict __name, char *__restrict __resolved) __asm__ ("" "realpath") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern char *__realpath_chk_warn (__const char *__restrict __name, char *__restrict __resolved, size_t __resolvedlen) __asm__ ("" "__realpath_chk") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__))
+
+
+
+ __attribute__((__warning__ ("second argument of realpath must be either NULL or at " "least PATH_MAX bytes long buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char *
+__attribute__ ((__nothrow__)) realpath (__const char *__restrict __name, char *__restrict __resolved)
+{
+ if (__builtin_object_size (__resolved, 2 > 1) != (size_t) -1)
+ {
+
+
+
+
+ return __realpath_chk (__name, __resolved, __builtin_object_size (__resolved, 2 > 1));
+ }
+
+ return __realpath_alias (__name, __resolved);
+}
+
+
+extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
+ size_t __nreal) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int __ptsname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ptsname_r") __attribute__ ((__nothrow__))
+
+ __attribute__ ((__nonnull__ (2)));
+extern int __ptsname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ptsname_r_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ptsname_r called with buflen bigger than " "size of buf")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) ptsname_r (int __fd, char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __ptsname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __ptsname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __ptsname_r_alias (__fd, __buf, __buflen);
+}
+
+
+extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int __wctomb_alias (char *__s, wchar_t __wchar) __asm__ ("" "wctomb") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) int
+__attribute__ ((__nothrow__)) wctomb (char *__s, wchar_t __wchar)
+{
+
+
+
+
+
+
+
+ if (__builtin_object_size (__s, 2 > 1) != (size_t) -1 && 16 > __builtin_object_size (__s, 2 > 1))
+ return __wctomb_chk (__s, __wchar, __builtin_object_size (__s, 2 > 1));
+ return __wctomb_alias (__s, __wchar);
+}
+
+
+extern size_t __mbstowcs_chk (wchar_t *__restrict __dst,
+ __const char *__restrict __src,
+ size_t __len, size_t __dstlen) __attribute__ ((__nothrow__));
+extern size_t __mbstowcs_alias (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len) __asm__ ("" "mbstowcs") __attribute__ ((__nothrow__));
+
+
+
+extern size_t __mbstowcs_chk_warn (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__mbstowcs_chk") __attribute__ ((__nothrow__))
+
+
+
+ __attribute__((__warning__ ("mbstowcs called with dst buffer smaller than len " "* sizeof (wchar_t)")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) size_t
+__attribute__ ((__nothrow__)) mbstowcs (wchar_t *__restrict __dst, __const char *__restrict __src, size_t __len)
+
+{
+ if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __mbstowcs_chk (__dst, __src, __len,
+ __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
+
+ if (__len > __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t))
+ return __mbstowcs_chk_warn (__dst, __src, __len,
+ __builtin_object_size (__dst, 2 > 1) / sizeof (wchar_t));
+ }
+ return __mbstowcs_alias (__dst, __src, __len);
+}
+
+
+extern size_t __wcstombs_chk (char *__restrict __dst,
+ __const wchar_t *__restrict __src,
+ size_t __len, size_t __dstlen) __attribute__ ((__nothrow__));
+extern size_t __wcstombs_alias (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len) __asm__ ("" "wcstombs") __attribute__ ((__nothrow__));
+
+
+
+extern size_t __wcstombs_chk_warn (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len, size_t __dstlen) __asm__ ("" "__wcstombs_chk") __attribute__ ((__nothrow__))
+
+
+
+ __attribute__((__warning__ ("wcstombs called with dst buffer smaller than len")));
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) size_t
+__attribute__ ((__nothrow__)) wcstombs (char *__restrict __dst, __const wchar_t *__restrict __src, size_t __len)
+
+{
+ if (__builtin_object_size (__dst, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __wcstombs_chk (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
+ if (__len > __builtin_object_size (__dst, 2 > 1))
+ return __wcstombs_chk_warn (__dst, __src, __len, __builtin_object_size (__dst, 2 > 1));
+ }
+ return __wcstombs_alias (__dst, __src, __len);
+}
+# 904 "/usr/include/stdlib.h" 2 3 4
+# 912 "/usr/include/stdlib.h" 3 4
+
+# 315 "./../include/my_global.h" 2
+
+
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 152 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 3 4
+typedef long int ptrdiff_t;
+# 318 "./../include/my_global.h" 2
+
+
+# 1 "/usr/include/math.h" 1 3 4
+# 30 "/usr/include/math.h" 3 4
+
+
+
+
+# 1 "/usr/include/bits/huge_val.h" 1 3 4
+# 35 "/usr/include/math.h" 2 3 4
+
+# 1 "/usr/include/bits/huge_valf.h" 1 3 4
+# 37 "/usr/include/math.h" 2 3 4
+# 1 "/usr/include/bits/huge_vall.h" 1 3 4
+# 38 "/usr/include/math.h" 2 3 4
+
+
+# 1 "/usr/include/bits/inf.h" 1 3 4
+# 41 "/usr/include/math.h" 2 3 4
+
+
+# 1 "/usr/include/bits/nan.h" 1 3 4
+# 44 "/usr/include/math.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/mathdef.h" 1 3 4
+# 38 "/usr/include/bits/mathdef.h" 3 4
+typedef float float_t;
+
+typedef double double_t;
+# 48 "/usr/include/math.h" 2 3 4
+# 71 "/usr/include/math.h" 3 4
+# 1 "/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern double acos (double __x) __attribute__ ((__nothrow__)); extern double __acos (double __x) __attribute__ ((__nothrow__));
+
+extern double asin (double __x) __attribute__ ((__nothrow__)); extern double __asin (double __x) __attribute__ ((__nothrow__));
+
+extern double atan (double __x) __attribute__ ((__nothrow__)); extern double __atan (double __x) __attribute__ ((__nothrow__));
+
+extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__)); extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__));
+
+
+extern double cos (double __x) __attribute__ ((__nothrow__)); extern double __cos (double __x) __attribute__ ((__nothrow__));
+
+extern double sin (double __x) __attribute__ ((__nothrow__)); extern double __sin (double __x) __attribute__ ((__nothrow__));
+
+extern double tan (double __x) __attribute__ ((__nothrow__)); extern double __tan (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern double cosh (double __x) __attribute__ ((__nothrow__)); extern double __cosh (double __x) __attribute__ ((__nothrow__));
+
+extern double sinh (double __x) __attribute__ ((__nothrow__)); extern double __sinh (double __x) __attribute__ ((__nothrow__));
+
+extern double tanh (double __x) __attribute__ ((__nothrow__)); extern double __tanh (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern void sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__)); extern void __sincos (double __x, double *__sinx, double *__cosx) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double acosh (double __x) __attribute__ ((__nothrow__)); extern double __acosh (double __x) __attribute__ ((__nothrow__));
+
+extern double asinh (double __x) __attribute__ ((__nothrow__)); extern double __asinh (double __x) __attribute__ ((__nothrow__));
+
+extern double atanh (double __x) __attribute__ ((__nothrow__)); extern double __atanh (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern double exp (double __x) __attribute__ ((__nothrow__)); extern double __exp (double __x) __attribute__ ((__nothrow__));
+
+
+extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__)); extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__));
+
+
+extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__)); extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__));
+
+
+extern double log (double __x) __attribute__ ((__nothrow__)); extern double __log (double __x) __attribute__ ((__nothrow__));
+
+
+extern double log10 (double __x) __attribute__ ((__nothrow__)); extern double __log10 (double __x) __attribute__ ((__nothrow__));
+
+
+extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__)); extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__));
+
+
+
+
+extern double exp10 (double __x) __attribute__ ((__nothrow__)); extern double __exp10 (double __x) __attribute__ ((__nothrow__));
+
+extern double pow10 (double __x) __attribute__ ((__nothrow__)); extern double __pow10 (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern double expm1 (double __x) __attribute__ ((__nothrow__)); extern double __expm1 (double __x) __attribute__ ((__nothrow__));
+
+
+extern double log1p (double __x) __attribute__ ((__nothrow__)); extern double __log1p (double __x) __attribute__ ((__nothrow__));
+
+
+extern double logb (double __x) __attribute__ ((__nothrow__)); extern double __logb (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double exp2 (double __x) __attribute__ ((__nothrow__)); extern double __exp2 (double __x) __attribute__ ((__nothrow__));
+
+
+extern double log2 (double __x) __attribute__ ((__nothrow__)); extern double __log2 (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern double pow (double __x, double __y) __attribute__ ((__nothrow__)); extern double __pow (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+extern double sqrt (double __x) __attribute__ ((__nothrow__)); extern double __sqrt (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern double hypot (double __x, double __y) __attribute__ ((__nothrow__)); extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double cbrt (double __x) __attribute__ ((__nothrow__)); extern double __cbrt (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern double ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double fmod (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+
+extern int __isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int __finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double drem (double __x, double __y) __attribute__ ((__nothrow__)); extern double __drem (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+extern double significand (double __x) __attribute__ ((__nothrow__)); extern double __significand (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern double copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+
+extern double nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern int isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double j0 (double) __attribute__ ((__nothrow__)); extern double __j0 (double) __attribute__ ((__nothrow__));
+extern double j1 (double) __attribute__ ((__nothrow__)); extern double __j1 (double) __attribute__ ((__nothrow__));
+extern double jn (int, double) __attribute__ ((__nothrow__)); extern double __jn (int, double) __attribute__ ((__nothrow__));
+extern double y0 (double) __attribute__ ((__nothrow__)); extern double __y0 (double) __attribute__ ((__nothrow__));
+extern double y1 (double) __attribute__ ((__nothrow__)); extern double __y1 (double) __attribute__ ((__nothrow__));
+extern double yn (int, double) __attribute__ ((__nothrow__)); extern double __yn (int, double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double erf (double) __attribute__ ((__nothrow__)); extern double __erf (double) __attribute__ ((__nothrow__));
+extern double erfc (double) __attribute__ ((__nothrow__)); extern double __erfc (double) __attribute__ ((__nothrow__));
+extern double lgamma (double) __attribute__ ((__nothrow__)); extern double __lgamma (double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double tgamma (double) __attribute__ ((__nothrow__)); extern double __tgamma (double) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern double gamma (double) __attribute__ ((__nothrow__)); extern double __gamma (double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__)); extern double __lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern double rint (double __x) __attribute__ ((__nothrow__)); extern double __rint (double __x) __attribute__ ((__nothrow__));
+
+
+extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+extern double nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern double remainder (double __x, double __y) __attribute__ ((__nothrow__)); extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__)); extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__));
+
+
+
+extern int ilogb (double __x) __attribute__ ((__nothrow__)); extern int __ilogb (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern double scalbln (double __x, long int __n) __attribute__ ((__nothrow__)); extern double __scalbln (double __x, long int __n) __attribute__ ((__nothrow__));
+
+
+
+extern double nearbyint (double __x) __attribute__ ((__nothrow__)); extern double __nearbyint (double __x) __attribute__ ((__nothrow__));
+
+
+
+extern double round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern double trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern double remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__)); extern double __remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long int lrint (double __x) __attribute__ ((__nothrow__)); extern long int __lrint (double __x) __attribute__ ((__nothrow__));
+extern long long int llrint (double __x) __attribute__ ((__nothrow__)); extern long long int __llrint (double __x) __attribute__ ((__nothrow__));
+
+
+
+extern long int lround (double __x) __attribute__ ((__nothrow__)); extern long int __lround (double __x) __attribute__ ((__nothrow__));
+extern long long int llround (double __x) __attribute__ ((__nothrow__)); extern long long int __llround (double __x) __attribute__ ((__nothrow__));
+
+
+
+extern double fdim (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fdim (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+extern double fmax (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmax (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+extern double fmin (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmin (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+extern int __fpclassify (double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+extern int __signbit (double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+
+extern double fma (double __x, double __y, double __z) __attribute__ ((__nothrow__)); extern double __fma (double __x, double __y, double __z) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern double scalb (double __x, double __n) __attribute__ ((__nothrow__)); extern double __scalb (double __x, double __n) __attribute__ ((__nothrow__));
+# 72 "/usr/include/math.h" 2 3 4
+# 94 "/usr/include/math.h" 3 4
+# 1 "/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern float acosf (float __x) __attribute__ ((__nothrow__)); extern float __acosf (float __x) __attribute__ ((__nothrow__));
+
+extern float asinf (float __x) __attribute__ ((__nothrow__)); extern float __asinf (float __x) __attribute__ ((__nothrow__));
+
+extern float atanf (float __x) __attribute__ ((__nothrow__)); extern float __atanf (float __x) __attribute__ ((__nothrow__));
+
+extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__)); extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__));
+
+
+extern float cosf (float __x) __attribute__ ((__nothrow__)); extern float __cosf (float __x) __attribute__ ((__nothrow__));
+
+extern float sinf (float __x) __attribute__ ((__nothrow__)); extern float __sinf (float __x) __attribute__ ((__nothrow__));
+
+extern float tanf (float __x) __attribute__ ((__nothrow__)); extern float __tanf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern float coshf (float __x) __attribute__ ((__nothrow__)); extern float __coshf (float __x) __attribute__ ((__nothrow__));
+
+extern float sinhf (float __x) __attribute__ ((__nothrow__)); extern float __sinhf (float __x) __attribute__ ((__nothrow__));
+
+extern float tanhf (float __x) __attribute__ ((__nothrow__)); extern float __tanhf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern void sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__)); extern void __sincosf (float __x, float *__sinx, float *__cosx) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float acoshf (float __x) __attribute__ ((__nothrow__)); extern float __acoshf (float __x) __attribute__ ((__nothrow__));
+
+extern float asinhf (float __x) __attribute__ ((__nothrow__)); extern float __asinhf (float __x) __attribute__ ((__nothrow__));
+
+extern float atanhf (float __x) __attribute__ ((__nothrow__)); extern float __atanhf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern float expf (float __x) __attribute__ ((__nothrow__)); extern float __expf (float __x) __attribute__ ((__nothrow__));
+
+
+extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__)); extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__));
+
+
+extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__)); extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__));
+
+
+extern float logf (float __x) __attribute__ ((__nothrow__)); extern float __logf (float __x) __attribute__ ((__nothrow__));
+
+
+extern float log10f (float __x) __attribute__ ((__nothrow__)); extern float __log10f (float __x) __attribute__ ((__nothrow__));
+
+
+extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__)); extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__));
+
+
+
+
+extern float exp10f (float __x) __attribute__ ((__nothrow__)); extern float __exp10f (float __x) __attribute__ ((__nothrow__));
+
+extern float pow10f (float __x) __attribute__ ((__nothrow__)); extern float __pow10f (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern float expm1f (float __x) __attribute__ ((__nothrow__)); extern float __expm1f (float __x) __attribute__ ((__nothrow__));
+
+
+extern float log1pf (float __x) __attribute__ ((__nothrow__)); extern float __log1pf (float __x) __attribute__ ((__nothrow__));
+
+
+extern float logbf (float __x) __attribute__ ((__nothrow__)); extern float __logbf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float exp2f (float __x) __attribute__ ((__nothrow__)); extern float __exp2f (float __x) __attribute__ ((__nothrow__));
+
+
+extern float log2f (float __x) __attribute__ ((__nothrow__)); extern float __log2f (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern float powf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __powf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+extern float sqrtf (float __x) __attribute__ ((__nothrow__)); extern float __sqrtf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float cbrtf (float __x) __attribute__ ((__nothrow__)); extern float __cbrtf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern float ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+
+extern int __isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int __finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float dremf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __dremf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+extern float significandf (float __x) __attribute__ ((__nothrow__)); extern float __significandf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+
+extern float nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern int isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float j0f (float) __attribute__ ((__nothrow__)); extern float __j0f (float) __attribute__ ((__nothrow__));
+extern float j1f (float) __attribute__ ((__nothrow__)); extern float __j1f (float) __attribute__ ((__nothrow__));
+extern float jnf (int, float) __attribute__ ((__nothrow__)); extern float __jnf (int, float) __attribute__ ((__nothrow__));
+extern float y0f (float) __attribute__ ((__nothrow__)); extern float __y0f (float) __attribute__ ((__nothrow__));
+extern float y1f (float) __attribute__ ((__nothrow__)); extern float __y1f (float) __attribute__ ((__nothrow__));
+extern float ynf (int, float) __attribute__ ((__nothrow__)); extern float __ynf (int, float) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float erff (float) __attribute__ ((__nothrow__)); extern float __erff (float) __attribute__ ((__nothrow__));
+extern float erfcf (float) __attribute__ ((__nothrow__)); extern float __erfcf (float) __attribute__ ((__nothrow__));
+extern float lgammaf (float) __attribute__ ((__nothrow__)); extern float __lgammaf (float) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float tgammaf (float) __attribute__ ((__nothrow__)); extern float __tgammaf (float) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern float gammaf (float) __attribute__ ((__nothrow__)); extern float __gammaf (float) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__)); extern float __lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern float rintf (float __x) __attribute__ ((__nothrow__)); extern float __rintf (float __x) __attribute__ ((__nothrow__));
+
+
+extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+extern float nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__)); extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__));
+
+
+
+extern int ilogbf (float __x) __attribute__ ((__nothrow__)); extern int __ilogbf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern float scalblnf (float __x, long int __n) __attribute__ ((__nothrow__)); extern float __scalblnf (float __x, long int __n) __attribute__ ((__nothrow__));
+
+
+
+extern float nearbyintf (float __x) __attribute__ ((__nothrow__)); extern float __nearbyintf (float __x) __attribute__ ((__nothrow__));
+
+
+
+extern float roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern float truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern float remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__)); extern float __remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long int lrintf (float __x) __attribute__ ((__nothrow__)); extern long int __lrintf (float __x) __attribute__ ((__nothrow__));
+extern long long int llrintf (float __x) __attribute__ ((__nothrow__)); extern long long int __llrintf (float __x) __attribute__ ((__nothrow__));
+
+
+
+extern long int lroundf (float __x) __attribute__ ((__nothrow__)); extern long int __lroundf (float __x) __attribute__ ((__nothrow__));
+extern long long int llroundf (float __x) __attribute__ ((__nothrow__)); extern long long int __llroundf (float __x) __attribute__ ((__nothrow__));
+
+
+
+extern float fdimf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fdimf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+extern float fmaxf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmaxf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+extern float fminf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fminf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+extern int __fpclassifyf (float __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+extern int __signbitf (float __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+
+extern float fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__)); extern float __fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern float scalbf (float __x, float __n) __attribute__ ((__nothrow__)); extern float __scalbf (float __x, float __n) __attribute__ ((__nothrow__));
+# 95 "/usr/include/math.h" 2 3 4
+# 141 "/usr/include/math.h" 3 4
+# 1 "/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern long double acosl (long double __x) __attribute__ ((__nothrow__)); extern long double __acosl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double asinl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double atanl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__)); extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double cosl (long double __x) __attribute__ ((__nothrow__)); extern long double __cosl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double sinl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double tanl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern long double coshl (long double __x) __attribute__ ((__nothrow__)); extern long double __coshl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double sinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinhl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double tanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanhl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern void sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__)); extern void __sincosl (long double __x, long double *__sinx, long double *__cosx) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double acoshl (long double __x) __attribute__ ((__nothrow__)); extern long double __acoshl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double asinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinhl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double atanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanhl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern long double expl (long double __x) __attribute__ ((__nothrow__)); extern long double __expl (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__)); extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__));
+
+
+extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__)); extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__));
+
+
+extern long double logl (long double __x) __attribute__ ((__nothrow__)); extern long double __logl (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double log10l (long double __x) __attribute__ ((__nothrow__)); extern long double __log10l (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__)); extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__));
+
+
+
+
+extern long double exp10l (long double __x) __attribute__ ((__nothrow__)); extern long double __exp10l (long double __x) __attribute__ ((__nothrow__));
+
+extern long double pow10l (long double __x) __attribute__ ((__nothrow__)); extern long double __pow10l (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern long double expm1l (long double __x) __attribute__ ((__nothrow__)); extern long double __expm1l (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double log1pl (long double __x) __attribute__ ((__nothrow__)); extern long double __log1pl (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double logbl (long double __x) __attribute__ ((__nothrow__)); extern long double __logbl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double exp2l (long double __x) __attribute__ ((__nothrow__)); extern long double __exp2l (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double log2l (long double __x) __attribute__ ((__nothrow__)); extern long double __log2l (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+extern long double sqrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double cbrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern long double ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+
+extern int __isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int __finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double dreml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __dreml (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+extern long double significandl (long double __x) __attribute__ ((__nothrow__)); extern long double __significandl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+
+extern long double nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern int isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double j0l (long double) __attribute__ ((__nothrow__)); extern long double __j0l (long double) __attribute__ ((__nothrow__));
+extern long double j1l (long double) __attribute__ ((__nothrow__)); extern long double __j1l (long double) __attribute__ ((__nothrow__));
+extern long double jnl (int, long double) __attribute__ ((__nothrow__)); extern long double __jnl (int, long double) __attribute__ ((__nothrow__));
+extern long double y0l (long double) __attribute__ ((__nothrow__)); extern long double __y0l (long double) __attribute__ ((__nothrow__));
+extern long double y1l (long double) __attribute__ ((__nothrow__)); extern long double __y1l (long double) __attribute__ ((__nothrow__));
+extern long double ynl (int, long double) __attribute__ ((__nothrow__)); extern long double __ynl (int, long double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double erfl (long double) __attribute__ ((__nothrow__)); extern long double __erfl (long double) __attribute__ ((__nothrow__));
+extern long double erfcl (long double) __attribute__ ((__nothrow__)); extern long double __erfcl (long double) __attribute__ ((__nothrow__));
+extern long double lgammal (long double) __attribute__ ((__nothrow__)); extern long double __lgammal (long double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double tgammal (long double) __attribute__ ((__nothrow__)); extern long double __tgammal (long double) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern long double gammal (long double) __attribute__ ((__nothrow__)); extern long double __gammal (long double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__)); extern long double __lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern long double rintl (long double __x) __attribute__ ((__nothrow__)); extern long double __rintl (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+extern long double nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__)); extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__));
+
+
+
+extern int ilogbl (long double __x) __attribute__ ((__nothrow__)); extern int __ilogbl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern long double scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__)); extern long double __scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__));
+
+
+
+extern long double nearbyintl (long double __x) __attribute__ ((__nothrow__)); extern long double __nearbyintl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+extern long double roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern long double truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern long double remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__)); extern long double __remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long int lrintl (long double __x) __attribute__ ((__nothrow__)); extern long int __lrintl (long double __x) __attribute__ ((__nothrow__));
+extern long long int llrintl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llrintl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+extern long int lroundl (long double __x) __attribute__ ((__nothrow__)); extern long int __lroundl (long double __x) __attribute__ ((__nothrow__));
+extern long long int llroundl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llroundl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+extern long double fdiml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fdiml (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+extern long double fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+extern long double fminl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fminl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+extern int __fpclassifyl (long double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+extern int __signbitl (long double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+
+extern long double fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__)); extern long double __fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern long double scalbl (long double __x, long double __n) __attribute__ ((__nothrow__)); extern long double __scalbl (long double __x, long double __n) __attribute__ ((__nothrow__));
+# 142 "/usr/include/math.h" 2 3 4
+# 157 "/usr/include/math.h" 3 4
+extern int signgam;
+# 198 "/usr/include/math.h" 3 4
+enum
+ {
+ FP_NAN,
+
+ FP_INFINITE,
+
+ FP_ZERO,
+
+ FP_SUBNORMAL,
+
+ FP_NORMAL
+
+ };
+# 284 "/usr/include/math.h" 3 4
+typedef enum
+{
+ _IEEE_ = -1,
+ _SVID_,
+ _XOPEN_,
+ _POSIX_,
+ _ISOC_
+} _LIB_VERSION_TYPE;
+
+
+
+
+extern _LIB_VERSION_TYPE _LIB_VERSION;
+# 309 "/usr/include/math.h" 3 4
+struct exception
+
+ {
+ int type;
+ char *name;
+ double arg1;
+ double arg2;
+ double retval;
+ };
+
+
+
+
+extern int matherr (struct exception *__exc);
+# 409 "/usr/include/math.h" 3 4
+# 1 "/usr/include/bits/mathinline.h" 1 3 4
+# 63 "/usr/include/bits/mathinline.h" 3 4
+extern __inline int
+__attribute__ ((__nothrow__)) __signbitf (float __x)
+{
+ __extension__ union { float __f; int __i; } __u = { __f: __x };
+ return __u.__i < 0;
+}
+extern __inline int
+__attribute__ ((__nothrow__)) __signbit (double __x)
+{
+ __extension__ union { double __d; int __i[2]; } __u = { __d: __x };
+ return __u.__i[0] < 0;
+}
+
+extern __inline int
+__attribute__ ((__nothrow__)) __signbitl (long double __x)
+{
+ __extension__ union { long double __d; int __i[4]; } __u = { __d: __x };
+ return __u.__i[0] < 0;
+}
+# 116 "/usr/include/bits/mathinline.h" 3 4
+extern __inline double fdim (double __x, double __y) __attribute__ ((__nothrow__));
+extern __inline double
+__attribute__ ((__nothrow__)) fdim (double __x, double __y)
+{
+ return __x <= __y ? 0 : __x - __y;
+}
+
+extern __inline float fdimf (float __x, float __y) __attribute__ ((__nothrow__));
+extern __inline float
+__attribute__ ((__nothrow__)) fdimf (float __x, float __y)
+{
+ return __x <= __y ? 0 : __x - __y;
+}
+# 410 "/usr/include/math.h" 2 3 4
+# 465 "/usr/include/math.h" 3 4
+
+# 321 "./../include/my_global.h" 2
+
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/limits.h" 1 3 4
+# 11 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/limits.h" 3 4
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/syslimits.h" 1 3 4
+
+
+
+
+
+
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/limits.h" 1 3 4
+# 122 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/limits.h" 3 4
+# 1 "/usr/include/limits.h" 1 3 4
+# 145 "/usr/include/limits.h" 3 4
+# 1 "/usr/include/bits/posix1_lim.h" 1 3 4
+# 157 "/usr/include/bits/posix1_lim.h" 3 4
+# 1 "/usr/include/bits/local_lim.h" 1 3 4
+# 40 "/usr/include/bits/local_lim.h" 3 4
+# 1 "/usr/include/linux/limits.h" 1 3 4
+# 41 "/usr/include/bits/local_lim.h" 2 3 4
+# 158 "/usr/include/bits/posix1_lim.h" 2 3 4
+# 146 "/usr/include/limits.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/posix2_lim.h" 1 3 4
+# 150 "/usr/include/limits.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/xopen_lim.h" 1 3 4
+# 34 "/usr/include/bits/xopen_lim.h" 3 4
+# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
+# 35 "/usr/include/bits/xopen_lim.h" 2 3 4
+# 154 "/usr/include/limits.h" 2 3 4
+# 123 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/limits.h" 2 3 4
+# 8 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/syslimits.h" 2 3 4
+# 12 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include-fixed/limits.h" 2 3 4
+# 323 "./../include/my_global.h" 2
+
+
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/float.h" 1 3 4
+# 326 "./../include/my_global.h" 2
+
+
+# 1 "/usr/include/fenv.h" 1 3 4
+# 58 "/usr/include/fenv.h" 3 4
+# 1 "/usr/include/bits/fenv.h" 1 3 4
+# 26 "/usr/include/bits/fenv.h" 3 4
+enum
+ {
+ FE_INEXACT = 1 << (31 - 6),
+
+ FE_DIVBYZERO = 1 << (31 - 5),
+
+ FE_UNDERFLOW = 1 << (31 - 4),
+
+ FE_OVERFLOW = 1 << (31 - 3),
+# 43 "/usr/include/bits/fenv.h" 3 4
+ FE_INVALID = 1 << (31 - 2),
+# 54 "/usr/include/bits/fenv.h" 3 4
+ FE_INVALID_SNAN = 1 << (31 - 7),
+
+
+
+ FE_INVALID_ISI = 1 << (31 - 8),
+
+
+
+ FE_INVALID_IDI = 1 << (31 - 9),
+
+
+
+ FE_INVALID_ZDZ = 1 << (31 - 10),
+
+
+
+ FE_INVALID_IMZ = 1 << (31 - 11),
+
+
+
+ FE_INVALID_COMPARE = 1 << (31 - 12),
+
+
+
+
+
+ FE_INVALID_SOFTWARE = 1 << (31 - 21),
+
+
+
+
+ FE_INVALID_SQRT = 1 << (31 - 22),
+
+
+
+ FE_INVALID_INTEGER_CONVERSION = 1 << (31 - 23)
+
+
+
+
+
+
+
+ };
+
+
+
+
+
+
+
+enum
+ {
+ FE_TONEAREST = 0,
+
+ FE_TOWARDZERO = 1,
+
+ FE_UPWARD = 2,
+
+ FE_DOWNWARD = 3
+
+ };
+
+
+typedef unsigned int fexcept_t;
+
+
+
+typedef double fenv_t;
+
+
+extern const fenv_t __fe_dfl_env;
+
+
+
+
+
+extern const fenv_t __fe_enabled_env;
+
+
+
+
+extern const fenv_t __fe_nonieee_env;
+
+
+
+
+
+
+
+
+
+
+extern const fenv_t *__fe_nomask_env (void);
+
+
+
+
+
+
+
+extern const fenv_t *__fe_mask_env (void);
+
+
+
+# 59 "/usr/include/fenv.h" 2 3 4
+
+
+
+
+
+
+extern int feclearexcept (int __excepts) __attribute__ ((__nothrow__));
+
+
+
+extern int fegetexceptflag (fexcept_t *__flagp, int __excepts) __attribute__ ((__nothrow__));
+
+
+extern int feraiseexcept (int __excepts) __attribute__ ((__nothrow__));
+
+
+
+extern int fesetexceptflag (__const fexcept_t *__flagp, int __excepts) __attribute__ ((__nothrow__));
+
+
+
+extern int fetestexcept (int __excepts) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int fegetround (void) __attribute__ ((__nothrow__));
+
+
+extern int fesetround (int __rounding_direction) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int fegetenv (fenv_t *__envp) __attribute__ ((__nothrow__));
+
+
+
+
+extern int feholdexcept (fenv_t *__envp) __attribute__ ((__nothrow__));
+
+
+
+extern int fesetenv (__const fenv_t *__envp) __attribute__ ((__nothrow__));
+
+
+
+
+extern int feupdateenv (__const fenv_t *__envp) __attribute__ ((__nothrow__));
+
+
+
+
+# 1 "/usr/include/bits/fenvinline.h" 1 3 4
+# 116 "/usr/include/fenv.h" 2 3 4
+
+
+
+
+
+
+
+extern int feenableexcept (int __excepts) __attribute__ ((__nothrow__));
+
+
+
+
+extern int fedisableexcept (int __excepts) __attribute__ ((__nothrow__));
+
+
+extern int fegetexcept (void) __attribute__ ((__nothrow__));
+
+
+
+# 329 "./../include/my_global.h" 2
+
+
+
+
+
+
+# 1 "/usr/include/fcntl.h" 1 3 4
+# 30 "/usr/include/fcntl.h" 3 4
+
+
+
+
+# 1 "/usr/include/bits/fcntl.h" 1 3 4
+# 27 "/usr/include/bits/fcntl.h" 3 4
+# 1 "/usr/include/bits/uio.h" 1 3 4
+# 44 "/usr/include/bits/uio.h" 3 4
+struct iovec
+ {
+ void *iov_base;
+ size_t iov_len;
+ };
+# 28 "/usr/include/bits/fcntl.h" 2 3 4
+# 144 "/usr/include/bits/fcntl.h" 3 4
+struct flock
+ {
+ short int l_type;
+ short int l_whence;
+
+ __off_t l_start;
+ __off_t l_len;
+
+
+
+
+ __pid_t l_pid;
+ };
+
+
+struct flock64
+ {
+ short int l_type;
+ short int l_whence;
+ __off64_t l_start;
+ __off64_t l_len;
+ __pid_t l_pid;
+ };
+# 211 "/usr/include/bits/fcntl.h" 3 4
+
+
+
+
+
+extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
+ __attribute__ ((__nothrow__));
+
+
+
+extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
+ unsigned int __flags);
+
+
+
+extern ssize_t vmsplice (int __fdout, const struct iovec *__iov,
+ size_t __count, unsigned int __flags);
+
+
+extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
+ __off64_t *__offout, size_t __len,
+ unsigned int __flags);
+
+
+extern ssize_t tee (int __fdin, int __fdout, size_t __len,
+ unsigned int __flags);
+
+
+
+extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
+# 251 "/usr/include/bits/fcntl.h" 3 4
+extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
+ __off64_t __len);
+
+
+
+
+
+# 35 "/usr/include/fcntl.h" 2 3 4
+
+
+
+# 1 "/usr/include/sys/stat.h" 1 3 4
+# 105 "/usr/include/sys/stat.h" 3 4
+
+
+# 1 "/usr/include/bits/stat.h" 1 3 4
+# 24 "/usr/include/bits/stat.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 25 "/usr/include/bits/stat.h" 2 3 4
+# 140 "/usr/include/bits/stat.h" 3 4
+struct stat
+ {
+ __dev_t st_dev;
+
+ __ino_t st_ino;
+
+
+
+ __nlink_t st_nlink;
+ __mode_t st_mode;
+ __uid_t st_uid;
+ __gid_t st_gid;
+ int __pad2;
+ __dev_t st_rdev;
+
+ __off_t st_size;
+
+
+
+ __blksize_t st_blksize;
+
+
+ __blkcnt_t st_blocks;
+# 173 "/usr/include/bits/stat.h" 3 4
+ struct timespec st_atim;
+ struct timespec st_mtim;
+ struct timespec st_ctim;
+# 187 "/usr/include/bits/stat.h" 3 4
+ unsigned long int __unused4;
+ unsigned long int __unused5;
+ unsigned long int __unused6;
+ };
+
+
+struct stat64
+ {
+ __dev_t st_dev;
+ __ino64_t st_ino;
+ __nlink_t st_nlink;
+ __mode_t st_mode;
+ __uid_t st_uid;
+ __gid_t st_gid;
+ int __pad2;
+ __dev_t st_rdev;
+ __off64_t st_size;
+ __blksize_t st_blksize;
+ __blkcnt64_t st_blocks;
+
+
+
+
+
+
+
+ struct timespec st_atim;
+ struct timespec st_mtim;
+ struct timespec st_ctim;
+# 227 "/usr/include/bits/stat.h" 3 4
+ unsigned long int __unused4;
+ unsigned long int __unused5;
+ unsigned long int __unused6;
+ };
+# 108 "/usr/include/sys/stat.h" 2 3 4
+# 209 "/usr/include/sys/stat.h" 3 4
+extern int stat (__const char *__restrict __file,
+ struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern int fstat (int __fd, struct stat *__buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+# 228 "/usr/include/sys/stat.h" 3 4
+extern int stat64 (__const char *__restrict __file,
+ struct stat64 *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int fstat64 (int __fd, struct stat64 *__buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+
+
+extern int fstatat (int __fd, __const char *__restrict __file,
+ struct stat *__restrict __buf, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+# 253 "/usr/include/sys/stat.h" 3 4
+extern int fstatat64 (int __fd, __const char *__restrict __file,
+ struct stat64 *__restrict __buf, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+
+
+
+
+
+
+
+extern int lstat (__const char *__restrict __file,
+ struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+# 276 "/usr/include/sys/stat.h" 3 4
+extern int lstat64 (__const char *__restrict __file,
+ struct stat64 *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern int chmod (__const char *__file, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int lchmod (__const char *__file, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int fchmodat (int __fd, __const char *__file, __mode_t __mode,
+ int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__));
+
+
+
+
+extern __mode_t getumask (void) __attribute__ ((__nothrow__));
+
+
+
+extern int mkdir (__const char *__path, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int mkdirat (int __fd, __const char *__path, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+
+extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int mknodat (int __fd, __const char *__path, __mode_t __mode,
+ __dev_t __dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+extern int mkfifo (__const char *__path, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+extern int utimensat (int __fd, __const char *__path,
+ __const struct timespec __times[2],
+ int __flags)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+extern int futimens (int __fd, __const struct timespec __times[2]) __attribute__ ((__nothrow__));
+# 399 "/usr/include/sys/stat.h" 3 4
+extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
+extern int __xstat (int __ver, __const char *__filename,
+ struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern int __lxstat (int __ver, __const char *__filename,
+ struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern int __fxstatat (int __ver, int __fildes, __const char *__filename,
+ struct stat *__stat_buf, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4)));
+# 432 "/usr/include/sys/stat.h" 3 4
+extern int __fxstat64 (int __ver, int __fildes, struct stat64 *__stat_buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
+extern int __xstat64 (int __ver, __const char *__filename,
+ struct stat64 *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern int __lxstat64 (int __ver, __const char *__filename,
+ struct stat64 *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern int __fxstatat64 (int __ver, int __fildes, __const char *__filename,
+ struct stat64 *__stat_buf, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4)));
+
+extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
+ __dev_t *__dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+
+extern int __xmknodat (int __ver, int __fd, __const char *__path,
+ __mode_t __mode, __dev_t *__dev)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 5)));
+
+
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) stat (__const char *__path, struct stat *__statbuf)
+{
+ return __xstat (1, __path, __statbuf);
+}
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) lstat (__const char *__path, struct stat *__statbuf)
+{
+ return __lxstat (1, __path, __statbuf);
+}
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) fstat (int __fd, struct stat *__statbuf)
+{
+ return __fxstat (1, __fd, __statbuf);
+}
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) fstatat (int __fd, __const char *__filename, struct stat *__statbuf, int __flag)
+
+{
+ return __fxstatat (1, __fd, __filename, __statbuf, __flag);
+}
+
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
+{
+ return __xmknod (1, __path, __mode, &__dev);
+}
+
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) mknodat (int __fd, __const char *__path, __mode_t __mode, __dev_t __dev)
+
+{
+ return __xmknodat (1, __fd, __path, __mode, &__dev);
+}
+
+
+
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) stat64 (__const char *__path, struct stat64 *__statbuf)
+{
+ return __xstat64 (1, __path, __statbuf);
+}
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) lstat64 (__const char *__path, struct stat64 *__statbuf)
+{
+ return __lxstat64 (1, __path, __statbuf);
+}
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) fstat64 (int __fd, struct stat64 *__statbuf)
+{
+ return __fxstat64 (1, __fd, __statbuf);
+}
+
+
+extern __inline int
+__attribute__ ((__nothrow__)) fstatat64 (int __fd, __const char *__filename, struct stat64 *__statbuf, int __flag)
+
+{
+ return __fxstatat64 (1, __fd, __filename, __statbuf, __flag);
+}
+
+
+
+
+
+
+
+# 39 "/usr/include/fcntl.h" 2 3 4
+# 76 "/usr/include/fcntl.h" 3 4
+extern int fcntl (int __fd, int __cmd, ...);
+# 85 "/usr/include/fcntl.h" 3 4
+extern int open (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
+# 95 "/usr/include/fcntl.h" 3 4
+extern int open64 (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1)));
+# 109 "/usr/include/fcntl.h" 3 4
+extern int openat (int __fd, __const char *__file, int __oflag, ...)
+ __attribute__ ((__nonnull__ (2)));
+# 120 "/usr/include/fcntl.h" 3 4
+extern int openat64 (int __fd, __const char *__file, int __oflag, ...)
+ __attribute__ ((__nonnull__ (2)));
+# 130 "/usr/include/fcntl.h" 3 4
+extern int creat (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1)));
+# 140 "/usr/include/fcntl.h" 3 4
+extern int creat64 (__const char *__file, __mode_t __mode) __attribute__ ((__nonnull__ (1)));
+# 159 "/usr/include/fcntl.h" 3 4
+extern int lockf (int __fd, int __cmd, __off_t __len);
+# 168 "/usr/include/fcntl.h" 3 4
+extern int lockf64 (int __fd, int __cmd, __off64_t __len);
+
+
+
+
+
+
+
+extern int posix_fadvise (int __fd, __off_t __offset, __off_t __len,
+ int __advise) __attribute__ ((__nothrow__));
+# 188 "/usr/include/fcntl.h" 3 4
+extern int posix_fadvise64 (int __fd, __off64_t __offset, __off64_t __len,
+ int __advise) __attribute__ ((__nothrow__));
+# 198 "/usr/include/fcntl.h" 3 4
+extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len);
+# 209 "/usr/include/fcntl.h" 3 4
+extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len);
+
+
+
+
+
+
+
+# 1 "/usr/include/bits/fcntl2.h" 1 3 4
+# 27 "/usr/include/bits/fcntl2.h" 3 4
+extern int __open_2 (__const char *__path, int __oflag) __attribute__ ((__nonnull__ (1)));
+extern int __open_alias (__const char *__path, int __oflag, ...) __asm__ ("" "open") __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+extern void __open_too_many_args (void) __attribute__((__error__ ("open can be called either with 2 or 3 arguments, not more")));
+
+extern void __open_missing_mode (void) __attribute__((__error__ ("open with O_CREAT in second argument needs 3 arguments")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+open (__const char *__path, int __oflag, ...)
+{
+ if (__builtin_va_arg_pack_len () > 1)
+ __open_too_many_args ();
+
+ if (__builtin_constant_p (__oflag))
+ {
+ if ((__oflag & 0100) != 0 && __builtin_va_arg_pack_len () < 1)
+ {
+ __open_missing_mode ();
+ return __open_2 (__path, __oflag);
+ }
+ return __open_alias (__path, __oflag, __builtin_va_arg_pack ());
+ }
+
+ if (__builtin_va_arg_pack_len () < 1)
+ return __open_2 (__path, __oflag);
+
+ return __open_alias (__path, __oflag, __builtin_va_arg_pack ());
+}
+
+
+
+extern int __open64_2 (__const char *__path, int __oflag) __attribute__ ((__nonnull__ (1)));
+extern int __open64_alias (__const char *__path, int __oflag, ...) __asm__ ("" "open64") __attribute__ ((__nonnull__ (1)));
+
+extern void __open64_too_many_args (void) __attribute__((__error__ ("open64 can be called either with 2 or 3 arguments, not more")));
+
+extern void __open64_missing_mode (void) __attribute__((__error__ ("open64 with O_CREAT in second argument needs 3 arguments")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+open64 (__const char *__path, int __oflag, ...)
+{
+ if (__builtin_va_arg_pack_len () > 1)
+ __open64_too_many_args ();
+
+ if (__builtin_constant_p (__oflag))
+ {
+ if ((__oflag & 0100) != 0 && __builtin_va_arg_pack_len () < 1)
+ {
+ __open64_missing_mode ();
+ return __open64_2 (__path, __oflag);
+ }
+ return __open64_alias (__path, __oflag, __builtin_va_arg_pack ());
+ }
+
+ if (__builtin_va_arg_pack_len () < 1)
+ return __open64_2 (__path, __oflag);
+
+ return __open64_alias (__path, __oflag, __builtin_va_arg_pack ());
+}
+
+
+
+
+
+extern int __openat_2 (int __fd, __const char *__path, int __oflag)
+ __attribute__ ((__nonnull__ (2)));
+extern int __openat_alias (int __fd, __const char *__path, int __oflag, ...) __asm__ ("" "openat")
+
+ __attribute__ ((__nonnull__ (2)));
+# 112 "/usr/include/bits/fcntl2.h" 3 4
+extern void __openat_too_many_args (void) __attribute__((__error__ ("openat can be called either with 3 or 4 arguments, not more")));
+
+extern void __openat_missing_mode (void) __attribute__((__error__ ("openat with O_CREAT in third argument needs 4 arguments")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+openat (int __fd, __const char *__path, int __oflag, ...)
+{
+ if (__builtin_va_arg_pack_len () > 1)
+ __openat_too_many_args ();
+
+ if (__builtin_constant_p (__oflag))
+ {
+ if ((__oflag & 0100) != 0 && __builtin_va_arg_pack_len () < 1)
+ {
+ __openat_missing_mode ();
+ return __openat_2 (__fd, __path, __oflag);
+ }
+ return __openat_alias (__fd, __path, __oflag, __builtin_va_arg_pack ());
+ }
+
+ if (__builtin_va_arg_pack_len () < 1)
+ return __openat_2 (__fd, __path, __oflag);
+
+ return __openat_alias (__fd, __path, __oflag, __builtin_va_arg_pack ());
+}
+
+
+
+extern int __openat64_2 (int __fd, __const char *__path, int __oflag)
+ __attribute__ ((__nonnull__ (2)));
+extern int __openat64_alias (int __fd, __const char *__path, int __oflag, ...) __asm__ ("" "openat64")
+
+ __attribute__ ((__nonnull__ (2)));
+extern void __openat64_too_many_args (void) __attribute__((__error__ ("openat64 can be called either with 3 or 4 arguments, not more")));
+
+extern void __openat64_missing_mode (void) __attribute__((__error__ ("openat64 with O_CREAT in third argument needs 4 arguments")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+openat64 (int __fd, __const char *__path, int __oflag, ...)
+{
+ if (__builtin_va_arg_pack_len () > 1)
+ __openat64_too_many_args ();
+
+ if (__builtin_constant_p (__oflag))
+ {
+ if ((__oflag & 0100) != 0 && __builtin_va_arg_pack_len () < 1)
+ {
+ __openat64_missing_mode ();
+ return __openat64_2 (__fd, __path, __oflag);
+ }
+ return __openat64_alias (__fd, __path, __oflag, __builtin_va_arg_pack ());
+ }
+
+ if (__builtin_va_arg_pack_len () < 1)
+ return __openat64_2 (__fd, __path, __oflag);
+
+ return __openat64_alias (__fd, __path, __oflag, __builtin_va_arg_pack ());
+}
+# 218 "/usr/include/fcntl.h" 2 3 4
+
+
+
+# 336 "./../include/my_global.h" 2
+
+
+# 1 "/usr/include/sys/timeb.h" 1 3 4
+# 28 "/usr/include/sys/timeb.h" 3 4
+
+
+
+
+struct timeb
+ {
+ time_t time;
+ unsigned short int millitm;
+ short int timezone;
+ short int dstflag;
+ };
+
+
+
+extern int ftime (struct timeb *__timebuf);
+
+
+# 339 "./../include/my_global.h" 2
+
+
+# 1 "/usr/include/sys/time.h" 1 3 4
+# 29 "/usr/include/sys/time.h" 3 4
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 30 "/usr/include/sys/time.h" 2 3 4
+# 39 "/usr/include/sys/time.h" 3 4
+
+# 57 "/usr/include/sys/time.h" 3 4
+struct timezone
+ {
+ int tz_minuteswest;
+ int tz_dsttime;
+ };
+
+typedef struct timezone *__restrict __timezone_ptr_t;
+# 73 "/usr/include/sys/time.h" 3 4
+extern int gettimeofday (struct timeval *__restrict __tv,
+ __timezone_ptr_t __tz) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int settimeofday (__const struct timeval *__tv,
+ __const struct timezone *__tz)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int adjtime (__const struct timeval *__delta,
+ struct timeval *__olddelta) __attribute__ ((__nothrow__));
+
+
+
+
+enum __itimer_which
+ {
+
+ ITIMER_REAL = 0,
+
+
+ ITIMER_VIRTUAL = 1,
+
+
+
+ ITIMER_PROF = 2
+
+ };
+
+
+
+struct itimerval
+ {
+
+ struct timeval it_interval;
+
+ struct timeval it_value;
+ };
+
+
+
+
+typedef enum __itimer_which __itimer_which_t;
+
+
+
+
+
+
+extern int getitimer (__itimer_which_t __which,
+ struct itimerval *__value) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setitimer (__itimer_which_t __which,
+ __const struct itimerval *__restrict __new,
+ struct itimerval *__restrict __old) __attribute__ ((__nothrow__));
+
+
+
+
+extern int utimes (__const char *__file, __const struct timeval __tvp[2])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int lutimes (__const char *__file, __const struct timeval __tvp[2])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int futimes (int __fd, __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int futimesat (int __fd, __const char *__file,
+ __const struct timeval __tvp[2]) __attribute__ ((__nothrow__));
+# 191 "/usr/include/sys/time.h" 3 4
+
+# 342 "./../include/my_global.h" 2
+# 351 "./../include/my_global.h"
+# 1 "/usr/include/unistd.h" 1 3 4
+# 28 "/usr/include/unistd.h" 3 4
+
+# 175 "/usr/include/unistd.h" 3 4
+# 1 "/usr/include/bits/posix_opt.h" 1 3 4
+# 176 "/usr/include/unistd.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/environments.h" 1 3 4
+# 23 "/usr/include/bits/environments.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 24 "/usr/include/bits/environments.h" 2 3 4
+# 180 "/usr/include/unistd.h" 2 3 4
+# 199 "/usr/include/unistd.h" 3 4
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 200 "/usr/include/unistd.h" 2 3 4
+# 240 "/usr/include/unistd.h" 3 4
+typedef __intptr_t intptr_t;
+
+
+
+
+
+
+typedef __socklen_t socklen_t;
+# 260 "/usr/include/unistd.h" 3 4
+extern int access (__const char *__name, int __type) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int euidaccess (__const char *__name, int __type)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int eaccess (__const char *__name, int __type)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int faccessat (int __fd, __const char *__file, int __type, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
+# 303 "/usr/include/unistd.h" 3 4
+extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__));
+# 314 "/usr/include/unistd.h" 3 4
+extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int close (int __fd);
+
+
+
+
+
+
+extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern ssize_t write (int __fd, __const void *__buf, size_t __n) __attribute__ ((__warn_unused_result__));
+# 345 "/usr/include/unistd.h" 3 4
+extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
+ __off_t __offset) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
+ __off_t __offset) __attribute__ ((__warn_unused_result__));
+# 373 "/usr/include/unistd.h" 3 4
+extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
+ __off64_t __offset) __attribute__ ((__warn_unused_result__));
+
+
+extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
+ __off64_t __offset) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int pipe2 (int __pipedes[2], int __flags) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+# 401 "/usr/include/unistd.h" 3 4
+extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__));
+# 413 "/usr/include/unistd.h" 3 4
+extern unsigned int sleep (unsigned int __seconds);
+
+
+
+
+
+
+extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int usleep (__useconds_t __useconds);
+# 437 "/usr/include/unistd.h" 3 4
+extern int pause (void);
+
+
+
+extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
+ __gid_t __group, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int chdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int fchdir (int __fd) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+# 479 "/usr/include/unistd.h" 3 4
+extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern char *get_current_dir_name (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern char *getwd (char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int dup (int __fd) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__));
+
+
+
+
+extern int dup3 (int __fd, int __fd2, int __flags) __attribute__ ((__nothrow__));
+
+
+
+extern char **__environ;
+
+extern char **environ;
+
+
+
+
+
+extern int execve (__const char *__path, char *__const __argv[],
+ char *__const __envp[]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
+ __attribute__ ((__nothrow__));
+
+
+
+
+extern int execv (__const char *__path, char *__const __argv[])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int execle (__const char *__path, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int execl (__const char *__path, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int execvp (__const char *__file, char *__const __argv[])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int execlp (__const char *__file, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int nice (int __inc) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern void _exit (int __status) __attribute__ ((__noreturn__));
+
+
+
+
+
+# 1 "/usr/include/bits/confname.h" 1 3 4
+# 26 "/usr/include/bits/confname.h" 3 4
+enum
+ {
+ _PC_LINK_MAX,
+
+ _PC_MAX_CANON,
+
+ _PC_MAX_INPUT,
+
+ _PC_NAME_MAX,
+
+ _PC_PATH_MAX,
+
+ _PC_PIPE_BUF,
+
+ _PC_CHOWN_RESTRICTED,
+
+ _PC_NO_TRUNC,
+
+ _PC_VDISABLE,
+
+ _PC_SYNC_IO,
+
+ _PC_ASYNC_IO,
+
+ _PC_PRIO_IO,
+
+ _PC_SOCK_MAXBUF,
+
+ _PC_FILESIZEBITS,
+
+ _PC_REC_INCR_XFER_SIZE,
+
+ _PC_REC_MAX_XFER_SIZE,
+
+ _PC_REC_MIN_XFER_SIZE,
+
+ _PC_REC_XFER_ALIGN,
+
+ _PC_ALLOC_SIZE_MIN,
+
+ _PC_SYMLINK_MAX,
+
+ _PC_2_SYMLINKS
+
+ };
+
+
+enum
+ {
+ _SC_ARG_MAX,
+
+ _SC_CHILD_MAX,
+
+ _SC_CLK_TCK,
+
+ _SC_NGROUPS_MAX,
+
+ _SC_OPEN_MAX,
+
+ _SC_STREAM_MAX,
+
+ _SC_TZNAME_MAX,
+
+ _SC_JOB_CONTROL,
+
+ _SC_SAVED_IDS,
+
+ _SC_REALTIME_SIGNALS,
+
+ _SC_PRIORITY_SCHEDULING,
+
+ _SC_TIMERS,
+
+ _SC_ASYNCHRONOUS_IO,
+
+ _SC_PRIORITIZED_IO,
+
+ _SC_SYNCHRONIZED_IO,
+
+ _SC_FSYNC,
+
+ _SC_MAPPED_FILES,
+
+ _SC_MEMLOCK,
+
+ _SC_MEMLOCK_RANGE,
+
+ _SC_MEMORY_PROTECTION,
+
+ _SC_MESSAGE_PASSING,
+
+ _SC_SEMAPHORES,
+
+ _SC_SHARED_MEMORY_OBJECTS,
+
+ _SC_AIO_LISTIO_MAX,
+
+ _SC_AIO_MAX,
+
+ _SC_AIO_PRIO_DELTA_MAX,
+
+ _SC_DELAYTIMER_MAX,
+
+ _SC_MQ_OPEN_MAX,
+
+ _SC_MQ_PRIO_MAX,
+
+ _SC_VERSION,
+
+ _SC_PAGESIZE,
+
+
+ _SC_RTSIG_MAX,
+
+ _SC_SEM_NSEMS_MAX,
+
+ _SC_SEM_VALUE_MAX,
+
+ _SC_SIGQUEUE_MAX,
+
+ _SC_TIMER_MAX,
+
+
+
+
+ _SC_BC_BASE_MAX,
+
+ _SC_BC_DIM_MAX,
+
+ _SC_BC_SCALE_MAX,
+
+ _SC_BC_STRING_MAX,
+
+ _SC_COLL_WEIGHTS_MAX,
+
+ _SC_EQUIV_CLASS_MAX,
+
+ _SC_EXPR_NEST_MAX,
+
+ _SC_LINE_MAX,
+
+ _SC_RE_DUP_MAX,
+
+ _SC_CHARCLASS_NAME_MAX,
+
+
+ _SC_2_VERSION,
+
+ _SC_2_C_BIND,
+
+ _SC_2_C_DEV,
+
+ _SC_2_FORT_DEV,
+
+ _SC_2_FORT_RUN,
+
+ _SC_2_SW_DEV,
+
+ _SC_2_LOCALEDEF,
+
+
+ _SC_PII,
+
+ _SC_PII_XTI,
+
+ _SC_PII_SOCKET,
+
+ _SC_PII_INTERNET,
+
+ _SC_PII_OSI,
+
+ _SC_POLL,
+
+ _SC_SELECT,
+
+ _SC_UIO_MAXIOV,
+
+ _SC_IOV_MAX = _SC_UIO_MAXIOV,
+
+ _SC_PII_INTERNET_STREAM,
+
+ _SC_PII_INTERNET_DGRAM,
+
+ _SC_PII_OSI_COTS,
+
+ _SC_PII_OSI_CLTS,
+
+ _SC_PII_OSI_M,
+
+ _SC_T_IOV_MAX,
+
+
+
+ _SC_THREADS,
+
+ _SC_THREAD_SAFE_FUNCTIONS,
+
+ _SC_GETGR_R_SIZE_MAX,
+
+ _SC_GETPW_R_SIZE_MAX,
+
+ _SC_LOGIN_NAME_MAX,
+
+ _SC_TTY_NAME_MAX,
+
+ _SC_THREAD_DESTRUCTOR_ITERATIONS,
+
+ _SC_THREAD_KEYS_MAX,
+
+ _SC_THREAD_STACK_MIN,
+
+ _SC_THREAD_THREADS_MAX,
+
+ _SC_THREAD_ATTR_STACKADDR,
+
+ _SC_THREAD_ATTR_STACKSIZE,
+
+ _SC_THREAD_PRIORITY_SCHEDULING,
+
+ _SC_THREAD_PRIO_INHERIT,
+
+ _SC_THREAD_PRIO_PROTECT,
+
+ _SC_THREAD_PROCESS_SHARED,
+
+
+ _SC_NPROCESSORS_CONF,
+
+ _SC_NPROCESSORS_ONLN,
+
+ _SC_PHYS_PAGES,
+
+ _SC_AVPHYS_PAGES,
+
+ _SC_ATEXIT_MAX,
+
+ _SC_PASS_MAX,
+
+
+ _SC_XOPEN_VERSION,
+
+ _SC_XOPEN_XCU_VERSION,
+
+ _SC_XOPEN_UNIX,
+
+ _SC_XOPEN_CRYPT,
+
+ _SC_XOPEN_ENH_I18N,
+
+ _SC_XOPEN_SHM,
+
+
+ _SC_2_CHAR_TERM,
+
+ _SC_2_C_VERSION,
+
+ _SC_2_UPE,
+
+
+ _SC_XOPEN_XPG2,
+
+ _SC_XOPEN_XPG3,
+
+ _SC_XOPEN_XPG4,
+
+
+ _SC_CHAR_BIT,
+
+ _SC_CHAR_MAX,
+
+ _SC_CHAR_MIN,
+
+ _SC_INT_MAX,
+
+ _SC_INT_MIN,
+
+ _SC_LONG_BIT,
+
+ _SC_WORD_BIT,
+
+ _SC_MB_LEN_MAX,
+
+ _SC_NZERO,
+
+ _SC_SSIZE_MAX,
+
+ _SC_SCHAR_MAX,
+
+ _SC_SCHAR_MIN,
+
+ _SC_SHRT_MAX,
+
+ _SC_SHRT_MIN,
+
+ _SC_UCHAR_MAX,
+
+ _SC_UINT_MAX,
+
+ _SC_ULONG_MAX,
+
+ _SC_USHRT_MAX,
+
+
+ _SC_NL_ARGMAX,
+
+ _SC_NL_LANGMAX,
+
+ _SC_NL_MSGMAX,
+
+ _SC_NL_NMAX,
+
+ _SC_NL_SETMAX,
+
+ _SC_NL_TEXTMAX,
+
+
+ _SC_XBS5_ILP32_OFF32,
+
+ _SC_XBS5_ILP32_OFFBIG,
+
+ _SC_XBS5_LP64_OFF64,
+
+ _SC_XBS5_LPBIG_OFFBIG,
+
+
+ _SC_XOPEN_LEGACY,
+
+ _SC_XOPEN_REALTIME,
+
+ _SC_XOPEN_REALTIME_THREADS,
+
+
+ _SC_ADVISORY_INFO,
+
+ _SC_BARRIERS,
+
+ _SC_BASE,
+
+ _SC_C_LANG_SUPPORT,
+
+ _SC_C_LANG_SUPPORT_R,
+
+ _SC_CLOCK_SELECTION,
+
+ _SC_CPUTIME,
+
+ _SC_THREAD_CPUTIME,
+
+ _SC_DEVICE_IO,
+
+ _SC_DEVICE_SPECIFIC,
+
+ _SC_DEVICE_SPECIFIC_R,
+
+ _SC_FD_MGMT,
+
+ _SC_FIFO,
+
+ _SC_PIPE,
+
+ _SC_FILE_ATTRIBUTES,
+
+ _SC_FILE_LOCKING,
+
+ _SC_FILE_SYSTEM,
+
+ _SC_MONOTONIC_CLOCK,
+
+ _SC_MULTI_PROCESS,
+
+ _SC_SINGLE_PROCESS,
+
+ _SC_NETWORKING,
+
+ _SC_READER_WRITER_LOCKS,
+
+ _SC_SPIN_LOCKS,
+
+ _SC_REGEXP,
+
+ _SC_REGEX_VERSION,
+
+ _SC_SHELL,
+
+ _SC_SIGNALS,
+
+ _SC_SPAWN,
+
+ _SC_SPORADIC_SERVER,
+
+ _SC_THREAD_SPORADIC_SERVER,
+
+ _SC_SYSTEM_DATABASE,
+
+ _SC_SYSTEM_DATABASE_R,
+
+ _SC_TIMEOUTS,
+
+ _SC_TYPED_MEMORY_OBJECTS,
+
+ _SC_USER_GROUPS,
+
+ _SC_USER_GROUPS_R,
+
+ _SC_2_PBS,
+
+ _SC_2_PBS_ACCOUNTING,
+
+ _SC_2_PBS_LOCATE,
+
+ _SC_2_PBS_MESSAGE,
+
+ _SC_2_PBS_TRACK,
+
+ _SC_SYMLOOP_MAX,
+
+ _SC_STREAMS,
+
+ _SC_2_PBS_CHECKPOINT,
+
+
+ _SC_V6_ILP32_OFF32,
+
+ _SC_V6_ILP32_OFFBIG,
+
+ _SC_V6_LP64_OFF64,
+
+ _SC_V6_LPBIG_OFFBIG,
+
+
+ _SC_HOST_NAME_MAX,
+
+ _SC_TRACE,
+
+ _SC_TRACE_EVENT_FILTER,
+
+ _SC_TRACE_INHERIT,
+
+ _SC_TRACE_LOG,
+
+
+ _SC_LEVEL1_ICACHE_SIZE,
+
+ _SC_LEVEL1_ICACHE_ASSOC,
+
+ _SC_LEVEL1_ICACHE_LINESIZE,
+
+ _SC_LEVEL1_DCACHE_SIZE,
+
+ _SC_LEVEL1_DCACHE_ASSOC,
+
+ _SC_LEVEL1_DCACHE_LINESIZE,
+
+ _SC_LEVEL2_CACHE_SIZE,
+
+ _SC_LEVEL2_CACHE_ASSOC,
+
+ _SC_LEVEL2_CACHE_LINESIZE,
+
+ _SC_LEVEL3_CACHE_SIZE,
+
+ _SC_LEVEL3_CACHE_ASSOC,
+
+ _SC_LEVEL3_CACHE_LINESIZE,
+
+ _SC_LEVEL4_CACHE_SIZE,
+
+ _SC_LEVEL4_CACHE_ASSOC,
+
+ _SC_LEVEL4_CACHE_LINESIZE,
+
+
+
+ _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
+
+ _SC_RAW_SOCKETS,
+
+
+ _SC_V7_ILP32_OFF32,
+
+ _SC_V7_ILP32_OFFBIG,
+
+ _SC_V7_LP64_OFF64,
+
+ _SC_V7_LPBIG_OFFBIG,
+
+
+ _SC_SS_REPL_MAX,
+
+
+ _SC_TRACE_EVENT_NAME_MAX,
+
+ _SC_TRACE_NAME_MAX,
+
+ _SC_TRACE_SYS_MAX,
+
+ _SC_TRACE_USER_EVENT_MAX,
+
+
+ _SC_XOPEN_STREAMS,
+
+
+ _SC_THREAD_ROBUST_PRIO_INHERIT,
+
+ _SC_THREAD_ROBUST_PRIO_PROTECT,
+
+ };
+
+
+enum
+ {
+ _CS_PATH,
+
+
+ _CS_V6_WIDTH_RESTRICTED_ENVS,
+
+
+
+ _CS_GNU_LIBC_VERSION,
+
+ _CS_GNU_LIBPTHREAD_VERSION,
+
+
+ _CS_V5_WIDTH_RESTRICTED_ENVS,
+
+
+
+ _CS_V7_WIDTH_RESTRICTED_ENVS,
+
+
+
+ _CS_LFS_CFLAGS = 1000,
+
+ _CS_LFS_LDFLAGS,
+
+ _CS_LFS_LIBS,
+
+ _CS_LFS_LINTFLAGS,
+
+ _CS_LFS64_CFLAGS,
+
+ _CS_LFS64_LDFLAGS,
+
+ _CS_LFS64_LIBS,
+
+ _CS_LFS64_LINTFLAGS,
+
+
+ _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
+
+ _CS_XBS5_ILP32_OFF32_LDFLAGS,
+
+ _CS_XBS5_ILP32_OFF32_LIBS,
+
+ _CS_XBS5_ILP32_OFF32_LINTFLAGS,
+
+ _CS_XBS5_ILP32_OFFBIG_CFLAGS,
+
+ _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
+
+ _CS_XBS5_ILP32_OFFBIG_LIBS,
+
+ _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
+
+ _CS_XBS5_LP64_OFF64_CFLAGS,
+
+ _CS_XBS5_LP64_OFF64_LDFLAGS,
+
+ _CS_XBS5_LP64_OFF64_LIBS,
+
+ _CS_XBS5_LP64_OFF64_LINTFLAGS,
+
+ _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
+
+ _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
+
+ _CS_XBS5_LPBIG_OFFBIG_LIBS,
+
+ _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
+
+
+ _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFF32_LIBS,
+
+ _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
+
+ _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
+
+ _CS_POSIX_V6_LP64_OFF64_CFLAGS,
+
+ _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
+
+ _CS_POSIX_V6_LP64_OFF64_LIBS,
+
+ _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
+
+ _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
+
+ _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
+
+ _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
+
+ _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
+
+
+ _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFF32_LIBS,
+
+ _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
+
+ _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
+
+ _CS_POSIX_V7_LP64_OFF64_CFLAGS,
+
+ _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
+
+ _CS_POSIX_V7_LP64_OFF64_LIBS,
+
+ _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
+
+ _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
+
+ _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
+
+ _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
+
+ _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
+
+ };
+# 569 "/usr/include/unistd.h" 2 3 4
+
+
+extern long int pathconf (__const char *__path, int __name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__));
+
+
+extern long int sysconf (int __name) __attribute__ ((__nothrow__));
+
+
+
+extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__));
+
+
+
+
+extern __pid_t getpid (void) __attribute__ ((__nothrow__));
+
+
+extern __pid_t getppid (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern __pid_t getpgrp (void) __attribute__ ((__nothrow__));
+# 605 "/usr/include/unistd.h" 3 4
+extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__));
+
+extern __pid_t getpgid (__pid_t __pid) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__));
+# 631 "/usr/include/unistd.h" 3 4
+extern int setpgrp (void) __attribute__ ((__nothrow__));
+# 648 "/usr/include/unistd.h" 3 4
+extern __pid_t setsid (void) __attribute__ ((__nothrow__));
+
+
+
+extern __pid_t getsid (__pid_t __pid) __attribute__ ((__nothrow__));
+
+
+
+extern __uid_t getuid (void) __attribute__ ((__nothrow__));
+
+
+extern __uid_t geteuid (void) __attribute__ ((__nothrow__));
+
+
+extern __gid_t getgid (void) __attribute__ ((__nothrow__));
+
+
+extern __gid_t getegid (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int group_member (__gid_t __gid) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__));
+
+
+
+
+extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
+ __attribute__ ((__nothrow__));
+
+
+
+extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
+ __attribute__ ((__nothrow__));
+
+
+
+extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
+ __attribute__ ((__nothrow__));
+
+
+
+extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern __pid_t fork (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern __pid_t vfork (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *ttyname (int __fd) __attribute__ ((__nothrow__));
+
+
+
+extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int isatty (int __fd) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int ttyslot (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int link (__const char *__from, __const char *__to)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int linkat (int __fromfd, __const char *__from, int __tofd,
+ __const char *__to, int __flags)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int symlink (__const char *__from, __const char *__to)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern ssize_t readlink (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+extern int symlinkat (__const char *__from, int __tofd,
+ __const char *__to) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) __attribute__ ((__warn_unused_result__));
+
+
+extern ssize_t readlinkat (int __fd, __const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int unlink (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int unlinkat (int __fd, __const char *__name, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+extern int rmdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__));
+
+
+extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern char *getlogin (void);
+
+
+
+
+
+
+
+extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int setlogin (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 851 "/usr/include/unistd.h" 3 4
+# 1 "/usr/include/getopt.h" 1 3 4
+# 59 "/usr/include/getopt.h" 3 4
+extern char *optarg;
+# 73 "/usr/include/getopt.h" 3 4
+extern int optind;
+
+
+
+
+extern int opterr;
+
+
+
+extern int optopt;
+# 152 "/usr/include/getopt.h" 3 4
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ __attribute__ ((__nothrow__));
+# 852 "/usr/include/unistd.h" 2 3 4
+
+
+
+
+
+
+
+extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int sethostname (__const char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern int sethostid (long int __id) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int getdomainname (char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int setdomainname (__const char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern int vhangup (void) __attribute__ ((__nothrow__));
+
+
+extern int revoke (__const char *__file) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+
+extern int profil (unsigned short int *__sample_buffer, size_t __size,
+ size_t __offset, unsigned int __scale)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int acct (__const char *__name) __attribute__ ((__nothrow__));
+
+
+
+extern char *getusershell (void) __attribute__ ((__nothrow__));
+extern void endusershell (void) __attribute__ ((__nothrow__));
+extern void setusershell (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+
+extern int chroot (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+
+extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1)));
+# 937 "/usr/include/unistd.h" 3 4
+extern int fsync (int __fd);
+
+
+
+
+
+
+extern long int gethostid (void);
+
+
+extern void sync (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int getpagesize (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern int getdtablesize (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int truncate (__const char *__file, __off_t __length)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 974 "/usr/include/unistd.h" 3 4
+extern int truncate64 (__const char *__file, __off64_t __length)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+# 984 "/usr/include/unistd.h" 3 4
+extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+# 994 "/usr/include/unistd.h" 3 4
+extern int ftruncate64 (int __fd, __off64_t __length) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+# 1004 "/usr/include/unistd.h" 3 4
+extern int brk (void *__addr) __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+
+
+
+
+extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__));
+# 1025 "/usr/include/unistd.h" 3 4
+extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__));
+# 1079 "/usr/include/unistd.h" 3 4
+extern int fdatasync (int __fildes);
+
+
+
+
+
+
+
+extern char *crypt (__const char *__key, __const char *__salt)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern void encrypt (char *__block, int __edflag) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern void swab (__const void *__restrict __from, void *__restrict __to,
+ ssize_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+
+
+
+
+
+# 1 "/usr/include/bits/unistd.h" 1 3 4
+# 24 "/usr/include/bits/unistd.h" 3 4
+extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes,
+ size_t __buflen) __attribute__ ((__warn_unused_result__));
+extern ssize_t __read_alias (int __fd, void *__buf, size_t __nbytes) __asm__ ("" "read") __attribute__ ((__warn_unused_result__));
+
+extern ssize_t __read_chk_warn (int __fd, void *__buf, size_t __nbytes, size_t __buflen) __asm__ ("" "__read_chk")
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("read called with bigger length than size of " "the destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
+read (int __fd, void *__buf, size_t __nbytes)
+{
+ if (__builtin_object_size (__buf, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__nbytes))
+ return __read_chk (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0));
+
+ if (__nbytes > __builtin_object_size (__buf, 0))
+ return __read_chk_warn (__fd, __buf, __nbytes, __builtin_object_size (__buf, 0));
+ }
+ return __read_alias (__fd, __buf, __nbytes);
+}
+
+
+extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes,
+ __off_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__));
+extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes,
+ __off64_t __offset, size_t __bufsize) __attribute__ ((__warn_unused_result__));
+extern ssize_t __pread_alias (int __fd, void *__buf, size_t __nbytes, __off_t __offset) __asm__ ("" "pread") __attribute__ ((__warn_unused_result__));
+
+
+extern ssize_t __pread64_alias (int __fd, void *__buf, size_t __nbytes, __off64_t __offset) __asm__ ("" "pread64") __attribute__ ((__warn_unused_result__));
+
+
+extern ssize_t __pread_chk_warn (int __fd, void *__buf, size_t __nbytes, __off_t __offset, size_t __bufsize) __asm__ ("" "__pread_chk")
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread called with bigger length than size of " "the destination buffer")));
+
+extern ssize_t __pread64_chk_warn (int __fd, void *__buf, size_t __nbytes, __off64_t __offset, size_t __bufsize) __asm__ ("" "__pread64_chk")
+
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("pread64 called with bigger length than size of " "the destination buffer")));
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
+pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
+{
+ if (__builtin_object_size (__buf, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__nbytes))
+ return __pread_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0));
+
+ if ( __nbytes > __builtin_object_size (__buf, 0))
+ return __pread_chk_warn (__fd, __buf, __nbytes, __offset,
+ __builtin_object_size (__buf, 0));
+ }
+ return __pread_alias (__fd, __buf, __nbytes, __offset);
+}
+# 105 "/usr/include/bits/unistd.h" 3 4
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) ssize_t
+pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
+{
+ if (__builtin_object_size (__buf, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__nbytes))
+ return __pread64_chk (__fd, __buf, __nbytes, __offset, __builtin_object_size (__buf, 0));
+
+ if ( __nbytes > __builtin_object_size (__buf, 0))
+ return __pread64_chk_warn (__fd, __buf, __nbytes, __offset,
+ __builtin_object_size (__buf, 0));
+ }
+
+ return __pread64_alias (__fd, __buf, __nbytes, __offset);
+}
+
+
+
+
+extern ssize_t __readlink_chk (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len,
+ size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+extern ssize_t __readlink_alias (__const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("" "readlink") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__));
+extern ssize_t __readlink_chk_warn (__const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("" "__readlink_chk") __attribute__ ((__nothrow__))
+
+
+
+ __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlink called with bigger length " "than size of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__warn_unused_result__)) ssize_t
+__attribute__ ((__nothrow__)) readlink (__const char *__restrict __path, char *__restrict __buf, size_t __len)
+
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __readlink_chk (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+
+ if ( __len > __builtin_object_size (__buf, 2 > 1))
+ return __readlink_chk_warn (__path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __readlink_alias (__path, __buf, __len);
+}
+
+
+
+extern ssize_t __readlinkat_chk (int __fd, __const char *__restrict __path,
+ char *__restrict __buf, size_t __len,
+ size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
+extern ssize_t __readlinkat_alias (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__ ("" "readlinkat") __attribute__ ((__nothrow__))
+
+
+
+ __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__));
+extern ssize_t __readlinkat_chk_warn (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len, size_t __buflen) __asm__ ("" "__readlinkat_chk") __attribute__ ((__nothrow__))
+
+
+
+ __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("readlinkat called with bigger " "length than size of destination " "buffer")));
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (2, 3))) __attribute__ ((__warn_unused_result__)) ssize_t
+__attribute__ ((__nothrow__)) readlinkat (int __fd, __const char *__restrict __path, char *__restrict __buf, size_t __len)
+
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __readlinkat_chk (__fd, __path, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+
+ if (__len > __builtin_object_size (__buf, 2 > 1))
+ return __readlinkat_chk_warn (__fd, __path, __buf, __len,
+ __builtin_object_size (__buf, 2 > 1));
+ }
+ return __readlinkat_alias (__fd, __path, __buf, __len);
+}
+
+
+extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern char *__getcwd_alias (char *__buf, size_t __size) __asm__ ("" "getcwd") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+extern char *__getcwd_chk_warn (char *__buf, size_t __size, size_t __buflen) __asm__ ("" "__getcwd_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getcwd caller with bigger length than size of " "destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__warn_unused_result__)) char *
+__attribute__ ((__nothrow__)) getcwd (char *__buf, size_t __size)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__size))
+ return __getcwd_chk (__buf, __size, __builtin_object_size (__buf, 2 > 1));
+
+ if (__size > __builtin_object_size (__buf, 2 > 1))
+ return __getcwd_chk_warn (__buf, __size, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __getcwd_alias (__buf, __size);
+}
+
+
+extern char *__getwd_chk (char *__buf, size_t buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern char *__getwd_warn (char *__buf) __asm__ ("" "getwd") __attribute__ ((__nothrow__))
+ __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("please use getcwd instead, as getwd " "doesn't specify buffer size")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) __attribute__ ((__warn_unused_result__)) char *
+__attribute__ ((__nothrow__)) getwd (char *__buf)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ return __getwd_chk (__buf, __builtin_object_size (__buf, 2 > 1));
+ return __getwd_warn (__buf);
+}
+
+
+extern size_t __confstr_chk (int __name, char *__buf, size_t __len,
+ size_t __buflen) __attribute__ ((__nothrow__));
+extern size_t __confstr_alias (int __name, char *__buf, size_t __len) __asm__ ("" "confstr") __attribute__ ((__nothrow__));
+
+extern size_t __confstr_chk_warn (int __name, char *__buf, size_t __len, size_t __buflen) __asm__ ("" "__confstr_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__((__warning__ ("confstr called with bigger length than size of destination " "buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) size_t
+__attribute__ ((__nothrow__)) confstr (int __name, char *__buf, size_t __len)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__len))
+ return __confstr_chk (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+
+ if (__builtin_object_size (__buf, 2 > 1) < __len)
+ return __confstr_chk_warn (__name, __buf, __len, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __confstr_alias (__name, __buf, __len);
+}
+
+
+extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern int __getgroups_alias (int __size, __gid_t __list[]) __asm__ ("" "getgroups") __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+extern int __getgroups_chk_warn (int __size, __gid_t __list[], size_t __listlen) __asm__ ("" "__getgroups_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getgroups called with bigger group count than what " "can fit into destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) getgroups (int __size, __gid_t __list[])
+{
+ if (__builtin_object_size (__list, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__size) || __size < 0)
+ return __getgroups_chk (__size, __list, __builtin_object_size (__list, 2 > 1));
+
+ if (__size * sizeof (__gid_t) > __builtin_object_size (__list, 2 > 1))
+ return __getgroups_chk_warn (__size, __list, __builtin_object_size (__list, 2 > 1));
+ }
+ return __getgroups_alias (__size, __list);
+}
+
+
+extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen,
+ size_t __nreal) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int __ttyname_r_alias (int __fd, char *__buf, size_t __buflen) __asm__ ("" "ttyname_r") __attribute__ ((__nothrow__))
+
+ __attribute__ ((__nonnull__ (2)));
+extern int __ttyname_r_chk_warn (int __fd, char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__ttyname_r_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__nonnull__ (2))) __attribute__((__warning__ ("ttyname_r called with bigger buflen than " "size of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) ttyname_r (int __fd, char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __ttyname_r_chk (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __ttyname_r_chk_warn (__fd, __buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __ttyname_r_alias (__fd, __buf, __buflen);
+}
+
+
+
+extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal)
+ __attribute__ ((__nonnull__ (1)));
+extern int __getlogin_r_alias (char *__buf, size_t __buflen) __asm__ ("" "getlogin_r") __attribute__ ((__nonnull__ (1)));
+
+extern int __getlogin_r_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getlogin_r_chk")
+
+
+ __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("getlogin_r called with bigger buflen than " "size of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+getlogin_r (char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __getlogin_r_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __getlogin_r_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __getlogin_r_alias (__buf, __buflen);
+}
+
+
+
+
+extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int __gethostname_alias (char *__buf, size_t __buflen) __asm__ ("" "gethostname") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+extern int __gethostname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__gethostname_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__nonnull__ (1))) __attribute__((__warning__ ("gethostname called with bigger buflen than " "size of destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) gethostname (char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __gethostname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __gethostname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __gethostname_alias (__buf, __buflen);
+}
+
+
+
+
+extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+extern int __getdomainname_alias (char *__buf, size_t __buflen) __asm__ ("" "getdomainname") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__));
+
+
+extern int __getdomainname_chk_warn (char *__buf, size_t __buflen, size_t __nreal) __asm__ ("" "__getdomainname_chk") __attribute__ ((__nothrow__))
+
+
+ __attribute__ ((__nonnull__ (1))) __attribute__ ((__warn_unused_result__)) __attribute__((__warning__ ("getdomainname called with bigger " "buflen than size of destination " "buffer")));
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) int
+__attribute__ ((__nothrow__)) getdomainname (char *__buf, size_t __buflen)
+{
+ if (__builtin_object_size (__buf, 2 > 1) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__buflen))
+ return __getdomainname_chk (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+
+ if (__buflen > __builtin_object_size (__buf, 2 > 1))
+ return __getdomainname_chk_warn (__buf, __buflen, __builtin_object_size (__buf, 2 > 1));
+ }
+ return __getdomainname_alias (__buf, __buflen);
+}
+# 1115 "/usr/include/unistd.h" 2 3 4
+
+
+
+# 352 "./../include/my_global.h" 2
+# 371 "./../include/my_global.h"
+# 1 "/usr/include/errno.h" 1 3 4
+# 32 "/usr/include/errno.h" 3 4
+
+
+
+
+# 1 "/usr/include/bits/errno.h" 1 3 4
+# 25 "/usr/include/bits/errno.h" 3 4
+# 1 "/usr/include/linux/errno.h" 1 3 4
+
+
+
+# 1 "/usr/include/asm/errno.h" 1 3 4
+
+
+
+# 1 "/usr/include/asm-generic/errno.h" 1 3 4
+
+
+
+# 1 "/usr/include/asm-generic/errno-base.h" 1 3 4
+# 5 "/usr/include/asm-generic/errno.h" 2 3 4
+# 5 "/usr/include/asm/errno.h" 2 3 4
+# 5 "/usr/include/linux/errno.h" 2 3 4
+# 26 "/usr/include/bits/errno.h" 2 3 4
+# 43 "/usr/include/bits/errno.h" 3 4
+extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+# 37 "/usr/include/errno.h" 2 3 4
+# 55 "/usr/include/errno.h" 3 4
+extern char *program_invocation_name, *program_invocation_short_name;
+
+
+
+
+# 69 "/usr/include/errno.h" 3 4
+typedef int error_t;
+# 372 "./../include/my_global.h" 2
+
+
+# 1 "/usr/include/crypt.h" 1 3 4
+# 30 "/usr/include/crypt.h" 3 4
+
+
+
+extern char *crypt (__const char *__key, __const char *__salt)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void setkey (__const char *__key) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern void encrypt (char *__block, int __edflag) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+struct crypt_data
+ {
+ char keysched[16 * 8];
+ char sb0[32768];
+ char sb1[32768];
+ char sb2[32768];
+ char sb3[32768];
+
+ char crypt_3_buf[14];
+ char current_salt[2];
+ long int current_saltbits;
+ int direction, initialized;
+ };
+
+extern char *crypt_r (__const char *__key, __const char *__salt,
+ struct crypt_data * __restrict __data)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+extern void setkey_r (__const char *__key,
+ struct crypt_data * __restrict __data)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern void encrypt_r (char *__block, int __edflag,
+ struct crypt_data * __restrict __data)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3)));
+
+
+
+# 375 "./../include/my_global.h" 2
+
+
+
+
+
+
+
+# 1 "/usr/include/assert.h" 1 3 4
+# 66 "/usr/include/assert.h" 3 4
+
+
+
+extern void __assert_fail (__const char *__assertion, __const char *__file,
+ unsigned int __line, __const char *__function)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+extern void __assert_perror_fail (int __errnum, __const char *__file,
+ unsigned int __line,
+ __const char *__function)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+extern void __assert (const char *__assertion, const char *__file, int __line)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+# 383 "./../include/my_global.h" 2
+# 508 "./../include/my_global.h"
+# 1 "./../include/my_attribute.h" 1
+# 509 "./../include/my_global.h" 2
+# 544 "./../include/my_global.h"
+# 1 "./../include/my_dbug.h" 1
+# 545 "./../include/my_global.h" 2
+
+
+
+
+
+
+
+typedef int File;
+
+typedef int my_socket;
+
+
+
+
+
+typedef void (*sig_return)();
+
+
+typedef char pchar;
+typedef char puchar;
+typedef char pbool;
+typedef short pshort;
+typedef float pfloat;
+
+
+
+
+
+
+
+
+typedef int (*qsort_cmp)(const void *,const void *);
+typedef int (*qsort_cmp2)(void*, const void *,const void *);
+
+# 590 "./../include/my_global.h"
+# 1 "/usr/include/sys/socket.h" 1 3 4
+# 26 "/usr/include/sys/socket.h" 3 4
+
+
+# 1 "/usr/include/sys/uio.h" 1 3 4
+# 26 "/usr/include/sys/uio.h" 3 4
+
+
+
+# 1 "/usr/include/bits/uio.h" 1 3 4
+# 30 "/usr/include/sys/uio.h" 2 3 4
+# 40 "/usr/include/sys/uio.h" 3 4
+extern ssize_t readv (int __fd, __const struct iovec *__iovec, int __count)
+ __attribute__ ((__warn_unused_result__));
+# 51 "/usr/include/sys/uio.h" 3 4
+extern ssize_t writev (int __fd, __const struct iovec *__iovec, int __count)
+ __attribute__ ((__warn_unused_result__));
+# 66 "/usr/include/sys/uio.h" 3 4
+extern ssize_t preadv (int __fd, __const struct iovec *__iovec, int __count,
+ __off_t __offset) __attribute__ ((__warn_unused_result__));
+# 78 "/usr/include/sys/uio.h" 3 4
+extern ssize_t pwritev (int __fd, __const struct iovec *__iovec, int __count,
+ __off_t __offset) __attribute__ ((__warn_unused_result__));
+# 104 "/usr/include/sys/uio.h" 3 4
+extern ssize_t preadv64 (int __fd, __const struct iovec *__iovec, int __count,
+ __off64_t __offset) __attribute__ ((__warn_unused_result__));
+# 116 "/usr/include/sys/uio.h" 3 4
+extern ssize_t pwritev64 (int __fd, __const struct iovec *__iovec, int __count,
+ __off64_t __offset) __attribute__ ((__warn_unused_result__));
+
+
+
+
+# 29 "/usr/include/sys/socket.h" 2 3 4
+
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 31 "/usr/include/sys/socket.h" 2 3 4
+
+
+# 1 "/usr/include/bits/sigset.h" 1 3 4
+# 34 "/usr/include/sys/socket.h" 2 3 4
+
+
+
+
+
+
+# 1 "/usr/include/bits/socket.h" 1 3 4
+# 29 "/usr/include/bits/socket.h" 3 4
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 30 "/usr/include/bits/socket.h" 2 3 4
+# 40 "/usr/include/bits/socket.h" 3 4
+enum __socket_type
+{
+ SOCK_STREAM = 1,
+
+
+ SOCK_DGRAM = 2,
+
+
+ SOCK_RAW = 3,
+
+ SOCK_RDM = 4,
+
+ SOCK_SEQPACKET = 5,
+
+
+ SOCK_DCCP = 6,
+
+ SOCK_PACKET = 10,
+
+
+
+
+
+
+
+ SOCK_CLOEXEC = 02000000,
+
+
+ SOCK_NONBLOCK = 04000
+
+
+};
+# 169 "/usr/include/bits/socket.h" 3 4
+# 1 "/usr/include/bits/sockaddr.h" 1 3 4
+# 29 "/usr/include/bits/sockaddr.h" 3 4
+typedef unsigned short int sa_family_t;
+# 170 "/usr/include/bits/socket.h" 2 3 4
+
+
+struct sockaddr
+ {
+ sa_family_t sa_family;
+ char sa_data[14];
+ };
+# 185 "/usr/include/bits/socket.h" 3 4
+struct sockaddr_storage
+ {
+ sa_family_t ss_family;
+ unsigned long int __ss_align;
+ char __ss_padding[(128 - (2 * sizeof (unsigned long int)))];
+ };
+
+
+
+enum
+ {
+ MSG_OOB = 0x01,
+
+ MSG_PEEK = 0x02,
+
+ MSG_DONTROUTE = 0x04,
+
+
+
+ MSG_TRYHARD = MSG_DONTROUTE,
+
+
+ MSG_CTRUNC = 0x08,
+
+ MSG_PROXY = 0x10,
+
+ MSG_TRUNC = 0x20,
+
+ MSG_DONTWAIT = 0x40,
+
+ MSG_EOR = 0x80,
+
+ MSG_WAITALL = 0x100,
+
+ MSG_FIN = 0x200,
+
+ MSG_SYN = 0x400,
+
+ MSG_CONFIRM = 0x800,
+
+ MSG_RST = 0x1000,
+
+ MSG_ERRQUEUE = 0x2000,
+
+ MSG_NOSIGNAL = 0x4000,
+
+ MSG_MORE = 0x8000,
+
+
+ MSG_CMSG_CLOEXEC = 0x40000000
+
+
+
+ };
+
+
+
+
+struct msghdr
+ {
+ void *msg_name;
+ socklen_t msg_namelen;
+
+ struct iovec *msg_iov;
+ size_t msg_iovlen;
+
+ void *msg_control;
+ size_t msg_controllen;
+
+
+
+
+ int msg_flags;
+ };
+
+
+struct cmsghdr
+ {
+ size_t cmsg_len;
+
+
+
+
+ int cmsg_level;
+ int cmsg_type;
+
+ __extension__ unsigned char __cmsg_data [];
+
+ };
+# 291 "/usr/include/bits/socket.h" 3 4
+extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
+ struct cmsghdr *__cmsg) __attribute__ ((__nothrow__));
+
+
+
+
+extern __inline struct cmsghdr *
+__attribute__ ((__nothrow__)) __cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)
+{
+ if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
+
+ return 0;
+
+ __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
+ + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1)));
+ if ((unsigned char *) (__cmsg + 1) > ((unsigned char *) __mhdr->msg_control
+ + __mhdr->msg_controllen)
+ || ((unsigned char *) __cmsg + (((__cmsg->cmsg_len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1))
+ > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
+
+ return 0;
+ return __cmsg;
+}
+
+
+
+
+enum
+ {
+ SCM_RIGHTS = 0x01
+
+
+ , SCM_CREDENTIALS = 0x02
+
+
+ };
+
+
+
+struct ucred
+{
+ pid_t pid;
+ uid_t uid;
+ gid_t gid;
+};
+# 364 "/usr/include/bits/socket.h" 3 4
+# 1 "/usr/include/asm/socket.h" 1 3 4
+# 11 "/usr/include/asm/socket.h" 3 4
+# 1 "/usr/include/asm/sockios.h" 1 3 4
+# 12 "/usr/include/asm/socket.h" 2 3 4
+# 365 "/usr/include/bits/socket.h" 2 3 4
+# 398 "/usr/include/bits/socket.h" 3 4
+struct linger
+ {
+ int l_onoff;
+ int l_linger;
+ };
+# 41 "/usr/include/sys/socket.h" 2 3 4
+
+
+
+
+struct osockaddr
+ {
+ unsigned short int sa_family;
+ unsigned char sa_data[14];
+ };
+
+
+
+
+enum
+{
+ SHUT_RD = 0,
+
+ SHUT_WR,
+
+ SHUT_RDWR
+
+};
+# 92 "/usr/include/sys/socket.h" 3 4
+typedef union { struct sockaddr *__restrict __sockaddr__; struct sockaddr_at *__restrict __sockaddr_at__; struct sockaddr_ax25 *__restrict __sockaddr_ax25__; struct sockaddr_dl *__restrict __sockaddr_dl__; struct sockaddr_eon *__restrict __sockaddr_eon__; struct sockaddr_in *__restrict __sockaddr_in__; struct sockaddr_in6 *__restrict __sockaddr_in6__; struct sockaddr_inarp *__restrict __sockaddr_inarp__; struct sockaddr_ipx *__restrict __sockaddr_ipx__; struct sockaddr_iso *__restrict __sockaddr_iso__; struct sockaddr_ns *__restrict __sockaddr_ns__; struct sockaddr_un *__restrict __sockaddr_un__; struct sockaddr_x25 *__restrict __sockaddr_x25__;
+ } __SOCKADDR_ARG __attribute__ ((__transparent_union__));
+
+
+typedef union { __const struct sockaddr *__restrict __sockaddr__; __const struct sockaddr_at *__restrict __sockaddr_at__; __const struct sockaddr_ax25 *__restrict __sockaddr_ax25__; __const struct sockaddr_dl *__restrict __sockaddr_dl__; __const struct sockaddr_eon *__restrict __sockaddr_eon__; __const struct sockaddr_in *__restrict __sockaddr_in__; __const struct sockaddr_in6 *__restrict __sockaddr_in6__; __const struct sockaddr_inarp *__restrict __sockaddr_inarp__; __const struct sockaddr_ipx *__restrict __sockaddr_ipx__; __const struct sockaddr_iso *__restrict __sockaddr_iso__; __const struct sockaddr_ns *__restrict __sockaddr_ns__; __const struct sockaddr_un *__restrict __sockaddr_un__; __const struct sockaddr_x25 *__restrict __sockaddr_x25__;
+ } __CONST_SOCKADDR_ARG __attribute__ ((__transparent_union__));
+
+
+
+
+
+
+
+extern int socket (int __domain, int __type, int __protocol) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int socketpair (int __domain, int __type, int __protocol,
+ int __fds[2]) __attribute__ ((__nothrow__));
+
+
+extern int bind (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
+ __attribute__ ((__nothrow__));
+
+
+extern int getsockname (int __fd, __SOCKADDR_ARG __addr,
+ socklen_t *__restrict __len) __attribute__ ((__nothrow__));
+# 129 "/usr/include/sys/socket.h" 3 4
+extern int connect (int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len);
+
+
+
+extern int getpeername (int __fd, __SOCKADDR_ARG __addr,
+ socklen_t *__restrict __len) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern ssize_t send (int __fd, __const void *__buf, size_t __n, int __flags);
+
+
+
+
+
+
+extern ssize_t recv (int __fd, void *__buf, size_t __n, int __flags);
+
+
+
+
+
+
+extern ssize_t sendto (int __fd, __const void *__buf, size_t __n,
+ int __flags, __CONST_SOCKADDR_ARG __addr,
+ socklen_t __addr_len);
+# 166 "/usr/include/sys/socket.h" 3 4
+extern ssize_t recvfrom (int __fd, void *__restrict __buf, size_t __n,
+ int __flags, __SOCKADDR_ARG __addr,
+ socklen_t *__restrict __addr_len);
+
+
+
+
+
+
+
+extern ssize_t sendmsg (int __fd, __const struct msghdr *__message,
+ int __flags);
+
+
+
+
+
+
+extern ssize_t recvmsg (int __fd, struct msghdr *__message, int __flags);
+
+
+
+
+
+extern int getsockopt (int __fd, int __level, int __optname,
+ void *__restrict __optval,
+ socklen_t *__restrict __optlen) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setsockopt (int __fd, int __level, int __optname,
+ __const void *__optval, socklen_t __optlen) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int listen (int __fd, int __n) __attribute__ ((__nothrow__));
+# 214 "/usr/include/sys/socket.h" 3 4
+extern int accept (int __fd, __SOCKADDR_ARG __addr,
+ socklen_t *__restrict __addr_len);
+
+
+
+
+
+
+extern int accept4 (int __fd, __SOCKADDR_ARG __addr,
+ socklen_t *__restrict __addr_len, int __flags);
+# 232 "/usr/include/sys/socket.h" 3 4
+extern int shutdown (int __fd, int __how) __attribute__ ((__nothrow__));
+
+
+
+
+extern int sockatmark (int __fd) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern int isfdtype (int __fd, int __fdtype) __attribute__ ((__nothrow__));
+
+
+
+
+
+# 1 "/usr/include/bits/socket2.h" 1 3 4
+# 24 "/usr/include/bits/socket2.h" 3 4
+extern ssize_t __recv_chk (int __fd, void *__buf, size_t __n, size_t __buflen,
+ int __flags);
+extern ssize_t __recv_alias (int __fd, void *__buf, size_t __n, int __flags) __asm__ ("" "recv");
+
+extern ssize_t __recv_chk_warn (int __fd, void *__buf, size_t __n, size_t __buflen, int __flags) __asm__ ("" "__recv_chk")
+
+
+ __attribute__((__warning__ ("recv called with bigger length than size of destination " "buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) ssize_t
+recv (int __fd, void *__buf, size_t __n, int __flags)
+{
+ if (__builtin_object_size (__buf, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__n))
+ return __recv_chk (__fd, __buf, __n, __builtin_object_size (__buf, 0), __flags);
+
+ if (__n > __builtin_object_size (__buf, 0))
+ return __recv_chk_warn (__fd, __buf, __n, __builtin_object_size (__buf, 0), __flags);
+ }
+ return __recv_alias (__fd, __buf, __n, __flags);
+}
+
+extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n,
+ size_t __buflen, int __flags,
+ __SOCKADDR_ARG __addr,
+ socklen_t *__restrict __addr_len);
+extern ssize_t __recvfrom_alias (int __fd, void *__restrict __buf, size_t __n, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) __asm__ ("" "recvfrom");
+
+
+
+extern ssize_t __recvfrom_chk_warn (int __fd, void *__restrict __buf, size_t __n, size_t __buflen, int __flags, __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len) __asm__ ("" "__recvfrom_chk")
+
+
+
+
+ __attribute__((__warning__ ("recvfrom called with bigger length than size of " "destination buffer")));
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) ssize_t
+recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags,
+ __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len)
+{
+ if (__builtin_object_size (__buf, 0) != (size_t) -1)
+ {
+ if (!__builtin_constant_p (__n))
+ return __recvfrom_chk (__fd, __buf, __n, __builtin_object_size (__buf, 0), __flags,
+ __addr, __addr_len);
+ if (__n > __builtin_object_size (__buf, 0))
+ return __recvfrom_chk_warn (__fd, __buf, __n, __builtin_object_size (__buf, 0), __flags,
+ __addr, __addr_len);
+ }
+ return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len);
+}
+# 252 "/usr/include/sys/socket.h" 2 3 4
+
+
+
+# 591 "./../include/my_global.h" 2
+
+typedef socklen_t size_socket;
+# 834 "./../include/my_global.h"
+typedef long long my_ptrdiff_t;
+# 882 "./../include/my_global.h"
+typedef char *gptr;
+
+
+typedef signed char int8;
+typedef short int16;
+
+
+typedef unsigned char uchar;
+
+typedef unsigned char uint8;
+typedef unsigned short uint16;
+
+
+
+typedef int int32;
+
+typedef unsigned int uint32;
+# 918 "./../include/my_global.h"
+typedef unsigned long long int ulonglong;
+typedef long long int longlong;
+# 931 "./../include/my_global.h"
+typedef unsigned long long my_ulonglong;
+# 951 "./../include/my_global.h"
+typedef ulonglong my_off_t;
+
+
+
+
+
+typedef off_t os_off_t;
+# 991 "./../include/my_global.h"
+typedef uint8 int7;
+typedef short int15;
+typedef char *my_string;
+typedef unsigned long size_s;
+typedef int myf;
+
+typedef char byte;
+
+typedef char my_bool;
+
+typedef char bool;
+# 34 "./include/univ.i" 2
+# 1 "./../include/my_pthread.h" 1
+# 21 "./../include/my_pthread.h"
+# 1 "/usr/include/errno.h" 1 3 4
+# 22 "./../include/my_pthread.h" 2
+# 288 "./../include/my_pthread.h"
+extern int my_pthread_getprio(pthread_t thread_id);
+
+
+
+
+
+
+typedef void *(* pthread_handler)(void *);
+# 382 "./../include/my_pthread.h"
+extern void my_pthread_setprio(pthread_t thread_id,int prior);
+
+
+
+
+
+
+
+extern void my_pthread_attr_setprio(pthread_attr_t *attr, int priority);
+# 549 "./../include/my_pthread.h"
+typedef struct st_safe_mutex_t
+{
+ pthread_mutex_t global,mutex;
+ const char *file;
+ uint line,count;
+ pthread_t thread;
+
+
+
+} safe_mutex_t;
+# 576 "./../include/my_pthread.h"
+int safe_mutex_init(safe_mutex_t *mp, const pthread_mutexattr_t *attr,
+ const char *file, uint line);
+int safe_mutex_lock(safe_mutex_t *mp, my_bool try_lock, const char *file, uint line);
+int safe_mutex_unlock(safe_mutex_t *mp,const char *file, uint line);
+int safe_mutex_destroy(safe_mutex_t *mp,const char *file, uint line);
+int safe_cond_wait(pthread_cond_t *cond, safe_mutex_t *mp,const char *file,
+ uint line);
+int safe_cond_timedwait(pthread_cond_t *cond, safe_mutex_t *mp,
+ struct timespec *abstime, const char *file, uint line);
+void safe_mutex_global_init(void);
+void safe_mutex_end(FILE *file);
+# 690 "./../include/my_pthread.h"
+extern pthread_mutexattr_t my_fast_mutexattr;
+
+
+
+
+
+extern pthread_mutexattr_t my_errorcheck_mutexattr;
+# 707 "./../include/my_pthread.h"
+extern my_bool my_thread_global_init(void);
+extern void my_thread_global_end(void);
+extern my_bool my_thread_init(void);
+extern void my_thread_end(void);
+extern const char *my_thread_name(void);
+extern long my_thread_id(void);
+extern int pthread_no_free(void *);
+extern int pthread_dummy(int);
+# 731 "./../include/my_pthread.h"
+struct st_my_thread_var
+{
+ int thr_errno;
+ pthread_cond_t suspend;
+ pthread_mutex_t mutex;
+ pthread_mutex_t * volatile current_mutex;
+ pthread_cond_t * volatile current_cond;
+ pthread_t pthread_self;
+ long id;
+ int cmp_length;
+ int volatile abort;
+ my_bool init;
+ struct st_my_thread_var *next,**prev;
+ void *opt_info;
+
+
+
+
+};
+
+extern struct st_my_thread_var *_my_thread_var(void) __attribute__ ((const));
+extern uint my_thread_end_wait_time;
+# 766 "./../include/my_pthread.h"
+extern uint thd_lib_detected;
+# 35 "./include/univ.i" 2
+# 44 "./include/univ.i"
+# 1 "./include/../ib_config.h" 1
+# 45 "./include/univ.i" 2
+# 187 "./include/univ.i"
+typedef unsigned long int ulint;
+
+typedef long int lint;
+
+
+
+
+
+typedef longlong ib_longlong;
+
+
+typedef unsigned long long int ullint;
+# 207 "./include/univ.i"
+typedef double utfloat;
+# 272 "./include/univ.i"
+# 1 "./include/ut0dbg.h" 1
+# 12 "./include/ut0dbg.h"
+# 1 "./include/univ.i" 1
+# 13 "./include/ut0dbg.h" 2
+
+# 1 "./include/os0thread.h" 1
+# 33 "./include/os0thread.h"
+typedef pthread_t os_thread_t;
+typedef os_thread_t os_thread_id_t;
+
+
+
+
+
+typedef void* (*os_posix_f_t) (void*);
+
+
+
+
+ulint
+os_thread_eq(
+
+
+ os_thread_id_t a,
+ os_thread_id_t b);
+
+
+
+
+ulint
+os_thread_pf(
+
+
+ os_thread_id_t a);
+
+
+
+
+
+
+
+os_thread_t
+os_thread_create(
+
+
+
+ os_posix_f_t start_f,
+
+
+
+
+ void* arg,
+
+ os_thread_id_t* thread_id);
+
+int
+os_thread_join(
+
+ os_thread_id_t thread_id);
+
+
+
+void
+os_thread_exit(
+
+ void* exit_value);
+
+
+
+
+os_thread_id_t
+os_thread_get_curr_id(void);
+
+
+
+
+os_thread_t
+os_thread_get_curr(void);
+
+
+
+
+void
+os_thread_yield(void);
+
+
+
+
+void
+os_thread_sleep(
+
+ ulint tm);
+
+
+
+ulint
+os_thread_get_priority(
+
+
+ os_thread_t handle);
+
+
+
+void
+os_thread_set_priority(
+
+ os_thread_t handle,
+ ulint pri);
+
+
+
+ulint
+os_thread_get_last_error(void);
+
+
+
+# 1 "./include/os0thread.ic" 1
+# 143 "./include/os0thread.h" 2
+# 15 "./include/ut0dbg.h" 2
+# 27 "./include/ut0dbg.h"
+void
+ut_dbg_assertion_failed(
+
+ const char* expr,
+ const char* file,
+ ulint line);
+# 46 "./include/ut0dbg.h"
+extern ulint ut_dbg_stop_threads;
+
+
+extern ulint* ut_dbg_null_ptr;
+
+
+
+
+void
+ut_dbg_stop_thread(
+
+ const char* file,
+ ulint line);
+# 273 "./include/univ.i" 2
+# 1 "./include/ut0ut.h" 1
+# 15 "./include/ut0ut.h"
+# 1 "/usr/include/ctype.h" 1 3 4
+# 30 "/usr/include/ctype.h" 3 4
+
+# 48 "/usr/include/ctype.h" 3 4
+enum
+{
+ _ISupper = (1 << (0)),
+ _ISlower = (1 << (1)),
+ _ISalpha = (1 << (2)),
+ _ISdigit = (1 << (3)),
+ _ISxdigit = (1 << (4)),
+ _ISspace = (1 << (5)),
+ _ISprint = (1 << (6)),
+ _ISgraph = (1 << (7)),
+ _ISblank = (1 << (8)),
+ _IScntrl = (1 << (9)),
+ _ISpunct = (1 << (10)),
+ _ISalnum = (1 << (11))
+};
+# 81 "/usr/include/ctype.h" 3 4
+extern __const unsigned short int **__ctype_b_loc (void)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const));
+extern __const __int32_t **__ctype_tolower_loc (void)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const));
+extern __const __int32_t **__ctype_toupper_loc (void)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const));
+# 96 "/usr/include/ctype.h" 3 4
+
+
+
+
+
+
+extern int isalnum (int) __attribute__ ((__nothrow__));
+extern int isalpha (int) __attribute__ ((__nothrow__));
+extern int iscntrl (int) __attribute__ ((__nothrow__));
+extern int isdigit (int) __attribute__ ((__nothrow__));
+extern int islower (int) __attribute__ ((__nothrow__));
+extern int isgraph (int) __attribute__ ((__nothrow__));
+extern int isprint (int) __attribute__ ((__nothrow__));
+extern int ispunct (int) __attribute__ ((__nothrow__));
+extern int isspace (int) __attribute__ ((__nothrow__));
+extern int isupper (int) __attribute__ ((__nothrow__));
+extern int isxdigit (int) __attribute__ ((__nothrow__));
+
+
+
+extern int tolower (int __c) __attribute__ ((__nothrow__));
+
+
+extern int toupper (int __c) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int isblank (int) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int isctype (int __c, int __mask) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int isascii (int __c) __attribute__ ((__nothrow__));
+
+
+
+extern int toascii (int __c) __attribute__ ((__nothrow__));
+
+
+
+extern int _toupper (int) __attribute__ ((__nothrow__));
+extern int _tolower (int) __attribute__ ((__nothrow__));
+# 190 "/usr/include/ctype.h" 3 4
+extern __inline int
+__attribute__ ((__nothrow__)) tolower (int __c)
+{
+ return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c;
+}
+
+extern __inline int
+__attribute__ ((__nothrow__)) toupper (int __c)
+{
+ return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c;
+}
+# 247 "/usr/include/ctype.h" 3 4
+extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
+
+extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__));
+
+
+
+extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+
+
+extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+# 323 "/usr/include/ctype.h" 3 4
+
+# 16 "./include/ut0ut.h" 2
+
+
+typedef time_t ib_time_t;
+
+
+
+
+
+
+ulint
+ut_get_high32(
+
+
+ ulint a);
+
+
+static inline
+ulint
+ut_min(
+
+
+ ulint n1,
+ ulint n2);
+
+
+static inline
+ulint
+ut_max(
+
+
+ ulint n1,
+ ulint n2);
+
+
+static inline
+void
+ut_pair_min(
+
+ ulint* a,
+ ulint* b,
+ ulint a1,
+ ulint b1,
+ ulint a2,
+ ulint b2);
+
+
+static inline
+int
+ut_ulint_cmp(
+
+
+ ulint a,
+ ulint b);
+
+
+static inline
+int
+ut_pair_cmp(
+
+
+
+ ulint a1,
+ ulint a2,
+ ulint b1,
+ ulint b2);
+
+
+static inline
+ulint
+ut_2pow_remainder(
+
+ ulint n,
+ ulint m);
+
+
+static inline
+ulint
+ut_2pow_round(
+
+
+ ulint n,
+ ulint m);
+
+
+
+static inline
+ulint
+ut_2_log(
+
+
+ ulint n);
+
+
+static inline
+ulint
+ut_2_exp(
+
+
+ ulint n);
+
+
+
+ulint
+ut_2_power_up(
+
+
+ ulint n);
+
+
+
+void
+ut_ulint_sort(ulint* arr, ulint* aux_arr, ulint low, ulint high);
+
+
+
+
+ulint
+ut_clock(void);
+
+
+
+
+ib_time_t
+ut_time(void);
+
+
+
+
+
+
+
+int
+ut_usectime(
+
+
+ ulint* sec,
+ ulint* ms);
+
+
+
+double
+ut_difftime(
+
+
+ ib_time_t time2,
+ ib_time_t time1);
+
+
+
+void
+ut_print_timestamp(
+
+ FILE* file);
+
+
+
+void
+ut_sprintf_timestamp(
+
+ char* buf);
+
+
+
+
+void
+ut_sprintf_timestamp_without_extra_chars(
+
+ char* buf);
+
+
+
+void
+ut_get_year_month_day(
+
+ ulint* year,
+ ulint* month,
+ ulint* day);
+
+
+
+
+ulint
+ut_delay(
+
+
+ ulint delay);
+
+
+
+void
+ut_print_buf(
+
+ FILE* file,
+ const unsigned char* buf,
+ ulint len);
+
+
+
+
+void
+ut_print_filename(
+
+ FILE* f,
+ const char* name);
+
+
+
+
+struct trx_struct;
+
+void
+ut_print_name(
+
+ FILE* f,
+ struct trx_struct*trx,
+ const char* name);
+
+
+
+
+void
+ut_print_namel(
+
+ FILE* f,
+ struct trx_struct*trx,
+ const char* name,
+ ulint namelen);
+
+
+
+
+void
+ut_copy_file(
+
+ FILE* dest,
+ FILE* src);
+
+
+# 1 "./include/ut0ut.ic" 1
+# 11 "./include/ut0ut.ic"
+static inline
+ulint
+ut_min(
+
+
+ ulint n1,
+ ulint n2)
+{
+ return((n1 <= n2) ? n1 : n2);
+}
+
+
+
+static inline
+ulint
+ut_max(
+
+
+ ulint n1,
+ ulint n2)
+{
+ return((n1 <= n2) ? n2 : n1);
+}
+
+
+
+static inline
+void
+ut_pair_min(
+
+ ulint* a,
+ ulint* b,
+ ulint a1,
+ ulint b1,
+ ulint a2,
+ ulint b2)
+{
+ if (a1 == a2) {
+ *a = a1;
+ *b = ut_min(b1, b2);
+ } else if (a1 < a2) {
+ *a = a1;
+ *b = b1;
+ } else {
+ *a = a2;
+ *b = b2;
+ }
+}
+
+
+
+static inline
+int
+ut_ulint_cmp(
+
+
+ ulint a,
+ ulint b)
+{
+ if (a < b) {
+ return(-1);
+ } else if (a == b) {
+ return(0);
+ } else {
+ return(1);
+ }
+}
+
+
+
+static inline
+int
+ut_pair_cmp(
+
+
+ ulint a1,
+ ulint a2,
+ ulint b1,
+ ulint b2)
+{
+ if (a1 > b1) {
+ return(1);
+ } else if (a1 < b1) {
+ return(-1);
+ } else if (a2 > b2) {
+ return(1);
+ } else if (a2 < b2) {
+ return(-1);
+ } else {
+ return(0);
+ }
+}
+
+
+
+static inline
+ulint
+ut_2pow_remainder(
+
+ ulint n,
+ ulint m)
+{
+ ;
+
+ return(n & (m - 1));
+}
+
+
+
+static inline
+ulint
+ut_2pow_round(
+
+
+ ulint n,
+ ulint m)
+{
+ ;
+
+ return(n & ~(m - 1));
+}
+
+
+
+
+static inline
+ulint
+ut_2_log(
+
+
+ ulint n)
+{
+ ulint res;
+
+ res = 0;
+
+ ;
+
+ n = n - 1;
+
+ for (;;) {
+ n = n / 2;
+
+ if (n == 0) {
+ break;
+ }
+
+ res++;
+ }
+
+ return(res + 1);
+}
+
+
+
+static inline
+ulint
+ut_2_exp(
+
+
+ ulint n)
+{
+ return((ulint) 1 << n);
+}
+# 255 "./include/ut0ut.h" 2
+# 274 "./include/univ.i" 2
+# 1 "./include/db0err.h" 1
+# 275 "./include/univ.i" 2
+# 27 "./include/buf0buf.h" 2
+# 1 "./include/fil0fil.h" 1
+# 13 "./include/fil0fil.h"
+# 1 "./include/sync0rw.h" 1
+# 13 "./include/sync0rw.h"
+# 1 "./include/ut0lst.h" 1
+# 14 "./include/sync0rw.h" 2
+# 1 "./include/sync0sync.h" 1
+# 13 "./include/sync0sync.h"
+# 1 "./include/sync0types.h" 1
+# 13 "./include/sync0types.h"
+typedef struct mutex_struct ib_mutex_t;
+# 14 "./include/sync0sync.h" 2
+
+# 1 "./include/ut0mem.h" 1
+# 13 "./include/ut0mem.h"
+# 1 "/usr/include/string.h" 1 3 4
+# 28 "/usr/include/string.h" 3 4
+
+
+
+
+
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 34 "/usr/include/string.h" 2 3 4
+
+
+
+
+
+
+
+
+
+extern void *memcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void *memmove (void *__dest, __const void *__src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
+ int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 94 "/usr/include/string.h" 3 4
+extern void *memchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+# 108 "/usr/include/string.h" 3 4
+extern void *rawmemchr (__const void *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+# 119 "/usr/include/string.h" 3 4
+extern void *memrchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
+ size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strcmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strcoll (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern size_t strxfrm (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+# 164 "/usr/include/string.h" 3 4
+extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
+ __locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+
+
+
+
+extern char *strdup (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern char *strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+# 208 "/usr/include/string.h" 3 4
+
+# 233 "/usr/include/string.h" 3 4
+extern char *strchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+# 260 "/usr/include/string.h" 3 4
+extern char *strrchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+# 274 "/usr/include/string.h" 3 4
+extern char *strchrnul (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern size_t strcspn (__const char *__s, __const char *__reject)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern size_t strspn (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 312 "/usr/include/string.h" 3 4
+extern char *strpbrk (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 340 "/usr/include/string.h" 3 4
+extern char *strstr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+extern char *__strtok_r (char *__restrict __s,
+ __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+
+extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+# 371 "/usr/include/string.h" 3 4
+extern char *strcasestr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+
+extern void *memmem (__const void *__haystack, size_t __haystacklen,
+ __const void *__needle, size_t __needlelen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
+
+
+
+extern void *__mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern size_t strlen (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern size_t strnlen (__const char *__string, size_t __maxlen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
+
+# 436 "/usr/include/string.h" 3 4
+extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+extern char *strerror_l (int __errnum, __locale_t __l) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern void bcopy (__const void *__src, void *__dest, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 487 "/usr/include/string.h" 3 4
+extern char *index (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+# 515 "/usr/include/string.h" 3 4
+extern char *rindex (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+__extension__ extern int ffsll (long long int __ll)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern int strcasecmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern int strcasecmp_l (__const char *__s1, __const char *__s2,
+ __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));
+
+extern int strncasecmp_l (__const char *__s1, __const char *__s2,
+ size_t __n, __locale_t __loc)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 4)));
+
+
+
+
+
+extern char *strsep (char **__restrict __stringp,
+ __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+extern char *strsignal (int __sig) __attribute__ ((__nothrow__));
+
+
+extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern char *__stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+extern int strverscmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *strfry (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 604 "/usr/include/string.h" 3 4
+extern char *basename (__const char *__filename) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 632 "/usr/include/string.h" 3 4
+# 1 "/usr/include/bits/string.h" 1 3 4
+# 633 "/usr/include/string.h" 2 3 4
+
+
+# 1 "/usr/include/bits/string2.h" 1 3 4
+# 80 "/usr/include/bits/string2.h" 3 4
+typedef struct { unsigned char __arr[2]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR2;
+typedef struct { unsigned char __arr[3]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR3;
+typedef struct { unsigned char __arr[4]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR4;
+typedef struct { unsigned char __arr[5]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR5;
+typedef struct { unsigned char __arr[6]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR6;
+typedef struct { unsigned char __arr[7]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR7;
+typedef struct { unsigned char __arr[8]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR8;
+# 394 "/usr/include/bits/string2.h" 3 4
+extern void *__rawmemchr (const void *__s, int __c);
+# 969 "/usr/include/bits/string2.h" 3 4
+extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
+extern __inline size_t
+__strcspn_c1 (__const char *__s, int __reject)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject)
+ ++__result;
+ return __result;
+}
+
+extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
+ int __reject2);
+extern __inline size_t
+__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2)
+ ++__result;
+ return __result;
+}
+
+extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
+ int __reject2, int __reject3);
+extern __inline size_t
+__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
+ int __reject3)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2 && __s[__result] != __reject3)
+ ++__result;
+ return __result;
+}
+# 1045 "/usr/include/bits/string2.h" 3 4
+extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
+extern __inline size_t
+__strspn_c1 (__const char *__s, int __accept)
+{
+ register size_t __result = 0;
+
+ while (__s[__result] == __accept)
+ ++__result;
+ return __result;
+}
+
+extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline size_t
+__strspn_c2 (__const char *__s, int __accept1, int __accept2)
+{
+ register size_t __result = 0;
+
+ while (__s[__result] == __accept1 || __s[__result] == __accept2)
+ ++__result;
+ return __result;
+}
+
+extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline size_t
+__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
+{
+ register size_t __result = 0;
+
+ while (__s[__result] == __accept1 || __s[__result] == __accept2
+ || __s[__result] == __accept3)
+ ++__result;
+ return __result;
+}
+# 1121 "/usr/include/bits/string2.h" 3 4
+extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline char *
+__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
+{
+
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+
+extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline char *
+__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
+ int __accept3)
+{
+
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
+ && *__s != __accept3)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+# 1172 "/usr/include/bits/string2.h" 3 4
+extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
+extern __inline char *
+__strtok_r_1c (char *__s, char __sep, char **__nextp)
+{
+ char *__result;
+ if (__s == ((void *)0))
+ __s = *__nextp;
+ while (*__s == __sep)
+ ++__s;
+ __result = ((void *)0);
+ if (*__s != '\0')
+ {
+ __result = __s++;
+ while (*__s != '\0')
+ if (*__s++ == __sep)
+ {
+ __s[-1] = '\0';
+ break;
+ }
+ }
+ *__nextp = __s;
+ return __result;
+}
+# 1204 "/usr/include/bits/string2.h" 3 4
+extern char *__strsep_g (char **__stringp, __const char *__delim);
+# 1222 "/usr/include/bits/string2.h" 3 4
+extern __inline char *__strsep_1c (char **__s, char __reject);
+extern __inline char *
+__strsep_1c (char **__s, char __reject)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
+ *(*__s)++ = '\0';
+ return __retval;
+}
+
+extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
+extern __inline char *
+__strsep_2c (char **__s, char __reject1, char __reject2)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+
+extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
+ char __reject3);
+extern __inline char *
+__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+# 1303 "/usr/include/bits/string2.h" 3 4
+extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+# 1322 "/usr/include/bits/string2.h" 3 4
+extern char *__strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+# 636 "/usr/include/string.h" 2 3 4
+
+
+
+
+# 1 "/usr/include/bits/string3.h" 1 3 4
+# 23 "/usr/include/bits/string3.h" 3 4
+extern void __warn_memset_zero_len (void) __attribute__((__warning__ ("memset used with constant zero length parameter; this could be due to transposed parameters")));
+# 48 "/usr/include/bits/string3.h" 3 4
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) void *
+__attribute__ ((__nothrow__)) memcpy (void *__restrict __dest, __const void *__restrict __src, size_t __len)
+
+{
+ return __builtin___memcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) void *
+__attribute__ ((__nothrow__)) memmove (void *__restrict __dest, __const void *__restrict __src, size_t __len)
+
+{
+ return __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) void *
+__attribute__ ((__nothrow__)) mempcpy (void *__restrict __dest, __const void *__restrict __src, size_t __len)
+
+{
+ return __builtin___mempcpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+# 77 "/usr/include/bits/string3.h" 3 4
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) void *
+__attribute__ ((__nothrow__)) memset (void *__dest, int __ch, size_t __len)
+{
+ if (__builtin_constant_p (__len) && __len == 0)
+ {
+ __warn_memset_zero_len ();
+ return __dest;
+ }
+ return __builtin___memset_chk (__dest, __ch, __len, __builtin_object_size (__dest, 0));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) void
+__attribute__ ((__nothrow__)) bcopy (__const void *__restrict __src, void *__restrict __dest, size_t __len)
+
+{
+ (void) __builtin___memmove_chk (__dest, __src, __len, __builtin_object_size (__dest, 0));
+}
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) void
+__attribute__ ((__nothrow__)) bzero (void *__dest, size_t __len)
+{
+ (void) __builtin___memset_chk (__dest, '\0', __len, __builtin_object_size (__dest, 0));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) char *
+__attribute__ ((__nothrow__)) strcpy (char *__restrict __dest, __const char *__restrict __src)
+{
+ return __builtin___strcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) char *
+__attribute__ ((__nothrow__)) stpcpy (char *__restrict __dest, __const char *__restrict __src)
+{
+ return __builtin___stpcpy_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
+}
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) char *
+__attribute__ ((__nothrow__)) strncpy (char *__restrict __dest, __const char *__restrict __src, size_t __len)
+
+{
+ return __builtin___strncpy_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
+}
+
+
+extern char *__stpncpy_chk (char *__dest, __const char *__src, size_t __n,
+ size_t __destlen) __attribute__ ((__nothrow__));
+extern char *__stpncpy_alias (char *__dest, __const char *__src, size_t __n) __asm__ ("" "stpncpy") __attribute__ ((__nothrow__));
+
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) char *
+__attribute__ ((__nothrow__)) stpncpy (char *__dest, __const char *__src, size_t __n)
+{
+ if (__builtin_object_size (__dest, 2 > 1) != (size_t) -1
+ && (!__builtin_constant_p (__n) || __n <= __builtin_object_size (__dest, 2 > 1)))
+ return __stpncpy_chk (__dest, __src, __n, __builtin_object_size (__dest, 2 > 1));
+ return __stpncpy_alias (__dest, __src, __n);
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) char *
+__attribute__ ((__nothrow__)) strcat (char *__restrict __dest, __const char *__restrict __src)
+{
+ return __builtin___strcat_chk (__dest, __src, __builtin_object_size (__dest, 2 > 1));
+}
+
+
+extern __inline __attribute__ ((__always_inline__)) __attribute__ ((__artificial__)) char *
+__attribute__ ((__nothrow__)) strncat (char *__restrict __dest, __const char *__restrict __src, size_t __len)
+
+{
+ return __builtin___strncat_chk (__dest, __src, __len, __builtin_object_size (__dest, 2 > 1));
+}
+# 641 "/usr/include/string.h" 2 3 4
+
+
+
+
+# 14 "./include/ut0mem.h" 2
+
+
+
+extern ulint ut_total_allocated_memory;
+
+static inline
+void*
+ut_memcpy(void* dest, const void* sour, ulint n);
+
+static inline
+void*
+ut_memmove(void* dest, const void* sour, ulint n);
+
+static inline
+int
+ut_memcmp(const void* str1, const void* str2, ulint n);
+
+
+
+
+
+
+void*
+ut_malloc_low(
+
+
+ ulint n,
+ ulint set_to_zero,
+
+ ulint assert_on_error);
+
+
+
+
+
+void*
+ut_malloc(
+
+
+ ulint n);
+
+
+
+
+
+ulint
+ut_test_malloc(
+
+
+ ulint n);
+
+
+
+void
+ut_free(
+
+ void* ptr);
+# 96 "./include/ut0mem.h"
+void*
+ut_realloc(
+
+
+ void* ptr,
+ ulint size);
+
+
+
+void
+ut_free_all_mem(void);
+
+
+static inline
+char*
+ut_strcpy(char* dest, const char* sour);
+
+static inline
+ulint
+ut_strlen(const char* str);
+
+static inline
+int
+ut_strcmp(const void* str1, const void* str2);
+
+
+
+
+
+
+ulint
+ut_strlcpy(
+
+
+ char* dst,
+ const char* src,
+ ulint size);
+
+
+
+
+
+ulint
+ut_strlcpy_rev(
+
+
+ char* dst,
+ const char* src,
+ ulint size);
+
+
+
+static inline
+ulint
+ut_strlenq(
+
+
+ const char* str,
+ char q);
+
+
+
+
+
+
+char*
+ut_strcpyq(
+
+
+ char* dest,
+ char q,
+ const char* src);
+
+
+
+
+
+
+char*
+ut_memcpyq(
+
+
+ char* dest,
+ char q,
+ const char* src,
+ ulint len);
+
+
+# 1 "./include/ut0mem.ic" 1
+# 9 "./include/ut0mem.ic"
+static inline
+void*
+ut_memcpy(void* dest, const void* sour, ulint n)
+{
+ return(memcpy(dest, sour, n));
+}
+
+static inline
+void*
+ut_memmove(void* dest, const void* sour, ulint n)
+{
+ return(memmove(dest, sour, n));
+}
+
+static inline
+int
+ut_memcmp(const void* str1, const void* str2, ulint n)
+{
+ return(memcmp(str1, str2, n));
+}
+
+static inline
+char*
+ut_strcpy(char* dest, const char* sour)
+{
+ return(strcpy(dest, sour));
+}
+
+static inline
+ulint
+ut_strlen(const char* str)
+{
+ return(strlen(str));
+}
+
+static inline
+int
+ut_strcmp(const void* str1, const void* str2)
+{
+ return(__extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p ((const char*)str1) && __builtin_constant_p ((const char*)str2) && (__s1_len = strlen ((const char*)str1), __s2_len = strlen ((const char*)str2), (!((size_t)(const void *)(((const char*)str1) + 1) - (size_t)(const void *)((const char*)str1) == 1) || __s1_len >= 4) && (!((size_t)(const void *)(((const char*)str2) + 1) - (size_t)(const void *)((const char*)str2) == 1) || __s2_len >= 4)) ? __builtin_strcmp ((const char*)str1, (const char*)str2) : (__builtin_constant_p ((const char*)str1) && ((size_t)(const void *)(((const char*)str1) + 1) - (size_t)(const void *)((const char*)str1) == 1) && (__s1_len = strlen ((const char*)str1), __s1_len < 4) ? (__builtin_constant_p ((const char*)str2) && ((size_t)(const void *)(((const char*)str2) + 1) - (size_t)(const void *)((const char*)str2) == 1) ? __builtin_strcmp ((const char*)str1, (const char*)str2) : (__extension__ ({ __const unsigned char *__s2 = (__const unsigned char *) (__const char *) ((const char*)str2); register int __result = (((__const unsigned char *) (__const char *) ((const char*)str1))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((const char*)str1))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((__const unsigned char *) (__const char *) ((const char*)str1))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((__const unsigned char *) (__const char *) ((const char*)str1))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p ((const char*)str2) && ((size_t)(const void *)(((const char*)str2) + 1) - (size_t)(const void *)((const char*)str2) == 1) && (__s2_len = strlen ((const char*)str2), __s2_len < 4) ? (__builtin_constant_p ((const char*)str1) && ((size_t)(const void *)(((const char*)str1) + 1) - (size_t)(const void *)((const char*)str1) == 1) ? __builtin_strcmp ((const char*)str1, (const char*)str2) : (__extension__ ({ __const unsigned char *__s1 = (__const unsigned char *) (__const char *) ((const char*)str1); register int __result = __s1[0] - ((__const unsigned char *) (__const char *) ((const char*)str2))[0]; if (__s2_len > 0 && __result == 0) { __result = (__s1[1] - ((__const unsigned char *) (__const char *) ((const char*)str2))[1]); if (__s2_len > 1 && __result == 0) { __result = (__s1[2] - ((__const unsigned char *) (__const char *) ((const char*)str2))[2]); if (__s2_len > 2 && __result == 0) __result = (__s1[3] - ((__const unsigned char *) (__const char *) ((const char*)str2))[3]); } } __result; }))) : __builtin_strcmp ((const char*)str1, (const char*)str2)))); }));
+}
+
+
+
+static inline
+ulint
+ut_strlenq(
+
+
+ const char* str,
+ char q)
+{
+ ulint len;
+
+ for (len = 0; *str; len++, str++) {
+ if (*str == q) {
+ len++;
+ }
+ }
+
+ return(len);
+}
+# 185 "./include/ut0mem.h" 2
+# 16 "./include/sync0sync.h" 2
+
+# 1 "./include/os0sync.h" 1
+# 31 "./include/os0sync.h"
+typedef pthread_mutex_t os_fast_mutex_t;
+
+typedef struct os_event_struct os_event_struct_t;
+typedef os_event_struct_t* os_event_t;
+
+struct os_event_struct {
+ os_fast_mutex_t os_mutex;
+
+ ulint is_set;
+
+
+
+ ib_longlong signal_count;
+
+ pthread_cond_t cond_var;
+
+ struct { os_event_struct_t * prev; os_event_struct_t * next; } os_event_list;
+
+};
+
+
+typedef struct os_mutex_struct os_mutex_str_t;
+typedef os_mutex_str_t* os_mutex_t;
+
+
+
+
+
+
+extern os_mutex_t os_sync_mutex;
+
+
+
+extern ulint os_thread_count;
+
+extern ulint os_event_count;
+extern ulint os_mutex_count;
+extern ulint os_fast_mutex_count;
+
+
+
+
+void
+os_sync_init(void);
+
+
+
+
+void
+os_sync_free(void);
+
+
+
+
+
+
+os_event_t
+os_event_create(
+
+
+ const char* name);
+# 109 "./include/os0sync.h"
+void
+os_event_set(
+
+ os_event_t event);
+# 121 "./include/os0sync.h"
+ib_longlong
+os_event_reset(
+
+ os_event_t event);
+
+
+
+void
+os_event_free(
+
+ os_event_t event);
+# 156 "./include/os0sync.h"
+void
+os_event_wait_low(
+
+ os_event_t event,
+ ib_longlong reset_sig_count);
+
+
+
+
+
+
+
+ulint
+os_event_wait_time(
+
+
+
+
+ os_event_t event,
+ ulint time);
+# 197 "./include/os0sync.h"
+os_mutex_t
+os_mutex_create(
+
+
+ const char* name);
+
+
+
+
+void
+os_mutex_enter(
+
+ os_mutex_t mutex);
+
+
+
+void
+os_mutex_exit(
+
+ os_mutex_t mutex);
+
+
+
+void
+os_mutex_free(
+
+ os_mutex_t mutex);
+
+
+
+static inline
+ulint
+os_fast_mutex_trylock(
+
+
+
+
+ os_fast_mutex_t* fast_mutex);
+
+
+
+void
+os_fast_mutex_unlock(
+
+ os_fast_mutex_t* fast_mutex);
+
+
+
+void
+os_fast_mutex_init(
+
+ os_fast_mutex_t* fast_mutex);
+
+
+
+void
+os_fast_mutex_lock(
+
+ os_fast_mutex_t* fast_mutex);
+
+
+
+void
+os_fast_mutex_free(
+
+ os_fast_mutex_t* fast_mutex);
+
+
+# 1 "./include/os0sync.ic" 1
+# 16 "./include/os0sync.ic"
+static inline
+ulint
+os_fast_mutex_trylock(
+
+
+
+
+ os_fast_mutex_t* fast_mutex)
+{
+# 43 "./include/os0sync.ic"
+ return((ulint) pthread_mutex_trylock(fast_mutex));
+
+
+}
+# 266 "./include/os0sync.h" 2
+# 18 "./include/sync0sync.h" 2
+# 1 "./include/sync0arr.h" 1
+# 17 "./include/sync0arr.h"
+typedef struct sync_cell_struct sync_cell_t;
+typedef struct sync_array_struct sync_array_t;
+# 28 "./include/sync0arr.h"
+sync_array_t*
+sync_array_create(
+
+
+ ulint n_cells,
+
+ ulint protection);
+
+
+
+
+
+void
+sync_array_free(
+
+ sync_array_t* arr);
+
+
+
+
+void
+sync_array_reserve_cell(
+
+ sync_array_t* arr,
+ void* object,
+ ulint type,
+ const char* file,
+ ulint line,
+ ulint* index);
+
+
+
+
+
+
+void
+sync_array_wait_event(
+
+ sync_array_t* arr,
+ ulint index);
+
+
+
+
+void
+sync_array_free_cell(
+
+ sync_array_t* arr,
+ ulint index);
+
+
+
+void
+sync_array_object_signalled(
+
+ sync_array_t* arr);
+
+
+
+
+
+void
+sync_arr_wake_threads_if_sema_free(void);
+
+
+
+
+ulint
+sync_array_print_long_waits(void);
+
+
+
+
+
+
+
+void
+sync_array_validate(
+
+ sync_array_t* arr);
+
+
+
+void
+sync_array_print_info(
+
+ FILE* file,
+ sync_array_t* arr);
+
+
+
+# 1 "./include/sync0arr.ic" 1
+# 120 "./include/sync0arr.h" 2
+# 19 "./include/sync0sync.h" 2
+
+
+extern my_bool timed_mutexes;
+
+
+
+
+
+void
+sync_init(void);
+
+
+
+
+void
+sync_close(void);
+# 54 "./include/sync0sync.h"
+void
+mutex_create_func(
+
+ ib_mutex_t* mutex,
+
+
+
+ const char* cfile_name,
+ ulint cline);
+
+
+
+
+
+
+void
+mutex_free(
+
+ ib_mutex_t* mutex);
+# 83 "./include/sync0sync.h"
+void
+mutex_enter_noninline(
+
+ ib_mutex_t* mutex);
+# 100 "./include/sync0sync.h"
+static inline
+void
+mutex_enter_func(
+
+ ib_mutex_t* mutex,
+ const char* file_name,
+ ulint line);
+
+
+
+
+ulint
+mutex_enter_nowait(
+
+
+ ib_mutex_t* mutex,
+ const char* file_name,
+
+ ulint line);
+
+
+static inline
+void
+mutex_exit(
+
+ ib_mutex_t* mutex);
+
+
+
+void
+mutex_exit_noninline(
+
+ ib_mutex_t* mutex);
+
+
+
+
+ulint
+sync_all_freed(void);
+
+
+
+
+
+
+void
+sync_print_wait_info(
+
+ FILE* file);
+
+
+
+void
+sync_print(
+
+ FILE* file);
+
+
+
+ulint
+mutex_validate(
+
+ ib_mutex_t* mutex);
+
+
+
+void
+mutex_set_level(
+
+ ib_mutex_t* mutex,
+ ulint level);
+
+
+
+
+
+void
+sync_thread_add_level(
+
+ void* latch,
+ ulint level);
+
+
+
+
+ulint
+sync_thread_reset_level(
+
+
+
+
+
+ void* latch);
+
+
+
+ulint
+sync_thread_levels_empty(void);
+
+
+
+
+
+ulint
+sync_thread_levels_empty_gen(
+
+
+
+ ulint dict_mutex_allowed);
+# 249 "./include/sync0sync.h"
+static inline
+ulint
+mutex_get_lock_word(
+
+ ib_mutex_t* mutex);
+# 461 "./include/sync0sync.h"
+struct mutex_struct {
+ os_event_t event;
+ ulint lock_word;
+
+
+ os_fast_mutex_t
+ os_fast_mutex;
+
+
+ ulint waiters;
+
+
+
+ struct { ib_mutex_t * prev; ib_mutex_t * next; } list;
+
+
+
+
+
+
+
+ ulint level;
+
+ const char* cfile_name;
+ ulint cline;
+ ulint magic_n;
+
+ ulong count_os_wait;
+# 500 "./include/sync0sync.h"
+};
+
+
+
+
+
+
+extern sync_array_t* sync_primary_wait_array;
+# 524 "./include/sync0sync.h"
+extern ulint mutex_system_call_count;
+extern ulint mutex_exit_count;
+
+
+extern ulint sync_order_checks_on;
+
+
+extern ulint sync_initialized;
+
+
+typedef struct { ulint count; ib_mutex_t * start; ib_mutex_t * end; } ut_list_base_node_t;
+extern ut_list_base_node_t mutex_list;
+
+
+extern ib_mutex_t mutex_list_mutex;
+
+
+
+# 1 "./include/sync0sync.ic" 1
+# 22 "./include/sync0sync.ic"
+void
+mutex_set_waiters(
+
+ ib_mutex_t* mutex,
+ ulint n);
+
+
+
+
+
+void
+mutex_spin_wait(
+
+ ib_mutex_t* mutex,
+ const char* file_name,
+ ulint line);
+# 52 "./include/sync0sync.ic"
+void
+mutex_signal_object(
+
+ ib_mutex_t* mutex);
+
+
+
+
+static inline
+ulint
+mutex_test_and_set(
+
+
+
+ ib_mutex_t* mutex)
+{
+# 104 "./include/sync0sync.ic"
+ ulint ret;
+
+ ret = os_fast_mutex_trylock(&(mutex->os_fast_mutex));
+
+ if (ret == 0) {
+
+
+ do { if (__builtin_expect(!((ulint)(mutex->lock_word == 0)), (0))) { ut_dbg_assertion_failed("mutex->lock_word == 0", "./include/sync0sync.ic", (ulint) 111); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/sync0sync.ic", (ulint) 111); } while (0); } while (0);
+
+ mutex->lock_word = 1;
+ }
+
+ return(ret);
+
+}
+
+
+
+
+static inline
+void
+mutex_reset_lock_word(
+
+ ib_mutex_t* mutex)
+{
+# 144 "./include/sync0sync.ic"
+ mutex->lock_word = 0;
+
+ os_fast_mutex_unlock(&(mutex->os_fast_mutex));
+
+}
+
+
+
+static inline
+ulint
+mutex_get_lock_word(
+
+ ib_mutex_t* mutex)
+{
+volatile ulint* ptr;
+
+ ;
+
+ ptr = &(mutex->lock_word);
+
+ return(*ptr);
+}
+
+
+
+static inline
+ulint
+mutex_get_waiters(
+
+
+ ib_mutex_t* mutex)
+{
+volatile ulint* ptr;
+
+ ;
+
+ ptr = &(mutex->waiters);
+
+ return(*ptr);
+
+}
+
+
+
+static inline
+void
+mutex_exit(
+
+ ib_mutex_t* mutex)
+{
+
+
+
+
+
+
+
+ mutex_reset_lock_word(mutex);
+# 215 "./include/sync0sync.ic"
+ if (mutex_get_waiters(mutex) != 0) {
+
+ mutex_signal_object(mutex);
+ }
+
+
+
+
+}
+
+
+
+
+
+static inline
+void
+mutex_enter_func(
+
+ ib_mutex_t* mutex,
+ const char* file_name,
+ ulint line)
+{
+ ;
+# 246 "./include/sync0sync.ic"
+ if (!mutex_test_and_set(mutex))
+ {
+
+
+
+ return;
+ }
+
+ mutex_spin_wait(mutex, file_name, line);
+
+}
+# 543 "./include/sync0sync.h" 2
+# 15 "./include/sync0rw.h" 2
+# 27 "./include/sync0rw.h"
+typedef struct rw_lock_struct rw_lock_t;
+
+
+
+
+typedef struct { ulint count; rw_lock_t * start; rw_lock_t * end; } rw_lock_list_t;
+
+extern rw_lock_list_t rw_lock_list;
+extern ib_mutex_t rw_lock_list_mutex;
+# 50 "./include/sync0rw.h"
+extern ulint rw_s_system_call_count;
+extern ulint rw_s_spin_wait_count;
+extern ulint rw_s_exit_count;
+extern ulint rw_s_os_wait_count;
+extern ulint rw_x_system_call_count;
+extern ulint rw_x_spin_wait_count;
+extern ulint rw_x_os_wait_count;
+extern ulint rw_x_exit_count;
+# 77 "./include/sync0rw.h"
+void
+rw_lock_create_func(
+
+ rw_lock_t* lock,
+
+
+
+ const char* cfile_name,
+ ulint cline);
+
+
+
+
+
+void
+rw_lock_free(
+
+ rw_lock_t* lock);
+
+
+
+
+ulint
+rw_lock_validate(
+
+ rw_lock_t* lock);
+# 128 "./include/sync0rw.h"
+static inline
+void
+rw_lock_s_lock_func(
+
+ rw_lock_t* lock,
+ ulint pass,
+
+ const char* file_name,
+ ulint line);
+
+
+
+
+static inline
+ulint
+rw_lock_s_lock_func_nowait(
+
+
+ rw_lock_t* lock,
+ const char* file_name,
+ ulint line);
+
+
+
+
+static inline
+ulint
+rw_lock_x_lock_func_nowait(
+
+
+ rw_lock_t* lock,
+ const char* file_name,
+ ulint line);
+
+
+static inline
+void
+rw_lock_s_unlock_func(
+
+ rw_lock_t* lock
+
+
+
+
+ );
+# 217 "./include/sync0rw.h"
+void
+rw_lock_x_lock_func(
+
+ rw_lock_t* lock,
+ ulint pass,
+
+ const char* file_name,
+ ulint line);
+
+
+static inline
+void
+rw_lock_x_unlock_func(
+
+ rw_lock_t* lock
+
+
+
+
+ );
+# 257 "./include/sync0rw.h"
+static inline
+void
+rw_lock_s_lock_direct(
+
+ rw_lock_t* lock,
+ const char* file_name,
+ ulint line
+);
+
+
+
+
+static inline
+void
+rw_lock_x_lock_direct(
+
+ rw_lock_t* lock,
+ const char* file_name,
+ ulint line
+);
+# 286 "./include/sync0rw.h"
+void
+rw_lock_x_lock_move_ownership(
+
+ rw_lock_t* lock);
+
+
+
+
+static inline
+void
+rw_lock_s_unlock_direct(
+
+ rw_lock_t* lock);
+
+
+
+static inline
+void
+rw_lock_x_unlock_direct(
+
+ rw_lock_t* lock);
+
+
+
+void
+rw_lock_set_level(
+
+ rw_lock_t* lock,
+ ulint level);
+
+
+
+static inline
+ulint
+rw_lock_get_x_lock_count(
+
+
+ rw_lock_t* lock);
+
+
+static inline
+ulint
+rw_lock_get_s_waiters(
+
+ rw_lock_t* lock);
+static inline
+ulint
+rw_lock_get_x_waiters(
+
+ rw_lock_t* lock);
+static inline
+ulint
+rw_lock_get_wx_waiters(
+
+ rw_lock_t* lock);
+static inline
+ulint
+rw_lock_get_writer(
+
+ rw_lock_t* lock);
+static inline
+ulint
+rw_lock_get_reader_count(
+
+ rw_lock_t* lock);
+# 366 "./include/sync0rw.h"
+ulint
+rw_lock_is_locked(
+
+ rw_lock_t* lock,
+ ulint lock_type);
+# 440 "./include/sync0rw.h"
+struct rw_lock_struct {
+
+ os_event_t s_event;
+ os_event_t x_event;
+ os_event_t wait_ex_event;
+# 453 "./include/sync0rw.h"
+ volatile lint lock_word;
+
+
+ volatile ulint reader_count;
+
+ volatile ulint writer;
+
+
+
+
+ volatile os_thread_id_t writer_thread;
+
+ volatile ulint writer_count;
+
+
+
+
+
+ ulint pass;
+
+
+
+
+ volatile ulint s_waiters;
+ volatile ulint x_waiters;
+ volatile ulint wait_ex_waiters;
+ volatile ulint writer_is_wait_ex;
+
+
+
+
+
+
+ struct { rw_lock_t * prev; rw_lock_t * next; } list;
+
+
+
+
+
+
+
+ ulint level;
+
+ const char* cfile_name;
+ ulint cline;
+ const char* last_s_file_name;
+ const char* last_x_file_name;
+ ulint last_s_line;
+ ulint last_x_line;
+ ulint magic_n;
+};
+# 525 "./include/sync0rw.h"
+# 1 "./include/sync0rw.ic" 1
+# 15 "./include/sync0rw.ic"
+void
+rw_lock_s_lock_spin(
+
+ rw_lock_t* lock,
+ ulint pass,
+
+ const char* file_name,
+ ulint line);
+# 48 "./include/sync0rw.ic"
+static inline
+ulint
+rw_lock_get_s_waiters(
+
+ rw_lock_t* lock)
+{
+ return(lock->s_waiters);
+}
+static inline
+ulint
+rw_lock_get_x_waiters(
+
+ rw_lock_t* lock)
+{
+ return(lock->x_waiters);
+}
+static inline
+ulint
+rw_lock_get_wx_waiters(
+
+ rw_lock_t* lock)
+{
+ return(lock->wait_ex_waiters);
+}
+static inline
+void
+rw_lock_set_s_waiters(
+ rw_lock_t* lock,
+ ulint flag)
+{
+
+ __sync_lock_test_and_set(&lock->s_waiters, flag);
+
+
+
+}
+static inline
+void
+rw_lock_set_x_waiters(
+ rw_lock_t* lock,
+ ulint flag)
+{
+
+ __sync_lock_test_and_set(&lock->x_waiters, flag);
+
+
+
+}
+static inline
+void
+rw_lock_set_wx_waiters(
+
+ rw_lock_t* lock,
+ ulint flag)
+{
+
+ __sync_lock_test_and_set(&lock->wait_ex_waiters, flag);
+
+
+
+}
+static inline
+ulint
+rw_lock_get_writer(
+
+ rw_lock_t* lock)
+{
+
+ if (lock->writer == 350) {
+ return(350);
+ }
+
+ if (lock->writer_is_wait_ex) {
+ return(353);
+ } else {
+ return(351);
+ }
+
+
+
+}
+static inline
+void
+rw_lock_set_writer(
+
+ rw_lock_t* lock,
+ ulint flag)
+{
+ lock->writer = flag;
+}
+static inline
+ulint
+rw_lock_get_reader_count(
+
+ rw_lock_t* lock)
+{
+ return(lock->reader_count);
+}
+static inline
+void
+rw_lock_set_reader_count(
+
+ rw_lock_t* lock,
+ ulint count)
+{
+ lock->reader_count = count;
+}
+# 169 "./include/sync0rw.ic"
+static inline
+ulint
+rw_lock_get_x_lock_count(
+
+
+ rw_lock_t* lock)
+{
+ return(lock->writer_count);
+}
+
+
+
+
+static inline
+ulint
+rw_lock_s_lock_low(
+
+
+ rw_lock_t* lock,
+ ulint pass __attribute__((unused)),
+
+
+ const char* file_name,
+ ulint line)
+{
+
+
+
+
+
+
+ if (__builtin_expect(rw_lock_get_writer(lock) == 350, (1))) {
+
+ if(__sync_sub_and_fetch(&(lock->lock_word),1) <= 0) {
+
+ __sync_fetch_and_add(&(lock->lock_word),1);
+ return((0));
+ }
+
+ __sync_fetch_and_add(&(lock->reader_count),1);
+# 219 "./include/sync0rw.ic"
+ lock->last_s_file_name = file_name;
+ lock->last_s_line = line;
+
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+
+
+static inline
+void
+rw_lock_s_lock_direct(
+
+ rw_lock_t* lock,
+ const char* file_name,
+ ulint line)
+{
+ ;
+ ;
+
+
+
+ __sync_fetch_and_add(&(lock->reader_count),1);
+
+
+
+
+ lock->last_s_file_name = file_name;
+ lock->last_s_line = line;
+
+
+
+
+}
+
+
+
+
+
+static inline
+void
+rw_lock_x_lock_direct(
+
+ rw_lock_t* lock,
+ const char* file_name,
+ ulint line)
+{
+ ;
+ ;
+ ;
+
+ rw_lock_set_writer(lock, 351);
+ lock->writer_thread = os_thread_get_curr_id();
+
+ __sync_fetch_and_add(&(lock->writer_count),1);
+
+
+
+ lock->pass = 0;
+
+ lock->last_x_file_name = file_name;
+ lock->last_x_line = line;
+
+
+
+
+}
+
+
+
+
+
+
+
+static inline
+void
+rw_lock_s_lock_func(
+
+ rw_lock_t* lock,
+ ulint pass,
+
+ const char* file_name,
+ ulint line)
+{
+# 326 "./include/sync0rw.ic"
+ if (__builtin_expect(rw_lock_s_lock_low(lock, pass, file_name, line), (1))) {
+
+
+
+
+ return;
+ } else {
+
+
+
+
+
+ rw_lock_s_lock_spin(lock, pass, file_name, line);
+
+ return;
+ }
+}
+
+
+
+
+
+static inline
+ulint
+rw_lock_s_lock_func_nowait(
+
+
+ rw_lock_t* lock,
+ const char* file_name,
+ ulint line)
+{
+ ulint success = (0);
+
+
+ if (rw_lock_get_writer(lock) == 350) {
+
+ if(__sync_sub_and_fetch(&(lock->lock_word),1) <= 0) {
+
+ __sync_fetch_and_add(&(lock->lock_word),1);
+ return((0));
+ }
+
+ __sync_fetch_and_add(&(lock->reader_count),1);
+# 382 "./include/sync0rw.ic"
+ lock->last_s_file_name = file_name;
+ lock->last_s_line = line;
+
+ success = (1);
+ }
+
+
+
+
+
+ return(success);
+}
+
+
+
+
+
+static inline
+ulint
+rw_lock_x_lock_func_nowait(
+
+
+ rw_lock_t* lock,
+ const char* file_name,
+ ulint line)
+{
+ ulint success = (0);
+ os_thread_id_t curr_thread = os_thread_get_curr_id();
+
+ if (lock->reader_count == 0) {
+
+ if(__sync_lock_test_and_set(&(lock->writer),351)
+ == 350) {
+
+retry_x_lock:
+
+ if(__sync_sub_and_fetch(&(lock->lock_word),
+ 0x00100000) == 0) {
+
+ lock->writer_thread = curr_thread;
+ lock->pass = 0;
+ lock->writer_is_wait_ex = (0);
+
+ relock:
+ __sync_fetch_and_add(&(lock->writer_count),1);
+
+
+
+
+
+ lock->last_x_file_name = file_name;
+ lock->last_x_line = line;
+
+ ;
+
+ return((1));
+ } else {
+
+ if (__sync_fetch_and_add(&(lock->lock_word),0x00100000)
+ == 0)
+ goto retry_x_lock;
+ }
+
+ __sync_lock_test_and_set(&(lock->writer),350);
+ }
+ }
+
+ if (lock->pass == 0
+ && os_thread_eq(lock->writer_thread, curr_thread)) {
+ goto relock;
+ }
+
+
+
+ return((0));
+# 489 "./include/sync0rw.ic"
+}
+
+
+
+static inline
+void
+rw_lock_s_unlock_func(
+
+ rw_lock_t* lock
+
+
+
+
+ )
+{
+
+
+
+ ulint x_sg = (0);
+ ulint wx_sg = (0);
+
+ ulint last = (0);
+# 520 "./include/sync0rw.ic"
+ do { if (__builtin_expect(!((ulint)(lock->reader_count > 0)), (0))) { ut_dbg_assertion_failed("lock->reader_count > 0", "./include/sync0rw.ic", (ulint) 520); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/sync0rw.ic", (ulint) 520); } while (0); } while (0);
+
+
+ __sync_fetch_and_add(&(lock->lock_word),1);
+
+ if(__sync_sub_and_fetch(&(lock->reader_count),1) == 0) {
+ last = (1);
+ }
+# 540 "./include/sync0rw.ic"
+ if (__builtin_expect(last && __sync_lock_test_and_set(&lock->wait_ex_waiters, 0), (0))) {
+ os_event_set(lock->wait_ex_event);
+ sync_array_object_signalled(sync_primary_wait_array);
+ }
+ else if (__builtin_expect(last && __sync_lock_test_and_set(&lock->x_waiters, 0), (0))) {
+ os_event_set(lock->x_event);
+ sync_array_object_signalled(sync_primary_wait_array);
+ }
+# 573 "./include/sync0rw.ic"
+ ;
+
+
+
+
+}
+
+
+
+
+static inline
+void
+rw_lock_s_unlock_direct(
+
+ rw_lock_t* lock)
+{
+
+
+ ;
+
+
+ __sync_sub_and_fetch(&(lock->reader_count),1);
+# 604 "./include/sync0rw.ic"
+ ;
+ ;
+
+
+
+ ;
+
+
+
+}
+
+
+
+static inline
+void
+rw_lock_x_unlock_func(
+
+ rw_lock_t* lock
+
+
+
+
+ )
+{
+
+ ulint last = (0);
+
+ ulint s_sg = (0);
+ ulint x_sg = (0);
+# 642 "./include/sync0rw.ic"
+ ;
+
+
+ if(__sync_sub_and_fetch(&(lock->writer_count),1) == 0) {
+ last = (1);
+ }
+
+ if (last) {
+
+ __sync_fetch_and_add(&(lock->lock_word),0x00100000);
+
+
+
+ lock->writer_thread = -1;
+ __sync_lock_test_and_set(&(lock->writer),350);
+ }
+# 672 "./include/sync0rw.ic"
+ if (last) {
+ if(__sync_lock_test_and_set(&lock->s_waiters, 0)){
+ s_sg = (1);
+ }
+ if(__sync_lock_test_and_set(&lock->x_waiters, 0)){
+ x_sg = (1);
+ }
+ }
+# 695 "./include/sync0rw.ic"
+ if (__builtin_expect(s_sg, (0))) {
+ os_event_set(lock->s_event);
+ sync_array_object_signalled(sync_primary_wait_array);
+ }
+ if (__builtin_expect(x_sg, (0))) {
+
+
+
+
+ os_event_set(lock->x_event);
+ sync_array_object_signalled(sync_primary_wait_array);
+ }
+
+ ;
+
+
+
+
+}
+
+
+
+
+static inline
+void
+rw_lock_x_unlock_direct(
+
+ rw_lock_t* lock)
+{
+
+
+
+ ;
+
+
+ if(__sync_sub_and_fetch(&(lock->writer_count),1) == 0) {
+
+
+
+
+
+ rw_lock_set_writer(lock, 350);
+ }
+
+
+
+
+
+
+ ;
+ ;
+
+
+
+ ;
+
+
+
+
+}
+# 526 "./include/sync0rw.h" 2
+# 14 "./include/fil0fil.h" 2
+# 1 "./include/dict0types.h" 1
+# 12 "./include/dict0types.h"
+typedef struct dict_sys_struct dict_sys_t;
+typedef struct dict_col_struct dict_col_t;
+typedef struct dict_field_struct dict_field_t;
+typedef struct dict_index_struct dict_index_t;
+typedef struct dict_tree_struct dict_tree_t;
+typedef struct dict_table_struct dict_table_t;
+typedef struct dict_foreign_struct dict_foreign_t;
+
+
+
+
+typedef dict_table_t dict_cluster_t;
+
+typedef struct ind_node_struct ind_node_t;
+typedef struct tab_node_struct tab_node_t;
+# 15 "./include/fil0fil.h" 2
+# 1 "./include/ibuf0types.h" 1
+# 12 "./include/ibuf0types.h"
+typedef struct ibuf_data_struct ibuf_data_t;
+typedef struct ibuf_struct ibuf_t;
+# 16 "./include/fil0fil.h" 2
+# 1 "./include/ut0byte.h" 1
+# 20 "./include/ut0byte.h"
+typedef struct dulint_struct dulint;
+struct dulint_struct{
+ ulint high;
+ ulint low;
+};
+
+
+extern dulint ut_dulint_zero;
+
+
+extern dulint ut_dulint_max;
+
+
+
+static inline
+dulint
+ut_dulint_create(
+
+
+ ulint high,
+ ulint low);
+
+
+static inline
+ulint
+ut_dulint_get_high(
+
+
+ dulint d);
+
+
+static inline
+ulint
+ut_dulint_get_low(
+
+
+ dulint d);
+
+
+
+static inline
+ib_longlong
+ut_conv_dulint_to_longlong(
+
+
+ dulint d);
+
+
+static inline
+ulint
+ut_dulint_is_zero(
+
+
+ dulint a);
+
+
+static inline
+int
+ut_dulint_cmp(
+
+
+
+ dulint a,
+ dulint b);
+
+
+static inline
+dulint
+ut_dulint_get_max(
+
+
+ dulint a,
+ dulint b);
+
+
+static inline
+dulint
+ut_dulint_get_min(
+
+
+ dulint a,
+ dulint b);
+
+
+static inline
+dulint
+ut_dulint_add(
+
+
+ dulint a,
+ ulint b);
+
+
+static inline
+dulint
+ut_dulint_subtract(
+
+
+ dulint a,
+ ulint b);
+
+
+
+static inline
+ulint
+ut_dulint_minus(
+
+
+ dulint a,
+
+ dulint b);
+
+
+static inline
+dulint
+ut_dulint_align_down(
+
+
+ dulint n,
+ ulint align_no);
+
+
+
+static inline
+dulint
+ut_dulint_align_up(
+
+
+ dulint n,
+ ulint align_no);
+# 168 "./include/ut0byte.h"
+void
+ut_dulint_sort(dulint* arr, dulint* aux_arr, ulint low, ulint high);
+
+
+
+
+
+static inline
+ulint
+ut_calc_align(
+
+
+ ulint n,
+ ulint align_no);
+
+
+
+
+static inline
+ulint
+ut_calc_align_down(
+
+
+ ulint n,
+ ulint align_no);
+
+
+static inline
+void*
+ut_align(
+
+
+ void* ptr,
+ ulint align_no);
+
+
+
+static inline
+void*
+ut_align_down(
+
+
+ void* ptr,
+ ulint align_no)
+ __attribute__((const));
+
+
+
+static inline
+ulint
+ut_align_offset(
+
+
+
+ const void* ptr,
+ ulint align_no)
+ __attribute__((const));
+
+
+static inline
+ulint
+ut_bit_get_nth(
+
+
+
+ ulint a,
+ ulint n);
+
+
+static inline
+ulint
+ut_bit_set_nth(
+
+
+ ulint a,
+ ulint n,
+ ulint val);
+
+
+# 1 "./include/ut0byte.ic" 1
+# 11 "./include/ut0byte.ic"
+static inline
+dulint
+ut_dulint_create(
+
+
+ ulint high,
+ ulint low)
+{
+ dulint res;
+
+ ;
+ ;
+
+ res.high = high;
+ res.low = low;
+
+ return(res);
+}
+
+
+
+static inline
+ulint
+ut_dulint_get_high(
+
+
+ dulint d)
+{
+ return(d.high);
+}
+
+
+
+static inline
+ulint
+ut_dulint_get_low(
+
+
+ dulint d)
+{
+ return(d.low);
+}
+
+
+
+
+static inline
+ib_longlong
+ut_conv_dulint_to_longlong(
+
+
+ dulint d)
+{
+ return((ib_longlong)d.low
+ + (((ib_longlong)d.high) << 32));
+}
+
+
+
+static inline
+ulint
+ut_dulint_is_zero(
+
+
+ dulint a)
+{
+ if ((a.low == 0) && (a.high == 0)) {
+
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+static inline
+int
+ut_dulint_cmp(
+
+
+
+ dulint a,
+ dulint b)
+{
+ if (a.high > b.high) {
+ return(1);
+ } else if (a.high < b.high) {
+ return(-1);
+ } else if (a.low > b.low) {
+ return(1);
+ } else if (a.low < b.low) {
+ return(-1);
+ } else {
+ return(0);
+ }
+}
+
+
+
+static inline
+dulint
+ut_dulint_get_max(
+
+
+ dulint a,
+ dulint b)
+{
+ if (ut_dulint_cmp(a, b) > 0) {
+
+ return(a);
+ }
+
+ return(b);
+}
+
+
+
+static inline
+dulint
+ut_dulint_get_min(
+
+
+ dulint a,
+ dulint b)
+{
+ if (ut_dulint_cmp(a, b) > 0) {
+
+ return(b);
+ }
+
+ return(a);
+}
+
+
+
+static inline
+dulint
+ut_dulint_add(
+
+
+ dulint a,
+ ulint b)
+{
+ if (0xFFFFFFFFUL - b >= a.low) {
+ a.low += b;
+
+ return(a);
+ }
+
+ a.low = a.low - (0xFFFFFFFFUL - b) - 1;
+
+ a.high++;
+
+ return(a);
+}
+
+
+
+static inline
+dulint
+ut_dulint_subtract(
+
+
+ dulint a,
+ ulint b)
+{
+ if (a.low >= b) {
+ a.low -= b;
+
+ return(a);
+ }
+
+ b -= a.low + 1;
+
+ a.low = 0xFFFFFFFFUL - b;
+
+ ;
+
+ a.high--;
+
+ return(a);
+}
+
+
+
+
+static inline
+ulint
+ut_dulint_minus(
+
+
+ dulint a,
+
+ dulint b)
+{
+ ulint diff;
+
+ if (a.high == b.high) {
+ ;
+
+ return(a.low - b.low);
+ }
+
+ ;
+
+ diff = (ulint)(0xFFFFFFFFUL - b.low);
+ diff += 1 + a.low;
+
+ ;
+
+ return(diff);
+}
+
+
+
+static inline
+dulint
+ut_dulint_align_down(
+
+
+ dulint n,
+ ulint align_no)
+
+{
+ ulint low, high;
+
+ ;
+ ;
+
+ low = ut_dulint_get_low(n);
+ high = ut_dulint_get_high(n);
+
+ low = low & ~(align_no - 1);
+
+ return(ut_dulint_create(high, low));
+}
+
+
+
+static inline
+dulint
+ut_dulint_align_up(
+
+
+ dulint n,
+ ulint align_no)
+
+{
+ return(ut_dulint_align_down(ut_dulint_add(n, align_no - 1), align_no));
+}
+
+
+
+
+
+static inline
+ulint
+ut_calc_align(
+
+
+ ulint n,
+ ulint align_no)
+{
+ ;
+ ;
+
+ return((n + align_no - 1) & ~(align_no - 1));
+}
+
+
+
+static inline
+void*
+ut_align(
+
+
+ void* ptr,
+ ulint align_no)
+{
+ ;
+ ;
+ ;
+
+ ;
+
+ return((void*)((((ulint)ptr) + align_no - 1) & ~(align_no - 1)));
+}
+
+
+
+
+
+static inline
+ulint
+ut_calc_align_down(
+
+
+ ulint n,
+ ulint align_no)
+{
+ ;
+ ;
+
+ return(n & ~(align_no - 1));
+}
+
+
+
+
+static inline
+void*
+ut_align_down(
+
+
+ void* ptr,
+ ulint align_no)
+{
+ ;
+ ;
+ ;
+
+ ;
+
+ return((void*)((((ulint)ptr)) & ~(align_no - 1)));
+}
+
+
+
+
+static inline
+ulint
+ut_align_offset(
+
+
+
+ const void* ptr,
+ ulint align_no)
+{
+ ;
+ ;
+ ;
+
+ ;
+
+ return(((ulint)ptr) & (align_no - 1));
+}
+
+
+
+static inline
+ulint
+ut_bit_get_nth(
+
+
+
+ ulint a,
+ ulint n)
+{
+ ;
+ ;
+
+ return(1 & (a >> n));
+}
+
+
+
+static inline
+ulint
+ut_bit_set_nth(
+
+
+ ulint a,
+ ulint n,
+ ulint val)
+{
+ ;
+ ;
+
+ if (val) {
+ return(((ulint) 1 << n) | a);
+ } else {
+ return(~((ulint) 1 << n) & a);
+ }
+}
+# 248 "./include/ut0byte.h" 2
+# 17 "./include/fil0fil.h" 2
+# 1 "./include/os0file.h" 1
+# 14 "./include/os0file.h"
+# 1 "./include/trx0types.h" 1
+# 12 "./include/trx0types.h"
+# 1 "./include/lock0types.h" 1
+# 13 "./include/lock0types.h"
+typedef struct lock_struct ib_lock_t;
+typedef struct lock_sys_struct lock_sys_t;
+# 13 "./include/trx0types.h" 2
+
+
+
+typedef struct trx_struct trx_t;
+typedef struct trx_sys_struct trx_sys_t;
+typedef struct trx_doublewrite_struct trx_doublewrite_t;
+typedef struct trx_sig_struct trx_sig_t;
+typedef struct trx_rseg_struct trx_rseg_t;
+typedef struct trx_undo_struct trx_undo_t;
+typedef struct trx_undo_arr_struct trx_undo_arr_t;
+typedef struct trx_undo_inf_struct trx_undo_inf_t;
+typedef struct trx_purge_struct trx_purge_t;
+typedef struct roll_node_struct roll_node_t;
+typedef struct commit_node_struct commit_node_t;
+typedef struct trx_named_savept_struct trx_named_savept_t;
+
+
+typedef struct trx_savept_struct trx_savept_t;
+struct trx_savept_struct{
+ dulint least_undo_no;
+};
+
+
+typedef unsigned char trx_sysf_t;
+typedef unsigned char trx_rsegf_t;
+typedef unsigned char trx_usegf_t;
+typedef unsigned char trx_ulogf_t;
+typedef unsigned char trx_upagef_t;
+
+
+typedef unsigned char trx_undo_rec_t;
+# 15 "./include/os0file.h" 2
+
+
+# 1 "/usr/include/dirent.h" 1 3 4
+# 28 "/usr/include/dirent.h" 3 4
+
+# 62 "/usr/include/dirent.h" 3 4
+# 1 "/usr/include/bits/dirent.h" 1 3 4
+# 23 "/usr/include/bits/dirent.h" 3 4
+struct dirent
+ {
+
+ __ino_t d_ino;
+ __off_t d_off;
+
+
+
+
+ unsigned short int d_reclen;
+ unsigned char d_type;
+ char d_name[256];
+ };
+
+
+struct dirent64
+ {
+ __ino64_t d_ino;
+ __off64_t d_off;
+ unsigned short int d_reclen;
+ unsigned char d_type;
+ char d_name[256];
+ };
+# 63 "/usr/include/dirent.h" 2 3 4
+# 98 "/usr/include/dirent.h" 3 4
+enum
+ {
+ DT_UNKNOWN = 0,
+
+ DT_FIFO = 1,
+
+ DT_CHR = 2,
+
+ DT_DIR = 4,
+
+ DT_BLK = 6,
+
+ DT_REG = 8,
+
+ DT_LNK = 10,
+
+ DT_SOCK = 12,
+
+ DT_WHT = 14
+
+ };
+# 128 "/usr/include/dirent.h" 3 4
+typedef struct __dirstream DIR;
+
+
+
+
+
+
+extern DIR *opendir (__const char *__name) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern DIR *fdopendir (int __fd);
+
+
+
+
+
+
+
+extern int closedir (DIR *__dirp) __attribute__ ((__nonnull__ (1)));
+# 163 "/usr/include/dirent.h" 3 4
+extern struct dirent *readdir (DIR *__dirp) __attribute__ ((__nonnull__ (1)));
+# 174 "/usr/include/dirent.h" 3 4
+extern struct dirent64 *readdir64 (DIR *__dirp) __attribute__ ((__nonnull__ (1)));
+# 184 "/usr/include/dirent.h" 3 4
+extern int readdir_r (DIR *__restrict __dirp,
+ struct dirent *__restrict __entry,
+ struct dirent **__restrict __result)
+ __attribute__ ((__nonnull__ (1, 2, 3)));
+# 201 "/usr/include/dirent.h" 3 4
+extern int readdir64_r (DIR *__restrict __dirp,
+ struct dirent64 *__restrict __entry,
+ struct dirent64 **__restrict __result)
+ __attribute__ ((__nonnull__ (1, 2, 3)));
+
+
+
+
+extern void rewinddir (DIR *__dirp) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern void seekdir (DIR *__dirp, long int __pos) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int telldir (DIR *__dirp) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int dirfd (DIR *__dirp) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 245 "/usr/include/dirent.h" 3 4
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 246 "/usr/include/dirent.h" 2 3 4
+
+
+
+
+
+
+extern int scandir (__const char *__restrict __dir,
+ struct dirent ***__restrict __namelist,
+ int (*__selector) (__const struct dirent *),
+ int (*__cmp) (__const struct dirent **,
+ __const struct dirent **))
+ __attribute__ ((__nonnull__ (1, 2)));
+# 275 "/usr/include/dirent.h" 3 4
+extern int scandir64 (__const char *__restrict __dir,
+ struct dirent64 ***__restrict __namelist,
+ int (*__selector) (__const struct dirent64 *),
+ int (*__cmp) (__const struct dirent64 **,
+ __const struct dirent64 **))
+ __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+extern int alphasort (__const struct dirent **__e1,
+ __const struct dirent **__e2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 300 "/usr/include/dirent.h" 3 4
+extern int alphasort64 (__const struct dirent64 **__e1,
+ __const struct dirent64 **__e2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 313 "/usr/include/dirent.h" 3 4
+extern __ssize_t getdirentries (int __fd, char *__restrict __buf,
+ size_t __nbytes,
+ __off_t *__restrict __basep)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+# 330 "/usr/include/dirent.h" 3 4
+extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf,
+ size_t __nbytes,
+ __off64_t *__restrict __basep)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+
+
+
+
+
+
+extern int versionsort (__const struct dirent **__e1,
+ __const struct dirent **__e2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 356 "/usr/include/dirent.h" 3 4
+extern int versionsort64 (__const struct dirent64 **__e1,
+ __const struct dirent64 **__e2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+# 18 "./include/os0file.h" 2
+
+
+
+
+typedef struct fil_node_struct fil_node_t;
+
+
+
+
+extern ulint os_has_said_disk_full;
+extern ulint os_aio_print_debug;
+
+extern ulint os_file_n_pending_preads;
+extern ulint os_file_n_pending_pwrites;
+
+extern ulint os_n_pending_reads;
+extern ulint os_n_pending_writes;
+# 49 "./include/os0file.h"
+typedef int os_file_t;
+
+
+extern ulint os_innodb_umask;
+
+
+
+
+
+extern ulint os_aio_use_native_aio;
+# 138 "./include/os0file.h"
+extern ulint os_n_file_reads;
+extern ulint os_n_file_writes;
+extern ulint os_n_fsyncs;
+
+
+
+enum os_file_type_enum{
+ OS_FILE_TYPE_UNKNOWN = 0,
+ OS_FILE_TYPE_FILE,
+ OS_FILE_TYPE_DIR,
+ OS_FILE_TYPE_LINK
+};
+typedef enum os_file_type_enum os_file_type_t;
+# 159 "./include/os0file.h"
+struct os_file_stat_struct{
+ char name[4000];
+ os_file_type_t type;
+ ib_longlong size;
+ time_t ctime;
+ time_t mtime;
+ time_t atime;
+};
+typedef struct os_file_stat_struct os_file_stat_t;
+
+
+
+
+typedef DIR* os_file_dir_t;
+
+
+
+
+
+ulint
+os_get_os_version(void);
+
+
+
+
+
+void
+os_io_init_simple(void);
+
+
+
+
+FILE*
+os_file_create_tmpfile(void);
+# 201 "./include/os0file.h"
+os_file_dir_t
+os_file_opendir(
+
+
+
+ const char* dirname,
+
+ ulint error_is_fatal);
+
+
+
+
+
+
+
+int
+os_file_closedir(
+
+
+ os_file_dir_t dir);
+
+
+
+
+int
+os_file_readdir_next_file(
+
+
+
+ const char* dirname,
+ os_file_dir_t dir,
+ os_file_stat_t* info);
+
+
+
+
+
+
+ulint
+os_file_create_directory(
+
+
+
+ const char* pathname,
+
+ ulint fail_if_exists);
+
+
+
+
+os_file_t
+os_file_create_simple(
+
+
+
+
+ const char* name,
+
+ ulint create_mode,
+
+
+
+
+
+
+ ulint access_type,
+
+ ulint* success);
+
+
+
+os_file_t
+os_file_create_simple_no_error_handling(
+
+
+
+
+ const char* name,
+
+ ulint create_mode,
+
+
+
+ ulint access_type,
+
+
+
+ ulint* success);
+
+
+
+os_file_t
+os_file_create(
+
+
+
+
+ const char* name,
+
+ ulint create_mode,
+
+
+
+
+
+
+
+ ulint purpose,
+
+
+
+
+
+
+ ulint type,
+ ulint* success);
+
+
+
+ulint
+os_file_delete(
+
+
+ const char* name);
+
+
+
+
+ulint
+os_file_delete_if_exists(
+
+
+ const char* name);
+
+
+
+
+ulint
+os_file_rename(
+
+
+ const char* oldpath,
+
+ const char* newpath);
+
+
+
+
+ulint
+os_file_close(
+
+
+ os_file_t file);
+
+
+
+ulint
+os_file_close_no_error_handling(
+
+
+ os_file_t file);
+
+
+
+ulint
+os_file_get_size(
+
+
+ os_file_t file,
+ ulint* size,
+
+ ulint* size_high);
+
+
+
+ib_longlong
+os_file_get_size_as_iblonglong(
+
+
+ os_file_t file);
+
+
+
+ulint
+os_file_set_size(
+
+
+ const char* name,
+
+ os_file_t file,
+ ulint size,
+
+ ulint size_high);
+
+
+
+ulint
+os_file_set_eof(
+
+
+ FILE* file);
+
+
+
+ulint
+os_file_flush(
+
+
+ os_file_t file);
+
+
+
+
+
+
+ulint
+os_file_get_last_error(
+
+
+
+ ulint report_all_errors);
+
+
+
+
+
+
+
+ulint
+_os_file_read(
+
+
+
+ os_file_t file,
+ void* buf,
+ ulint offset,
+
+ ulint offset_high,
+
+ ulint n,
+ trx_t* trx);
+
+
+
+
+
+void
+os_file_read_string(
+
+ FILE* file,
+ char* str,
+ ulint size);
+
+
+
+
+ulint
+os_file_read_no_error_handling(
+
+
+
+ os_file_t file,
+ void* buf,
+ ulint offset,
+
+ ulint offset_high,
+
+ ulint n);
+
+
+
+
+ulint
+os_file_write(
+
+
+
+ const char* name,
+
+ os_file_t file,
+ const void* buf,
+ ulint offset,
+
+ ulint offset_high,
+
+ ulint n);
+
+
+
+ulint
+os_file_status(
+
+
+ const char* path,
+ ulint* exists,
+ os_file_type_t* type);
+# 525 "./include/os0file.h"
+char*
+os_file_dirname(
+
+
+
+ const char* path);
+
+
+
+ulint
+os_file_create_subdirs_if_needed(
+
+
+
+ const char* path);
+# 549 "./include/os0file.h"
+void
+os_aio_init(
+
+ ulint n,
+
+
+
+ ulint n_read_threads,
+ ulint n_write_threads,
+ ulint n_slots_sync);
+
+
+
+ulint
+os_aio(
+
+
+
+ ulint type,
+ ulint mode,
+# 581 "./include/os0file.h"
+ const char* name,
+
+ os_file_t file,
+ void* buf,
+
+ ulint offset,
+
+ ulint offset_high,
+
+ ulint n,
+ fil_node_t* message1,
+
+
+
+ void* message2,
+ trx_t* trx);
+
+
+
+
+void
+os_aio_wake_all_threads_at_shutdown(void);
+
+
+
+
+
+void
+os_aio_wait_until_no_pending_writes(void);
+
+
+
+
+void
+os_aio_simulated_wake_handler_threads(void);
+
+
+
+
+
+
+
+void
+os_aio_simulated_put_read_threads_to_sleep(void);
+# 681 "./include/os0file.h"
+ulint
+os_aio_simulated_handle(
+
+
+ ulint segment,
+
+
+
+
+ fil_node_t**message1,
+
+
+
+
+ void** message2,
+ ulint* type);
+
+
+
+ulint
+os_aio_validate(void);
+
+
+
+
+
+void
+os_aio_print(
+
+ FILE* file);
+
+
+
+void
+os_aio_refresh_stats(void);
+# 730 "./include/os0file.h"
+ulint
+os_file_get_status(
+
+
+ const char* path,
+ os_file_stat_t* stat_info);
+# 18 "./include/fil0fil.h" 2
+
+
+
+
+extern const char* fil_path_to_mysql_datadir;
+# 34 "./include/fil0fil.h"
+typedef unsigned char fil_faddr_t;
+# 44 "./include/fil0fil.h"
+typedef struct fil_addr_struct fil_addr_t;
+struct fil_addr_struct{
+ ulint page;
+ ulint boffset;
+};
+
+
+extern fil_addr_t fil_addr_null;
+# 92 "./include/fil0fil.h"
+extern ulint fil_n_log_flushes;
+
+extern ulint fil_n_pending_log_flushes;
+extern ulint fil_n_pending_tablespace_flushes;
+
+
+
+
+
+ib_longlong
+fil_space_get_version(
+
+
+
+ ulint id);
+
+
+
+rw_lock_t*
+fil_space_get_latch(
+
+
+ ulint id);
+
+
+
+ulint
+fil_space_get_type(
+
+
+ ulint id);
+
+
+
+ibuf_data_t*
+fil_space_get_ibuf_data(
+
+
+ ulint id);
+
+
+
+void
+fil_node_create(
+
+ const char* name,
+ ulint size,
+
+ ulint id,
+ ulint is_raw);
+
+
+
+
+
+void
+fil_space_truncate_start(
+
+ ulint id,
+ ulint trunc_len);
+
+
+
+
+
+
+ulint
+fil_space_create(
+
+
+ const char* name,
+ ulint id,
+ ulint purpose);
+
+
+
+
+ulint
+fil_space_free(
+
+
+ ulint id);
+
+
+
+
+ulint
+fil_space_get_size(
+
+
+ ulint id);
+
+
+
+
+ulint
+fil_check_adress_in_tablespace(
+
+
+ ulint id,
+ ulint page_no);
+
+
+
+void
+fil_init(
+
+ ulint max_n_open);
+
+
+
+void
+fil_print(
+
+ FILE* file);
+
+
+
+
+
+
+
+void
+fil_open_log_and_system_tablespace_files(void);
+
+
+
+
+
+void
+fil_close_all_files(void);
+
+
+
+
+
+void
+fil_set_max_space_id_if_bigger(
+
+ ulint max_id);
+
+
+
+
+
+void
+fil_ibuf_init_at_db_start(void);
+
+
+
+
+
+ulint
+fil_write_flushed_lsn_to_data_files(
+
+
+ dulint lsn,
+ ulint arch_log_no);
+
+
+
+
+void
+fil_read_flushed_lsn_and_arch_log_no(
+
+ os_file_t data_file,
+ ulint one_read_already,
+
+
+
+
+
+ dulint* min_flushed_lsn,
+ dulint* max_flushed_lsn);
+
+
+
+
+ulint
+fil_inc_pending_ibuf_merges(
+
+
+
+ ulint id);
+
+
+
+void
+fil_decr_pending_ibuf_merges(
+
+ ulint id);
+# 296 "./include/fil0fil.h"
+unsigned char*
+fil_op_log_parse_or_replay(
+
+
+
+
+ unsigned char* ptr,
+
+
+ unsigned char* end_ptr,
+ ulint type,
+ ulint do_replay,
+
+ ulint space_id);
+
+
+
+
+
+
+ulint
+fil_delete_tablespace(
+
+
+ ulint id);
+# 330 "./include/fil0fil.h"
+ulint
+fil_discard_tablespace(
+
+
+ ulint id);
+
+
+
+
+ulint
+fil_rename_tablespace(
+
+
+ const char* old_name,
+
+
+
+ ulint id,
+ const char* new_name);
+# 359 "./include/fil0fil.h"
+ulint
+fil_create_new_single_table_tablespace(
+
+
+ ulint* space_id,
+
+
+ const char* tablename,
+
+
+
+ ulint is_temp,
+
+ ulint size);
+# 385 "./include/fil0fil.h"
+ulint
+fil_open_single_table_tablespace(
+
+
+ ulint check_space_id,
+
+
+
+
+
+
+ ulint id,
+ const char* name);
+# 409 "./include/fil0fil.h"
+ulint
+fil_reset_too_high_lsns(
+
+
+ const char* name,
+
+ dulint current_lsn);
+# 426 "./include/fil0fil.h"
+ulint
+fil_load_single_table_tablespaces(void);
+# 437 "./include/fil0fil.h"
+void
+fil_print_orphaned_tablespaces(void);
+
+
+
+
+
+ulint
+fil_tablespace_deleted_or_being_deleted_in_mem(
+
+
+
+ ulint id,
+ ib_longlong version);
+
+
+
+
+
+ulint
+fil_tablespace_exists_in_mem(
+
+
+ ulint id);
+
+
+
+
+
+ulint
+fil_space_for_table_exists_in_mem(
+
+
+
+ ulint id,
+ const char* name,
+
+
+ ulint is_temp,
+
+ ulint mark_space,
+
+
+
+
+
+ ulint print_error_if_does_not_exist);
+# 493 "./include/fil0fil.h"
+ulint
+fil_extend_space_to_desired_size(
+
+
+ ulint* actual_size,
+
+
+ ulint space_id,
+ ulint size_after_extend);
+# 518 "./include/fil0fil.h"
+ulint
+fil_space_reserve_free_extents(
+
+
+ ulint id,
+ ulint n_free_now,
+ ulint n_to_reserve);
+
+
+
+void
+fil_space_release_free_extents(
+
+ ulint id,
+ ulint n_reserved);
+
+
+
+
+ulint
+fil_space_get_n_reserved_extents(
+
+ ulint id);
+
+
+
+
+
+
+ulint
+_fil_io(
+
+
+
+
+ ulint type,
+# 562 "./include/fil0fil.h"
+ ulint sync,
+ ulint space_id,
+ ulint block_offset,
+ ulint byte_offset,
+
+
+ ulint len,
+
+
+ void* buf,
+
+
+ void* message,
+
+ trx_t* trx);
+
+
+
+
+
+ulint
+fil_read(
+
+
+
+
+ ulint sync,
+ ulint space_id,
+ ulint block_offset,
+ ulint byte_offset,
+
+ ulint len,
+
+
+ void* buf,
+
+ void* message);
+
+
+
+
+
+
+ulint
+fil_write(
+
+
+
+
+ ulint sync,
+ ulint space_id,
+ ulint block_offset,
+ ulint byte_offset,
+
+ ulint len,
+
+
+ void* buf,
+
+ void* message);
+
+
+
+
+
+
+
+void
+fil_aio_wait(
+
+ ulint segment);
+
+
+
+typedef enum {
+ FLUSH_FROM_DIRTY_BUFFER,
+ FLUSH_FROM_OTHER,
+ FLUSH_FROM_CHECKPOINT,
+ FLUSH_FROM_LOG_IO_COMPLETE,
+ FLUSH_FROM_LOG_WRITE_UP_TO,
+ FLUSH_FROM_ARCHIVE,
+ FLUSH_FROM_NUMBER
+} flush_from_type;
+
+
+
+
+void
+fil_flush(
+
+ ulint space_id,
+
+ flush_from_type flush_type);
+
+
+
+
+void
+fil_flush_file_spaces(
+
+ ulint purpose,
+ flush_from_type flush_type);
+
+
+
+ulint
+fil_validate(void);
+
+
+
+
+
+ulint
+fil_addr_is_null(
+
+
+ fil_addr_t addr);
+
+
+
+ulint
+fil_page_get_prev(unsigned char* page);
+ulint
+fil_page_get_next(unsigned char* page);
+
+
+
+void
+fil_page_set_type(
+
+ unsigned char* page,
+ ulint type);
+
+
+
+ulint
+fil_page_get_type(
+
+
+
+ unsigned char* page);
+
+
+
+
+ulint
+fil_system_hash_cells(void);
+
+
+ulint
+fil_system_hash_nodes(void);
+
+
+typedef struct fil_space_struct fil_space_t;
+# 28 "./include/buf0buf.h" 2
+# 1 "./include/mtr0types.h" 1
+# 12 "./include/mtr0types.h"
+typedef struct mtr_struct mtr_t;
+# 29 "./include/buf0buf.h" 2
+# 1 "./include/buf0types.h" 1
+# 12 "./include/buf0types.h"
+typedef struct buf_block_struct buf_block_t;
+typedef struct buf_pool_struct buf_pool_t;
+
+typedef struct buf_io_counter_struct buf_io_counter_t;
+
+
+typedef unsigned char buf_frame_t;
+# 30 "./include/buf0buf.h" 2
+
+# 1 "./include/hash0hash.h" 1
+# 13 "./include/hash0hash.h"
+# 1 "./include/mem0mem.h" 1
+# 16 "./include/mem0mem.h"
+# 1 "./include/ut0rnd.h" 1
+# 22 "./include/ut0rnd.h"
+static inline
+void
+ut_rnd_set_seed(
+
+ ulint seed);
+
+
+static inline
+ulint
+ut_rnd_gen_next_ulint(
+
+
+ ulint rnd);
+
+
+
+
+
+static inline
+ulint
+ut_rnd_gen_ulint(void);
+
+
+
+
+static inline
+ulint
+ut_rnd_interval(
+
+
+ ulint low,
+ ulint high);
+
+
+static inline
+ulint
+ut_rnd_gen_ibool(void);
+
+
+
+
+
+
+static inline
+ulint
+ut_hash_ulint(
+
+
+ ulint key,
+ ulint table_size);
+
+
+static inline
+ulint
+ut_fold_ulint_pair(
+
+
+ ulint n1,
+ ulint n2);
+
+
+static inline
+ulint
+ut_fold_dulint(
+
+
+ dulint d);
+
+
+static inline
+ulint
+ut_fold_string(
+
+
+ const char* str);
+
+
+static inline
+ulint
+ut_fold_binary(
+
+
+ const unsigned char* str,
+ ulint len);
+
+
+
+
+ulint
+ut_find_prime(
+
+
+ ulint n);
+
+
+
+# 1 "./include/ut0rnd.ic" 1
+# 21 "./include/ut0rnd.ic"
+extern ulint ut_rnd_ulint_counter;
+
+
+
+static inline
+void
+ut_rnd_set_seed(
+
+ ulint seed)
+{
+ ut_rnd_ulint_counter = seed;
+}
+
+
+
+static inline
+ulint
+ut_rnd_gen_next_ulint(
+
+
+ ulint rnd)
+{
+ ulint n_bits;
+
+ n_bits = 8 * sizeof(ulint);
+
+ rnd = 119785373 * rnd + 126792457;
+ rnd = 187678878 ^ rnd;
+ rnd = (rnd << 20) + (rnd >> (n_bits - 20));
+ rnd = 85689495 * rnd + 63498502;
+ rnd = 143537923 ^ rnd;
+ rnd = (rnd << 20) + (rnd >> (n_bits - 20));
+ rnd = 151117737 * rnd + 98781234;
+
+ return(rnd);
+}
+
+
+
+
+
+
+static inline
+ulint
+ut_rnd_gen_ulint(void)
+
+
+{
+ ulint rnd;
+ ulint n_bits;
+
+ n_bits = 8 * sizeof(ulint);
+
+ ut_rnd_ulint_counter =
+ 151117737 * ut_rnd_ulint_counter + 119785373;
+
+ rnd = ut_rnd_gen_next_ulint(ut_rnd_ulint_counter);
+
+ return(rnd);
+}
+
+
+
+static inline
+ulint
+ut_rnd_interval(
+
+
+ ulint low,
+ ulint high)
+{
+ ulint rnd;
+
+ ;
+
+ if (low == high) {
+
+ return(low);
+ }
+
+ rnd = ut_rnd_gen_ulint();
+
+ return(low + (rnd % (high - low + 1)));
+}
+
+
+
+static inline
+ulint
+ut_rnd_gen_ibool(void)
+
+
+{
+ ulint x;
+
+ x = ut_rnd_gen_ulint();
+
+ if (((x >> 20) + (x >> 15)) & 1) {
+
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+
+
+static inline
+ulint
+ut_hash_ulint(
+
+
+ ulint key,
+ ulint table_size)
+{
+ key = key ^ 1653893711;
+
+ return(key % table_size);
+}
+
+
+
+static inline
+ulint
+ut_fold_ulint_pair(
+
+
+ ulint n1,
+ ulint n2)
+{
+ return(((((n1 ^ n2 ^ 1653893711) << 8) + n1)
+ ^ 1463735687) + n2);
+}
+
+
+
+static inline
+ulint
+ut_fold_dulint(
+
+
+ dulint d)
+{
+ return(ut_fold_ulint_pair(ut_dulint_get_low(d),
+ ut_dulint_get_high(d)));
+}
+
+
+
+static inline
+ulint
+ut_fold_string(
+
+
+ const char* str)
+{
+
+
+
+ ulint fold = 0;
+
+ ;
+
+ while (*str != '\0') {
+
+
+
+
+
+
+ fold = ut_fold_ulint_pair(fold, (ulint)(*str));
+ str++;
+ }
+
+ return(fold);
+}
+
+
+
+static inline
+ulint
+ut_fold_binary(
+
+
+ const unsigned char* str,
+ ulint len)
+{
+ const unsigned char* str_end = str + len;
+ ulint fold = 0;
+
+ ;
+
+ while (str < str_end) {
+ fold = ut_fold_ulint_pair(fold, (ulint)(*str));
+
+ str++;
+ }
+
+ return(fold);
+}
+# 119 "./include/ut0rnd.h" 2
+# 17 "./include/mem0mem.h" 2
+
+
+# 1 "./include/mach0data.h" 1
+# 23 "./include/mach0data.h"
+static inline
+void
+mach_write_to_1(
+
+ unsigned char* b,
+ ulint n);
+
+
+static inline
+ulint
+mach_read_from_1(
+
+
+ unsigned char* b);
+
+
+
+static inline
+void
+mach_write_to_2(
+
+ unsigned char* b,
+ ulint n);
+
+
+
+static inline
+ulint
+mach_read_from_2(
+
+
+ unsigned char* b);
+
+
+
+
+
+static inline
+uint16
+mach_encode_2(
+
+
+ ulint n);
+
+
+
+
+static inline
+ulint
+mach_decode_2(
+
+
+ uint16 n);
+
+
+
+static inline
+void
+mach_write_to_3(
+
+ unsigned char* b,
+ ulint n);
+
+
+
+static inline
+ulint
+mach_read_from_3(
+
+
+ unsigned char* b);
+
+
+
+static inline
+void
+mach_write_to_4(
+
+ unsigned char* b,
+ ulint n);
+
+
+
+static inline
+ulint
+mach_read_from_4(
+
+
+ unsigned char* b);
+
+
+static inline
+ulint
+mach_write_compressed(
+
+
+ unsigned char* b,
+ ulint n);
+
+
+static inline
+ulint
+mach_get_compressed_size(
+
+
+ ulint n);
+
+
+static inline
+ulint
+mach_read_compressed(
+
+
+ unsigned char* b);
+
+
+
+static inline
+void
+mach_write_to_6(
+
+ unsigned char* b,
+ dulint n);
+
+
+
+static inline
+dulint
+mach_read_from_6(
+
+
+ unsigned char* b);
+
+
+
+static inline
+void
+mach_write_to_7(
+
+ unsigned char* b,
+ dulint n);
+
+
+
+static inline
+dulint
+mach_read_from_7(
+
+
+ unsigned char* b);
+
+
+
+static inline
+void
+mach_write_to_8(
+
+ unsigned char* b,
+ dulint n);
+
+
+
+static inline
+dulint
+mach_read_from_8(
+
+
+ unsigned char* b);
+
+
+static inline
+ulint
+mach_dulint_write_compressed(
+
+
+ unsigned char* b,
+ dulint n);
+
+
+static inline
+ulint
+mach_dulint_get_compressed_size(
+
+
+ dulint n);
+
+
+static inline
+dulint
+mach_dulint_read_compressed(
+
+
+ unsigned char* b);
+
+
+static inline
+ulint
+mach_dulint_write_much_compressed(
+
+
+ unsigned char* b,
+ dulint n);
+
+
+static inline
+ulint
+mach_dulint_get_much_compressed_size(
+
+
+ dulint n);
+
+
+static inline
+dulint
+mach_dulint_read_much_compressed(
+
+
+ unsigned char* b);
+
+
+
+unsigned char*
+mach_parse_compressed(
+
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ ulint* val);
+
+
+
+unsigned char*
+mach_dulint_parse_compressed(
+
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ dulint* val);
+
+
+static inline
+double
+mach_double_read(
+
+
+ unsigned char* b);
+
+
+static inline
+void
+mach_double_write(
+
+ unsigned char* b,
+ double d);
+
+
+static inline
+float
+mach_float_read(
+
+
+ unsigned char* b);
+
+
+static inline
+void
+mach_float_write(
+
+ unsigned char* b,
+ float d);
+
+
+static inline
+ulint
+mach_read_from_n_little_endian(
+
+
+ unsigned char* buf,
+ ulint buf_size);
+
+
+static inline
+void
+mach_write_to_n_little_endian(
+
+ unsigned char* dest,
+ ulint dest_size,
+ ulint n);
+
+
+static inline
+ulint
+mach_read_from_2_little_endian(
+
+
+ unsigned char* buf);
+
+
+static inline
+void
+mach_write_to_2_little_endian(
+
+ unsigned char* dest,
+ ulint n);
+
+
+# 1 "./include/mach0data.ic" 1
+# 12 "./include/mach0data.ic"
+static inline
+void
+mach_write_to_1(
+
+ unsigned char* b,
+ ulint n)
+{
+ ;
+ ;
+
+ b[0] = (unsigned char)n;
+}
+
+
+
+static inline
+ulint
+mach_read_from_1(
+
+
+ unsigned char* b)
+{
+ ;
+ return((ulint)(b[0]));
+}
+
+
+
+
+static inline
+void
+mach_write_to_2(
+
+ unsigned char* b,
+ ulint n)
+{
+ ;
+ ;
+
+ b[0] = (unsigned char)(n >> 8);
+ b[1] = (unsigned char)(n);
+}
+
+
+
+
+static inline
+ulint
+mach_read_from_2(
+
+
+ unsigned char* b)
+{
+ ;
+ return( ((ulint)(b[0]) << 8)
+ + (ulint)(b[1])
+ );
+}
+
+
+
+
+
+static inline
+uint16
+mach_encode_2(
+
+
+ ulint n)
+{
+ uint16 ret;
+ ;
+ mach_write_to_2((unsigned char*) &ret, n);
+ return(ret);
+}
+
+
+
+
+static inline
+ulint
+mach_decode_2(
+
+
+ uint16 n)
+{
+ ;
+ return(mach_read_from_2((unsigned char*) &n));
+}
+
+
+
+
+static inline
+void
+mach_write_to_3(
+
+ unsigned char* b,
+ ulint n)
+{
+ ;
+ ;
+
+ b[0] = (unsigned char)(n >> 16);
+ b[1] = (unsigned char)(n >> 8);
+ b[2] = (unsigned char)(n);
+}
+
+
+
+
+static inline
+ulint
+mach_read_from_3(
+
+
+ unsigned char* b)
+{
+ ;
+ return( ((ulint)(b[0]) << 16)
+ + ((ulint)(b[1]) << 8)
+ + (ulint)(b[2])
+ );
+}
+
+
+
+
+static inline
+void
+mach_write_to_4(
+
+ unsigned char* b,
+ ulint n)
+{
+ ;
+# 160 "./include/mach0data.ic"
+ b[0] = (unsigned char)(n >> 24);
+ b[1] = (unsigned char)(n >> 16);
+ b[2] = (unsigned char)(n >> 8);
+ b[3] = (unsigned char)n;
+
+}
+
+
+
+
+static inline
+ulint
+mach_read_from_4(
+
+
+ unsigned char* b)
+{
+# 192 "./include/mach0data.ic"
+ ;
+ return( ((ulint)(b[0]) << 24)
+ + ((ulint)(b[1]) << 16)
+ + ((ulint)(b[2]) << 8)
+ + (ulint)(b[3])
+ );
+
+}
+# 208 "./include/mach0data.ic"
+static inline
+ulint
+mach_write_compressed(
+
+
+ unsigned char* b,
+ ulint n)
+{
+ ;
+
+ if (n < 0x80UL) {
+ mach_write_to_1(b, n);
+ return(1);
+ } else if (n < 0x4000UL) {
+ mach_write_to_2(b, n | 0x8000UL);
+ return(2);
+ } else if (n < 0x200000UL) {
+ mach_write_to_3(b, n | 0xC00000UL);
+ return(3);
+ } else if (n < 0x10000000UL) {
+ mach_write_to_4(b, n | 0xE0000000UL);
+ return(4);
+ } else {
+ mach_write_to_1(b, 0xF0UL);
+ mach_write_to_4(b + 1, n);
+ return(5);
+ }
+}
+
+
+
+static inline
+ulint
+mach_get_compressed_size(
+
+
+ ulint n)
+{
+ if (n < 0x80UL) {
+ return(1);
+ } else if (n < 0x4000UL) {
+ return(2);
+ } else if (n < 0x200000UL) {
+ return(3);
+ } else if (n < 0x10000000UL) {
+ return(4);
+ } else {
+ return(5);
+ }
+}
+
+
+
+static inline
+ulint
+mach_read_compressed(
+
+
+ unsigned char* b)
+{
+ ulint flag;
+
+ ;
+
+ flag = mach_read_from_1(b);
+
+ if (flag < 0x80UL) {
+ return(flag);
+ } else if (flag < 0xC0UL) {
+ return(mach_read_from_2(b) & 0x7FFFUL);
+ } else if (flag < 0xE0UL) {
+ return(mach_read_from_3(b) & 0x3FFFFFUL);
+ } else if (flag < 0xF0UL) {
+ return(mach_read_from_4(b) & 0x1FFFFFFFUL);
+ } else {
+ ;
+ return(mach_read_from_4(b + 1));
+ }
+}
+
+
+
+
+static inline
+void
+mach_write_to_8(
+
+ unsigned char* b,
+ dulint n)
+{
+ ;
+
+ mach_write_to_4(b, ut_dulint_get_high(n));
+ mach_write_to_4(b + 4, ut_dulint_get_low(n));
+}
+
+
+
+
+static inline
+dulint
+mach_read_from_8(
+
+
+ unsigned char* b)
+{
+ ulint high;
+ ulint low;
+
+ ;
+
+ high = mach_read_from_4(b);
+ low = mach_read_from_4(b + 4);
+
+ return(ut_dulint_create(high, low));
+}
+
+
+
+
+static inline
+void
+mach_write_to_7(
+
+ unsigned char* b,
+ dulint n)
+{
+ ;
+
+ mach_write_to_3(b, ut_dulint_get_high(n));
+ mach_write_to_4(b + 3, ut_dulint_get_low(n));
+}
+
+
+
+
+static inline
+dulint
+mach_read_from_7(
+
+
+ unsigned char* b)
+{
+ ulint high;
+ ulint low;
+
+ ;
+
+ high = mach_read_from_3(b);
+ low = mach_read_from_4(b + 3);
+
+ return(ut_dulint_create(high, low));
+}
+
+
+
+
+static inline
+void
+mach_write_to_6(
+
+ unsigned char* b,
+ dulint n)
+{
+ ;
+
+ mach_write_to_2(b, ut_dulint_get_high(n));
+ mach_write_to_4(b + 2, ut_dulint_get_low(n));
+}
+
+
+
+
+static inline
+dulint
+mach_read_from_6(
+
+
+ unsigned char* b)
+{
+ ulint high;
+ ulint low;
+
+ ;
+
+ high = mach_read_from_2(b);
+ low = mach_read_from_4(b + 2);
+
+ return(ut_dulint_create(high, low));
+}
+
+
+
+static inline
+ulint
+mach_dulint_write_compressed(
+
+
+ unsigned char* b,
+ dulint n)
+{
+ ulint size;
+
+ ;
+
+ size = mach_write_compressed(b, ut_dulint_get_high(n));
+ mach_write_to_4(b + size, ut_dulint_get_low(n));
+
+ return(size + 4);
+}
+
+
+
+static inline
+ulint
+mach_dulint_get_compressed_size(
+
+
+ dulint n)
+{
+ return(4 + mach_get_compressed_size(ut_dulint_get_high(n)));
+}
+
+
+
+static inline
+dulint
+mach_dulint_read_compressed(
+
+
+ unsigned char* b)
+{
+ ulint high;
+ ulint low;
+ ulint size;
+
+ ;
+
+ high = mach_read_compressed(b);
+
+ size = mach_get_compressed_size(high);
+
+ low = mach_read_from_4(b + size);
+
+ return(ut_dulint_create(high, low));
+}
+
+
+
+static inline
+ulint
+mach_dulint_write_much_compressed(
+
+
+ unsigned char* b,
+ dulint n)
+{
+ ulint size;
+
+ ;
+
+ if (ut_dulint_get_high(n) == 0) {
+ return(mach_write_compressed(b, ut_dulint_get_low(n)));
+ }
+
+ *b = (unsigned char)0xFF;
+ size = 1 + mach_write_compressed(b + 1, ut_dulint_get_high(n));
+
+ size += mach_write_compressed(b + size, ut_dulint_get_low(n));
+
+ return(size);
+}
+
+
+
+static inline
+ulint
+mach_dulint_get_much_compressed_size(
+
+
+ dulint n)
+{
+ if (0 == ut_dulint_get_high(n)) {
+ return(mach_get_compressed_size(ut_dulint_get_low(n)));
+ }
+
+ return(1 + mach_get_compressed_size(ut_dulint_get_high(n))
+ + mach_get_compressed_size(ut_dulint_get_low(n)));
+}
+
+
+
+static inline
+dulint
+mach_dulint_read_much_compressed(
+
+
+ unsigned char* b)
+{
+ ulint high;
+ ulint low;
+ ulint size;
+
+ ;
+
+ if (*b != (unsigned char)0xFF) {
+ high = 0;
+ size = 0;
+ } else {
+ high = mach_read_compressed(b + 1);
+
+ size = 1 + mach_get_compressed_size(high);
+ }
+
+ low = mach_read_compressed(b + size);
+
+ return(ut_dulint_create(high, low));
+}
+
+
+
+static inline
+double
+mach_double_read(
+
+
+ unsigned char* b)
+{
+ double d;
+ ulint i;
+ unsigned char* ptr;
+
+ ptr = (unsigned char*)&d;
+
+ for (i = 0; i < sizeof(double); i++) {
+
+ ptr[sizeof(double) - i - 1] = b[i];
+
+
+
+ }
+
+ return(d);
+}
+
+
+
+static inline
+void
+mach_double_write(
+
+ unsigned char* b,
+ double d)
+{
+ ulint i;
+ unsigned char* ptr;
+
+ ptr = (unsigned char*)&d;
+
+ for (i = 0; i < sizeof(double); i++) {
+
+ b[i] = ptr[sizeof(double) - i - 1];
+
+
+
+ }
+}
+
+
+
+static inline
+float
+mach_float_read(
+
+
+ unsigned char* b)
+{
+ float d;
+ ulint i;
+ unsigned char* ptr;
+
+ ptr = (unsigned char*)&d;
+
+ for (i = 0; i < sizeof(float); i++) {
+
+ ptr[sizeof(float) - i - 1] = b[i];
+
+
+
+ }
+
+ return(d);
+}
+
+
+
+static inline
+void
+mach_float_write(
+
+ unsigned char* b,
+ float d)
+{
+ ulint i;
+ unsigned char* ptr;
+
+ ptr = (unsigned char*)&d;
+
+ for (i = 0; i < sizeof(float); i++) {
+
+ b[i] = ptr[sizeof(float) - i - 1];
+
+
+
+ }
+}
+
+
+
+static inline
+ulint
+mach_read_from_n_little_endian(
+
+
+ unsigned char* buf,
+ ulint buf_size)
+{
+ ulint n = 0;
+ unsigned char* ptr;
+
+ ;
+ ;
+
+ ptr = buf + buf_size;
+
+ for (;;) {
+ ptr--;
+
+ n = n << 8;
+
+ n += (ulint)(*ptr);
+
+ if (ptr == buf) {
+ break;
+ }
+ }
+
+ return(n);
+}
+
+
+
+static inline
+void
+mach_write_to_n_little_endian(
+
+ unsigned char* dest,
+ ulint dest_size,
+ ulint n)
+{
+ unsigned char* end;
+
+ ;
+ ;
+
+ end = dest + dest_size;
+
+ for (;;) {
+ *dest = (unsigned char)(n & 0xFF);
+
+ n = n >> 8;
+
+ dest++;
+
+ if (dest == end) {
+ break;
+ }
+ }
+
+ ;
+}
+
+
+
+static inline
+ulint
+mach_read_from_2_little_endian(
+
+
+ unsigned char* buf)
+{
+ return((ulint)(*buf) + ((ulint)(*(buf + 1))) * 256);
+}
+
+
+
+static inline
+void
+mach_write_to_2_little_endian(
+
+ unsigned char* dest,
+ ulint n)
+{
+ ;
+
+ *dest = (unsigned char)(n & 0xFFUL);
+
+ n = n >> 8;
+ dest++;
+
+ *dest = (unsigned char)(n & 0xFFUL);
+}
+# 332 "./include/mach0data.h" 2
+# 20 "./include/mem0mem.h" 2
+
+
+
+
+typedef struct mem_block_info_struct mem_block_info_t;
+
+
+
+typedef mem_block_info_t mem_block_t;
+
+
+typedef mem_block_t mem_heap_t;
+# 57 "./include/mem0mem.h"
+void
+mem_init(
+
+ ulint size);
+# 103 "./include/mem0mem.h"
+static inline
+mem_heap_t*
+mem_heap_create_func(
+
+
+ ulint n,
+
+
+
+
+
+ void* init_block,
+# 124 "./include/mem0mem.h"
+ ulint type,
+
+ const char* file_name,
+ ulint line
+ );
+
+
+
+
+static inline
+void
+mem_heap_free_func(
+
+ mem_heap_t* heap,
+ const char* file_name,
+ ulint line);
+
+
+static inline
+void*
+mem_heap_alloc(
+
+
+
+ mem_heap_t* heap,
+ ulint n);
+
+
+
+
+static inline
+unsigned char*
+mem_heap_get_heap_top(
+
+
+ mem_heap_t* heap);
+
+
+
+
+static inline
+void
+mem_heap_free_heap_top(
+
+ mem_heap_t* heap,
+ unsigned char* old_top);
+
+
+static inline
+void
+mem_heap_empty(
+
+ mem_heap_t* heap);
+
+
+
+static inline
+void*
+mem_heap_get_top(
+
+
+ mem_heap_t* heap,
+ ulint n);
+
+
+
+static inline
+void
+mem_heap_free_top(
+
+ mem_heap_t* heap,
+ ulint n);
+
+
+static inline
+ulint
+mem_heap_get_size(
+
+ mem_heap_t* heap);
+# 219 "./include/mem0mem.h"
+static inline
+void*
+mem_alloc_func(
+
+
+
+ ulint n,
+ const char* file_name,
+ ulint line
+);
+
+
+
+
+
+
+void*
+mem_alloc_func_noninline(
+
+
+
+ ulint n,
+ const char* file_name,
+ ulint line
+ );
+# 253 "./include/mem0mem.h"
+static inline
+void
+mem_free_func(
+
+ void* ptr,
+ const char* file_name,
+ ulint line
+);
+
+
+
+static inline
+char*
+mem_strdup(
+
+
+
+ const char* str);
+
+
+static inline
+char*
+mem_strdupl(
+
+
+
+ const char* str,
+ ulint len);
+
+
+
+static inline
+char*
+mem_strdupq(
+
+
+
+ const char* str,
+ char q);
+
+
+
+
+char*
+mem_heap_strdup(
+
+
+ mem_heap_t* heap,
+ const char* str);
+
+
+
+static inline
+char*
+mem_heap_strdupl(
+
+
+ mem_heap_t* heap,
+ const char* str,
+ ulint len);
+# 328 "./include/mem0mem.h"
+struct mem_block_info_struct {
+ ulint magic_n;
+ char file_name[8];
+ ulint line;
+ struct { ulint count; mem_block_t * start; mem_block_t * end; } base;
+
+
+ struct { mem_block_t * prev; mem_block_t * next; } list;
+
+
+
+ ulint len;
+ ulint type;
+
+ ulint init_block;
+
+
+ ulint free;
+
+ ulint start;
+
+ unsigned char* free_block;
+# 360 "./include/mem0mem.h"
+};
+
+
+
+
+
+
+
+# 1 "./include/mem0dbg.h" 1
+# 41 "./include/mem0dbg.h"
+void
+mem_heap_validate_or_print(
+
+ mem_heap_t* heap,
+ unsigned char* top,
+
+
+ ulint print,
+
+
+ ulint* error,
+ ulint* us_size,
+
+
+
+
+ ulint* ph_size,
+
+
+ ulint* n_blocks);
+# 75 "./include/mem0dbg.h"
+ulint
+mem_heap_check(
+
+
+ mem_heap_t* heap);
+
+
+
+ulint
+mem_heap_validate(
+
+
+ mem_heap_t* heap);
+# 115 "./include/mem0dbg.h"
+void
+mem_analyze_corruption(
+
+ unsigned char* ptr);
+
+
+
+
+void
+mem_print_info(void);
+
+
+
+
+
+void
+mem_print_new_info(void);
+# 369 "./include/mem0mem.h" 2
+
+
+# 1 "./include/mem0mem.ic" 1
+# 9 "./include/mem0mem.ic"
+# 1 "./include/mem0dbg.ic" 1
+# 10 "./include/mem0mem.ic" 2
+
+# 1 "./include/mem0pool.h" 1
+# 16 "./include/mem0pool.h"
+typedef struct mem_area_struct mem_area_t;
+typedef struct mem_pool_struct mem_pool_t;
+
+
+extern mem_pool_t* mem_comm_pool;
+
+
+
+struct mem_area_struct{
+ ulint size_and_free;
+
+
+
+ struct { mem_area_t * prev; mem_area_t * next; }
+ free_list;
+};
+# 40 "./include/mem0pool.h"
+mem_pool_t*
+mem_pool_create(
+
+
+ ulint size);
+
+
+
+
+void*
+mem_area_alloc(
+
+
+ ulint size,
+
+
+ mem_pool_t* pool);
+
+
+
+void
+mem_area_free(
+
+ void* ptr,
+
+ mem_pool_t* pool);
+
+
+
+ulint
+mem_pool_get_reserved(
+
+
+ mem_pool_t* pool);
+
+
+
+void
+mem_pool_mutex_enter(void);
+
+
+
+
+void
+mem_pool_mutex_exit(void);
+
+
+
+
+ulint
+mem_pool_validate(
+
+
+ mem_pool_t* pool);
+
+
+
+void
+mem_pool_print_info(
+
+ FILE* outfile,
+ mem_pool_t* pool);
+
+
+
+# 1 "./include/mem0pool.ic" 1
+# 106 "./include/mem0pool.h" 2
+# 12 "./include/mem0mem.ic" 2
+
+
+
+
+mem_block_t*
+mem_heap_create_block(
+
+
+
+ mem_heap_t* heap,
+
+ ulint n,
+
+ void* init_block,
+
+ ulint type,
+
+ const char* file_name,
+ ulint line);
+
+
+
+void
+mem_heap_block_free(
+
+ mem_heap_t* heap,
+ mem_block_t* block);
+
+
+
+void
+mem_heap_free_block_free(
+
+ mem_heap_t* heap);
+
+
+
+mem_block_t*
+mem_heap_add_block(
+
+
+
+ mem_heap_t* heap,
+ ulint n);
+
+static inline
+void
+mem_block_set_len(mem_block_t* block, ulint len)
+{
+ ;
+
+ block->len = len;
+}
+
+static inline
+ulint
+mem_block_get_len(mem_block_t* block)
+{
+ return(block->len);
+}
+
+static inline
+void
+mem_block_set_type(mem_block_t* block, ulint type)
+{
+ ;
+
+
+ block->type = type;
+}
+
+static inline
+ulint
+mem_block_get_type(mem_block_t* block)
+{
+ return(block->type);
+}
+
+static inline
+void
+mem_block_set_free(mem_block_t* block, ulint free)
+{
+ ;
+ ;
+
+ block->free = free;
+}
+
+static inline
+ulint
+mem_block_get_free(mem_block_t* block)
+{
+ return(block->free);
+}
+
+static inline
+void
+mem_block_set_start(mem_block_t* block, ulint start)
+{
+ ;
+
+ block->start = start;
+}
+
+static inline
+ulint
+mem_block_get_start(mem_block_t* block)
+{
+ return(block->start);
+}
+
+
+
+static inline
+void*
+mem_heap_alloc(
+
+
+ mem_heap_t* heap,
+ ulint n)
+
+
+{
+ mem_block_t* block;
+ void* buf;
+ ulint free;
+
+ ;
+
+ block = (heap->base).end;
+
+ ;
+
+
+
+
+ if (mem_block_get_len(block)
+ < mem_block_get_free(block) + ut_calc_align((n), 8)) {
+
+ block = mem_heap_add_block(heap, n);
+
+ if (block == ((void *)0)) {
+
+ return(((void *)0));
+ }
+ }
+
+ free = mem_block_get_free(block);
+
+ buf = (unsigned char*)block + free;
+
+ mem_block_set_free(block, free + ut_calc_align((n), 8));
+# 178 "./include/mem0mem.ic"
+ return(buf);
+}
+
+
+
+static inline
+unsigned char*
+mem_heap_get_heap_top(
+
+
+ mem_heap_t* heap)
+{
+ mem_block_t* block;
+ unsigned char* buf;
+
+ ;
+
+ block = (heap->base).end;
+
+ buf = (unsigned char*)block + mem_block_get_free(block);
+
+ return(buf);
+}
+
+
+
+
+
+static inline
+void
+mem_heap_free_heap_top(
+
+ mem_heap_t* heap,
+ unsigned char* old_top)
+{
+ mem_block_t* block;
+ mem_block_t* prev_block;
+
+
+
+
+
+
+ ;
+# 237 "./include/mem0mem.ic"
+ block = (heap->base).end;
+
+ while (block != ((void *)0)) {
+ if (((unsigned char*)block + mem_block_get_free(block) >= old_top)
+ && ((unsigned char*)block <= old_top)) {
+
+
+ break;
+ }
+
+
+
+
+ prev_block = (((block)->list).prev);
+
+ mem_heap_block_free(heap, block);
+
+ block = prev_block;
+ }
+
+ ;
+
+
+ mem_block_set_free(block, old_top - (unsigned char*)block);
+# 279 "./include/mem0mem.ic"
+ if ((heap != block) && (mem_block_get_free(block) ==
+ mem_block_get_start(block))) {
+ mem_heap_block_free(heap, block);
+ }
+}
+
+
+
+static inline
+void
+mem_heap_empty(
+
+ mem_heap_t* heap)
+{
+ mem_heap_free_heap_top(heap, (unsigned char*)heap + mem_block_get_start(heap));
+
+ if (heap->free_block) {
+ mem_heap_free_block_free(heap);
+ }
+}
+
+
+
+
+static inline
+void*
+mem_heap_get_top(
+
+
+ mem_heap_t* heap,
+ ulint n)
+{
+ mem_block_t* block;
+ void* buf;
+
+ ;
+
+ block = (heap->base).end;
+
+ buf = (unsigned char*)block + mem_block_get_free(block) - ut_calc_align((n), 8);
+# 332 "./include/mem0mem.ic"
+ return(buf);
+}
+
+
+
+
+static inline
+void
+mem_heap_free_top(
+
+ mem_heap_t* heap,
+ ulint n)
+{
+ mem_block_t* block;
+
+ ;
+
+ block = (heap->base).end;
+
+
+ mem_block_set_free(block, mem_block_get_free(block)
+ - ut_calc_align((n), 8));
+# 365 "./include/mem0mem.ic"
+ if ((heap != block) && (mem_block_get_free(block) ==
+ mem_block_get_start(block))) {
+ mem_heap_block_free(heap, block);
+ }
+}
+
+
+
+
+
+static inline
+mem_heap_t*
+mem_heap_create_func(
+
+
+ ulint n,
+
+
+
+
+
+ void* init_block,
+# 396 "./include/mem0mem.ic"
+ ulint type,
+
+ const char* file_name,
+ ulint line
+ )
+{
+ mem_block_t* block;
+
+ if (n > 0) {
+ block = mem_heap_create_block(((void *)0), n, init_block, type,
+ file_name, line);
+ } else {
+ block = mem_heap_create_block(((void *)0), 64,
+ init_block, type, file_name, line);
+ }
+
+ ;
+
+ { (block->base).count = 0; (block->base).start = ((void *)0); (block->base).end = ((void *)0);};
+
+
+ { ; ((block->base).count)++; ((block)->list).next = (block->base).start; ((block)->list).prev = ((void *)0); if ((block->base).start != ((void *)0)) { (((block->base).start)->list).prev = (block); } (block->base).start = (block); if ((block->base).end == ((void *)0)) { (block->base).end = (block); }};
+# 430 "./include/mem0mem.ic"
+ return(block);
+}
+
+
+
+
+
+static inline
+void
+mem_heap_free_func(
+
+ mem_heap_t* heap,
+ const char* file_name __attribute__((unused)),
+
+ ulint line __attribute__((unused)))
+{
+ mem_block_t* block;
+ mem_block_t* prev_block;
+
+ ;
+
+ block = (heap->base).end;
+# 462 "./include/mem0mem.ic"
+ if (heap->free_block) {
+ mem_heap_free_block_free(heap);
+ }
+
+ while (block != ((void *)0)) {
+
+
+
+ prev_block = (((block)->list).prev);
+
+ mem_heap_block_free(heap, block);
+
+ block = prev_block;
+ }
+}
+
+
+
+
+
+
+static inline
+void*
+mem_alloc_func(
+
+
+
+ ulint n,
+ const char* file_name,
+ ulint line
+ )
+{
+ mem_heap_t* heap;
+ void* buf;
+
+ heap = mem_heap_create_func(n, ((void *)0), 0, file_name,
+ line);
+ if (heap == ((void *)0)) {
+
+ return(((void *)0));
+ }
+
+
+
+
+
+
+ buf = mem_heap_alloc(heap, n);
+
+ do { if (__builtin_expect(!((ulint)((unsigned char*)heap == (unsigned char*)buf - ut_calc_align(sizeof(mem_block_info_t), 8) - 0)), (0))) { ut_dbg_assertion_failed("(byte*)heap == (byte*)buf - MEM_BLOCK_HEADER_SIZE - MEM_FIELD_HEADER_SIZE", "./include/mem0mem.ic", (ulint) 512); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/mem0mem.ic", (ulint) 512); } while (0); } while (0);
+
+ return(buf);
+}
+
+
+
+
+
+static inline
+void
+mem_free_func(
+
+ void* ptr,
+ const char* file_name,
+ ulint line
+ )
+{
+ mem_heap_t* heap;
+
+ heap = (mem_heap_t*)((unsigned char*)ptr - ut_calc_align(sizeof(mem_block_info_t), 8)
+ - 0);
+ mem_heap_free_func(heap, file_name, line);
+}
+
+
+
+static inline
+ulint
+mem_heap_get_size(
+
+ mem_heap_t* heap)
+{
+ mem_block_t* block;
+ ulint size = 0;
+
+ ;
+
+ block = heap;
+
+ while (block != ((void *)0)) {
+
+ size += mem_block_get_len(block);
+ block = (((block)->list).next);
+ }
+
+ if (heap->free_block) {
+ size += (2 * 8192);
+ }
+
+ return(size);
+}
+
+
+
+static inline
+char*
+mem_strdup(
+
+
+
+ const char* str)
+{
+ ulint len = strlen(str) + 1;
+ return(memcpy(mem_alloc_func((len), "./include/mem0mem.ic", 575), str, len));
+}
+
+
+
+static inline
+char*
+mem_strdupl(
+
+
+
+ const char* str,
+ ulint len)
+{
+ char* s = mem_alloc_func((len + 1), "./include/mem0mem.ic", 589);
+ s[len] = 0;
+ return(memcpy(s, str, len));
+}
+
+
+
+static inline
+char*
+mem_strdupq(
+
+
+
+ const char* str,
+ char q)
+{
+ char* dst;
+ char* d;
+ const char* s = str;
+ size_t len = strlen(str) + 3;
+
+ while((s = (__extension__ (__builtin_constant_p (q) && !__builtin_constant_p (s) && (q) == '\0' ? (char *) __rawmemchr (s, q) : __builtin_strchr (s, q)))) != ((void *)0)) {
+ s++;
+ len++;
+ }
+
+ d = dst = mem_alloc_func((len), "./include/mem0mem.ic", 615);
+ *d++ = q;
+ s = str;
+ while(*s) {
+ if ((*d++ = *s++) == q) {
+ *d++ = q;
+ }
+ }
+ *d++ = q;
+ *d++ = '\0';
+ ;
+ return(dst);
+}
+
+
+
+
+static inline
+char*
+mem_heap_strdupl(
+
+
+ mem_heap_t* heap,
+ const char* str,
+ ulint len)
+{
+ char* s = mem_heap_alloc(heap, len + 1);
+ s[len] = 0;
+ return(memcpy(s, str, len));
+}
+# 372 "./include/mem0mem.h" 2
+# 14 "./include/hash0hash.h" 2
+
+
+typedef struct hash_table_struct hash_table_t;
+typedef struct hash_cell_struct hash_cell_t;
+
+typedef void* hash_node_t;
+# 28 "./include/hash0hash.h"
+hash_table_t*
+hash0_create(
+
+
+ ulint n);
+
+
+
+void
+hash_create_mutexes(
+
+ hash_table_t* table,
+ ulint n_mutexes,
+ ulint sync_level);
+
+
+
+
+void
+hash_table_free(
+
+ hash_table_t* table);
+
+
+static inline
+ulint
+hash_calc_hash(
+
+
+ ulint fold,
+ hash_table_t* table);
+# 154 "./include/hash0hash.h"
+static inline
+hash_cell_t*
+hash_get_nth_cell(
+
+
+ hash_table_t* table,
+ ulint n);
+
+
+static inline
+ulint
+hash_get_n_cells(
+
+
+ hash_table_t* table);
+# 230 "./include/hash0hash.h"
+static inline
+ulint
+hash_get_mutex_no(
+
+
+ hash_table_t* table,
+ ulint fold);
+
+
+static inline
+mem_heap_t*
+hash_get_nth_heap(
+
+
+ hash_table_t* table,
+ ulint i);
+
+
+static inline
+mem_heap_t*
+hash_get_heap(
+
+
+ hash_table_t* table,
+ ulint fold);
+
+
+static inline
+ib_mutex_t*
+hash_get_nth_mutex(
+
+
+ hash_table_t* table,
+ ulint i);
+
+
+static inline
+ib_mutex_t*
+hash_get_mutex(
+
+
+ hash_table_t* table,
+ ulint fold);
+
+
+
+void
+hash_mutex_enter(
+
+ hash_table_t* table,
+ ulint fold);
+
+
+
+void
+hash_mutex_exit(
+
+ hash_table_t* table,
+ ulint fold);
+
+
+
+void
+hash_mutex_enter_all(
+
+ hash_table_t* table);
+
+
+
+void
+hash_mutex_exit_all(
+
+ hash_table_t* table);
+
+
+struct hash_cell_struct{
+ void* node;
+};
+
+
+struct hash_table_struct {
+ ulint adaptive;
+
+ ulint n_cells;
+ hash_cell_t* array;
+ ulint n_mutexes;
+
+ ib_mutex_t* mutexes;
+
+ mem_heap_t** heaps;
+
+
+
+ mem_heap_t* heap;
+ ulint magic_n;
+};
+
+
+
+
+# 1 "./include/hash0hash.ic" 1
+# 13 "./include/hash0hash.ic"
+static inline
+hash_cell_t*
+hash_get_nth_cell(
+
+
+ hash_table_t* table,
+ ulint n)
+{
+ ;
+
+ return(table->array + n);
+}
+
+
+
+static inline
+ulint
+hash_get_n_cells(
+
+
+ hash_table_t* table)
+{
+ return(table->n_cells);
+}
+
+
+
+static inline
+ulint
+hash_calc_hash(
+
+
+ ulint fold,
+ hash_table_t* table)
+{
+ return(ut_hash_ulint(fold, table->n_cells));
+}
+
+
+
+static inline
+ulint
+hash_get_mutex_no(
+
+
+ hash_table_t* table,
+ ulint fold)
+{
+ return(ut_2pow_remainder(fold, table->n_mutexes));
+}
+
+
+
+static inline
+mem_heap_t*
+hash_get_nth_heap(
+
+
+ hash_table_t* table,
+ ulint i)
+{
+ ;
+
+ return(table->heaps[i]);
+}
+
+
+
+static inline
+mem_heap_t*
+hash_get_heap(
+
+
+ hash_table_t* table,
+ ulint fold)
+{
+ ulint i;
+
+ if (table->heap) {
+ return(table->heap);
+ }
+
+ i = hash_get_mutex_no(table, fold);
+
+ return(hash_get_nth_heap(table, i));
+}
+
+
+
+static inline
+ib_mutex_t*
+hash_get_nth_mutex(
+
+
+ hash_table_t* table,
+ ulint i)
+{
+ ;
+
+ return(table->mutexes + i);
+}
+
+
+
+static inline
+ib_mutex_t*
+hash_get_mutex(
+
+
+ hash_table_t* table,
+ ulint fold)
+{
+ ulint i;
+
+ i = hash_get_mutex_no(table, fold);
+
+ return(hash_get_nth_mutex(table, i));
+}
+# 331 "./include/hash0hash.h" 2
+# 32 "./include/buf0buf.h" 2
+
+# 1 "./include/os0proc.h" 1
+# 16 "./include/os0proc.h"
+# 1 "/usr/include/sys/ipc.h" 1 3 4
+# 29 "/usr/include/sys/ipc.h" 3 4
+# 1 "/usr/include/bits/ipctypes.h" 1 3 4
+# 33 "/usr/include/bits/ipctypes.h" 3 4
+typedef int __ipc_pid_t;
+# 30 "/usr/include/sys/ipc.h" 2 3 4
+# 1 "/usr/include/bits/ipc.h" 1 3 4
+# 43 "/usr/include/bits/ipc.h" 3 4
+struct ipc_perm
+ {
+ __key_t __key;
+ __uid_t uid;
+ __gid_t gid;
+ __uid_t cuid;
+ __gid_t cgid;
+ __mode_t mode;
+ __uint32_t __seq;
+ __uint32_t __pad1;
+ __uint64_t __unused1;
+ __uint64_t __unused2;
+ };
+
+
+
+
+
+extern int __ipc (int __call, int __first, int __second, int __third,
+ void *__ptr) __attribute__ ((__nothrow__));
+
+
+# 31 "/usr/include/sys/ipc.h" 2 3 4
+# 52 "/usr/include/sys/ipc.h" 3 4
+
+
+
+extern key_t ftok (__const char *__pathname, int __proj_id) __attribute__ ((__nothrow__));
+
+
+# 17 "./include/os0proc.h" 2
+# 1 "/usr/include/sys/shm.h" 1 3 4
+# 25 "/usr/include/sys/shm.h" 3 4
+# 1 "/usr/lib/gcc/powerpc64-unknown-linux-gnu/4.3.4/include/stddef.h" 1 3 4
+# 26 "/usr/include/sys/shm.h" 2 3 4
+
+
+
+
+
+# 1 "/usr/include/bits/shm.h" 1 3 4
+# 40 "/usr/include/bits/shm.h" 3 4
+
+
+
+
+extern int __getpagesize (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+typedef unsigned long int shmatt_t;
+
+
+struct shmid_ds
+ {
+ struct ipc_perm shm_perm;
+
+
+
+ __time_t shm_atime;
+
+
+
+ __time_t shm_dtime;
+
+
+
+ __time_t shm_ctime;
+
+
+
+ size_t shm_segsz;
+ __pid_t shm_cpid;
+ __pid_t shm_lpid;
+ shmatt_t shm_nattch;
+ unsigned long __unused5;
+ unsigned long __unused6;
+ };
+# 89 "/usr/include/bits/shm.h" 3 4
+struct shminfo
+ {
+ unsigned long int shmmax;
+ unsigned long int shmmin;
+ unsigned long int shmmni;
+ unsigned long int shmseg;
+ unsigned long int shmall;
+ unsigned long int __unused1;
+ unsigned long int __unused2;
+ unsigned long int __unused3;
+ unsigned long int __unused4;
+ };
+
+struct shm_info
+ {
+ int used_ids;
+ unsigned long int shm_tot;
+ unsigned long int shm_rss;
+ unsigned long int shm_swp;
+ unsigned long int swap_attempts;
+ unsigned long int swap_successes;
+ };
+
+
+
+
+# 32 "/usr/include/sys/shm.h" 2 3 4
+# 45 "/usr/include/sys/shm.h" 3 4
+
+
+
+
+
+
+extern int shmctl (int __shmid, int __cmd, struct shmid_ds *__buf) __attribute__ ((__nothrow__));
+
+
+extern int shmget (key_t __key, size_t __size, int __shmflg) __attribute__ ((__nothrow__));
+
+
+extern void *shmat (int __shmid, __const void *__shmaddr, int __shmflg)
+ __attribute__ ((__nothrow__));
+
+
+extern int shmdt (__const void *__shmaddr) __attribute__ ((__nothrow__));
+
+
+# 18 "./include/os0proc.h" 2
+
+
+typedef void* os_process_t;
+typedef unsigned long int os_process_id_t;
+
+
+
+
+
+typedef ulint os_awe_t;
+
+
+
+
+
+
+
+extern ulint os_use_large_pages;
+
+extern ulint os_large_page_size;
+
+
+
+
+
+
+ulint
+os_awe_enable_lock_pages_in_mem(void);
+
+
+
+
+
+
+
+ulint
+os_awe_allocate_physical_mem(
+
+
+ os_awe_t** page_info,
+
+
+
+ ulint n_megabytes);
+
+
+
+
+unsigned char*
+os_awe_allocate_virtual_mem_window(
+
+
+
+ ulint size);
+# 83 "./include/os0proc.h"
+ulint
+os_awe_map_physical_mem_to_window(
+
+
+
+ unsigned char* ptr,
+
+
+
+ ulint n_mem_pages,
+
+ os_awe_t* page_info);
+# 103 "./include/os0proc.h"
+ulint
+os_proc_get_number(void);
+
+
+
+
+void*
+os_mem_alloc_nocache(
+
+
+ ulint n);
+
+
+
+void*
+os_mem_alloc_large(
+
+
+ ulint n,
+ ulint set_to_zero,
+
+ ulint assert_on_error);
+
+
+
+
+void
+os_mem_free_large(
+
+void *ptr);
+
+
+
+
+void
+os_process_set_priority_boost(
+
+ ulint do_boost);
+
+
+
+# 1 "./include/os0proc.ic" 1
+# 145 "./include/os0proc.h" 2
+# 34 "./include/buf0buf.h" 2
+# 58 "./include/buf0buf.h"
+extern buf_pool_t* buf_pool;
+
+
+
+
+
+extern ulint srv_buf_pool_write_requests;
+
+
+
+
+
+buf_pool_t*
+buf_pool_init(
+
+
+
+ ulint max_size,
+
+ ulint curr_size,
+
+
+ ulint n_frames);
+
+
+
+
+
+
+
+static inline
+ulint
+buf_pool_get_curr_size(void);
+
+
+
+
+
+static inline
+ulint
+buf_pool_get_max_size(void);
+
+
+
+
+
+static inline
+dulint
+buf_pool_get_oldest_modification(void);
+
+
+
+
+
+
+buf_frame_t*
+buf_frame_alloc(void);
+
+
+
+
+
+void
+buf_frame_free(
+
+ buf_frame_t* frame);
+
+
+static inline
+unsigned char*
+buf_frame_copy(
+
+
+ unsigned char* buf,
+ buf_frame_t* frame);
+# 165 "./include/buf0buf.h"
+ulint
+buf_page_optimistic_get_func(
+
+
+ ulint rw_latch,
+ buf_block_t* block,
+ buf_frame_t* guess,
+
+ dulint modify_clock,
+
+ const char* file,
+ ulint line,
+ mtr_t* mtr);
+
+
+
+
+
+static inline
+buf_frame_t*
+buf_page_get_release_on_io(
+
+
+
+ ulint space,
+ ulint offset,
+
+ buf_frame_t* guess,
+ ulint rw_latch,
+
+ ulint savepoint,
+ mtr_t* mtr);
+
+
+
+
+ulint
+buf_page_get_known_nowait(
+
+
+ ulint rw_latch,
+ buf_frame_t* guess,
+ ulint mode,
+ const char* file,
+ ulint line,
+ mtr_t* mtr);
+
+
+
+buf_frame_t*
+buf_page_get_gen(
+
+
+ ulint space,
+ ulint offset,
+ ulint rw_latch,
+ buf_frame_t* guess,
+ ulint mode,
+
+ const char* file,
+ ulint line,
+ mtr_t* mtr);
+
+
+
+
+
+
+buf_frame_t*
+buf_page_create(
+
+
+ ulint space,
+ ulint offset,
+
+ mtr_t* mtr);
+
+
+
+void
+buf_page_init_for_backup_restore(
+
+ ulint space,
+ ulint offset,
+
+ buf_block_t* block);
+
+
+
+static inline
+void
+buf_page_release(
+
+ buf_block_t* block,
+ ulint rw_latch,
+
+ mtr_t* mtr);
+
+
+
+
+
+void
+buf_page_make_young(
+
+ buf_frame_t* frame);
+
+
+
+
+ulint
+buf_page_peek(
+
+
+
+
+ ulint space,
+ ulint offset);
+
+
+
+
+
+buf_block_t*
+buf_page_peek_block(
+
+
+
+
+ ulint space,
+ ulint offset);
+
+
+
+
+void
+buf_reset_check_index_page_at_flush(
+
+ ulint space,
+ ulint offset);
+
+
+
+
+
+
+buf_block_t*
+buf_page_set_file_page_was_freed(
+
+
+
+ ulint space,
+ ulint offset);
+
+
+
+
+
+
+buf_block_t*
+buf_page_reset_file_page_was_freed(
+
+
+
+ ulint space,
+ ulint offset);
+
+
+
+
+static inline
+ulint
+buf_block_peek_if_too_old(
+
+
+ buf_block_t* block);
+
+
+
+
+
+ulint
+buf_page_peek_if_search_hashed(
+
+
+
+ ulint space,
+ ulint offset);
+
+
+
+static inline
+dulint
+buf_frame_get_newest_modification(
+
+
+ buf_frame_t* frame);
+
+
+
+
+static inline
+dulint
+buf_frame_modify_clock_inc(
+
+
+ buf_frame_t* frame);
+
+
+
+
+static inline
+dulint
+buf_block_modify_clock_inc(
+
+
+ buf_block_t* block);
+
+
+
+static inline
+dulint
+buf_block_get_modify_clock(
+
+
+ buf_block_t* block);
+
+
+
+
+
+ulint
+buf_calc_page_new_checksum(
+
+
+ unsigned char* page);
+# 409 "./include/buf0buf.h"
+ulint
+buf_calc_page_old_checksum(
+
+
+ unsigned char* page);
+
+
+
+ulint
+buf_page_is_corrupted(
+
+
+ unsigned char* read_buf);
+
+
+
+static inline
+ulint
+buf_frame_get_page_no(
+
+
+ unsigned char* ptr);
+
+
+
+static inline
+ulint
+buf_frame_get_space_id(
+
+
+ unsigned char* ptr);
+
+
+
+static inline
+void
+buf_ptr_get_fsp_addr(
+
+ unsigned char* ptr,
+ ulint* space,
+ fil_addr_t* addr);
+
+
+
+static inline
+ulint
+buf_frame_get_lock_hash_val(
+
+
+ unsigned char* ptr);
+
+
+
+static inline
+ib_mutex_t*
+buf_frame_get_mutex(
+
+
+ unsigned char* ptr);
+
+
+static inline
+buf_frame_t*
+buf_frame_align(
+
+
+ unsigned char* ptr);
+
+
+
+static inline
+ulint
+buf_pool_is_block(
+
+
+ void* ptr);
+# 510 "./include/buf0buf.h"
+void
+buf_page_print(
+
+ unsigned char* read_buf);
+
+
+
+
+ulint
+buf_get_n_pending_ios(void);
+
+
+
+
+void
+buf_print_io(
+
+ FILE* file);
+
+
+
+
+ulint
+buf_get_modified_ratio_pct(void);
+
+
+
+
+void
+buf_refresh_io_stats(void);
+
+
+
+
+ulint
+buf_all_freed(void);
+
+
+
+
+
+ulint
+buf_pool_check_no_pending_io(void);
+
+
+
+
+
+
+
+void
+buf_pool_invalidate(void);
+# 572 "./include/buf0buf.h"
+void
+buf_awe_map_page_to_frame(
+
+ buf_block_t* block,
+
+ ulint add_to_mapped_list);
+# 596 "./include/buf0buf.h"
+static inline
+buf_frame_t*
+buf_block_get_frame(
+
+
+ buf_block_t* block);
+
+
+static inline
+ulint
+buf_block_get_space(
+
+
+ buf_block_t* block);
+
+
+static inline
+ulint
+buf_block_get_page_no(
+
+
+ buf_block_t* block);
+
+
+static inline
+buf_block_t*
+buf_block_align(
+
+
+ unsigned char* ptr);
+
+
+
+static inline
+ulint
+buf_page_io_query(
+
+
+ buf_block_t* block);
+
+
+static inline
+buf_block_t*
+buf_pool_get_nth_block(
+
+
+ buf_pool_t* pool,
+ ulint i);
+# 656 "./include/buf0buf.h"
+buf_block_t*
+buf_page_init_for_read(
+
+
+ ulint* err,
+ ulint mode,
+ ulint space,
+ ib_longlong tablespace_version,
+
+
+ ulint offset);
+
+
+
+
+void
+buf_page_io_complete(
+
+ buf_block_t* block);
+
+
+
+static inline
+ulint
+buf_page_address_fold(
+
+
+ ulint space,
+ ulint offset);
+
+
+static inline
+buf_block_t*
+buf_page_hash_get(
+
+
+ ulint space,
+ ulint offset);
+
+
+
+static inline
+ulint
+buf_pool_clock_tic(void);
+
+
+
+
+
+ulint
+buf_get_free_list_len(void);
+
+
+void buf_pool_dump(void);
+buf_block_t* buf_pool_get_nth_block_no_inline(buf_pool_t* pool, ulint i);
+
+
+
+
+
+
+void
+buf_io_counter_control(void);
+
+
+void
+buf_io_counter_clear(void);
+
+
+
+
+struct buf_block_struct{
+
+
+
+ ulint magic_n;
+ ulint state;
+
+
+
+
+ unsigned char* frame;
+
+
+
+
+
+
+
+ os_awe_t* awe_info;
+
+
+
+
+ ulint space;
+ ulint offset;
+ ulint lock_hash_val;
+
+ ib_mutex_t mutex;
+
+
+
+
+
+ rw_lock_t lock;
+
+ buf_block_t* hash;
+
+ ulint check_index_page_at_flush;
+# 774 "./include/buf0buf.h"
+ struct { buf_block_t * prev; buf_block_t * next; } flush_list;
+
+
+ dulint newest_modification;
+
+
+
+ dulint oldest_modification;
+
+
+
+
+
+ ulint flush_type;
+
+
+
+
+
+
+ struct { buf_block_t * prev; buf_block_t * next; } free;
+
+ ulint in_free_list;
+
+ struct { buf_block_t * prev; buf_block_t * next; } LRU;
+
+ struct { buf_block_t * prev; buf_block_t * next; } awe_LRU_free_mapped;
+
+
+
+ ulint in_LRU_list;
+
+ ulint LRU_position;
+
+
+
+
+
+
+
+ ulint freed_page_clock;
+
+
+
+
+
+ ulint old;
+
+ ulint accessed;
+
+
+
+
+
+
+ ulint buf_fix_count;
+
+
+ ulint io_fix;
+
+
+
+
+
+ dulint modify_clock;
+# 853 "./include/buf0buf.h"
+ ulint n_hash_helps;
+
+ ulint n_fields;
+
+ ulint n_bytes;
+
+ ulint side;
+# 873 "./include/buf0buf.h"
+ ulint is_hashed;
+
+
+
+
+
+ ulint n_pointers;
+
+
+ ulint curr_n_fields;
+
+ ulint curr_n_bytes;
+ ulint curr_side;
+
+
+ dict_index_t* index;
+# 897 "./include/buf0buf.h"
+ ulint file_page_was_freed;
+
+
+};
+
+
+
+
+
+
+struct buf_pool_struct{
+
+
+
+ ib_mutex_t mutex;
+
+
+ unsigned char* frame_mem;
+
+
+
+
+ unsigned char* frame_zero;
+
+
+ unsigned char* high_end;
+
+ ulint n_frames;
+ buf_block_t* blocks;
+ buf_block_t** blocks_of_frames;
+# 937 "./include/buf0buf.h"
+ os_awe_t* awe_info;
+
+
+ ulint max_size;
+
+ ulint curr_size;
+
+
+ hash_table_t* io_counter_hash;
+ mem_heap_t* io_counter_heap;
+ ulint io_counters;
+ hash_table_t* page_hash;
+ rw_lock_t hash_latch;
+
+ ulint n_pend_reads;
+
+ time_t last_printout_time;
+
+ ulint n_pages_read;
+ ulint n_pages_written;
+ ulint n_pages_created;
+
+ ulint n_page_gets;
+
+
+
+
+
+ ulint n_pages_awe_remapped;
+
+
+ ulint n_page_gets_old;
+
+
+ ulint n_pages_read_old;
+
+ ulint n_pages_written_old;
+ ulint n_pages_created_old;
+
+ ulint n_pages_awe_remapped_old;
+
+
+ struct { ulint count; buf_block_t * start; buf_block_t * end; } flush_list;
+
+
+ ib_mutex_t flush_list_mutex;
+ ulint init_flush[3 + 1];
+
+
+ ulint n_flush[3 + 1];
+
+
+ os_event_t no_flush[3 + 1];
+
+
+
+ ulint ulint_clock;
+
+
+
+ ulint freed_page_clock;
+
+
+
+
+
+
+ ulint LRU_flush_ended;
+
+
+
+
+
+
+ struct { ulint count; buf_block_t * start; buf_block_t * end; } free;
+
+
+
+
+ ib_mutex_t free_mutex;
+ struct { ulint count; buf_block_t * start; buf_block_t * end; } LRU;
+
+ ib_mutex_t LRU_mutex;
+ buf_block_t* LRU_old;
+
+
+ ulint LRU_old_len;
+
+
+
+
+
+ struct { ulint count; buf_block_t * start; buf_block_t * end; } awe_LRU_free_mapped;
+
+
+
+
+
+};
+
+struct buf_io_counter_struct{
+ ulint space;
+ ulint offset;
+ buf_io_counter_t* hash;
+ ulint index_id;
+ ulint n_read;
+ ulint n_write;
+};
+# 1104 "./include/buf0buf.h"
+# 1 "./include/buf0buf.ic" 1
+# 9 "./include/buf0buf.ic"
+# 1 "./include/buf0flu.h" 1
+# 20 "./include/buf0flu.h"
+void
+buf_flush_write_complete(
+
+ buf_block_t* block);
+
+
+
+
+void
+buf_flush_free_margin(
+
+ ulint wait);
+
+
+
+void
+buf_flush_init_for_writing(
+
+ unsigned char* page,
+ dulint newest_lsn,
+ ulint space,
+ ulint page_no);
+
+
+
+
+
+
+
+ulint
+buf_flush_batch(
+
+
+
+ ulint flush_type,
+
+
+ ulint min_n,
+
+
+ dulint lsn_limit);
+
+
+
+
+
+
+void
+buf_flush_wait_batch_end(
+
+ ulint type);
+
+
+
+
+static inline
+void
+buf_flush_note_modification(
+
+ buf_block_t* block,
+ mtr_t* mtr);
+
+
+static inline
+void
+buf_flush_recv_note_modification(
+
+ buf_block_t* block,
+ dulint start_lsn,
+
+ dulint end_lsn);
+
+
+
+
+ulint
+buf_flush_ready_for_replace(
+
+
+ buf_block_t* block);
+
+
+
+
+ulint
+buf_flush_validate(void);
+# 118 "./include/buf0flu.h"
+# 1 "./include/buf0flu.ic" 1
+# 9 "./include/buf0flu.ic"
+# 1 "./include/buf0buf.h" 1
+# 10 "./include/buf0flu.ic" 2
+# 1 "./include/mtr0mtr.h" 1
+# 14 "./include/mtr0mtr.h"
+# 1 "./include/dyn0dyn.h" 1
+# 16 "./include/dyn0dyn.h"
+typedef struct dyn_block_struct dyn_block_t;
+typedef dyn_block_t dyn_array_t;
+# 26 "./include/dyn0dyn.h"
+static inline
+dyn_array_t*
+dyn_array_create(
+
+
+ dyn_array_t* arr);
+
+
+
+static inline
+void
+dyn_array_free(
+
+ dyn_array_t* arr);
+
+
+
+
+static inline
+unsigned char*
+dyn_array_open(
+
+
+ dyn_array_t* arr,
+ ulint size);
+
+
+
+static inline
+void
+dyn_array_close(
+
+ dyn_array_t* arr,
+ unsigned char* ptr);
+
+
+
+
+static inline
+void*
+dyn_array_push(
+
+
+ dyn_array_t* arr,
+ ulint size);
+
+
+static inline
+void*
+dyn_array_get_element(
+
+
+ dyn_array_t* arr,
+ ulint pos);
+
+
+
+static inline
+ulint
+dyn_array_get_data_size(
+
+
+ dyn_array_t* arr);
+
+
+static inline
+dyn_block_t*
+dyn_array_get_first_block(
+
+ dyn_array_t* arr);
+
+
+static inline
+dyn_block_t*
+dyn_array_get_last_block(
+
+ dyn_array_t* arr);
+
+
+static inline
+dyn_block_t*
+dyn_array_get_next_block(
+
+
+ dyn_array_t* arr,
+ dyn_block_t* block);
+
+
+static inline
+ulint
+dyn_block_get_used(
+
+
+ dyn_block_t* block);
+
+
+static inline
+unsigned char*
+dyn_block_get_data(
+
+
+ dyn_block_t* block);
+
+
+static inline
+void
+dyn_push_string(
+
+ dyn_array_t* arr,
+ const unsigned char* str,
+ ulint len);
+
+
+
+
+
+struct dyn_block_struct{
+ mem_heap_t* heap;
+
+ ulint used;
+ unsigned char data[512];
+
+ struct { ulint count; dyn_block_t * start; dyn_block_t * end; } base;
+
+
+ struct { dyn_block_t * prev; dyn_block_t * next; } list;
+
+
+
+
+
+
+
+};
+
+
+
+# 1 "./include/dyn0dyn.ic" 1
+# 15 "./include/dyn0dyn.ic"
+dyn_block_t*
+dyn_array_add_block(
+
+
+ dyn_array_t* arr);
+
+
+
+
+static inline
+dyn_block_t*
+dyn_array_get_first_block(
+
+ dyn_array_t* arr)
+{
+ return(arr);
+}
+
+
+
+static inline
+dyn_block_t*
+dyn_array_get_last_block(
+
+ dyn_array_t* arr)
+{
+ if (arr->heap == ((void *)0)) {
+
+ return(arr);
+ }
+
+ return((arr->base).end);
+}
+
+
+
+static inline
+dyn_block_t*
+dyn_array_get_next_block(
+
+
+ dyn_array_t* arr,
+ dyn_block_t* block)
+{
+ ;
+
+ if (arr->heap == ((void *)0)) {
+ ;
+
+ return(((void *)0));
+ }
+
+ return((((block)->list).next));
+}
+
+
+
+static inline
+ulint
+dyn_block_get_used(
+
+
+ dyn_block_t* block)
+{
+ ;
+
+ return((block->used) & ~0x1000000UL);
+}
+
+
+
+static inline
+unsigned char*
+dyn_block_get_data(
+
+
+ dyn_block_t* block)
+{
+ ;
+
+ return(block->data);
+}
+
+
+
+static inline
+dyn_array_t*
+dyn_array_create(
+
+
+ dyn_array_t* arr)
+
+{
+ ;
+ ;
+
+ arr->heap = ((void *)0);
+ arr->used = 0;
+
+
+
+
+
+ return(arr);
+}
+
+
+
+static inline
+void
+dyn_array_free(
+
+ dyn_array_t* arr)
+{
+ if (arr->heap != ((void *)0)) {
+ mem_heap_free_func( (arr->heap), "./include/dyn0dyn.ic", 130);
+ }
+
+
+
+
+}
+
+
+
+
+static inline
+void*
+dyn_array_push(
+
+
+ dyn_array_t* arr,
+ ulint size)
+{
+ dyn_block_t* block;
+ ulint used;
+
+ ;
+ ;
+ ;
+ ;
+
+ block = arr;
+ used = block->used;
+
+ if (used + size > 512) {
+
+
+ block = dyn_array_get_last_block(arr);
+ used = block->used;
+
+ if (used + size > 512) {
+ block = dyn_array_add_block(arr);
+ used = block->used;
+ }
+ }
+
+ block->used = used + size;
+ ;
+
+ return((block->data) + used);
+}
+
+
+
+
+
+static inline
+unsigned char*
+dyn_array_open(
+
+
+ dyn_array_t* arr,
+ ulint size)
+
+{
+ dyn_block_t* block;
+ ulint used;
+
+ ;
+ ;
+ ;
+ ;
+
+ block = arr;
+ used = block->used;
+
+ if (used + size > 512) {
+
+
+ block = dyn_array_get_last_block(arr);
+ used = block->used;
+
+ if (used + size > 512) {
+ block = dyn_array_add_block(arr);
+ used = block->used;
+ do { if (__builtin_expect(!((ulint)(size <= 512)), (0))) { ut_dbg_assertion_failed("size <= DYN_ARRAY_DATA_SIZE", "./include/dyn0dyn.ic", (ulint) 211); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/dyn0dyn.ic", (ulint) 211); } while (0); } while (0);
+ }
+ }
+
+ ;
+
+
+
+
+
+ return((block->data) + used);
+}
+
+
+
+static inline
+void
+dyn_array_close(
+
+ dyn_array_t* arr,
+ unsigned char* ptr)
+{
+ dyn_block_t* block;
+
+ ;
+ ;
+
+ block = dyn_array_get_last_block(arr);
+
+ ;
+
+ block->used = ptr - block->data;
+
+ ;
+
+
+
+
+}
+
+
+
+static inline
+void*
+dyn_array_get_element(
+
+
+ dyn_array_t* arr,
+ ulint pos)
+
+{
+ dyn_block_t* block;
+ ulint used;
+
+ ;
+ ;
+
+
+ block = dyn_array_get_first_block(arr);
+
+ if (arr->heap != ((void *)0)) {
+ used = dyn_block_get_used(block);
+
+ while (pos >= used) {
+ pos -= used;
+ block = (((block)->list).next);
+ ;
+
+ used = dyn_block_get_used(block);
+ }
+ }
+
+ ;
+ ;
+
+ return(block->data + pos);
+}
+
+
+
+static inline
+ulint
+dyn_array_get_data_size(
+
+
+ dyn_array_t* arr)
+{
+ dyn_block_t* block;
+ ulint sum = 0;
+
+ ;
+ ;
+
+ if (arr->heap == ((void *)0)) {
+
+ return(arr->used);
+ }
+
+
+ block = dyn_array_get_first_block(arr);
+
+ while (block != ((void *)0)) {
+ sum += dyn_block_get_used(block);
+ block = dyn_array_get_next_block(arr, block);
+ }
+
+ return(sum);
+}
+
+
+
+static inline
+void
+dyn_push_string(
+
+ dyn_array_t* arr,
+ const unsigned char* str,
+ ulint len)
+{
+ ulint n_copied;
+
+ while (len > 0) {
+ if (len > 512) {
+ n_copied = 512;
+ } else {
+ n_copied = len;
+ }
+
+ memcpy(dyn_array_push(arr, n_copied), str, n_copied);
+
+ str += n_copied;
+ len -= n_copied;
+ }
+}
+# 164 "./include/dyn0dyn.h" 2
+# 15 "./include/mtr0mtr.h" 2
+
+
+
+
+# 1 "./include/page0types.h" 1
+# 17 "./include/page0types.h"
+typedef unsigned char ib_page_t;
+typedef struct page_search_struct page_search_t;
+typedef struct page_cur_struct page_cur_t;
+# 20 "./include/mtr0mtr.h" 2
+# 139 "./include/mtr0mtr.h"
+static inline
+mtr_t*
+mtr_start(
+
+
+
+ mtr_t* mtr);
+
+
+
+
+mtr_t*
+mtr_start_noninline(
+
+
+
+ mtr_t* mtr);
+
+
+
+void
+mtr_commit(
+
+ mtr_t* mtr);
+
+
+static inline
+ulint
+mtr_set_savepoint(
+
+
+ mtr_t* mtr);
+
+
+
+
+
+void
+mtr_rollback_to_savepoint(
+
+ mtr_t* mtr,
+ ulint savepoint);
+
+
+
+static inline
+void
+mtr_release_s_latch_at_savepoint(
+
+ mtr_t* mtr,
+ ulint savepoint,
+ rw_lock_t* lock);
+
+
+static inline
+ulint
+mtr_get_log_mode(
+
+
+ mtr_t* mtr);
+
+
+static inline
+ulint
+mtr_set_log_mode(
+
+
+ mtr_t* mtr,
+ ulint mode);
+
+
+
+ulint
+mtr_read_ulint(
+
+
+ unsigned char* ptr,
+ ulint type,
+ mtr_t* mtr);
+
+
+
+dulint
+mtr_read_dulint(
+
+
+ unsigned char* ptr,
+ mtr_t* mtr);
+# 238 "./include/mtr0mtr.h"
+static inline
+void
+mtr_s_lock_func(
+
+ rw_lock_t* lock,
+ const char* file,
+ ulint line,
+ mtr_t* mtr);
+
+
+
+static inline
+void
+mtr_x_lock_func(
+
+ rw_lock_t* lock,
+ const char* file,
+ ulint line,
+ mtr_t* mtr);
+
+
+
+
+void
+mtr_memo_release(
+
+ mtr_t* mtr,
+ void* object,
+ ulint type);
+
+
+static inline
+ulint
+mtr_memo_contains(
+
+
+ mtr_t* mtr,
+ void* object,
+ ulint type);
+
+
+
+void
+mtr_print(
+
+ mtr_t* mtr);
+
+
+
+
+
+
+static inline
+dyn_array_t*
+mtr_get_log(
+
+
+ mtr_t* mtr);
+
+
+static inline
+void
+mtr_memo_push(
+
+ mtr_t* mtr,
+ void* object,
+ ulint type);
+
+
+
+typedef struct mtr_memo_slot_struct mtr_memo_slot_t;
+struct mtr_memo_slot_struct{
+ ulint type;
+ void* object;
+};
+
+
+struct mtr_struct{
+ ulint state;
+ dyn_array_t memo;
+ dyn_array_t log;
+ ulint modifications;
+
+
+ ulint n_log_recs;
+
+
+ ulint log_mode;
+
+ dulint start_lsn;
+
+ dulint end_lsn;
+
+ ulint magic_n;
+};
+# 341 "./include/mtr0mtr.h"
+# 1 "./include/mtr0mtr.ic" 1
+# 16 "./include/mtr0mtr.ic"
+static inline
+mtr_t*
+mtr_start(
+
+
+
+ mtr_t* mtr)
+{
+ dyn_array_create(&(mtr->memo));
+ dyn_array_create(&(mtr->log));
+
+ mtr->log_mode = 21;
+ mtr->modifications = (0);
+ mtr->n_log_recs = 0;
+
+
+
+
+
+ return(mtr);
+}
+
+
+
+static inline
+void
+mtr_memo_push(
+
+ mtr_t* mtr,
+ void* object,
+ ulint type)
+{
+ dyn_array_t* memo;
+ mtr_memo_slot_t* slot;
+
+ ;
+ ;
+ ;
+ ;
+ ;
+
+ memo = &(mtr->memo);
+
+ slot = dyn_array_push(memo, sizeof(mtr_memo_slot_t));
+
+ slot->object = object;
+ slot->type = type;
+}
+
+
+
+static inline
+ulint
+mtr_set_savepoint(
+
+
+ mtr_t* mtr)
+{
+ dyn_array_t* memo;
+
+ ;
+ ;
+
+ memo = &(mtr->memo);
+
+ return(dyn_array_get_data_size(memo));
+}
+
+
+
+
+static inline
+void
+mtr_release_s_latch_at_savepoint(
+
+ mtr_t* mtr,
+ ulint savepoint,
+ rw_lock_t* lock)
+{
+ mtr_memo_slot_t* slot;
+ dyn_array_t* memo;
+
+ ;
+ ;
+ ;
+
+ memo = &(mtr->memo);
+
+ ;
+
+ slot = dyn_array_get_element(memo, savepoint);
+
+ ;
+ ;
+
+ rw_lock_s_unlock_func(lock);
+
+ slot->object = ((void *)0);
+}
+
+
+
+static inline
+ulint
+mtr_memo_contains(
+
+
+ mtr_t* mtr,
+ void* object,
+ ulint type)
+{
+ mtr_memo_slot_t* slot;
+ dyn_array_t* memo;
+ ulint offset;
+
+ ;
+ ;
+
+ memo = &(mtr->memo);
+
+ offset = dyn_array_get_data_size(memo);
+
+ while (offset > 0) {
+ offset -= sizeof(mtr_memo_slot_t);
+
+ slot = dyn_array_get_element(memo, offset);
+
+ if ((object == slot->object) && (type == slot->type)) {
+
+ return((1));
+ }
+ }
+
+ return((0));
+}
+
+
+
+static inline
+dyn_array_t*
+mtr_get_log(
+
+
+ mtr_t* mtr)
+{
+ ;
+ ;
+
+ return(&(mtr->log));
+}
+
+
+
+static inline
+ulint
+mtr_get_log_mode(
+
+
+ mtr_t* mtr)
+{
+ ;
+ ;
+ ;
+
+ return(mtr->log_mode);
+}
+
+
+
+static inline
+ulint
+mtr_set_log_mode(
+
+
+ mtr_t* mtr,
+ ulint mode)
+{
+ ulint old_mode;
+
+ ;
+ ;
+ ;
+
+ old_mode = mtr->log_mode;
+
+ if ((mode == 24) && (old_mode == 22)) {
+
+ } else {
+ mtr->log_mode = mode;
+ }
+
+ ;
+ ;
+
+ return(old_mode);
+}
+
+
+
+static inline
+void
+mtr_s_lock_func(
+
+ rw_lock_t* lock,
+ const char* file,
+ ulint line,
+ mtr_t* mtr)
+{
+ ;
+ ;
+
+ rw_lock_s_lock_func(lock, 0, file, line);
+
+ mtr_memo_push(mtr, lock, 55);
+}
+
+
+
+static inline
+void
+mtr_x_lock_func(
+
+ rw_lock_t* lock,
+ const char* file,
+ ulint line,
+ mtr_t* mtr)
+{
+ ;
+ ;
+
+ rw_lock_x_lock_func(lock, 0, file, line);
+
+ mtr_memo_push(mtr, lock, 56);
+}
+# 342 "./include/mtr0mtr.h" 2
+# 11 "./include/buf0flu.ic" 2
+
+
+
+
+void
+buf_flush_insert_into_flush_list(
+
+ buf_block_t* block);
+
+
+
+
+
+void
+buf_flush_insert_sorted_into_flush_list(
+
+ buf_block_t* block);
+
+
+
+
+
+static inline
+void
+buf_flush_note_modification(
+
+ buf_block_t* block,
+ mtr_t* mtr)
+{
+ ;
+ ;
+ ;
+
+
+
+
+
+ ;
+ ;
+ ;
+
+ block->newest_modification = mtr->end_lsn;
+
+ if (ut_dulint_is_zero(block->oldest_modification)) {
+
+ block->oldest_modification = mtr->start_lsn;
+ ;
+
+ buf_flush_insert_into_flush_list(block);
+ } else {
+ ;
+
+ }
+
+ ++srv_buf_pool_write_requests;
+}
+
+
+
+static inline
+void
+buf_flush_recv_note_modification(
+
+ buf_block_t* block,
+ dulint start_lsn,
+
+ dulint end_lsn)
+
+{
+ ;
+ ;
+ ;
+
+
+
+
+ mutex_enter_func((&(buf_pool->flush_list_mutex)), "./include/buf0flu.ic", 87);
+
+ ;
+
+ block->newest_modification = end_lsn;
+
+ if (ut_dulint_is_zero(block->oldest_modification)) {
+
+ block->oldest_modification = start_lsn;
+
+ ;
+
+ buf_flush_insert_sorted_into_flush_list(block);
+ } else {
+ ;
+
+ }
+
+ mutex_exit(&(buf_pool->flush_list_mutex));
+}
+# 119 "./include/buf0flu.h" 2
+# 10 "./include/buf0buf.ic" 2
+# 1 "./include/buf0lru.h" 1
+# 25 "./include/buf0lru.h"
+void
+buf_LRU_try_free_flushed_blocks(void);
+
+
+
+
+
+
+ulint
+buf_LRU_buf_pool_running_out(void);
+# 55 "./include/buf0lru.h"
+void
+buf_LRU_invalidate_tablespace(
+
+ ulint id);
+
+
+
+
+
+ulint
+buf_LRU_get_recent_limit(void);
+
+
+
+
+
+
+ulint
+buf_LRU_search_and_free_block(
+
+
+ ulint n_iterations);
+# 87 "./include/buf0lru.h"
+buf_block_t*
+buf_LRU_get_free_block(void);
+
+
+
+
+
+
+
+void
+buf_LRU_block_free_non_file_page(
+
+ buf_block_t* block);
+
+
+
+void
+buf_LRU_add_block(
+
+ buf_block_t* block,
+ ulint old);
+
+
+
+
+
+
+void
+buf_LRU_make_block_young(
+
+ buf_block_t* block);
+
+
+
+void
+buf_LRU_make_block_old(
+
+ buf_block_t* block);
+
+
+
+ulint
+buf_LRU_validate(void);
+
+
+
+
+void
+buf_LRU_print(void);
+
+
+
+# 1 "./include/buf0lru.ic" 1
+# 140 "./include/buf0lru.h" 2
+# 11 "./include/buf0buf.ic" 2
+# 1 "./include/buf0rea.h" 1
+# 23 "./include/buf0rea.h"
+ulint
+buf_read_page(
+
+
+
+ ulint space,
+ ulint offset,
+ trx_t* trx);
+# 55 "./include/buf0rea.h"
+ulint
+buf_read_ahead_linear(
+
+
+ ulint space,
+ ulint offset,
+
+ trx_t* trx);
+
+
+
+
+
+void
+buf_read_ibuf_merge_pages(
+
+ ulint sync,
+
+
+ ulint* space_ids,
+ ib_longlong* space_versions,
+
+
+
+
+ ulint* page_nos,
+
+ ulint n_stored);
+
+
+
+void
+buf_read_recv_pages(
+
+ ulint sync,
+
+
+ ulint space,
+ ulint* page_nos,
+
+ ulint n_stored);
+# 12 "./include/buf0buf.ic" 2
+
+
+
+
+
+void
+buf_print_diagnostic(
+
+ mtr_t* mtr,
+ const buf_block_t* block);
+# 32 "./include/buf0buf.ic"
+static inline
+ulint
+buf_block_peek_if_too_old(
+
+
+ buf_block_t* block)
+{
+ return(buf_pool->freed_page_clock >= block->freed_page_clock
+ + 1 + (buf_pool->curr_size / 1024));
+}
+
+
+
+
+static inline
+ulint
+buf_pool_get_curr_size(void)
+
+
+{
+ return((buf_pool->n_frames) * (2 * 8192));
+}
+
+
+
+
+static inline
+ulint
+buf_pool_get_max_size(void)
+
+
+{
+ return((buf_pool->n_frames) * (2 * 8192));
+}
+
+
+
+static inline
+buf_block_t*
+buf_pool_get_nth_block(
+
+
+ buf_pool_t* buf_pool,
+ ulint i)
+{
+ ;
+ ;
+
+ return(i + buf_pool->blocks);
+}
+
+
+
+
+static inline
+ulint
+buf_pool_is_block(
+
+
+ void* ptr)
+{
+ if ((buf_pool->blocks <= (buf_block_t*)ptr)
+ && ((buf_block_t*)ptr < buf_pool->blocks + buf_pool->max_size)) {
+
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+
+static inline
+dulint
+buf_pool_get_oldest_modification(void)
+
+
+
+{
+ buf_block_t* block;
+ dulint lsn;
+
+ mutex_enter_func((&(buf_pool->flush_list_mutex)), "./include/buf0buf.ic", 115);
+
+ block = (buf_pool->flush_list).end;
+
+ if (block == ((void *)0)) {
+ lsn = ut_dulint_zero;
+ } else {
+ lsn = block->oldest_modification;
+ }
+
+ mutex_exit(&(buf_pool->flush_list_mutex));
+
+ return(lsn);
+}
+
+
+
+
+static inline
+ulint
+buf_pool_clock_tic(void)
+
+
+{
+
+
+
+
+ buf_pool->ulint_clock++;
+
+ return(buf_pool->ulint_clock);
+}
+
+
+
+static inline
+buf_frame_t*
+buf_block_get_frame(
+
+
+ buf_block_t* block)
+{
+ ;
+ ;
+ ;
+ ;
+ ;
+
+
+ return(block->frame);
+}
+
+
+
+static inline
+ulint
+buf_block_get_space(
+
+
+ buf_block_t* block)
+{
+ ;
+ ;
+ ;
+ do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "./include/buf0buf.ic", (ulint) 179); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/buf0buf.ic", (ulint) 179); } while (0); } while (0);
+ ;
+
+ return(block->space);
+}
+
+
+
+static inline
+ulint
+buf_block_get_page_no(
+
+
+ buf_block_t* block)
+{
+ ;
+ ;
+ ;
+ do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "./include/buf0buf.ic", (ulint) 197); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/buf0buf.ic", (ulint) 197); } while (0); } while (0);
+ ;
+
+ return(block->offset);
+}
+
+
+
+static inline
+buf_block_t*
+buf_block_align(
+
+
+ unsigned char* ptr)
+{
+ buf_block_t* block;
+ buf_frame_t* frame_zero;
+
+ ;
+
+ frame_zero = buf_pool->frame_zero;
+
+ if (__builtin_expect((ulint)ptr < (ulint)frame_zero, (0))
+ || __builtin_expect((ulint)ptr > (ulint)(buf_pool->high_end), (0))) {
+
+ ut_print_timestamp(stderr);
+ fprintf(stderr,
+"InnoDB: Error: trying to access a stray pointer %p\n"
+"InnoDB: buf pool start is at %p, end at %p\n"
+"InnoDB: Probable reason is database corruption or memory\n"
+"InnoDB: corruption. If this happens in an InnoDB database recovery, see\n"
+"InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html\n"
+"InnoDB: how to force recovery.\n",
+ ptr, frame_zero,
+ buf_pool->high_end);
+ do { ut_dbg_assertion_failed(0, "./include/buf0buf.ic", (ulint) 232); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+
+ block = *(buf_pool->blocks_of_frames + (((ulint)(ptr - frame_zero))
+ >> 14));
+ return(block);
+}
+
+
+
+static inline
+buf_frame_t*
+buf_frame_align(
+
+
+ unsigned char* ptr)
+{
+ buf_frame_t* frame;
+
+ ;
+
+ frame = ut_align_down(ptr, (2 * 8192));
+
+ if (__builtin_expect((ulint)frame < (ulint)(buf_pool->frame_zero), (0))
+ || __builtin_expect((ulint)frame >= (ulint)(buf_pool->high_end), (0))) {
+
+ ut_print_timestamp(stderr);
+ fprintf(stderr,
+"InnoDB: Error: trying to access a stray pointer %p\n"
+"InnoDB: buf pool start is at %p, end at %p\n"
+"InnoDB: Probable reason is database corruption or memory\n"
+"InnoDB: corruption. If this happens in an InnoDB database recovery, see\n"
+"InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html\n"
+"InnoDB: how to force recovery.\n",
+ ptr, buf_pool->frame_zero,
+ buf_pool->high_end);
+ do { ut_dbg_assertion_failed(0, "./include/buf0buf.ic", (ulint) 268); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+
+ return(frame);
+}
+
+
+
+
+static inline
+ulint
+buf_frame_get_page_no(
+
+
+ unsigned char* ptr)
+{
+ return(buf_block_get_page_no(buf_block_align(ptr)));
+}
+
+
+
+
+static inline
+ulint
+buf_frame_get_space_id(
+
+
+ unsigned char* ptr)
+{
+ return(buf_block_get_space(buf_block_align(ptr)));
+}
+
+
+
+
+static inline
+void
+buf_ptr_get_fsp_addr(
+
+ unsigned char* ptr,
+ ulint* space,
+ fil_addr_t* addr)
+{
+ buf_block_t* block;
+
+ block = buf_block_align(ptr);
+
+ *space = buf_block_get_space(block);
+ addr->page = buf_block_get_page_no(block);
+ addr->boffset = ptr - buf_frame_align(ptr);
+}
+
+
+
+
+static inline
+ulint
+buf_frame_get_lock_hash_val(
+
+
+ unsigned char* ptr)
+{
+ buf_block_t* block;
+
+ block = buf_block_align(ptr);
+
+ return(block->lock_hash_val);
+}
+
+
+
+
+static inline
+ib_mutex_t*
+buf_frame_get_mutex(
+
+
+ unsigned char* ptr)
+{
+ buf_block_t* block;
+
+ block = buf_block_align(ptr);
+
+ return(&block->mutex);
+}
+
+
+
+static inline
+unsigned char*
+buf_frame_copy(
+
+
+ unsigned char* buf,
+ buf_frame_t* frame)
+{
+ ;
+
+ ut_memcpy(buf, frame, (2 * 8192));
+
+ return(buf);
+}
+
+
+
+
+static inline
+ulint
+buf_page_address_fold(
+
+
+ ulint space,
+ ulint offset)
+{
+ return((space << 20) + space + offset);
+}
+
+
+
+
+static inline
+ulint
+buf_page_io_query(
+
+
+ buf_block_t* block)
+{
+ mutex_enter_func((&block->mutex), "./include/buf0buf.ic", 395);
+
+ ;
+ ;
+
+ if (block->io_fix != 0) {
+ mutex_exit(&block->mutex);
+
+ return((1));
+ }
+
+ mutex_exit(&block->mutex);
+
+ return((0));
+}
+
+
+
+
+static inline
+dulint
+buf_frame_get_newest_modification(
+
+
+ buf_frame_t* frame)
+{
+ buf_block_t* block;
+ dulint lsn;
+
+ ;
+
+ block = buf_block_align(frame);
+
+ mutex_enter_func((&block->mutex), "./include/buf0buf.ic", 428);
+
+ if (block->state == 213) {
+ lsn = block->newest_modification;
+ } else {
+ lsn = ut_dulint_zero;
+ }
+
+ mutex_exit(&block->mutex);
+
+ return(lsn);
+}
+
+
+
+
+
+static inline
+dulint
+buf_frame_modify_clock_inc(
+
+
+ buf_frame_t* frame)
+{
+ buf_block_t* block;
+
+ ;
+
+ block = buf_block_align(frame);
+
+
+
+
+
+
+ { if ((block->modify_clock).low == 0xFFFFFFFFUL) { (block->modify_clock).high = (block->modify_clock).high + 1; (block->modify_clock).low = 0; } else { (block->modify_clock).low = (block->modify_clock).low + 1; }};
+
+ return(block->modify_clock);
+}
+
+
+
+
+
+static inline
+dulint
+buf_block_modify_clock_inc(
+
+
+ buf_block_t* block)
+{
+
+
+
+
+
+ { if ((block->modify_clock).low == 0xFFFFFFFFUL) { (block->modify_clock).high = (block->modify_clock).high + 1; (block->modify_clock).low = 0; } else { (block->modify_clock).low = (block->modify_clock).low + 1; }};
+
+ return(block->modify_clock);
+}
+
+
+
+
+static inline
+dulint
+buf_block_get_modify_clock(
+
+
+ buf_block_t* block)
+{
+
+
+
+
+
+ return(block->modify_clock);
+}
+# 531 "./include/buf0buf.ic"
+static inline
+void
+buf_block_buf_fix_inc(
+
+ buf_block_t* block)
+{
+
+
+
+ block->buf_fix_count++;
+}
+
+
+
+static inline
+buf_block_t*
+buf_page_hash_get(
+
+
+ ulint space,
+ ulint offset)
+{
+ buf_block_t* block;
+ ulint fold;
+
+ ;
+
+
+
+
+
+
+ fold = buf_page_address_fold(space, offset);
+
+ { (block) = (hash_get_nth_cell(buf_pool->page_hash, hash_calc_hash(fold, buf_pool->page_hash))->node); while ((block) != ((void *)0)) { if ((block->space == space) && (block->offset == offset)) { break; } else { (block) = ((block)->hash); } }};
+
+ do { if (__builtin_expect(!((ulint)(block == ((void *)0) || block->state == 213)), (0))) { ut_dbg_assertion_failed("block == NULL || block->state == BUF_BLOCK_FILE_PAGE", "./include/buf0buf.ic", (ulint) 567); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/buf0buf.ic", (ulint) 567); } while (0); } while (0);
+
+ return(block);
+}
+
+
+
+
+
+
+static inline
+buf_frame_t*
+buf_page_get_release_on_io(
+
+
+
+ ulint space,
+ ulint offset,
+
+ buf_frame_t* guess,
+ ulint rw_latch,
+
+ ulint savepoint,
+ mtr_t* mtr)
+{
+ buf_frame_t* frame;
+
+ frame = buf_page_get_gen(space, offset, rw_latch, guess,
+ 11,
+ "./include/buf0buf.ic", 596,
+ mtr);
+ if (frame != ((void *)0)) {
+
+ return(frame);
+ }
+
+
+
+
+ mtr_rollback_to_savepoint(mtr, savepoint);
+
+ buf_page_get_gen( space, offset, 1, ((void *)0), 10, "./include/buf0buf.ic", 608, mtr);
+
+
+
+
+ mtr_rollback_to_savepoint(mtr, savepoint);
+
+ return(((void *)0));
+}
+
+
+
+
+static inline
+void
+buf_page_release(
+
+ buf_block_t* block,
+ ulint rw_latch,
+
+ mtr_t* mtr)
+{
+ ;
+
+ do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "./include/buf0buf.ic", (ulint) 632); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/buf0buf.ic", (ulint) 632); } while (0); } while (0);
+
+ if (rw_latch == 2 && mtr->modifications) {
+ mutex_enter_func((&buf_pool->flush_list_mutex), "./include/buf0buf.ic", 635);
+ buf_flush_note_modification(block, mtr);
+ mutex_exit(&buf_pool->flush_list_mutex);
+ }
+
+ mutex_enter_func((&block->mutex), "./include/buf0buf.ic", 640);
+
+
+ if (__builtin_expect(block->buf_fix_count == 0, (0))) {
+ buf_print_diagnostic(mtr, block);
+ do { ut_dbg_assertion_failed(0, "./include/buf0buf.ic", (ulint) 645); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+
+
+
+
+ --block->buf_fix_count;
+
+ mutex_exit(&block->mutex);
+
+ if (rw_latch == 1) {
+ rw_lock_s_unlock_func(&(block->lock));
+ } else if (rw_latch == 2) {
+ rw_lock_x_unlock_func(&(block->lock));
+ }
+}
+# 1105 "./include/buf0buf.h" 2
+# 24 "buf/buf0buf.c" 2
+
+
+
+
+
+# 1 "./include/mem0mem.h" 1
+# 30 "buf/buf0buf.c" 2
+# 1 "./include/btr0btr.h" 1
+# 14 "./include/btr0btr.h"
+# 1 "./include/dict0dict.h" 1
+# 14 "./include/dict0dict.h"
+# 1 "./include/dict0mem.h" 1
+# 14 "./include/dict0mem.h"
+# 1 "./include/data0type.h" 1
+# 14 "./include/data0type.h"
+extern ulint data_mysql_default_charset_coll;
+
+
+
+
+typedef struct dtype_struct dtype_t;
+
+
+
+extern dtype_t* dtype_binary;
+# 162 "./include/data0type.h"
+static inline
+ulint
+dtype_get_mysql_type(
+
+
+
+ dtype_t* type);
+
+
+
+
+
+ulint
+dtype_get_at_most_n_mbchars(
+
+
+
+ const dtype_t* dtype,
+ ulint prefix_len,
+
+
+ ulint data_len,
+ const char* str);
+
+
+
+
+
+ulint
+dtype_is_string_type(
+
+
+ ulint mtype);
+
+
+
+
+
+ulint
+dtype_is_binary_string_type(
+
+
+ ulint mtype,
+ ulint prtype);
+
+
+
+
+
+
+ulint
+dtype_is_non_binary_string_type(
+
+
+ ulint mtype,
+ ulint prtype);
+
+
+static inline
+void
+dtype_set(
+
+ dtype_t* type,
+ ulint mtype,
+ ulint prtype,
+ ulint len,
+ ulint prec);
+
+
+static inline
+void
+dtype_copy(
+
+ dtype_t* type1,
+ dtype_t* type2);
+
+
+static inline
+ulint
+dtype_get_mtype(
+
+ dtype_t* type);
+
+
+static inline
+ulint
+dtype_get_prtype(
+
+ dtype_t* type);
+
+
+
+ulint
+dtype_get_charset_coll_noninline(
+
+ ulint prtype);
+
+
+static inline
+ulint
+dtype_get_charset_coll(
+
+ ulint prtype);
+
+
+
+
+ulint
+dtype_form_prtype(
+
+ ulint old_prtype,
+
+ ulint charset_coll);
+
+
+static inline
+ulint
+dtype_get_len(
+
+ dtype_t* type);
+
+
+static inline
+ulint
+dtype_get_prec(
+
+ dtype_t* type);
+
+
+static inline
+ulint
+dtype_get_mbminlen(
+
+
+
+ const dtype_t* type);
+
+
+static inline
+ulint
+dtype_get_mbmaxlen(
+
+
+
+ const dtype_t* type);
+
+
+static inline
+ulint
+dtype_get_pad_char(
+
+
+
+ const dtype_t* type);
+
+
+static inline
+ulint
+dtype_get_fixed_size(
+
+
+ dtype_t* type);
+
+
+static inline
+ulint
+dtype_get_min_size(
+
+
+ const dtype_t* type);
+
+
+
+static inline
+ulint
+dtype_get_sql_null_size(
+
+
+ dtype_t* type);
+
+
+static inline
+ulint
+dtype_is_fixed_size(
+
+
+ dtype_t* type);
+
+
+
+static inline
+void
+dtype_read_for_order_and_null_size(
+
+ dtype_t* type,
+ unsigned char* buf);
+
+
+
+
+static inline
+void
+dtype_new_store_for_order_and_null_size(
+
+ unsigned char* buf,
+
+
+ dtype_t* type,
+ ulint prefix_len);
+
+
+
+
+
+static inline
+void
+dtype_new_read_for_order_and_null_size(
+
+ dtype_t* type,
+ unsigned char* buf);
+
+
+
+
+ulint
+dtype_validate(
+
+
+ dtype_t* type);
+
+
+
+void
+dtype_print(
+
+ dtype_t* type);
+# 407 "./include/data0type.h"
+struct dtype_struct{
+ ulint mtype;
+ ulint prtype;
+
+
+
+
+
+
+
+ ulint len;
+
+
+
+
+
+ ulint prec;
+
+ ulint mbminlen;
+ ulint mbmaxlen;
+};
+
+
+# 1 "./include/data0type.ic" 1
+# 16 "./include/data0type.ic"
+extern
+void
+innobase_get_cset_width(
+
+ ulint cset,
+ ulint* mbminlen,
+ ulint* mbmaxlen);
+
+
+
+static inline
+ulint
+dtype_get_charset_coll(
+
+ ulint prtype)
+{
+ return((prtype >> 16) & 0xFFUL);
+}
+
+
+
+static inline
+ulint
+dtype_get_mysql_type(
+
+
+
+ dtype_t* type)
+{
+ return(type->prtype & 0xFFUL);
+}
+
+
+
+static inline
+void
+dtype_set_mblen(
+
+ dtype_t* type)
+{
+ ;
+ if (dtype_is_string_type(type->mtype)) {
+ innobase_get_cset_width(dtype_get_charset_coll(type->prtype),
+ &type->mbminlen, &type->mbmaxlen);
+ ;
+ } else {
+ type->mbminlen = type->mbmaxlen = 0;
+ }
+}
+
+
+
+static inline
+void
+dtype_set(
+
+ dtype_t* type,
+ ulint mtype,
+ ulint prtype,
+ ulint len,
+ ulint prec)
+{
+ ;
+ ;
+
+ type->mtype = mtype;
+ type->prtype = prtype;
+ type->len = len;
+ type->prec = prec;
+
+ dtype_set_mblen(type);
+ ;
+}
+
+
+
+static inline
+void
+dtype_copy(
+
+ dtype_t* type1,
+ dtype_t* type2)
+{
+ *type1 = *type2;
+
+ ;
+}
+
+
+
+static inline
+ulint
+dtype_get_mtype(
+
+ dtype_t* type)
+{
+ ;
+
+ return(type->mtype);
+}
+
+
+
+static inline
+ulint
+dtype_get_prtype(
+
+ dtype_t* type)
+{
+ ;
+
+ return(type->prtype);
+}
+
+
+
+static inline
+ulint
+dtype_get_len(
+
+ dtype_t* type)
+{
+ ;
+
+ return(type->len);
+}
+
+
+
+static inline
+ulint
+dtype_get_prec(
+
+ dtype_t* type)
+{
+ ;
+
+ return(type->prec);
+}
+
+
+
+static inline
+ulint
+dtype_get_mbminlen(
+
+
+
+ const dtype_t* type)
+{
+ ;
+ return(type->mbminlen);
+}
+
+
+static inline
+ulint
+dtype_get_mbmaxlen(
+
+
+
+ const dtype_t* type)
+{
+ ;
+ return(type->mbmaxlen);
+}
+
+
+
+static inline
+ulint
+dtype_get_pad_char(
+
+
+
+ const dtype_t* type)
+{
+ switch (type->mtype) {
+ case 3:
+ case 4:
+ if (__builtin_expect(dtype_get_charset_coll(type->prtype) == 63, (0))) {
+
+
+
+ return(((ulint)(-1)));
+ }
+
+ case 2:
+ case 1:
+ case 13:
+ case 12:
+
+
+
+ return(0x20);
+ case 5:
+ if ((type->prtype & 1024) == 0) {
+ return(0x20);
+ }
+
+ default:
+
+ return(((ulint)(-1)));
+ }
+}
+
+
+
+
+
+static inline
+void
+dtype_new_store_for_order_and_null_size(
+
+ unsigned char* buf,
+
+
+ dtype_t* type,
+ ulint prefix_len)
+
+{
+
+
+
+ ulint len;
+
+ buf[0] = (unsigned char)(type->mtype & 0xFFUL);
+
+ if (type->prtype & 1024) {
+ buf[0] = buf[0] | 128;
+ }
+
+
+
+
+
+
+ buf[1] = (unsigned char)(type->prtype & 0xFFUL);
+
+ len = prefix_len ? prefix_len : type->len;
+
+ mach_write_to_2(buf + 2, len & 0xFFFFUL);
+
+ ;
+ mach_write_to_2(buf + 4, dtype_get_charset_coll(type->prtype));
+
+ if (type->prtype & 256) {
+ buf[4] |= 128;
+ }
+}
+
+
+
+
+
+static inline
+void
+dtype_read_for_order_and_null_size(
+
+ dtype_t* type,
+ unsigned char* buf)
+{
+ ;
+
+ type->mtype = buf[0] & 63;
+ type->prtype = buf[1];
+
+ if (buf[0] & 128) {
+ type->prtype = type->prtype | 1024;
+ }
+
+ type->len = mach_read_from_2(buf + 2);
+
+ type->prtype = dtype_form_prtype(type->prtype,
+ data_mysql_default_charset_coll);
+ dtype_set_mblen(type);
+}
+
+
+
+
+
+static inline
+void
+dtype_new_read_for_order_and_null_size(
+
+ dtype_t* type,
+ unsigned char* buf)
+{
+ ulint charset_coll;
+
+
+
+
+
+ type->mtype = buf[0] & 63;
+ type->prtype = buf[1];
+
+ if (buf[0] & 128) {
+ type->prtype |= 1024;
+ }
+
+ if (buf[4] & 128) {
+ type->prtype |= 256;
+ }
+
+ type->len = mach_read_from_2(buf + 2);
+
+ mach_read_from_2(buf + 4);
+
+ charset_coll = mach_read_from_2(buf + 4) & 0x7fff;
+
+ if (dtype_is_string_type(type->mtype)) {
+ do { if (__builtin_expect(!((ulint)(charset_coll < 256)), (0))) { ut_dbg_assertion_failed("charset_coll < 256", "./include/data0type.ic", (ulint) 329); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/data0type.ic", (ulint) 329); } while (0); } while (0);
+
+ if (charset_coll == 0) {
+
+
+
+
+
+
+ charset_coll = data_mysql_default_charset_coll;
+ }
+
+ type->prtype = dtype_form_prtype(type->prtype, charset_coll);
+ }
+ dtype_set_mblen(type);
+}
+
+
+
+
+static inline
+ulint
+dtype_get_fixed_size(
+
+
+ dtype_t* type)
+{
+ ulint mtype;
+
+ mtype = dtype_get_mtype(type);
+
+ switch (mtype) {
+ case 8:
+# 381 "./include/data0type.ic"
+ case 2:
+ case 3:
+ case 6:
+ case 9:
+ case 10:
+ return(dtype_get_len(type));
+ case 13:
+ if (type->prtype & 1024) {
+ return(dtype_get_len(type));
+ } else {
+# 399 "./include/data0type.ic"
+ ulint mbminlen, mbmaxlen;
+
+ innobase_get_cset_width(
+ dtype_get_charset_coll(type->prtype),
+ &mbminlen, &mbmaxlen);
+
+ if (__builtin_expect(type->mbminlen != mbminlen, (0))
+ || __builtin_expect(type->mbmaxlen != mbmaxlen, (0))) {
+
+ ut_print_timestamp(stderr);
+ fprintf(stderr, " InnoDB: "
+ "mbminlen=%lu, "
+ "mbmaxlen=%lu, "
+ "type->mbminlen=%lu, "
+ "type->mbmaxlen=%lu\n",
+ (ulong) mbminlen,
+ (ulong) mbmaxlen,
+ (ulong) type->mbminlen,
+ (ulong) type->mbmaxlen);
+ }
+ if (mbminlen == mbmaxlen) {
+ return(dtype_get_len(type));
+ }
+ }
+
+ case 1:
+ case 4:
+ case 11:
+ case 12:
+ case 5:
+ return(0);
+ default: do { ut_dbg_assertion_failed(0, "./include/data0type.ic", (ulint) 430); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+
+ return(0);
+}
+
+
+
+static inline
+ulint
+dtype_get_min_size(
+
+
+ const dtype_t* type)
+{
+ switch (type->mtype) {
+ case 8:
+# 466 "./include/data0type.ic"
+ case 2:
+ case 3:
+ case 6:
+ case 9:
+ case 10:
+ return(type->len);
+ case 13:
+ if ((type->prtype & 1024)
+ || type->mbminlen == type->mbmaxlen) {
+ return(type->len);
+ }
+
+ do { if (__builtin_expect(!((ulint)(type->mbminlen > 0)), (0))) { ut_dbg_assertion_failed("type->mbminlen > 0", "./include/data0type.ic", (ulint) 478); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/data0type.ic", (ulint) 478); } while (0); } while (0);
+ do { if (__builtin_expect(!((ulint)(type->mbmaxlen > type->mbminlen)), (0))) { ut_dbg_assertion_failed("type->mbmaxlen > type->mbminlen", "./include/data0type.ic", (ulint) 479); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/data0type.ic", (ulint) 479); } while (0); } while (0);
+ do { if (__builtin_expect(!((ulint)(type->len % type->mbmaxlen == 0)), (0))) { ut_dbg_assertion_failed("type->len % type->mbmaxlen == 0", "./include/data0type.ic", (ulint) 480); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/data0type.ic", (ulint) 480); } while (0); } while (0);
+ return(type->len * type->mbminlen / type->mbmaxlen);
+ case 1:
+ case 4:
+ case 11:
+ case 12:
+ case 5:
+ return(0);
+ default: do { ut_dbg_assertion_failed(0, "./include/data0type.ic", (ulint) 488); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+
+ return(0);
+}
+
+
+
+
+
+static inline
+ulint
+dtype_get_sql_null_size(
+
+
+ dtype_t* type)
+{
+ return(dtype_get_fixed_size(type));
+}
+
+
+
+static inline
+ulint
+dtype_is_fixed_size(
+
+
+ dtype_t* type)
+{
+ ulint size;
+
+ size = dtype_get_fixed_size(type);
+
+ if (size) {
+ return((1));
+ }
+
+ return((0));
+}
+# 431 "./include/data0type.h" 2
+# 15 "./include/dict0mem.h" 2
+# 1 "./include/data0data.h" 1
+# 14 "./include/data0data.h"
+# 1 "./include/data0types.h" 1
+# 13 "./include/data0types.h"
+typedef struct dfield_struct dfield_t;
+
+
+typedef struct dtuple_struct dtuple_t;
+# 15 "./include/data0data.h" 2
+
+
+
+
+typedef struct big_rec_struct big_rec_t;
+
+
+void
+dfield_set_data_noninline(
+ dfield_t* field,
+ void* data,
+ ulint len);
+void*
+dfield_get_data_noninline(
+ dfield_t* field);
+ulint
+dfield_get_len_noninline(
+ dfield_t* field);
+ulint
+dtuple_get_n_fields_noninline(
+ dtuple_t* tuple);
+dfield_t*
+dtuple_get_nth_field_noninline(
+ dtuple_t* tuple,
+ ulint n);
+
+
+
+static inline
+dtype_t*
+dfield_get_type(
+
+
+ dfield_t* field);
+
+
+static inline
+void
+dfield_set_type(
+
+ dfield_t* field,
+ dtype_t* type);
+
+
+static inline
+void*
+dfield_get_data(
+
+
+ dfield_t* field);
+
+
+static inline
+ulint
+dfield_get_len(
+
+
+
+ dfield_t* field);
+
+
+static inline
+void
+dfield_set_len(
+
+ dfield_t* field,
+ ulint len);
+
+
+static inline
+void
+dfield_set_data(
+
+ dfield_t* field,
+ const void* data,
+ ulint len);
+
+
+static inline
+void
+data_write_sql_null(
+
+ unsigned char* data,
+ ulint len);
+
+
+static inline
+void
+dfield_copy_data(
+
+ dfield_t* field1,
+ dfield_t* field2);
+
+
+static inline
+void
+dfield_copy(
+
+ dfield_t* field1,
+ dfield_t* field2);
+
+
+static inline
+ulint
+dfield_datas_are_binary_equal(
+
+
+ dfield_t* field1,
+ dfield_t* field2);
+
+
+
+ulint
+dfield_data_is_binary_equal(
+
+
+ dfield_t* field,
+ ulint len,
+ unsigned char* data);
+
+
+static inline
+ulint
+dtuple_get_n_fields(
+
+
+ dtuple_t* tuple);
+
+
+static inline
+dfield_t*
+dtuple_get_nth_field(
+
+
+ dtuple_t* tuple,
+ ulint n);
+
+
+static inline
+ulint
+dtuple_get_info_bits(
+
+
+ dtuple_t* tuple);
+
+
+static inline
+void
+dtuple_set_info_bits(
+
+ dtuple_t* tuple,
+ ulint info_bits);
+
+
+static inline
+ulint
+dtuple_get_n_fields_cmp(
+
+
+
+ dtuple_t* tuple);
+
+
+static inline
+void
+dtuple_set_n_fields_cmp(
+
+ dtuple_t* tuple,
+ ulint n_fields_cmp);
+
+
+
+
+static inline
+dtuple_t*
+dtuple_create(
+
+
+ mem_heap_t* heap,
+
+ ulint n_fields);
+
+
+
+
+dtuple_t*
+dtuple_create_for_mysql(
+
+
+ void** heap,
+ ulint n_fields);
+
+
+
+void
+dtuple_free_for_mysql(
+
+ void* heap);
+
+
+
+
+void
+dtuple_set_n_fields(
+
+ dtuple_t* tuple,
+ ulint n_fields);
+
+
+
+static inline
+ulint
+dtuple_get_data_size(
+
+
+ dtuple_t* tuple);
+
+
+
+
+
+ulint
+dtuple_datas_are_ordering_equal(
+
+
+
+
+
+ dtuple_t* tuple1,
+ dtuple_t* tuple2);
+
+
+static inline
+ulint
+dtuple_fold(
+
+
+ dtuple_t* tuple,
+ ulint n_fields,
+ ulint n_bytes,
+
+ dulint tree_id);
+
+
+static inline
+void
+dtuple_set_types_binary(
+
+ dtuple_t* tuple,
+ ulint n);
+
+
+static inline
+ulint
+dtuple_contains_null(
+
+
+ dtuple_t* tuple);
+
+
+
+ulint
+dfield_check_typed(
+
+
+ dfield_t* field);
+
+
+
+ulint
+dtuple_check_typed(
+
+
+ dtuple_t* tuple);
+
+
+
+ulint
+dtuple_check_typed_no_assert(
+
+
+ dtuple_t* tuple);
+# 311 "./include/data0data.h"
+void
+dfield_print(
+
+ dfield_t* dfield);
+
+
+
+
+void
+dfield_print_also_hex(
+
+ dfield_t* dfield);
+
+
+
+void
+dtuple_print(
+
+ FILE* f,
+ dtuple_t* tuple);
+
+
+
+
+
+
+big_rec_t*
+dtuple_convert_big_rec(
+
+
+
+
+
+ dict_index_t* index,
+ dtuple_t* entry,
+ ulint* ext_vec,
+
+
+
+ ulint n_ext_vec);
+
+
+
+
+
+void
+dtuple_convert_back_big_rec(
+
+ dict_index_t* index,
+ dtuple_t* entry,
+ big_rec_t* vector);
+
+
+
+
+void
+dtuple_big_rec_free(
+
+ big_rec_t* vector);
+
+
+
+
+
+struct dfield_struct{
+ void* data;
+ ulint len;
+ dtype_t type;
+};
+
+struct dtuple_struct {
+ ulint info_bits;
+
+
+
+ ulint n_fields;
+ ulint n_fields_cmp;
+
+
+
+
+
+
+ dfield_t* fields;
+ struct { dtuple_t * prev; dtuple_t * next; } tuple_list;
+
+
+ ulint magic_n;
+};
+
+
+
+
+typedef struct big_rec_field_struct big_rec_field_t;
+struct big_rec_field_struct {
+ ulint field_no;
+ ulint len;
+ unsigned char* data;
+};
+
+
+
+
+struct big_rec_struct {
+ mem_heap_t* heap;
+ ulint n_fields;
+ big_rec_field_t* fields;
+};
+
+
+# 1 "./include/data0data.ic" 1
+# 12 "./include/data0data.ic"
+extern unsigned char data_error;
+
+
+
+static inline
+dtype_t*
+dfield_get_type(
+
+
+ dfield_t* field)
+{
+ ;
+
+ return(&(field->type));
+}
+
+
+
+static inline
+void
+dfield_set_type(
+
+ dfield_t* field,
+ dtype_t* type)
+{
+ ;
+
+ field->type = *type;
+}
+
+
+
+static inline
+void*
+dfield_get_data(
+
+
+ dfield_t* field)
+{
+ ;
+ ;
+
+
+ return(field->data);
+}
+
+
+
+static inline
+ulint
+dfield_get_len(
+
+
+
+ dfield_t* field)
+{
+ ;
+ ;
+
+
+ return(field->len);
+}
+
+
+
+static inline
+void
+dfield_set_len(
+
+ dfield_t* field,
+ ulint len)
+{
+ ;
+
+ field->len = len;
+}
+
+
+
+static inline
+void
+dfield_set_data(
+
+ dfield_t* field,
+ const void* data,
+ ulint len)
+{
+ ;
+
+ field->data = (void*) data;
+ field->len = len;
+}
+
+
+
+static inline
+void
+dfield_copy_data(
+
+ dfield_t* field1,
+ dfield_t* field2)
+{
+ ;
+
+ field1->data = field2->data;
+ field1->len = field2->len;
+}
+
+
+
+static inline
+void
+dfield_copy(
+
+ dfield_t* field1,
+ dfield_t* field2)
+{
+ *field1 = *field2;
+}
+
+
+
+static inline
+ulint
+dfield_datas_are_binary_equal(
+
+
+ dfield_t* field1,
+ dfield_t* field2)
+{
+ ulint len;
+
+ len = field1->len;
+
+ if ((len != field2->len)
+ || ((len != 0xFFFFFFFF)
+ && (0 != ut_memcmp(field1->data, field2->data, len)))) {
+
+ return((0));
+ }
+
+ return((1));
+}
+
+
+
+static inline
+ulint
+dtuple_get_info_bits(
+
+
+ dtuple_t* tuple)
+{
+ ;
+
+ return(tuple->info_bits);
+}
+
+
+
+static inline
+void
+dtuple_set_info_bits(
+
+ dtuple_t* tuple,
+ ulint info_bits)
+{
+ ;
+
+ tuple->info_bits = info_bits;
+}
+
+
+
+static inline
+ulint
+dtuple_get_n_fields_cmp(
+
+
+
+ dtuple_t* tuple)
+{
+ ;
+
+ return(tuple->n_fields_cmp);
+}
+
+
+
+static inline
+void
+dtuple_set_n_fields_cmp(
+
+ dtuple_t* tuple,
+ ulint n_fields_cmp)
+
+{
+ ;
+ ;
+
+ tuple->n_fields_cmp = n_fields_cmp;
+}
+
+
+
+static inline
+ulint
+dtuple_get_n_fields(
+
+
+ dtuple_t* tuple)
+{
+ ;
+
+ return(tuple->n_fields);
+}
+
+
+
+static inline
+dfield_t*
+dtuple_get_nth_field(
+
+
+ dtuple_t* tuple,
+ ulint n)
+{
+ ;
+ ;
+
+ return(tuple->fields + n);
+}
+
+
+
+
+static inline
+dtuple_t*
+dtuple_create(
+
+
+ mem_heap_t* heap,
+
+ ulint n_fields)
+{
+ dtuple_t* tuple;
+
+ ;
+
+ tuple = (dtuple_t*) mem_heap_alloc(heap, sizeof(dtuple_t)
+ + n_fields * sizeof(dfield_t));
+ tuple->info_bits = 0;
+ tuple->n_fields = n_fields;
+ tuple->n_fields_cmp = n_fields;
+ tuple->fields = (dfield_t*)(((unsigned char*)tuple) + sizeof(dtuple_t));
+# 280 "./include/data0data.ic"
+ return(tuple);
+}
+
+
+
+
+
+static inline
+ulint
+dtuple_get_data_size(
+
+
+ dtuple_t* tuple)
+{
+ dfield_t* field;
+ ulint n_fields;
+ ulint len;
+ ulint i;
+ ulint sum = 0;
+
+ ;
+ ;
+ ;
+
+ n_fields = tuple->n_fields;
+
+ for (i = 0; i < n_fields; i++) {
+ field = dtuple_get_nth_field(tuple, i);
+ len = dfield_get_len(field);
+
+ if (len == 0xFFFFFFFF) {
+ len = dtype_get_sql_null_size(dfield_get_type(field));
+ }
+
+ sum += len;
+ }
+
+ return(sum);
+}
+
+
+
+static inline
+void
+dtuple_set_types_binary(
+
+ dtuple_t* tuple,
+ ulint n)
+{
+ dtype_t* dfield_type;
+ ulint i;
+
+ for (i = 0; i < n; i++) {
+ dfield_type = dfield_get_type(dtuple_get_nth_field(tuple, i));
+ dtype_set(dfield_type, 4, 0, 0, 0);
+ }
+}
+
+
+
+static inline
+ulint
+dtuple_fold(
+
+
+ dtuple_t* tuple,
+ ulint n_fields,
+ ulint n_bytes,
+
+ dulint tree_id)
+{
+ dfield_t* field;
+ ulint i;
+ unsigned char* data;
+ ulint len;
+ ulint fold;
+
+ ;
+ ;
+ ;
+
+ fold = ut_fold_dulint(tree_id);
+
+ for (i = 0; i < n_fields; i++) {
+ field = dtuple_get_nth_field(tuple, i);
+
+ data = (unsigned char*) dfield_get_data(field);
+ len = dfield_get_len(field);
+
+ if (len != 0xFFFFFFFF) {
+ fold = ut_fold_ulint_pair(fold,
+ ut_fold_binary(data, len));
+ }
+ }
+
+ if (n_bytes > 0) {
+ field = dtuple_get_nth_field(tuple, i);
+
+ data = (unsigned char*) dfield_get_data(field);
+ len = dfield_get_len(field);
+
+ if (len != 0xFFFFFFFF) {
+ if (len > n_bytes) {
+ len = n_bytes;
+ }
+
+ fold = ut_fold_ulint_pair(fold,
+ ut_fold_binary(data, len));
+ }
+ }
+
+ return(fold);
+}
+
+
+
+static inline
+void
+data_write_sql_null(
+
+ unsigned char* data,
+ ulint len)
+{
+ ulint j;
+
+ for (j = 0; j < len; j++) {
+ data[j] = '\0';
+ }
+}
+
+
+
+static inline
+ulint
+dtuple_contains_null(
+
+
+ dtuple_t* tuple)
+{
+ ulint n;
+ ulint i;
+
+ n = dtuple_get_n_fields(tuple);
+
+ for (i = 0; i < n; i++) {
+ if (dfield_get_len(dtuple_get_nth_field(tuple, i))
+ == 0xFFFFFFFF) {
+
+ return((1));
+ }
+ }
+
+ return((0));
+}
+# 422 "./include/data0data.h" 2
+# 16 "./include/dict0mem.h" 2
+
+# 1 "./include/rem0types.h" 1
+# 13 "./include/rem0types.h"
+typedef unsigned char rec_t;
+# 18 "./include/dict0mem.h" 2
+# 1 "./include/btr0types.h" 1
+# 17 "./include/btr0types.h"
+typedef struct btr_pcur_struct btr_pcur_t;
+typedef struct btr_cur_struct btr_cur_t;
+typedef struct btr_search_struct btr_search_t;
+# 19 "./include/dict0mem.h" 2
+
+
+
+
+
+
+
+# 1 "./include/que0types.h" 1
+# 16 "./include/que0types.h"
+typedef void que_node_t;
+
+typedef struct que_fork_struct que_fork_t;
+
+
+typedef que_fork_t que_t;
+
+typedef struct que_thr_struct que_thr_t;
+typedef struct que_common_struct que_common_t;
+
+
+
+
+struct que_common_struct{
+ ulint type;
+ que_node_t* parent;
+ que_node_t* brother;
+ dfield_t val;
+ ulint val_buf_size;
+
+
+
+
+
+
+};
+# 27 "./include/dict0mem.h" 2
+# 48 "./include/dict0mem.h"
+dict_table_t*
+dict_mem_table_create(
+
+
+ const char* name,
+ ulint space,
+
+
+
+ ulint n_cols,
+ ulint comp);
+
+
+
+void
+dict_mem_table_free(
+
+ dict_table_t* table);
+
+
+
+dict_cluster_t*
+dict_mem_cluster_create(
+
+
+
+ const char* name,
+ ulint space,
+
+
+ ulint n_cols,
+ ulint mix_len);
+
+
+
+
+void
+dict_mem_table_make_cluster_member(
+
+ dict_table_t* table,
+ const char* cluster_name);
+
+
+
+void
+dict_mem_table_add_col(
+
+ dict_table_t* table,
+ const char* name,
+ ulint mtype,
+ ulint prtype,
+ ulint len,
+ ulint prec);
+
+
+
+dict_index_t*
+dict_mem_index_create(
+
+
+ const char* table_name,
+ const char* index_name,
+ ulint space,
+
+
+ ulint type,
+
+ ulint n_fields);
+
+
+
+
+
+void
+dict_mem_index_add_field(
+
+ dict_index_t* index,
+ const char* name,
+ ulint order,
+
+ ulint prefix_len);
+
+
+
+
+
+void
+dict_mem_index_free(
+
+ dict_index_t* index);
+
+
+
+dict_foreign_t*
+dict_mem_foreign_create(void);
+
+
+
+
+struct dict_col_struct{
+ hash_node_t hash;
+ ulint ind;
+
+ ulint clust_pos;
+
+ ulint ord_part;
+
+ const char* name;
+ dtype_t type;
+ dict_table_t* table;
+ ulint aux;
+
+};
+# 173 "./include/dict0mem.h"
+struct dict_field_struct{
+ dict_col_t* col;
+ const char* name;
+ ulint order;
+
+ ulint prefix_len;
+
+
+
+
+
+
+ ulint fixed_len;
+
+
+ ulint fixed_offs;
+
+
+
+};
+
+
+struct dict_tree_struct{
+ ulint type;
+ dulint id;
+
+
+ ulint space;
+ ulint page;
+ unsigned char pad[64];
+
+ rw_lock_t lock;
+
+ ulint mem_fix;
+
+
+
+ struct { ulint count; dict_index_t * start; dict_index_t * end; }
+ tree_indexes;
+
+
+
+
+
+ ulint magic_n;
+};
+
+
+
+
+struct dict_index_struct{
+ dulint id;
+ mem_heap_t* heap;
+ ulint type;
+ const char* name;
+ const char* table_name;
+ dict_table_t* table;
+ ulint space;
+ ulint trx_id_offset;
+
+
+
+ ulint n_user_defined_cols;
+
+
+
+ ulint n_uniq;
+
+
+ ulint n_def;
+ ulint n_fields;
+ dict_field_t* fields;
+ ulint n_nullable;
+ struct { dict_index_t * prev; dict_index_t * next; }
+ indexes;
+ dict_tree_t* tree;
+ struct { dict_index_t * prev; dict_index_t * next; }
+ tree_indexes;
+
+ ulint cached;
+
+ btr_search_t* search_info;
+
+ ib_longlong* stat_n_diff_key_vals;
+
+
+
+
+ ulint stat_index_size;
+
+ ulint stat_n_leaf_pages;
+
+
+ ulint magic_n;
+};
+
+
+
+
+struct dict_foreign_struct{
+ mem_heap_t* heap;
+
+ char* id;
+
+ ulint type;
+
+ char* foreign_table_name;
+ dict_table_t* foreign_table;
+ const char** foreign_col_names;
+
+ char* referenced_table_name;
+ dict_table_t* referenced_table;
+
+ const char** referenced_col_names;
+
+ ulint n_fields;
+
+
+
+
+
+ dict_index_t* foreign_index;
+
+
+
+
+ dict_index_t* referenced_index;
+ struct { dict_foreign_t * prev; dict_foreign_t * next; }
+ foreign_list;
+
+ struct { dict_foreign_t * prev; dict_foreign_t * next; }
+ referenced_list;
+
+};
+# 321 "./include/dict0mem.h"
+struct dict_table_struct{
+ dulint id;
+ ulint type;
+ mem_heap_t* heap;
+ const char* name;
+ const char* dir_path_of_temp_table;
+
+
+
+
+
+ ulint space;
+
+ ulint ibd_file_missing;
+
+
+
+ ulint tablespace_discarded;
+
+
+ ulint comp;
+ hash_node_t name_hash;
+ hash_node_t id_hash;
+ ulint n_def;
+ ulint n_cols;
+ dict_col_t* cols;
+ struct { ulint count; dict_index_t * start; dict_index_t * end; }
+ indexes;
+ struct { ulint count; dict_foreign_t * start; dict_foreign_t * end; }
+ foreign_list;
+
+
+ struct { ulint count; dict_foreign_t * start; dict_foreign_t * end; }
+ referenced_list;
+
+ struct { dict_table_t * prev; dict_table_t * next; }
+ table_LRU;
+ ulint mem_fix;
+
+
+ ulint n_mysql_handles_opened;
+
+
+
+
+
+ ulint n_foreign_key_checks_running;
+
+
+
+
+
+ ulint cached;
+
+ ib_lock_t* auto_inc_lock;
+
+
+
+
+
+
+ dulint query_cache_inv_trx_id;
+
+
+
+
+
+
+ struct { ulint count; ib_lock_t * start; ib_lock_t * end; }
+ locks;
+
+ dulint mix_id;
+
+ ulint mix_len;
+
+ ulint mix_id_len;
+ unsigned char mix_id_buf[12];
+
+
+ const char* cluster_name;
+
+
+ ulint does_not_fit_in_memory;
+# 413 "./include/dict0mem.h"
+ ib_longlong stat_n_rows;
+
+
+ ulint stat_clustered_index_size;
+
+
+ ulint stat_sum_of_other_index_sizes;
+
+ ulint stat_initialized;
+
+
+ ulint stat_modified_counter;
+# 437 "./include/dict0mem.h"
+ ib_mutex_t autoinc_mutex;
+
+
+ ulint autoinc_inited;
+
+
+
+ ib_longlong autoinc;
+
+ ulint magic_n;
+};
+
+
+
+# 1 "./include/dict0mem.ic" 1
+# 452 "./include/dict0mem.h" 2
+# 15 "./include/dict0dict.h" 2
+# 32 "./include/dict0dict.h"
+void
+dict_casedn_str(
+
+ char* a);
+
+
+
+ulint
+dict_get_db_name_len(
+
+
+ const char* name);
+
+
+
+
+const char*
+dict_accept(
+
+
+
+ const char* ptr,
+ const char* string,
+
+ ulint* success);
+
+
+
+void
+dict_table_decrement_handle_count(
+
+ dict_table_t* table);
+
+
+
+void
+dict_init(void);
+# 77 "./include/dict0dict.h"
+void
+dict_load_space_id_list(void);
+
+
+
+static inline
+dtype_t*
+dict_col_get_type(
+
+ dict_col_t* col);
+# 100 "./include/dict0dict.h"
+static inline
+ulint
+dict_col_get_no(
+
+ dict_col_t* col);
+
+
+static inline
+ulint
+dict_col_get_clust_pos(
+
+ dict_col_t* col);
+
+
+
+
+ulint
+dict_col_name_is_reserved(
+
+
+ const char* name);
+
+
+
+
+void
+dict_table_autoinc_initialize(
+
+ dict_table_t* table,
+ ib_longlong value);
+
+
+
+
+ib_longlong
+dict_table_autoinc_get(
+
+
+ dict_table_t* table);
+
+
+
+void
+dict_table_autoinc_decrement(
+
+ dict_table_t* table);
+
+
+
+
+ib_longlong
+dict_table_autoinc_read(
+
+
+ dict_table_t* table);
+
+
+
+
+ib_longlong
+dict_table_autoinc_peek(
+
+
+ dict_table_t* table);
+
+
+
+
+void
+dict_table_autoinc_update(
+
+
+ dict_table_t* table,
+ ib_longlong value);
+
+
+
+void
+dict_table_add_to_cache(
+
+ dict_table_t* table);
+
+
+
+void
+dict_table_remove_from_cache(
+
+ dict_table_t* table);
+
+
+
+ulint
+dict_table_rename_in_cache(
+
+
+ dict_table_t* table,
+ const char* new_name,
+ ulint rename_also_foreigns);
+
+
+
+
+
+
+void
+dict_table_change_id_in_cache(
+
+ dict_table_t* table,
+ dulint new_id);
+
+
+
+
+
+
+ulint
+dict_foreign_add_to_cache(
+
+
+ dict_foreign_t* foreign,
+ ulint check_charsets);
+
+
+
+
+ulint
+dict_table_referenced_by_foreign_key(
+
+
+
+ dict_table_t* table);
+# 239 "./include/dict0dict.h"
+ulint
+dict_create_foreign_constraints(
+
+
+ trx_t* trx,
+ const char* sql_string,
+
+
+
+
+
+
+
+ const char* name,
+
+
+ ulint reject_fks);
+
+
+
+
+
+ulint
+dict_foreign_parse_drop_constraints(
+
+
+
+
+
+ mem_heap_t* heap,
+
+ trx_t* trx,
+ dict_table_t* table,
+ ulint* n,
+
+ const char*** constraints_to_drop);
+
+
+
+
+
+
+dict_table_t*
+dict_table_get(
+
+
+
+ const char* table_name,
+ trx_t* trx);
+
+
+
+
+dict_table_t*
+dict_table_get_and_increment_handle_count(
+
+
+
+ const char* table_name,
+ trx_t* trx);
+
+
+
+dict_table_t*
+dict_table_get_on_id(
+
+
+ dulint table_id,
+ trx_t* trx);
+
+
+static inline
+dict_table_t*
+dict_table_get_on_id_low(
+
+
+ dulint table_id,
+ trx_t* trx);
+
+
+static inline
+void
+dict_table_release(
+
+ dict_table_t* table);
+
+
+static inline
+dict_table_t*
+dict_table_check_if_in_cache_low(
+
+
+ const char* table_name);
+
+
+
+static inline
+dict_table_t*
+dict_table_get_low(
+
+
+ const char* table_name);
+
+
+static inline
+dict_index_t*
+dict_table_get_index(
+
+
+ dict_table_t* table,
+ const char* name);
+
+
+
+dict_index_t*
+dict_table_get_index_noninline(
+
+
+ dict_table_t* table,
+ const char* name);
+
+
+
+void
+dict_table_print(
+
+ dict_table_t* table);
+
+
+
+void
+dict_table_print_low(
+
+ dict_table_t* table);
+
+
+
+void
+dict_table_print_by_name(
+
+ const char* name);
+
+
+
+void
+dict_print_info_on_foreign_keys(
+
+ ulint create_table_format,
+
+
+
+ FILE* file,
+ trx_t* trx,
+ dict_table_t* table);
+
+
+
+void
+dict_print_info_on_foreign_key_in_create_format(
+
+ FILE* file,
+ trx_t* trx,
+ dict_foreign_t* foreign,
+ ulint add_newline);
+
+
+void
+dict_index_name_print(
+
+ FILE* file,
+ trx_t* trx,
+ const dict_index_t* index);
+
+
+static inline
+dict_index_t*
+dict_table_get_first_index(
+
+
+ dict_table_t* table);
+
+
+
+dict_index_t*
+dict_table_get_first_index_noninline(
+
+
+ dict_table_t* table);
+
+
+static inline
+dict_index_t*
+dict_table_get_next_index(
+
+
+ dict_index_t* index);
+
+
+
+dict_index_t*
+dict_table_get_next_index_noninline(
+
+
+ dict_index_t* index);
+
+
+
+static inline
+ulint
+dict_table_get_n_user_cols(
+
+
+
+ dict_table_t* table);
+
+
+static inline
+ulint
+dict_table_get_n_sys_cols(
+
+
+
+ dict_table_t* table);
+
+
+
+static inline
+ulint
+dict_table_get_n_cols(
+
+
+ dict_table_t* table);
+
+
+static inline
+dict_col_t*
+dict_table_get_nth_col(
+
+
+ dict_table_t* table,
+ ulint pos);
+
+
+
+dict_col_t*
+dict_table_get_nth_col_noninline(
+
+
+ dict_table_t* table,
+ ulint pos);
+
+
+static inline
+dict_col_t*
+dict_table_get_sys_col(
+
+
+ dict_table_t* table,
+ ulint sys);
+
+
+static inline
+ulint
+dict_table_get_sys_col_no(
+
+
+ dict_table_t* table,
+ ulint sys);
+
+
+
+
+ulint
+dict_table_col_in_clustered_key(
+
+
+
+ dict_table_t* table,
+ ulint n);
+
+
+
+void
+dict_table_copy_types(
+
+ dtuple_t* tuple,
+ dict_table_t* table);
+
+
+
+
+
+dict_index_t*
+dict_index_find_on_id_low(
+
+
+ dulint id);
+
+
+
+ulint
+dict_index_add_to_cache(
+
+
+ dict_table_t* table,
+ dict_index_t* index,
+
+ ulint page_no);
+
+
+
+static inline
+ulint
+dict_index_get_n_fields(
+
+
+ dict_index_t* index);
+
+
+
+
+
+
+static inline
+ulint
+dict_index_get_n_unique(
+
+
+ dict_index_t* index);
+
+
+
+
+
+static inline
+ulint
+dict_index_get_n_unique_in_tree(
+
+
+ dict_index_t* index);
+
+
+
+
+
+
+static inline
+ulint
+dict_index_get_n_ordering_defined_by_user(
+
+
+ dict_index_t* index);
+
+
+
+static inline
+dict_field_t*
+dict_index_get_nth_field(
+
+
+ dict_index_t* index,
+ ulint pos);
+
+
+static inline
+dtype_t*
+dict_index_get_nth_type(
+
+
+ dict_index_t* index,
+ ulint pos);
+
+
+static inline
+ulint
+dict_index_get_nth_col_no(
+
+
+ dict_index_t* index,
+ ulint pos);
+
+
+
+ulint
+dict_index_get_nth_col_pos(
+
+
+
+
+ dict_index_t* index,
+ ulint n);
+
+
+
+ulint
+dict_index_contains_col_or_prefix(
+
+
+
+ dict_index_t* index,
+ ulint n);
+
+
+
+
+
+
+ulint
+dict_index_get_nth_field_pos(
+
+
+
+
+ dict_index_t* index,
+ dict_index_t* index2,
+ ulint n);
+
+
+
+ulint
+dict_table_get_nth_col_pos(
+
+
+
+ dict_table_t* table,
+ ulint n);
+
+
+static inline
+ulint
+dict_index_get_sys_col_pos(
+
+
+
+ dict_index_t* index,
+ ulint type);
+
+
+
+void
+dict_index_add_col(
+
+ dict_index_t* index,
+ dict_col_t* col,
+ ulint order,
+ ulint prefix_len);
+
+
+
+void
+dict_index_copy_types(
+
+ dtuple_t* tuple,
+ dict_index_t* index,
+ ulint n_fields);
+
+
+static inline
+dict_tree_t*
+dict_index_get_tree(
+
+
+ dict_index_t* index);
+
+
+static inline
+ulint
+dict_field_get_order(
+
+ dict_field_t* field);
+
+
+static inline
+dict_col_t*
+dict_field_get_col(
+
+ dict_field_t* field);
+
+
+
+dict_tree_t*
+dict_tree_create(
+
+
+ dict_index_t* index,
+
+
+ ulint page_no);
+
+
+
+void
+dict_tree_free(
+
+ dict_tree_t* tree);
+
+
+
+dict_index_t*
+dict_tree_find_index(
+
+
+ dict_tree_t* tree,
+ rec_t* rec);
+
+
+
+
+dict_index_t*
+dict_tree_find_index_for_tuple(
+
+
+
+ dict_tree_t* tree,
+ dtuple_t* tuple);
+
+
+
+ulint
+dict_is_mixed_table_rec(
+
+
+
+ dict_table_t* table,
+ rec_t* rec);
+
+
+
+dict_index_t*
+dict_index_get_if_in_cache(
+
+
+ dulint index_id);
+
+
+
+
+ulint
+dict_tree_check_search_tuple(
+
+
+ dict_tree_t* tree,
+ dtuple_t* tuple);
+
+
+
+dtuple_t*
+dict_tree_build_node_ptr(
+
+
+ dict_tree_t* tree,
+ rec_t* rec,
+
+ ulint page_no,
+ mem_heap_t* heap,
+ ulint level);
+
+
+
+
+
+rec_t*
+dict_tree_copy_rec_order_prefix(
+
+
+ dict_tree_t* tree,
+ rec_t* rec,
+ ulint* n_fields,
+ unsigned char** buf,
+
+ ulint* buf_size);
+
+
+
+dtuple_t*
+dict_tree_build_data_tuple(
+
+
+ dict_tree_t* tree,
+ rec_t* rec,
+ ulint n_fields,
+ mem_heap_t* heap);
+
+
+static inline
+ulint
+dict_tree_get_space(
+
+
+ dict_tree_t* tree);
+
+
+static inline
+void
+dict_tree_set_space(
+
+ dict_tree_t* tree,
+ ulint space);
+
+
+static inline
+ulint
+dict_tree_get_page(
+
+
+ dict_tree_t* tree);
+
+
+static inline
+void
+dict_tree_set_page(
+
+ dict_tree_t* tree,
+ ulint page);
+
+
+static inline
+ulint
+dict_tree_get_type(
+
+
+ dict_tree_t* tree);
+
+
+static inline
+rw_lock_t*
+dict_tree_get_lock(
+
+
+ dict_tree_t* tree);
+
+
+
+
+static inline
+ulint
+dict_tree_get_space_reserve(
+
+
+
+ dict_tree_t* tree);
+
+
+
+ulint
+dict_index_calc_min_rec_len(
+
+ dict_index_t* index);
+
+
+
+
+void
+dict_update_statistics_low(
+
+ dict_table_t* table,
+ ulint has_dict_mutex);
+
+
+
+
+
+void
+dict_update_statistics(
+
+ dict_table_t* table);
+
+
+
+void
+dict_mutex_enter_for_mysql(void);
+
+
+
+
+void
+dict_mutex_exit_for_mysql(void);
+
+
+
+
+ulint
+dict_tables_have_same_db(
+
+
+ const char* name1,
+
+ const char* name2);
+
+
+
+
+
+
+
+const char*
+dict_scan_to(
+
+
+ const char* ptr,
+ const char* string);
+
+void
+dict_table_LRU_trim(
+
+ dict_table_t* self);
+
+
+
+extern FILE* dict_foreign_err_file;
+extern ib_mutex_t dict_foreign_err_mutex;
+
+extern dict_sys_t* dict_sys;
+extern rw_lock_t dict_operation_lock;
+
+
+struct dict_sys_struct{
+ ib_mutex_t mutex;
+
+
+
+
+
+
+ dulint row_id;
+
+
+
+
+
+ hash_table_t* table_hash;
+
+ hash_table_t* table_id_hash;
+
+ hash_table_t* col_hash;
+ struct { ulint count; dict_table_t * start; dict_table_t * end; }
+ table_LRU;
+ ulint size;
+
+
+ dict_table_t* sys_tables;
+ dict_table_t* sys_columns;
+ dict_table_t* sys_indexes;
+ dict_table_t* sys_fields;
+};
+
+
+# 1 "./include/dict0dict.ic" 1
+# 9 "./include/dict0dict.ic"
+# 1 "./include/dict0load.h" 1
+# 26 "./include/dict0load.h"
+void
+dict_check_tablespaces_and_store_max_id(
+
+ ulint in_crash_recovery);
+
+
+
+char*
+dict_get_first_table_name_in_db(
+
+
+
+
+ const char* name);
+
+
+
+
+
+
+dict_table_t*
+dict_load_table(
+
+
+
+
+
+
+ const char* name);
+
+
+
+
+dict_table_t*
+dict_load_table_on_id(
+
+
+ dulint table_id);
+
+
+
+
+
+void
+dict_load_sys_table(
+
+ dict_table_t* table);
+
+
+
+
+
+
+
+ulint
+dict_load_foreigns(
+
+
+ const char* table_name,
+ ulint check_charsets);
+
+
+
+
+
+void
+dict_print(void);
+
+
+
+
+# 1 "./include/dict0load.ic" 1
+# 98 "./include/dict0load.h" 2
+# 10 "./include/dict0dict.ic" 2
+# 1 "./include/trx0undo.h" 1
+# 15 "./include/trx0undo.h"
+# 1 "./include/trx0sys.h" 1
+# 16 "./include/trx0sys.h"
+# 1 "./include/mtr0log.h" 1
+# 20 "./include/mtr0log.h"
+void
+mlog_write_ulint(
+
+ unsigned char* ptr,
+ ulint val,
+ unsigned char type,
+ mtr_t* mtr);
+
+
+
+
+void
+mlog_write_dulint(
+
+ unsigned char* ptr,
+ dulint val,
+ mtr_t* mtr);
+
+
+
+
+void
+mlog_write_string(
+
+ unsigned char* ptr,
+ const unsigned char* str,
+ ulint len,
+ mtr_t* mtr);
+
+
+
+
+void
+mlog_write_initial_log_record(
+
+ unsigned char* ptr,
+
+
+ unsigned char type,
+ mtr_t* mtr);
+
+
+static inline
+unsigned char*
+mlog_write_initial_log_record_for_file_op(
+
+
+ ulint type,
+
+ ulint space_id,
+ ulint page_no,
+ unsigned char* log_ptr,
+ mtr_t* mtr);
+
+
+static inline
+void
+mlog_catenate_ulint(
+
+ mtr_t* mtr,
+ ulint val,
+ ulint type);
+
+
+
+void
+mlog_catenate_string(
+
+ mtr_t* mtr,
+ const unsigned char* str,
+ ulint len);
+
+
+static inline
+void
+mlog_catenate_ulint_compressed(
+
+ mtr_t* mtr,
+ ulint val);
+
+
+static inline
+void
+mlog_catenate_dulint_compressed(
+
+ mtr_t* mtr,
+ dulint val);
+
+
+static inline
+unsigned char*
+mlog_open(
+
+
+ mtr_t* mtr,
+ ulint size);
+
+
+
+static inline
+void
+mlog_close(
+
+ mtr_t* mtr,
+ unsigned char* ptr);
+
+
+
+
+static inline
+unsigned char*
+mlog_write_initial_log_record_fast(
+
+
+ unsigned char* ptr,
+
+ unsigned char type,
+ unsigned char* log_ptr,
+ mtr_t* mtr);
+
+
+
+unsigned char*
+mlog_parse_initial_log_record(
+
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ unsigned char* type,
+ ulint* space,
+ ulint* page_no);
+
+
+
+unsigned char*
+mlog_parse_nbytes(
+
+
+
+ ulint type,
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ unsigned char* page);
+
+
+
+unsigned char*
+mlog_parse_string(
+
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ unsigned char* page);
+# 183 "./include/mtr0log.h"
+unsigned char*
+mlog_open_and_write_index(
+
+
+
+ mtr_t* mtr,
+ unsigned char* rec,
+ dict_index_t* index,
+ unsigned char type,
+ ulint size);
+
+
+
+
+
+unsigned char*
+mlog_parse_index(
+
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+
+ ulint comp,
+ dict_index_t** index);
+
+
+
+
+
+
+# 1 "./include/mtr0log.ic" 1
+# 15 "./include/mtr0log.ic"
+static inline
+unsigned char*
+mlog_open(
+
+
+ mtr_t* mtr,
+ ulint size)
+
+{
+ dyn_array_t* mlog;
+
+ mtr->modifications = (1);
+
+ if (mtr_get_log_mode(mtr) == 22) {
+
+ return(((void *)0));
+ }
+
+ mlog = &(mtr->log);
+
+ return(dyn_array_open(mlog, size));
+}
+
+
+
+static inline
+void
+mlog_close(
+
+ mtr_t* mtr,
+ unsigned char* ptr)
+{
+ dyn_array_t* mlog;
+
+ ;
+
+ mlog = &(mtr->log);
+
+ dyn_array_close(mlog, ptr);
+}
+
+
+
+static inline
+void
+mlog_catenate_ulint(
+
+ mtr_t* mtr,
+ ulint val,
+ ulint type)
+{
+ dyn_array_t* mlog;
+ unsigned char* ptr;
+
+ if (mtr_get_log_mode(mtr) == 22) {
+
+ return;
+ }
+
+ mlog = &(mtr->log);
+
+ ;
+ ;
+ ;
+
+ ptr = dyn_array_push(mlog, type);
+
+ if (type == ((unsigned char)4)) {
+ mach_write_to_4(ptr, val);
+ } else if (type == ((unsigned char)2)) {
+ mach_write_to_2(ptr, val);
+ } else {
+ ;
+ mach_write_to_1(ptr, val);
+ }
+}
+
+
+
+static inline
+void
+mlog_catenate_ulint_compressed(
+
+ mtr_t* mtr,
+ ulint val)
+{
+ unsigned char* log_ptr;
+
+ log_ptr = mlog_open(mtr, 10);
+
+
+ if (log_ptr == ((void *)0)) {
+
+ return;
+ }
+
+ log_ptr += mach_write_compressed(log_ptr, val);
+
+ mlog_close(mtr, log_ptr);
+}
+
+
+
+static inline
+void
+mlog_catenate_dulint_compressed(
+
+ mtr_t* mtr,
+ dulint val)
+{
+ unsigned char* log_ptr;
+
+ log_ptr = mlog_open(mtr, 15);
+
+
+ if (log_ptr == ((void *)0)) {
+
+ return;
+ }
+
+ log_ptr += mach_dulint_write_compressed(log_ptr, val);
+
+ mlog_close(mtr, log_ptr);
+}
+
+
+
+
+
+static inline
+unsigned char*
+mlog_write_initial_log_record_fast(
+
+
+ unsigned char* ptr,
+
+ unsigned char type,
+ unsigned char* log_ptr,
+ mtr_t* mtr)
+{
+ buf_block_t* block;
+ ulint space;
+ ulint offset;
+
+ ;
+
+ ;
+ ;
+
+ block = buf_block_align(ptr);
+
+ space = buf_block_get_space(block);
+ offset = buf_block_get_page_no(block);
+
+ mach_write_to_1(log_ptr, type);
+ log_ptr++;
+ log_ptr += mach_write_compressed(log_ptr, space);
+ log_ptr += mach_write_compressed(log_ptr, offset);
+
+ mtr->n_log_recs++;
+# 190 "./include/mtr0log.ic"
+ return(log_ptr);
+}
+
+
+
+static inline
+unsigned char*
+mlog_write_initial_log_record_for_file_op(
+
+
+ ulint type,
+
+ ulint space_id,
+ ulint page_no,
+ unsigned char* log_ptr,
+ mtr_t* mtr)
+{
+ ;
+
+ mach_write_to_1(log_ptr, type);
+ log_ptr++;
+
+
+ log_ptr += mach_write_compressed(log_ptr, space_id);
+ log_ptr += mach_write_compressed(log_ptr, page_no);
+
+ mtr->n_log_recs++;
+
+ return(log_ptr);
+}
+# 215 "./include/mtr0log.h" 2
+# 17 "./include/trx0sys.h" 2
+
+
+
+
+
+
+# 1 "./include/fut0lst.h" 1
+# 22 "./include/fut0lst.h"
+typedef unsigned char flst_base_node_t;
+typedef unsigned char flst_node_t;
+# 34 "./include/fut0lst.h"
+static inline
+void
+flst_init(
+
+ flst_base_node_t* base,
+ mtr_t* mtr);
+
+
+
+void
+flst_add_last(
+
+ flst_base_node_t* base,
+ flst_node_t* node,
+ mtr_t* mtr);
+
+
+
+void
+flst_add_first(
+
+ flst_base_node_t* base,
+ flst_node_t* node,
+ mtr_t* mtr);
+
+
+
+void
+flst_insert_after(
+
+ flst_base_node_t* base,
+ flst_node_t* node1,
+ flst_node_t* node2,
+ mtr_t* mtr);
+
+
+
+void
+flst_insert_before(
+
+ flst_base_node_t* base,
+ flst_node_t* node2,
+ flst_node_t* node3,
+ mtr_t* mtr);
+
+
+
+void
+flst_remove(
+
+ flst_base_node_t* base,
+ flst_node_t* node2,
+ mtr_t* mtr);
+
+
+
+
+
+void
+flst_cut_end(
+
+ flst_base_node_t* base,
+ flst_node_t* node2,
+ ulint n_nodes,
+
+ mtr_t* mtr);
+
+
+
+
+
+void
+flst_truncate_end(
+
+ flst_base_node_t* base,
+ flst_node_t* node2,
+ ulint n_nodes,
+ mtr_t* mtr);
+
+
+static inline
+ulint
+flst_get_len(
+
+
+ flst_base_node_t* base,
+ mtr_t* mtr);
+
+
+static inline
+fil_addr_t
+flst_get_first(
+
+
+ flst_base_node_t* base,
+ mtr_t* mtr);
+
+
+static inline
+fil_addr_t
+flst_get_last(
+
+
+ flst_base_node_t* base,
+ mtr_t* mtr);
+
+
+static inline
+fil_addr_t
+flst_get_next_addr(
+
+
+ flst_node_t* node,
+ mtr_t* mtr);
+
+
+static inline
+fil_addr_t
+flst_get_prev_addr(
+
+
+ flst_node_t* node,
+ mtr_t* mtr);
+
+
+static inline
+void
+flst_write_addr(
+
+ fil_faddr_t* faddr,
+ fil_addr_t addr,
+ mtr_t* mtr);
+
+
+static inline
+fil_addr_t
+flst_read_addr(
+
+
+ fil_faddr_t* faddr,
+ mtr_t* mtr);
+
+
+
+ulint
+flst_validate(
+
+
+ flst_base_node_t* base,
+ mtr_t* mtr1);
+
+
+
+void
+flst_print(
+
+ flst_base_node_t* base,
+ mtr_t* mtr);
+
+
+
+# 1 "./include/fut0lst.ic" 1
+# 9 "./include/fut0lst.ic"
+# 1 "./include/fut0fut.h" 1
+# 20 "./include/fut0fut.h"
+static inline
+unsigned char*
+fut_get_ptr(
+
+
+
+ ulint space,
+ fil_addr_t addr,
+ ulint rw_latch,
+ mtr_t* mtr);
+
+
+# 1 "./include/fut0fut.ic" 1
+# 14 "./include/fut0fut.ic"
+static inline
+unsigned char*
+fut_get_ptr(
+
+
+
+ ulint space,
+ fil_addr_t addr,
+ ulint rw_latch,
+ mtr_t* mtr)
+{
+ unsigned char* ptr;
+
+ ;
+ ;
+ ;
+
+ ptr = buf_page_get_gen( space, addr.page, rw_latch, ((void *)0), 10, "./include/fut0fut.ic", 31, mtr) + addr.boffset;
+
+
+
+
+
+ return(ptr);
+}
+# 33 "./include/fut0fut.h" 2
+# 10 "./include/fut0lst.ic" 2
+# 31 "./include/fut0lst.ic"
+static inline
+void
+flst_write_addr(
+
+ fil_faddr_t* faddr,
+ fil_addr_t addr,
+ mtr_t* mtr)
+{
+ ;
+ ;
+
+
+ mlog_write_ulint(faddr + 0, addr.page, ((unsigned char)4), mtr);
+ mlog_write_ulint(faddr + 4, addr.boffset,
+ ((unsigned char)2), mtr);
+}
+
+
+
+static inline
+fil_addr_t
+flst_read_addr(
+
+
+ fil_faddr_t* faddr,
+ mtr_t* mtr)
+{
+ fil_addr_t addr;
+
+ ;
+
+ addr.page = mtr_read_ulint(faddr + 0, ((unsigned char)4), mtr);
+ addr.boffset = mtr_read_ulint(faddr + 4, ((unsigned char)2),
+ mtr);
+ return(addr);
+}
+
+
+
+static inline
+void
+flst_init(
+
+ flst_base_node_t* base,
+ mtr_t* mtr)
+{
+ ;
+
+ mlog_write_ulint(base + 0, 0, ((unsigned char)4), mtr);
+ flst_write_addr(base + 4, fil_addr_null, mtr);
+ flst_write_addr(base + (4 + 6), fil_addr_null, mtr);
+}
+
+
+
+static inline
+ulint
+flst_get_len(
+
+
+ flst_base_node_t* base,
+ mtr_t* mtr)
+{
+ return(mtr_read_ulint(base + 0, ((unsigned char)4), mtr));
+}
+
+
+
+static inline
+fil_addr_t
+flst_get_first(
+
+
+ flst_base_node_t* base,
+ mtr_t* mtr)
+{
+ return(flst_read_addr(base + 4, mtr));
+}
+
+
+
+static inline
+fil_addr_t
+flst_get_last(
+
+
+ flst_base_node_t* base,
+ mtr_t* mtr)
+{
+ return(flst_read_addr(base + (4 + 6), mtr));
+}
+
+
+
+static inline
+fil_addr_t
+flst_get_next_addr(
+
+
+ flst_node_t* node,
+ mtr_t* mtr)
+{
+ return(flst_read_addr(node + 6, mtr));
+}
+
+
+
+static inline
+fil_addr_t
+flst_get_prev_addr(
+
+
+ flst_node_t* node,
+ mtr_t* mtr)
+{
+ return(flst_read_addr(node + 0, mtr));
+}
+# 196 "./include/fut0lst.h" 2
+# 24 "./include/trx0sys.h" 2
+# 1 "./include/fsp0fsp.h" 1
+# 34 "./include/fsp0fsp.h"
+typedef unsigned char fseg_header_t;
+# 45 "./include/fsp0fsp.h"
+void
+fsp_init(void);
+
+
+
+
+
+
+
+ulint
+fsp_header_get_free_limit(
+
+
+ ulint space);
+
+
+
+
+
+ulint
+fsp_header_get_tablespace_size(
+
+
+ ulint space);
+
+
+
+ulint
+fsp_get_size_low(
+
+
+ ib_page_t* page);
+
+
+
+ulint
+fsp_header_get_space_id(
+
+
+ ib_page_t* page);
+
+
+
+
+void
+fsp_header_write_space_id(
+
+ ib_page_t* page,
+ ulint space_id);
+
+
+
+
+void
+fsp_header_init(
+
+ ulint space,
+ ulint size,
+ mtr_t* mtr);
+
+
+
+void
+fsp_header_inc_size(
+
+ ulint space,
+ ulint size_inc,
+ mtr_t* mtr);
+
+
+
+ib_page_t*
+fseg_create(
+
+
+
+
+ ulint space,
+ ulint page,
+
+
+
+ ulint byte_offset,
+
+ mtr_t* mtr);
+
+
+
+ib_page_t*
+fseg_create_general(
+
+
+
+
+ ulint space,
+ ulint page,
+
+
+
+ ulint byte_offset,
+
+ ulint has_done_reservation,
+
+
+
+
+
+ mtr_t* mtr);
+
+
+
+
+ulint
+fseg_n_reserved_pages(
+
+
+ fseg_header_t* header,
+ ulint* used,
+ mtr_t* mtr);
+
+
+
+
+
+ulint
+fseg_alloc_free_page(
+
+
+
+ fseg_header_t* seg_header,
+ ulint hint,
+ unsigned char direction,
+
+
+
+
+ mtr_t* mtr);
+
+
+
+
+
+ulint
+fseg_alloc_free_page_general(
+
+
+
+ fseg_header_t* seg_header,
+ ulint hint,
+ unsigned char direction,
+
+
+
+
+ ulint has_done_reservation,
+
+
+
+
+ mtr_t* mtr);
+# 231 "./include/fsp0fsp.h"
+ulint
+fsp_reserve_free_extents(
+
+
+ ulint* n_reserved,
+
+
+ ulint space,
+ ulint n_ext,
+ ulint alloc_type,
+ mtr_t* mtr);
+
+
+
+
+
+
+ullint
+fsp_get_available_space_in_free_extents(
+
+
+ ulint space);
+
+
+
+void
+fseg_free_page(
+
+ fseg_header_t* seg_header,
+ ulint space,
+ ulint page,
+ mtr_t* mtr);
+
+
+
+
+void
+fseg_free(
+
+ ulint space,
+ ulint page_no,
+
+ ulint offset);
+
+
+
+
+
+
+
+ulint
+fseg_free_step(
+
+
+ fseg_header_t* header,
+
+
+
+ mtr_t* mtr);
+
+
+
+
+ulint
+fseg_free_step_not_header(
+
+
+
+ fseg_header_t* header,
+
+ mtr_t* mtr);
+
+
+static inline
+ulint
+fsp_descr_page(
+
+
+ ulint page_no);
+
+
+
+unsigned char*
+fsp_parse_init_file_page(
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ ib_page_t* page);
+
+
+
+ulint
+fsp_validate(
+
+
+ ulint space);
+
+
+
+void
+fsp_print(
+
+ ulint space);
+
+
+
+ulint
+fseg_validate(
+
+
+ fseg_header_t* header,
+ mtr_t* mtr2);
+
+
+
+void
+fseg_print(
+
+ fseg_header_t* header,
+ mtr_t* mtr);
+# 384 "./include/fsp0fsp.h"
+# 1 "./include/fsp0fsp.ic" 1
+# 11 "./include/fsp0fsp.ic"
+static inline
+ulint
+fsp_descr_page(
+
+
+ ulint page_no)
+{
+ if (page_no % (2 * 8192) == 0) {
+
+ return((1));
+ }
+
+ return((0));
+}
+# 385 "./include/fsp0fsp.h" 2
+# 25 "./include/trx0sys.h" 2
+# 1 "./include/read0types.h" 1
+# 12 "./include/read0types.h"
+typedef struct read_view_struct read_view_t;
+typedef struct cursor_view_struct cursor_view_t;
+# 26 "./include/trx0sys.h" 2
+
+
+
+
+
+
+extern char trx_sys_mysql_master_log_name[];
+extern ib_longlong trx_sys_mysql_master_log_pos;
+
+
+
+
+
+
+extern char trx_sys_mysql_bin_log_name[];
+extern ib_longlong trx_sys_mysql_bin_log_pos;
+
+
+extern trx_sys_t* trx_sys;
+
+
+extern trx_doublewrite_t* trx_doublewrite;
+extern ulint trx_doublewrite_must_reset_space_ids;
+extern ulint trx_sys_multiple_tablespace_format;
+
+
+
+
+
+void
+trx_sys_create_doublewrite_buf(void);
+# 66 "./include/trx0sys.h"
+void
+trx_sys_doublewrite_init_or_restore_pages(
+
+ ulint restore_corrupt_pages);
+
+
+
+
+void
+trx_sys_mark_upgraded_to_multiple_tablespaces(void);
+
+
+
+
+ulint
+trx_doublewrite_page_inside(
+
+
+
+ ulint page_no);
+
+
+static inline
+ulint
+trx_sys_hdr_page(
+
+
+ ulint space,
+ ulint page_no);
+
+
+
+
+void
+trx_sys_init_at_db_start(void);
+
+
+
+
+void
+trx_sys_create(void);
+
+
+
+
+void
+trx_sys_create_extra_rseg(
+
+ ulint num);
+
+
+
+ulint
+trx_sysf_rseg_find_free(
+
+
+
+ mtr_t* mtr);
+
+
+static inline
+trx_rseg_t*
+trx_sys_get_nth_rseg(
+
+
+
+ trx_sys_t* sys,
+ ulint n);
+
+
+static inline
+void
+trx_sys_set_nth_rseg(
+
+ trx_sys_t* sys,
+ ulint n,
+ trx_rseg_t* rseg);
+
+
+
+static inline
+trx_sysf_t*
+trx_sysf_get(
+
+
+ mtr_t* mtr);
+
+
+
+static inline
+ulint
+trx_sysf_rseg_get_space(
+
+
+ trx_sysf_t* sys_header,
+ ulint i,
+ mtr_t* mtr);
+
+
+
+static inline
+ulint
+trx_sysf_rseg_get_page_no(
+
+
+
+ trx_sysf_t* sys_header,
+ ulint i,
+ mtr_t* mtr);
+
+
+
+static inline
+void
+trx_sysf_rseg_set_space(
+
+ trx_sysf_t* sys_header,
+ ulint i,
+ ulint space,
+ mtr_t* mtr);
+
+
+
+static inline
+void
+trx_sysf_rseg_set_page_no(
+
+ trx_sysf_t* sys_header,
+ ulint i,
+ ulint page_no,
+
+ mtr_t* mtr);
+
+
+static inline
+dulint
+trx_sys_get_new_trx_id(void);
+
+
+
+
+static inline
+dulint
+trx_sys_get_new_trx_no(void);
+
+
+
+
+
+
+static inline
+void
+trx_write_trx_id(
+
+ unsigned char* ptr,
+ dulint id);
+
+
+
+
+static inline
+dulint
+trx_read_trx_id(
+
+
+ unsigned char* ptr);
+
+
+static inline
+trx_t*
+trx_get_on_id(
+
+
+ dulint trx_id);
+
+
+
+
+
+static inline
+dulint
+trx_list_get_min_trx_id(void);
+
+
+
+
+
+static inline
+ulint
+trx_is_active(
+
+
+ dulint trx_id);
+
+
+
+ulint
+trx_in_trx_list(
+
+
+ trx_t* in_trx);
+
+
+
+
+
+
+void
+trx_sys_update_mysql_binlog_offset(
+
+ const char* file_name,
+ ib_longlong offset,
+ ulint field,
+
+ mtr_t* mtr);
+
+
+
+
+void
+trx_sys_print_mysql_binlog_offset(void);
+# 303 "./include/trx0sys.h"
+void
+trx_sys_print_mysql_master_log_pos(void);
+# 403 "./include/trx0sys.h"
+struct trx_doublewrite_struct{
+ ib_mutex_t mutex;
+
+ ulint block1;
+
+ ulint block2;
+ ulint first_free;
+
+ unsigned char* write_buf;
+
+
+
+ unsigned char* write_buf_unaligned;
+ buf_block_t**
+ buf_block_arr;
+
+};
+
+
+
+struct trx_sys_struct{
+ dulint max_trx_id;
+
+
+ struct { ulint count; trx_t * start; trx_t * end; } trx_list;
+
+
+
+ struct { ulint count; trx_t * start; trx_t * end; } mysql_trx_list;
+
+
+ struct { ulint count; trx_rseg_t * start; trx_rseg_t * end; } rseg_list;
+
+ trx_rseg_t* latest_rseg;
+
+
+ trx_rseg_t* rseg_array[256];
+
+
+ ulint rseg_history_len;
+
+
+
+ struct { ulint count; read_view_t * start; read_view_t * end; } view_list;
+
+
+};
+
+
+
+
+
+
+
+# 1 "./include/trx0sys.ic" 1
+# 9 "./include/trx0sys.ic"
+# 1 "./include/srv0srv.h" 1
+# 19 "./include/srv0srv.h"
+extern const char* srv_main_thread_op_info;
+
+
+
+extern os_event_t srv_lock_timeout_thread_event;
+
+
+
+
+
+
+extern ulint srv_slow_log;
+
+
+extern ulint srv_lower_case_table_names;
+
+
+extern ib_mutex_t srv_monitor_file_mutex;
+
+extern FILE* srv_monitor_file;
+
+
+
+extern ib_mutex_t srv_dict_tmpfile_mutex;
+
+extern FILE* srv_dict_tmpfile;
+
+
+
+extern ib_mutex_t srv_misc_tmpfile_mutex;
+
+extern FILE* srv_misc_tmpfile;
+
+
+
+extern char* srv_data_home;
+
+
+
+
+extern ulint srv_file_per_table;
+extern ulint srv_locks_unsafe_for_binlog;
+
+extern ulint srv_n_data_files;
+extern char** srv_data_file_names;
+extern ulint* srv_data_file_sizes;
+extern ulint* srv_data_file_is_raw_partition;
+
+extern ulint srv_auto_extend_last_data_file;
+extern ulint srv_last_file_size_max;
+extern ulong srv_auto_extend_increment;
+
+extern ulint srv_created_new_raw;
+
+
+
+
+extern char** srv_log_group_home_dirs;
+
+extern ulint srv_n_log_groups;
+extern ulint srv_n_log_files;
+extern ulint srv_log_file_size;
+extern ulint srv_log_buffer_size;
+extern ulong srv_flush_log_at_trx_commit;
+extern ulong srv_show_locks_held;
+extern ulong srv_show_verbose_locks;
+
+extern unsigned char srv_latin1_ordering[256];
+
+extern ulint srv_pool_size;
+extern ulint srv_awe_window_size;
+extern ulint srv_mem_pool_size;
+extern ulint srv_lock_table_size;
+
+extern ulint srv_thread_concurrency_timer_based;
+
+extern ulint srv_n_file_io_threads;
+extern ulint srv_n_read_io_threads;
+extern ulint srv_n_write_io_threads;
+
+
+
+
+
+
+
+extern ulint srv_lock_wait_timeout;
+
+extern char* srv_file_flush_method_str;
+extern ulint srv_unix_file_flush_method;
+extern ulint srv_win_file_flush_method;
+
+extern ulint srv_max_n_open_files;
+
+extern ulint srv_max_dirty_pages_pct;
+
+extern ulint srv_force_recovery;
+extern ulong srv_thread_concurrency;
+extern ulong srv_commit_concurrency;
+
+extern ulint srv_max_n_threads;
+
+extern lint srv_conc_n_threads;
+
+extern ulint srv_fast_shutdown;
+
+
+
+
+
+
+extern ulint srv_innodb_status;
+
+extern ulint srv_use_doublewrite_buf;
+extern ulint srv_use_checksums;
+
+extern ulint srv_set_thread_priorities;
+extern int srv_query_thread_priority;
+
+extern ulong srv_max_buf_pool_modified_pct;
+extern ulong srv_max_purge_lag;
+extern ulint srv_use_awe;
+extern ulint srv_use_adaptive_hash_indexes;
+
+extern ulint srv_io_capacity;
+extern long long srv_ibuf_max_size;
+extern ulint srv_ibuf_active_contract;
+extern ulint srv_ibuf_accel_rate;
+extern ulint srv_flush_neighbor_pages;
+extern ulint srv_enable_unsafe_group_commit;
+extern uint srv_read_ahead;
+extern ulint srv_adaptive_checkpoint;
+
+extern ulint srv_extra_rsegments;
+
+extern ulint srv_dict_size_limit;
+
+extern volatile ulint srv_io_pattern;
+extern ulong srv_io_pattern_trace;
+extern ulong srv_io_pattern_trace_running;
+extern ulong srv_io_pattern_size_limit;
+
+
+extern ulint srv_n_rows_inserted;
+extern ulint srv_n_rows_updated;
+extern ulint srv_n_rows_deleted;
+extern ulint srv_n_rows_read;
+
+extern ulint srv_print_innodb_monitor;
+extern ulint srv_print_innodb_lock_monitor;
+extern ulint srv_print_innodb_tablespace_monitor;
+extern ulint srv_print_verbose_log;
+extern ulint srv_print_innodb_table_monitor;
+
+extern ulint srv_lock_timeout_and_monitor_active;
+extern ulint srv_error_monitor_active;
+
+extern ulong srv_n_spin_wait_rounds;
+extern ulong srv_n_free_tickets_to_enter;
+extern ulong srv_thread_sleep_delay;
+extern ulint srv_spin_wait_delay;
+extern ulint srv_priority_boost;
+
+extern ulint srv_pool_size;
+extern ulint srv_mem_pool_size;
+extern ulint srv_lock_table_size;
+
+extern ulint srv_sim_disk_wait_pct;
+extern ulint srv_sim_disk_wait_len;
+extern ulint srv_sim_disk_wait_by_yield;
+extern ulint srv_sim_disk_wait_by_wait;
+
+extern ulint srv_measure_contention;
+extern ulint srv_measure_by_spin;
+
+extern ulint srv_print_thread_releases;
+extern ulint srv_print_lock_waits;
+extern ulint srv_print_buf_io;
+extern ulint srv_print_log_io;
+extern ulint srv_print_parsed_sql;
+extern ulint srv_print_latch_waits;
+
+extern ulint srv_test_nocache;
+extern ulint srv_test_cache_evict;
+
+extern ulint srv_test_extra_mutexes;
+extern ulint srv_test_sync;
+extern ulint srv_test_n_threads;
+extern ulint srv_test_n_loops;
+extern ulint srv_test_n_free_rnds;
+extern ulint srv_test_n_reserved_rnds;
+extern ulint srv_test_n_mutexes;
+extern ulint srv_test_array_size;
+
+extern ulint srv_activity_count;
+extern ulint srv_fatal_semaphore_wait_threshold;
+extern ulint srv_dml_needed_delay;
+
+extern ib_mutex_t* kernel_mutex_temp;
+# 227 "./include/srv0srv.h"
+extern const char* srv_io_thread_op_info[];
+extern const char* srv_io_thread_function[];
+
+
+extern ulint srv_log_write_requests;
+
+
+extern ulint srv_log_writes;
+
+
+extern ulint srv_os_log_written;
+
+
+extern ulint srv_os_log_pending_writes;
+
+
+
+extern ulint srv_log_waits;
+
+
+extern ulint srv_data_read;
+
+
+extern ulint srv_data_written;
+
+
+
+extern ulint srv_dblwr_writes;
+
+
+
+extern ulint srv_dblwr_pages_written;
+
+
+extern ulint srv_buf_pool_write_requests;
+
+
+
+
+extern ulint srv_buf_pool_wait_free;
+
+
+
+extern ulint srv_buf_pool_flushed;
+
+
+
+extern ulint srv_buf_pool_reads;
+
+
+extern ulint srv_read_ahead_seq;
+
+
+extern ulint srv_read_ahead_rnd;
+
+
+
+
+
+extern char srv_use_legacy_cardinality_algorithm;
+
+
+typedef struct export_var_struct export_struc;
+
+extern export_struc export_vars;
+
+typedef struct srv_sys_struct srv_sys_t;
+
+
+extern srv_sys_t* srv_sys;
+# 338 "./include/srv0srv.h"
+ulint
+srv_boot(void);
+
+
+
+
+
+void
+srv_init(void);
+
+
+
+
+void
+srv_free(void);
+
+
+
+
+
+void
+srv_general_init(void);
+
+
+
+
+ulint
+srv_get_n_threads(void);
+
+
+
+
+ulint
+srv_get_thread_type(void);
+
+
+
+
+
+void
+srv_set_io_thread_op_info(
+
+ ulint i,
+ const char* str);
+
+
+
+
+
+ulint
+srv_release_threads(
+
+
+
+
+ ulint type,
+ ulint n);
+
+
+
+
+void*
+
+
+
+srv_master_thread(
+
+
+ void* arg);
+# 415 "./include/srv0srv.h"
+void
+srv_active_wake_master_thread(void);
+
+
+
+
+void
+srv_wake_master_thread(void);
+
+
+
+
+
+void
+srv_conc_enter_innodb(
+
+ trx_t* trx);
+
+
+
+
+
+void
+srv_conc_force_enter_innodb(
+
+ trx_t* trx);
+
+
+
+
+
+void
+srv_conc_force_exit_innodb(
+
+ trx_t* trx);
+
+
+
+
+void
+srv_conc_exit_innodb(
+
+ trx_t* trx);
+# 466 "./include/srv0srv.h"
+void
+srv_suspend_mysql_thread(
+
+ que_thr_t* thr);
+
+
+
+
+
+void
+srv_release_mysql_thread_if_suspended(
+
+ que_thr_t* thr);
+
+
+
+
+
+
+void*
+
+
+
+srv_lock_timeout_and_monitor_thread(
+
+
+ void* arg);
+
+
+
+
+
+
+void*
+
+
+
+srv_error_monitor_thread(
+
+
+ void* arg);
+
+
+
+
+void
+srv_printf_innodb_monitor(
+
+ FILE* file,
+ ulint* trx_start,
+
+ ulint* trx_end);
+
+
+
+
+
+void
+srv_export_innodb_status(void);
+# 546 "./include/srv0srv.h"
+typedef struct srv_slot_struct srv_slot_t;
+
+
+typedef srv_slot_t srv_table_t;
+
+
+struct export_var_struct{
+ ulint innodb_data_pending_reads;
+ ulint innodb_data_pending_writes;
+ ulint innodb_data_pending_fsyncs;
+ ulint innodb_data_fsyncs;
+ ulint innodb_data_read;
+ ulint innodb_data_writes;
+ ulint innodb_data_written;
+ ulint innodb_data_reads;
+ ulint innodb_dict_tables;
+ ulint innodb_buffer_pool_pages_total;
+ ulint innodb_buffer_pool_pages_data;
+ ulint innodb_buffer_pool_pages_dirty;
+ ulint innodb_buffer_pool_pages_misc;
+ ulint innodb_buffer_pool_pages_free;
+
+
+
+ ulint innodb_buffer_pool_read_requests;
+ ulint innodb_buffer_pool_reads;
+ ulint innodb_buffer_pool_wait_free;
+ ulint innodb_buffer_pool_pages_flushed;
+ ulint innodb_buffer_pool_write_requests;
+ ulint innodb_buffer_pool_read_ahead_seq;
+ ulint innodb_buffer_pool_read_ahead_rnd;
+ ulint innodb_dblwr_pages_written;
+ ulint innodb_dblwr_writes;
+ ulint innodb_log_waits;
+ ulint innodb_log_write_requests;
+ ulint innodb_log_writes;
+ ulint innodb_os_log_written;
+ ulint innodb_os_log_fsyncs;
+ ulint innodb_os_log_pending_writes;
+ ulint innodb_os_log_pending_fsyncs;
+ ulint innodb_page_size;
+ ulint innodb_pages_created;
+ ulint innodb_pages_read;
+ ulint innodb_pages_written;
+ ulint innodb_row_lock_waits;
+ ulint innodb_row_lock_current_waits;
+ ib_longlong innodb_row_lock_time;
+ ulint innodb_row_lock_time_avg;
+ ulint innodb_row_lock_time_max;
+ ulint innodb_rows_read;
+ ulint innodb_rows_inserted;
+ ulint innodb_rows_updated;
+ ulint innodb_rows_deleted;
+};
+
+
+struct srv_sys_struct{
+ os_event_t operational;
+
+
+ srv_table_t* threads;
+ struct { ulint count; que_thr_t * start; que_thr_t * end; }
+ tasks;
+ dict_index_t* dummy_ind1;
+
+ dict_index_t* dummy_ind2;
+
+};
+
+extern ulint srv_n_threads_active[];
+# 10 "./include/trx0sys.ic" 2
+# 1 "./include/trx0trx.h" 1
+# 15 "./include/trx0trx.h"
+# 1 "./include/usr0types.h" 1
+# 12 "./include/usr0types.h"
+typedef struct sess_struct sess_t;
+# 16 "./include/trx0trx.h" 2
+
+
+
+
+# 1 "./include/trx0xa.h" 1
+# 18 "./include/trx0xa.h"
+struct xid_t {
+ long formatID;
+ long gtrid_length;
+ long bqual_length;
+ char data[128];
+};
+typedef struct xid_t XID;
+# 21 "./include/trx0trx.h" 2
+
+extern ulint trx_n_mysql_transactions;
+
+
+
+static inline
+void
+trx_reset_new_rec_lock_info(
+
+ trx_t* trx);
+
+
+
+
+static inline
+void
+trx_register_new_rec_lock(
+
+ trx_t* trx,
+ dict_index_t* index);
+
+
+
+static inline
+ulint
+trx_new_rec_locks_contain(
+
+
+
+ trx_t* trx,
+ dict_index_t* index);
+
+
+
+void
+trx_search_latch_release_if_reserved(
+
+ trx_t* trx);
+
+
+void
+trx_set_detailed_error(
+
+ trx_t* trx,
+ const char* msg);
+
+
+
+
+void
+trx_set_detailed_error_from_file(
+
+ trx_t* trx,
+ FILE* file);
+
+
+
+void*
+trx_get_error_info(
+
+
+ trx_t* trx);
+
+
+
+trx_t*
+trx_create(
+
+
+ sess_t* sess);
+
+
+
+trx_t*
+trx_allocate_for_mysql(void);
+
+
+
+
+
+trx_t*
+trx_allocate_for_background(void);
+
+
+
+
+
+void
+trx_free(
+
+ trx_t* trx);
+
+
+
+void
+trx_free_for_mysql(
+
+ trx_t* trx);
+
+
+
+void
+trx_free_for_background(
+
+ trx_t* trx);
+
+
+
+
+
+
+
+void
+trx_lists_init_at_db_start(void);
+
+
+
+
+ulint
+trx_start(
+
+
+
+ trx_t* trx,
+ ulint rseg_id);
+
+
+
+
+
+ulint
+trx_start_low(
+
+
+ trx_t* trx,
+ ulint rseg_id);
+
+
+
+
+static inline
+void
+trx_start_if_not_started(
+
+ trx_t* trx);
+
+
+
+static inline
+void
+trx_start_if_not_started_low(
+
+ trx_t* trx);
+
+
+
+void
+trx_start_if_not_started_noninline(
+
+ trx_t* trx);
+
+
+
+void
+trx_commit_off_kernel(
+
+ trx_t* trx);
+
+
+
+
+
+void
+trx_cleanup_at_db_startup(
+
+ trx_t* trx);
+
+
+
+ulint
+trx_commit_for_mysql(
+
+
+ trx_t* trx);
+
+
+
+ulint
+trx_prepare_for_mysql(
+
+
+ trx_t* trx);
+
+
+
+
+int
+trx_recover_for_mysql(
+
+
+ XID* xid_list,
+ ulint len);
+
+
+
+trx_t *
+trx_get_trx_by_xid(
+
+
+ XID* xid);
+
+
+
+
+ulint
+trx_commit_complete_for_mysql(
+
+
+ trx_t* trx);
+
+
+
+void
+trx_mark_sql_stat_end(
+
+ trx_t* trx);
+
+
+
+
+
+read_view_t*
+trx_assign_read_view(
+
+
+ trx_t* trx);
+
+
+
+
+
+void
+trx_end_lock_wait(
+
+ trx_t* trx);
+
+
+
+ulint
+trx_sig_send(
+
+
+
+ trx_t* trx,
+ ulint type,
+ ulint sender,
+
+ que_thr_t* receiver_thr,
+
+
+ trx_savept_t* savept,
+
+ que_thr_t** next_thr);
+# 293 "./include/trx0trx.h"
+void
+trx_sig_reply(
+
+ trx_sig_t* sig,
+ que_thr_t** next_thr);
+
+
+
+
+
+
+
+void
+trx_sig_remove(
+
+ trx_t* trx,
+ trx_sig_t* sig);
+
+
+
+void
+trx_sig_start_handle(
+
+ trx_t* trx,
+ que_thr_t** next_thr);
+# 328 "./include/trx0trx.h"
+void
+trx_end_signal_handling(
+
+ trx_t* trx);
+
+
+
+commit_node_t*
+commit_node_create(
+
+
+ mem_heap_t* heap);
+
+
+
+que_thr_t*
+trx_commit_step(
+
+
+ que_thr_t* thr);
+
+
+
+
+
+
+
+void
+trx_print(
+
+ FILE* f,
+ trx_t* trx,
+ uint max_query_len);
+
+
+
+
+
+
+ulint
+trx_is_interrupted(
+
+
+ trx_t* trx);
+
+
+
+
+
+
+struct trx_sig_struct{
+ ulint type;
+ ulint state;
+
+ ulint sender;
+
+ que_thr_t* receiver;
+
+
+ trx_savept_t savept;
+ struct { trx_sig_t * prev; trx_sig_t * next; }
+ signals;
+
+ struct { trx_sig_t * prev; trx_sig_t * next; }
+ reply_signals;
+
+};
+
+
+
+
+
+
+
+struct trx_struct{
+ ulint magic_n;
+
+
+ const char* op_info;
+
+
+ ulint type;
+ ulint conc_state;
+
+
+
+ time_t start_time;
+
+
+ ulint isolation_level;
+ ulint check_foreigns;
+
+
+
+ ulint check_unique_secondary;
+
+
+
+
+
+
+ dulint id;
+ XID xid;
+
+
+ ulint support_xa;
+
+
+
+
+ dulint no;
+
+
+ ulint flush_log_later;
+
+
+
+ ulint must_flush_log_later;
+
+
+
+
+
+ dulint commit_lsn;
+ ulint dict_operation;
+
+
+
+
+ dulint table_id;
+
+
+ int active_trans;
+
+
+ void* mysql_thd;
+
+ char** mysql_query_str;
+
+
+ const char* mysql_log_file_name;
+
+
+
+
+ ib_longlong mysql_log_offset;
+
+
+ const char* mysql_master_log_file_name;
+
+
+
+
+
+
+ ib_longlong mysql_master_log_pos;
+
+
+
+
+
+
+ char* repl_wait_binlog_name;
+
+
+
+
+
+
+
+ ib_longlong repl_wait_binlog_pos;
+
+
+ os_thread_id_t mysql_thread_id;
+
+ ulint mysql_process_no;
+
+
+
+ ulint n_mysql_tables_in_use;
+
+
+ ulint mysql_n_tables_locked;
+
+
+
+ ulint dict_operation_lock_mode;
+
+
+
+ ulint has_search_latch;
+
+
+ ulint search_latch_timeout;
+# 532 "./include/trx0trx.h"
+ ulint declared_to_be_inside_innodb;
+
+
+
+
+ ulint n_tickets_to_enter_innodb;
+
+
+
+
+
+ ib_lock_t* auto_inc_lock;
+
+
+ dict_index_t* new_rec_locks[2];
+# 558 "./include/trx0trx.h"
+ struct { trx_t * prev; trx_t * next; }
+ trx_list;
+ struct { trx_t * prev; trx_t * next; }
+ mysql_trx_list;
+
+
+ ulint error_state;
+
+
+
+
+ void* error_info;
+
+
+ sess_t* sess;
+ ulint que_state;
+
+ que_t* graph;
+
+
+
+
+
+ ulint n_active_thrs;
+ ulint handling_signals;
+
+ que_t* graph_before_signal_handling;
+
+
+
+
+ trx_sig_t sig;
+
+ struct { ulint count; trx_sig_t * start; trx_sig_t * end; }
+ signals;
+
+ struct { ulint count; trx_sig_t * start; trx_sig_t * end; }
+ reply_signals;
+
+
+
+
+
+ ib_lock_t* wait_lock;
+
+
+
+ ulint was_chosen_as_deadlock_victim;
+
+
+
+
+
+ time_t wait_started;
+ struct { ulint count; que_thr_t * start; que_thr_t * end; }
+ wait_thrs;
+
+
+ ulint deadlock_mark;
+
+
+ mem_heap_t* lock_heap;
+
+ struct { ulint count; ib_lock_t * start; ib_lock_t * end; }
+ trx_locks;
+
+ mem_heap_t* global_read_view_heap;
+
+
+ read_view_t* global_read_view;
+
+
+ read_view_t* read_view;
+
+
+
+
+
+
+ struct { ulint count; trx_named_savept_t * start; trx_named_savept_t * end; }
+ trx_savepoints;
+
+
+ ib_mutex_t undo_mutex;
+
+
+
+
+
+ dulint undo_no;
+
+ trx_savept_t last_sql_stat_start;
+
+
+
+
+ trx_rseg_t* rseg;
+
+
+ trx_undo_t* insert_undo;
+
+ trx_undo_t* update_undo;
+
+ dulint roll_limit;
+
+ ulint pages_undone;
+
+ trx_undo_arr_t* undo_no_arr;
+
+
+
+ char detailed_error[256];
+
+
+ ulint io_reads;
+ ib_longlong io_read;
+ ulint io_reads_wait_timer;
+ ib_longlong lock_que_wait_ustarted;
+ ulint lock_que_wait_timer;
+ ulint innodb_que_wait_timer;
+ ulint distinct_page_access;
+
+ unsigned char* distinct_page_access_hash;
+ ulint take_stats;
+};
+# 759 "./include/trx0trx.h"
+struct commit_node_struct{
+ que_common_t common;
+ ulint state;
+};
+
+
+
+
+
+
+
+# 1 "./include/trx0trx.ic" 1
+# 11 "./include/trx0trx.ic"
+static inline
+void
+trx_start_if_not_started(
+
+ trx_t* trx)
+{
+ ;
+
+ if (trx->conc_state == 1) {
+
+ trx_start(trx, ((ulint)(-1)));
+ }
+}
+
+
+
+
+static inline
+void
+trx_start_if_not_started_low(
+
+ trx_t* trx)
+{
+ ;
+
+ if (trx->conc_state == 1) {
+
+ trx_start_low(trx, ((ulint)(-1)));
+ }
+}
+
+
+
+static inline
+void
+trx_reset_new_rec_lock_info(
+
+ trx_t* trx)
+{
+ trx->new_rec_locks[0] = ((void *)0);
+ trx->new_rec_locks[1] = ((void *)0);
+}
+
+
+
+
+
+static inline
+void
+trx_register_new_rec_lock(
+
+ trx_t* trx,
+ dict_index_t* index)
+
+{
+ if (trx->new_rec_locks[0] == ((void *)0)) {
+ trx->new_rec_locks[0] = index;
+
+ return;
+ }
+
+ if (trx->new_rec_locks[0] == index) {
+
+ return;
+ }
+
+ if (trx->new_rec_locks[1] != ((void *)0)) {
+
+ return;
+ }
+
+ trx->new_rec_locks[1] = index;
+}
+
+
+
+static inline
+ulint
+trx_new_rec_locks_contain(
+
+
+
+ trx_t* trx,
+ dict_index_t* index)
+{
+ return(trx->new_rec_locks[0] == index
+ || trx->new_rec_locks[1] == index);
+}
+# 771 "./include/trx0trx.h" 2
+# 11 "./include/trx0sys.ic" 2
+
+
+
+typedef unsigned char trx_sysf_rseg_t;
+# 30 "./include/trx0sys.ic"
+void
+trx_sys_flush_max_trx_id(void);
+
+
+
+
+static inline
+ulint
+trx_sys_hdr_page(
+
+
+ ulint space,
+ ulint page_no)
+{
+ if ((space == 0) && (page_no == 5)) {
+
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+static inline
+trx_rseg_t*
+trx_sys_get_nth_rseg(
+
+
+
+ trx_sys_t* sys,
+ ulint n)
+{
+
+
+
+ ;
+
+ return(sys->rseg_array[n]);
+}
+
+
+
+static inline
+void
+trx_sys_set_nth_rseg(
+
+ trx_sys_t* sys,
+ ulint n,
+ trx_rseg_t* rseg)
+
+{
+ ;
+
+ sys->rseg_array[n] = rseg;
+}
+
+
+
+static inline
+trx_sysf_t*
+trx_sysf_get(
+
+
+ mtr_t* mtr)
+{
+ trx_sysf_t* header;
+
+ ;
+
+ header = 38 + buf_page_get_gen( 0, 5, 2, ((void *)0), 10, "./include/trx0sys.ic", 101, mtr);
+
+
+
+
+
+
+ return(header);
+}
+
+
+
+
+static inline
+ulint
+trx_sysf_rseg_get_space(
+
+
+ trx_sysf_t* sys_header,
+ ulint i,
+ mtr_t* mtr)
+{
+
+
+
+ ;
+ ;
+
+ return(mtr_read_ulint(sys_header + (8 + 10)
+ + i * 8
+ + 0, ((unsigned char)4), mtr));
+}
+
+
+
+
+static inline
+ulint
+trx_sysf_rseg_get_page_no(
+
+
+
+ trx_sysf_t* sys_header,
+ ulint i,
+ mtr_t* mtr)
+{
+ ;
+
+
+
+ ;
+
+ return(mtr_read_ulint(sys_header + (8 + 10)
+ + i * 8
+ + 4, ((unsigned char)4), mtr));
+}
+
+
+
+
+static inline
+void
+trx_sysf_rseg_set_space(
+
+ trx_sysf_t* sys_header,
+ ulint i,
+ ulint space,
+ mtr_t* mtr)
+{
+
+
+
+ ;
+ ;
+
+ mlog_write_ulint(sys_header + (8 + 10)
+ + i * 8
+ + 0,
+ space,
+ ((unsigned char)4), mtr);
+}
+
+
+
+
+static inline
+void
+trx_sysf_rseg_set_page_no(
+
+ trx_sysf_t* sys_header,
+ ulint i,
+ ulint page_no,
+
+ mtr_t* mtr)
+{
+
+
+
+ ;
+ ;
+
+ mlog_write_ulint(sys_header + (8 + 10)
+ + i * 8
+ + 4,
+ page_no,
+ ((unsigned char)4), mtr);
+}
+
+
+
+
+
+static inline
+void
+trx_write_trx_id(
+
+ unsigned char* ptr,
+ dulint id)
+{
+ ;
+
+ mach_write_to_6(ptr, id);
+}
+
+
+
+
+
+static inline
+dulint
+trx_read_trx_id(
+
+
+ unsigned char* ptr)
+{
+ ;
+
+ return(mach_read_from_6(ptr));
+}
+
+
+
+static inline
+trx_t*
+trx_get_on_id(
+
+
+ dulint trx_id)
+{
+ trx_t* trx;
+
+
+
+
+
+ trx = (trx_sys->trx_list).start;
+
+ while (trx != ((void *)0)) {
+ if (0 == ut_dulint_cmp(trx_id, trx->id)) {
+
+ return(trx);
+ }
+
+ trx = (((trx)->trx_list).next);
+ }
+
+ return(((void *)0));
+}
+
+
+
+
+
+
+static inline
+dulint
+trx_list_get_min_trx_id(void)
+
+
+
+{
+ trx_t* trx;
+
+
+
+
+
+ trx = (trx_sys->trx_list).end;
+
+ if (trx == ((void *)0)) {
+
+ return(trx_sys->max_trx_id);
+ }
+
+ return(trx->id);
+}
+
+
+
+static inline
+ulint
+trx_is_active(
+
+
+ dulint trx_id)
+{
+ trx_t* trx;
+
+
+
+
+
+ if (ut_dulint_cmp(trx_id, trx_list_get_min_trx_id()) < 0) {
+
+ return((0));
+ }
+
+ if (ut_dulint_cmp(trx_id, trx_sys->max_trx_id) >= 0) {
+
+
+
+
+
+
+ return((1));
+ }
+
+ trx = trx_get_on_id(trx_id);
+ if (trx && (trx->conc_state == 2 ||
+ trx->conc_state == 4)) {
+
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+static inline
+dulint
+trx_sys_get_new_trx_id(void)
+
+
+{
+ dulint id;
+# 358 "./include/trx0sys.ic"
+ if (ut_dulint_get_low(trx_sys->max_trx_id)
+ % 256 == 0) {
+
+ trx_sys_flush_max_trx_id();
+ }
+
+ id = trx_sys->max_trx_id;
+
+ { if ((trx_sys->max_trx_id).low == 0xFFFFFFFFUL) { (trx_sys->max_trx_id).high = (trx_sys->max_trx_id).high + 1; (trx_sys->max_trx_id).low = 0; } else { (trx_sys->max_trx_id).low = (trx_sys->max_trx_id).low + 1; }};
+
+ return(id);
+}
+
+
+
+static inline
+dulint
+trx_sys_get_new_trx_no(void)
+
+
+{
+
+
+
+
+ return(trx_sys_get_new_trx_id());
+}
+# 458 "./include/trx0sys.h" 2
+# 16 "./include/trx0undo.h" 2
+
+
+
+
+
+static inline
+dulint
+trx_undo_build_roll_ptr(
+
+
+ ulint is_insert,
+ ulint rseg_id,
+ ulint page_no,
+ ulint offset);
+
+
+static inline
+void
+trx_undo_decode_roll_ptr(
+
+ dulint roll_ptr,
+ ulint* is_insert,
+ ulint* rseg_id,
+ ulint* page_no,
+ ulint* offset);
+
+
+static inline
+ulint
+trx_undo_roll_ptr_is_insert(
+
+
+ dulint roll_ptr);
+
+
+
+
+static inline
+void
+trx_write_roll_ptr(
+
+ unsigned char* ptr,
+ dulint roll_ptr);
+
+
+
+
+static inline
+dulint
+trx_read_roll_ptr(
+
+
+ unsigned char* ptr);
+
+
+static inline
+ib_page_t*
+trx_undo_page_get(
+
+
+ ulint space,
+ ulint page_no,
+ mtr_t* mtr);
+
+
+static inline
+ib_page_t*
+trx_undo_page_get_s_latched(
+
+
+ ulint space,
+ ulint page_no,
+ mtr_t* mtr);
+
+
+
+static inline
+trx_undo_rec_t*
+trx_undo_page_get_prev_rec(
+
+
+ trx_undo_rec_t* rec,
+ ulint page_no,
+ ulint offset);
+
+
+
+static inline
+trx_undo_rec_t*
+trx_undo_page_get_next_rec(
+
+
+ trx_undo_rec_t* rec,
+ ulint page_no,
+ ulint offset);
+
+
+
+static inline
+trx_undo_rec_t*
+trx_undo_page_get_last_rec(
+
+
+ ib_page_t* undo_page,
+ ulint page_no,
+ ulint offset);
+
+
+
+static inline
+trx_undo_rec_t*
+trx_undo_page_get_first_rec(
+
+
+ ib_page_t* undo_page,
+ ulint page_no,
+ ulint offset);
+
+
+
+trx_undo_rec_t*
+trx_undo_get_prev_rec(
+
+
+
+ trx_undo_rec_t* rec,
+ ulint page_no,
+ ulint offset,
+ mtr_t* mtr);
+
+
+
+trx_undo_rec_t*
+trx_undo_get_next_rec(
+
+
+
+ trx_undo_rec_t* rec,
+ ulint page_no,
+ ulint offset,
+ mtr_t* mtr);
+
+
+
+trx_undo_rec_t*
+trx_undo_get_first_rec(
+
+
+
+ ulint space,
+ ulint page_no,
+ ulint offset,
+ ulint mode,
+ mtr_t* mtr);
+
+
+
+ulint
+trx_undo_add_page(
+
+
+
+ trx_t* trx,
+ trx_undo_t* undo,
+ mtr_t* mtr);
+
+
+
+
+
+
+void
+trx_undo_truncate_end(
+
+ trx_t* trx,
+ trx_undo_t* undo,
+ dulint limit);
+
+
+
+
+
+void
+trx_undo_truncate_start(
+
+ trx_rseg_t* rseg,
+ ulint space,
+ ulint hdr_page_no,
+ ulint hdr_offset,
+ dulint limit);
+# 215 "./include/trx0undo.h"
+ulint
+trx_undo_lists_init(
+
+
+
+ trx_rseg_t* rseg);
+
+
+
+
+ulint
+trx_undo_assign_undo(
+
+
+
+
+
+
+ trx_t* trx,
+ ulint type);
+
+
+
+ib_page_t*
+trx_undo_set_state_at_finish(
+
+
+
+ trx_rseg_t* rseg,
+ trx_t* trx,
+ trx_undo_t* undo,
+ mtr_t* mtr);
+
+
+
+ib_page_t*
+trx_undo_set_state_at_prepare(
+
+
+
+ trx_t* trx,
+ trx_undo_t* undo,
+ mtr_t* mtr);
+
+
+
+
+
+
+void
+trx_undo_update_cleanup(
+
+ trx_t* trx,
+ ib_page_t* undo_page,
+
+ mtr_t* mtr);
+
+
+
+
+
+void
+trx_undo_insert_cleanup(
+
+ trx_t* trx);
+
+
+
+unsigned char*
+trx_undo_parse_page_init(
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+unsigned char*
+trx_undo_parse_page_header(
+
+
+ ulint type,
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+unsigned char*
+trx_undo_parse_discard_latest(
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ ib_page_t* page,
+ mtr_t* mtr);
+# 335 "./include/trx0undo.h"
+struct trx_undo_struct{
+
+ ulint id;
+
+ ulint type;
+
+ ulint state;
+
+ ulint del_marks;
+
+
+
+
+
+
+
+ dulint trx_id;
+
+ XID xid;
+
+ ulint dict_operation;
+ dulint table_id;
+
+ trx_rseg_t* rseg;
+
+ ulint space;
+
+ ulint hdr_page_no;
+
+ ulint hdr_offset;
+
+ ulint last_page_no;
+
+
+ ulint size;
+
+ ulint empty;
+
+ ulint top_page_no;
+
+
+
+ ulint top_offset;
+
+
+ dulint top_undo_no;
+ ib_page_t* guess_page;
+
+
+ struct { trx_undo_t * prev; trx_undo_t * next; } undo_list;
+
+
+};
+# 500 "./include/trx0undo.h"
+# 1 "./include/trx0undo.ic" 1
+# 13 "./include/trx0undo.ic"
+static inline
+dulint
+trx_undo_build_roll_ptr(
+
+
+ ulint is_insert,
+ ulint rseg_id,
+ ulint page_no,
+ ulint offset)
+{
+ ;
+ ;
+
+ return(ut_dulint_create(is_insert * 128 * 256 * 256
+ + rseg_id * 256 * 256
+ + (page_no / 256) / 256,
+ (page_no % (256 * 256)) * 256 * 256
+ + offset));
+}
+
+
+
+static inline
+void
+trx_undo_decode_roll_ptr(
+
+ dulint roll_ptr,
+ ulint* is_insert,
+ ulint* rseg_id,
+ ulint* page_no,
+ ulint* offset)
+{
+ ulint low;
+ ulint high;
+
+ ;
+ ;
+
+ high = ut_dulint_get_high(roll_ptr);
+ low = ut_dulint_get_low(roll_ptr);
+
+ *offset = low % (256 * 256);
+
+ *is_insert = high / (256 * 256 * 128);
+ *rseg_id = (high / (256 * 256)) % 128;
+
+ *page_no = (high % (256 * 256)) * 256 * 256
+ + (low / 256) / 256;
+}
+
+
+
+static inline
+ulint
+trx_undo_roll_ptr_is_insert(
+
+
+ dulint roll_ptr)
+{
+ ulint high;
+
+ ;
+ ;
+
+ high = ut_dulint_get_high(roll_ptr);
+
+ return(high / (256 * 256 * 128));
+}
+
+
+
+
+
+static inline
+void
+trx_write_roll_ptr(
+
+ unsigned char* ptr,
+ dulint roll_ptr)
+{
+ ;
+
+ mach_write_to_7(ptr, roll_ptr);
+}
+
+
+
+
+
+static inline
+dulint
+trx_read_roll_ptr(
+
+
+ unsigned char* ptr)
+{
+ ;
+
+ return(mach_read_from_7(ptr));
+}
+
+
+
+static inline
+ib_page_t*
+trx_undo_page_get(
+
+
+ ulint space,
+ ulint page_no,
+ mtr_t* mtr)
+{
+ ib_page_t* page;
+
+ page = buf_page_get_gen( space, page_no, 2, ((void *)0), 10, "./include/trx0undo.ic", 127, mtr);
+
+
+
+
+
+ return(page);
+}
+
+
+
+static inline
+ib_page_t*
+trx_undo_page_get_s_latched(
+
+
+ ulint space,
+ ulint page_no,
+ mtr_t* mtr)
+{
+ ib_page_t* page;
+
+ page = buf_page_get_gen( space, page_no, 1, ((void *)0), 10, "./include/trx0undo.ic", 149, mtr);
+
+
+
+
+
+ return(page);
+}
+
+
+
+
+static inline
+ulint
+trx_undo_page_get_start(
+
+
+ ib_page_t* undo_page,
+ ulint page_no,
+ ulint offset)
+{
+ ulint start;
+
+ if (page_no == buf_frame_get_page_no(undo_page)) {
+
+ start = mach_read_from_2(offset + undo_page
+ + 18);
+ } else {
+ start = 38 + (6 + (2 * 6));
+ }
+
+ return(start);
+}
+
+
+
+
+static inline
+ulint
+trx_undo_page_get_end(
+
+
+ ib_page_t* undo_page,
+ ulint page_no,
+ ulint offset)
+{
+ trx_ulogf_t* log_hdr;
+ ulint end;
+
+ if (page_no == buf_frame_get_page_no(undo_page)) {
+
+ log_hdr = undo_page + offset;
+
+ end = mach_read_from_2(log_hdr + 30);
+
+ if (end == 0) {
+ end = mach_read_from_2(undo_page + 38
+ + 4);
+ }
+ } else {
+ end = mach_read_from_2(undo_page + 38
+ + 4);
+ }
+
+ return(end);
+}
+
+
+
+
+static inline
+trx_undo_rec_t*
+trx_undo_page_get_prev_rec(
+
+
+ trx_undo_rec_t* rec,
+ ulint page_no,
+ ulint offset)
+{
+ ib_page_t* undo_page;
+ ulint start;
+
+ undo_page = buf_frame_align(rec);
+
+ start = trx_undo_page_get_start(undo_page, page_no, offset);
+
+ if (start + undo_page == rec) {
+
+ return(((void *)0));
+ }
+
+ return(undo_page + mach_read_from_2(rec - 2));
+}
+
+
+
+
+static inline
+trx_undo_rec_t*
+trx_undo_page_get_next_rec(
+
+
+ trx_undo_rec_t* rec,
+ ulint page_no,
+ ulint offset)
+{
+ ib_page_t* undo_page;
+ ulint end;
+ ulint next;
+
+ undo_page = buf_frame_align(rec);
+
+ end = trx_undo_page_get_end(undo_page, page_no, offset);
+
+ next = mach_read_from_2(rec);
+
+ if (next == end) {
+
+ return(((void *)0));
+ }
+
+ return(undo_page + next);
+}
+
+
+
+
+static inline
+trx_undo_rec_t*
+trx_undo_page_get_last_rec(
+
+
+ ib_page_t* undo_page,
+ ulint page_no,
+ ulint offset)
+{
+ ulint start;
+ ulint end;
+
+ start = trx_undo_page_get_start(undo_page, page_no, offset);
+ end = trx_undo_page_get_end(undo_page, page_no, offset);
+
+ if (start == end) {
+
+ return(((void *)0));
+ }
+
+ return(undo_page + mach_read_from_2(undo_page + end - 2));
+}
+
+
+
+
+static inline
+trx_undo_rec_t*
+trx_undo_page_get_first_rec(
+
+
+ ib_page_t* undo_page,
+ ulint page_no,
+ ulint offset)
+{
+ ulint start;
+ ulint end;
+
+ start = trx_undo_page_get_start(undo_page, page_no, offset);
+ end = trx_undo_page_get_end(undo_page, page_no, offset);
+
+ if (start == end) {
+
+ return(((void *)0));
+ }
+
+ return(undo_page + start);
+}
+# 501 "./include/trx0undo.h" 2
+# 11 "./include/dict0dict.ic" 2
+
+
+
+
+static inline
+dtype_t*
+dict_col_get_type(
+
+ dict_col_t* col)
+{
+ ;
+
+ return(&col->type);
+}
+# 52 "./include/dict0dict.ic"
+static inline
+ulint
+dict_col_get_no(
+
+ dict_col_t* col)
+{
+ ;
+
+ return(col->ind);
+}
+
+
+
+static inline
+ulint
+dict_col_get_clust_pos(
+
+ dict_col_t* col)
+{
+ ;
+
+ return(col->clust_pos);
+}
+
+
+
+static inline
+dict_index_t*
+dict_table_get_first_index(
+
+
+ dict_table_t* table)
+{
+ ;
+ ;
+
+ return((table->indexes).start);
+}
+
+
+
+static inline
+dict_index_t*
+dict_table_get_next_index(
+
+
+ dict_index_t* index)
+{
+ ;
+ ;
+
+ return((((index)->indexes).next));
+}
+
+
+
+
+static inline
+ulint
+dict_table_get_n_user_cols(
+
+
+
+ dict_table_t* table)
+{
+ ;
+ ;
+
+ return(table->n_cols - 4);
+}
+
+
+
+static inline
+ulint
+dict_table_get_n_sys_cols(
+
+
+
+ dict_table_t* table __attribute__((unused)))
+{
+ ;
+ ;
+ ;
+
+ return(4);
+}
+
+
+
+
+static inline
+ulint
+dict_table_get_n_cols(
+
+
+ dict_table_t* table)
+{
+ ;
+ ;
+
+ return(table->n_cols);
+}
+
+
+
+static inline
+dict_col_t*
+dict_table_get_nth_col(
+
+
+ dict_table_t* table,
+ ulint pos)
+{
+ ;
+ ;
+ ;
+
+ return((table->cols) + pos);
+}
+
+
+
+static inline
+dict_col_t*
+dict_table_get_sys_col(
+
+
+ dict_table_t* table,
+ ulint sys)
+{
+ dict_col_t* col;
+
+ ;
+ ;
+ ;
+
+ col = dict_table_get_nth_col(table, table->n_cols
+ - 4 + sys);
+ ;
+ ;
+
+ return(col);
+}
+
+
+
+static inline
+ulint
+dict_table_get_sys_col_no(
+
+
+ dict_table_t* table,
+ ulint sys)
+{
+ ;
+ ;
+ ;
+
+ return(table->n_cols - 4 + sys);
+}
+
+
+
+
+static inline
+ulint
+dict_index_get_n_fields(
+
+
+ dict_index_t* index)
+
+{
+ ;
+ ;
+
+ return(index->n_fields);
+}
+
+
+
+
+
+
+static inline
+ulint
+dict_index_get_n_unique(
+
+
+ dict_index_t* index)
+
+{
+ ;
+ ;
+ ;
+
+ return(index->n_uniq);
+}
+
+
+
+
+
+static inline
+ulint
+dict_index_get_n_unique_in_tree(
+
+
+ dict_index_t* index)
+
+{
+ ;
+ ;
+ ;
+
+ if (index->type & 1) {
+
+ return(dict_index_get_n_unique(index));
+ }
+
+ return(dict_index_get_n_fields(index));
+}
+
+
+
+
+
+
+static inline
+ulint
+dict_index_get_n_ordering_defined_by_user(
+
+
+ dict_index_t* index)
+
+{
+ return(index->n_user_defined_cols);
+}
+
+
+
+static inline
+dict_field_t*
+dict_index_get_nth_field(
+
+
+ dict_index_t* index,
+ ulint pos)
+{
+ ;
+ ;
+ ;
+
+ return((index->fields) + pos);
+}
+
+
+
+static inline
+ulint
+dict_index_get_sys_col_pos(
+
+
+
+ dict_index_t* index,
+ ulint type)
+{
+ dict_col_t* col;
+
+ ;
+ ;
+ ;
+
+ col = dict_table_get_sys_col(index->table, type);
+
+ if (index->type & 1) {
+
+ return(col->clust_pos);
+ }
+
+ return(dict_index_get_nth_col_pos(index,
+ dict_table_get_sys_col_no(index->table, type)));
+}
+
+
+
+static inline
+dict_tree_t*
+dict_index_get_tree(
+
+
+ dict_index_t* index)
+{
+ ;
+ ;
+
+ return(index->tree);
+}
+
+
+
+static inline
+ulint
+dict_field_get_order(
+
+ dict_field_t* field)
+{
+ ;
+
+ return(field->order);
+}
+
+
+
+static inline
+dict_col_t*
+dict_field_get_col(
+
+ dict_field_t* field)
+{
+ ;
+
+ return(field->col);
+}
+
+
+
+static inline
+dtype_t*
+dict_index_get_nth_type(
+
+
+ dict_index_t* index,
+ ulint pos)
+{
+ return(dict_col_get_type(dict_field_get_col(
+ dict_index_get_nth_field(index, pos))));
+}
+
+
+
+static inline
+ulint
+dict_index_get_nth_col_no(
+
+
+ dict_index_t* index,
+ ulint pos)
+{
+ return(dict_col_get_no(dict_field_get_col(
+ dict_index_get_nth_field(index, pos))));
+}
+
+
+
+static inline
+ulint
+dict_tree_get_space(
+
+
+ dict_tree_t* tree)
+{
+ ;
+ ;
+
+ return(tree->space);
+}
+
+
+
+static inline
+void
+dict_tree_set_space(
+
+ dict_tree_t* tree,
+ ulint space)
+{
+ ;
+ ;
+
+ tree->space = space;
+}
+
+
+
+static inline
+ulint
+dict_tree_get_page(
+
+
+ dict_tree_t* tree)
+{
+ ;
+ ;
+
+ return(tree->page);
+}
+
+
+
+static inline
+void
+dict_tree_set_page(
+
+ dict_tree_t* tree,
+ ulint page)
+{
+ ;
+ ;
+
+ tree->page = page;
+}
+
+
+
+static inline
+ulint
+dict_tree_get_type(
+
+
+ dict_tree_t* tree)
+{
+ ;
+ ;
+
+ return(tree->type);
+}
+
+
+
+static inline
+rw_lock_t*
+dict_tree_get_lock(
+
+
+ dict_tree_t* tree)
+{
+ ;
+ ;
+
+ return(&(tree->lock));
+}
+
+
+
+
+
+static inline
+ulint
+dict_tree_get_space_reserve(
+
+
+
+ dict_tree_t* tree)
+{
+ ;
+
+ tree = tree;
+
+ return((2 * 8192) / 16);
+}
+
+
+
+static inline
+dict_table_t*
+dict_table_check_if_in_cache_low(
+
+
+ const char* table_name)
+{
+ dict_table_t* table;
+ ulint table_fold;
+
+ ;
+
+
+
+
+
+ table_fold = ut_fold_string(table_name);
+
+ { (table) = (hash_get_nth_cell(dict_sys->table_hash, hash_calc_hash(table_fold, dict_sys->table_hash))->node); while ((table) != ((void *)0)) { if (ut_strcmp(table->name, table_name) == 0) { break; } else { (table) = ((table)->name_hash); } }};
+
+
+
+ if (table) {
+ { ; do { if (__builtin_expect(!((ulint)((dict_sys->table_LRU).count > 0)), (0))) { ut_dbg_assertion_failed("(dict_sys->table_LRU).count > 0", "./include/dict0dict.ic", (ulint) 539); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/dict0dict.ic", (ulint) 539); } while (0); } while (0); ((dict_sys->table_LRU).count)--; if (((table)->table_LRU).next != ((void *)0)) { ((((table)->table_LRU).next)->table_LRU).prev = ((table)->table_LRU).prev; } else { (dict_sys->table_LRU).end = ((table)->table_LRU).prev; } if (((table)->table_LRU).prev != ((void *)0)) { ((((table)->table_LRU).prev)->table_LRU).next = ((table)->table_LRU).next; } else { (dict_sys->table_LRU).start = ((table)->table_LRU).next; }};
+ { ; ((dict_sys->table_LRU).count)++; ((table)->table_LRU).next = (dict_sys->table_LRU).start; ((table)->table_LRU).prev = ((void *)0); if ((dict_sys->table_LRU).start != ((void *)0)) { (((dict_sys->table_LRU).start)->table_LRU).prev = (table); } (dict_sys->table_LRU).start = (table); if ((dict_sys->table_LRU).end == ((void *)0)) { (dict_sys->table_LRU).end = (table); }};
+ }
+
+ return(table);
+}
+
+
+
+
+static inline
+dict_table_t*
+dict_table_get_low(
+
+
+ const char* table_name)
+{
+ dict_table_t* table;
+
+ ;
+
+
+
+
+ table = dict_table_check_if_in_cache_low(table_name);
+
+ if (table == ((void *)0)) {
+ table = dict_load_table(table_name);
+ }
+
+ return(table);
+}
+
+
+
+static inline
+dict_table_t*
+dict_table_get_on_id_low(
+
+
+ dulint table_id,
+ trx_t* trx)
+{
+ dict_table_t* table;
+ ulint fold;
+
+
+
+
+ trx = trx;
+
+
+ fold = ut_fold_dulint(table_id);
+
+ { (table) = (hash_get_nth_cell(dict_sys->table_id_hash, hash_calc_hash(fold, dict_sys->table_id_hash))->node); while ((table) != ((void *)0)) { if (ut_dulint_cmp(table->id, table_id) == 0) { break; } else { (table) = ((table)->id_hash); } }};
+
+ if (table == ((void *)0)) {
+ table = dict_load_table_on_id(table_id);
+ }
+
+ if (table != ((void *)0)) {
+ table->mem_fix++;
+
+
+ { ; do { if (__builtin_expect(!((ulint)((dict_sys->table_LRU).count > 0)), (0))) { ut_dbg_assertion_failed("(dict_sys->table_LRU).count > 0", "./include/dict0dict.ic", (ulint) 603); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/dict0dict.ic", (ulint) 603); } while (0); } while (0); ((dict_sys->table_LRU).count)--; if (((table)->table_LRU).next != ((void *)0)) { ((((table)->table_LRU).next)->table_LRU).prev = ((table)->table_LRU).prev; } else { (dict_sys->table_LRU).end = ((table)->table_LRU).prev; } if (((table)->table_LRU).prev != ((void *)0)) { ((((table)->table_LRU).prev)->table_LRU).next = ((table)->table_LRU).next; } else { (dict_sys->table_LRU).start = ((table)->table_LRU).next; }};
+ { ; ((dict_sys->table_LRU).count)++; ((table)->table_LRU).next = (dict_sys->table_LRU).start; ((table)->table_LRU).prev = ((void *)0); if ((dict_sys->table_LRU).start != ((void *)0)) { (((dict_sys->table_LRU).start)->table_LRU).prev = (table); } (dict_sys->table_LRU).start = (table); if ((dict_sys->table_LRU).end == ((void *)0)) { (dict_sys->table_LRU).end = (table); }};
+
+
+ }
+
+
+
+ return(table);
+}
+
+
+
+static inline
+void
+dict_table_release(
+
+ dict_table_t* table)
+{
+ mutex_enter_func((&(dict_sys->mutex)), "./include/dict0dict.ic", 622);
+
+ table->mem_fix--;
+
+ mutex_exit(&(dict_sys->mutex));
+}
+
+
+
+static inline
+dict_index_t*
+dict_table_get_index(
+
+
+ dict_table_t* table,
+ const char* name)
+{
+ dict_index_t* index = ((void *)0);
+
+ index = dict_table_get_first_index(table);
+
+ while (index != ((void *)0)) {
+ if (ut_strcmp(name, index->name) == 0) {
+
+ break;
+ }
+
+ index = dict_table_get_next_index(index);
+ }
+
+ return(index);
+}
+# 987 "./include/dict0dict.h" 2
+# 15 "./include/btr0btr.h" 2
+
+# 1 "./include/page0cur.h" 1
+# 15 "./include/page0cur.h"
+# 1 "./include/page0page.h" 1
+# 19 "./include/page0page.h"
+# 1 "./include/rem0rec.h" 1
+# 47 "./include/rem0rec.h"
+static inline
+ulint
+rec_get_next_offs(
+
+
+
+ rec_t* rec,
+ ulint comp);
+
+
+
+static inline
+void
+rec_set_next_offs(
+
+ rec_t* rec,
+ ulint comp,
+ ulint next);
+
+
+
+static inline
+ulint
+rec_get_n_fields_old(
+
+
+ rec_t* rec);
+
+
+
+static inline
+ulint
+rec_get_n_fields(
+
+
+ rec_t* rec,
+ dict_index_t* index);
+
+
+
+static inline
+ulint
+rec_get_n_owned(
+
+
+ rec_t* rec,
+ ulint comp);
+
+
+
+static inline
+void
+rec_set_n_owned(
+
+ rec_t* rec,
+ ulint comp,
+ ulint n_owned);
+
+
+
+static inline
+ulint
+rec_get_info_bits(
+
+
+ rec_t* rec,
+ ulint comp);
+
+
+static inline
+void
+rec_set_info_bits(
+
+ rec_t* rec,
+ ulint comp,
+ ulint bits);
+
+
+static inline
+ulint
+rec_get_status(
+
+
+ rec_t* rec);
+
+
+
+static inline
+void
+rec_set_status(
+
+ rec_t* rec,
+ ulint bits);
+
+
+
+
+static inline
+ulint
+rec_get_info_and_status_bits(
+
+
+ rec_t* rec,
+ ulint comp);
+
+
+
+static inline
+void
+rec_set_info_and_status_bits(
+
+ rec_t* rec,
+ ulint comp,
+ ulint bits);
+
+
+
+static inline
+ulint
+rec_get_deleted_flag(
+
+
+ rec_t* rec,
+ ulint comp);
+
+
+static inline
+void
+rec_set_deleted_flag(
+
+ rec_t* rec,
+ ulint comp,
+ ulint flag);
+
+
+static inline
+ulint
+rec_get_node_ptr_flag(
+
+
+ rec_t* rec);
+
+
+
+static inline
+ulint
+rec_get_heap_no(
+
+
+ rec_t* rec,
+ ulint comp);
+
+
+
+static inline
+void
+rec_set_heap_no(
+
+ rec_t* rec,
+ ulint comp,
+ ulint heap_no);
+
+
+
+static inline
+ulint
+rec_get_1byte_offs_flag(
+
+
+ rec_t* rec);
+
+
+
+
+ulint*
+rec_get_offsets_func(
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ ulint* offsets,
+
+
+ ulint n_fields,
+
+ mem_heap_t** heap,
+ const char* file,
+ ulint line);
+
+
+
+
+
+
+static inline
+ulint
+rec_offs_validate(
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets);
+
+
+
+static inline
+void
+rec_offs_make_valid(
+
+ rec_t* rec,
+ dict_index_t* index,
+ ulint* offsets);
+
+
+
+
+
+unsigned char*
+rec_get_nth_field_old(
+
+
+ rec_t* rec,
+ ulint n,
+ ulint* len);
+
+
+
+
+
+static inline
+ulint
+rec_get_nth_field_size(
+
+
+ rec_t* rec,
+ ulint n);
+
+
+
+static inline
+unsigned char*
+rec_get_nth_field(
+
+
+ rec_t* rec,
+ const ulint* offsets,
+ ulint n,
+ ulint* len);
+
+
+
+
+static inline
+ulint
+rec_offs_comp(
+
+
+ const ulint* offsets);
+
+
+static inline
+ulint
+rec_offs_nth_extern(
+
+
+ const ulint* offsets,
+ ulint n);
+
+
+static inline
+ulint
+rec_offs_nth_sql_null(
+
+
+ const ulint* offsets,
+ ulint n);
+
+
+static inline
+ulint
+rec_offs_nth_size(
+
+
+ const ulint* offsets,
+ ulint n);
+
+
+
+
+static inline
+ulint
+rec_offs_any_extern(
+
+
+ const ulint* offsets);
+
+
+static inline
+void
+rec_set_nth_field_extern_bit(
+
+ rec_t* rec,
+ dict_index_t* index,
+ ulint i,
+ ulint val,
+ mtr_t* mtr);
+
+
+
+
+
+void
+rec_set_field_extern_bits(
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* vec,
+ ulint n_fields,
+ mtr_t* mtr);
+# 374 "./include/rem0rec.h"
+static inline
+void
+rec_set_nth_field(
+
+ rec_t* rec,
+ const ulint* offsets,
+ ulint n,
+ const void* data,
+ ulint len);
+
+
+
+
+
+static inline
+ulint
+rec_get_data_size_old(
+
+
+ rec_t* rec);
+
+
+static inline
+ulint
+rec_offs_n_fields(
+
+
+ const ulint* offsets);
+
+
+
+
+
+static inline
+ulint
+rec_offs_data_size(
+
+
+ const ulint* offsets);
+
+
+
+
+static inline
+ulint
+rec_offs_extra_size(
+
+
+ const ulint* offsets);
+
+
+static inline
+ulint
+rec_offs_size(
+
+
+ const ulint* offsets);
+
+
+static inline
+unsigned char*
+rec_get_start(
+
+
+ rec_t* rec,
+ const ulint* offsets);
+
+
+static inline
+unsigned char*
+rec_get_end(
+
+
+ rec_t* rec,
+ const ulint* offsets);
+
+
+static inline
+rec_t*
+rec_copy(
+
+
+ void* buf,
+ const rec_t* rec,
+ const ulint* offsets);
+
+
+
+
+rec_t*
+rec_copy_prefix_to_buf(
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ ulint n_fields,
+ unsigned char** buf,
+
+ ulint* buf_size);
+
+
+static inline
+ulint
+rec_fold(
+
+
+ rec_t* rec,
+ const ulint* offsets,
+
+ ulint n_fields,
+
+ ulint n_bytes,
+
+ dulint tree_id);
+
+
+
+
+rec_t*
+rec_convert_dtuple_to_rec(
+
+
+
+ unsigned char* buf,
+
+ dict_index_t* index,
+ dtuple_t* dtuple);
+
+
+
+static inline
+ulint
+rec_get_converted_extra_size(
+
+
+ ulint data_size,
+ ulint n_fields)
+ __attribute__((const));
+
+
+
+static inline
+ulint
+rec_get_converted_size(
+
+
+ dict_index_t* index,
+ dtuple_t* dtuple);
+
+
+
+
+void
+rec_copy_prefix_to_dtuple(
+
+ dtuple_t* tuple,
+ rec_t* rec,
+ dict_index_t* index,
+ ulint n_fields,
+ mem_heap_t* heap);
+
+
+
+ulint
+rec_validate(
+
+
+ rec_t* rec,
+ const ulint* offsets);
+
+
+
+void
+rec_print_old(
+
+ FILE* file,
+ rec_t* rec);
+
+
+
+void
+rec_print_new(
+
+ FILE* file,
+ rec_t* rec,
+ const ulint* offsets);
+
+
+
+void
+rec_print(
+
+ FILE* file,
+ rec_t* rec,
+ dict_index_t* index);
+# 582 "./include/rem0rec.h"
+# 1 "./include/rem0rec.ic" 1
+# 134 "./include/rem0rec.ic"
+void
+rec_set_nth_field_null_bit(
+
+ rec_t* rec,
+ ulint i,
+ ulint val);
+
+
+
+
+void
+rec_set_nth_field_sql_null(
+
+ rec_t* rec,
+ ulint n);
+
+
+
+
+void
+rec_set_nth_field_extern_bit_old(
+
+ rec_t* rec,
+ ulint i,
+ ulint val,
+ mtr_t* mtr);
+
+
+
+
+
+void
+rec_set_nth_field_extern_bit_new(
+
+ rec_t* rec,
+ dict_index_t* index,
+ ulint ith,
+ ulint val,
+ mtr_t* mtr);
+
+
+
+
+
+static inline
+ulint
+rec_get_bit_field_1(
+
+ rec_t* rec,
+ ulint offs,
+ ulint mask,
+ ulint shift)
+{
+ ;
+
+ return((mach_read_from_1(rec - offs) & mask) >> shift);
+}
+
+
+
+static inline
+void
+rec_set_bit_field_1(
+
+ rec_t* rec,
+ ulint val,
+ ulint offs,
+ ulint mask,
+ ulint shift)
+{
+ ;
+ ;
+ ;
+ ;
+ ;
+ ;
+
+ mach_write_to_1(rec - offs,
+ (mach_read_from_1(rec - offs) & ~mask)
+ | (val << shift));
+}
+
+
+
+static inline
+ulint
+rec_get_bit_field_2(
+
+ rec_t* rec,
+ ulint offs,
+ ulint mask,
+ ulint shift)
+{
+ ;
+
+ return((mach_read_from_2(rec - offs) & mask) >> shift);
+}
+
+
+
+static inline
+void
+rec_set_bit_field_2(
+
+ rec_t* rec,
+ ulint val,
+ ulint offs,
+ ulint mask,
+ ulint shift)
+{
+ ;
+ ;
+ ;
+ ;
+ ;
+ ;
+ ;
+ ;
+
+ mach_write_to_2(rec - offs,
+ (mach_read_from_2(rec - offs) & ~mask)
+ | (val << shift));
+}
+
+
+
+
+static inline
+ulint
+rec_get_next_offs(
+
+
+
+ rec_t* rec,
+ ulint comp)
+{
+ ulint field_value;
+
+ ;
+ ;
+
+ field_value = mach_read_from_2(rec - 2);
+
+ if (comp) {
+# 288 "./include/rem0rec.ic"
+ ;
+
+
+
+
+
+ if (field_value == 0) {
+
+ return(0);
+ }
+
+ return(ut_align_offset(rec + field_value, (2 * 8192)));
+ } else {
+ ;
+
+ return(field_value);
+ }
+}
+
+
+
+
+static inline
+void
+rec_set_next_offs(
+
+ rec_t* rec,
+ ulint comp,
+ ulint next)
+{
+ ;
+ ;
+ ;
+ ;
+
+ if (comp) {
+ ulint field_value;
+
+ if (next) {
+
+
+
+
+ field_value = (ulint)((lint)next
+ - (lint)ut_align_offset(rec, (2 * 8192)));
+ field_value &= 0xFFFFUL;
+ } else {
+ field_value = 0;
+ }
+
+ mach_write_to_2(rec - 2, field_value);
+ } else {
+ mach_write_to_2(rec - 2, next);
+ }
+}
+
+
+
+
+static inline
+ulint
+rec_get_n_fields_old(
+
+
+ rec_t* rec)
+{
+ ulint ret;
+
+ ;
+
+ ret = rec_get_bit_field_2(rec, 4,
+ 0x7FEUL, 1);
+ ;
+ ;
+
+ return(ret);
+}
+
+
+
+
+static inline
+void
+rec_set_n_fields_old(
+
+ rec_t* rec,
+ ulint n_fields)
+{
+ ;
+ ;
+ ;
+
+ rec_set_bit_field_2(rec, n_fields, 4,
+ 0x7FEUL, 1);
+}
+
+
+
+static inline
+ulint
+rec_get_status(
+
+
+ rec_t* rec)
+{
+ ulint ret;
+
+ ;
+
+ ret = rec_get_bit_field_1(rec, 3,
+ 0x7UL, 0);
+ ;
+
+ return(ret);
+}
+
+
+
+
+static inline
+ulint
+rec_get_n_fields(
+
+
+ rec_t* rec,
+ dict_index_t* index)
+{
+ ;
+ ;
+ if (__builtin_expect(!index->table->comp, (0))) {
+ return(rec_get_n_fields_old(rec));
+ }
+ switch (rec_get_status(rec)) {
+ case 0:
+ return(dict_index_get_n_fields(index));
+ case 1:
+ return(dict_index_get_n_unique_in_tree(index) + 1);
+ case 2:
+ case 3:
+ return(1);
+ default:
+ do { ut_dbg_assertion_failed(0, "./include/rem0rec.ic", (ulint) 429); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ return(((ulint)(-1)));
+ }
+}
+
+
+
+
+static inline
+ulint
+rec_get_n_owned(
+
+
+ rec_t* rec,
+ ulint comp)
+{
+ ulint ret;
+
+ ;
+
+ ret = rec_get_bit_field_1(rec,
+ comp ? 5 : 6,
+ 0xFUL, 0);
+ ;
+
+ return(ret);
+}
+
+
+
+static inline
+void
+rec_set_n_owned(
+
+ rec_t* rec,
+ ulint comp,
+ ulint n_owned)
+{
+ ;
+ ;
+
+ rec_set_bit_field_1(rec, n_owned,
+ comp ? 5 : 6,
+ 0xFUL, 0);
+}
+
+
+
+static inline
+ulint
+rec_get_info_bits(
+
+
+ rec_t* rec,
+ ulint comp)
+{
+ ulint ret;
+
+ ;
+
+ ret = rec_get_bit_field_1(rec,
+ comp ? 5 : 6,
+ 0xF0UL, 0);
+ ;
+
+ return(ret);
+}
+
+
+
+static inline
+void
+rec_set_info_bits(
+
+ rec_t* rec,
+ ulint comp,
+ ulint bits)
+{
+ ;
+ ;
+
+ rec_set_bit_field_1(rec, bits,
+ comp ? 5 : 6,
+ 0xF0UL, 0);
+}
+
+
+
+static inline
+void
+rec_set_status(
+
+ rec_t* rec,
+ ulint bits)
+{
+ ;
+ ;
+
+ rec_set_bit_field_1(rec, bits, 3,
+ 0x7UL, 0);
+}
+
+
+
+
+static inline
+ulint
+rec_get_info_and_status_bits(
+
+
+ rec_t* rec,
+ ulint comp)
+{
+ ulint bits;
+
+
+
+
+ if (__builtin_expect(comp, ((ulint) 1 << 31))) {
+ bits = rec_get_info_bits(rec, (1)) | rec_get_status(rec);
+ } else {
+ bits = rec_get_info_bits(rec, (0));
+ ;
+ }
+ return(bits);
+}
+
+
+
+static inline
+void
+rec_set_info_and_status_bits(
+
+ rec_t* rec,
+ ulint comp,
+ ulint bits)
+{
+
+
+
+
+ if (comp) {
+ rec_set_status(rec, bits & 0x7UL);
+ } else {
+ ;
+ }
+ rec_set_info_bits(rec, comp, bits & ~0x7UL);
+}
+
+
+
+static inline
+ulint
+rec_get_deleted_flag(
+
+
+ rec_t* rec,
+ ulint comp)
+{
+ if (__builtin_expect(comp, ((ulint) 1 << 31))) {
+ return(__builtin_expect(rec_get_bit_field_1(rec, 5, 0x20UL, 0), (0)));
+
+
+ } else {
+ return(__builtin_expect(rec_get_bit_field_1(rec, 6, 0x20UL, 0), (0)));
+
+
+ }
+}
+
+
+
+static inline
+void
+rec_set_deleted_flag(
+
+ rec_t* rec,
+ ulint comp,
+ ulint flag)
+{
+ ulint val;
+
+ val = rec_get_info_bits(rec, comp);
+
+ if (flag) {
+ val |= 0x20UL;
+ } else {
+ val &= ~0x20UL;
+ }
+
+ rec_set_info_bits(rec, comp, val);
+}
+
+
+
+static inline
+ulint
+rec_get_node_ptr_flag(
+
+
+ rec_t* rec)
+{
+ return(1 == rec_get_status(rec));
+}
+
+
+
+
+static inline
+ulint
+rec_get_heap_no(
+
+
+ rec_t* rec,
+ ulint comp)
+{
+ ulint ret;
+
+ ;
+
+ ret = rec_get_bit_field_2(rec,
+ comp ? 4 : 5,
+ 0xFFF8UL, 3);
+ ;
+
+ return(ret);
+}
+
+
+
+static inline
+void
+rec_set_heap_no(
+
+ rec_t* rec,
+ ulint comp,
+ ulint heap_no)
+{
+ ;
+
+ rec_set_bit_field_2(rec, heap_no,
+ comp ? 4 : 5,
+ 0xFFF8UL, 3);
+}
+
+
+
+
+static inline
+ulint
+rec_get_1byte_offs_flag(
+
+
+ rec_t* rec)
+{
+
+
+
+
+ return(rec_get_bit_field_1(rec, 3, 0x1UL,
+ 0));
+}
+
+
+
+static inline
+void
+rec_set_1byte_offs_flag(
+
+ rec_t* rec,
+ ulint flag)
+{
+
+
+
+ ;
+
+ rec_set_bit_field_1(rec, flag, 3, 0x1UL,
+ 0);
+}
+
+
+
+
+
+static inline
+ulint
+rec_1_get_field_end_info(
+
+
+
+ rec_t* rec,
+ ulint n)
+{
+ ;
+ ;
+
+ return(mach_read_from_1(rec - (6 + n + 1)));
+}
+
+
+
+
+
+static inline
+ulint
+rec_2_get_field_end_info(
+
+
+
+ rec_t* rec,
+ ulint n)
+{
+ ;
+ ;
+
+ return(mach_read_from_2(rec - (6 + 2 * n + 2)));
+}
+# 764 "./include/rem0rec.ic"
+static inline
+ulint
+rec_offs_get_n_alloc(
+
+
+ const ulint* offsets)
+{
+ ulint n_alloc;
+ ;
+ n_alloc = offsets[0];
+ ;
+ return(n_alloc);
+}
+
+
+
+
+static inline
+void
+rec_offs_set_n_alloc(
+
+ ulint* offsets,
+ ulint n_alloc)
+{
+ ;
+ ;
+ offsets[0] = n_alloc;
+}
+
+
+
+static inline
+ulint
+rec_offs_n_fields(
+
+
+ const ulint* offsets)
+{
+ ulint n_fields;
+ ;
+ n_fields = offsets[1];
+ ;
+ ;
+ ;
+
+ return(n_fields);
+}
+
+
+
+static inline
+ulint
+rec_offs_validate(
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets)
+{
+ ulint i = rec_offs_n_fields(offsets);
+ ulint last = ((ulint)(-2));
+ ulint comp = *(offsets + 2) & ((ulint) 1 << 31);
+
+ if (rec) {
+ ;
+ if (!comp) {
+ do { if (__builtin_expect(!((ulint)(rec_get_n_fields_old(rec) >= i)), (0))) { ut_dbg_assertion_failed("rec_get_n_fields_old(rec) >= i", "./include/rem0rec.ic", (ulint) 830); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/rem0rec.ic", (ulint) 830); } while (0); } while (0);
+ }
+ }
+ if (index) {
+ ulint max_n_fields;
+ ;
+ max_n_fields = ut_max(
+ dict_index_get_n_fields(index),
+ dict_index_get_n_unique_in_tree(index) + 1);
+ if (comp && rec) {
+ switch (rec_get_status(rec)) {
+ case 0:
+ break;
+ case 1:
+ max_n_fields =
+ dict_index_get_n_unique_in_tree(index) + 1;
+ break;
+ case 2:
+ case 3:
+ max_n_fields = 1;
+ break;
+ default:
+ do { ut_dbg_assertion_failed(0, "./include/rem0rec.ic", (ulint) 852); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+ }
+
+ do { if (__builtin_expect(!((ulint)(!comp || index->n_def)), (0))) { ut_dbg_assertion_failed("!comp || index->n_def", "./include/rem0rec.ic", (ulint) 856); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/rem0rec.ic", (ulint) 856); } while (0); } while (0);
+ do { if (__builtin_expect(!((ulint)(!index->n_def || i <= max_n_fields)), (0))) { ut_dbg_assertion_failed("!index->n_def || i <= max_n_fields", "./include/rem0rec.ic", (ulint) 857); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/rem0rec.ic", (ulint) 857); } while (0); } while (0);
+ }
+ while (i--) {
+ ulint curr = (offsets + 2)[1 + i] & (((ulint) 1 << 30) - 1);
+ do { if (__builtin_expect(!((ulint)(curr <= last)), (0))) { ut_dbg_assertion_failed("curr <= last", "./include/rem0rec.ic", (ulint) 861); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/rem0rec.ic", (ulint) 861); } while (0); } while (0);
+ last = curr;
+ }
+ return((1));
+}
+
+
+
+static inline
+void
+rec_offs_make_valid(
+
+ rec_t* rec __attribute__((unused)),
+
+ dict_index_t* index __attribute__((unused)),
+
+ ulint* offsets __attribute__((unused)))
+
+{
+
+
+
+
+
+}
+
+
+
+
+static inline
+unsigned char*
+rec_get_nth_field(
+
+
+ rec_t* rec,
+ const ulint* offsets,
+ ulint n,
+ ulint* len)
+
+{
+ unsigned char* field;
+ ulint length;
+ ;
+ ;
+ ;
+ ;
+
+ if (__builtin_expect(n == 0, (0))) {
+ field = rec;
+ } else {
+ field = rec + ((offsets + 2)[n] & (((ulint) 1 << 30) - 1));
+ }
+
+ length = (offsets + 2)[1 + n];
+
+ if (length & ((ulint) 1 << 31)) {
+ length = 0xFFFFFFFF;
+ } else {
+ length &= (((ulint) 1 << 30) - 1);
+ length -= field - rec;
+ }
+
+ *len = length;
+ return(field);
+}
+
+
+
+
+static inline
+ulint
+rec_offs_comp(
+
+
+ const ulint* offsets)
+{
+ ;
+ return(*(offsets + 2) & ((ulint) 1 << 31));
+}
+
+
+
+static inline
+ulint
+rec_offs_nth_extern(
+
+
+ const ulint* offsets,
+ ulint n)
+{
+ ;
+ ;
+ return(__builtin_expect((offsets + 2)[1 + n] & ((ulint) 1 << 30), (0)));
+
+}
+
+
+
+static inline
+ulint
+rec_offs_nth_sql_null(
+
+
+ const ulint* offsets,
+ ulint n)
+{
+ ;
+ ;
+ return(__builtin_expect((offsets + 2)[1 + n] & ((ulint) 1 << 31), (0)));
+
+}
+
+
+
+static inline
+ulint
+rec_offs_nth_size(
+
+
+ const ulint* offsets,
+ ulint n)
+{
+ ;
+ ;
+ if (!n) {
+ return((offsets + 2)[1 + n] & (((ulint) 1 << 30) - 1));
+ }
+ return(((offsets + 2)[1 + n] - (offsets + 2)[n])
+ & (((ulint) 1 << 30) - 1));
+}
+
+
+
+
+static inline
+ulint
+rec_offs_any_extern(
+
+
+ const ulint* offsets)
+{
+ ulint i;
+ for (i = rec_offs_n_fields(offsets); i--; ) {
+ if (rec_offs_nth_extern(offsets, i)) {
+ return((1));
+ }
+ }
+ return((0));
+}
+
+
+
+static inline
+void
+rec_set_nth_field_extern_bit(
+
+ rec_t* rec,
+ dict_index_t* index,
+ ulint i,
+ ulint val,
+ mtr_t* mtr)
+
+
+{
+ if (__builtin_expect(index->table->comp, (1))) {
+ rec_set_nth_field_extern_bit_new(rec, index, i, val, mtr);
+ } else {
+ rec_set_nth_field_extern_bit_old(rec, i, val, mtr);
+ }
+}
+
+
+
+
+
+
+
+static inline
+ulint
+rec_1_get_prev_field_end_info(
+
+
+
+ rec_t* rec,
+ ulint n)
+{
+ ;
+ ;
+
+ return(mach_read_from_1(rec - (6 + n)));
+}
+
+
+
+
+
+static inline
+ulint
+rec_2_get_prev_field_end_info(
+
+
+
+ rec_t* rec,
+ ulint n)
+{
+ ;
+ ;
+
+ return(mach_read_from_2(rec - (6 + 2 * n)));
+}
+
+
+
+
+static inline
+void
+rec_1_set_field_end_info(
+
+ rec_t* rec,
+ ulint n,
+ ulint info)
+{
+ ;
+ ;
+
+ mach_write_to_1(rec - (6 + n + 1), info);
+}
+
+
+
+
+static inline
+void
+rec_2_set_field_end_info(
+
+ rec_t* rec,
+ ulint n,
+ ulint info)
+{
+ ;
+ ;
+
+ mach_write_to_2(rec - (6 + 2 * n + 2), info);
+}
+
+
+
+
+static inline
+ulint
+rec_1_get_field_start_offs(
+
+
+ rec_t* rec,
+ ulint n)
+{
+ ;
+ ;
+
+ if (n == 0) {
+
+ return(0);
+ }
+
+ return(rec_1_get_prev_field_end_info(rec, n)
+ & ~0x80UL);
+}
+
+
+
+
+static inline
+ulint
+rec_2_get_field_start_offs(
+
+
+ rec_t* rec,
+ ulint n)
+{
+ ;
+ ;
+
+ if (n == 0) {
+
+ return(0);
+ }
+
+ return(rec_2_get_prev_field_end_info(rec, n)
+ & ~(0x8000UL | 0x4000UL));
+}
+
+
+
+
+
+
+static inline
+ulint
+rec_get_field_start_offs(
+
+
+ rec_t* rec,
+ ulint n)
+{
+ ;
+ ;
+
+ if (n == 0) {
+
+ return(0);
+ }
+
+ if (rec_get_1byte_offs_flag(rec)) {
+
+ return(rec_1_get_field_start_offs(rec, n));
+ }
+
+ return(rec_2_get_field_start_offs(rec, n));
+}
+
+
+
+
+
+static inline
+ulint
+rec_get_nth_field_size(
+
+
+ rec_t* rec,
+ ulint n)
+{
+ ulint os;
+ ulint next_os;
+
+ os = rec_get_field_start_offs(rec, n);
+ next_os = rec_get_field_start_offs(rec, n + 1);
+
+ ;
+
+ return(next_os - os);
+}
+
+
+
+
+
+
+
+static inline
+void
+rec_set_nth_field(
+
+ rec_t* rec,
+ const ulint* offsets,
+ ulint n,
+ const void* data,
+
+ ulint len)
+{
+ unsigned char* data2;
+ ulint len2;
+
+ ;
+ ;
+
+ if (__builtin_expect(len == 0xFFFFFFFF, (0))) {
+ if (!rec_offs_nth_sql_null(offsets, n)) {
+ do { if (__builtin_expect(!((ulint)(!rec_offs_comp(offsets))), (0))) { ut_dbg_assertion_failed("!rec_offs_comp(offsets)", "./include/rem0rec.ic", (ulint) 1229); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/rem0rec.ic", (ulint) 1229); } while (0); } while (0);
+ rec_set_nth_field_sql_null(rec, n);
+ }
+
+ return;
+ }
+
+ data2 = rec_get_nth_field(rec, offsets, n, &len2);
+ if (len2 == 0xFFFFFFFF) {
+ ;
+ rec_set_nth_field_null_bit(rec, n, (0));
+ ;
+ } else {
+ ;
+ }
+
+ ut_memcpy(data2, data, len);
+}
+
+
+
+
+
+
+static inline
+ulint
+rec_get_data_size_old(
+
+
+ rec_t* rec)
+{
+ ;
+
+ return(rec_get_field_start_offs(rec, rec_get_n_fields_old(rec)));
+}
+
+
+
+static inline
+void
+rec_offs_set_n_fields(
+
+ ulint* offsets,
+ ulint n_fields)
+{
+ ;
+ ;
+ ;
+ ;
+
+ offsets[1] = n_fields;
+}
+
+
+
+
+
+
+static inline
+ulint
+rec_offs_data_size(
+
+
+ const ulint* offsets)
+{
+ ulint size;
+
+ ;
+ size = (offsets + 2)[rec_offs_n_fields(offsets)]
+ & (((ulint) 1 << 30) - 1);
+ ;
+ return(size);
+}
+
+
+
+
+
+static inline
+ulint
+rec_offs_extra_size(
+
+
+ const ulint* offsets)
+{
+ ulint size;
+ ;
+ size = *(offsets + 2) & ~((ulint) 1 << 31);
+ ;
+ return(size);
+}
+
+
+
+static inline
+ulint
+rec_offs_size(
+
+
+ const ulint* offsets)
+{
+ return(rec_offs_data_size(offsets) + rec_offs_extra_size(offsets));
+}
+
+
+
+static inline
+unsigned char*
+rec_get_end(
+
+
+ rec_t* rec,
+ const ulint* offsets)
+{
+ return(rec + rec_offs_data_size(offsets));
+}
+
+
+
+static inline
+unsigned char*
+rec_get_start(
+
+
+ rec_t* rec,
+ const ulint* offsets)
+{
+ return(rec - rec_offs_extra_size(offsets));
+}
+
+
+
+static inline
+rec_t*
+rec_copy(
+
+
+ void* buf,
+ const rec_t* rec,
+ const ulint* offsets)
+{
+ ulint extra_len;
+ ulint data_len;
+
+ ;
+ ;
+ ;
+
+ extra_len = rec_offs_extra_size(offsets);
+ data_len = rec_offs_data_size(offsets);
+
+ ut_memcpy(buf, rec - extra_len, extra_len + data_len);
+
+ return((unsigned char*)buf + extra_len);
+}
+
+
+
+
+static inline
+ulint
+rec_get_converted_extra_size(
+
+
+ ulint data_size,
+ ulint n_fields)
+{
+ if (data_size <= 0x7FUL) {
+
+ return(6 + n_fields);
+ }
+
+ return(6 + 2 * n_fields);
+}
+
+
+
+
+
+ulint
+rec_get_converted_size_new(
+
+
+ dict_index_t* index,
+ dtuple_t* dtuple);
+
+
+
+static inline
+ulint
+rec_get_converted_size(
+
+
+ dict_index_t* index,
+ dtuple_t* dtuple)
+{
+ ulint data_size;
+ ulint extra_size;
+
+ ;
+ ;
+ ;
+
+ ;
+
+
+
+
+
+
+ if (__builtin_expect(index->table->comp, (1))) {
+ return(rec_get_converted_size_new(index, dtuple));
+ }
+
+ data_size = dtuple_get_data_size(dtuple);
+
+ extra_size = rec_get_converted_extra_size(
+ data_size, dtuple_get_n_fields(dtuple));
+
+ return(data_size + extra_size);
+}
+
+
+
+
+static inline
+ulint
+rec_fold(
+
+
+ rec_t* rec,
+ const ulint* offsets,
+
+ ulint n_fields,
+
+ ulint n_bytes,
+
+ dulint tree_id)
+{
+ ulint i;
+ unsigned char* data;
+ ulint len;
+ ulint fold;
+ ulint n_fields_rec;
+
+ ;
+ ;
+ ;
+
+ n_fields_rec = rec_offs_n_fields(offsets);
+ ;
+ ;
+
+ if (n_fields > n_fields_rec) {
+ n_fields = n_fields_rec;
+ }
+
+ if (n_fields == n_fields_rec) {
+ n_bytes = 0;
+ }
+
+ fold = ut_fold_dulint(tree_id);
+
+ for (i = 0; i < n_fields; i++) {
+ data = rec_get_nth_field(rec, offsets, i, &len);
+
+ if (len != 0xFFFFFFFF) {
+ fold = ut_fold_ulint_pair(fold,
+ ut_fold_binary(data, len));
+ }
+ }
+
+ if (n_bytes > 0) {
+ data = rec_get_nth_field(rec, offsets, i, &len);
+
+ if (len != 0xFFFFFFFF) {
+ if (len > n_bytes) {
+ len = n_bytes;
+ }
+
+ fold = ut_fold_ulint_pair(fold,
+ ut_fold_binary(data, len));
+ }
+ }
+
+ return(fold);
+}
+# 583 "./include/rem0rec.h" 2
+# 20 "./include/page0page.h" 2
+# 33 "./include/page0page.h"
+typedef unsigned char page_header_t;
+# 114 "./include/page0page.h"
+typedef unsigned char page_dir_slot_t;
+typedef page_dir_slot_t page_dir_t;
+# 137 "./include/page0page.h"
+static inline
+dulint
+page_get_max_trx_id(
+
+ ib_page_t* page);
+
+
+
+void
+page_set_max_trx_id(
+
+ ib_page_t* page,
+ dulint trx_id);
+
+
+
+static inline
+void
+page_update_max_trx_id(
+
+ ib_page_t* page,
+ dulint trx_id);
+
+
+static inline
+ulint
+page_header_get_field(
+
+ ib_page_t* page,
+ ulint field);
+
+
+static inline
+void
+page_header_set_field(
+
+ ib_page_t* page,
+ ulint field,
+ ulint val);
+
+
+static inline
+unsigned char*
+page_header_get_ptr(
+
+
+ ib_page_t* page,
+ ulint field);
+
+
+static inline
+void
+page_header_set_ptr(
+
+ ib_page_t* page,
+ ulint field,
+ unsigned char* ptr);
+
+
+
+static inline
+void
+page_header_reset_last_insert(
+
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+static inline
+rec_t*
+page_get_infimum_rec(
+
+
+ ib_page_t* page);
+
+
+static inline
+rec_t*
+page_get_supremum_rec(
+
+
+ ib_page_t* page);
+
+
+
+
+rec_t*
+page_get_middle_rec(
+
+
+ ib_page_t* page);
+
+
+
+
+
+
+static inline
+int
+page_cmp_dtuple_rec_with_match(
+
+
+
+
+ dtuple_t* dtuple,
+ rec_t* rec,
+
+
+
+ const ulint* offsets,
+ ulint* matched_fields,
+
+
+ ulint* matched_bytes);
+
+
+
+
+
+
+static inline
+ulint
+page_get_n_recs(
+
+
+ ib_page_t* page);
+
+ulint
+page_get_n_recs_noninline(
+
+
+ ib_page_t* page);
+
+
+
+
+ulint
+page_rec_get_n_recs_before(
+
+
+ rec_t* rec);
+
+
+static inline
+ulint
+page_dir_get_n_heap(
+
+
+ ib_page_t* page);
+
+
+static inline
+void
+page_dir_set_n_heap(
+
+ ib_page_t* page,
+ ulint n_heap);
+
+
+static inline
+ulint
+page_dir_get_n_slots(
+
+
+ ib_page_t* page);
+
+
+static inline
+void
+page_dir_set_n_slots(
+
+
+ ib_page_t* page,
+ ulint n_slots);
+
+
+static inline
+page_dir_slot_t*
+page_dir_get_nth_slot(
+
+
+ ib_page_t* page,
+ ulint n);
+
+
+static inline
+ulint
+page_rec_check(
+
+
+ rec_t* rec);
+
+
+static inline
+rec_t*
+page_dir_slot_get_rec(
+
+
+ page_dir_slot_t* slot);
+
+
+static inline
+void
+page_dir_slot_set_rec(
+
+ page_dir_slot_t* slot,
+ rec_t* rec);
+
+
+static inline
+ulint
+page_dir_slot_get_n_owned(
+
+
+ page_dir_slot_t* slot);
+
+
+static inline
+void
+page_dir_slot_set_n_owned(
+
+ page_dir_slot_t* slot,
+ ulint n);
+
+
+
+
+
+
+static inline
+ulint
+page_dir_calc_reserved_space(
+
+ ulint n_recs);
+
+
+
+ulint
+page_dir_find_owner_slot(
+
+
+ rec_t* rec);
+
+
+static inline
+ulint
+page_is_comp(
+
+
+
+ ib_page_t* page);
+
+
+static inline
+ulint
+page_rec_is_comp(
+
+
+ const rec_t* rec);
+
+
+static inline
+rec_t*
+page_rec_get_next(
+
+
+ rec_t* rec);
+
+
+
+static inline
+void
+page_rec_set_next(
+
+ rec_t* rec,
+
+ rec_t* next);
+
+
+
+static inline
+rec_t*
+page_rec_get_prev(
+
+
+ rec_t* rec);
+
+
+
+static inline
+ulint
+page_rec_is_user_rec_low(
+
+
+ ulint offset);
+
+
+static inline
+ulint
+page_rec_is_supremum_low(
+
+
+ ulint offset);
+
+
+static inline
+ulint
+page_rec_is_infimum_low(
+
+
+ ulint offset);
+
+
+
+static inline
+ulint
+page_rec_is_user_rec(
+
+
+ const rec_t* rec);
+
+
+static inline
+ulint
+page_rec_is_supremum(
+
+
+ const rec_t* rec);
+
+
+static inline
+ulint
+page_rec_is_infimum(
+
+
+ const rec_t* rec);
+
+
+static inline
+rec_t*
+page_rec_find_owner_rec(
+
+
+ rec_t* rec);
+
+
+
+
+
+void
+page_rec_write_index_page_no(
+
+ rec_t* rec,
+ ulint i,
+ ulint page_no,
+ mtr_t* mtr);
+
+
+
+static inline
+ulint
+page_get_max_insert_size(
+
+
+ ib_page_t* page,
+ ulint n_recs);
+
+
+
+static inline
+ulint
+page_get_max_insert_size_after_reorganize(
+
+
+ ib_page_t* page,
+ ulint n_recs);
+
+
+static inline
+ulint
+page_get_free_space_of_empty(
+
+
+ ulint comp)
+ __attribute__((const));
+
+
+
+static inline
+ulint
+page_get_data_size(
+
+
+ ib_page_t* page);
+
+ulint
+page_get_data_size_noninline(
+
+
+ ib_page_t* page);
+
+
+
+unsigned char*
+page_mem_alloc(
+
+
+
+ ib_page_t* page,
+ ulint need,
+ dict_index_t* index,
+ ulint* heap_no);
+
+
+
+
+static inline
+void
+page_mem_free(
+
+ ib_page_t* page,
+ rec_t* rec,
+ const ulint* offsets);
+
+
+
+ib_page_t*
+page_create(
+
+
+ buf_frame_t* frame,
+
+ mtr_t* mtr,
+ ulint comp);
+
+
+
+
+void
+page_copy_rec_list_end_no_locks(
+
+ ib_page_t* new_page,
+ ib_page_t* page,
+ rec_t* rec,
+ dict_index_t* index,
+ mtr_t* mtr);
+
+
+
+
+
+void
+page_copy_rec_list_end(
+
+ ib_page_t* new_page,
+ ib_page_t* page,
+ rec_t* rec,
+ dict_index_t* index,
+ mtr_t* mtr);
+
+
+
+
+
+void
+page_copy_rec_list_start(
+
+ ib_page_t* new_page,
+ ib_page_t* page,
+ rec_t* rec,
+ dict_index_t* index,
+ mtr_t* mtr);
+
+
+
+
+void
+page_delete_rec_list_end(
+
+ ib_page_t* page,
+ rec_t* rec,
+ dict_index_t* index,
+ ulint n_recs,
+
+ ulint size,
+
+
+ mtr_t* mtr);
+
+
+
+
+void
+page_delete_rec_list_start(
+
+ ib_page_t* page,
+ rec_t* rec,
+ dict_index_t* index,
+ mtr_t* mtr);
+
+
+
+
+void
+page_move_rec_list_end(
+
+ ib_page_t* new_page,
+ ib_page_t* page,
+ rec_t* split_rec,
+ dict_index_t* index,
+ mtr_t* mtr);
+
+
+
+
+void
+page_move_rec_list_start(
+
+ ib_page_t* new_page,
+ ib_page_t* page,
+ rec_t* split_rec,
+ dict_index_t* index,
+ mtr_t* mtr);
+
+
+
+void
+page_dir_split_slot(
+
+ ib_page_t* page,
+ ulint slot_no);
+
+
+
+
+
+
+void
+page_dir_balance_slot(
+
+ ib_page_t* page,
+ ulint slot_no);
+
+
+
+unsigned char*
+page_parse_delete_rec_list(
+
+
+ unsigned char type,
+
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ dict_index_t* index,
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+unsigned char*
+page_parse_create(
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ ulint comp,
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+
+void
+page_rec_print(
+
+ rec_t* rec,
+ const ulint* offsets);
+
+
+
+
+void
+page_dir_print(
+
+ ib_page_t* page,
+ ulint pr_n);
+
+
+
+
+void
+page_print_list(
+
+ ib_page_t* page,
+ dict_index_t* index,
+ ulint pr_n);
+
+
+
+void
+page_header_print(
+
+ ib_page_t* page);
+
+
+
+
+void
+page_print(
+
+ ib_page_t* page,
+ dict_index_t* index,
+ ulint dn,
+
+ ulint rn);
+
+
+
+
+
+
+ulint
+page_rec_validate(
+
+
+ rec_t* rec,
+ const ulint* offsets);
+
+
+
+
+
+void
+page_check_dir(
+
+ ib_page_t* page);
+
+
+
+
+
+ulint
+page_simple_validate(
+
+
+ ib_page_t* page);
+
+
+
+ulint
+page_validate(
+
+
+ ib_page_t* page,
+ dict_index_t* index);
+
+
+
+
+rec_t*
+page_find_rec_with_heap_no(
+
+
+ ib_page_t* page,
+ ulint heap_no);
+
+
+
+
+
+
+
+# 1 "./include/page0page.ic" 1
+# 10 "./include/page0page.ic"
+# 1 "./include/rem0cmp.h" 1
+# 21 "./include/rem0cmp.h"
+ulint
+cmp_types_are_equal(
+
+
+
+ dtype_t* type1,
+ dtype_t* type2,
+ ulint check_charsets);
+
+
+
+static inline
+int
+cmp_data_data(
+
+
+
+ dtype_t* cur_type,
+ unsigned char* data1,
+
+ ulint len1,
+ unsigned char* data2,
+
+ ulint len2);
+
+
+
+
+int
+cmp_data_data_slow(
+
+
+
+ dtype_t* cur_type,
+ unsigned char* data1,
+
+ ulint len1,
+ unsigned char* data2,
+
+ ulint len2);
+
+
+
+static inline
+int
+cmp_dfield_dfield(
+
+
+
+ dfield_t* dfield1,
+ dfield_t* dfield2);
+# 81 "./include/rem0cmp.h"
+int
+cmp_dtuple_rec_with_match(
+
+
+
+
+
+
+ dtuple_t* dtuple,
+ rec_t* rec,
+
+
+
+ const ulint* offsets,
+ ulint* matched_fields,
+
+
+ ulint* matched_bytes);
+
+
+
+
+
+
+int
+cmp_dtuple_rec(
+
+
+
+
+ dtuple_t* dtuple,
+ rec_t* rec,
+ const ulint* offsets);
+
+
+
+
+ulint
+cmp_dtuple_is_prefix_of_rec(
+
+
+ dtuple_t* dtuple,
+ rec_t* rec,
+ const ulint* offsets);
+
+
+
+
+
+int
+cmp_rec_rec_with_match(
+
+
+
+
+ rec_t* rec1,
+ rec_t* rec2,
+ const ulint* offsets1,
+ const ulint* offsets2,
+ dict_index_t* index,
+ ulint* matched_fields,
+
+
+
+ ulint* matched_bytes);
+
+
+
+
+
+
+static inline
+int
+cmp_rec_rec(
+
+
+
+
+ rec_t* rec1,
+ rec_t* rec2,
+ const ulint* offsets1,
+ const ulint* offsets2,
+ dict_index_t* index);
+
+
+
+# 1 "./include/rem0cmp.ic" 1
+# 12 "./include/rem0cmp.ic"
+static inline
+int
+cmp_data_data(
+
+
+
+ dtype_t* cur_type,
+ unsigned char* data1,
+
+ ulint len1,
+ unsigned char* data2,
+
+ ulint len2)
+{
+ return(cmp_data_data_slow(cur_type, data1, len1, data2, len2));
+}
+
+
+
+
+static inline
+int
+cmp_dfield_dfield(
+
+
+
+ dfield_t* dfield1,
+ dfield_t* dfield2)
+{
+ ;
+
+ return(cmp_data_data(dfield_get_type(dfield1),
+ dfield_get_data(dfield1), dfield_get_len(dfield1),
+ dfield_get_data(dfield2), dfield_get_len(dfield2)));
+}
+
+
+
+
+static inline
+int
+cmp_rec_rec(
+
+
+
+
+ rec_t* rec1,
+ rec_t* rec2,
+ const ulint* offsets1,
+ const ulint* offsets2,
+ dict_index_t* index)
+{
+ ulint match_f = 0;
+ ulint match_b = 0;
+
+ return(cmp_rec_rec_with_match(rec1, rec2, offsets1, offsets2, index,
+ &match_f, &match_b));
+}
+# 168 "./include/rem0cmp.h" 2
+# 11 "./include/page0page.ic" 2
+# 20 "./include/page0page.ic"
+static inline
+dulint
+page_get_max_trx_id(
+
+ ib_page_t* page)
+{
+ ;
+
+ return(mach_read_from_8(page + 38 + 18));
+}
+
+
+
+
+static inline
+void
+page_update_max_trx_id(
+
+ ib_page_t* page,
+ dulint trx_id)
+{
+ ;
+
+ if (ut_dulint_cmp(page_get_max_trx_id(page), trx_id) < 0) {
+
+ page_set_max_trx_id(page, trx_id);
+ }
+}
+
+
+
+static inline
+ulint
+page_header_get_field(
+
+ ib_page_t* page,
+ ulint field)
+{
+ ;
+ ;
+
+ return(mach_read_from_2(page + 38 + field));
+}
+
+
+
+static inline
+void
+page_header_set_field(
+
+ ib_page_t* page,
+ ulint field,
+ ulint val)
+{
+ ;
+ ;
+ ;
+ ;
+
+ mach_write_to_2(page + 38 + field, val);
+}
+
+
+
+static inline
+unsigned char*
+page_header_get_ptr(
+
+
+ ib_page_t* page,
+ ulint field)
+{
+ ulint offs;
+
+ ;
+ ;
+
+
+
+ offs = page_header_get_field(page, field);
+
+ ;
+
+ if (offs == 0) {
+
+ return(((void *)0));
+ }
+
+ return(page + offs);
+}
+
+
+
+static inline
+void
+page_header_set_ptr(
+
+ ib_page_t* page,
+ ulint field,
+ unsigned char* ptr)
+{
+ ulint offs;
+
+ ;
+ ;
+
+
+
+ if (ptr == ((void *)0)) {
+ offs = 0;
+ } else {
+ offs = ptr - page;
+ }
+
+ ;
+
+ page_header_set_field(page, field, offs);
+}
+
+
+
+
+static inline
+void
+page_header_reset_last_insert(
+
+ ib_page_t* page,
+ mtr_t* mtr)
+{
+ ;
+
+ mlog_write_ulint(page + 38 + 10, 0,
+ ((unsigned char)2), mtr);
+}
+
+
+
+static inline
+ulint
+page_is_comp(
+
+
+
+ ib_page_t* page)
+{
+ return(__builtin_expect(page_header_get_field(page, 4) & 0x8000, 0x8000));
+
+}
+
+
+
+static inline
+ulint
+page_rec_is_comp(
+
+
+ const rec_t* rec)
+{
+ return(page_is_comp(ut_align_down((rec_t*) rec, (2 * 8192))));
+}
+
+
+
+static inline
+rec_t*
+page_get_infimum_rec(
+
+
+ ib_page_t* page)
+{
+ ;
+
+ if (page_is_comp(page)) {
+ return(page + ((38 + 36 + 2 * 10) + 5));
+ } else {
+ return(page + ((38 + 36 + 2 * 10) + 1 + 6));
+ }
+}
+
+
+
+static inline
+rec_t*
+page_get_supremum_rec(
+
+
+ ib_page_t* page)
+{
+ ;
+
+ if (page_is_comp(page)) {
+ return(page + ((38 + 36 + 2 * 10) + 2 * 5 + 8));
+ } else {
+ return(page + ((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8));
+ }
+}
+
+
+
+static inline
+ulint
+page_rec_is_user_rec_low(
+
+
+ ulint offset)
+{
+ ;
+# 245 "./include/page0page.ic"
+ ;
+
+ return(__builtin_expect(offset != ((38 + 36 + 2 * 10) + 2 * 5 + 8), (1))
+ && __builtin_expect(offset != ((38 + 36 + 2 * 10) + 5), (1))
+ && __builtin_expect(offset != ((38 + 36 + 2 * 10) + 1 + 6), (1))
+ && __builtin_expect(offset != ((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8), (1)));
+}
+
+
+
+static inline
+ulint
+page_rec_is_supremum_low(
+
+
+ ulint offset)
+{
+ ;
+ ;
+
+ return(__builtin_expect(offset == ((38 + 36 + 2 * 10) + 2 * 5 + 8), (0))
+ || __builtin_expect(offset == ((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8), (0)));
+}
+
+
+
+static inline
+ulint
+page_rec_is_infimum_low(
+
+
+ ulint offset)
+{
+ ;
+ ;
+
+ return(__builtin_expect(offset == ((38 + 36 + 2 * 10) + 5), (0))
+ || __builtin_expect(offset == ((38 + 36 + 2 * 10) + 1 + 6), (0)));
+}
+
+
+
+static inline
+ulint
+page_rec_is_user_rec(
+
+
+ const rec_t* rec)
+{
+ return(page_rec_is_user_rec_low(
+ ut_align_offset(rec, (2 * 8192))));
+}
+
+
+
+static inline
+ulint
+page_rec_is_supremum(
+
+
+ const rec_t* rec)
+{
+ return(page_rec_is_supremum_low(
+ ut_align_offset(rec, (2 * 8192))));
+}
+
+
+
+static inline
+ulint
+page_rec_is_infimum(
+
+
+ const rec_t* rec)
+{
+ return(page_rec_is_infimum_low(
+ ut_align_offset(rec, (2 * 8192))));
+}
+
+
+
+
+
+
+
+static inline
+int
+page_cmp_dtuple_rec_with_match(
+
+
+
+
+ dtuple_t* dtuple,
+ rec_t* rec,
+
+
+
+ const ulint* offsets,
+ ulint* matched_fields,
+
+
+ ulint* matched_bytes)
+
+
+
+{
+ ulint rec_offset;
+
+ ;
+ ;
+ ;
+
+ rec_offset = ut_align_offset(rec, (2 * 8192));
+
+ if (__builtin_expect(rec_offset == ((38 + 36 + 2 * 10) + 5), (0))
+ || __builtin_expect(rec_offset == ((38 + 36 + 2 * 10) + 1 + 6), (0))) {
+ return(1);
+ }
+ if (__builtin_expect(rec_offset == ((38 + 36 + 2 * 10) + 2 * 5 + 8), (0))
+ || __builtin_expect(rec_offset == ((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8), (0))) {
+ return(-1);
+ }
+
+ return(cmp_dtuple_rec_with_match(dtuple, rec, offsets,
+ matched_fields,
+ matched_bytes));
+}
+
+
+
+
+static inline
+ulint
+page_get_n_recs(
+
+
+ ib_page_t* page)
+{
+ return(page_header_get_field(page, 16));
+}
+
+
+
+static inline
+ulint
+page_dir_get_n_slots(
+
+
+ ib_page_t* page)
+{
+ return(page_header_get_field(page, 0));
+}
+
+
+static inline
+void
+page_dir_set_n_slots(
+
+
+ ib_page_t* page,
+ ulint n_slots)
+{
+ page_header_set_field(page, 0, n_slots);
+}
+
+
+
+static inline
+ulint
+page_dir_get_n_heap(
+
+
+ ib_page_t* page)
+{
+ return(page_header_get_field(page, 4) & 0x7fff);
+}
+
+
+
+static inline
+void
+page_dir_set_n_heap(
+
+ ib_page_t* page,
+ ulint n_heap)
+{
+ ;
+
+ page_header_set_field(page, 4, n_heap | (0x8000 &
+ page_header_get_field(page, 4)));
+}
+
+
+
+static inline
+page_dir_slot_t*
+page_dir_get_nth_slot(
+
+
+ ib_page_t* page,
+ ulint n)
+{
+ ;
+
+ return(page + (2 * 8192) - 8
+ - (n + 1) * 2);
+}
+
+
+
+static inline
+ulint
+page_rec_check(
+
+
+ rec_t* rec)
+{
+ ib_page_t* page;
+
+ do { if (__builtin_expect(!((ulint)(rec)), (0))) { ut_dbg_assertion_failed("rec", "./include/page0page.ic", (ulint) 464); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/page0page.ic", (ulint) 464); } while (0); } while (0);
+
+ page = buf_frame_align(rec);
+
+ do { if (__builtin_expect(!((ulint)(rec <= page_header_get_ptr(page, 2))), (0))) { ut_dbg_assertion_failed("rec <= page_header_get_ptr(page, PAGE_HEAP_TOP)", "./include/page0page.ic", (ulint) 468); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/page0page.ic", (ulint) 468); } while (0); } while (0);
+ do { if (__builtin_expect(!((ulint)(rec >= page + (38 + 36 + 2 * 10))), (0))) { ut_dbg_assertion_failed("rec >= page + PAGE_DATA", "./include/page0page.ic", (ulint) 469); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/page0page.ic", (ulint) 469); } while (0); } while (0);
+
+ return((1));
+}
+
+
+
+static inline
+rec_t*
+page_dir_slot_get_rec(
+
+
+ page_dir_slot_t* slot)
+{
+ return(buf_frame_align(slot) + mach_read_from_2(slot));
+}
+
+
+
+static inline
+void
+page_dir_slot_set_rec(
+
+ page_dir_slot_t* slot,
+ rec_t* rec)
+{
+ ;
+
+ mach_write_to_2(slot, ut_align_offset(rec, (2 * 8192)));
+}
+
+
+
+static inline
+ulint
+page_dir_slot_get_n_owned(
+
+
+ page_dir_slot_t* slot)
+{
+ rec_t* rec = page_dir_slot_get_rec(slot);
+ return(rec_get_n_owned(rec, page_rec_is_comp(rec)));
+}
+
+
+
+static inline
+void
+page_dir_slot_set_n_owned(
+
+ page_dir_slot_t* slot,
+ ulint n)
+
+{
+ rec_t* rec = page_dir_slot_get_rec(slot);
+ rec_set_n_owned(rec, page_rec_is_comp(rec), n);
+}
+
+
+
+
+
+static inline
+ulint
+page_dir_calc_reserved_space(
+
+ ulint n_recs)
+{
+ return((2 * n_recs + 4 - 1)
+ / 4);
+}
+
+
+
+static inline
+rec_t*
+page_rec_get_next(
+
+
+ rec_t* rec)
+{
+ ulint offs;
+ ib_page_t* page;
+
+ ;
+
+ page = ut_align_down(rec, (2 * 8192));
+
+ offs = rec_get_next_offs(rec, page_is_comp(page));
+
+ if (__builtin_expect(offs >= (2 * 8192), (0))) {
+ fprintf(stderr,
+"InnoDB: Next record offset is nonsensical %lu in record at offset %lu\n"
+"InnoDB: rec address %p, first buffer frame %p\n"
+"InnoDB: buffer pool high end %p, buf fix count %lu\n",
+ (ulong)offs, (ulong)(rec - page),
+ rec, buf_pool->frame_zero,
+ buf_pool->high_end,
+ (ulong)buf_block_align(rec)->buf_fix_count);
+ buf_page_print(page);
+
+ do { ut_dbg_assertion_failed(0, "./include/page0page.ic", (ulint) 570); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+
+ if (__builtin_expect(offs == 0, (0))) {
+
+ return(((void *)0));
+ }
+
+ return(page + offs);
+}
+
+
+
+static inline
+void
+page_rec_set_next(
+
+ rec_t* rec,
+ rec_t* next)
+
+{
+ ib_page_t* page;
+ ulint offs;
+
+ ;
+ ;
+ page = ut_align_down(rec, (2 * 8192));
+
+ if (next) {
+ ;
+ ;
+ offs = (ulint) (next - page);
+ } else {
+ offs = 0;
+ }
+
+ rec_set_next_offs(rec, page_is_comp(page), offs);
+}
+
+
+
+static inline
+rec_t*
+page_rec_get_prev(
+
+
+ rec_t* rec)
+
+{
+ page_dir_slot_t* slot;
+ ulint slot_no;
+ rec_t* rec2;
+ rec_t* prev_rec = ((void *)0);
+ ib_page_t* page;
+
+ ;
+
+ page = ut_align_down(rec, (2 * 8192));
+
+ ;
+
+ slot_no = page_dir_find_owner_slot(rec);
+
+ do { if (__builtin_expect(!((ulint)(slot_no != 0)), (0))) { ut_dbg_assertion_failed("slot_no != 0", "./include/page0page.ic", (ulint) 633); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/page0page.ic", (ulint) 633); } while (0); } while (0);
+
+ slot = page_dir_get_nth_slot(page, slot_no - 1);
+
+ rec2 = page_dir_slot_get_rec(slot);
+
+ while (rec != rec2) {
+ prev_rec = rec2;
+ rec2 = page_rec_get_next(rec2);
+ }
+
+ do { if (__builtin_expect(!((ulint)(prev_rec)), (0))) { ut_dbg_assertion_failed("prev_rec", "./include/page0page.ic", (ulint) 644); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("./include/page0page.ic", (ulint) 644); } while (0); } while (0);
+
+ return(prev_rec);
+}
+
+
+
+static inline
+rec_t*
+page_rec_find_owner_rec(
+
+
+ rec_t* rec)
+{
+ ;
+
+ if (page_rec_is_comp(rec)) {
+ while (rec_get_n_owned(rec, (1)) == 0) {
+ rec = page_rec_get_next(rec);
+ }
+ } else {
+ while (rec_get_n_owned(rec, (0)) == 0) {
+ rec = page_rec_get_next(rec);
+ }
+ }
+
+ return(rec);
+}
+
+
+
+
+static inline
+ulint
+page_get_data_size(
+
+
+ ib_page_t* page)
+{
+ ulint ret;
+
+ ret = (ulint)(page_header_get_field(page, 2)
+ - (page_is_comp(page)
+ ? (((38 + 36 + 2 * 10) + 2 * 5 + 8) + 8)
+ : (((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8) + 9))
+ - page_header_get_field(page, 8));
+
+ ;
+
+ return(ret);
+}
+
+
+
+static inline
+ulint
+page_get_free_space_of_empty(
+
+
+ ulint comp)
+{
+ if (__builtin_expect(comp, (1))) {
+ return((ulint)((2 * 8192)
+ - (((38 + 36 + 2 * 10) + 2 * 5 + 8) + 8)
+ - 8
+ - 2 * 2));
+ }
+
+ return((ulint)((2 * 8192)
+ - (((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8) + 9)
+ - 8
+ - 2 * 2));
+}
+# 725 "./include/page0page.ic"
+static inline
+ulint
+page_get_max_insert_size(
+
+
+ ib_page_t* page,
+ ulint n_recs)
+{
+ ulint occupied;
+ ulint free_space;
+
+ if (page_is_comp(page)) {
+ occupied = page_header_get_field(page, 2)
+ - (((38 + 36 + 2 * 10) + 2 * 5 + 8) + 8) + page_dir_calc_reserved_space(
+ n_recs + page_dir_get_n_heap(page) - 2);
+
+ free_space = page_get_free_space_of_empty((1));
+ } else {
+ occupied = page_header_get_field(page, 2)
+ - (((38 + 36 + 2 * 10) + 2 + 2 * 6 + 8) + 9) + page_dir_calc_reserved_space(
+ n_recs + page_dir_get_n_heap(page) - 2);
+
+ free_space = page_get_free_space_of_empty((0));
+ }
+
+
+
+
+
+ if (occupied > free_space) {
+
+ return(0);
+ }
+
+ return(free_space - occupied);
+}
+
+
+
+
+static inline
+ulint
+page_get_max_insert_size_after_reorganize(
+
+
+ ib_page_t* page,
+ ulint n_recs)
+{
+ ulint occupied;
+ ulint free_space;
+
+ occupied = page_get_data_size(page)
+ + page_dir_calc_reserved_space(n_recs + page_get_n_recs(page));
+
+ free_space = page_get_free_space_of_empty(page_is_comp(page));
+
+ if (occupied > free_space) {
+
+ return(0);
+ }
+
+ return(free_space - occupied);
+}
+
+
+
+static inline
+void
+page_mem_free(
+
+ ib_page_t* page,
+ rec_t* rec,
+ const ulint* offsets)
+{
+ rec_t* free;
+ ulint garbage;
+
+ ;
+ ;
+ free = page_header_get_ptr(page, 6);
+
+ page_rec_set_next(rec, free);
+ page_header_set_ptr(page, 6, rec);
+# 819 "./include/page0page.ic"
+ garbage = page_header_get_field(page, 8);
+
+ page_header_set_field(page, 8,
+ garbage + rec_offs_size(offsets));
+}
+# 812 "./include/page0page.h" 2
+# 16 "./include/page0cur.h" 2
+# 46 "./include/page0cur.h"
+static inline
+ib_page_t*
+page_cur_get_page(
+
+
+ page_cur_t* cur);
+
+
+static inline
+rec_t*
+page_cur_get_rec(
+
+
+ page_cur_t* cur);
+
+
+
+static inline
+void
+page_cur_set_before_first(
+
+ ib_page_t* page,
+ page_cur_t* cur);
+
+
+
+static inline
+void
+page_cur_set_after_last(
+
+ ib_page_t* page,
+ page_cur_t* cur);
+
+
+static inline
+ulint
+page_cur_is_before_first(
+
+
+ const page_cur_t* cur);
+
+
+static inline
+ulint
+page_cur_is_after_last(
+
+
+ const page_cur_t* cur);
+
+
+static inline
+void
+page_cur_position(
+
+ rec_t* rec,
+ page_cur_t* cur);
+
+
+static inline
+void
+page_cur_invalidate(
+
+ page_cur_t* cur);
+
+
+static inline
+void
+page_cur_move_to_next(
+
+ page_cur_t* cur);
+
+
+static inline
+void
+page_cur_move_to_prev(
+
+ page_cur_t* cur);
+
+
+
+
+static inline
+rec_t*
+page_cur_tuple_insert(
+
+
+
+ page_cur_t* cursor,
+ dtuple_t* tuple,
+ dict_index_t* index,
+ mtr_t* mtr);
+
+
+
+
+static inline
+rec_t*
+page_cur_rec_insert(
+
+
+
+ page_cur_t* cursor,
+ rec_t* rec,
+ dict_index_t* index,
+ ulint* offsets,
+ mtr_t* mtr);
+
+
+
+
+
+
+rec_t*
+page_cur_insert_rec_low(
+
+
+
+ page_cur_t* cursor,
+ dtuple_t* tuple,
+ dict_index_t* index,
+ rec_t* rec,
+ ulint* offsets,
+ mtr_t* mtr);
+
+
+
+
+void
+page_copy_rec_list_end_to_created_page(
+
+ ib_page_t* new_page,
+ ib_page_t* page,
+ rec_t* rec,
+ dict_index_t* index,
+ mtr_t* mtr);
+
+
+
+
+void
+page_cur_delete_rec(
+
+ page_cur_t* cursor,
+ dict_index_t* index,
+ const ulint* offsets,
+ mtr_t* mtr);
+
+
+static inline
+ulint
+page_cur_search(
+
+
+ ib_page_t* page,
+ dict_index_t* index,
+ dtuple_t* tuple,
+ ulint mode,
+
+ page_cur_t* cursor);
+
+
+
+void
+page_cur_search_with_match(
+
+ ib_page_t* page,
+ dict_index_t* index,
+ dtuple_t* tuple,
+ ulint mode,
+
+ ulint* iup_matched_fields,
+
+
+ ulint* iup_matched_bytes,
+
+
+ ulint* ilow_matched_fields,
+
+
+ ulint* ilow_matched_bytes,
+
+
+ page_cur_t* cursor);
+
+
+
+
+void
+page_cur_open_on_rnd_user_rec(
+
+ ib_page_t* page,
+ page_cur_t* cursor);
+
+
+
+unsigned char*
+page_cur_parse_insert_rec(
+
+
+ ulint is_short,
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ dict_index_t* index,
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+unsigned char*
+page_parse_copy_rec_list_to_created_page(
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ dict_index_t* index,
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+unsigned char*
+page_cur_parse_delete_rec(
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ dict_index_t* index,
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+struct page_cur_struct{
+ unsigned char* rec;
+};
+
+
+# 1 "./include/page0cur.ic" 1
+# 14 "./include/page0cur.ic"
+static inline
+ib_page_t*
+page_cur_get_page(
+
+
+ page_cur_t* cur)
+{
+ ;
+
+ return(buf_frame_align(cur->rec));
+}
+
+
+
+static inline
+rec_t*
+page_cur_get_rec(
+
+
+ page_cur_t* cur)
+{
+ ;
+
+ return(cur->rec);
+}
+
+
+
+
+static inline
+void
+page_cur_set_before_first(
+
+ ib_page_t* page,
+ page_cur_t* cur)
+{
+ cur->rec = page_get_infimum_rec(page);
+}
+
+
+
+
+static inline
+void
+page_cur_set_after_last(
+
+ ib_page_t* page,
+ page_cur_t* cur)
+{
+ cur->rec = page_get_supremum_rec(page);
+}
+
+
+
+static inline
+ulint
+page_cur_is_before_first(
+
+
+ const page_cur_t* cur)
+{
+ return(page_rec_is_infimum(cur->rec));
+}
+
+
+
+static inline
+ulint
+page_cur_is_after_last(
+
+
+ const page_cur_t* cur)
+{
+ return(page_rec_is_supremum(cur->rec));
+}
+
+
+
+static inline
+void
+page_cur_position(
+
+ rec_t* rec,
+ page_cur_t* cur)
+{
+ ;
+
+ cur->rec = rec;
+}
+
+
+
+static inline
+void
+page_cur_invalidate(
+
+ page_cur_t* cur)
+{
+ ;
+
+ cur->rec = ((void *)0);
+}
+
+
+
+static inline
+void
+page_cur_move_to_next(
+
+ page_cur_t* cur)
+{
+ ;
+
+ cur->rec = page_rec_get_next(cur->rec);
+}
+
+
+
+static inline
+void
+page_cur_move_to_prev(
+
+ page_cur_t* cur)
+{
+ ;
+
+ cur->rec = page_rec_get_prev(cur->rec);
+}
+
+
+
+static inline
+ulint
+page_cur_search(
+
+
+ ib_page_t* page,
+ dict_index_t* index,
+ dtuple_t* tuple,
+ ulint mode,
+
+ page_cur_t* cursor)
+{
+ ulint low_matched_fields = 0;
+ ulint low_matched_bytes = 0;
+ ulint up_matched_fields = 0;
+ ulint up_matched_bytes = 0;
+
+ ;
+
+ page_cur_search_with_match(page, index, tuple, mode,
+ &up_matched_fields,
+ &up_matched_bytes,
+ &low_matched_fields,
+ &low_matched_bytes,
+ cursor);
+ return(low_matched_fields);
+}
+
+
+
+
+
+static inline
+rec_t*
+page_cur_tuple_insert(
+
+
+
+ page_cur_t* cursor,
+ dtuple_t* tuple,
+ dict_index_t* index,
+ mtr_t* mtr)
+{
+ return(page_cur_insert_rec_low(cursor, tuple, index, ((void *)0), ((void *)0), mtr));
+}
+
+
+
+
+
+static inline
+rec_t*
+page_cur_rec_insert(
+
+
+
+ page_cur_t* cursor,
+ rec_t* rec,
+ dict_index_t* index,
+ ulint* offsets,
+ mtr_t* mtr)
+{
+ return(page_cur_insert_rec_low(cursor, ((void *)0), index, rec,
+ offsets, mtr));
+}
+# 284 "./include/page0cur.h" 2
+# 17 "./include/btr0btr.h" 2
+# 51 "./include/btr0btr.h"
+ib_page_t*
+btr_root_get(
+
+
+ dict_tree_t* tree,
+ mtr_t* mtr);
+
+
+static inline
+ib_page_t*
+btr_page_get(
+
+ ulint space,
+ ulint page_no,
+ ulint mode,
+ mtr_t* mtr);
+
+
+static inline
+dulint
+btr_page_get_index_id(
+
+
+ ib_page_t* page);
+
+dulint
+btr_page_get_index_id_noninline(
+
+
+ ib_page_t* page);
+
+
+static inline
+ulint
+btr_page_get_level_low(
+
+
+ ib_page_t* page);
+
+
+static inline
+ulint
+btr_page_get_level(
+
+
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+static inline
+ulint
+btr_page_get_next(
+
+
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+static inline
+ulint
+btr_page_get_prev(
+
+
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+
+rec_t*
+btr_get_prev_user_rec(
+
+
+ rec_t* rec,
+ mtr_t* mtr);
+
+
+
+
+
+rec_t*
+btr_get_next_user_rec(
+
+
+ rec_t* rec,
+ mtr_t* mtr);
+
+
+
+static inline
+void
+btr_leaf_page_release(
+
+ ib_page_t* page,
+ ulint latch_mode,
+ mtr_t* mtr);
+
+
+static inline
+ulint
+btr_node_ptr_get_child_page_no(
+
+
+ rec_t* rec,
+ const ulint* offsets);
+
+
+
+ulint
+btr_create(
+
+
+
+ ulint type,
+ ulint space,
+ dulint index_id,
+ ulint comp,
+ mtr_t* mtr);
+
+
+
+
+void
+btr_free_but_not_root(
+
+ ulint space,
+ ulint root_page_no);
+
+
+
+void
+btr_free_root(
+
+ ulint space,
+ ulint root_page_no,
+ mtr_t* mtr);
+# 195 "./include/btr0btr.h"
+rec_t*
+btr_root_raise_and_insert(
+
+
+ btr_cur_t* cursor,
+
+
+
+ dtuple_t* tuple,
+ mtr_t* mtr);
+
+
+
+void
+btr_page_reorganize(
+
+ ib_page_t* page,
+ dict_index_t* index,
+ mtr_t* mtr);
+
+
+
+
+ulint
+btr_page_get_split_rec_to_left(
+
+
+ btr_cur_t* cursor,
+ rec_t** split_rec);
+
+
+
+
+
+
+ulint
+btr_page_get_split_rec_to_right(
+
+
+ btr_cur_t* cursor,
+ rec_t** split_rec);
+# 246 "./include/btr0btr.h"
+rec_t*
+btr_page_split_and_insert(
+
+
+
+
+ btr_cur_t* cursor,
+
+
+ dtuple_t* tuple,
+ mtr_t* mtr);
+
+
+
+
+void
+btr_insert_on_non_leaf_level(
+
+ dict_tree_t* tree,
+ ulint level,
+ dtuple_t* tuple,
+ mtr_t* mtr);
+
+
+
+void
+btr_set_min_rec_mark(
+
+ rec_t* rec,
+ ulint comp,
+ mtr_t* mtr);
+
+
+
+void
+btr_node_ptr_delete(
+
+ dict_tree_t* tree,
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+ulint
+btr_check_node_ptr(
+
+
+ dict_tree_t* tree,
+ ib_page_t* page,
+ mtr_t* mtr);
+# 306 "./include/btr0btr.h"
+void
+btr_compress(
+
+ btr_cur_t* cursor,
+
+
+
+ mtr_t* mtr);
+
+
+
+
+
+void
+btr_discard_page(
+
+ btr_cur_t* cursor,
+
+ mtr_t* mtr);
+
+
+
+
+unsigned char*
+btr_parse_set_min_rec_mark(
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ ulint comp,
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+unsigned char*
+btr_parse_page_reorganize(
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ dict_index_t* index,
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+ulint
+btr_get_size(
+
+
+ dict_index_t* index,
+ ulint flag);
+
+
+
+
+ib_page_t*
+btr_page_alloc(
+
+
+
+ dict_tree_t* tree,
+ ulint hint_page_no,
+ unsigned char file_direction,
+
+ ulint level,
+
+ mtr_t* mtr);
+
+
+
+
+void
+btr_page_free(
+
+ dict_tree_t* tree,
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+
+
+void
+btr_page_free_low(
+
+ dict_tree_t* tree,
+ ib_page_t* page,
+ ulint level,
+ mtr_t* mtr);
+# 419 "./include/btr0btr.h"
+ulint
+btr_index_rec_validate(
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ ulint dump_on_error);
+
+
+
+
+
+ulint
+btr_validate_tree(
+
+
+ dict_tree_t* tree,
+ trx_t* trx);
+
+
+
+
+
+# 1 "./include/btr0btr.ic" 1
+# 17 "./include/btr0btr.ic"
+static inline
+ib_page_t*
+btr_page_get(
+
+ ulint space,
+ ulint page_no,
+ ulint mode,
+ mtr_t* mtr)
+{
+ ib_page_t* page;
+
+ page = buf_page_get_gen( space, page_no, mode, ((void *)0), 10, "./include/btr0btr.ic", 28, mtr);
+
+
+
+
+
+
+ return(page);
+}
+
+
+
+static inline
+void
+btr_page_set_index_id(
+
+ ib_page_t* page,
+ dulint id,
+ mtr_t* mtr)
+{
+ mlog_write_dulint(page + 38 + 28, id, mtr);
+}
+
+
+
+static inline
+dulint
+btr_page_get_index_id(
+
+
+ ib_page_t* page)
+{
+ return(mach_read_from_8(page + 38 + 28));
+}
+
+
+
+static inline
+ulint
+btr_page_get_level_low(
+
+
+ ib_page_t* page)
+{
+ ulint level;
+
+ ;
+
+ level = mach_read_from_2(page + 38 + 26);
+
+ ;
+
+ return(level);
+}
+
+
+
+static inline
+ulint
+btr_page_get_level(
+
+
+ ib_page_t* page,
+ mtr_t* mtr __attribute__((unused)))
+{
+ ;
+
+ return(btr_page_get_level_low(page));
+}
+
+
+
+static inline
+void
+btr_page_set_level(
+
+ ib_page_t* page,
+ ulint level,
+ mtr_t* mtr)
+{
+ ;
+ ;
+
+ mlog_write_ulint(page + 38 + 26, level,
+ ((unsigned char)2), mtr);
+}
+
+
+
+static inline
+ulint
+btr_page_get_next(
+
+
+ ib_page_t* page,
+ mtr_t* mtr __attribute__((unused)))
+{
+ ;
+ ;
+
+
+
+
+ return(mach_read_from_4(page + 12));
+}
+
+
+
+static inline
+void
+btr_page_set_next(
+
+ ib_page_t* page,
+ ulint next,
+ mtr_t* mtr)
+{
+ ;
+
+ mlog_write_ulint(page + 12, next, ((unsigned char)4), mtr);
+}
+
+
+
+static inline
+ulint
+btr_page_get_prev(
+
+
+ ib_page_t* page,
+ mtr_t* mtr __attribute__((unused)))
+{
+ ;
+
+ return(mach_read_from_4(page + 8));
+}
+
+
+
+static inline
+void
+btr_page_set_prev(
+
+ ib_page_t* page,
+ ulint prev,
+ mtr_t* mtr)
+{
+ ;
+
+ mlog_write_ulint(page + 8, prev, ((unsigned char)4), mtr);
+}
+
+
+
+static inline
+ulint
+btr_node_ptr_get_child_page_no(
+
+
+ rec_t* rec,
+ const ulint* offsets)
+{
+ unsigned char* field;
+ ulint len;
+ ulint page_no;
+
+ ;
+
+
+ field = rec_get_nth_field(rec, offsets,
+ rec_offs_n_fields(offsets) - 1, &len);
+
+ ;
+
+ page_no = mach_read_from_4(field);
+
+ if (__builtin_expect(page_no == 0, (0))) {
+ fprintf(stderr,
+"InnoDB: a nonsensical page number 0 in a node ptr record at offset %lu\n",
+ (ulong) ut_align_offset(rec, (2 * 8192)));
+ buf_page_print(buf_frame_align(rec));
+ }
+
+ return(page_no);
+}
+
+
+
+static inline
+void
+btr_leaf_page_release(
+
+ ib_page_t* page,
+ ulint latch_mode,
+ mtr_t* mtr)
+{
+ ;
+
+ if (latch_mode == 1) {
+ mtr_memo_release(mtr, buf_block_align(page),
+ 1);
+ } else {
+ ;
+ mtr_memo_release(mtr, buf_block_align(page),
+ 2);
+ }
+}
+# 443 "./include/btr0btr.h" 2
+# 31 "buf/buf0buf.c" 2
+# 1 "./include/fil0fil.h" 1
+# 32 "buf/buf0buf.c" 2
+# 1 "./include/lock0lock.h" 1
+# 26 "./include/lock0lock.h"
+extern FILE* lock_latest_err_file;
+
+
+
+
+ulint
+lock_get_size(void);
+
+
+
+
+
+void
+lock_sys_create(
+
+ ulint n_cells);
+
+
+
+
+trx_t*
+lock_sec_rec_some_has_impl_off_kernel(
+
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets);
+
+
+
+static inline
+trx_t*
+lock_clust_rec_some_has_impl(
+
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets);
+
+
+
+
+
+void
+lock_rec_inherit_to_gap(
+
+ rec_t* heir,
+ rec_t* rec);
+
+
+
+
+
+
+
+void
+lock_move_reorganize_page(
+
+ ib_page_t* page,
+ ib_page_t* new_page);
+
+
+
+
+void
+lock_move_rec_list_end(
+
+ ib_page_t* new_page,
+ ib_page_t* page,
+ rec_t* rec);
+
+
+
+
+
+void
+lock_move_rec_list_start(
+
+ ib_page_t* new_page,
+ ib_page_t* page,
+ rec_t* rec,
+
+ rec_t* old_end);
+
+
+
+
+void
+lock_update_split_right(
+
+ ib_page_t* right_page,
+ ib_page_t* left_page);
+
+
+
+void
+lock_update_merge_right(
+
+ rec_t* orig_succ,
+
+ ib_page_t* left_page);
+# 138 "./include/lock0lock.h"
+void
+lock_update_root_raise(
+
+ ib_page_t* new_page,
+ ib_page_t* root);
+
+
+
+
+void
+lock_update_copy_and_discard(
+
+ ib_page_t* new_page,
+ ib_page_t* page);
+
+
+
+void
+lock_update_split_left(
+
+ ib_page_t* right_page,
+ ib_page_t* left_page);
+
+
+
+void
+lock_update_merge_left(
+
+ ib_page_t* left_page,
+ rec_t* orig_pred,
+
+ ib_page_t* right_page);
+
+
+
+
+
+void
+lock_rec_reset_and_inherit_gap_locks(
+
+ rec_t* heir,
+ rec_t* rec);
+
+
+
+void
+lock_update_discard(
+
+ rec_t* heir,
+ ib_page_t* page);
+
+
+
+void
+lock_update_insert(
+
+ rec_t* rec);
+
+
+
+void
+lock_update_delete(
+
+ rec_t* rec);
+# 210 "./include/lock0lock.h"
+void
+lock_rec_store_on_page_infimum(
+
+ ib_page_t* page,
+ rec_t* rec);
+
+
+
+
+
+
+void
+lock_rec_restore_from_page_infimum(
+
+ rec_t* rec,
+ ib_page_t* page);
+
+
+
+
+
+ulint
+lock_rec_expl_exist_on_page(
+
+
+
+ ulint space,
+ ulint page_no);
+
+
+
+
+
+
+
+ulint
+lock_rec_insert_check_and_lock(
+
+
+
+ ulint flags,
+
+ rec_t* rec,
+ dict_index_t* index,
+ que_thr_t* thr,
+ ulint* inherit);
+# 266 "./include/lock0lock.h"
+ulint
+lock_clust_rec_modify_check_and_lock(
+
+
+
+ ulint flags,
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets,
+ que_thr_t* thr);
+
+
+
+
+ulint
+lock_sec_rec_modify_check_and_lock(
+
+
+
+ ulint flags,
+
+ rec_t* rec,
+
+
+
+ dict_index_t* index,
+ que_thr_t* thr);
+
+
+
+
+ulint
+lock_sec_rec_read_check_and_lock(
+
+
+
+ ulint flags,
+
+ rec_t* rec,
+
+
+ dict_index_t* index,
+ const ulint* offsets,
+ ulint mode,
+
+
+ ulint gap_mode,
+
+ que_thr_t* thr);
+# 324 "./include/lock0lock.h"
+ulint
+lock_clust_rec_read_check_and_lock(
+
+
+
+ ulint flags,
+
+ rec_t* rec,
+
+
+ dict_index_t* index,
+ const ulint* offsets,
+ ulint mode,
+
+
+ ulint gap_mode,
+
+ que_thr_t* thr);
+# 352 "./include/lock0lock.h"
+ulint
+lock_clust_rec_read_check_and_lock_alt(
+
+
+
+ ulint flags,
+
+ rec_t* rec,
+
+
+ dict_index_t* index,
+ ulint mode,
+
+
+ ulint gap_mode,
+
+ que_thr_t* thr);
+
+
+
+ulint
+lock_clust_rec_cons_read_sees(
+
+
+
+ rec_t* rec,
+
+ dict_index_t* index,
+ const ulint* offsets,
+ read_view_t* view);
+
+
+
+ulint
+lock_sec_rec_cons_read_sees(
+# 396 "./include/lock0lock.h"
+ rec_t* rec,
+
+ dict_index_t* index,
+ read_view_t* view);
+
+
+
+
+ulint
+lock_table(
+
+
+
+ ulint flags,
+
+ dict_table_t* table,
+ ulint mode,
+ que_thr_t* thr);
+
+
+
+ulint
+lock_is_on_table(
+
+
+ dict_table_t* table);
+
+
+
+
+
+void
+lock_rec_unlock(
+
+ trx_t* trx,
+
+ rec_t* rec,
+ ulint lock_mode);
+
+
+
+
+void
+lock_table_unlock(
+
+ ib_lock_t* lock);
+
+
+
+
+void
+lock_table_unlock_auto_inc(
+
+ trx_t* trx);
+
+
+
+
+void
+lock_release_off_kernel(
+
+ trx_t* trx);
+
+
+
+
+void
+lock_cancel_waiting_and_release(
+
+ ib_lock_t* lock);
+
+
+
+
+void
+lock_reset_all_on_table(
+
+ dict_table_t* table);
+
+
+
+static inline
+ulint
+lock_rec_fold(
+
+
+ ulint space,
+ ulint page_no);
+
+
+
+static inline
+ulint
+lock_rec_hash(
+
+
+ ulint space,
+ ulint page_no);
+
+
+
+
+dict_table_t*
+lock_get_src_table(
+
+
+
+
+
+
+ trx_t* trx,
+ dict_table_t* dest,
+ ulint* mode);
+
+
+
+
+
+ulint
+lock_is_table_exclusive(
+
+
+
+ dict_table_t* table,
+ trx_t* trx);
+
+
+
+ulint
+lock_check_trx_id_sanity(
+
+
+ dulint trx_id,
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets,
+ ulint has_kernel_mutex);
+
+
+
+
+ulint
+lock_rec_queue_validate(
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets);
+
+
+
+void
+lock_table_print(
+
+ FILE* file,
+ ib_lock_t* lock);
+
+
+
+void
+lock_rec_print(
+
+ FILE* file,
+ ib_lock_t* lock);
+
+
+
+void
+lock_print_info_summary(
+
+ FILE* file);
+
+
+
+void
+lock_print_info_all_transactions(
+
+ FILE* file);
+
+
+
+ulint
+lock_table_queue_validate(
+
+
+ dict_table_t* table);
+
+
+
+ulint
+lock_rec_validate_page(
+
+
+ ulint space,
+ ulint page_no);
+
+
+
+ulint
+lock_validate(void);
+
+
+
+
+extern lock_sys_t* lock_sys;
+# 659 "./include/lock0lock.h"
+typedef struct lock_op_struct lock_op_t;
+struct lock_op_struct{
+ dict_table_t* table;
+ ulint mode;
+};
+
+
+
+
+
+struct lock_sys_struct{
+ hash_table_t* rec_hash;
+};
+
+
+extern lock_sys_t* lock_sys;
+
+
+
+# 1 "./include/lock0lock.ic" 1
+# 12 "./include/lock0lock.ic"
+# 1 "./include/row0row.h" 1
+# 24 "./include/row0row.h"
+static inline
+dulint
+row_get_rec_trx_id(
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets);
+
+
+static inline
+dulint
+row_get_rec_roll_ptr(
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets);
+
+
+static inline
+void
+row_set_rec_trx_id(
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets,
+ dulint trx_id);
+
+
+static inline
+void
+row_set_rec_roll_ptr(
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets,
+ dulint roll_ptr);
+
+
+
+
+dtuple_t*
+row_build_index_entry(
+
+
+ dtuple_t* row,
+
+ dict_index_t* index,
+ mem_heap_t* heap);
+
+
+
+
+
+dtuple_t*
+row_build(
+
+
+ ulint type,
+
+
+
+
+
+ dict_index_t* index,
+ rec_t* rec,
+
+
+
+
+
+
+ const ulint* offsets,
+
+
+ mem_heap_t* heap);
+
+
+
+
+dtuple_t*
+row_rec_to_index_entry(
+
+
+
+ ulint type,
+
+
+
+ dict_index_t* index,
+ rec_t* rec,
+
+
+
+
+
+
+ mem_heap_t* heap);
+
+
+
+
+
+dtuple_t*
+row_build_row_ref(
+
+
+
+ ulint type,
+
+
+
+ dict_index_t* index,
+ rec_t* rec,
+
+
+
+
+
+
+ mem_heap_t* heap);
+
+
+
+
+
+void
+row_build_row_ref_in_tuple(
+
+ dtuple_t* ref,
+
+ dict_index_t* index,
+ rec_t* rec,
+
+
+
+
+
+ trx_t* trx);
+
+
+
+
+void
+row_build_row_ref_from_row(
+
+ dtuple_t* ref,
+
+
+ dict_table_t* table,
+ dtuple_t* row);
+
+
+
+
+
+static inline
+void
+row_build_row_ref_fast(
+
+ dtuple_t* ref,
+
+ const ulint* map,
+
+
+ rec_t* rec,
+
+
+ const ulint* offsets);
+
+
+
+
+ulint
+row_search_on_row_ref(
+
+
+ btr_pcur_t* pcur,
+
+ ulint mode,
+ dict_table_t* table,
+ dtuple_t* ref,
+ mtr_t* mtr);
+
+
+
+
+rec_t*
+row_get_clust_rec(
+
+
+ ulint mode,
+ rec_t* rec,
+ dict_index_t* index,
+ dict_index_t** clust_index,
+ mtr_t* mtr);
+
+
+
+ulint
+row_search_index_entry(
+
+
+ dict_index_t* index,
+ dtuple_t* entry,
+ ulint mode,
+ btr_pcur_t* pcur,
+
+ mtr_t* mtr);
+# 249 "./include/row0row.h"
+# 1 "./include/row0row.ic" 1
+# 17 "./include/row0row.ic"
+dulint
+row_get_rec_sys_field(
+
+
+ ulint type,
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets);
+
+
+
+
+void
+row_set_rec_sys_field(
+
+
+ ulint type,
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets,
+ dulint val);
+
+
+
+static inline
+dulint
+row_get_rec_trx_id(
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets)
+{
+ ulint offset;
+
+ ;
+ ;
+
+ offset = index->trx_id_offset;
+
+ if (offset) {
+ return(trx_read_trx_id(rec + offset));
+ } else {
+ return(row_get_rec_sys_field(1,
+ rec, index, offsets));
+ }
+}
+
+
+
+static inline
+dulint
+row_get_rec_roll_ptr(
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets)
+{
+ ulint offset;
+
+ ;
+ ;
+
+ offset = index->trx_id_offset;
+
+ if (offset) {
+ return(trx_read_roll_ptr(rec + offset + 6));
+ } else {
+ return(row_get_rec_sys_field(2,
+ rec, index, offsets));
+ }
+}
+
+
+
+static inline
+void
+row_set_rec_trx_id(
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets,
+ dulint trx_id)
+{
+ ulint offset;
+
+ ;
+ ;
+
+ offset = index->trx_id_offset;
+
+ if (offset) {
+ trx_write_trx_id(rec + offset, trx_id);
+ } else {
+ row_set_rec_sys_field(1,
+ rec, index, offsets, trx_id);
+ }
+}
+
+
+
+static inline
+void
+row_set_rec_roll_ptr(
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets,
+ dulint roll_ptr)
+{
+ ulint offset;
+
+ ;
+ ;
+
+ offset = index->trx_id_offset;
+
+ if (offset) {
+ trx_write_roll_ptr(rec + offset + 6, roll_ptr);
+ } else {
+ row_set_rec_sys_field(2,
+ rec, index, offsets, roll_ptr);
+ }
+}
+
+
+
+
+static inline
+void
+row_build_row_ref_fast(
+
+ dtuple_t* ref,
+
+ const ulint* map,
+
+
+ rec_t* rec,
+
+
+ const ulint* offsets)
+{
+ dfield_t* dfield;
+ unsigned char* field;
+ ulint len;
+ ulint ref_len;
+ ulint field_no;
+ ulint i;
+
+ ;
+ ref_len = dtuple_get_n_fields(ref);
+
+ for (i = 0; i < ref_len; i++) {
+ dfield = dtuple_get_nth_field(ref, i);
+
+ field_no = *(map + i);
+
+ if (field_no != ((ulint)(-1))) {
+
+ field = rec_get_nth_field(rec, offsets,
+ field_no, &len);
+ dfield_set_data(dfield, field, len);
+ }
+ }
+}
+# 250 "./include/row0row.h" 2
+# 13 "./include/lock0lock.ic" 2
+
+
+
+
+
+# 1 "./include/row0vers.h" 1
+# 26 "./include/row0vers.h"
+trx_t*
+row_vers_impl_x_locked_off_kernel(
+
+
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets);
+
+
+
+
+ulint
+row_vers_must_preserve_del_marked(
+
+
+ dulint trx_id,
+ mtr_t* mtr);
+# 53 "./include/row0vers.h"
+ulint
+row_vers_old_has_index_entry(
+
+
+ ulint also_curr,
+
+
+ rec_t* rec,
+
+ mtr_t* mtr,
+
+ dict_index_t* index,
+ dtuple_t* ientry);
+
+
+
+
+
+ulint
+row_vers_build_for_consistent_read(
+
+
+ rec_t* rec,
+
+
+
+ mtr_t* mtr,
+
+ dict_index_t* index,
+ ulint** offsets,
+
+ read_view_t* view,
+ mem_heap_t** offset_heap,
+
+ mem_heap_t* in_heap,
+
+
+
+ rec_t** old_vers);
+
+
+
+
+
+# 1 "./include/row0vers.ic" 1
+# 11 "./include/row0vers.ic"
+# 1 "./include/read0read.h" 1
+# 24 "./include/read0read.h"
+read_view_t*
+read_view_open_now(
+
+
+ trx_t* cr_trx,
+ mem_heap_t* heap);
+
+
+
+
+read_view_t*
+read_view_oldest_copy_or_open_new(
+
+
+ trx_t* cr_trx,
+ mem_heap_t* heap);
+
+
+
+void
+read_view_close(
+
+ read_view_t* view);
+
+
+
+
+void
+read_view_close_for_mysql(
+
+ trx_t* trx);
+
+
+static inline
+ulint
+read_view_sees_trx_id(
+
+
+ read_view_t* view,
+ dulint trx_id);
+
+
+
+void
+read_view_print(
+
+ read_view_t* view);
+
+
+
+
+
+cursor_view_t*
+read_cursor_view_create_for_mysql(
+
+ trx_t* cr_trx);
+
+
+
+
+void
+read_cursor_view_close_for_mysql(
+
+ trx_t* trx,
+ cursor_view_t* curview);
+
+
+
+
+
+void
+read_cursor_set_for_mysql(
+
+ trx_t* trx,
+ cursor_view_t* curview);
+
+
+
+
+struct read_view_struct{
+ ulint can_be_too_old;
+
+
+
+ dulint low_limit_no;
+
+
+
+
+ dulint low_limit_id;
+
+ dulint up_limit_id;
+
+ ulint n_trx_ids;
+ dulint* trx_ids;
+
+
+
+
+
+ trx_t* creator;
+
+ struct { read_view_t * prev; read_view_t * next; } view_list;
+
+};
+
+
+
+
+
+struct cursor_view_struct{
+ mem_heap_t* heap;
+
+ read_view_t* read_view;
+
+ ulint n_mysql_tables_in_use;
+
+
+};
+
+
+# 1 "./include/read0read.ic" 1
+# 11 "./include/read0read.ic"
+static inline
+dulint
+read_view_get_nth_trx_id(
+
+
+ read_view_t* view,
+ ulint n)
+{
+ ;
+
+ return(*(view->trx_ids + n));
+}
+
+
+
+static inline
+void
+read_view_set_nth_trx_id(
+
+ read_view_t* view,
+ ulint n,
+ dulint trx_id)
+{
+ ;
+
+ *(view->trx_ids + n) = trx_id;
+}
+
+
+
+static inline
+ulint
+read_view_sees_trx_id(
+
+
+ read_view_t* view,
+ dulint trx_id)
+{
+ ulint n_ids;
+ int cmp;
+ ulint i;
+
+ if (ut_dulint_cmp(trx_id, view->up_limit_id) < 0) {
+
+ return((1));
+ }
+
+ if (ut_dulint_cmp(trx_id, view->low_limit_id) >= 0) {
+
+ return((0));
+ }
+
+
+
+
+
+
+ n_ids = view->n_trx_ids;
+
+ for (i = 0; i < n_ids; i++) {
+
+ cmp = ut_dulint_cmp(trx_id,
+ read_view_get_nth_trx_id(view, n_ids - i - 1));
+ if (cmp <= 0) {
+ return(cmp < 0);
+ }
+ }
+
+ return((1));
+}
+# 146 "./include/read0read.h" 2
+# 12 "./include/row0vers.ic" 2
+
+# 1 "./include/log0recv.h" 1
+# 16 "./include/log0recv.h"
+# 1 "./include/log0log.h" 1
+# 17 "./include/log0log.h"
+typedef struct log_struct log_t;
+typedef struct log_group_struct log_group_t;
+# 38 "./include/log0log.h"
+void
+log_fsp_current_free_limit_set_and_checkpoint(
+
+ ulint limit);
+
+
+
+ulint
+log_calc_where_lsn_is(
+
+
+ ib_longlong* log_file_offset,
+
+ dulint first_header_lsn,
+
+ dulint lsn,
+
+ ulint n_log_files,
+
+ ib_longlong log_file_size);
+
+
+
+
+static inline
+dulint
+log_reserve_and_write_fast(
+
+
+
+ unsigned char* str,
+ ulint len,
+ dulint* start_lsn,
+ ulint* success);
+
+
+static inline
+void
+log_release(void);
+
+
+
+
+
+
+static inline
+void
+log_free_check(void);
+
+
+
+
+
+dulint
+log_reserve_and_open(
+
+
+ ulint len);
+
+
+
+
+void
+log_write_low(
+
+ unsigned char* str,
+ ulint str_len);
+
+
+
+dulint
+log_close(void);
+
+
+
+
+static inline
+dulint
+log_get_lsn(void);
+
+
+
+
+
+void
+log_init(void);
+
+
+
+
+void
+log_group_init(
+
+ ulint id,
+ ulint n_files,
+ ulint file_size,
+ ulint space_id,
+
+
+ ulint archive_space_id);
+
+
+
+
+
+
+
+void
+log_io_complete(
+
+ log_group_t* group);
+
+
+
+
+typedef enum {
+ LOG_WRITE_FROM_DIRTY_BUFFER,
+ LOG_WRITE_FROM_BACKGROUND_SYNC,
+ LOG_WRITE_FROM_BACKGROUND_ASYNC,
+ LOG_WRITE_FROM_INTERNAL,
+ LOG_WRITE_FROM_CHECKPOINT_SYNC,
+ LOG_WRITE_FROM_CHECKPOINT_ASYNC,
+ LOG_WRITE_FROM_LOG_ARCHIVE,
+ LOG_WRITE_FROM_COMMIT_SYNC,
+ LOG_WRITE_FROM_COMMIT_ASYNC,
+ LOG_WRITE_FROM_NUMBER
+} log_sync_type;
+
+
+
+
+
+
+void
+log_write_up_to(
+
+ dulint lsn,
+
+ ulint wait,
+
+ ulint flush_to_disk,
+
+ log_sync_type caller);
+
+
+
+void
+log_buffer_flush_to_disk(void);
+
+
+
+
+
+void
+log_buffer_flush_maybe_sync(void);
+
+
+
+
+
+
+ulint
+log_preflush_pool_modified_pages(
+
+
+
+
+ dulint new_oldest,
+
+ ulint sync);
+
+
+
+
+
+
+
+ulint
+log_checkpoint(
+
+
+
+ ulint sync,
+
+ ulint write_always);
+# 231 "./include/log0log.h"
+void
+log_make_checkpoint_at(
+
+ dulint lsn,
+
+
+ ulint write_always);
+# 249 "./include/log0log.h"
+void
+logs_empty_and_mark_files_at_shutdown(void);
+
+
+
+
+void
+log_group_read_checkpoint_info(
+
+ log_group_t* group,
+ ulint field);
+
+
+
+void
+log_checkpoint_get_nth_group_info(
+
+ unsigned char* buf,
+ ulint n,
+ ulint* file_no,
+ ulint* offset);
+
+
+
+void
+log_groups_write_checkpoint_info(void);
+
+
+
+
+
+void
+log_reset_first_header_and_checkpoint(
+
+ unsigned char* hdr_buf,
+
+ dulint start);
+
+
+
+
+
+ulint
+log_archive_do(
+
+
+
+ ulint sync,
+ ulint* n_bytes);
+# 306 "./include/log0log.h"
+ulint
+log_archive_stop(void);
+
+
+
+
+
+ulint
+log_archive_start(void);
+
+
+
+
+
+ulint
+log_archive_noarchivelog(void);
+
+
+
+
+
+ulint
+log_archive_archivelog(void);
+
+
+
+
+
+void
+log_archived_file_name_gen(
+
+ char* buf,
+ ulint id,
+ ulint file_no);
+
+
+
+
+
+
+void
+log_check_margins(void);
+
+
+
+
+void
+log_group_read_log_seg(
+
+ ulint type,
+ unsigned char* buf,
+ log_group_t* group,
+ dulint start_lsn,
+ dulint end_lsn);
+
+
+
+void
+log_group_write_buf(
+
+ log_group_t* group,
+ unsigned char* buf,
+ ulint len,
+
+ dulint start_lsn,
+
+
+ ulint new_data_offset);
+# 382 "./include/log0log.h"
+void
+log_group_set_fields(
+
+ log_group_t* group,
+ dulint lsn);
+
+
+
+
+
+ulint
+log_group_get_capacity(
+
+
+ log_group_t* group);
+
+
+static inline
+ulint
+log_block_get_flush_bit(
+
+
+
+ unsigned char* log_block);
+
+
+static inline
+ulint
+log_block_get_hdr_no(
+
+
+
+ unsigned char* log_block);
+
+
+static inline
+ulint
+log_block_get_data_len(
+
+
+
+ unsigned char* log_block);
+
+
+static inline
+void
+log_block_set_data_len(
+
+ unsigned char* log_block,
+ ulint len);
+
+
+static inline
+ulint
+log_block_calc_checksum(
+
+
+ unsigned char* block);
+
+
+static inline
+ulint
+log_block_get_checksum(
+
+
+ unsigned char* log_block);
+
+
+static inline
+void
+log_block_set_checksum(
+
+ unsigned char* log_block,
+ ulint checksum);
+
+
+static inline
+ulint
+log_block_get_first_rec_group(
+
+
+
+ unsigned char* log_block);
+
+
+static inline
+void
+log_block_set_first_rec_group(
+
+ unsigned char* log_block,
+ ulint offset);
+
+
+static inline
+ulint
+log_block_get_checkpoint_no(
+
+
+ unsigned char* log_block);
+
+
+static inline
+void
+log_block_init(
+
+ unsigned char* log_block,
+ dulint lsn);
+
+
+
+static inline
+void
+log_block_init_in_old_format(
+
+ unsigned char* log_block,
+ dulint lsn);
+
+
+static inline
+ulint
+log_block_convert_lsn_to_no(
+
+
+ dulint lsn);
+
+
+
+void
+log_print(
+
+ FILE* file);
+
+
+
+ulint
+log_peek_lsn(
+
+
+
+ dulint* lsn);
+
+
+
+void
+log_refresh_stats(void);
+
+
+extern log_t* log_sys;
+# 661 "./include/log0log.h"
+struct log_group_struct{
+
+ ulint id;
+ ulint n_files;
+ ulint file_size;
+
+ ulint space_id;
+
+ ulint state;
+
+ dulint lsn;
+
+ ulint lsn_offset;
+ ulint n_pending_writes;
+
+ unsigned char** file_header_bufs;
+
+
+ unsigned char** archive_file_header_bufs;
+
+ ulint archive_space_id;
+
+ ulint archived_file_no;
+
+ ulint archived_offset;
+
+
+
+ ulint next_archived_file_no;
+
+
+
+
+
+ ulint next_archived_offset;
+
+ dulint scanned_lsn;
+
+
+ unsigned char* checkpoint_buf;
+
+ struct { log_group_t * prev; log_group_t * next; }
+ log_groups;
+};
+
+struct log_struct{
+ unsigned char pad[64];
+
+
+ dulint lsn;
+ ulint buf_free;
+
+ ib_mutex_t mutex;
+ unsigned char* buf;
+ ulint buf_size;
+ ulint max_buf_free;
+
+
+ ulint old_buf_free;
+
+
+ dulint old_lsn;
+
+ ulint check_flush_or_checkpoint;
+# 733 "./include/log0log.h"
+ struct { ulint count; log_group_t * start; log_group_t * end; }
+ log_groups;
+
+
+
+ ulint buf_next_to_write;
+
+
+
+
+
+
+ dulint written_to_some_lsn;
+
+
+
+
+
+ dulint written_to_all_lsn;
+
+
+
+
+
+ dulint write_lsn;
+
+ ulint write_end_offset;
+
+
+
+ dulint current_flush_lsn;
+
+ dulint flushed_to_disk_lsn;
+
+
+ ulint n_pending_writes;
+
+ ulint log_sync_callers[LOG_WRITE_FROM_NUMBER];
+
+ ulint log_sync_syncers[LOG_WRITE_FROM_NUMBER];
+
+ ulint n_syncs;
+ ulint n_checkpoints;
+
+
+
+
+ os_event_t no_flush_event;
+
+
+
+
+
+ ulint one_flushed;
+
+
+ os_event_t one_flushed_event;
+# 798 "./include/log0log.h"
+ ulint n_log_ios;
+
+ ulint n_log_ios_old;
+
+ time_t last_printout_time;
+
+
+
+ ulint log_group_capacity;
+
+
+
+
+ ulint max_modified_age_async;
+
+
+
+
+ ulint max_modified_age_sync;
+
+
+
+
+ ulint adm_checkpoint_interval;
+
+
+
+
+ ulint max_checkpoint_age_async;
+
+
+
+ ulint max_checkpoint_age;
+
+
+
+ dulint next_checkpoint_no;
+
+ dulint last_checkpoint_lsn;
+
+ dulint next_checkpoint_lsn;
+
+ ulint n_pending_checkpoint_writes;
+
+
+ rw_lock_t checkpoint_lock;
+
+
+
+ unsigned char* checkpoint_buf;
+
+
+ ulint archiving_state;
+
+ dulint archived_lsn;
+
+ ulint max_archived_lsn_age_async;
+
+
+
+ ulint max_archived_lsn_age;
+
+
+ dulint next_archived_lsn;
+
+
+
+
+
+ ulint archiving_phase;
+
+ ulint n_pending_archive_ios;
+
+
+ rw_lock_t archive_lock;
+
+
+
+ ulint archive_buf_size;
+ unsigned char* archive_buf;
+
+ os_event_t archiving_on;
+
+
+};
+# 891 "./include/log0log.h"
+# 1 "./include/log0log.ic" 1
+# 17 "./include/log0log.ic"
+ulint
+log_check_log_recs(
+
+ unsigned char* buf,
+
+ ulint len,
+ dulint buf_start_lsn);
+
+
+
+static inline
+ulint
+log_block_get_flush_bit(
+
+
+
+ unsigned char* log_block)
+{
+ if (0x80000000UL
+ & mach_read_from_4(log_block + 0)) {
+
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+static inline
+void
+log_block_set_flush_bit(
+
+ unsigned char* log_block,
+ ulint val)
+{
+ ulint field;
+
+ field = mach_read_from_4(log_block + 0);
+
+ if (val) {
+ field = field | 0x80000000UL;
+ } else {
+ field = field & ~0x80000000UL;
+ }
+
+ mach_write_to_4(log_block + 0, field);
+}
+
+
+
+static inline
+ulint
+log_block_get_hdr_no(
+
+
+
+ unsigned char* log_block)
+{
+ return(~0x80000000UL
+ & mach_read_from_4(log_block + 0));
+}
+
+
+
+
+static inline
+void
+log_block_set_hdr_no(
+
+ unsigned char* log_block,
+ ulint n)
+
+{
+ ;
+ ;
+
+ mach_write_to_4(log_block + 0, n);
+}
+
+
+
+static inline
+ulint
+log_block_get_data_len(
+
+
+
+ unsigned char* log_block)
+{
+ return(mach_read_from_2(log_block + 4));
+}
+
+
+
+static inline
+void
+log_block_set_data_len(
+
+ unsigned char* log_block,
+ ulint len)
+{
+ mach_write_to_2(log_block + 4, len);
+}
+
+
+
+static inline
+ulint
+log_block_get_first_rec_group(
+
+
+
+ unsigned char* log_block)
+{
+ return(mach_read_from_2(log_block + 6));
+}
+
+
+
+static inline
+void
+log_block_set_first_rec_group(
+
+ unsigned char* log_block,
+ ulint offset)
+{
+ mach_write_to_2(log_block + 6, offset);
+}
+
+
+
+static inline
+ulint
+log_block_get_checkpoint_no(
+
+
+ unsigned char* log_block)
+{
+ return(mach_read_from_4(log_block + 8));
+}
+
+
+
+static inline
+void
+log_block_set_checkpoint_no(
+
+ unsigned char* log_block,
+ dulint no)
+{
+ mach_write_to_4(log_block + 8,
+ ut_dulint_get_low(no));
+}
+
+
+
+static inline
+ulint
+log_block_convert_lsn_to_no(
+
+
+ dulint lsn)
+{
+ ulint no;
+
+ no = ut_dulint_get_low(lsn) / 512;
+ no += (ut_dulint_get_high(lsn) % 512)
+ * 2 * (0x80000000UL / 512);
+
+ no = no & 0x3FFFFFFFUL;
+
+ return(no + 1);
+}
+
+
+
+static inline
+ulint
+log_block_calc_checksum(
+
+
+ unsigned char* block)
+{
+ ulint sum;
+ ulint sh;
+ ulint i;
+
+ sum = 1;
+ sh = 0;
+
+ for (i = 0; i < 512 - 4; i++) {
+ sum = sum & 0x7FFFFFFFUL;
+ sum += (((ulint)(*(block + i))) << sh) + (ulint)(*(block + i));
+ sh++;
+ if (sh > 24) {
+ sh = 0;
+ }
+ }
+
+ return(sum);
+}
+
+
+
+static inline
+ulint
+log_block_get_checksum(
+
+
+ unsigned char* log_block)
+{
+ return(mach_read_from_4(log_block + 512
+ - 4));
+}
+
+
+
+static inline
+void
+log_block_set_checksum(
+
+ unsigned char* log_block,
+ ulint checksum)
+{
+ mach_write_to_4(log_block + 512
+ - 4,
+ checksum);
+}
+
+
+
+static inline
+void
+log_block_init(
+
+ unsigned char* log_block,
+ dulint lsn)
+{
+ ulint no;
+
+
+
+
+
+ no = log_block_convert_lsn_to_no(lsn);
+
+ log_block_set_hdr_no(log_block, no);
+
+ log_block_set_data_len(log_block, 12);
+ log_block_set_first_rec_group(log_block, 0);
+}
+
+
+
+
+static inline
+void
+log_block_init_in_old_format(
+
+ unsigned char* log_block,
+ dulint lsn)
+{
+ ulint no;
+
+
+
+
+
+ no = log_block_convert_lsn_to_no(lsn);
+
+ log_block_set_hdr_no(log_block, no);
+ mach_write_to_4(log_block + 512
+ - 4, no);
+ log_block_set_data_len(log_block, 12);
+ log_block_set_first_rec_group(log_block, 0);
+}
+
+
+
+
+static inline
+dulint
+log_reserve_and_write_fast(
+
+
+
+ unsigned char* str,
+ ulint len,
+ dulint* start_lsn,
+ ulint* success)
+{
+ log_t* log = log_sys;
+ ulint data_len;
+ dulint lsn;
+
+ *success = (1);
+
+ mutex_enter_func((&(log->mutex)), "./include/log0log.ic", 315);
+
+ data_len = len + log->buf_free % 512;
+
+ if (data_len >= 512 - 4) {
+
+
+
+
+ *success = (0);
+
+ mutex_exit(&(log->mutex));
+
+ return(ut_dulint_zero);
+ }
+
+ *start_lsn = log->lsn;
+
+ ut_memcpy(log->buf + log->buf_free, str, len);
+
+ log_block_set_data_len(ut_align_down(log->buf + log->buf_free,
+ 512),
+ data_len);
+
+
+
+
+ log->buf_free += len;
+
+ ;
+
+ lsn = ut_dulint_add(log->lsn, len);
+
+ log->lsn = lsn;
+
+
+
+
+
+ return(lsn);
+}
+
+
+
+static inline
+void
+log_release(void)
+
+{
+ mutex_exit(&(log_sys->mutex));
+}
+
+
+
+static inline
+dulint
+log_get_lsn(void)
+
+
+{
+ dulint lsn;
+
+ mutex_enter_func((&(log_sys->mutex)), "./include/log0log.ic", 377);
+
+ lsn = log_sys->lsn;
+
+ mutex_exit(&(log_sys->mutex));
+
+ return(lsn);
+}
+
+
+
+
+
+
+static inline
+void
+log_free_check(void)
+
+{
+
+
+ if (log_sys->check_flush_or_checkpoint) {
+
+ log_check_margins();
+ }
+}
+# 892 "./include/log0log.h" 2
+# 17 "./include/log0recv.h" 2
+# 25 "./include/log0recv.h"
+ulint
+recv_read_cp_info_for_backup(
+
+
+ unsigned char* hdr,
+ dulint* lsn,
+ ulint* offset,
+ ulint* fsp_limit,
+
+ dulint* cp_no,
+ dulint* first_header_lsn);
+
+
+
+
+
+void
+recv_scan_log_seg_for_backup(
+
+ unsigned char* buf,
+ ulint buf_len,
+ dulint* scanned_lsn,
+
+ ulint* scanned_checkpoint_no,
+
+
+
+ ulint* n_bytes_scanned);
+
+
+
+
+static inline
+ulint
+recv_recovery_is_on(void);
+
+
+
+static inline
+ulint
+recv_recovery_from_backup_is_on(void);
+
+
+
+
+
+
+void
+recv_recover_page(
+
+ ulint recover_backup,
+
+
+
+ ulint just_read_in,
+
+ ib_page_t* page,
+ ulint space,
+ ulint page_no);
+
+
+
+
+
+
+ulint
+recv_recovery_from_checkpoint_start(
+
+
+ ulint type,
+ dulint limit_lsn,
+ dulint min_flushed_lsn,
+ dulint max_flushed_lsn);
+
+
+
+void
+recv_recovery_from_checkpoint_finish(void);
+
+
+
+
+
+ulint
+recv_scan_log_recs(
+
+
+
+ ulint apply_automatically,
+
+
+
+
+ ulint available_memory,
+
+ ulint store_to_hash,
+
+
+ unsigned char* buf,
+
+ ulint len,
+ dulint start_lsn,
+ dulint* contiguous_lsn,
+
+ dulint* group_scanned_lsn);
+
+
+
+void
+recv_reset_logs(
+
+ dulint lsn,
+
+
+
+
+
+ ulint new_logs_created);
+# 161 "./include/log0recv.h"
+void
+recv_sys_create(void);
+
+
+
+
+void
+recv_sys_init(
+
+ ulint recover_from_backup,
+
+ ulint available_memory);
+
+
+
+
+void
+recv_apply_hashed_log_recs(
+
+ ulint allow_ibuf);
+# 220 "./include/log0recv.h"
+void
+recv_compare_spaces(
+
+ ulint space1,
+ ulint space2,
+ ulint n_pages);
+
+
+
+
+
+
+void
+recv_compare_spaces_low(
+
+ ulint space1,
+ ulint space2,
+ ulint n_pages);
+
+
+typedef struct recv_data_struct recv_data_t;
+struct recv_data_struct{
+ recv_data_t* next;
+
+
+
+};
+
+
+typedef struct recv_struct recv_t;
+struct recv_struct{
+ unsigned char type;
+ ulint len;
+ recv_data_t* data;
+
+ dulint start_lsn;
+
+
+
+ dulint end_lsn;
+
+
+
+ struct { recv_t * prev; recv_t * next; }
+ rec_list;
+};
+
+
+typedef struct recv_addr_struct recv_addr_t;
+struct recv_addr_struct{
+ ulint state;
+
+ ulint space;
+ ulint page_no;
+ struct { ulint count; recv_t * start; recv_t * end; }
+ rec_list;
+ hash_node_t addr_hash;
+};
+
+
+typedef struct recv_sys_struct recv_sys_t;
+struct recv_sys_struct{
+ ib_mutex_t mutex;
+
+
+ ulint apply_log_recs;
+
+
+
+
+ ulint apply_batch_on;
+
+
+ dulint lsn;
+ ulint last_log_buf_size;
+
+
+ unsigned char* last_block;
+
+
+ unsigned char* last_block_buf_start;
+
+
+ unsigned char* buf;
+ ulint len;
+ dulint parse_start_lsn;
+
+
+
+
+ dulint scanned_lsn;
+
+
+ ulint scanned_checkpoint_no;
+
+
+ ulint recovered_offset;
+
+
+ dulint recovered_lsn;
+
+
+ dulint limit_lsn;
+
+ ulint found_corrupt_log;
+
+
+
+
+ log_group_t* archive_group;
+
+
+ mem_heap_t* heap;
+
+ hash_table_t* addr_hash;
+ ulint n_addrs;
+
+};
+
+extern recv_sys_t* recv_sys;
+extern ulint recv_recovery_on;
+extern ulint recv_no_ibuf_operations;
+extern ulint recv_needed_recovery;
+
+extern ulint recv_lsn_checks_on;
+
+
+
+extern ulint recv_max_parsed_page_no;
+# 369 "./include/log0recv.h"
+extern ulint recv_n_pool_free_frames;
+
+
+# 1 "./include/log0recv.ic" 1
+# 14 "./include/log0recv.ic"
+extern ulint recv_recovery_from_backup_on;
+
+
+
+static inline
+ulint
+recv_recovery_is_on(void)
+
+{
+ return(recv_recovery_on);
+}
+
+
+
+static inline
+ulint
+recv_recovery_from_backup_is_on(void)
+
+{
+ return(recv_recovery_from_backup_on);
+}
+# 373 "./include/log0recv.h" 2
+# 13 "./include/row0vers.ic" 2
+# 98 "./include/row0vers.h" 2
+# 19 "./include/lock0lock.ic" 2
+# 1 "./include/que0que.h" 1
+# 19 "./include/que0que.h"
+# 1 "./include/row0types.h" 1
+# 12 "./include/row0types.h"
+typedef struct plan_struct plan_t;
+
+typedef struct upd_struct upd_t;
+
+typedef struct upd_field_struct upd_field_t;
+
+typedef struct upd_node_struct upd_node_t;
+
+typedef struct del_node_struct del_node_t;
+
+typedef struct ins_node_struct ins_node_t;
+
+typedef struct sel_node_struct sel_node_t;
+
+typedef struct open_node_struct open_node_t;
+
+typedef struct fetch_node_struct fetch_node_t;
+
+typedef struct row_printf_node_struct row_printf_node_t;
+typedef struct sel_buf_struct sel_buf_t;
+
+typedef struct undo_node_struct undo_node_t;
+
+typedef struct purge_node_struct purge_node_t;
+# 20 "./include/que0que.h" 2
+# 1 "./include/pars0types.h" 1
+# 12 "./include/pars0types.h"
+typedef struct sym_node_struct sym_node_t;
+typedef struct sym_tab_struct sym_tab_t;
+typedef struct pars_res_word_struct pars_res_word_t;
+typedef struct func_node_struct func_node_t;
+typedef struct order_node_struct order_node_t;
+typedef struct proc_node_struct proc_node_t;
+typedef struct elsif_node_struct elsif_node_t;
+typedef struct if_node_struct if_node_t;
+typedef struct while_node_struct while_node_t;
+typedef struct for_node_struct for_node_t;
+typedef struct return_node_struct return_node_t;
+typedef struct assign_node_struct assign_node_t;
+typedef struct col_assign_node_struct col_assign_node_t;
+
+typedef struct { ulint count; sym_node_t * start; sym_node_t * end; } sym_node_list_t;
+# 21 "./include/que0que.h" 2
+
+
+
+extern ulint que_trace_on;
+
+
+
+
+void
+que_graph_publish(
+
+ que_t* graph,
+ sess_t* sess);
+
+
+
+que_fork_t*
+que_fork_create(
+
+
+ que_t* graph,
+
+
+ que_node_t* parent,
+ ulint fork_type,
+ mem_heap_t* heap);
+
+
+static inline
+que_thr_t*
+que_fork_get_first_thr(
+
+ que_fork_t* fork);
+
+
+static inline
+que_node_t*
+que_fork_get_child(
+
+ que_fork_t* fork);
+
+
+static inline
+void
+que_node_set_parent(
+
+ que_node_t* node,
+ que_node_t* parent);
+
+
+
+que_thr_t*
+que_thr_create(
+
+
+ que_fork_t* parent,
+ mem_heap_t* heap);
+
+
+
+
+
+ulint
+que_graph_try_free(
+
+
+ que_t* graph);
+
+
+
+
+void
+que_graph_free_recursive(
+
+ que_node_t* node);
+
+
+
+void
+que_graph_free(
+
+ que_t* graph);
+# 112 "./include/que0que.h"
+ulint
+que_thr_stop(
+
+
+ que_thr_t* thr);
+
+
+
+
+void
+que_thr_move_to_run_state_for_mysql(
+
+ que_thr_t* thr,
+ trx_t* trx);
+
+
+
+
+void
+que_thr_stop_for_mysql_no_error(
+
+ que_thr_t* thr,
+ trx_t* trx);
+
+
+
+
+
+
+void
+que_thr_stop_for_mysql(
+
+ que_thr_t* thr);
+
+
+
+
+
+void
+que_run_threads(
+
+ que_thr_t* thr);
+
+
+
+
+
+void
+que_fork_error_handle(
+
+ trx_t* trx,
+ que_t* fork);
+
+
+
+
+
+void
+que_thr_handle_error(
+
+ que_thr_t* thr,
+ ulint err_no,
+ unsigned char* err_str,
+
+
+ ulint err_len);
+
+
+
+
+
+
+void
+que_thr_end_wait(
+
+ que_thr_t* thr,
+
+
+
+ que_thr_t** next_thr);
+
+
+
+
+
+
+
+void
+que_thr_end_wait_no_next_thr(
+
+ que_thr_t* thr);
+# 212 "./include/que0que.h"
+que_thr_t*
+que_fork_start_command(
+
+
+
+
+
+ que_fork_t* fork);
+
+
+static inline
+trx_t*
+thr_get_trx(
+
+ que_thr_t* thr);
+
+
+static inline
+ulint
+que_node_get_type(
+
+ que_node_t* node);
+
+
+static inline
+dtype_t*
+que_node_get_data_type(
+
+ que_node_t* node);
+
+
+static inline
+dfield_t*
+que_node_get_val(
+
+ que_node_t* node);
+
+
+static inline
+ulint
+que_node_get_val_buf_size(
+
+
+
+ que_node_t* node);
+
+
+static inline
+void
+que_node_set_val_buf_size(
+
+ que_node_t* node,
+ ulint size);
+
+
+static inline
+que_node_t*
+que_node_get_next(
+
+ que_node_t* node);
+
+
+static inline
+que_node_t*
+que_node_get_parent(
+
+
+ que_node_t* node);
+
+
+static inline
+que_node_t*
+que_node_list_add_last(
+
+
+ que_node_t* node_list,
+ que_node_t* node);
+
+
+static inline
+ulint
+que_node_list_get_len(
+
+
+ que_node_t* node_list);
+
+
+
+static inline
+ulint
+que_thr_peek_stop(
+
+
+
+
+
+
+ que_thr_t* thr);
+
+
+static inline
+ulint
+que_graph_is_select(
+
+
+ que_t* graph);
+
+
+
+void
+que_node_print_info(
+
+ que_node_t* node);
+
+
+
+
+
+struct que_thr_struct{
+ que_common_t common;
+ ulint magic_n;
+
+ que_node_t* child;
+ que_t* graph;
+ ulint is_active;
+
+
+
+
+ ulint state;
+ struct { que_thr_t * prev; que_thr_t * next; }
+ thrs;
+
+ struct { que_thr_t * prev; que_thr_t * next; }
+ trx_thrs;
+
+ struct { que_thr_t * prev; que_thr_t * next; }
+ queue;
+
+
+
+
+
+ que_node_t* run_node;
+
+
+ que_node_t* prev_node;
+
+ ulint resource;
+
+ ulint lock_state;
+
+};
+
+
+
+
+
+struct que_fork_struct{
+ que_common_t common;
+ que_t* graph;
+ ulint fork_type;
+ ulint n_active_thrs;
+
+
+
+
+ trx_t* trx;
+
+ ulint state;
+ que_thr_t* caller;
+
+ struct { ulint count; que_thr_t * start; que_thr_t * end; }
+ thrs;
+
+
+ sym_tab_t* sym_tab;
+
+
+
+
+ ulint cur_end;
+
+ ulint cur_pos;
+
+
+
+
+ ulint cur_on_row;
+
+
+ dulint n_inserts;
+ dulint n_updates;
+ dulint n_deletes;
+ sel_node_t* last_sel_node;
+
+ struct { que_fork_t * prev; que_fork_t * next; }
+ graphs;
+
+
+ mem_heap_t* heap;
+
+
+};
+# 499 "./include/que0que.h"
+# 1 "./include/que0que.ic" 1
+# 9 "./include/que0que.ic"
+# 1 "./include/usr0sess.h" 1
+# 25 "./include/usr0sess.h"
+sess_t*
+sess_open(void);
+
+
+
+
+
+
+ulint
+sess_try_close(
+
+
+ sess_t* sess);
+
+
+struct sess_struct{
+ ulint state;
+ trx_t* trx;
+
+
+
+
+ struct { ulint count; que_t * start; que_t * end; }
+ graphs;
+
+};
+
+
+
+
+
+
+
+# 1 "./include/usr0sess.ic" 1
+# 59 "./include/usr0sess.h" 2
+# 10 "./include/que0que.ic" 2
+
+
+
+static inline
+trx_t*
+thr_get_trx(
+
+ que_thr_t* thr)
+{
+ ;
+
+ return(thr->graph->trx);
+}
+
+
+
+static inline
+que_thr_t*
+que_fork_get_first_thr(
+
+ que_fork_t* fork)
+{
+ return((fork->thrs).start);
+}
+
+
+
+static inline
+que_node_t*
+que_fork_get_child(
+
+ que_fork_t* fork)
+{
+ que_thr_t* thr;
+
+ thr = (fork->thrs).start;
+
+ return(thr->child);
+}
+
+
+
+static inline
+ulint
+que_node_get_type(
+
+ que_node_t* node)
+{
+ ;
+
+ return(((que_common_t*)node)->type);
+}
+
+
+
+static inline
+dfield_t*
+que_node_get_val(
+
+ que_node_t* node)
+{
+ ;
+
+ return(&(((que_common_t*)node)->val));
+}
+
+
+
+static inline
+ulint
+que_node_get_val_buf_size(
+
+
+
+ que_node_t* node)
+{
+ ;
+
+ return(((que_common_t*)node)->val_buf_size);
+}
+
+
+
+static inline
+void
+que_node_set_val_buf_size(
+
+ que_node_t* node,
+ ulint size)
+{
+ ;
+
+ ((que_common_t*)node)->val_buf_size = size;
+}
+
+
+
+static inline
+void
+que_node_set_parent(
+
+ que_node_t* node,
+ que_node_t* parent)
+{
+ ;
+
+ ((que_common_t*)node)->parent = parent;
+}
+
+
+
+static inline
+dtype_t*
+que_node_get_data_type(
+
+ que_node_t* node)
+{
+ ;
+
+ return(&(((que_common_t*)node)->val.type));
+}
+
+
+
+static inline
+que_node_t*
+que_node_list_add_last(
+
+
+ que_node_t* node_list,
+ que_node_t* node)
+{
+ que_common_t* cnode;
+ que_common_t* cnode2;
+
+ cnode = node;
+
+ cnode->brother = ((void *)0);
+
+ if (node_list == ((void *)0)) {
+
+ return(node);
+ }
+
+ cnode2 = node_list;
+
+ while (cnode2->brother != ((void *)0)) {
+ cnode2 = cnode2->brother;
+ }
+
+ cnode2->brother = node;
+
+ return(node_list);
+}
+
+
+
+static inline
+que_node_t*
+que_node_get_next(
+
+
+ que_node_t* node)
+{
+ return(((que_common_t*)node)->brother);
+}
+
+
+
+static inline
+ulint
+que_node_list_get_len(
+
+
+ que_node_t* node_list)
+{
+ que_common_t* cnode;
+ ulint len;
+
+ cnode = node_list;
+ len = 0;
+
+ while (cnode != ((void *)0)) {
+ len++;
+ cnode = cnode->brother;
+ }
+
+ return(len);
+}
+
+
+
+static inline
+que_node_t*
+que_node_get_parent(
+
+
+ que_node_t* node)
+{
+ return(((que_common_t*)node)->parent);
+}
+
+
+
+
+static inline
+ulint
+que_thr_peek_stop(
+
+
+
+
+
+
+ que_thr_t* thr)
+{
+ trx_t* trx;
+ que_t* graph;
+
+ graph = thr->graph;
+ trx = graph->trx;
+
+ if (graph->state != 1
+ || trx->que_state == 2
+ || ((trx->signals).count > 0
+ && trx->que_state == 1)) {
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+static inline
+ulint
+que_graph_is_select(
+
+
+ que_t* graph)
+{
+ if (graph->fork_type == 2
+ || graph->fork_type == 1) {
+
+ return((1));
+ }
+
+ return((0));
+}
+# 500 "./include/que0que.h" 2
+# 20 "./include/lock0lock.ic" 2
+# 1 "./include/btr0cur.h" 1
+# 19 "./include/btr0cur.h"
+# 1 "./include/ha0ha.h" 1
+# 19 "./include/ha0ha.h"
+static inline
+void*
+ha_search_and_get_data(
+
+
+
+
+ hash_table_t* table,
+ ulint fold);
+
+
+
+
+void
+ha_search_and_update_if_found(
+
+ hash_table_t* table,
+ ulint fold,
+ void* data,
+ void* new_data);
+
+
+
+
+hash_table_t*
+ha_create(
+
+
+ ulint in_btr_search,
+
+ ulint n,
+ ulint n_mutexes,
+
+ ulint mutex_level);
+
+
+
+
+
+
+ulint
+ha_insert_for_fold(
+
+
+
+ hash_table_t* table,
+ ulint fold,
+
+
+
+ void* data);
+
+
+
+static inline
+ulint
+ha_insert_for_fold_mutex(
+
+
+
+ hash_table_t* table,
+ ulint fold,
+
+
+
+ void* data);
+
+
+
+void
+ha_delete(
+
+ hash_table_t* table,
+ ulint fold,
+ void* data);
+
+
+
+
+static inline
+ulint
+ha_search_and_delete_if_found(
+
+
+ hash_table_t* table,
+ ulint fold,
+ void* data);
+
+
+
+
+void
+ha_remove_all_nodes_to_page(
+
+ hash_table_t* table,
+ ulint fold,
+ ib_page_t* page);
+
+
+
+ulint
+ha_validate(
+
+
+ hash_table_t* table,
+ ulint start_index,
+ ulint end_index);
+
+
+
+void
+ha_print_info(
+
+ FILE* file,
+ hash_table_t* table);
+
+
+
+typedef struct ha_node_struct ha_node_t;
+struct ha_node_struct {
+ ha_node_t* next;
+ void* data;
+ ulint fold;
+};
+
+
+# 1 "./include/ha0ha.ic" 1
+# 15 "./include/ha0ha.ic"
+void
+ha_delete_hash_node(
+
+ hash_table_t* table,
+ ha_node_t* del_node);
+
+
+
+static inline
+void*
+ha_node_get_data(
+
+
+ ha_node_t* node)
+{
+ return(node->data);
+}
+
+
+
+static inline
+void
+ha_node_set_data(
+
+ ha_node_t* node,
+ void* data)
+{
+ node->data = data;
+}
+
+
+
+static inline
+ha_node_t*
+ha_chain_get_next(
+
+
+ ha_node_t* node)
+{
+ return(node->next);
+}
+
+
+
+static inline
+ha_node_t*
+ha_chain_get_first(
+
+
+ hash_table_t* table,
+ ulint fold)
+{
+ return(hash_get_nth_cell(table, hash_calc_hash(fold, table))->node);
+}
+
+
+
+static inline
+ha_node_t*
+ha_search(
+
+
+
+
+ hash_table_t* table,
+ ulint fold)
+{
+ ha_node_t* node;
+
+
+
+
+
+ node = ha_chain_get_first(table, fold);
+
+ while (node) {
+ if (node->fold == fold) {
+
+ return(node);
+ }
+
+ node = ha_chain_get_next(node);
+ }
+
+ return(((void *)0));
+}
+
+
+
+static inline
+void*
+ha_search_and_get_data(
+
+
+
+
+ hash_table_t* table,
+ ulint fold)
+{
+ ha_node_t* node;
+
+
+
+
+
+ node = ha_chain_get_first(table, fold);
+
+ while (node) {
+ if (node->fold == fold) {
+
+ return(node->data);
+ }
+
+ node = ha_chain_get_next(node);
+ }
+
+ return(((void *)0));
+}
+
+
+
+static inline
+ha_node_t*
+ha_search_with_data(
+
+
+
+ hash_table_t* table,
+ ulint fold,
+ void* data)
+{
+ ha_node_t* node;
+
+
+
+
+
+ node = ha_chain_get_first(table, fold);
+
+ while (node) {
+ if (node->data == data) {
+
+ return(node);
+ }
+
+ node = ha_chain_get_next(node);
+ }
+
+ return(((void *)0));
+}
+
+
+
+
+static inline
+ulint
+ha_search_and_delete_if_found(
+
+
+ hash_table_t* table,
+ ulint fold,
+ void* data)
+{
+ ha_node_t* node;
+
+
+
+
+
+ node = ha_search_with_data(table, fold, data);
+
+ if (node) {
+ ha_delete_hash_node(table, node);
+
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+
+static inline
+ulint
+ha_insert_for_fold_mutex(
+
+
+
+ hash_table_t* table,
+ ulint fold,
+
+
+
+ void* data)
+{
+ ulint ret;
+
+ hash_mutex_enter(table, fold);
+
+ ret = ha_insert_for_fold(table, fold, data);
+
+ hash_mutex_exit(table, fold);
+
+ return(ret);
+}
+# 146 "./include/ha0ha.h" 2
+# 20 "./include/btr0cur.h" 2
+# 32 "./include/btr0cur.h"
+static inline
+page_cur_t*
+btr_cur_get_page_cur(
+
+
+ btr_cur_t* cursor);
+
+
+static inline
+rec_t*
+btr_cur_get_rec(
+
+
+ btr_cur_t* cursor);
+
+
+static inline
+void
+btr_cur_invalidate(
+
+ btr_cur_t* cursor);
+
+
+static inline
+ib_page_t*
+btr_cur_get_page(
+
+
+ btr_cur_t* cursor);
+
+
+static inline
+dict_tree_t*
+btr_cur_get_tree(
+
+
+ btr_cur_t* cursor);
+
+
+static inline
+void
+btr_cur_position(
+
+ dict_index_t* index,
+ rec_t* rec,
+ btr_cur_t* cursor);
+# 86 "./include/btr0cur.h"
+void
+btr_cur_search_to_nth_level(
+
+ dict_index_t* index,
+ ulint level,
+ dtuple_t* tuple,
+
+
+ ulint mode,
+
+
+
+
+
+
+ ulint latch_mode,
+# 111 "./include/btr0cur.h"
+ btr_cur_t* cursor,
+
+ ulint has_search_latch,
+
+
+ mtr_t* mtr);
+
+
+
+void
+btr_cur_open_at_index_side(
+
+ ulint from_left,
+
+ dict_index_t* index,
+ ulint latch_mode,
+ btr_cur_t* cursor,
+ mtr_t* mtr);
+
+
+
+void
+btr_cur_open_at_rnd_pos(
+
+ dict_index_t* index,
+ ulint latch_mode,
+ btr_cur_t* cursor,
+ mtr_t* mtr);
+
+
+
+
+
+
+
+ulint
+btr_cur_optimistic_insert(
+
+
+
+ ulint flags,
+
+
+ btr_cur_t* cursor,
+
+ dtuple_t* entry,
+ rec_t** rec,
+
+ big_rec_t** big_rec,
+
+
+ que_thr_t* thr,
+ mtr_t* mtr);
+
+
+
+
+
+
+ulint
+btr_cur_pessimistic_insert(
+
+
+ ulint flags,
+
+
+
+
+
+ btr_cur_t* cursor,
+
+ dtuple_t* entry,
+ rec_t** rec,
+
+ big_rec_t** big_rec,
+
+
+ que_thr_t* thr,
+ mtr_t* mtr);
+
+
+
+ulint
+btr_cur_update_in_place(
+
+
+ ulint flags,
+ btr_cur_t* cursor,
+
+
+ upd_t* update,
+ ulint cmpl_info,
+
+ que_thr_t* thr,
+ mtr_t* mtr);
+
+
+
+
+
+
+ulint
+btr_cur_optimistic_update(
+
+
+
+
+ ulint flags,
+ btr_cur_t* cursor,
+
+
+ upd_t* update,
+
+ ulint cmpl_info,
+
+ que_thr_t* thr,
+ mtr_t* mtr);
+
+
+
+
+
+
+ulint
+btr_cur_pessimistic_update(
+
+
+ ulint flags,
+
+ btr_cur_t* cursor,
+ big_rec_t** big_rec,
+
+ upd_t* update,
+
+
+ ulint cmpl_info,
+
+ que_thr_t* thr,
+ mtr_t* mtr);
+
+
+
+
+
+
+ulint
+btr_cur_del_mark_set_clust_rec(
+
+
+
+ ulint flags,
+ btr_cur_t* cursor,
+ ulint val,
+ que_thr_t* thr,
+ mtr_t* mtr);
+
+
+
+ulint
+btr_cur_del_mark_set_sec_rec(
+
+
+
+ ulint flags,
+ btr_cur_t* cursor,
+ ulint val,
+ que_thr_t* thr,
+ mtr_t* mtr);
+
+
+
+
+void
+btr_cur_del_unmark_for_ibuf(
+
+ rec_t* rec,
+ mtr_t* mtr);
+
+
+
+
+
+
+
+void
+btr_cur_compress(
+
+ btr_cur_t* cursor,
+
+ mtr_t* mtr);
+
+
+
+
+
+
+
+ulint
+btr_cur_compress_if_useful(
+
+
+ btr_cur_t* cursor,
+
+
+ mtr_t* mtr);
+
+
+
+
+
+ulint
+btr_cur_optimistic_delete(
+
+
+
+ btr_cur_t* cursor,
+
+
+
+ mtr_t* mtr);
+# 339 "./include/btr0cur.h"
+ulint
+btr_cur_pessimistic_delete(
+
+
+ ulint* err,
+
+
+
+
+ ulint has_reserved_extents,
+
+
+
+ btr_cur_t* cursor,
+
+
+
+ ulint in_rollback,
+ mtr_t* mtr);
+
+
+
+unsigned char*
+btr_cur_parse_update_in_place(
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ ib_page_t* page,
+ dict_index_t* index);
+
+
+
+
+unsigned char*
+btr_cur_parse_del_mark_set_clust_rec(
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ dict_index_t* index,
+ ib_page_t* page);
+
+
+
+
+unsigned char*
+btr_cur_parse_del_mark_set_sec_rec(
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ ib_page_t* page);
+
+
+
+ib_longlong
+btr_estimate_n_rows_in_range(
+
+
+ dict_index_t* index,
+ dtuple_t* tuple1,
+ ulint mode1,
+ dtuple_t* tuple2,
+ ulint mode2);
+
+
+
+
+
+void
+btr_estimate_number_of_different_key_vals(
+
+ dict_index_t* index);
+
+
+
+
+
+
+void
+btr_cur_mark_extern_inherited_fields(
+
+ rec_t* rec,
+ const ulint* offsets,
+ upd_t* update,
+ mtr_t* mtr);
+
+
+
+
+
+void
+btr_cur_mark_dtuple_inherited_extern(
+
+ dtuple_t* entry,
+
+ ulint* ext_vec,
+
+ ulint n_ext_vec,
+ upd_t* update);
+
+
+
+void
+btr_cur_unmark_dtuple_extern_fields(
+
+ dtuple_t* entry,
+ ulint* ext_vec,
+
+ ulint n_ext_vec);
+
+
+
+
+
+ulint
+btr_store_big_rec_extern_fields(
+
+
+ dict_index_t* index,
+
+ rec_t* rec,
+ const ulint* offsets,
+
+
+
+ big_rec_t* big_rec_vec,
+
+ mtr_t* local_mtr);
+
+
+
+
+
+
+
+void
+btr_free_externally_stored_field(
+
+ dict_index_t* index,
+
+
+
+
+
+
+
+ unsigned char* data,
+
+
+ ulint local_len,
+ ulint do_not_free_inherited,
+
+
+ mtr_t* local_mtr);
+
+
+
+
+
+void
+btr_rec_free_externally_stored_fields(
+
+ dict_index_t* index,
+
+ rec_t* rec,
+ const ulint* offsets,
+ ulint do_not_free_inherited,
+
+
+ mtr_t* mtr);
+
+
+
+
+
+unsigned char*
+btr_rec_copy_externally_stored_field(
+
+
+ rec_t* rec,
+ const ulint* offsets,
+ ulint no,
+ ulint* len,
+ mem_heap_t* heap);
+
+
+
+
+
+
+unsigned char*
+btr_copy_externally_stored_field(
+
+
+ ulint* len,
+ unsigned char* data,
+
+
+ ulint local_len,
+ mem_heap_t* heap);
+
+
+
+
+
+
+
+ulint
+btr_push_update_extern_fields(
+
+
+ ulint* ext_vect,
+
+ const ulint* offsets,
+ upd_t* update);
+# 568 "./include/btr0cur.h"
+typedef struct btr_path_struct btr_path_t;
+struct btr_path_struct{
+ ulint nth_rec;
+
+
+
+
+ ulint n_recs;
+};
+
+
+
+
+
+
+struct btr_cur_struct {
+ dict_index_t* index;
+ page_cur_t page_cur;
+ ib_page_t* left_page;
+
+
+
+ que_thr_t* thr;
+
+
+
+
+
+
+
+ ulint flag;
+
+
+ ulint tree_height;
+
+
+ ulint up_match;
+# 618 "./include/btr0cur.h"
+ ulint up_bytes;
+
+
+
+ ulint low_match;
+
+
+
+
+
+
+
+ ulint low_bytes;
+
+
+
+ ulint n_fields;
+
+ ulint n_bytes;
+
+ ulint fold;
+
+
+ btr_path_t* path_arr;
+
+
+
+};
+# 695 "./include/btr0cur.h"
+extern ulint btr_cur_n_non_sea;
+extern ulint btr_cur_n_sea;
+extern ulint btr_cur_n_non_sea_old;
+extern ulint btr_cur_n_sea_old;
+
+
+
+void innobase_mysql_thd_init_innodb_scan_cont();
+void innobase_mysql_thd_increment_innodb_scan_cont(ulong length);
+void innobase_mysql_thd_init_innodb_scan_jump();
+void innobase_mysql_thd_increment_innodb_scan_jump(ulong length);
+void innobase_mysql_thd_init_innodb_scan_data();
+void innobase_mysql_thd_increment_innodb_scan_data(ulong length);
+void innobase_mysql_thd_init_innodb_scan_garbage();
+void innobase_mysql_thd_increment_innodb_scan_garbage(ulong length);
+
+
+# 1 "./include/btr0cur.ic" 1
+# 9 "./include/btr0cur.ic"
+# 1 "./include/btr0btr.h" 1
+# 10 "./include/btr0cur.ic" 2
+
+
+
+static inline
+page_cur_t*
+btr_cur_get_page_cur(
+
+
+ btr_cur_t* cursor)
+{
+ return(&(cursor->page_cur));
+}
+
+
+
+static inline
+rec_t*
+btr_cur_get_rec(
+
+
+ btr_cur_t* cursor)
+{
+ return(page_cur_get_rec(&(cursor->page_cur)));
+}
+
+
+
+static inline
+void
+btr_cur_invalidate(
+
+ btr_cur_t* cursor)
+{
+ page_cur_invalidate(&(cursor->page_cur));
+}
+
+
+
+static inline
+ib_page_t*
+btr_cur_get_page(
+
+
+ btr_cur_t* cursor)
+{
+ return(buf_frame_align(page_cur_get_rec(&(cursor->page_cur))));
+}
+
+
+
+static inline
+dict_tree_t*
+btr_cur_get_tree(
+
+
+ btr_cur_t* cursor)
+{
+ return((cursor->index)->tree);
+}
+
+
+
+static inline
+void
+btr_cur_position(
+
+ dict_index_t* index,
+ rec_t* rec,
+ btr_cur_t* cursor)
+{
+ page_cur_position(rec, btr_cur_get_page_cur(cursor));
+
+ cursor->index = index;
+}
+
+
+
+
+static inline
+ulint
+btr_cur_compress_recommendation(
+
+
+ btr_cur_t* cursor,
+ mtr_t* mtr)
+{
+ ib_page_t* page;
+
+ ;
+
+
+
+ page = btr_cur_get_page(cursor);
+
+ if ((page_get_data_size(page) < ((2 * 8192) / 2))
+ || ((btr_page_get_next(page, mtr) == 0xFFFFFFFF)
+ && (btr_page_get_prev(page, mtr) == 0xFFFFFFFF))) {
+
+
+
+
+
+
+ if (dict_tree_get_page((cursor->index)->tree)
+ == buf_frame_get_page_no(page)) {
+
+
+
+ return((0));
+ }
+
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+
+static inline
+ulint
+btr_cur_can_delete_without_compress(
+
+
+
+ btr_cur_t* cursor,
+ ulint rec_size,
+ mtr_t* mtr)
+{
+ ib_page_t* page;
+
+ ;
+
+
+
+ page = btr_cur_get_page(cursor);
+
+ if ((page_get_data_size(page) - rec_size < ((2 * 8192) / 2))
+ || ((btr_page_get_next(page, mtr) == 0xFFFFFFFF)
+ && (btr_page_get_prev(page, mtr) == 0xFFFFFFFF))
+ || (page_get_n_recs(page) < 2)) {
+
+
+
+
+
+
+ if (dict_tree_get_page((cursor->index)->tree)
+ == buf_frame_get_page_no(page)) {
+
+
+
+ return((1));
+ }
+
+ return((0));
+ }
+
+ return((1));
+}
+# 713 "./include/btr0cur.h" 2
+# 21 "./include/lock0lock.ic" 2
+
+
+
+
+
+
+static inline
+ulint
+lock_rec_fold(
+
+
+ ulint space,
+ ulint page_no)
+{
+ return(ut_fold_ulint_pair(space, page_no));
+}
+
+
+
+
+static inline
+ulint
+lock_rec_hash(
+
+
+ ulint space,
+ ulint page_no)
+{
+ return(hash_calc_hash(lock_rec_fold(space, page_no),
+ lock_sys->rec_hash));
+}
+
+
+
+
+static inline
+trx_t*
+lock_clust_rec_some_has_impl(
+
+
+
+ rec_t* rec,
+ dict_index_t* index,
+ const ulint* offsets)
+{
+ dulint trx_id;
+
+
+
+
+ ;
+ ;
+
+ trx_id = row_get_rec_trx_id(rec, index, offsets);
+
+ if (trx_is_active(trx_id)) {
+
+
+ return(trx_get_on_id(trx_id));
+ }
+
+ return(((void *)0));
+}
+# 679 "./include/lock0lock.h" 2
+# 33 "buf/buf0buf.c" 2
+# 1 "./include/btr0sea.h" 1
+# 23 "./include/btr0sea.h"
+void
+btr_search_sys_create(
+
+ ulint hash_size);
+
+
+static inline
+btr_search_t*
+btr_search_get_info(
+
+
+ dict_index_t* index);
+
+
+
+btr_search_t*
+btr_search_info_create(
+
+
+ mem_heap_t* heap);
+
+
+
+ulint
+btr_search_info_get_ref_count(
+
+
+ btr_search_t* info);
+
+
+static inline
+void
+btr_search_info_update(
+
+ dict_index_t* index,
+ btr_cur_t* cursor);
+
+
+
+
+
+
+ulint
+btr_search_guess_on_hash(
+
+
+ dict_index_t* index,
+ btr_search_t* info,
+ dtuple_t* tuple,
+ ulint mode,
+ ulint latch_mode,
+ btr_cur_t* cursor,
+ ulint has_search_latch,
+
+
+ mtr_t* mtr);
+
+
+
+
+
+
+void
+btr_search_move_or_delete_hash_entries(
+
+ ib_page_t* new_page,
+
+ ib_page_t* page,
+ dict_index_t* index);
+
+
+
+void
+btr_search_drop_page_hash_index(
+
+ ib_page_t* page);
+
+
+
+
+void
+btr_search_drop_page_hash_when_freed(
+
+ ulint space,
+ ulint page_no);
+
+
+
+void
+btr_search_update_hash_node_on_insert(
+
+ btr_cur_t* cursor);
+
+
+
+
+
+
+void
+btr_search_update_hash_on_insert(
+
+ btr_cur_t* cursor);
+
+
+
+
+
+
+void
+btr_search_update_hash_on_delete(
+
+ btr_cur_t* cursor);
+
+
+
+
+
+ulint
+btr_search_validate(void);
+# 153 "./include/btr0sea.h"
+struct btr_search_struct{
+ ulint magic_n;
+ ulint ref_count;
+
+
+
+
+
+
+
+ rec_t* last_search;
+
+ ulint n_direction;
+
+ ulint direction;
+
+
+ dulint modify_clock;
+
+
+
+
+
+ ib_page_t* root_guess;
+
+ ulint hash_analysis;
+
+
+ ulint last_hash_succ;
+
+
+
+
+ ulint n_hash_potential;
+
+
+
+ ulint n_fields;
+
+ ulint n_bytes;
+
+ ulint side;
+
+
+
+
+
+ ulint n_hash_succ;
+
+ ulint n_hash_fail;
+ ulint n_patt_succ;
+
+ ulint n_searches;
+};
+
+
+
+
+
+typedef struct btr_search_sys_struct btr_search_sys_t;
+
+struct btr_search_sys_struct{
+ hash_table_t* hash_index;
+};
+
+extern btr_search_sys_t* btr_search_sys;
+# 232 "./include/btr0sea.h"
+extern rw_lock_t* btr_search_latch_temp;
+
+
+
+
+
+
+extern ulint btr_search_n_hash_fail;
+# 267 "./include/btr0sea.h"
+# 1 "./include/btr0sea.ic" 1
+# 16 "./include/btr0sea.ic"
+void
+btr_search_info_update_slow(
+
+ btr_search_t* info,
+ btr_cur_t* cursor);
+
+
+
+static inline
+btr_search_t*
+btr_search_get_info(
+
+
+ dict_index_t* index)
+{
+ ;
+
+ return(index->search_info);
+}
+
+
+
+static inline
+void
+btr_search_info_update(
+
+ dict_index_t* index,
+ btr_cur_t* cursor)
+{
+ btr_search_t* info;
+
+
+
+
+
+
+ info = btr_search_get_info(index);
+
+ info->hash_analysis++;
+
+ if (info->hash_analysis < 17) {
+
+
+
+ return;
+
+ }
+
+ ;
+
+ btr_search_info_update_slow(info, cursor);
+}
+# 268 "./include/btr0sea.h" 2
+# 34 "buf/buf0buf.c" 2
+# 1 "./include/ibuf0ibuf.h" 1
+# 21 "./include/ibuf0ibuf.h"
+extern ibuf_t* ibuf;
+
+
+
+
+
+
+
+ibuf_data_t*
+ibuf_data_init_for_space(
+
+
+
+ ulint space);
+
+
+
+
+void
+ibuf_init_at_db_start(void);
+
+
+
+
+
+void
+ibuf_update_max_tablespace_id(void);
+
+
+
+
+void
+ibuf_bitmap_page_init(
+
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+
+
+
+void
+ibuf_reset_free_bits_with_type(
+
+ ulint type,
+ ib_page_t* page);
+# 76 "./include/ibuf0ibuf.h"
+void
+ibuf_reset_free_bits(
+
+ dict_index_t* index,
+ ib_page_t* page);
+
+
+
+
+
+
+
+static inline
+void
+ibuf_update_free_bits_if_full(
+
+ dict_index_t* index,
+ ib_page_t* page,
+
+
+
+
+ ulint max_ins_size,
+
+
+ ulint increase);
+
+
+
+
+
+
+
+void
+ibuf_update_free_bits_low(
+
+ dict_index_t* index,
+ ib_page_t* page,
+ ulint max_ins_size,
+
+
+ mtr_t* mtr);
+
+
+
+
+
+void
+ibuf_update_free_bits_for_two_pages_low(
+
+ dict_index_t* index,
+ ib_page_t* page1,
+ ib_page_t* page2,
+ mtr_t* mtr);
+
+
+
+static inline
+ulint
+ibuf_should_try(
+
+ dict_index_t* index,
+ ulint ignore_sec_unique);
+
+
+
+
+
+
+
+ulint
+ibuf_inside(void);
+
+
+
+
+
+static inline
+ulint
+ibuf_bitmap_page(
+
+
+ ulint page_no);
+
+
+
+ulint
+ibuf_page(
+
+
+ ulint space,
+ ulint page_no);
+
+
+
+ulint
+ibuf_page_low(
+
+
+ ulint space,
+ ulint page_no,
+ mtr_t* mtr);
+
+
+
+
+
+
+
+void
+ibuf_free_excess_pages(
+
+ ulint space);
+
+
+
+
+
+ulint
+ibuf_insert(
+
+
+ dtuple_t* entry,
+ dict_index_t* index,
+ ulint space,
+ ulint page_no,
+ que_thr_t* thr);
+# 211 "./include/ibuf0ibuf.h"
+void
+ibuf_merge_or_delete_for_page(
+
+ ib_page_t* page,
+
+ ulint space,
+ ulint page_no,
+ ulint update_ibuf_bitmap);
+# 228 "./include/ibuf0ibuf.h"
+void
+ibuf_delete_for_discarded_space(
+
+ ulint space);
+
+
+
+ulint
+ibuf_contract(
+
+
+
+
+ ulint sync);
+
+
+
+
+
+ulint
+ibuf_contract_for_n_pages(
+
+
+
+
+ ulint sync,
+
+
+ ulint n_pages);
+
+
+
+
+
+unsigned char*
+ibuf_parse_bitmap_init(
+
+
+ unsigned char* ptr,
+ unsigned char* end_ptr,
+ ib_page_t* page,
+ mtr_t* mtr);
+
+
+
+ulint
+ibuf_count_get(
+
+
+
+ ulint space,
+ ulint page_no);
+
+
+
+ulint
+ibuf_is_empty(void);
+
+
+
+
+
+void
+ibuf_print(
+
+ FILE* file);
+# 304 "./include/ibuf0ibuf.h"
+# 1 "./include/ibuf0ibuf.ic" 1
+# 12 "./include/ibuf0ibuf.ic"
+extern ulint ibuf_flush_count;
+# 21 "./include/ibuf0ibuf.ic"
+struct ibuf_data_struct{
+ ulint space;
+ ulint seg_size;
+
+ ulint size;
+ ulint empty;
+
+
+
+ ulint free_list_len;
+
+ ulint height;
+ dict_index_t* index;
+ struct { ibuf_data_t * prev; ibuf_data_t * next; } data_list;
+
+ ulint n_inserts;
+
+ ulint n_merges;
+ ulint n_merged_recs;
+};
+
+
+
+
+
+struct ibuf_struct{
+ ulint size;
+
+ ulint max_size;
+
+ ulint meter;
+
+
+
+ struct { ulint count; ibuf_data_t * start; ibuf_data_t * end; } data_list;
+
+
+};
+
+
+
+
+
+
+
+void
+ibuf_set_free_bits(
+
+ ulint type,
+ ib_page_t* page,
+
+ ulint val,
+ ulint max_val);
+
+
+
+
+
+
+static inline
+ulint
+ibuf_should_try(
+
+ dict_index_t* index,
+ ulint ignore_sec_unique)
+
+
+
+{
+ if (!(index->type & 1)
+ && (ignore_sec_unique || !(index->type & 2))
+ && ibuf->meter > 50) {
+
+ ibuf_flush_count++;
+
+ if (ibuf_flush_count % 8 == 0) {
+
+ buf_LRU_try_free_flushed_blocks();
+ }
+
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+static inline
+ulint
+ibuf_bitmap_page(
+
+
+ ulint page_no)
+{
+ if (page_no % (2 * 8192) == 1) {
+
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+static inline
+ulint
+ibuf_index_page_calc_free_bits(
+
+
+ ulint max_ins_size)
+
+{
+ ulint n;
+
+ n = max_ins_size / ((2 * 8192) / 32);
+
+ if (n == 3) {
+ n = 2;
+ }
+
+ if (n > 3) {
+ n = 3;
+ }
+
+ return(n);
+}
+
+
+
+static inline
+ulint
+ibuf_index_page_calc_free_from_bits(
+
+
+
+ ulint bits)
+{
+ ;
+
+ if (bits == 3) {
+ return(4 * (2 * 8192) / 32);
+ }
+
+ return(bits * (2 * 8192) / 32);
+}
+
+
+
+static inline
+ulint
+ibuf_index_page_calc_free(
+
+
+ ib_page_t* page)
+{
+ return(ibuf_index_page_calc_free_bits(
+ page_get_max_insert_size_after_reorganize(page, 1)));
+}
+
+
+
+
+
+
+static inline
+void
+ibuf_update_free_bits_if_full(
+
+ dict_index_t* index,
+ ib_page_t* page,
+
+
+
+
+ ulint max_ins_size,
+
+
+ ulint increase)
+
+
+{
+ ulint before;
+ ulint after;
+
+ before = ibuf_index_page_calc_free_bits(max_ins_size);
+
+ if (max_ins_size >= increase) {
+ ;
+
+ after = ibuf_index_page_calc_free_bits(max_ins_size
+ - increase);
+
+
+
+ } else {
+ after = ibuf_index_page_calc_free(page);
+ }
+
+ if (after == 0) {
+
+
+
+
+
+ buf_page_make_young(page);
+ }
+
+ if (before > after) {
+ ibuf_set_free_bits(index->type, page, after, before);
+ }
+}
+# 305 "./include/ibuf0ibuf.h" 2
+# 35 "buf/buf0buf.c" 2
+# 1 "./include/dict0dict.h" 1
+# 36 "buf/buf0buf.c" 2
+# 1 "./include/log0recv.h" 1
+# 37 "buf/buf0buf.c" 2
+# 1 "./include/log0log.h" 1
+# 38 "buf/buf0buf.c" 2
+# 1 "./include/trx0undo.h" 1
+# 39 "buf/buf0buf.c" 2
+# 1 "./include/srv0srv.h" 1
+# 40 "buf/buf0buf.c" 2
+# 1 "./include/trx0trx.h" 1
+# 41 "buf/buf0buf.c" 2
+
+
+trx_t* innobase_get_trx();
+# 229 "buf/buf0buf.c"
+static const int WAIT_FOR_READ = 20000;
+
+buf_pool_t* buf_pool = ((void *)0);
+# 246 "buf/buf0buf.c"
+ulint
+buf_calc_page_new_checksum(
+
+
+ unsigned char* page)
+{
+ ulint checksum;
+# 262 "buf/buf0buf.c"
+ checksum = ut_fold_binary(page + 4,
+ 26 - 4)
+ + ut_fold_binary(page + 38,
+ (2 * 8192) - 38
+ - 8);
+ checksum = checksum & 0xFFFFFFFFUL;
+
+ return(checksum);
+}
+# 280 "buf/buf0buf.c"
+ulint
+buf_calc_page_old_checksum(
+
+
+ unsigned char* page)
+{
+ ulint checksum;
+
+ checksum = ut_fold_binary(page, 26);
+
+ checksum = checksum & 0xFFFFFFFFUL;
+
+ return(checksum);
+}
+
+
+
+
+ulint
+buf_page_is_corrupted(
+
+
+ unsigned char* read_buf)
+{
+ ulint checksum;
+ ulint old_checksum;
+ ulint checksum_field;
+ ulint old_checksum_field;
+
+ dulint current_lsn;
+
+ if (mach_read_from_4(read_buf + 16 + 4)
+ != mach_read_from_4(read_buf + (2 * 8192)
+ - 8 + 4)) {
+
+
+
+
+ return((1));
+ }
+
+
+ if (recv_lsn_checks_on && log_peek_lsn(¤t_lsn)) {
+ if (ut_dulint_cmp(current_lsn,
+ mach_read_from_8(read_buf + 16))
+ < 0) {
+ ut_print_timestamp(stderr);
+
+ fprintf(stderr,
+" InnoDB: Error: page %lu log sequence number %lu %lu\n"
+"InnoDB: is in the future! Current system log sequence number %lu %lu.\n"
+"InnoDB: Your database may be corrupt or you may have copied the InnoDB\n"
+"InnoDB: tablespace but not the InnoDB log files. See\n"
+"InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html\n"
+"InnoDB: for more information.\n",
+ (ulong) mach_read_from_4(read_buf + 4),
+ (ulong) ut_dulint_get_high(
+ mach_read_from_8(read_buf + 16)),
+ (ulong) ut_dulint_get_low(
+ mach_read_from_8(read_buf + 16)),
+ (ulong) ut_dulint_get_high(current_lsn),
+ (ulong) ut_dulint_get_low(current_lsn));
+ }
+ }
+
+
+
+
+
+
+
+ if (srv_use_checksums) {
+ old_checksum = buf_calc_page_old_checksum(read_buf);
+
+ old_checksum_field = mach_read_from_4(read_buf + (2 * 8192)
+ - 8);
+
+
+
+
+
+
+ if (old_checksum_field != mach_read_from_4(read_buf + 16)
+ && old_checksum_field != old_checksum
+ && old_checksum_field != 0xDEADBEEFUL) {
+
+ return((1));
+ }
+
+ checksum = buf_calc_page_new_checksum(read_buf);
+ checksum_field = mach_read_from_4(read_buf + 0);
+
+
+
+
+ if (checksum_field != 0 && checksum_field != checksum
+ && checksum_field != 0xDEADBEEFUL) {
+
+ return((1));
+ }
+ }
+
+ return((0));
+}
+
+
+
+
+void
+buf_page_print(
+
+ unsigned char* read_buf)
+{
+ dict_index_t* index;
+ ulint checksum;
+ ulint old_checksum;
+
+ ut_print_timestamp(stderr);
+ fprintf(stderr, " InnoDB: Page dump in ascii and hex (%lu bytes):\n",
+ (ulint)(2 * 8192));
+ ut_print_buf(stderr, read_buf, (2 * 8192));
+ fputs("InnoDB: End of page dump\n", stderr);
+
+ checksum = srv_use_checksums ?
+ buf_calc_page_new_checksum(read_buf) : 0xDEADBEEFUL;
+ old_checksum = srv_use_checksums ?
+ buf_calc_page_old_checksum(read_buf) : 0xDEADBEEFUL;
+
+ ut_print_timestamp(stderr);
+ fprintf(stderr,
+" InnoDB: Page checksum %lu, prior-to-4.0.14-form checksum %lu\n"
+"InnoDB: stored checksum %lu, prior-to-4.0.14-form stored checksum %lu\n",
+ (ulong) checksum, (ulong) old_checksum,
+ (ulong) mach_read_from_4(read_buf + 0),
+ (ulong) mach_read_from_4(read_buf + (2 * 8192)
+ - 8));
+ fprintf(stderr,
+"InnoDB: Page lsn %lu %lu, low 4 bytes of lsn at page end %lu\n"
+"InnoDB: Page number (if stored to page already) %lu,\n"
+"InnoDB: space id (if created with >= MySQL-4.1.1 and stored already) %lu\n",
+ (ulong) mach_read_from_4(read_buf + 16),
+ (ulong) mach_read_from_4(read_buf + 16 + 4),
+ (ulong) mach_read_from_4(read_buf + (2 * 8192)
+ - 8 + 4),
+ (ulong) mach_read_from_4(read_buf + 4),
+ (ulong) mach_read_from_4(read_buf + 34));
+
+ if (mach_read_from_2(read_buf + 38 + 0)
+ == 1) {
+ fprintf(stderr,
+ "InnoDB: Page may be an insert undo log page\n");
+ } else if (mach_read_from_2(read_buf + 38
+ + 0)
+ == 2) {
+ fprintf(stderr,
+ "InnoDB: Page may be an update undo log page\n");
+ }
+
+ if (fil_page_get_type(read_buf) == 17855) {
+ fprintf(stderr,
+"InnoDB: Page may be an index page where index id is %lu %lu\n",
+ (ulong) ut_dulint_get_high(btr_page_get_index_id(read_buf)),
+ (ulong) ut_dulint_get_low(btr_page_get_index_id(read_buf)));
+
+
+
+
+ if (dict_sys != ((void *)0)) {
+
+ index = dict_index_find_on_id_low(
+ btr_page_get_index_id(read_buf));
+ if (index) {
+ fputs("InnoDB: (", stderr);
+ dict_index_name_print(stderr, ((void *)0), index);
+ fputs(")\n", stderr);
+ }
+ }
+ } else if (fil_page_get_type(read_buf) == 3) {
+ fputs("InnoDB: Page may be an 'inode' page\n", stderr);
+ } else if (fil_page_get_type(read_buf) == 4) {
+ fputs("InnoDB: Page may be an insert buffer free list page\n",
+ stderr);
+ }
+}
+
+
+
+static
+void
+buf_block_init(
+
+ buf_block_t* block,
+ unsigned char* frame)
+
+{
+ block->magic_n = 0;
+
+ block->state = 211;
+
+ block->frame = frame;
+
+ block->awe_info = ((void *)0);
+
+ block->buf_fix_count = 0;
+ block->io_fix = 0;
+
+ block->modify_clock = ut_dulint_zero;
+
+ block->file_page_was_freed = (0);
+
+ block->check_index_page_at_flush = (0);
+ block->index = ((void *)0);
+
+ block->in_free_list = (0);
+ block->in_LRU_list = (0);
+
+ block->n_pointers = 0;
+
+ mutex_create_func((&block->mutex), "buf/buf0buf.c", 498);
+ mutex_set_level(&block->mutex, 149);
+
+ rw_lock_create_func((&(block->lock)), "buf/buf0buf.c", 501);
+ ;
+
+
+
+
+
+}
+
+
+
+
+buf_pool_t*
+buf_pool_init(
+
+
+
+ ulint max_size,
+
+ ulint curr_size,
+
+
+ ulint n_frames)
+
+
+
+
+{
+ unsigned char* frame;
+ ulint i;
+ buf_block_t* block;
+
+ do { if (__builtin_expect(!((ulint)(max_size == curr_size)), (0))) { ut_dbg_assertion_failed("max_size == curr_size", "buf/buf0buf.c", (ulint) 533); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 533); } while (0); } while (0);
+ do { if (__builtin_expect(!((ulint)(srv_use_awe || n_frames == max_size)), (0))) { ut_dbg_assertion_failed("srv_use_awe || n_frames == max_size", "buf/buf0buf.c", (ulint) 534); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 534); } while (0); } while (0);
+
+ if (n_frames > curr_size) {
+ fprintf(stderr,
+"InnoDB: AWE: Error: you must specify in my.cnf .._awe_mem_mb larger\n"
+"InnoDB: than .._buffer_pool_size. Now the former is %lu pages,\n"
+"InnoDB: the latter %lu pages.\n", (ulong) curr_size, (ulong) n_frames);
+
+ return(((void *)0));
+ }
+
+ buf_pool = mem_alloc_func((sizeof(buf_pool_t)), "buf/buf0buf.c", 545);
+
+
+
+ mutex_create_func((&(buf_pool->mutex)), "buf/buf0buf.c", 549);
+ mutex_set_level(&(buf_pool->mutex), 150);
+
+ mutex_create_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 552);
+ mutex_create_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 553);
+ mutex_create_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 554);
+ rw_lock_create_func((&(buf_pool->hash_latch)), "buf/buf0buf.c", 555);
+ mutex_set_level(&(buf_pool->flush_list_mutex), 3000);
+ mutex_set_level(&(buf_pool->LRU_mutex), 3000);
+ mutex_set_level(&(buf_pool->free_mutex), 3000);
+ rw_lock_set_level(&(buf_pool->hash_latch), 3000);
+
+ mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 561);
+ mutex_enter_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 562);
+ mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 563);
+ rw_lock_x_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 564);
+ mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 565);
+
+ if (srv_use_awe) {
+
+
+
+
+ buf_pool->frame_mem = os_awe_allocate_virtual_mem_window(
+ (2 * 8192) * (n_frames + 1));
+
+
+
+
+ if ((curr_size % ((1024 * 1024) / (2 * 8192))) != 0) {
+
+ fprintf(stderr,
+"InnoDB: AWE: Error: physical memory must be allocated in full megabytes.\n"
+"InnoDB: Trying to allocate %lu database pages.\n",
+ (ulong) curr_size);
+
+ return(((void *)0));
+ }
+
+ if (!os_awe_allocate_physical_mem(&(buf_pool->awe_info),
+ curr_size / ((1024 * 1024) / (2 * 8192)))) {
+
+ return(((void *)0));
+ }
+
+ } else {
+ buf_pool->frame_mem = os_mem_alloc_large(
+ (2 * 8192) * (n_frames + 1),
+ (1), (0));
+ }
+
+ if (buf_pool->frame_mem == ((void *)0)) {
+
+ return(((void *)0));
+ }
+
+ buf_pool->blocks = ut_malloc(sizeof(buf_block_t) * max_size);
+
+ if (buf_pool->blocks == ((void *)0)) {
+
+ return(((void *)0));
+ }
+
+ buf_pool->max_size = max_size;
+ buf_pool->curr_size = curr_size;
+
+ buf_pool->n_frames = n_frames;
+
+
+
+ frame = ut_align(buf_pool->frame_mem, (2 * 8192));
+
+ buf_pool->frame_zero = frame;
+ buf_pool->high_end = frame + (2 * 8192) * n_frames;
+
+ if (srv_use_awe) {
+
+
+
+
+ os_awe_map_physical_mem_to_window(buf_pool->frame_zero,
+ n_frames *
+ ((2 * 8192) / 4096),
+ buf_pool->awe_info);
+
+ }
+
+ buf_pool->blocks_of_frames = ut_malloc(sizeof(void*) * n_frames);
+
+ if (buf_pool->blocks_of_frames == ((void *)0)) {
+
+ return(((void *)0));
+ }
+
+
+
+
+
+
+ for (i = 0; i < max_size; i++) {
+
+ block = buf_pool_get_nth_block(buf_pool, i);
+
+ if (i < n_frames) {
+ frame = buf_pool->frame_zero + i * (2 * 8192);
+ *(buf_pool->blocks_of_frames + i) = block;
+ } else {
+ frame = ((void *)0);
+ }
+
+ buf_block_init(block, frame);
+
+ if (srv_use_awe) {
+
+ block->awe_info = buf_pool->awe_info
+ + i * ((2 * 8192) / 4096);
+
+ }
+ }
+
+ buf_pool->page_hash = hash0_create(2 * max_size);
+ buf_pool->io_counter_hash = ((void *)0);
+ buf_pool->io_counter_heap = ((void *)0);
+ buf_pool->io_counters = 0;
+
+ buf_pool->n_pend_reads = 0;
+
+ buf_pool->last_printout_time = time(((void *)0));
+
+ buf_pool->n_pages_read = 0;
+ buf_pool->n_pages_written = 0;
+ buf_pool->n_pages_created = 0;
+ buf_pool->n_pages_awe_remapped = 0;
+
+ buf_pool->n_page_gets = 0;
+ buf_pool->n_page_gets_old = 0;
+ buf_pool->n_pages_read_old = 0;
+ buf_pool->n_pages_written_old = 0;
+ buf_pool->n_pages_created_old = 0;
+ buf_pool->n_pages_awe_remapped_old = 0;
+
+
+
+ { (buf_pool->flush_list).count = 0; (buf_pool->flush_list).start = ((void *)0); (buf_pool->flush_list).end = ((void *)0);};
+
+ for (i = 1; i <= 3; i++) {
+ buf_pool->n_flush[i] = 0;
+ buf_pool->init_flush[i] = (0);
+ buf_pool->no_flush[i] = os_event_create(((void *)0));
+ }
+
+ buf_pool->LRU_flush_ended = 0;
+
+ buf_pool->ulint_clock = 1;
+ buf_pool->freed_page_clock = 0;
+
+
+
+ { (buf_pool->LRU).count = 0; (buf_pool->LRU).start = ((void *)0); (buf_pool->LRU).end = ((void *)0);};
+
+ buf_pool->LRU_old = ((void *)0);
+
+ { (buf_pool->awe_LRU_free_mapped).count = 0; (buf_pool->awe_LRU_free_mapped).start = ((void *)0); (buf_pool->awe_LRU_free_mapped).end = ((void *)0);};
+
+
+ { (buf_pool->free).count = 0; (buf_pool->free).start = ((void *)0); (buf_pool->free).end = ((void *)0);};
+
+ for (i = 0; i < curr_size; i++) {
+
+ block = buf_pool_get_nth_block(buf_pool, i);
+
+ if (block->frame) {
+
+
+
+
+
+
+ if (srv_use_awe) {
+
+
+
+ { ; ((buf_pool->awe_LRU_free_mapped).count)++; ((block)->awe_LRU_free_mapped).prev = (buf_pool->awe_LRU_free_mapped).end; ((block)->awe_LRU_free_mapped).next = ((void *)0); if ((buf_pool->awe_LRU_free_mapped).end != ((void *)0)) { (((buf_pool->awe_LRU_free_mapped).end)->awe_LRU_free_mapped).next = (block); } (buf_pool->awe_LRU_free_mapped).end = (block); if ((buf_pool->awe_LRU_free_mapped).start == ((void *)0)) { (buf_pool->awe_LRU_free_mapped).start = (block); }};
+
+ }
+ }
+
+ { ; ((buf_pool->free).count)++; ((block)->free).prev = (buf_pool->free).end; ((block)->free).next = ((void *)0); if ((buf_pool->free).end != ((void *)0)) { (((buf_pool->free).end)->free).next = (block); } (buf_pool->free).end = (block); if ((buf_pool->free).start == ((void *)0)) { (buf_pool->free).start = (block); }};
+ block->in_free_list = (1);
+ }
+
+ mutex_exit(&(buf_pool->LRU_mutex));
+ mutex_exit(&(buf_pool->flush_list_mutex));
+ mutex_exit(&(buf_pool->free_mutex));
+ rw_lock_x_unlock_func(&(buf_pool->hash_latch));
+ mutex_exit(&(buf_pool->mutex));
+
+ if (srv_use_adaptive_hash_indexes) {
+ btr_search_sys_create(
+ curr_size * (2 * 8192) / sizeof(void*) / 64);
+ } else {
+
+ btr_search_sys_create(1000);
+ }
+
+ return(buf_pool);
+}
+
+
+
+
+
+void
+buf_awe_map_page_to_frame(
+
+ buf_block_t* block,
+
+ ulint add_to_mapped_list)
+
+
+
+{
+ buf_block_t* bck;
+
+
+
+
+ ;
+
+ if (block->frame) {
+
+ return;
+ }
+
+
+
+
+ bck = (buf_pool->awe_LRU_free_mapped).end;
+
+ while (bck) {
+ ulint skip;
+
+ mutex_enter_func((&bck->mutex), "buf/buf0buf.c", 791);
+
+ skip = (bck->state == 213
+ && (bck->buf_fix_count != 0 || bck->io_fix != 0));
+
+ if (skip) {
+ mutex_exit(&bck->mutex);
+
+
+ bck = (((bck)->awe_LRU_free_mapped).prev);
+ } else {
+
+
+ os_awe_map_physical_mem_to_window(
+ bck->frame,
+ (2 * 8192) / 4096,
+ block->awe_info);
+
+ block->frame = bck->frame;
+
+ *(buf_pool->blocks_of_frames
+ + (((ulint)(block->frame
+ - buf_pool->frame_zero))
+ >> 14))
+ = block;
+
+ bck->frame = ((void *)0);
+ { ; do { if (__builtin_expect(!((ulint)((buf_pool->awe_LRU_free_mapped).count > 0)), (0))) { ut_dbg_assertion_failed("(buf_pool->awe_LRU_free_mapped).count > 0", "buf/buf0buf.c", (ulint) 820); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 820); } while (0); } while (0); ((buf_pool->awe_LRU_free_mapped).count)--; if (((bck)->awe_LRU_free_mapped).next != ((void *)0)) { ((((bck)->awe_LRU_free_mapped).next)->awe_LRU_free_mapped).prev = ((bck)->awe_LRU_free_mapped).prev; } else { (buf_pool->awe_LRU_free_mapped).end = ((bck)->awe_LRU_free_mapped).prev; } if (((bck)->awe_LRU_free_mapped).prev != ((void *)0)) { ((((bck)->awe_LRU_free_mapped).prev)->awe_LRU_free_mapped).next = ((bck)->awe_LRU_free_mapped).next; } else { (buf_pool->awe_LRU_free_mapped).start = ((bck)->awe_LRU_free_mapped).next; }};
+
+
+
+ if (add_to_mapped_list) {
+ { ; ((buf_pool->awe_LRU_free_mapped).count)++; ((block)->awe_LRU_free_mapped).next = (buf_pool->awe_LRU_free_mapped).start; ((block)->awe_LRU_free_mapped).prev = ((void *)0); if ((buf_pool->awe_LRU_free_mapped).start != ((void *)0)) { (((buf_pool->awe_LRU_free_mapped).start)->awe_LRU_free_mapped).prev = (block); } (buf_pool->awe_LRU_free_mapped).start = (block); if ((buf_pool->awe_LRU_free_mapped).end == ((void *)0)) { (buf_pool->awe_LRU_free_mapped).end = (block); }};
+
+
+ }
+
+ buf_pool->n_pages_awe_remapped++;
+
+ mutex_exit(&bck->mutex);
+
+ return;
+ }
+ }
+
+ fprintf(stderr,
+"InnoDB: AWE: Fatal error: cannot find a page to unmap\n"
+"InnoDB: awe_LRU_free_mapped list length %lu\n",
+ (ulong) (buf_pool->awe_LRU_free_mapped).count);
+
+ do { if (__builtin_expect(!((ulint)(0)), (0))) { ut_dbg_assertion_failed("0", "buf/buf0buf.c", (ulint) 841); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 841); } while (0); } while (0);
+}
+
+
+
+static inline
+buf_block_t*
+buf_block_alloc(void)
+
+
+
+
+{
+ buf_block_t* block;
+
+ block = buf_LRU_get_free_block();
+
+ return(block);
+}
+
+
+
+
+static inline
+void
+buf_block_make_young(
+
+ buf_block_t* block)
+{
+
+
+
+
+
+
+
+ if (buf_pool->freed_page_clock >= block->freed_page_clock
+ + 1 + (buf_pool->curr_size / 4)) {
+
+ mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 880);
+
+
+
+ buf_LRU_make_block_young(block);
+ mutex_exit(&(buf_pool->LRU_mutex));
+ }
+}
+
+
+
+
+
+
+void
+buf_page_make_young(
+
+ buf_frame_t* frame)
+{
+ buf_block_t* block;
+
+ mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 901);
+
+ block = buf_block_align(frame);
+
+ do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "buf/buf0buf.c", (ulint) 905); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 905); } while (0); } while (0);
+
+ buf_LRU_make_block_young(block);
+
+ mutex_exit(&(buf_pool->LRU_mutex));
+}
+
+
+
+static inline
+void
+buf_block_free(
+
+ buf_block_t* block)
+{
+ mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 920);
+
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 922);
+
+ do { if (__builtin_expect(!((ulint)(block->state != 213)), (0))) { ut_dbg_assertion_failed("block->state != BUF_BLOCK_FILE_PAGE", "buf/buf0buf.c", (ulint) 924); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 924); } while (0); } while (0);
+
+ buf_LRU_block_free_non_file_page(block);
+
+ mutex_exit(&block->mutex);
+
+ mutex_exit(&(buf_pool->free_mutex));
+}
+
+
+
+
+buf_frame_t*
+buf_frame_alloc(void)
+
+
+{
+ return(buf_block_alloc()->frame);
+}
+
+
+
+
+void
+buf_frame_free(
+
+ buf_frame_t* frame)
+{
+ buf_block_free(buf_block_align(frame));
+}
+
+
+
+
+
+
+buf_block_t*
+buf_page_peek_block(
+
+
+
+
+ ulint space,
+ ulint offset)
+{
+ buf_block_t* block;
+
+ rw_lock_s_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 971);
+
+ block = buf_page_hash_get(space, offset);
+
+ rw_lock_s_unlock_func(&(buf_pool->hash_latch));
+
+ return(block);
+}
+
+
+
+
+
+void
+buf_reset_check_index_page_at_flush(
+
+ ulint space,
+ ulint offset)
+{
+ buf_block_t* block;
+
+ rw_lock_s_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 992);
+
+ block = buf_page_hash_get(space, offset);
+
+ if (block) {
+ block->check_index_page_at_flush = (0);
+ }
+
+ rw_lock_s_unlock_func(&(buf_pool->hash_latch));
+}
+
+
+
+
+
+
+ulint
+buf_page_peek_if_search_hashed(
+
+
+
+ ulint space,
+ ulint offset)
+{
+ buf_block_t* block;
+ ulint is_hashed;
+
+ rw_lock_s_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 1019);
+
+ block = buf_page_hash_get(space, offset);
+
+ if (!block) {
+ is_hashed = (0);
+ } else {
+ is_hashed = block->is_hashed;
+ }
+
+ rw_lock_s_unlock_func(&(buf_pool->hash_latch));
+
+ return(is_hashed);
+}
+
+
+
+
+
+ulint
+buf_page_peek(
+
+
+
+
+ ulint space,
+ ulint offset)
+{
+ if (buf_page_peek_block(space, offset)) {
+
+ return((1));
+ }
+
+ return((0));
+}
+
+
+
+
+
+
+
+buf_block_t*
+buf_page_set_file_page_was_freed(
+
+
+
+ ulint space,
+ ulint offset)
+{
+ buf_block_t* block;
+
+ rw_lock_s_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 1071);
+
+ block = buf_page_hash_get(space, offset);
+
+ if (block) {
+ block->file_page_was_freed = (1);
+ }
+
+ rw_lock_s_unlock_func(&(buf_pool->hash_latch));
+
+ return(block);
+}
+
+
+
+
+
+
+
+buf_block_t*
+buf_page_reset_file_page_was_freed(
+
+
+
+ ulint space,
+ ulint offset)
+{
+ buf_block_t* block;
+
+ rw_lock_s_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 1100);
+
+ block = buf_page_hash_get(space, offset);
+
+ if (block) {
+ block->file_page_was_freed = (0);
+ }
+
+ rw_lock_s_unlock_func(&(buf_pool->hash_latch));
+
+ return(block);
+}
+
+inline void _increment_page_get_statistics(buf_block_t* block, trx_t* trx)
+{
+ ulint block_hash;
+ ulint block_hash_byte;
+ unsigned char block_hash_offset;
+
+ ;
+
+ if (!srv_slow_log || !trx || !trx->take_stats)
+ return;
+
+ if (!trx->distinct_page_access_hash) {
+ trx->distinct_page_access_hash = mem_alloc_func((8192), "buf/buf0buf.c", 1125);
+ memset(trx->distinct_page_access_hash, 0, 8192);
+ }
+
+ block_hash = ut_hash_ulint((block->space << 20) + block->space +
+ block->offset, 8192 << 3);
+ block_hash_byte = block_hash >> 3;
+ block_hash_offset = (unsigned char) block_hash & 0x07;
+ if (block_hash_byte < 0 || block_hash_byte >= 8192)
+ fprintf(stderr, "!!! block_hash_byte = %lu block_hash_offset = %lu !!!\n", block_hash_byte, block_hash_offset);
+ if (block_hash_offset < 0 || block_hash_offset > 7)
+ fprintf(stderr, "!!! block_hash_byte = %lu block_hash_offset = %lu !!!\n", block_hash_byte, block_hash_offset);
+ if ((trx->distinct_page_access_hash[block_hash_byte] & ((unsigned char) 0x01 << block_hash_offset)) == 0)
+ trx->distinct_page_access++;
+ trx->distinct_page_access_hash[block_hash_byte] |= (unsigned char) 0x01 << block_hash_offset;
+ return;
+}
+
+
+
+
+buf_frame_t*
+buf_page_get_gen(
+
+
+ ulint space,
+ ulint offset,
+ ulint rw_latch,
+ buf_frame_t* guess,
+ ulint mode,
+
+ const char* file,
+ ulint line,
+ mtr_t* mtr)
+{
+ buf_block_t* block;
+ ulint accessed;
+ ulint fix_type;
+ ulint success;
+ ulint must_read;
+ trx_t* trx = ((void *)0);
+ ulint sec;
+ ulint ms;
+ ib_longlong start_time;
+ ib_longlong finish_time;
+
+ ;
+ ;
+
+
+ ;
+ ;
+
+
+ ;
+
+ if (srv_slow_log) {
+ trx = innobase_get_trx();
+ }
+ buf_pool->n_page_gets++;
+loop:
+ block = ((void *)0);
+
+
+ if (guess) {
+ block = buf_block_align(guess);
+
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1192);
+ if ((offset != block->offset) || (space != block->space)
+ || (block->state != 213)) {
+
+ mutex_exit(&block->mutex);
+ block = ((void *)0);
+ }
+ }
+
+ if (block == ((void *)0)) {
+ rw_lock_s_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 1202);
+ block = buf_page_hash_get(space, offset);
+ if(block) {
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1205);
+ }
+ rw_lock_s_unlock_func(&(buf_pool->hash_latch));
+ }
+
+ if (block == ((void *)0)) {
+
+
+
+
+ if (mode == 11) {
+
+ return(((void *)0));
+ }
+
+ buf_read_page(space, offset, trx);
+# 1229 "buf/buf0buf.c"
+ goto loop;
+ }
+
+
+
+ do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "buf/buf0buf.c", (ulint) 1234); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1234); } while (0); } while (0);
+
+ must_read = (0);
+
+ if (block->io_fix == 561) {
+
+ must_read = (1);
+
+ if (mode == 11) {
+
+
+ mutex_exit(&block->mutex);
+
+ return(((void *)0));
+ }
+ }
+
+
+
+
+ if (block->frame == ((void *)0)) {
+ do { if (__builtin_expect(!((ulint)(srv_use_awe)), (0))) { ut_dbg_assertion_failed("srv_use_awe", "buf/buf0buf.c", (ulint) 1255); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1255); } while (0); } while (0);
+
+
+
+
+
+ mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 1261);
+ buf_awe_map_page_to_frame(block, (1));
+ mutex_exit(&buf_pool->mutex);
+ }
+
+
+
+
+ buf_block_buf_fix_inc(block);
+
+
+
+
+
+ accessed = block->accessed;
+
+ block->accessed = (1);
+
+ mutex_exit(&block->mutex);
+
+ buf_block_make_young(block);
+# 1295 "buf/buf0buf.c"
+ do { if (__builtin_expect(!((ulint)(block->buf_fix_count > 0)), (0))) { ut_dbg_assertion_failed("block->buf_fix_count > 0", "buf/buf0buf.c", (ulint) 1295); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1295); } while (0); } while (0);
+ ;
+
+ if (mode == 12) {
+ if (rw_latch == 1) {
+ success = rw_lock_s_lock_func_nowait(&(block->lock),
+ file, line);
+ fix_type = 1;
+ } else {
+ ;
+ success = rw_lock_x_lock_func_nowait(&(block->lock),
+ file, line);
+ fix_type = 2;
+ }
+
+ if (!success) {
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1311);
+
+
+
+ if (__builtin_expect(block->buf_fix_count == 0, (0))) {
+ buf_print_diagnostic(mtr, block);
+ do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 1317); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+
+ block->buf_fix_count--;
+
+ mutex_exit(&block->mutex);
+
+
+
+
+ return(((void *)0));
+ }
+ } else if (rw_latch == 3) {
+
+ if (must_read) {
+
+
+
+ if (srv_slow_log && trx && trx->take_stats)
+ {
+ ut_usectime(&sec, &ms);
+ start_time = (ib_longlong)sec * 1000000 + ms;
+ }
+ for (;;) {
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1341);
+
+ if (block->io_fix == 561) {
+
+ mutex_exit(&block->mutex);
+
+ os_thread_sleep(WAIT_FOR_READ);
+ } else {
+
+ mutex_exit(&block->mutex);
+
+ break;
+ }
+ }
+ if (srv_slow_log && trx && trx->take_stats && start_time)
+ {
+ ut_usectime(&sec, &ms);
+ finish_time = (ib_longlong)sec * 1000000 + ms;
+ trx->io_reads_wait_timer += (ulint)(finish_time - start_time);
+ }
+ }
+
+ fix_type = 3;
+ } else if (rw_latch == 1) {
+
+ rw_lock_s_lock_func(&(block->lock), 0, file, line);
+
+ fix_type = 1;
+ } else {
+ rw_lock_x_lock_func(&(block->lock), 0, file, line);
+
+ fix_type = 2;
+ }
+
+ mtr_memo_push(mtr, block, fix_type);
+
+ if (!accessed) {
+
+
+
+ buf_read_ahead_linear(space, offset, trx);
+ }
+
+
+
+
+
+ if (srv_slow_log) {
+ _increment_page_get_statistics(block, trx);
+ }
+
+ return(block->frame);
+}
+
+
+
+
+
+ulint
+buf_page_optimistic_get_func(
+
+
+ ulint rw_latch,
+ buf_block_t* block,
+ buf_frame_t* guess,
+
+ dulint modify_clock,
+
+ const char* file,
+ ulint line,
+ mtr_t* mtr)
+{
+ ulint accessed;
+ ulint success;
+ ulint fix_type;
+ trx_t* trx = ((void *)0);
+
+ ;
+ ;
+
+
+
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1423);
+
+ if (__builtin_expect(block->state != 213, (0))
+ || __builtin_expect(block->frame != guess, (0))) {
+
+ mutex_exit(&block->mutex);
+
+ return((0));
+ }
+
+
+
+
+ buf_block_buf_fix_inc(block);
+
+ accessed = block->accessed;
+ block->accessed = (1);
+
+ mutex_exit(&block->mutex);
+
+ buf_block_make_young(block);
+
+
+
+ ;
+
+ if (rw_latch == 1) {
+ success = rw_lock_s_lock_func_nowait(&(block->lock),
+ file, line);
+ fix_type = 1;
+ } else {
+ success = rw_lock_x_lock_func_nowait(&(block->lock),
+ file, line);
+ fix_type = 2;
+ }
+
+ if (__builtin_expect(!success, (0))) {
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1460);
+
+
+
+ if (__builtin_expect(block->buf_fix_count == 0, (0))) {
+ buf_print_diagnostic(mtr, block);
+ do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 1466); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+
+ block->buf_fix_count--;
+
+ mutex_exit(&block->mutex);
+
+
+
+
+ return((0));
+ }
+
+ if (__builtin_expect(!(((modify_clock).low == (block->modify_clock).low) && ((modify_clock).high == (block->modify_clock).high)), (0))) {
+
+
+
+ if (rw_latch == 1) {
+ rw_lock_s_unlock_func(&(block->lock));
+ } else {
+ rw_lock_x_unlock_func(&(block->lock));
+ }
+
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1489);
+
+
+
+ if (__builtin_expect(block->buf_fix_count == 0, (0))) {
+ buf_print_diagnostic(mtr, block);
+ do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 1495); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+
+ block->buf_fix_count--;
+
+ mutex_exit(&block->mutex);
+
+
+
+
+ return((0));
+ }
+
+ mtr_memo_push(mtr, block, fix_type);
+# 1519 "buf/buf0buf.c"
+ do { if (__builtin_expect(!((ulint)(block->buf_fix_count > 0)), (0))) { ut_dbg_assertion_failed("block->buf_fix_count > 0", "buf/buf0buf.c", (ulint) 1519); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1519); } while (0); } while (0);
+
+ ;
+
+
+
+
+ if (__builtin_expect(!accessed, (0))) {
+
+
+
+ buf_read_ahead_linear(buf_frame_get_space_id(guess),
+ buf_frame_get_page_no(guess), trx);
+ }
+
+
+
+
+ buf_pool->n_page_gets++;
+
+ if (srv_slow_log) {
+ trx = innobase_get_trx();
+ _increment_page_get_statistics(block, trx);
+ }
+
+ return((1));
+}
+
+
+
+
+
+
+ulint
+buf_page_get_known_nowait(
+
+
+ ulint rw_latch,
+ buf_frame_t* guess,
+ ulint mode,
+ const char* file,
+ ulint line,
+ mtr_t* mtr)
+{
+ buf_block_t* block;
+ ulint success;
+ ulint fix_type;
+ trx_t* trx = ((void *)0);
+
+ ;
+ ;
+
+ block = buf_block_align(guess);
+
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1573);
+
+ if (block->state == 215) {
+
+
+
+
+
+
+
+ mutex_exit(&block->mutex);
+
+ return((0));
+ }
+
+ do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "buf/buf0buf.c", (ulint) 1588); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1588); } while (0); } while (0);
+
+
+
+
+ buf_block_buf_fix_inc(block);
+
+ mutex_exit(&block->mutex);
+
+ if (mode == 51) {
+ buf_block_make_young(block);
+ }
+
+ ;
+
+ if (rw_latch == 1) {
+ success = rw_lock_s_lock_func_nowait(&(block->lock),
+ file, line);
+ fix_type = 1;
+ } else {
+ success = rw_lock_x_lock_func_nowait(&(block->lock),
+ file, line);
+ fix_type = 2;
+ }
+
+ if (!success) {
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1614);
+
+
+
+ if (__builtin_expect(block->buf_fix_count == 0, (0))) {
+ buf_print_diagnostic(mtr, block);
+ do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 1620); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+
+ block->buf_fix_count--;
+
+ mutex_exit(&block->mutex);
+
+
+
+
+
+ return((0));
+ }
+
+ mtr_memo_push(mtr, block, fix_type);
+# 1644 "buf/buf0buf.c"
+ do { if (__builtin_expect(!((ulint)(block->buf_fix_count > 0)), (0))) { ut_dbg_assertion_failed("block->buf_fix_count > 0", "buf/buf0buf.c", (ulint) 1644); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1644); } while (0); } while (0);
+ ;
+# 1654 "buf/buf0buf.c"
+ buf_pool->n_page_gets++;
+
+ if (srv_slow_log) {
+ trx = innobase_get_trx();
+ _increment_page_get_statistics(block, trx);
+ }
+
+ return((1));
+}
+
+
+
+
+void
+buf_page_init_for_backup_restore(
+
+ ulint space,
+ ulint offset,
+
+ buf_block_t* block)
+{
+
+ block->magic_n = 41526563;
+
+ block->state = 213;
+ block->space = space;
+ block->offset = offset;
+
+ block->lock_hash_val = 0;
+
+ block->freed_page_clock = 0;
+
+ block->newest_modification = ut_dulint_zero;
+ block->oldest_modification = ut_dulint_zero;
+
+ block->accessed = (0);
+ block->buf_fix_count = 0;
+ block->io_fix = 0;
+
+ block->n_hash_helps = 0;
+ block->is_hashed = (0);
+ block->n_fields = 1;
+ block->n_bytes = 0;
+ block->side = 1;
+
+ block->file_page_was_freed = (0);
+}
+
+
+
+static
+void
+buf_page_init(
+
+ ulint space,
+ ulint offset,
+
+ buf_block_t* block)
+{
+
+
+
+
+ do { if (__builtin_expect(!((ulint)(block->state != 213)), (0))) { ut_dbg_assertion_failed("block->state != BUF_BLOCK_FILE_PAGE", "buf/buf0buf.c", (ulint) 1717); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1717); } while (0); } while (0);
+
+
+ block->magic_n = 41526563;
+
+ block->state = 213;
+ block->space = space;
+ block->offset = offset;
+
+ block->check_index_page_at_flush = (0);
+ block->index = ((void *)0);
+
+ block->lock_hash_val = lock_rec_hash(space, offset);
+
+
+
+ if (buf_page_hash_get(space, offset)) {
+ fprintf(stderr,
+"InnoDB: Error: page %lu %lu already found from the hash table\n",
+ (ulong) space,
+ (ulong) offset);
+
+
+
+
+
+
+ do { if (__builtin_expect(!((ulint)(0)), (0))) { ut_dbg_assertion_failed("0", "buf/buf0buf.c", (ulint) 1744); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1744); } while (0); } while (0);
+ }
+
+ do { hash_cell_t* cell3333; buf_block_t* struct3333; (block)->hash = ((void *)0); cell3333 = hash_get_nth_cell(buf_pool->page_hash, hash_calc_hash(buf_page_address_fold(space, offset), buf_pool->page_hash)); if (cell3333->node == ((void *)0)) { cell3333->node = block; } else { struct3333 = cell3333->node; while (struct3333->hash != ((void *)0)) { struct3333 = struct3333->hash; } struct3333->hash = block; }} while (0);
+
+
+ block->freed_page_clock = 0;
+
+ block->newest_modification = ut_dulint_zero;
+ block->oldest_modification = ut_dulint_zero;
+
+ block->accessed = (0);
+ block->buf_fix_count = 0;
+ block->io_fix = 0;
+
+ block->n_hash_helps = 0;
+ block->is_hashed = (0);
+ block->n_fields = 1;
+ block->n_bytes = 0;
+ block->side = 1;
+
+ block->file_page_was_freed = (0);
+}
+# 1780 "buf/buf0buf.c"
+buf_block_t*
+buf_page_init_for_read(
+
+
+ ulint* err,
+ ulint mode,
+ ulint space,
+ ib_longlong tablespace_version,
+
+
+ ulint offset)
+{
+ buf_block_t* block;
+ mtr_t mtr;
+
+ ;
+
+ *err = 10;
+
+ if (mode == 131) {
+
+
+ ;
+ ;
+
+ mtr_start(&mtr);
+
+ if (!ibuf_page_low(space, offset, &mtr)) {
+
+ mtr_commit(&mtr);
+
+ return(((void *)0));
+ }
+ } else {
+ ;
+ }
+
+ block = buf_block_alloc();
+
+ do { if (__builtin_expect(!((ulint)(block)), (0))) { ut_dbg_assertion_failed("block", "buf/buf0buf.c", (ulint) 1819); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 1819); } while (0); } while (0);
+
+ mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 1821);
+ rw_lock_x_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 1822);
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1823);
+
+ if (fil_tablespace_deleted_or_being_deleted_in_mem(space,
+ tablespace_version)) {
+ *err = 44;
+ }
+
+ if (*err == 44
+ || ((void *)0) != buf_page_hash_get(space, offset)) {
+
+
+
+
+ mutex_exit(&block->mutex);
+ mutex_exit(&(buf_pool->LRU_mutex));
+ rw_lock_x_unlock_func(&(buf_pool->hash_latch));
+
+ buf_block_free(block);
+
+ if (mode == 131) {
+
+ mtr_commit(&mtr);
+ }
+
+ return(((void *)0));
+ }
+
+ ;
+
+ buf_page_init(space, offset, block);
+ rw_lock_x_unlock_func(&(buf_pool->hash_latch));
+
+
+
+ buf_LRU_add_block(block, (1));
+ mutex_exit(&(buf_pool->LRU_mutex));
+
+ mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 1860);
+
+ block->io_fix = 561;
+
+ buf_pool->n_pend_reads++;
+# 1873 "buf/buf0buf.c"
+ rw_lock_x_lock_func( (&(block->lock)), (561), "buf/buf0buf.c", 1873);
+
+ mutex_exit(&block->mutex);
+ mutex_exit(&(buf_pool->mutex));
+
+ if (mode == 131) {
+
+ mtr_commit(&mtr);
+ }
+
+ return(block);
+}
+
+
+
+
+
+
+
+buf_frame_t*
+buf_page_create(
+
+
+ ulint space,
+ ulint offset,
+
+ mtr_t* mtr)
+{
+ buf_frame_t* frame;
+ buf_block_t* block;
+ buf_block_t* free_block = ((void *)0);
+
+ ;
+
+ free_block = buf_LRU_get_free_block();
+
+ mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 1909);
+ rw_lock_x_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 1910);
+
+ block = buf_page_hash_get(space, offset);
+
+ if (block != ((void *)0)) {
+
+
+
+ block->file_page_was_freed = (0);
+
+
+ mutex_exit(&(buf_pool->LRU_mutex));
+ rw_lock_x_unlock_func(&(buf_pool->hash_latch));
+
+ buf_block_free(free_block);
+
+ frame = buf_page_get_gen( space, offset, 3, ((void *)0), 14, "buf/buf0buf.c", 1926, mtr);
+
+ return(frame);
+ }
+# 1940 "buf/buf0buf.c"
+ block = free_block;
+
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 1942);
+
+ buf_page_init(space, offset, block);
+ rw_lock_x_unlock_func(&(buf_pool->hash_latch));
+
+
+ buf_LRU_add_block(block, (0));
+
+
+
+
+ buf_block_buf_fix_inc(block);
+
+ buf_pool->n_pages_created++;
+
+ mutex_exit(&(buf_pool->LRU_mutex));
+
+ mtr_memo_push(mtr, block, 3);
+
+ block->accessed = (1);
+
+ mutex_exit(&block->mutex);
+
+
+
+
+ ibuf_merge_or_delete_for_page(((void *)0), space, offset, (1));
+
+
+ buf_flush_free_margin((0));
+
+ frame = block->frame;
+
+
+
+
+
+
+
+ memset(frame + 26, 0, 8);
+# 1993 "buf/buf0buf.c"
+ return(frame);
+}
+
+
+
+
+
+void
+buf_page_io_complete(
+
+ buf_block_t* block)
+{
+ ulint io_type;
+ ulint read_page_no;
+ ulint flush_type;
+
+ buf_io_counter_t* io_counter;
+ ulint fold;
+
+ ;
+
+ do { if (__builtin_expect(!((ulint)(block->state == 213)), (0))) { ut_dbg_assertion_failed("block->state == BUF_BLOCK_FILE_PAGE", "buf/buf0buf.c", (ulint) 2014); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2014); } while (0); } while (0);
+
+
+
+
+
+
+
+ io_type = block->io_fix;
+
+ if (io_type == 561) {
+
+
+
+
+ read_page_no = mach_read_from_4((block->frame)
+ + 4);
+ if (read_page_no != 0
+ && !trx_doublewrite_page_inside(read_page_no)
+ && read_page_no != block->offset) {
+
+ fprintf(stderr,
+"InnoDB: Error: page n:o stored in the page read in is %lu, should be %lu!\n",
+ (ulong) read_page_no, (ulong) block->offset);
+ }
+
+
+
+ if (buf_page_is_corrupted(block->frame)) {
+ fprintf(stderr,
+ "InnoDB: Database page corruption on disk or a failed\n"
+ "InnoDB: file read of page %lu.\n", (ulong) block->offset);
+
+ fputs(
+ "InnoDB: You may have to recover from a backup.\n", stderr);
+
+ buf_page_print(block->frame);
+
+ fprintf(stderr,
+ "InnoDB: Database page corruption on disk or a failed\n"
+ "InnoDB: file read of page %lu.\n", (ulong) block->offset);
+ fputs(
+ "InnoDB: You may have to recover from a backup.\n", stderr);
+ fputs(
+ "InnoDB: It is also possible that your operating\n"
+ "InnoDB: system has corrupted its own file cache\n"
+ "InnoDB: and rebooting your computer removes the\n"
+ "InnoDB: error.\n"
+ "InnoDB: If the corrupt page is an index page\n"
+ "InnoDB: you can also try to fix the corruption\n"
+ "InnoDB: by dumping, dropping, and reimporting\n"
+ "InnoDB: the corrupt table. You can use CHECK\n"
+ "InnoDB: TABLE to scan your table for corruption.\n"
+ "InnoDB: See also "
+"InnoDB: http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html\n"
+ "InnoDB: about forcing recovery.\n", stderr);
+
+ if (srv_force_recovery < 1) {
+ fputs(
+ "InnoDB: Ending processing because of a corrupt database page.\n",
+ stderr);
+ exit(1);
+ }
+ }
+
+ if (recv_recovery_is_on()) {
+ recv_recover_page((0), (1), block->frame,
+ block->space, block->offset);
+ }
+
+ if (!recv_no_ibuf_operations) {
+ ibuf_merge_or_delete_for_page(block->frame,
+ block->space, block->offset, (1));
+ }
+ }
+# 2098 "buf/buf0buf.c"
+ if (io_type == 561) {
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 2099);
+ mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2100);
+
+ block->io_fix = 0;
+
+
+
+
+
+ ;
+ buf_pool->n_pend_reads--;
+ buf_pool->n_pages_read++;
+
+ rw_lock_x_unlock_func(&(block->lock));
+
+ if (srv_io_pattern && srv_io_pattern_trace_running) {
+ fold = buf_page_address_fold(block->space, block->offset);
+ { (io_counter) = (hash_get_nth_cell(buf_pool->io_counter_hash, hash_calc_hash(fold, buf_pool->io_counter_hash))->node); while ((io_counter) != ((void *)0)) { if ((io_counter->space == block->space) && (io_counter->offset == block->offset)) { break; } else { (io_counter) = ((io_counter)->hash); } }};
+
+ if (io_counter == ((void *)0) && buf_pool->io_counters < srv_io_pattern_size_limit) {
+ io_counter = mem_heap_alloc(buf_pool->io_counter_heap,(sizeof(buf_io_counter_t)));
+ io_counter->space = block->space;
+ io_counter->offset = block->offset;
+ io_counter->n_read = 0;
+ io_counter->n_write = 0;
+ do { hash_cell_t* cell3333; buf_io_counter_t* struct3333; (io_counter)->hash = ((void *)0); cell3333 = hash_get_nth_cell(buf_pool->io_counter_hash, hash_calc_hash(buf_page_address_fold(block->space, block->offset), buf_pool->io_counter_hash)); if (cell3333->node == ((void *)0)) { cell3333->node = io_counter; } else { struct3333 = cell3333->node; while (struct3333->hash != ((void *)0)) { struct3333 = struct3333->hash; } struct3333->hash = io_counter; }} while (0);
+
+ buf_pool->io_counters++;
+ }
+ if (io_counter != ((void *)0)) {
+ io_counter->index_id = ut_dulint_get_low(btr_page_get_index_id(buf_block_get_frame(block)));
+ io_counter->n_read++;
+ }
+ }
+
+ mutex_exit(&(buf_pool->mutex));
+ mutex_exit(&block->mutex);
+
+
+
+
+
+ } else {
+ ;
+
+ flush_type = block->flush_type;
+ if (flush_type == 1) {
+ mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 2146);
+ }
+ mutex_enter_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 2148);
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 2149);
+ mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2150);
+
+ block->io_fix = 0;
+
+
+
+
+ buf_flush_write_complete(block);
+
+ mutex_exit(&(buf_pool->flush_list_mutex));
+ if (flush_type == 1) {
+ mutex_exit(&(buf_pool->LRU_mutex));
+ }
+
+ rw_lock_s_unlock_func(&(block->lock));
+
+ if (srv_io_pattern && srv_io_pattern_trace_running) {
+ fold = buf_page_address_fold(block->space, block->offset);
+ { (io_counter) = (hash_get_nth_cell(buf_pool->io_counter_hash, hash_calc_hash(fold, buf_pool->io_counter_hash))->node); while ((io_counter) != ((void *)0)) { if ((io_counter->space == block->space) && (io_counter->offset == block->offset)) { break; } else { (io_counter) = ((io_counter)->hash); } }};
+
+ if (io_counter == ((void *)0) && buf_pool->io_counters < srv_io_pattern_size_limit) {
+ io_counter = mem_heap_alloc(buf_pool->io_counter_heap,(sizeof(buf_io_counter_t)));
+ io_counter->space = block->space;
+ io_counter->offset = block->offset;
+ io_counter->n_read = 0;
+ io_counter->n_write = 0;
+ do { hash_cell_t* cell3333; buf_io_counter_t* struct3333; (io_counter)->hash = ((void *)0); cell3333 = hash_get_nth_cell(buf_pool->io_counter_hash, hash_calc_hash(buf_page_address_fold(block->space, block->offset), buf_pool->io_counter_hash)); if (cell3333->node == ((void *)0)) { cell3333->node = io_counter; } else { struct3333 = cell3333->node; while (struct3333->hash != ((void *)0)) { struct3333 = struct3333->hash; } struct3333->hash = io_counter; }} while (0);
+
+ buf_pool->io_counters++;
+ }
+ if (io_counter != ((void *)0)) {
+ io_counter->index_id = ut_dulint_get_low(btr_page_get_index_id(buf_block_get_frame(block)));
+ io_counter->n_write++;
+ }
+ }
+
+ buf_pool->n_pages_written++;
+
+ mutex_exit(&(buf_pool->mutex));
+ mutex_exit(&block->mutex);
+
+
+
+
+
+
+ }
+
+
+
+
+
+
+
+}
+
+
+
+
+
+
+void
+buf_pool_invalidate(void)
+
+{
+ ulint freed;
+
+ ;
+
+ freed = (1);
+
+ while (freed) {
+ freed = buf_LRU_search_and_free_block(100);
+ }
+
+ mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 2225);
+
+ ;
+
+ mutex_exit(&(buf_pool->LRU_mutex));
+}
+
+
+
+
+ulint
+buf_validate(void)
+
+{
+ buf_block_t* block;
+ ulint i;
+ ulint n_single_flush = 0;
+ ulint n_lru_flush = 0;
+ ulint n_list_flush = 0;
+ ulint n_lru = 0;
+ ulint n_flush = 0;
+ ulint n_free = 0;
+ ulint n_page = 0;
+ ulint n_single_flush_tmp = 0;
+ ulint n_lru_flush_tmp = 0;
+ ulint n_list_flush_tmp = 0;
+
+ ;
+
+ mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 2254);
+ mutex_enter_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 2255);
+ mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 2256);
+ rw_lock_x_lock_func( (&(buf_pool->hash_latch)), 0, "buf/buf0buf.c", 2257);
+
+ mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2259);
+ n_single_flush_tmp = buf_pool->n_flush[2];
+ n_list_flush_tmp = buf_pool->n_flush[3];
+ n_lru_flush_tmp = buf_pool->n_flush[1];
+ mutex_exit(&(buf_pool->mutex));
+
+ for (i = 0; i < buf_pool->curr_size; i++) {
+
+ block = buf_pool_get_nth_block(buf_pool, i);
+
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 2269);
+
+ if (block->state == 213) {
+
+ do { if (__builtin_expect(!((ulint)(buf_page_hash_get(block->space, block->offset) == block)), (0))) { ut_dbg_assertion_failed("buf_page_hash_get(block->space, block->offset) == block", "buf/buf0buf.c", (ulint) 2274); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2274); } while (0); } while (0);
+
+ n_page++;
+
+
+
+
+
+
+ if (block->io_fix == 562) {
+
+ if (block->flush_type == 1) {
+ n_lru_flush++;
+ do { if (__builtin_expect(!((ulint)(rw_lock_is_locked(&(block->lock), 352))), (0))) { ut_dbg_assertion_failed("rw_lock_is_locked(&(block->lock), RW_LOCK_SHARED)", "buf/buf0buf.c", (ulint) 2287); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2287); } while (0); } while (0);
+
+ } else if (block->flush_type ==
+ 3) {
+ n_list_flush++;
+ } else if (block->flush_type ==
+ 2) {
+ n_single_flush++;
+ } else {
+ do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 2295); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+
+ } else if (block->io_fix == 561) {
+
+ do { if (__builtin_expect(!((ulint)(rw_lock_is_locked(&(block->lock), 351))), (0))) { ut_dbg_assertion_failed("rw_lock_is_locked(&(block->lock), RW_LOCK_EX)", "buf/buf0buf.c", (ulint) 2301); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2301); } while (0); } while (0);
+
+ }
+
+ n_lru++;
+
+ if (ut_dulint_cmp(block->oldest_modification,
+ ut_dulint_zero) > 0) {
+ n_flush++;
+ }
+
+ } else if (block->state == 211) {
+ n_free++;
+ }
+
+ mutex_exit(&block->mutex);
+ }
+
+ if (n_lru + n_free > buf_pool->curr_size) {
+ fprintf(stderr, "n LRU %lu, n free %lu\n", (ulong) n_lru, (ulong) n_free);
+ do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 2320); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+
+ do { if (__builtin_expect(!((ulint)((buf_pool->LRU).count == n_lru)), (0))) { ut_dbg_assertion_failed("UT_LIST_GET_LEN(buf_pool->LRU) == n_lru", "buf/buf0buf.c", (ulint) 2323); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2323); } while (0); } while (0);
+ if ((buf_pool->free).count != n_free) {
+ fprintf(stderr, "Free list len %lu, free blocks %lu\n",
+ (ulong) (buf_pool->free).count, (ulong) n_free);
+ do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 2327); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+ do { if (__builtin_expect(!((ulint)((buf_pool->flush_list).count == n_flush)), (0))) { ut_dbg_assertion_failed("UT_LIST_GET_LEN(buf_pool->flush_list) == n_flush", "buf/buf0buf.c", (ulint) 2329); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2329); } while (0); } while (0);
+
+ do { if (__builtin_expect(!((ulint)(n_single_flush_tmp == n_single_flush)), (0))) { ut_dbg_assertion_failed("n_single_flush_tmp == n_single_flush", "buf/buf0buf.c", (ulint) 2331); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2331); } while (0); } while (0);
+ do { if (__builtin_expect(!((ulint)(n_list_flush_tmp == n_list_flush)), (0))) { ut_dbg_assertion_failed("n_list_flush_tmp == n_list_flush", "buf/buf0buf.c", (ulint) 2332); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2332); } while (0); } while (0);
+ do { if (__builtin_expect(!((ulint)(n_lru_flush_tmp == n_lru_flush)), (0))) { ut_dbg_assertion_failed("n_lru_flush_tmp == n_lru_flush", "buf/buf0buf.c", (ulint) 2333); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2333); } while (0); } while (0);
+
+ mutex_exit(&(buf_pool->LRU_mutex));
+ mutex_exit(&(buf_pool->flush_list_mutex));
+ mutex_exit(&(buf_pool->free_mutex));
+ rw_lock_x_unlock_func(&(buf_pool->hash_latch));
+
+ do { if (__builtin_expect(!((ulint)(buf_LRU_validate())), (0))) { ut_dbg_assertion_failed("buf_LRU_validate()", "buf/buf0buf.c", (ulint) 2340); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2340); } while (0); } while (0);
+ do { if (__builtin_expect(!((ulint)(buf_flush_validate())), (0))) { ut_dbg_assertion_failed("buf_flush_validate()", "buf/buf0buf.c", (ulint) 2341); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2341); } while (0); } while (0);
+
+ return((1));
+}
+
+
+
+
+void
+buf_print(void)
+
+{
+ dulint* index_ids;
+ ulint* counts;
+ ulint size;
+ ulint i;
+ ulint j;
+ dulint id;
+ ulint n_found;
+ buf_frame_t* frame;
+ dict_index_t* index;
+
+ ;
+
+ size = buf_pool->curr_size;
+
+ index_ids = mem_alloc_func((sizeof(dulint) * size), "buf/buf0buf.c", 2367);
+ counts = mem_alloc_func((sizeof(ulint) * size), "buf/buf0buf.c", 2368);
+
+ mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 2370);
+ mutex_enter_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 2371);
+ mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 2372);
+
+ fprintf(stderr,
+ "buf_pool size %lu\n"
+ "database pages %lu\n"
+ "free pages %lu\n"
+ "modified database pages %lu\n"
+ "n pending reads %lu\n"
+ "n pending flush LRU %lu list %lu single page %lu\n"
+ "pages read %lu, created %lu, written %lu\n",
+ (ulong) size,
+ (ulong) (buf_pool->LRU).count,
+ (ulong) (buf_pool->free).count,
+ (ulong) (buf_pool->flush_list).count,
+ (ulong) buf_pool->n_pend_reads,
+ (ulong) buf_pool->n_flush[1],
+ (ulong) buf_pool->n_flush[3],
+ (ulong) buf_pool->n_flush[2],
+ (ulong) buf_pool->n_pages_read, buf_pool->n_pages_created,
+ (ulong) buf_pool->n_pages_written);
+
+
+
+ n_found = 0;
+
+ for (i = 0; i < size; i++) {
+ frame = buf_pool_get_nth_block(buf_pool, i)->frame;
+
+ if (fil_page_get_type(frame) == 17855) {
+
+ id = btr_page_get_index_id(frame);
+
+
+ j = 0;
+
+ while (j < n_found) {
+
+ if (ut_dulint_cmp(index_ids[j], id) == 0) {
+ (counts[j])++;
+
+ break;
+ }
+ j++;
+ }
+
+ if (j == n_found) {
+ n_found++;
+ index_ids[j] = id;
+ counts[j] = 1;
+ }
+ }
+ }
+
+ mutex_exit(&(buf_pool->LRU_mutex));
+ mutex_exit(&(buf_pool->flush_list_mutex));
+ mutex_exit(&(buf_pool->free_mutex));
+
+ for (i = 0; i < n_found; i++) {
+ index = dict_index_get_if_in_cache(index_ids[i]);
+
+ fprintf(stderr,
+ "Block count for index %lu in buffer is about %lu",
+ (ulong) ut_dulint_get_low(index_ids[i]),
+ (ulong) counts[i]);
+
+ if (index) {
+ _IO_putc (' ', stderr);
+ dict_index_name_print(stderr, ((void *)0), index);
+ }
+
+ _IO_putc ('\n', stderr);
+ }
+
+ mem_free_func((index_ids), "buf/buf0buf.c", 2445);
+ mem_free_func((counts), "buf/buf0buf.c", 2446);
+
+ do { if (__builtin_expect(!((ulint)(buf_validate())), (0))) { ut_dbg_assertion_failed("buf_validate()", "buf/buf0buf.c", (ulint) 2448); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } do if (__builtin_expect(ut_dbg_stop_threads, (0))) { ut_dbg_stop_thread("buf/buf0buf.c", (ulint) 2448); } while (0); } while (0);
+}
+# 2484 "buf/buf0buf.c"
+ulint
+buf_get_n_pending_ios(void)
+
+{
+ return(buf_pool->n_pend_reads
+ + buf_pool->n_flush[1]
+ + buf_pool->n_flush[3]
+ + buf_pool->n_flush[2]);
+}
+
+
+
+
+
+ulint
+buf_get_modified_ratio_pct(void)
+
+{
+ ulint ratio;
+
+ mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 2504);
+ mutex_enter_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 2505);
+ mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 2506);
+
+ ratio = (100 * (buf_pool->flush_list).count)
+ / (1 + (buf_pool->LRU).count
+ + (buf_pool->free).count);
+
+
+
+ mutex_exit(&(buf_pool->LRU_mutex));
+ mutex_exit(&(buf_pool->flush_list_mutex));
+ mutex_exit(&(buf_pool->free_mutex));
+
+ return(ratio);
+}
+
+
+
+
+void
+buf_print_io(
+
+ FILE* file)
+{
+ time_t current_time;
+ double time_elapsed;
+ ulint size;
+
+ ;
+ size = buf_pool->curr_size;
+
+ mutex_enter_func((&(buf_pool->LRU_mutex)), "buf/buf0buf.c", 2536);
+ mutex_enter_func((&(buf_pool->flush_list_mutex)), "buf/buf0buf.c", 2537);
+ mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 2538);
+ mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2539);
+
+ if (srv_use_awe) {
+ fprintf(stderr,
+ "AWE: Buffer pool memory frames %lu\n",
+ (ulong) buf_pool->n_frames);
+
+ fprintf(stderr,
+ "AWE: Database pages and free buffers mapped in frames %lu\n",
+ (ulong) (buf_pool->awe_LRU_free_mapped).count);
+ }
+ fprintf(file,
+ "Buffer pool size %lu\n"
+ "Buffer pool size, bytes %lu\n"
+ "Free buffers %lu\n"
+ "Database pages %lu\n"
+ "Modified db pages %lu\n"
+ "Pending reads %lu\n"
+ "Pending writes: LRU %lu, flush list %lu, single page %lu\n",
+ (ulong) size,
+ (ulong) size * (2 * 8192),
+ (ulong) (buf_pool->free).count,
+ (ulong) (buf_pool->LRU).count,
+ (ulong) (buf_pool->flush_list).count,
+ (ulong) buf_pool->n_pend_reads,
+ (ulong) buf_pool->n_flush[1]
+ + buf_pool->init_flush[1],
+ (ulong) buf_pool->n_flush[3]
+ + buf_pool->init_flush[3],
+ (ulong) buf_pool->n_flush[2]);
+
+ current_time = time(((void *)0));
+ time_elapsed = 0.001 + difftime(current_time,
+ buf_pool->last_printout_time);
+ buf_pool->last_printout_time = current_time;
+
+ fprintf(file,
+ "Pages read %lu, created %lu, written %lu\n"
+ "%.2f reads/s, %.2f creates/s, %.2f writes/s\n",
+ (ulong) buf_pool->n_pages_read,
+ (ulong) buf_pool->n_pages_created,
+ (ulong) buf_pool->n_pages_written,
+ (buf_pool->n_pages_read - buf_pool->n_pages_read_old)
+ / time_elapsed,
+ (buf_pool->n_pages_created - buf_pool->n_pages_created_old)
+ / time_elapsed,
+ (buf_pool->n_pages_written - buf_pool->n_pages_written_old)
+ / time_elapsed);
+
+ if (srv_use_awe) {
+ fprintf(file, "AWE: %.2f page remaps/s\n",
+ (buf_pool->n_pages_awe_remapped
+ - buf_pool->n_pages_awe_remapped_old)
+ / time_elapsed);
+ }
+
+ if (buf_pool->n_page_gets > buf_pool->n_page_gets_old) {
+ fprintf(file, "Buffer pool hit rate %lu / 1000\n",
+ (ulong) (1000
+ - ((1000 *
+ (buf_pool->n_pages_read - buf_pool->n_pages_read_old))
+ / (buf_pool->n_page_gets - buf_pool->n_page_gets_old))));
+ } else {
+ fputs("No buffer pool page gets since the last printout\n",
+ file);
+ }
+
+ buf_pool->n_page_gets_old = buf_pool->n_page_gets;
+ buf_pool->n_pages_read_old = buf_pool->n_pages_read;
+ buf_pool->n_pages_created_old = buf_pool->n_pages_created;
+ buf_pool->n_pages_written_old = buf_pool->n_pages_written;
+ buf_pool->n_pages_awe_remapped_old = buf_pool->n_pages_awe_remapped;
+
+ mutex_exit(&(buf_pool->LRU_mutex));
+ mutex_exit(&(buf_pool->flush_list_mutex));
+ mutex_exit(&(buf_pool->free_mutex));
+ mutex_exit(&(buf_pool->mutex));
+}
+
+
+
+
+void
+buf_refresh_io_stats(void)
+
+{
+ buf_pool->last_printout_time = time(((void *)0));
+ buf_pool->n_page_gets_old = buf_pool->n_page_gets;
+ buf_pool->n_pages_read_old = buf_pool->n_pages_read;
+ buf_pool->n_pages_created_old = buf_pool->n_pages_created;
+ buf_pool->n_pages_written_old = buf_pool->n_pages_written;
+ buf_pool->n_pages_awe_remapped_old = buf_pool->n_pages_awe_remapped;
+}
+
+
+
+
+ulint
+buf_all_freed(void)
+
+{
+ buf_block_t* block;
+ ulint i;
+
+ ;
+
+ for (i = 0; i < buf_pool->curr_size; i++) {
+
+ block = buf_pool_get_nth_block(buf_pool, i);
+
+ mutex_enter_func((&block->mutex), "buf/buf0buf.c", 2649);
+
+ if (block->state == 213) {
+
+ if (!buf_flush_ready_for_replace(block)) {
+
+ fprintf(stderr,
+ "Page %lu %lu still fixed or dirty\n",
+ (ulong) block->space,
+ (ulong) block->offset);
+ do { ut_dbg_assertion_failed(0, "buf/buf0buf.c", (ulint) 2659); if (*(ut_dbg_null_ptr)) ut_dbg_null_ptr = ((void *)0); } while (0);
+ }
+ }
+
+ mutex_exit(&block->mutex);
+ }
+
+ return((1));
+}
+
+
+
+
+
+ulint
+buf_pool_check_no_pending_io(void)
+
+
+{
+ ulint ret;
+
+ mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2680);
+
+ if (buf_pool->n_pend_reads + buf_pool->n_flush[1]
+ + buf_pool->n_flush[3]
+ + buf_pool->n_flush[2]) {
+ ret = (0);
+ } else {
+ ret = (1);
+ }
+
+ mutex_exit(&(buf_pool->mutex));
+
+ return(ret);
+}
+
+
+
+
+ulint
+buf_get_free_list_len(void)
+
+{
+ ulint len;
+
+ mutex_enter_func((&(buf_pool->free_mutex)), "buf/buf0buf.c", 2704);
+
+ len = (buf_pool->free).count;
+
+ mutex_exit(&(buf_pool->free_mutex));
+
+ return(len);
+}
+
+
+
+
+void
+buf_block_print(
+
+ const buf_block_t* block)
+{
+ fprintf(stderr,
+ "BLOCK fields\nmagic_n: 0x%lx\n"
+ "state: %lu frame: 0x%lx space:offset: 0x%lx:0x%lx\n"
+ "hash value: 0x%lx check_index_page_at_flush: %ld\n"
+ "newest_modification %lu:%lu oldest_modification %lu:%lu\n"
+ "flush_type: %lu in_free_list: %ld in_LRU_list: %ld\n"
+ "LRU_position: %ld freed_page_clock: %lu old: %ld\n"
+ "accessed: %ld buf_fix_count: %lu io_fix: %ld "
+ "modify_clock: %lu:%lu\n"
+ "n_hash_helps: %lu n_fields: %ld n_bytes: %lu side: %lu\n"
+ "is_hashed: %lu n_pointers: %lu curr_n_fields: %lu\n"
+ "curr_n_bytes: %lu curr_side: %lu index name: %s\n"
+ "file_page_was_freed: %lu\n",
+ block->magic_n, block->state, (ulint) block->frame,
+ block->space, block->offset, block->lock_hash_val,
+ block->check_index_page_at_flush,
+ ut_dulint_get_high(block->newest_modification),
+ ut_dulint_get_low(block->newest_modification),
+ ut_dulint_get_high(block->oldest_modification),
+ ut_dulint_get_low(block->oldest_modification),
+ block->flush_type, block->in_free_list, block->in_LRU_list,
+ block->LRU_position, block->freed_page_clock,
+ block->old, block->accessed, block->buf_fix_count,
+ block->io_fix,
+ ut_dulint_get_high(block->modify_clock),
+ ut_dulint_get_low(block->modify_clock),
+ block->n_hash_helps, block->n_fields, block->n_bytes,
+ block->side, block->is_hashed, block->n_pointers,
+ block->curr_n_fields, block->curr_n_bytes,
+ block->curr_side, block->index->name,
+ block->file_page_was_freed);
+}
+
+
+
+
+void
+buf_print_diagnostic(
+
+ mtr_t* mtr,
+ const buf_block_t* block)
+{
+ fprintf(stderr, "=== MTR ===\n");
+ mtr_print(mtr);
+ buf_LRU_print();
+ buf_print();
+ buf_LRU_validate();
+ buf_print_io(stderr);
+ fprintf(stderr, "=== BLOCK ===\n");
+ buf_block_print(block);
+}
+
+buf_block_t*
+buf_pool_get_nth_block_no_inline(
+
+
+ buf_pool_t* buf_pool,
+ ulint i) {
+
+return buf_pool_get_nth_block(buf_pool, i);
+
+}
+
+
+
+
+
+void
+buf_io_counter_control(void)
+
+{
+ ulint n;
+
+ mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2794);
+ if (srv_io_pattern_trace) {
+ if (buf_pool->io_counter_hash == ((void *)0)) {
+
+ buf_pool->io_counter_hash = hash0_create(20 * buf_pool->max_size);
+ buf_pool->io_counter_heap = mem_heap_create_func( (4096 * 1024), ((void *)0), 0, "buf/buf0buf.c", 2799);
+ buf_pool->io_counters = 0;
+
+ srv_io_pattern = (1);
+ }
+ } else {
+ if (buf_pool->io_counter_hash != ((void *)0)) {
+ srv_io_pattern = (0);
+
+ for (n = 0; n < buf_pool->io_counter_hash->n_cells; n++) {
+ (buf_pool->io_counter_hash->array + n)->node = ((void *)0);
+ }
+ mem_heap_free_func( (buf_pool->io_counter_heap), "buf/buf0buf.c", 2811);
+ buf_pool->io_counter_heap = ((void *)0);
+ buf_pool->io_counters = 0;
+
+ hash_table_free(buf_pool->io_counter_hash);
+ buf_pool->io_counter_hash = ((void *)0);
+ }
+ }
+ mutex_exit(&(buf_pool->mutex));
+}
+
+void
+buf_io_counter_clear(void)
+
+{
+ ulint n;
+
+ mutex_enter_func((&(buf_pool->mutex)), "buf/buf0buf.c", 2828);
+ if (buf_pool->io_counter_hash != ((void *)0)) {
+ for (n = 0; n < buf_pool->io_counter_hash->n_cells; n++) {
+ (buf_pool->io_counter_hash->array + n)->node = ((void *)0);
+ }
+ mem_heap_empty(buf_pool->io_counter_heap);
+ buf_pool->io_counters = 0;
+ }
+ mutex_exit(&(buf_pool->mutex));
+}
--- /dev/null
+typedef unsigned long int ulint;
+typedef long int lint;
+typedef struct rw_lock_struct rw_lock_t;
+struct rw_lock_struct {
+ volatile lint lock_word;
+ volatile ulint reader_count;
+ volatile ulint writer;
+};
+static inline ulint rw_lock_x_lock_func_nowait(rw_lock_t * lock,
+ const char *file_name,
+ ulint line)
+{
+ if (lock->reader_count == 0) {
+ if (__sync_lock_test_and_set(&(lock->writer), 351) == 350) {
+ retry_x_lock:if (__sync_sub_and_fetch(&(lock->lock_word), 0x00100000)
+ == 0) {
+ if (__sync_fetch_and_add
+ (&(lock->lock_word), 0x00100000) == 0)
+ goto retry_x_lock;
+ }
+ }
+ }
+}
+
+typedef struct mtr_struct mtr_t;
+typedef struct buf_block_struct buf_block_t;
+typedef unsigned char buf_frame_t;
+struct buf_block_struct {
+ rw_lock_t lock;
+ struct {
+ } awe_LRU_free_mapped;
+};
+buf_frame_t *buf_page_get_gen(ulint space, ulint offset, ulint rw_latch,
+ buf_frame_t * guess, ulint mode, const char *file,
+ ulint line, mtr_t * mtr)
+{
+ buf_block_t *block;
+ ulint success;
+ if (mode == 12) {
+ if (rw_latch == 1) {
+ success =
+ rw_lock_x_lock_func_nowait(&(block->lock), file,
+ line);
+ }
+ }
+}
--- /dev/null
+rw_lock_x_lock_func_nowait()
+{
+ volatile long int lock_word;
+ retry_x_lock:
+if (__sync_sub_and_fetch(&lock_word, 0x00100000))
+ if (__sync_fetch_and_add
+ (&lock_word, 0x00100000))
+ goto retry_x_lock;
+}
--- /dev/null
+#!/bin/bash
+#
+# Run like:
+# multidelta -level=# ./reduce-ice $FILE
+# levels: 0 0 1 1 2 2 10 10
+#
+
+FILE=buf0buf.i
+CC=powerpc64-unknown-linux-gnu-gcc
+CFLAGS="-O2"
+STRING="internal compiler error: in copyprop_hardreg_forward_1, at regrename.c"
+
+$CC -pipe -c $CFLAGS $FILE 2>&1 | grep "$STRING"
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=enblend.ii
CC=g++
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=fe_TestDsp.ii
CC=bfin-uclinux-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=test.i
CC=bfin-uclinux-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
echo "set FILE, CC, CFLAGS, STRING"
exit 1
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=netlib.i
CC=bfin-uclinux-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=ip_output.i
CC=bfin-uclinux-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=gsm0610_decode.i
CC=/usr/local/src/blackfin/toolchains/20070829/out-linux-uclibc/bin/bfin-linux-uclibc-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=test_builtin_func.i
CC=bfin-linux-uclibc-gcc
--- /dev/null
+void qt_addBitmapToPath(const unsigned char * image_data, int bpl, int w, int h)
+{
+ unsigned int *grid = new unsigned int[(w + 1) * (h + 1)];
+ for (int y = 0; y <= h; ++y) {
+ for (int x = 0; x <= w; ++x) {
+ bool topLeft = (x == 0) | (y == 0) ? false :
+ *(image_data + (y - 1) * bpl + ((x - 1) >> 3)) & (0x80 >> ((x - 1) & 7));
+ bool bottomLeft = (x == 0) | (y == h) ? false :
+ *(image_data + (y - 0) * bpl + ((x - 1) >> 3)) & (0x80 >> ((x - 1) & 7));
+ if (!bottomLeft & topLeft)
+ grid[y * (w + 1) + x] |= 4;
+ }
+ }
+}
--- /dev/null
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp"
+# 1 "<built-in>"
+#define __STDC__ 1
+#define __cplusplus 1
+#define __STDC_HOSTED__ 1
+#define __GNUC__ 4
+#define __GNUG__ 4
+#define __GNUC_MINOR__ 3
+#define __GNUC_PATCHLEVEL__ 4
+#define __SIZE_TYPE__ long unsigned int
+#define __PTRDIFF_TYPE__ long int
+#define __WCHAR_TYPE__ int
+#define __WINT_TYPE__ unsigned int
+#define __INTMAX_TYPE__ long long int
+#define __UINTMAX_TYPE__ long long unsigned int
+#define __GXX_WEAK__ 1
+#define __DEPRECATED 1
+#define __GXX_RTTI 1
+#define __EXCEPTIONS 1
+#define __GXX_ABI_VERSION 1002
+#define __SCHAR_MAX__ 127
+#define __SHRT_MAX__ 32767
+#define __INT_MAX__ 2147483647
+#define __LONG_MAX__ 2147483647L
+#define __LONG_LONG_MAX__ 9223372036854775807LL
+#define __WCHAR_MAX__ 2147483647
+#define __CHAR_BIT__ 8
+#define __INTMAX_MAX__ 9223372036854775807LL
+#define __FLT_EVAL_METHOD__ 0
+#define __DEC_EVAL_METHOD__ 2
+#define __FLT_RADIX__ 2
+#define __FLT_MANT_DIG__ 24
+#define __FLT_DIG__ 6
+#define __FLT_MIN_EXP__ (-125)
+#define __FLT_MIN_10_EXP__ (-37)
+#define __FLT_MAX_EXP__ 128
+#define __FLT_MAX_10_EXP__ 38
+#define __FLT_MAX__ 3.40282347e+38F
+#define __FLT_MIN__ 1.17549435e-38F
+#define __FLT_EPSILON__ 1.19209290e-7F
+#define __FLT_DENORM_MIN__ 1.40129846e-45F
+#define __FLT_HAS_DENORM__ 1
+#define __FLT_HAS_INFINITY__ 1
+#define __FLT_HAS_QUIET_NAN__ 1
+#define __DBL_MANT_DIG__ 53
+#define __DBL_DIG__ 15
+#define __DBL_MIN_EXP__ (-1021)
+#define __DBL_MIN_10_EXP__ (-307)
+#define __DBL_MAX_EXP__ 1024
+#define __DBL_MAX_10_EXP__ 308
+#define __DBL_MAX__ 1.7976931348623157e+308
+#define __DBL_MIN__ 2.2250738585072014e-308
+#define __DBL_EPSILON__ 2.2204460492503131e-16
+#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
+#define __DBL_HAS_DENORM__ 1
+#define __DBL_HAS_INFINITY__ 1
+#define __DBL_HAS_QUIET_NAN__ 1
+#define __LDBL_MANT_DIG__ 53
+#define __LDBL_DIG__ 15
+#define __LDBL_MIN_EXP__ (-1021)
+#define __LDBL_MIN_10_EXP__ (-307)
+#define __LDBL_MAX_EXP__ 1024
+#define __LDBL_MAX_10_EXP__ 308
+#define __DECIMAL_DIG__ 17
+#define __LDBL_MAX__ 1.7976931348623157e+308L
+#define __LDBL_MIN__ 2.2250738585072014e-308L
+#define __LDBL_EPSILON__ 2.2204460492503131e-16L
+#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
+#define __LDBL_HAS_DENORM__ 1
+#define __LDBL_HAS_INFINITY__ 1
+#define __LDBL_HAS_QUIET_NAN__ 1
+#define __DEC32_MANT_DIG__ 7
+#define __DEC32_MIN_EXP__ (-95)
+#define __DEC32_MAX_EXP__ 96
+#define __DEC32_MIN__ 1E-95DF
+#define __DEC32_MAX__ 9.999999E96DF
+#define __DEC32_EPSILON__ 1E-6DF
+#define __DEC32_DEN__ 0.000001E-95DF
+#define __DEC64_MANT_DIG__ 16
+#define __DEC64_MIN_EXP__ (-383)
+#define __DEC64_MAX_EXP__ 384
+#define __DEC64_MIN__ 1E-383DD
+#define __DEC64_MAX__ 9.999999999999999E384DD
+#define __DEC64_EPSILON__ 1E-15DD
+#define __DEC64_DEN__ 0.000000000000001E-383DD
+#define __DEC128_MANT_DIG__ 34
+#define __DEC128_MIN_EXP__ (-6143)
+#define __DEC128_MAX_EXP__ 6144
+#define __DEC128_MIN__ 1E-6143DL
+#define __DEC128_MAX__ 9.999999999999999999999999999999999E6144DL
+#define __DEC128_EPSILON__ 1E-33DL
+#define __DEC128_DEN__ 0.000000000000000000000000000000001E-6143DL
+#define __REGISTER_PREFIX__
+#define __USER_LABEL_PREFIX__ _
+#define __VERSION__ "4.3.4"
+#define __GNUC_GNU_INLINE__ 1
+#define __OPTIMIZE__ 1
+#define __FINITE_MATH_ONLY__ 0
+#define __pic__ 2
+#define __PIC__ 2
+#define __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 1
+#define __SIZEOF_INT__ 4
+#define __SIZEOF_LONG__ 4
+#define __SIZEOF_LONG_LONG__ 8
+#define __SIZEOF_SHORT__ 2
+#define __SIZEOF_FLOAT__ 4
+#define __SIZEOF_DOUBLE__ 8
+#define __SIZEOF_LONG_DOUBLE__ 8
+#define __SIZEOF_SIZE_T__ 4
+#define __SIZEOF_WCHAR_T__ 4
+#define __SIZEOF_WINT_T__ 4
+#define __SIZEOF_PTRDIFF_T__ 4
+#define __SIZEOF_POINTER__ 4
+#define __bfin 1
+#define __bfin__ 1
+#define bfin 1
+#define __BFIN 1
+#define __BFIN__ 1
+#define BFIN 1
+#define __ADSPBLACKFIN__ 1
+#define __ADSPLPBLACKFIN__ 1
+#define __SILICON_REVISION__ 0xffff
+#define __WORKAROUNDS_ENABLED 1
+#define __WORKAROUND_SPECULATIVE_LOADS 1
+#define __WORKAROUND_SPECULATIVE_SYNCS 1
+#define __WORKAROUND_RETS 1
+#define __BFIN_FDPIC__ 1
+#define __FDPIC__ 1
+#define __gnu_linux__ 1
+#define __linux 1
+#define __linux__ 1
+#define linux 1
+#define __unix 1
+#define __unix__ 1
+#define unix 1
+#define __ELF__ 1
+# 1 "<command-line>"
+#define _GNU_SOURCE 1
+#define QT_LINUX_NOMMU 1
+#define _REENTRANT 1
+#define QT_SHARED 1
+#define QT_BUILD_GUI_LIB 1
+#define QT_NO_USING_NAMESPACE 1
+#define QT_NO_CAST_TO_ASCII 1
+#define QT_ASCII_CAST_WARNINGS 1
+#define QT_MOC_COMPAT 1
+#define QT_RASTER_IMAGEENGINE 1
+#define QT_RASTER_PAINTENGINE 1
+#define QT_NO_FONTCONFIG 1
+#define QT_NO_FREETYPE 1
+#define QT_NO_OPENTYPE 1
+#define QT_NO_STYLE_MAC 1
+#define QT_NO_STYLE_WINDOWSVISTA 1
+#define QT_NO_STYLE_WINDOWSXP 1
+#define QT_NO_STYLE_GTK 1
+#define QT_NO_STYLE_WINDOWSCE 1
+#define QT_NO_STYLE_WINDOWSMOBILE 1
+#define Q_INTERNAL_QAPP_SRC 1
+#define QT_NO_DEBUG 1
+#define QT_NETWORK_LIB 1
+#define QT_CORE_LIB 1
+#define _LARGEFILE64_SOURCE 1
+#define _LARGEFILE_SOURCE 1
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp"
+# 42 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp"
+# 1 "../../include/QtCore/qdebug.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdebug.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdebug.h"
+#define QDEBUG_H
+
+# 1 "../../include/QtCore/qalgorithms.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qalgorithms.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qalgorithms.h"
+#define QALGORITHMS_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define QGLOBAL_H
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 43 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#define _STDDEF_H
+#define _STDDEF_H_
+
+#define _ANSI_STDDEF_H
+
+#define __STDDEF_H__
+# 141 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#define _PTRDIFF_T
+#define _T_PTRDIFF_
+#define _T_PTRDIFF
+#define __PTRDIFF_T
+#define _PTRDIFF_T_
+#define _BSD_PTRDIFF_T_
+#define ___int_ptrdiff_t_h
+#define _GCC_PTRDIFF_T
+
+
+
+typedef long int ptrdiff_t;
+# 163 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 189 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#define __size_t__
+#define __SIZE_T__
+#define _SIZE_T
+#define _SYS_SIZE_T_H
+#define _T_SIZE_
+#define _T_SIZE
+#define __SIZE_T
+#define _SIZE_T_
+#define _BSD_SIZE_T_
+#define _SIZE_T_DEFINED_
+#define _SIZE_T_DEFINED
+#define _BSD_SIZE_T_DEFINED_
+#define _SIZE_T_DECLARED
+#define ___int_size_t_h
+#define _GCC_SIZE_T
+#define _SIZET_
+
+
+
+#define __size_t
+
+
+
+
+
+typedef long unsigned int size_t;
+# 236 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 265 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#define __wchar_t__
+#define __WCHAR_T__
+#define _WCHAR_T
+#define _T_WCHAR_
+#define _T_WCHAR
+#define __WCHAR_T
+#define _WCHAR_T_
+#define _BSD_WCHAR_T_
+#define _WCHAR_T_DEFINED_
+#define _WCHAR_T_DEFINED
+#define _WCHAR_T_H
+#define ___int_wchar_t_h
+#define __INT_WCHAR_T_H
+#define _GCC_WCHAR_T
+#define _WCHAR_T_DECLARED
+# 292 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef _BSD_WCHAR_T_
+# 345 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 398 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 409 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h" 2
+
+#define QT_VERSION_STR "4.5.1"
+
+
+
+#define QT_VERSION 0x040501
+
+
+
+#define QT_VERSION_CHECK(major,minor,patch) ((major<<16)|(minor<<8)|(patch))
+
+#define QT_PACKAGEDATE_STR "2009-04-22"
+
+#define QT_PACKAGE_TAG "g8cfb0638c650b906fc0ddede4e5c1c391e81307c"
+
+
+# 1 "../../include/QtCore/qconfig.h" 1
+
+
+
+
+#define QT_EDITION QT_EDITION_OPENSOURCE
+
+
+
+#define Q_BIG_ENDIAN 4321
+#define Q_LITTLE_ENDIAN 1234
+#define QT_BUILD_KEY "bfin linux fdpic-g++ full-config"
+
+
+
+
+#define Q_BYTE_ORDER Q_LITTLE_ENDIAN
+
+
+
+#define QT_ARCH_BFIN
+
+
+
+
+#define QT_LARGEFILE_SUPPORT 64
+#define QT_POINTER_SIZE 4
+
+
+
+
+#define QT_BUILTIN_GIF_READER 1
+
+
+
+
+
+#define QT_NO_CUPS
+
+
+
+
+
+#define QT_NO_DBUS
+
+
+
+
+
+#define QT_NO_EXCEPTIONS
+
+
+
+
+
+#define QT_NO_GETIFADDRS
+
+
+
+
+
+#define QT_NO_GLIB
+
+
+
+
+
+#define QT_NO_GSTREAMER
+
+
+
+
+
+#define QT_NO_ICONV
+
+
+
+
+
+#define QT_NO_IMAGEFORMAT_JPEG
+
+
+
+
+
+#define QT_NO_IMAGEFORMAT_MNG
+
+
+
+
+
+#define QT_NO_IMAGEFORMAT_TIFF
+
+
+
+
+
+#define QT_NO_NAS
+
+
+
+
+
+#define QT_NO_NIS
+
+
+
+
+
+#define QT_NO_OPENGL
+
+
+
+
+
+#define QT_NO_OPENSSL
+
+
+
+
+
+#define QT_NO_PHONON
+
+
+
+
+
+#define QT_NO_QWS_KBD_QVFB
+
+
+
+
+
+#define QT_NO_QWS_KBD_SL5000
+
+
+
+
+
+#define QT_NO_QWS_KBD_TTY
+
+
+
+
+
+#define QT_NO_QWS_KBD_UM
+
+
+
+
+
+#define QT_NO_QWS_KBD_USB
+
+
+
+
+
+#define QT_NO_QWS_KBD_VR41XX
+
+
+
+
+
+#define QT_NO_QWS_KBD_YOPY
+
+
+
+
+
+#define QT_NO_QWS_MOUSE_BUS
+
+
+
+
+
+#define QT_NO_QWS_MOUSE_LINUXTP
+
+
+
+
+
+#define QT_NO_QWS_MOUSE_QVFB
+
+
+
+
+
+#define QT_NO_QWS_MOUSE_TSLIB
+
+
+
+
+
+#define QT_NO_QWS_MOUSE_VR41XX
+
+
+
+
+
+#define QT_NO_QWS_MOUSE_YOPY
+
+
+
+
+
+#define QT_NO_QWS_QVFB
+
+
+
+
+
+#define QT_NO_QWS_TRANSFORMED
+
+
+
+
+
+#define QT_NO_QWS_VNC
+
+
+
+
+
+#define QT_NO_SESSIONMANAGER
+# 235 "../../include/QtCore/qconfig.h"
+#define QT_NO_SXE
+
+
+
+
+
+#define QT_NO_WEBKIT
+
+
+
+
+
+#define QT_NO_XMLPATTERNS
+
+
+
+
+
+#define QT_NO_ZLIB
+
+
+
+
+
+#define QT_QWS_DEPTH_16
+
+
+
+
+
+#define QT_QWS_DEPTH_24
+
+
+
+
+
+#define QT_QWS_DEPTH_32
+
+
+
+
+
+#define QT_QWS_DEPTH_8
+
+
+
+
+
+#define QT_RUNTIME_XCURSOR
+
+
+
+
+
+#define QT_RUNTIME_XFIXES
+
+
+
+
+
+#define QT_RUNTIME_XINERAMA
+
+
+
+
+
+#define QT_RUNTIME_XINPUT
+
+
+
+
+
+#define QT_RUNTIME_XRANDR
+
+
+
+
+
+#define QT_USE_MATH_H_FLOATS
+
+
+
+#define Q_WS_QWS
+
+
+#define QT_VISIBILITY_AVAILABLE
+# 63 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h" 2
+
+
+
+
+
+
+#define QT_PREPEND_NAMESPACE(name) ::name
+#define QT_USE_NAMESPACE
+#define QT_BEGIN_NAMESPACE
+#define QT_END_NAMESPACE
+#define QT_BEGIN_INCLUDE_NAMESPACE
+#define QT_END_INCLUDE_NAMESPACE
+#define QT_BEGIN_MOC_NAMESPACE
+#define QT_END_MOC_NAMESPACE
+#define QT_FORWARD_DECLARE_CLASS(name) class name;
+#define QT_FORWARD_DECLARE_STRUCT(name) struct name;
+#define QT_MANGLE_NAMESPACE(name) name
+# 137 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define QT_BEGIN_HEADER
+#define QT_END_HEADER
+#define QT_BEGIN_INCLUDE_HEADER
+#define QT_END_INCLUDE_HEADER extern "C++"
+# 215 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_OS_LINUX
+# 285 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_OS_UNIX
+# 449 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_CC_GNU
+#define Q_C_CALLBACKS
+# 483 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_PACKED __attribute__ ((__packed__))
+#define Q_NO_PACKED_REFERENCE
+
+#define QT_NO_ARM_EABI
+# 697 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_CONSTRUCTOR_FUNCTION0(AFUNC) static const int AFUNC ## __init_variable__ = AFUNC();
+
+#define Q_CONSTRUCTOR_FUNCTION(AFUNC) Q_CONSTRUCTOR_FUNCTION0(AFUNC)
+
+
+
+#define Q_DESTRUCTOR_FUNCTION0(AFUNC) class AFUNC ## __dest_class__ { public: inline AFUNC ## __dest_class__() { } inline ~ AFUNC ## __dest_class__() { AFUNC(); } } AFUNC ## __dest_instance__;
+
+
+
+
+
+#define Q_DESTRUCTOR_FUNCTION(AFUNC) Q_DESTRUCTOR_FUNCTION0(AFUNC)
+
+
+
+
+#define Q_REQUIRED_RESULT __attribute__ ((warn_unused_result))
+# 771 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+
+
+
+
+
+
+
+
+
+typedef signed char qint8;
+typedef unsigned char quint8;
+typedef short qint16;
+typedef unsigned short quint16;
+typedef int qint32;
+typedef unsigned int quint32;
+
+
+
+
+
+
+#define Q_INT64_C(c) static_cast<long long>(c ## LL)
+#define Q_UINT64_C(c) static_cast<unsigned long long>(c ## ULL)
+typedef long long qint64;
+typedef unsigned long long quint64;
+
+
+typedef qint64 qlonglong;
+typedef quint64 qulonglong;
+# 809 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_INIT_RESOURCE(name) do { extern int QT_MANGLE_NAMESPACE(qInitResources_ ## name) (); QT_MANGLE_NAMESPACE(qInitResources_ ## name) (); } while (0)
+
+
+#define Q_CLEANUP_RESOURCE(name) do { extern int QT_MANGLE_NAMESPACE(qCleanupResources_ ## name) (); QT_MANGLE_NAMESPACE(qCleanupResources_ ## name) (); } while (0)
+# 824 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+template <int> class QUintForSize { private: typedef void Type; };
+template <> class QUintForSize<4> { public: typedef quint32 Type; };
+template <> class QUintForSize<8> { public: typedef quint64 Type; };
+template <typename T> class QUintForType : public QUintForSize<sizeof(T)> { };
+typedef QUintForType<void *>::Type quintptr;
+
+template <int> class QIntForSize { private: typedef void Type; };
+template <> class QIntForSize<4> { public: typedef qint32 Type; };
+template <> class QIntForSize<8> { public: typedef qint64 Type; };
+template <typename T> class QIntForType : public QIntForSize<sizeof(T)> { };
+typedef QIntForType<void *>::Type qptrdiff;
+
+
+
+
+
+
+typedef unsigned char uchar;
+typedef unsigned short ushort;
+typedef unsigned int uint;
+typedef unsigned long ulong;
+
+# 857 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define TRUE true
+#define FALSE false
+# 879 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define QT_STATIC_CONST static const
+#define QT_STATIC_CONST_IMPL const
+# 889 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_DECL_DEPRECATED __attribute__ ((__deprecated__))
+# 900 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_DECL_VARIABLE_DEPRECATED Q_DECL_DEPRECATED
+
+
+
+
+
+
+
+#define Q_DECL_CONSTRUCTOR_DEPRECATED Q_DECL_DEPRECATED
+# 930 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#undef QT_DEPRECATED
+#define QT_DEPRECATED
+#undef QT_DEPRECATED_VARIABLE
+#define QT_DEPRECATED_VARIABLE
+#undef QT_DEPRECATED_CONSTRUCTOR
+#define QT_DEPRECATED_CONSTRUCTOR
+# 968 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#undef QT_MOC_COMPAT
+#define QT_MOC_COMPAT
+
+
+
+#define QT_ASCII_CAST_WARN Q_DECL_DEPRECATED
+
+
+
+
+#define QT_ASCII_CAST_WARN_CONSTRUCTOR Q_DECL_CONSTRUCTOR_DEPRECATED
+# 998 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define QT_FASTCALL
+
+
+typedef int QNoImplicitBoolCast;
+# 1012 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+typedef double qreal;
+
+
+
+
+
+
+template <typename T>
+inline T qAbs(const T &t) { return t >= 0 ? t : -t; }
+
+inline int qRound(qreal d)
+{ return d >= 0.0 ? int(d + 0.5) : int(d - int(d-1) + 0.5) + int(d-1); }
+
+inline qint64 qRound64(qreal d)
+{ return d >= 0.0 ? qint64(d + 0.5) : qint64(d - qint64(d-1) + 0.5) + qint64(d-1); }
+
+template <typename T>
+inline const T &qMin(const T &a, const T &b) { if (a < b) return a; return b; }
+template <typename T>
+inline const T &qMax(const T &a, const T &b) { if (a < b) return b; return a; }
+template <typename T>
+inline const T &qBound(const T &min, const T &val, const T &max)
+{ return qMax(min, qMin(max, val)); }
+# 1065 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+class QDataStream;
+# 1081 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+# 1 "../../include/QtCore/qfeatures.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qfeatures.h" 1
+# 1 "../../include/QtCore/qfeatures.h" 2
+# 1082 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h" 2
+
+#define QT_SUPPORTS(FEATURE) (!defined(QT_NO_ ##FEATURE))
+
+
+
+
+
+#define Q_DECL_EXPORT __attribute__((visibility("default")))
+# 1099 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_DECL_IMPORT
+# 1197 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#undef QT_MAKEDLL
+#undef QT_DLL
+
+
+
+
+#define Q_CORE_EXPORT Q_DECL_EXPORT
+#define Q_GUI_EXPORT Q_DECL_EXPORT
+#define Q_SQL_EXPORT Q_DECL_EXPORT
+#define Q_NETWORK_EXPORT Q_DECL_EXPORT
+#define Q_SVG_EXPORT Q_DECL_EXPORT
+#define Q_OPENGL_EXPORT Q_DECL_EXPORT
+#define Q_XML_EXPORT Q_DECL_EXPORT
+#define Q_XMLPATTERNS_EXPORT Q_DECL_EXPORT
+#define Q_SCRIPT_EXPORT Q_DECL_EXPORT
+#define Q_SCRIPTTOOLS_EXPORT Q_DECL_EXPORT
+#define Q_COMPAT_EXPORT Q_DECL_EXPORT
+# 1243 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_CORE_EXPORT_INLINE Q_CORE_EXPORT inline
+#define Q_GUI_EXPORT_INLINE Q_GUI_EXPORT inline
+# 1259 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_AUTOTEST_EXPORT
+
+
+
+
+
+
+class QString;
+class __attribute__((visibility("default"))) QSysInfo {
+public:
+ enum Sizes {
+ WordSize = (sizeof(void *)<<3)
+ };
+# 1281 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+ enum Endian {
+ BigEndian,
+ LittleEndian
+
+
+
+
+
+
+ , ByteOrder = LittleEndian
+
+
+
+ };
+# 1358 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+};
+
+__attribute__((visibility("default"))) const char *qVersion();
+__attribute__((visibility("default"))) bool qSharedBuild();
+# 1396 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_OUTOFLINE_TEMPLATE
+
+
+#define Q_INLINE_TEMPLATE inline
+
+
+
+#define Q_TYPENAME typename
+# 1415 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_UNUSED(x) (void)x;
+# 1427 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define qPrintable(string) (string).toLocal8Bit().constData()
+
+
+__attribute__((visibility("default"))) void qDebug(const char *, ...)
+
+ __attribute__ ((format (printf, 1, 2)))
+
+;
+
+__attribute__((visibility("default"))) void qWarning(const char *, ...)
+
+ __attribute__ ((format (printf, 1, 2)))
+
+;
+
+class QString;
+__attribute__((visibility("default"))) QString qt_error_string(int errorCode = -1);
+__attribute__((visibility("default"))) void qCritical(const char *, ...)
+
+ __attribute__ ((format (printf, 1, 2)))
+
+;
+__attribute__((visibility("default"))) void qFatal(const char *, ...)
+
+ __attribute__ ((format (printf, 1, 2)))
+
+;
+
+
+
+
+__attribute__((visibility("default"))) void qErrnoWarning(int code, const char *msg, ...);
+__attribute__((visibility("default"))) void qErrnoWarning(const char *msg, ...);
+# 1470 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+class QDebug;
+class QNoDebug;
+
+__attribute__((visibility("default"))) inline QDebug qDebug();
+__attribute__((visibility("default"))) inline QDebug qWarning();
+__attribute__((visibility("default"))) inline QDebug qCritical();
+
+
+
+
+#define QT_NO_QDEBUG_MACRO if(1); else qDebug
+
+
+
+#define QT_NO_QWARNING_MACRO if(1); else qWarning
+
+
+
+
+
+inline void qt_noop() {}
+
+__attribute__((visibility("default"))) void qt_assert(const char *assertion, const char *file, int line);
+
+
+
+
+
+#define Q_ASSERT(cond) qt_noop()
+
+
+
+
+#define QT_NO_PAINT_DEBUG
+
+
+__attribute__((visibility("default"))) void qt_assert_x(const char *where, const char *what, const char *file, int line);
+
+
+
+
+
+#define Q_ASSERT_X(cond,where,what) qt_noop()
+
+
+
+__attribute__((visibility("default"))) void qt_check_pointer(const char *, int);
+
+
+
+
+#define Q_CHECK_PTR(p)
+
+
+
+#define Q_FUNC_INFO __PRETTY_FUNCTION__
+# 1551 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg = QtCriticalMsg };
+
+__attribute__((visibility("default"))) void qt_message_output(QtMsgType, const char *buf);
+
+typedef void (*QtMsgHandler)(QtMsgType, const char *);
+__attribute__((visibility("default"))) QtMsgHandler qInstallMsgHandler(QtMsgHandler);
+# 1605 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+template <typename T> class QBasicAtomicPointer;
+
+
+template <typename T>
+class QGlobalStatic
+{
+public:
+ QBasicAtomicPointer<T> pointer;
+ bool destroyed;
+};
+
+
+template <typename T>
+class QGlobalStaticDeleter
+{
+public:
+ QGlobalStatic<T> &globalStatic;
+ QGlobalStaticDeleter(QGlobalStatic<T> &_globalStatic)
+ : globalStatic(_globalStatic)
+ { }
+
+ inline ~QGlobalStaticDeleter()
+ {
+ delete globalStatic.pointer;
+ globalStatic.pointer = 0;
+ globalStatic.destroyed = true;
+ }
+};
+
+#define Q_GLOBAL_STATIC_INIT(TYPE,NAME) static QGlobalStatic<TYPE > this_ ##NAME = { Q_BASIC_ATOMIC_INITIALIZER(0), false }
+
+
+#define Q_GLOBAL_STATIC(TYPE,NAME) Q_GLOBAL_STATIC_INIT(TYPE, NAME); static TYPE *NAME() { if (!this_ ##NAME.pointer && !this_ ##NAME.destroyed) { TYPE *x = new TYPE; if (!this_ ##NAME.pointer.testAndSetOrdered(0, x)) delete x; else static QGlobalStaticDeleter<TYPE > cleanup(this_ ##NAME); } return this_ ##NAME.pointer; }
+# 1651 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_GLOBAL_STATIC_WITH_ARGS(TYPE,NAME,ARGS) Q_GLOBAL_STATIC_INIT(TYPE, NAME); static TYPE *NAME() { if (!this_ ##NAME.pointer && !this_ ##NAME.destroyed) { TYPE *x = new TYPE ARGS; if (!this_ ##NAME.pointer.testAndSetOrdered(0, x)) delete x; else static QGlobalStaticDeleter<TYPE > cleanup(this_ ##NAME); } return this_ ##NAME.pointer; }
+# 1665 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_GLOBAL_STATIC_WITH_INITIALIZER(TYPE,NAME,INITIALIZER) Q_GLOBAL_STATIC_INIT(TYPE, NAME); static TYPE *NAME() { if (!this_ ##NAME.pointer && !this_ ##NAME.destroyed) { TYPE *x = new TYPE; INITIALIZER; if (!this_ ##NAME.pointer.testAndSetOrdered(0, x)) delete x; else static QGlobalStaticDeleter<TYPE > cleanup(this_ ##NAME); } return this_ ##NAME.pointer; }
+# 1682 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+class QBool
+{
+ bool b;
+
+public:
+ inline explicit QBool(bool B) : b(B) {}
+ inline operator const void *() const
+ { return b ? static_cast<const void *>(this) : static_cast<const void *>(0); }
+};
+
+inline bool operator==(QBool b1, bool b2) { return !b1 == !b2; }
+inline bool operator==(bool b1, QBool b2) { return !b1 == !b2; }
+inline bool operator==(QBool b1, QBool b2) { return !b1 == !b2; }
+inline bool operator!=(QBool b1, bool b2) { return !b1 != !b2; }
+inline bool operator!=(bool b1, QBool b2) { return !b1 != !b2; }
+inline bool operator!=(QBool b1, QBool b2) { return !b1 != !b2; }
+
+static inline bool qFuzzyCompare(double p1, double p2)
+{
+ return (qAbs(p1 - p2) <= 0.000000000001 * qMin(qAbs(p1), qAbs(p2)));
+}
+
+static inline bool qFuzzyCompare(float p1, float p2)
+{
+ return (qAbs(p1 - p2) <= 0.00001f * qMin(qAbs(p1), qAbs(p2)));
+}
+
+
+
+
+
+
+static inline bool qIsNull(double d)
+{
+ union U {
+ double d;
+ quint64 u;
+ };
+ U val;
+ val.d = d;
+ return val.u == quint64(0);
+}
+
+
+
+
+
+
+static inline bool qIsNull(float f)
+{
+ union U {
+ float f;
+ quint32 u;
+ };
+ U val;
+ val.f = f;
+ return val.u == 0u;
+}
+# 1757 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_DUMMY_COMPARISON_OPERATOR(C)
+# 1772 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+template <typename T> inline bool qIsDetached(T &) { return true; }
+
+template <typename T>
+class QTypeInfo
+{
+public:
+ enum {
+ isPointer = false,
+ isComplex = true,
+ isStatic = true,
+ isLarge = (sizeof(T)>sizeof(void*)),
+ isDummy = false
+ };
+};
+
+template <typename T>
+class QTypeInfo<T*>
+{
+public:
+ enum {
+ isPointer = true,
+ isComplex = false,
+ isStatic = false,
+ isLarge = false,
+ isDummy = false
+ };
+};
+# 1830 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+enum {
+ Q_COMPLEX_TYPE = 0,
+ Q_PRIMITIVE_TYPE = 0x1,
+ Q_STATIC_TYPE = 0,
+ Q_MOVABLE_TYPE = 0x2,
+ Q_DUMMY_TYPE = 0x4
+};
+
+#define Q_DECLARE_TYPEINFO(TYPE,FLAGS) template <> class QTypeInfo<TYPE> { public: enum { isComplex = (((FLAGS) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((FLAGS) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(TYPE)>sizeof(void*)), isPointer = false, isDummy = (((FLAGS) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return #TYPE; } }
+# 1879 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_DECLARE_SHARED(TYPE) template <> inline bool qIsDetached<TYPE>(TYPE &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<TYPE>(TYPE &value1, TYPE &value2) { const TYPE::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+# 1893 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+template <> class QTypeInfo<bool> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(bool)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "bool"; } };
+template <> class QTypeInfo<char> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(char)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "char"; } };
+template <> class QTypeInfo<signed char> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(signed char)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "signed char"; } };
+template <> class QTypeInfo<uchar> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(uchar)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "uchar"; } };
+template <> class QTypeInfo<short> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(short)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "short"; } };
+template <> class QTypeInfo<ushort> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(ushort)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "ushort"; } };
+template <> class QTypeInfo<int> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(int)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "int"; } };
+template <> class QTypeInfo<uint> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(uint)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "uint"; } };
+template <> class QTypeInfo<long> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(long)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "long"; } };
+template <> class QTypeInfo<ulong> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(ulong)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "ulong"; } };
+template <> class QTypeInfo<qint64> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(qint64)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "qint64"; } };
+template <> class QTypeInfo<quint64> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(quint64)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "quint64"; } };
+template <> class QTypeInfo<float> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(float)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "float"; } };
+template <> class QTypeInfo<double> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(double)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "double"; } };
+
+template <> class QTypeInfo<long double> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(long double)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "long double"; } };
+
+
+
+
+
+
+__attribute__((visibility("default"))) void *qMalloc(size_t size);
+__attribute__((visibility("default"))) void qFree(void *ptr);
+__attribute__((visibility("default"))) void *qRealloc(void *ptr, size_t size);
+__attribute__((visibility("default"))) void *qMemCopy(void *dest, const void *src, size_t n);
+__attribute__((visibility("default"))) void *qMemSet(void *dest, int c, size_t n);
+# 1928 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define QT_NO_WARNINGS
+# 1960 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+class __attribute__((visibility("default"))) QFlag
+{
+ int i;
+public:
+ inline QFlag(int i);
+ inline operator int() const { return i; }
+};
+
+inline QFlag::QFlag(int ai) : i(ai) {}
+
+class __attribute__((visibility("default"))) QIncompatibleFlag
+{
+ int i;
+public:
+ inline explicit QIncompatibleFlag(int i);
+ inline operator int() const { return i; }
+};
+
+inline QIncompatibleFlag::QIncompatibleFlag(int ai) : i(ai) {}
+
+
+
+
+template<typename Enum>
+class QFlags
+{
+ typedef void **Zero;
+ int i;
+public:
+ typedef Enum enum_type;
+ inline QFlags(const QFlags &f) : i(f.i) {}
+ inline QFlags(Enum f) : i(f) {}
+ inline QFlags(Zero = 0) : i(0) {}
+ inline QFlags(QFlag f) : i(f) {}
+
+ inline QFlags &operator=(const QFlags &f) { i = f.i; return *this; }
+ inline QFlags &operator&=(int mask) { i &= mask; return *this; }
+ inline QFlags &operator&=(uint mask) { i &= mask; return *this; }
+ inline QFlags &operator|=(QFlags f) { i |= f.i; return *this; }
+ inline QFlags &operator|=(Enum f) { i |= f; return *this; }
+ inline QFlags &operator^=(QFlags f) { i ^= f.i; return *this; }
+ inline QFlags &operator^=(Enum f) { i ^= f; return *this; }
+
+ inline operator int() const { return i; }
+
+ inline QFlags operator|(QFlags f) const { QFlags g; g.i = i | f.i; return g; }
+ inline QFlags operator|(Enum f) const { QFlags g; g.i = i | f; return g; }
+ inline QFlags operator^(QFlags f) const { QFlags g; g.i = i ^ f.i; return g; }
+ inline QFlags operator^(Enum f) const { QFlags g; g.i = i ^ f; return g; }
+ inline QFlags operator&(int mask) const { QFlags g; g.i = i & mask; return g; }
+ inline QFlags operator&(uint mask) const { QFlags g; g.i = i & mask; return g; }
+ inline QFlags operator&(Enum f) const { QFlags g; g.i = i & f; return g; }
+ inline QFlags operator~() const { QFlags g; g.i = ~i; return g; }
+
+ inline bool operator!() const { return !i; }
+
+ inline bool testFlag(Enum f) const { return (i & f) == f; }
+};
+
+#define Q_DECLARE_FLAGS(Flags,Enum) typedef QFlags<Enum> Flags;
+
+
+
+
+
+#define Q_DECLARE_INCOMPATIBLE_FLAGS(Flags) inline QIncompatibleFlag operator|(Flags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+
+
+
+
+#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags) inline QFlags<Flags::enum_type> operator|(Flags::enum_type f1, Flags::enum_type f2) { return QFlags<Flags::enum_type>(f1) | f2; } inline QFlags<Flags::enum_type> operator|(Flags::enum_type f1, QFlags<Flags::enum_type> f2) { return f2 | f1; } Q_DECLARE_INCOMPATIBLE_FLAGS(Flags)
+# 2047 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+template <typename T>
+class QForeachContainer {
+public:
+ inline QForeachContainer(const T& t) : c(t), brk(0), i(c.begin()), e(c.end()) { }
+ const T c;
+ int brk;
+ typename T::const_iterator i, e;
+};
+
+#define Q_FOREACH(variable,container) for (QForeachContainer<__typeof__(container)> _container_(container); !_container_.brk && _container_.i != _container_.e; __extension__ ({ ++_container_.brk; ++_container_.i; })) for (variable = *_container_.i;; __extension__ ({--_container_.brk; break;}))
+# 2110 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_FOREVER for(;;)
+
+
+#define foreach Q_FOREACH
+
+
+#define forever Q_FOREVER
+# 2128 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_DECLARE_PRIVATE(Class) inline Class ##Private* d_func() { return reinterpret_cast<Class ##Private *>(d_ptr); } inline const Class ##Private* d_func() const { return reinterpret_cast<const Class ##Private *>(d_ptr); } friend class Class ##Private;
+
+
+
+
+#define Q_DECLARE_PRIVATE_D(Dptr,Class) inline Class ##Private* d_func() { return reinterpret_cast<Class ##Private *>(Dptr); } inline const Class ##Private* d_func() const { return reinterpret_cast<const Class ##Private *>(Dptr); } friend class Class ##Private;
+
+
+
+
+#define Q_DECLARE_PUBLIC(Class) inline Class* q_func() { return static_cast<Class *>(q_ptr); } inline const Class* q_func() const { return static_cast<const Class *>(q_ptr); } friend class Class;
+
+
+
+
+#define Q_D(Class) Class ##Private * const d = d_func()
+#define Q_Q(Class) Class * const q = q_func()
+
+#define QT_TR_NOOP(x) (x)
+#define QT_TR_NOOP_UTF8(x) (x)
+#define QT_TRANSLATE_NOOP(scope,x) (x)
+#define QT_TRANSLATE_NOOP_UTF8(scope,x) (x)
+#define QT_TRANSLATE_NOOP3(scope,x,comment) {x, comment}
+#define QT_TRANSLATE_NOOP3_UTF8(scope,x,comment) {x, comment}
+#define QDOC_PROPERTY(text)
+# 2174 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define Q_DISABLE_COPY(Class) Class(const Class &); Class &operator=(const Class &);
+
+
+
+
+
+
+class QByteArray;
+__attribute__((visibility("default"))) QByteArray qgetenv(const char *varName);
+__attribute__((visibility("default"))) bool qputenv(const char *varName, const QByteArray& value);
+
+inline int qIntCast(double f) { return int(f); }
+inline int qIntCast(float f) { return int(f); }
+
+
+
+
+__attribute__((visibility("default"))) void qsrand(uint seed);
+__attribute__((visibility("default"))) int qrand();
+# 2221 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define QT_MODULE_CORE 0x00001
+#define QT_MODULE_GUI 0x00002
+#define QT_MODULE_NETWORK 0x00004
+#define QT_MODULE_OPENGL 0x00008
+#define QT_MODULE_SQL 0x00010
+#define QT_MODULE_XML 0x00020
+#define QT_MODULE_QT3SUPPORTLIGHT 0x00040
+#define QT_MODULE_QT3SUPPORT 0x00080
+#define QT_MODULE_SVG 0x00100
+#define QT_MODULE_ACTIVEQT 0x00200
+#define QT_MODULE_GRAPHICSVIEW 0x00400
+#define QT_MODULE_SCRIPT 0x00800
+#define QT_MODULE_XMLPATTERNS 0x01000
+#define QT_MODULE_HELP 0x02000
+#define QT_MODULE_TEST 0x04000
+#define QT_MODULE_DBUS 0x08000
+#define QT_MODULE_SCRIPTTOOLS 0x10000
+
+
+#define QT_EDITION_CONSOLE (QT_MODULE_CORE | QT_MODULE_NETWORK | QT_MODULE_SQL | QT_MODULE_SCRIPT | QT_MODULE_XML | QT_MODULE_XMLPATTERNS | QT_MODULE_TEST | QT_MODULE_DBUS)
+
+
+
+
+
+
+
+#define QT_EDITION_DESKTOPLIGHT (QT_MODULE_CORE | QT_MODULE_GUI | QT_MODULE_QT3SUPPORTLIGHT | QT_MODULE_TEST | QT_MODULE_DBUS)
+
+
+
+
+#define QT_EDITION_OPENSOURCE (QT_MODULE_CORE | QT_MODULE_GUI | QT_MODULE_NETWORK | QT_MODULE_OPENGL | QT_MODULE_SQL | QT_MODULE_XML | QT_MODULE_XMLPATTERNS | QT_MODULE_SCRIPT | QT_MODULE_SCRIPTTOOLS | QT_MODULE_QT3SUPPORTLIGHT | QT_MODULE_QT3SUPPORT | QT_MODULE_SVG | QT_MODULE_GRAPHICSVIEW | QT_MODULE_HELP | QT_MODULE_TEST | QT_MODULE_DBUS)
+# 2269 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define QT_EDITION_DESKTOP (QT_EDITION_OPENSOURCE | QT_MODULE_ACTIVEQT)
+
+#define QT_EDITION_UNIVERSAL QT_EDITION_DESKTOP
+#define QT_EDITION_ACADEMIC QT_EDITION_DESKTOP
+#define QT_EDITION_EDUCATIONAL QT_EDITION_DESKTOP
+#define QT_EDITION_EVALUATION QT_EDITION_DESKTOP
+# 2285 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+#define QT_LICENSED_MODULE(x) enum QtValidLicenseFor ##x ##Module { Licensed ##x = true };
+
+
+
+enum QtValidLicenseForCoreModule { LicensedCore = true };
+
+
+enum QtValidLicenseForGuiModule { LicensedGui = true };
+
+
+enum QtValidLicenseForNetworkModule { LicensedNetwork = true };
+
+
+enum QtValidLicenseForOpenGLModule { LicensedOpenGL = true };
+
+
+enum QtValidLicenseForSqlModule { LicensedSql = true };
+
+
+enum QtValidLicenseForXmlModule { LicensedXml = true };
+
+
+enum QtValidLicenseForXmlPatternsModule { LicensedXmlPatterns = true };
+
+
+enum QtValidLicenseForHelpModule { LicensedHelp = true };
+
+
+enum QtValidLicenseForScriptModule { LicensedScript = true };
+
+
+enum QtValidLicenseForScriptToolsModule { LicensedScriptTools = true };
+
+
+enum QtValidLicenseForQt3SupportLightModule { LicensedQt3SupportLight = true };
+
+
+enum QtValidLicenseForQt3SupportModule { LicensedQt3Support = true };
+
+
+enum QtValidLicenseForSvgModule { LicensedSvg = true };
+
+
+
+
+
+enum QtValidLicenseForTestModule { LicensedTest = true };
+
+
+enum QtValidLicenseForDBusModule { LicensedDBus = true };
+
+
+#define QT_MODULE(x) typedef QtValidLicenseFor ##x ##Module Qt ##x ##Module;
+# 2370 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qglobal.h"
+
+
+# 1 "../../include/QtCore/qglobal.h" 2
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qalgorithms.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+
+
+
+
+namespace QAlgorithmsPrivate {
+
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ void qSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan);
+template <typename RandomAccessIterator, typename T>
+inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy);
+
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ void qStableSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan);
+template <typename RandomAccessIterator, typename T>
+inline void qStableSortHelper(RandomAccessIterator, RandomAccessIterator, const T &);
+
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qLowerBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan);
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qUpperBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan);
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qBinaryFindHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan);
+
+}
+
+template <typename InputIterator, typename OutputIterator>
+inline OutputIterator qCopy(InputIterator begin, InputIterator end, OutputIterator dest)
+{
+ while (begin != end)
+ *dest++ = *begin++;
+ return dest;
+}
+
+template <typename BiIterator1, typename BiIterator2>
+inline BiIterator2 qCopyBackward(BiIterator1 begin, BiIterator1 end, BiIterator2 dest)
+{
+ while (begin != end)
+ *--dest = *--end;
+ return dest;
+}
+
+template <typename InputIterator1, typename InputIterator2>
+inline bool qEqual(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2)
+{
+ for (; first1 != last1; ++first1, ++first2)
+ if (!(*first1 == *first2))
+ return false;
+ return true;
+}
+
+template <typename ForwardIterator, typename T>
+inline void qFill(ForwardIterator first, ForwardIterator last, const T &val)
+{
+ for (; first != last; ++first)
+ *first = val;
+}
+
+template <typename Container, typename T>
+inline void qFill(Container &container, const T &val)
+{
+ qFill(container.begin(), container.end(), val);
+}
+
+template <typename InputIterator, typename T>
+inline InputIterator qFind(InputIterator first, InputIterator last, const T &val)
+{
+ while (first != last && !(*first == val))
+ ++first;
+ return first;
+}
+
+template <typename Container, typename T>
+inline typename Container::const_iterator qFind(const Container &container, const T &val)
+{
+ return qFind(container.constBegin(), container.constEnd(), val);
+}
+
+template <typename InputIterator, typename T, typename Size>
+inline void qCount(InputIterator first, InputIterator last, const T &value, Size &n)
+{
+ for (; first != last; ++first)
+ if (*first == value)
+ ++n;
+}
+
+template <typename Container, typename T, typename Size>
+inline void qCount(const Container &container, const T &value, Size &n)
+{
+ qCount(container.constBegin(), container.constEnd(), value, n);
+}
+# 152 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qalgorithms.h"
+template <typename T>
+inline void qSwap(T &value1, T &value2)
+{
+ T t = value1;
+ value1 = value2;
+ value2 = t;
+}
+# 172 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qalgorithms.h"
+template <typename T>
+class qLess
+{
+public:
+ inline bool operator()(const T &t1, const T &t2) const
+ {
+ return (t1 < t2);
+ }
+};
+
+template <typename T>
+class qGreater
+{
+public:
+ inline bool operator()(const T &t1, const T &t2) const
+ {
+ return (t2 < t1);
+ }
+};
+
+
+template <typename RandomAccessIterator>
+inline void qSort(RandomAccessIterator start, RandomAccessIterator end)
+{
+ if (start != end)
+ QAlgorithmsPrivate::qSortHelper(start, end, *start);
+}
+
+template <typename RandomAccessIterator, typename LessThan>
+inline void qSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan)
+{
+ if (start != end)
+ QAlgorithmsPrivate::qSortHelper(start, end, *start, lessThan);
+}
+
+template<typename Container>
+inline void qSort(Container &c)
+{
+
+
+
+
+ if (!c.empty())
+ QAlgorithmsPrivate::qSortHelper(c.begin(), c.end(), *c.begin());
+}
+
+template <typename RandomAccessIterator>
+inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end)
+{
+ if (start != end)
+ QAlgorithmsPrivate::qStableSortHelper(start, end, *start);
+}
+
+template <typename RandomAccessIterator, typename LessThan>
+inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan)
+{
+ if (start != end)
+ QAlgorithmsPrivate::qStableSortHelper(start, end, *start, lessThan);
+}
+
+template<typename Container>
+inline void qStableSort(Container &c)
+{
+
+
+
+
+ if (!c.empty())
+ QAlgorithmsPrivate::qStableSortHelper(c.begin(), c.end(), *c.begin());
+}
+
+template <typename RandomAccessIterator, typename T>
+ RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value)
+{
+
+
+
+ RandomAccessIterator middle;
+ int n = end - begin;
+ int half;
+
+ while (n > 0) {
+ half = n >> 1;
+ middle = begin + half;
+ if (*middle < value) {
+ begin = middle + 1;
+ n -= half + 1;
+ } else {
+ n = half;
+ }
+ }
+ return begin;
+}
+
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
+{
+ return QAlgorithmsPrivate::qLowerBoundHelper(begin, end, value, lessThan);
+}
+
+template <typename Container, typename T>
+ typename Container::const_iterator qLowerBound(const Container &container, const T &value)
+{
+ return QAlgorithmsPrivate::qLowerBoundHelper(container.constBegin(), container.constEnd(), value, qLess<T>());
+}
+
+template <typename RandomAccessIterator, typename T>
+ RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value)
+{
+
+ RandomAccessIterator middle;
+ int n = end - begin;
+ int half;
+
+ while (n > 0) {
+ half = n >> 1;
+ middle = begin + half;
+ if (value < *middle) {
+ n = half;
+ } else {
+ begin = middle + 1;
+ n -= half + 1;
+ }
+ }
+ return begin;
+}
+
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
+{
+ return QAlgorithmsPrivate::qUpperBoundHelper(begin, end, value, lessThan);
+}
+
+template <typename Container, typename T>
+ typename Container::const_iterator qUpperBound(const Container &container, const T &value)
+{
+ return QAlgorithmsPrivate::qUpperBoundHelper(container.constBegin(), container.constEnd(), value, qLess<T>());
+}
+
+template <typename RandomAccessIterator, typename T>
+ RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value)
+{
+
+ qint64 l = 0;
+ qint64 r = end - begin - 1;
+ if (r < 0)
+ return end;
+ qint64 i = (l + r + 1) / 2;
+
+ while (r != l) {
+ if (value < begin[i])
+ r = i - 1;
+ else
+ l = i;
+ i = (l + r + 1) / 2;
+ }
+ if (begin[i] < value || value < begin[i])
+ return end;
+ else
+ return begin + i;
+}
+
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
+{
+ return QAlgorithmsPrivate::qBinaryFindHelper(begin, end, value, lessThan);
+}
+
+template <typename Container, typename T>
+ typename Container::const_iterator qBinaryFind(const Container &container, const T &value)
+{
+ return QAlgorithmsPrivate::qBinaryFindHelper(container.constBegin(), container.constEnd(), value, qLess<T>());
+}
+
+template <typename ForwardIterator>
+ void qDeleteAll(ForwardIterator begin, ForwardIterator end)
+{
+ while (begin != end) {
+ delete *begin;
+ ++begin;
+ }
+}
+
+template <typename Container>
+inline void qDeleteAll(const Container &c)
+{
+ qDeleteAll(c.begin(), c.end());
+}
+
+
+
+
+
+namespace QAlgorithmsPrivate {
+
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ void qSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan)
+{
+top:
+ int span = end - start;
+ if (span < 2)
+ return;
+
+ --end;
+ RandomAccessIterator low = start, high = end - 1;
+ RandomAccessIterator pivot = start + span / 2;
+
+ if (lessThan(*end, *start))
+ qSwap(*end, *start);
+ if (span == 2)
+ return;
+
+ if (lessThan(*pivot, *start))
+ qSwap(*pivot, *start);
+ if (lessThan(*end, *pivot))
+ qSwap(*end, *pivot);
+ if (span == 3)
+ return;
+
+ qSwap(*pivot, *end);
+
+ while (low < high) {
+ while (low < high && lessThan(*low, *end))
+ ++low;
+
+ while (high > low && lessThan(*end, *high))
+ --high;
+
+ if (low < high) {
+ qSwap(*low, *high);
+ ++low;
+ --high;
+ } else {
+ break;
+ }
+ }
+
+ if (lessThan(*low, *end))
+ ++low;
+
+ qSwap(*end, *low);
+ qSortHelper(start, low, t, lessThan);
+
+ start = low + 1;
+ ++end;
+ goto top;
+}
+
+template <typename RandomAccessIterator, typename T>
+inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy)
+{
+ qSortHelper(begin, end, dummy, qLess<T>());
+}
+
+template <typename RandomAccessIterator>
+ void qReverse(RandomAccessIterator begin, RandomAccessIterator end)
+{
+ --end;
+ while (begin < end)
+ qSwap(*begin++, *end--);
+}
+
+template <typename RandomAccessIterator>
+ void qRotate(RandomAccessIterator begin, RandomAccessIterator middle, RandomAccessIterator end)
+{
+ qReverse(begin, middle);
+ qReverse(middle, end);
+ qReverse(begin, end);
+}
+
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ void qMerge(RandomAccessIterator begin, RandomAccessIterator pivot, RandomAccessIterator end, T &t, LessThan lessThan)
+{
+ const int len1 = pivot - begin;
+ const int len2 = end - pivot;
+
+ if (len1 == 0 || len2 == 0)
+ return;
+
+ if (len1 + len2 == 2) {
+ if (lessThan(*(begin + 1), *(begin)))
+ qSwap(*begin, *(begin + 1));
+ return;
+ }
+
+ RandomAccessIterator firstCut;
+ RandomAccessIterator secondCut;
+ int len2Half;
+ if (len1 > len2) {
+ const int len1Half = len1 / 2;
+ firstCut = begin + len1Half;
+ secondCut = qLowerBound(pivot, end, *firstCut, lessThan);
+ len2Half = secondCut - pivot;
+ } else {
+ len2Half = len2 / 2;
+ secondCut = pivot + len2Half;
+ firstCut = qUpperBound(begin, pivot, *secondCut, lessThan);
+ }
+
+ qRotate(firstCut, pivot, secondCut);
+ const RandomAccessIterator newPivot = firstCut + len2Half;
+ qMerge(begin, firstCut, newPivot, t, lessThan);
+ qMerge(newPivot, secondCut, end, t, lessThan);
+}
+
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ void qStableSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &t, LessThan lessThan)
+{
+ const int span = end - begin;
+ if (span < 2)
+ return;
+
+ const RandomAccessIterator middle = begin + span / 2;
+ qStableSortHelper(begin, middle, t, lessThan);
+ qStableSortHelper(middle, end, t, lessThan);
+ qMerge(begin, middle, end, t, lessThan);
+}
+
+template <typename RandomAccessIterator, typename T>
+inline void qStableSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy)
+{
+ qStableSortHelper(begin, end, dummy, qLess<T>());
+}
+
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qLowerBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
+{
+ RandomAccessIterator middle;
+ int n = end - begin;
+ int half;
+
+ while (n > 0) {
+ half = n >> 1;
+ middle = begin + half;
+ if (lessThan(*middle, value)) {
+ begin = middle + 1;
+ n -= half + 1;
+ } else {
+ n = half;
+ }
+ }
+ return begin;
+}
+
+
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qUpperBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
+{
+ RandomAccessIterator middle;
+ int n = end - begin;
+ int half;
+
+ while (n > 0) {
+ half = n >> 1;
+ middle = begin + half;
+ if (lessThan(value, *middle)) {
+ n = half;
+ } else {
+ begin = middle + 1;
+ n -= half + 1;
+ }
+ }
+ return begin;
+}
+
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qBinaryFindHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
+{
+ qint64 l = 0;
+ qint64 r = end - begin - 1;
+ if (r < 0)
+ return end;
+ qint64 i = (l + r + 1) / 2;
+
+ while (r != l) {
+ if (lessThan(value, begin[i]))
+ r = i - 1;
+ else
+ l = i;
+ i = (l + r + 1) / 2;
+ }
+ if (lessThan(begin[i], value) || lessThan(value, begin[i]))
+ return end;
+ else
+ return begin + i;
+}
+
+}
+
+
+
+
+# 1 "../../include/QtCore/qalgorithms.h" 2
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdebug.h" 2
+# 1 "../../include/QtCore/qhash.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qhash.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qhash.h"
+#define QHASH_H
+
+# 1 "../../include/QtCore/qatomic.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qatomic.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qatomic.h"
+#define QATOMIC_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qatomic.h" 2
+# 1 "../../include/QtCore/qbasicatomic.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qbasicatomic.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qbasicatomic.h"
+#define QBASICATOMIC_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qbasicatomic.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class __attribute__((visibility("default"))) QBasicAtomicInt
+{
+public:
+
+
+
+ volatile int _q_value;
+
+
+ inline bool operator==(int value) const
+ {
+ return _q_value == value;
+ }
+
+ inline bool operator!=(int value) const
+ {
+ return _q_value != value;
+ }
+
+ inline bool operator!() const
+ {
+ return _q_value == 0;
+ }
+
+ inline operator int() const
+ {
+ return _q_value;
+ }
+
+ inline QBasicAtomicInt &operator=(int value)
+ {
+
+
+
+ _q_value = value;
+ return *this;
+ }
+
+
+
+ static bool isReferenceCountingNative();
+ static bool isReferenceCountingWaitFree();
+
+ bool ref();
+ bool deref();
+
+ static bool isTestAndSetNative();
+ static bool isTestAndSetWaitFree();
+
+ bool testAndSetRelaxed(int expectedValue, int newValue);
+ bool testAndSetAcquire(int expectedValue, int newValue);
+ bool testAndSetRelease(int expectedValue, int newValue);
+ bool testAndSetOrdered(int expectedValue, int newValue);
+
+ static bool isFetchAndStoreNative();
+ static bool isFetchAndStoreWaitFree();
+
+ int fetchAndStoreRelaxed(int newValue);
+ int fetchAndStoreAcquire(int newValue);
+ int fetchAndStoreRelease(int newValue);
+ int fetchAndStoreOrdered(int newValue);
+
+ static bool isFetchAndAddNative();
+ static bool isFetchAndAddWaitFree();
+
+ int fetchAndAddRelaxed(int valueToAdd);
+ int fetchAndAddAcquire(int valueToAdd);
+ int fetchAndAddRelease(int valueToAdd);
+ int fetchAndAddOrdered(int valueToAdd);
+};
+
+template <typename T>
+class QBasicAtomicPointer
+{
+public:
+
+
+
+ T * volatile _q_value;
+
+
+ inline bool operator==(T *value) const
+ {
+ return _q_value == value;
+ }
+
+ inline bool operator!=(T *value) const
+ {
+ return !operator==(value);
+ }
+
+ inline bool operator!() const
+ {
+ return operator==(0);
+ }
+
+ inline operator T *() const
+ {
+ return _q_value;
+ }
+
+ inline T *operator->() const
+ {
+ return _q_value;
+ }
+
+ inline QBasicAtomicPointer<T> &operator=(T *value)
+ {
+
+
+
+ _q_value = value;
+ return *this;
+ }
+
+
+
+ static bool isTestAndSetNative();
+ static bool isTestAndSetWaitFree();
+
+ bool testAndSetRelaxed(T *expectedValue, T *newValue);
+ bool testAndSetAcquire(T *expectedValue, T *newValue);
+ bool testAndSetRelease(T *expectedValue, T *newValue);
+ bool testAndSetOrdered(T *expectedValue, T *newValue);
+
+ static bool isFetchAndStoreNative();
+ static bool isFetchAndStoreWaitFree();
+
+ T *fetchAndStoreRelaxed(T *newValue);
+ T *fetchAndStoreAcquire(T *newValue);
+ T *fetchAndStoreRelease(T *newValue);
+ T *fetchAndStoreOrdered(T *newValue);
+
+ static bool isFetchAndAddNative();
+ static bool isFetchAndAddWaitFree();
+
+ T *fetchAndAddRelaxed(qptrdiff valueToAdd);
+ T *fetchAndAddAcquire(qptrdiff valueToAdd);
+ T *fetchAndAddRelease(qptrdiff valueToAdd);
+ T *fetchAndAddOrdered(qptrdiff valueToAdd);
+};
+
+
+
+
+#define Q_BASIC_ATOMIC_INITIALIZER(a) { (a) }
+
+
+
+
+
+
+
+
+# 1 "../../include/QtCore/qatomic_arch.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/arch/qatomic_arch.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/arch/qatomic_arch.h"
+#define QATOMIC_ARCH_H
+
+
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/arch/qatomic_arch.h" 2
+# 58 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/arch/qatomic_arch.h"
+# 1 "../../include/QtCore/qatomic_bfin.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/arch/qatomic_bfin.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/arch/qatomic_generic.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/arch/qatomic_generic.h"
+#define QATOMIC_GENERIC_H
+
+
+
+
+
+#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE
+
+inline bool QBasicAtomicInt::isReferenceCountingNative()
+{ return false; }
+inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
+{ return false; }
+
+#define Q_ATOMIC_INT_TEST_AND_SET_IS_NOT_NATIVE
+
+inline bool QBasicAtomicInt::isTestAndSetNative()
+{ return false; }
+inline bool QBasicAtomicInt::isTestAndSetWaitFree()
+{ return false; }
+
+#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_NOT_NATIVE
+
+inline bool QBasicAtomicInt::isFetchAndStoreNative()
+{ return false; }
+inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
+{ return false; }
+
+#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_NOT_NATIVE
+
+inline bool QBasicAtomicInt::isFetchAndAddNative()
+{ return false; }
+inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
+{ return false; }
+
+#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_NOT_NATIVE
+
+template <typename T>
+inline bool QBasicAtomicPointer<T>::isTestAndSetNative()
+{ return false; }
+template <typename T>
+inline bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
+{ return false; }
+
+#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_NOT_NATIVE
+
+template <typename T>
+inline bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
+{ return false; }
+template <typename T>
+inline bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
+{ return false; }
+
+#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_NOT_NATIVE
+
+template <typename T>
+inline bool QBasicAtomicPointer<T>::isFetchAndAddNative()
+{ return false; }
+template <typename T>
+inline bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
+{ return false; }
+
+__attribute__((visibility("default"))) bool QBasicAtomicInt_testAndSetOrdered(volatile int *, int, int);
+__attribute__((visibility("default"))) int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *, int);
+__attribute__((visibility("default"))) int QBasicAtomicInt_fetchAndAddOrdered(volatile int *, int);
+
+__attribute__((visibility("default"))) bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *, void *, void *);
+__attribute__((visibility("default"))) void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *, void *);
+__attribute__((visibility("default"))) void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *, qptrdiff);
+
+
+
+inline bool QBasicAtomicInt::ref()
+{
+ return QBasicAtomicInt_fetchAndAddOrdered(&_q_value, 1) != -1;
+}
+
+inline bool QBasicAtomicInt::deref()
+{
+ return QBasicAtomicInt_fetchAndAddOrdered(&_q_value, -1) != 1;
+}
+
+
+
+inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
+{
+ return QBasicAtomicInt_testAndSetOrdered(&_q_value, expectedValue, newValue);
+}
+
+inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
+{
+ return testAndSetOrdered(expectedValue, newValue);
+}
+
+inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
+{
+ return testAndSetOrdered(expectedValue, newValue);
+}
+
+inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
+{
+ return testAndSetOrdered(expectedValue, newValue);
+}
+
+
+
+inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
+{
+ return QBasicAtomicInt_fetchAndStoreOrdered(&_q_value, newValue);
+}
+
+inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
+{
+ return fetchAndStoreOrdered(newValue);
+}
+
+inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
+{
+ return fetchAndStoreOrdered(newValue);
+}
+
+inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
+{
+ return fetchAndStoreOrdered(newValue);
+}
+
+
+
+inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
+{
+ return QBasicAtomicInt_fetchAndAddOrdered(&_q_value, valueToAdd);
+}
+
+inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
+{
+ return fetchAndAddOrdered(valueToAdd);
+}
+
+inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
+{
+ return fetchAndAddOrdered(valueToAdd);
+}
+
+inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
+{
+ return fetchAndAddOrdered(valueToAdd);
+}
+
+
+
+template <typename T>
+inline bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
+{
+ union { T * volatile * typed; void * volatile * voidp; } pointer;
+ pointer.typed = &_q_value;
+ return QBasicAtomicPointer_testAndSetOrdered(pointer.voidp, expectedValue, newValue);
+}
+
+template <typename T>
+inline bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
+{
+ return testAndSetOrdered(expectedValue, newValue);
+}
+
+template <typename T>
+inline bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
+{
+ return testAndSetOrdered(expectedValue, newValue);
+}
+
+template <typename T>
+inline bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
+{
+ return testAndSetOrdered(expectedValue, newValue);
+}
+
+
+
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
+{
+ union { T * volatile * typed; void * volatile * voidp; } pointer;
+ union { T *typed; void *voidp; } returnValue;
+ pointer.typed = &_q_value;
+ returnValue.voidp = QBasicAtomicPointer_fetchAndStoreOrdered(pointer.voidp, newValue);
+ return returnValue.typed;
+}
+
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
+{
+ return fetchAndStoreOrdered(newValue);
+}
+
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
+{
+ return fetchAndStoreOrdered(newValue);
+}
+
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
+{
+ return fetchAndStoreOrdered(newValue);
+}
+
+
+
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
+{
+ union { T * volatile *typed; void * volatile *voidp; } pointer;
+ union { T *typed; void *voidp; } returnValue;
+ pointer.typed = &_q_value;
+ returnValue.voidp = QBasicAtomicPointer_fetchAndAddOrdered(pointer.voidp, valueToAdd * sizeof(T));
+ return returnValue.typed;
+}
+
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
+{
+ return fetchAndAddOrdered(valueToAdd);
+}
+
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
+{
+ return fetchAndAddOrdered(valueToAdd);
+}
+
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
+{
+ return fetchAndAddOrdered(valueToAdd);
+}
+
+
+
+
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/arch/qatomic_bfin.h" 2
+# 1 "../../include/QtCore/qatomic_bfin.h" 2
+# 59 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/arch/qatomic_arch.h" 2
+# 91 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/arch/qatomic_arch.h"
+
+# 1 "../../include/QtCore/qatomic_arch.h" 2
+# 208 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qbasicatomic.h" 2
+# 1 "../../include/QtCore/qbasicatomic.h" 2
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qatomic.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+
+class __attribute__((visibility("default"))) QAtomicInt : public QBasicAtomicInt
+{
+public:
+ inline QAtomicInt(int value = 0)
+ {
+
+
+
+ _q_value = value;
+ }
+ inline QAtomicInt(const QAtomicInt &other)
+ {
+
+
+
+ _q_value = other._q_value;
+ }
+
+ inline QAtomicInt &operator=(int value)
+ {
+ (void) QBasicAtomicInt::operator=(value);
+ return *this;
+ }
+
+ inline QAtomicInt &operator=(const QAtomicInt &other)
+ {
+ (void) QBasicAtomicInt::operator=(other);
+ return *this;
+ }
+# 121 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qatomic.h"
+};
+
+
+template <typename T>
+class QAtomicPointer : public QBasicAtomicPointer<T>
+{
+public:
+ inline QAtomicPointer(T *value = 0)
+ {
+
+
+
+ QBasicAtomicPointer<T>::_q_value = value;
+ }
+ inline QAtomicPointer(const QAtomicPointer<T> &other)
+ {
+
+
+
+ QBasicAtomicPointer<T>::_q_value = other._q_value;
+ }
+
+ inline QAtomicPointer<T> &operator=(T *value)
+ {
+ (void) QBasicAtomicPointer<T>::operator=(value);
+ return *this;
+ }
+
+ inline QAtomicPointer<T> &operator=(const QAtomicPointer<T> &other)
+ {
+ (void) QBasicAtomicPointer<T>::operator=(other);
+ return *this;
+ }
+# 186 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qatomic.h"
+};
+
+
+
+
+
+
+
+template <typename T>
+inline void qAtomicAssign(T *&d, T *x)
+{
+ if (d == x)
+ return;
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+}
+# 213 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qatomic.h"
+template <typename T>
+inline void qAtomicDetach(T *&d)
+{
+ if (d->ref == 1)
+ return;
+ T *x = d;
+ d = new T(*d);
+ if (!x->ref.deref())
+ delete x;
+}
+
+
+
+# 1 "../../include/QtCore/qatomic.h" 2
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qhash.h" 2
+# 1 "../../include/QtCore/qchar.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qchar.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qchar.h"
+#define QCHAR_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qchar.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QString;
+
+struct QLatin1Char
+{
+public:
+ inline explicit QLatin1Char(char c) : ch(c) {}
+
+
+
+
+ inline char toLatin1() const { return ch; }
+ inline ushort unicode() const { return ushort(uchar(ch)); }
+
+
+private:
+ char ch;
+};
+
+
+class __attribute__((visibility("default"))) QChar {
+public:
+ QChar();
+
+ __attribute__ ((__deprecated__)) QChar(char c);
+ __attribute__ ((__deprecated__)) QChar(uchar c);
+
+ QChar(QLatin1Char ch);
+ QChar(uchar c, uchar r);
+ inline QChar(ushort rc) : ucs(rc){}
+ QChar(short rc);
+ QChar(uint rc);
+ QChar(int rc);
+ enum SpecialCharacter {
+ Null = 0x0000,
+ Nbsp = 0x00a0,
+ ReplacementCharacter = 0xfffd,
+ ObjectReplacementCharacter = 0xfffc,
+ ByteOrderMark = 0xfeff,
+ ByteOrderSwapped = 0xfffe,
+
+
+
+
+
+
+
+ ParagraphSeparator = 0x2029,
+ LineSeparator = 0x2028
+ };
+ QChar(SpecialCharacter sc);
+
+
+
+ enum Category
+ {
+ NoCategory,
+
+ Mark_NonSpacing,
+ Mark_SpacingCombining,
+ Mark_Enclosing,
+
+ Number_DecimalDigit,
+ Number_Letter,
+ Number_Other,
+
+ Separator_Space,
+ Separator_Line,
+ Separator_Paragraph,
+
+ Other_Control,
+ Other_Format,
+ Other_Surrogate,
+ Other_PrivateUse,
+ Other_NotAssigned,
+
+ Letter_Uppercase,
+ Letter_Lowercase,
+ Letter_Titlecase,
+ Letter_Modifier,
+ Letter_Other,
+
+ Punctuation_Connector,
+ Punctuation_Dash,
+ Punctuation_Open,
+ Punctuation_Close,
+ Punctuation_InitialQuote,
+ Punctuation_FinalQuote,
+ Punctuation_Other,
+
+ Symbol_Math,
+ Symbol_Currency,
+ Symbol_Modifier,
+ Symbol_Other,
+
+ Punctuation_Dask = Punctuation_Dash
+ };
+
+ enum Direction
+ {
+ DirL, DirR, DirEN, DirES, DirET, DirAN, DirCS, DirB, DirS, DirWS, DirON,
+ DirLRE, DirLRO, DirAL, DirRLE, DirRLO, DirPDF, DirNSM, DirBN
+ };
+
+ enum Decomposition
+ {
+ NoDecomposition,
+ Canonical,
+ Font,
+ NoBreak,
+ Initial,
+ Medial,
+ Final,
+ Isolated,
+ Circle,
+ Super,
+ Sub,
+ Vertical,
+ Wide,
+ Narrow,
+ Small,
+ Square,
+ Compat,
+ Fraction
+
+
+
+
+ };
+
+ enum Joining
+ {
+ OtherJoining, Dual, Right, Center
+ };
+
+ enum CombiningClass
+ {
+ Combining_BelowLeftAttached = 200,
+ Combining_BelowAttached = 202,
+ Combining_BelowRightAttached = 204,
+ Combining_LeftAttached = 208,
+ Combining_RightAttached = 210,
+ Combining_AboveLeftAttached = 212,
+ Combining_AboveAttached = 214,
+ Combining_AboveRightAttached = 216,
+
+ Combining_BelowLeft = 218,
+ Combining_Below = 220,
+ Combining_BelowRight = 222,
+ Combining_Left = 224,
+ Combining_Right = 226,
+ Combining_AboveLeft = 228,
+ Combining_Above = 230,
+ Combining_AboveRight = 232,
+
+ Combining_DoubleBelow = 233,
+ Combining_DoubleAbove = 234,
+ Combining_IotaSubscript = 240
+ };
+
+ enum UnicodeVersion {
+ Unicode_Unassigned,
+ Unicode_1_1,
+ Unicode_2_0,
+ Unicode_2_1_2,
+ Unicode_3_0,
+ Unicode_3_1,
+ Unicode_3_2,
+ Unicode_4_0,
+ Unicode_4_1,
+ Unicode_5_0
+ };
+
+
+ Category category() const;
+ Direction direction() const;
+ Joining joining() const;
+ bool hasMirrored() const;
+ unsigned char combiningClass() const;
+
+ QChar mirroredChar() const;
+ QString decomposition() const;
+ Decomposition decompositionTag() const;
+
+ int digitValue() const;
+ QChar toLower() const;
+ QChar toUpper() const;
+ QChar toTitleCase() const;
+ QChar toCaseFolded() const;
+
+ UnicodeVersion unicodeVersion() const;
+
+
+
+
+
+
+ char toAscii() const;
+ inline char toLatin1() const;
+ inline ushort unicode() const { return ucs; }
+
+
+ inline ushort &unicode() { return const_cast<ushort&>(ucs); }
+
+
+
+
+ static QChar fromAscii(char c);
+ static QChar fromLatin1(char c);
+
+ inline bool isNull() const { return ucs == 0; }
+ bool isPrint() const;
+ bool isPunct() const;
+ bool isSpace() const;
+ bool isMark() const;
+ bool isLetter() const;
+ bool isNumber() const;
+ bool isLetterOrNumber() const;
+ bool isDigit() const;
+ bool isSymbol() const;
+ inline bool isLower() const { return category() == Letter_Lowercase; }
+ inline bool isUpper() const { return category() == Letter_Uppercase; }
+ inline bool isTitleCase() const { return category() == Letter_Titlecase; }
+
+ inline bool isHighSurrogate() const {
+ return ((ucs & 0xfc00) == 0xd800);
+ }
+ inline bool isLowSurrogate() const {
+ return ((ucs & 0xfc00) == 0xdc00);
+ }
+
+ inline uchar cell() const { return uchar(ucs & 0xff); }
+ inline uchar row() const { return uchar((ucs>>8)&0xff); }
+ inline void setCell(uchar cell);
+ inline void setRow(uchar row);
+
+ static inline uint surrogateToUcs4(ushort high, ushort low) {
+ return (uint(high)<<10) + low - 0x35fdc00;
+ }
+ static inline uint surrogateToUcs4(QChar high, QChar low) {
+ return (uint(high.ucs)<<10) + low.ucs - 0x35fdc00;
+ }
+ static inline ushort highSurrogate(uint ucs4) {
+ return (ucs4>>10) + 0xd7c0;
+ }
+ static inline ushort lowSurrogate(uint ucs4) {
+ return ucs4%0x400 + 0xdc00;
+ }
+
+ static Category category(uint ucs4);
+ static Category category(ushort ucs2);
+ static Direction direction(uint ucs4);
+ static Direction direction(ushort ucs2);
+ static Joining joining(uint ucs4);
+ static Joining joining(ushort ucs2);
+ static unsigned char combiningClass(uint ucs4);
+ static unsigned char combiningClass(ushort ucs2);
+
+ static uint mirroredChar(uint ucs4);
+ static ushort mirroredChar(ushort ucs2);
+ static Decomposition decompositionTag(uint ucs4);
+
+ static int digitValue(uint ucs4);
+ static int digitValue(ushort ucs2);
+ static uint toLower(uint ucs4);
+ static ushort toLower(ushort ucs2);
+ static uint toUpper(uint ucs4);
+ static ushort toUpper(ushort ucs2);
+ static uint toTitleCase(uint ucs4);
+ static ushort toTitleCase(ushort ucs2);
+ static uint toCaseFolded(uint ucs4);
+ static ushort toCaseFolded(ushort ucs2);
+
+ static UnicodeVersion unicodeVersion(uint ucs4);
+ static UnicodeVersion unicodeVersion(ushort ucs2);
+
+ static QString decomposition(uint ucs4);
+# 346 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qchar.h"
+private:
+
+
+
+
+ ushort ucs;
+}
+
+
+
+ ;
+
+template <> class QTypeInfo<QChar> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QChar)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QChar"; } };
+
+inline QChar::QChar() : ucs(0) {}
+
+
+
+
+inline char QChar::toLatin1() const { return ucs > 0xff ? '\0' : char(ucs); }
+
+inline QChar QChar::fromLatin1(char c) { return QChar(ushort(uchar(c))); }
+
+inline QChar::QChar(uchar c, uchar r) : ucs((r << 8) | c){}
+inline QChar::QChar(short rc) : ucs(ushort(rc)){}
+inline QChar::QChar(uint rc) : ucs(ushort(rc & 0xffff)){}
+inline QChar::QChar(int rc) : ucs(ushort(rc & 0xffff)){}
+inline QChar::QChar(SpecialCharacter s) : ucs(ushort(s)) {}
+inline QChar::QChar(QLatin1Char ch) : ucs(ch.unicode()) {}
+
+inline void QChar::setCell(uchar acell)
+{ ucs = (ucs & 0xff00) + acell; }
+inline void QChar::setRow(uchar arow)
+{ ucs = (ushort(arow)<<8) + (ucs&0xff); }
+
+inline bool operator==(QChar c1, QChar c2) { return c1.unicode() == c2.unicode(); }
+inline bool operator!=(QChar c1, QChar c2) { return c1.unicode() != c2.unicode(); }
+inline bool operator<=(QChar c1, QChar c2) { return c1.unicode() <= c2.unicode(); }
+inline bool operator>=(QChar c1, QChar c2) { return c1.unicode() >= c2.unicode(); }
+inline bool operator<(QChar c1, QChar c2) { return c1.unicode() < c2.unicode(); }
+inline bool operator>(QChar c1, QChar c2) { return c1.unicode() > c2.unicode(); }
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QChar &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QChar &);
+
+
+
+
+
+# 1 "../../include/QtCore/qchar.h" 2
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qhash.h" 2
+# 1 "../../include/QtCore/qiterator.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qiterator.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qiterator.h"
+#define QITERATOR_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qiterator.h" 2
+
+
+
+namespace std {
+ struct bidirectional_iterator_tag;
+ struct random_access_iterator_tag;
+}
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+#define Q_DECLARE_SEQUENTIAL_ITERATOR(C) template <class T> class Q ##C ##Iterator { typedef typename Q ##C<T>::const_iterator const_iterator; Q ##C<T> c; const_iterator i; public: inline Q ##C ##Iterator(const Q ##C<T> &container) : c(container), i(c.constBegin()) {} inline Q ##C ##Iterator &operator=(const Q ##C<T> &container) { c = container; i = c.constBegin(); return *this; } inline void toFront() { i = c.constBegin(); } inline void toBack() { i = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline const T &next() { return *i++; } inline const T &peekNext() const { return *i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline const T &previous() { return *--i; } inline const T &peekPrevious() const { const_iterator p = i; return *--p; } inline bool findNext(const T &t) { while (i != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(--i) == t) return true; return false; } };
+# 86 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qiterator.h"
+#define Q_DECLARE_MUTABLE_SEQUENTIAL_ITERATOR(C) template <class T> class QMutable ##C ##Iterator { typedef typename Q ##C<T>::iterator iterator; typedef typename Q ##C<T>::const_iterator const_iterator; Q ##C<T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutable ##C ##Iterator(Q ##C<T> &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutable ##C ##Iterator() { c->setSharable(true); } inline QMutable ##C ##Iterator &operator=(Q ##C<T> &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = i; } inline bool hasNext() const { return c->constEnd() != const_iterator(i); } inline T &next() { n = i++; return *n; } inline T &peekNext() const { return *i; } inline bool hasPrevious() const { return c->constBegin() != const_iterator(i); } inline T &previous() { n = --i; return *n; } inline T &peekPrevious() const { iterator p = i; return *--p; } inline void remove() { if (c->constEnd() != const_iterator(n)) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) const { if (c->constEnd() != const_iterator(n)) *n = t; } inline T &value() { Q_ASSERT(item_exists()); return *n; } inline const T &value() const { Q_ASSERT(item_exists()); return *n; } inline void insert(const T &t) { n = i = c->insert(i, t); ++i; } inline bool findNext(const T &t) { while (c->constEnd() != const_iterator(n = i)) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (c->constBegin() != const_iterator(i)) if (*(n = --i) == t) return true; n = c->end(); return false; } };
+# 126 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qiterator.h"
+#define Q_DECLARE_ASSOCIATIVE_ITERATOR(C) template <class Key, class T> class Q ##C ##Iterator { typedef typename Q ##C<Key,T>::const_iterator const_iterator; typedef const_iterator Item; Q ##C<Key,T> c; const_iterator i, n; inline bool item_exists() const { return n != c.constEnd(); } public: inline Q ##C ##Iterator(const Q ##C<Key,T> &container) : c(container), i(c.constBegin()), n(c.constEnd()) {} inline Q ##C ##Iterator &operator=(const Q ##C<Key,T> &container) { c = container; i = c.constBegin(); n = c.constEnd(); return *this; } inline void toFront() { i = c.constBegin(); n = c.constEnd(); } inline void toBack() { i = c.constEnd(); n = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { const_iterator p = i; return --p; } inline const T &value() const { Q_ASSERT(item_exists()); return *n; } inline const Key &key() const { Q_ASSERT(item_exists()); return n.key(); } inline bool findNext(const T &t) { while ((n = i) != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(n = --i) == t) return true; n = c.constEnd(); return false; } };
+# 158 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qiterator.h"
+#define Q_DECLARE_MUTABLE_ASSOCIATIVE_ITERATOR(C) template <class Key, class T> class QMutable ##C ##Iterator { typedef typename Q ##C<Key,T>::iterator iterator; typedef typename Q ##C<Key,T>::const_iterator const_iterator; typedef iterator Item; Q ##C<Key,T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutable ##C ##Iterator(Q ##C<Key,T> &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutable ##C ##Iterator() { c->setSharable(true); } inline QMutable ##C ##Iterator &operator=(Q ##C<Key,T> &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = c->end(); } inline bool hasNext() const { return const_iterator(i) != c->constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return const_iterator(i) != c->constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { iterator p = i; return --p; } inline void remove() { if (const_iterator(n) != c->constEnd()) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) { if (const_iterator(n) != c->constEnd()) *n = t; } inline T &value() { Q_ASSERT(item_exists()); return *n; } inline const T &value() const { Q_ASSERT(item_exists()); return *n; } inline const Key &key() const { Q_ASSERT(item_exists()); return n.key(); } inline bool findNext(const T &t) { while (const_iterator(n = i) != c->constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (const_iterator(i) != c->constBegin()) if (*(n = --i) == t) return true; n = c->end(); return false; } };
+# 198 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qiterator.h"
+
+
+
+# 1 "../../include/QtCore/qiterator.h" 2
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qhash.h" 2
+# 1 "../../include/QtCore/qlist.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qlist.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qlist.h"
+#define QLIST_H
+
+# 1 "../../include/QtCore/qiterator.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qlist.h" 2
+# 1 "../../include/QtCore/qatomic.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qlist.h" 2
+# 1 "../../include/QtCore/qalgorithms.h" 1
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qlist.h" 2
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iterator" 1 3
+# 61 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iterator" 3
+#define _GLIBCXX_ITERATOR 1
+
+
+# 64 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iterator" 3
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 1 3
+# 37 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_CXX_CONFIG_H 1
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/os_defines.h" 1 3
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/os_defines.h" 3
+#define _GLIBCXX_OS_DEFINES 1
+
+
+
+
+
+#define __NO_CTYPE 1
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 1 3 4
+# 29 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 3 4
+#define _FEATURES_H 1
+
+
+
+
+#define __UCLIBC__ 1
+# 43 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 3 4
+#define __need_uClibc_config_h
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_config.h" 1 3 4
+
+
+
+
+#define __UCLIBC_MAJOR__ 0
+#define __UCLIBC_MINOR__ 9
+#define __UCLIBC_SUBLEVEL__ 29
+
+
+#undef __TARGET_alpha__
+#undef __TARGET_arm__
+#undef __TARGET_avr32__
+#define __TARGET_bfin__ 1
+#undef __TARGET_cris__
+#undef __TARGET_e1__
+#undef __TARGET_frv__
+#undef __TARGET_h8300__
+#undef __TARGET_hppa__
+#undef __TARGET_i386__
+#undef __TARGET_i960__
+#undef __TARGET_ia64__
+#undef __TARGET_m68k__
+#undef __TARGET_microblaze__
+#undef __TARGET_mips__
+#undef __TARGET_nios__
+#undef __TARGET_nios2__
+#undef __TARGET_powerpc__
+#undef __TARGET_sh__
+#undef __TARGET_sh64__
+#undef __TARGET_sparc__
+#undef __TARGET_v850__
+#undef __TARGET_vax__
+#undef __TARGET_x86_64__
+#undef __TARGET_xtensa__
+
+
+#define __TARGET_ARCH__ "bfin"
+#define __FORCE_OPTIONS_FOR_ARCH__ 1
+#define __TARGET_SUBARCH__ ""
+#undef __UCLIBC_FORMAT_ELF__
+#define __UCLIBC_FORMAT_FDPIC_ELF__ 1
+#undef __UCLIBC_FORMAT_FLAT__
+#undef __UCLIBC_FORMAT_FLAT_SEP_DATA__
+#undef __UCLIBC_FORMAT_SHARED_FLAT__
+#define __ARCH_LITTLE_ENDIAN__ 1
+
+
+#define __ARCH_HAS_NO_MMU__ 1
+
+
+#define __UCLIBC_HAS_FLOATS__ 1
+#define __UCLIBC_HAS_FPU__ 1
+#define __DO_C99_MATH__ 1
+#undef __UCLIBC_HAS_FENV__
+#define __KERNEL_HEADERS__ "/home/test/work/cruise/temp/kernel_build/usr/include"
+#undef __UCLIBC_UCLINUX_BROKEN_MUNMAP__
+#define __HAVE_DOT_CONFIG__ 1
+
+
+#undef __HAVE_NO_PIC__
+#define __DOPIC__ 1
+#undef __ARCH_HAS_NO_SHARED__
+#undef __ARCH_HAS_NO_LDSO__
+#define __HAVE_SHARED__ 1
+#define __FORCE_SHAREABLE_TEXT_SEGMENTS__ 1
+#define __LDSO_LDD_SUPPORT__ 1
+#define __LDSO_CACHE_SUPPORT__ 1
+#undef __LDSO_PRELOAD_FILE_SUPPORT__
+#define __LDSO_BASE_FILENAME__ "ld.so"
+#define __UCLIBC_STATIC_LDCONFIG__ 1
+#undef __LDSO_RUNPATH__
+#define __UCLIBC_CTOR_DTOR__ 1
+#undef __LDSO_GNU_HASH_SUPPORT__
+#undef __HAS_NO_THREADS__
+#define __UCLIBC_HAS_THREADS__ 1
+#define __PTHREADS_DEBUG_SUPPORT__ 1
+#define __LINUXTHREADS_OLD__ 1
+#define __UCLIBC_HAS_SYSLOG__ 1
+#define __UCLIBC_HAS_LFS__ 1
+#define __MALLOC__ 1
+#undef __MALLOC_SIMPLE__
+#undef __MALLOC_STANDARD__
+#undef __MALLOC_GLIBC_COMPAT__
+#define __UCLIBC_DYNAMIC_ATEXIT__ 1
+#undef __COMPAT_ATEXIT__
+#define __UCLIBC_SUSV3_LEGACY__ 1
+#define __UCLIBC_SUSV3_LEGACY_MACROS__ 1
+#undef __UCLIBC_HAS_STUBS__
+#undef __UCLIBC_HAS_SHADOW__
+#define __UCLIBC_HAS_PROGRAM_INVOCATION_NAME__ 1
+#define __UCLIBC_HAS___PROGNAME__ 1
+#define __UCLIBC_HAS_PTY__ 1
+#define __ASSUME_DEVPTS__ 1
+#define __UNIX98PTY_ONLY__ 1
+#undef __UCLIBC_HAS_GETPT__
+#define __UCLIBC_HAS_TM_EXTENSIONS__ 1
+#undef __UCLIBC_HAS_TZ_CACHING__
+#undef __UCLIBC_HAS_TZ_FILE__
+
+
+#define __UCLIBC_PWD_BUFFER_SIZE__ 256
+#define __UCLIBC_GRP_BUFFER_SIZE__ 256
+
+
+#undef __UCLIBC_LINUX_MODULE_24__
+#define __UCLIBC_LINUX_SPECIFIC__ 1
+#define __UCLIBC_HAS_GNU_ERROR__ 1
+#define __UCLIBC_BSD_SPECIFIC__ 1
+#define __UCLIBC_HAS_BSD_ERR__ 1
+#define __UCLIBC_HAS_OBSOLETE_BSD_SIGNAL__ 1
+#undef __UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL__
+#undef __UCLIBC_NTP_LEGACY__
+#define __UCLIBC_SV4_DEPRECATED__ 1
+#define __UCLIBC_HAS_REALTIME__ 1
+#define __UCLIBC_HAS_ADVANCED_REALTIME__ 1
+#define __UCLIBC_HAS_EPOLL__ 1
+#define __UCLIBC_HAS_XATTR__ 1
+#define __UCLIBC_HAS_PROFILING__ 1
+#define __UCLIBC_HAS_CRYPT_IMPL__ 1
+#define __UCLIBC_HAS_CRYPT__ 1
+#define __UCLIBC_HAS_NETWORK_SUPPORT__ 1
+#define __UCLIBC_HAS_SOCKET__ 1
+#define __UCLIBC_HAS_IPV4__ 1
+#undef __UCLIBC_HAS_IPV6__
+#define __UCLIBC_HAS_RPC__ 1
+#define __UCLIBC_HAS_FULL_RPC__ 1
+#define __UCLIBC_HAS_REENTRANT_RPC__ 1
+#undef __UCLIBC_USE_NETLINK__
+#define __UCLIBC_HAS_BSD_RES_CLOSE__ 1
+
+
+#define __UCLIBC_HAS_STRING_GENERIC_OPT__ 1
+#define __UCLIBC_HAS_STRING_ARCH_OPT__ 1
+#define __UCLIBC_HAS_CTYPE_TABLES__ 1
+#define __UCLIBC_HAS_CTYPE_SIGNED__ 1
+#define __UCLIBC_HAS_CTYPE_UNSAFE__ 1
+#undef __UCLIBC_HAS_CTYPE_CHECKED__
+#undef __UCLIBC_HAS_CTYPE_ENFORCED__
+#undef __UCLIBC_HAS_WCHAR__
+#undef __UCLIBC_HAS_LOCALE__
+#undef __UCLIBC_HAS_HEXADECIMAL_FLOATS__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_PRINTF__
+#undef __USE_OLD_VFPRINTF__
+#define __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__ 9
+#undef __UCLIBC_HAS_SCANF_GLIBC_A_FLAG__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_NONE__
+#define __UCLIBC_HAS_STDIO_BUFSIZ_256__ 1
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_512__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_1024__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_2048__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_4096__
+#undef __UCLIBC_HAS_STDIO_BUFSIZ_8192__
+#define __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE__ 1
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4__
+#undef __UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8__
+#undef __UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT__
+#define __UCLIBC_HAS_STDIO_GETC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_PUTC_MACRO__ 1
+#define __UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION__ 1
+#undef __UCLIBC_HAS_FOPEN_LARGEFILE_MODE__
+#undef __UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE__
+#undef __UCLIBC_HAS_GLIBC_CUSTOM_STREAMS__
+#undef __UCLIBC_HAS_PRINTF_M_SPEC__
+#define __UCLIBC_HAS_ERRNO_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_ERRLIST__
+#define __UCLIBC_HAS_SIGNUM_MESSAGES__ 1
+#undef __UCLIBC_HAS_SYS_SIGLIST__
+#define __UCLIBC_HAS_GNU_GETOPT__ 1
+#define __UCLIBC_HAS_GNU_GETSUBOPT__ 1
+
+
+#define __UCLIBC_HAS_REGEX__ 1
+#define __UCLIBC_HAS_REGEX_OLD__ 1
+#define __UCLIBC_HAS_FNMATCH__ 1
+#define __UCLIBC_HAS_FNMATCH_OLD__ 1
+#undef __UCLIBC_HAS_WORDEXP__
+#undef __UCLIBC_HAS_FTW__
+#define __UCLIBC_HAS_GLOB__ 1
+#undef __UCLIBC_HAS_GNU_GLOB__
+
+
+#define __SHARED_LIB_LOADER_PREFIX__ "/lib"
+#define __RUNTIME_PREFIX__ "/"
+#define __DEVEL_PREFIX__ "/usr"
+#define __MULTILIB__ ""
+
+
+#undef __UCLIBC_HAS_ARC4RANDOM__
+#undef __HAVE_NO_SSP__
+#undef __UCLIBC_HAS_SSP__
+#define __UCLIBC_BUILD_RELRO__ 1
+#undef __UCLIBC_BUILD_NOW__
+#undef __UCLIBC_BUILD_NOEXECSTACK__
+
+
+#define __CROSS_COMPILER_PREFIX__ "bfin-elf-"
+#define __UCLIBC_EXTRA_CFLAGS__ " -mcpu=bf532-none -mfdpic"
+#undef __DODEBUG__
+#undef __DODEBUG_PT__
+#undef __DOSTRIP__
+#undef __DOASSERTS__
+#define __SUPPORT_LD_DEBUG__ 1
+#undef __SUPPORT_LD_DEBUG_EARLY__
+#undef __UCLIBC_MALLOC_DEBUGGING__
+#define __WARNINGS__ "-Wall"
+#undef __EXTRA_WARNINGS__
+#undef __DOMULTI__
+#undef __UCLIBC_MJN3_ONLY__
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 2 3 4
+#undef __need_uClibc_config_h
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_arch_features.h" 1 3 4
+
+
+
+
+
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+
+
+#undef __UCLIBC_ABORT_INSTRUCTION__
+
+
+#define __UCLIBC_MMAP_HAS_6_ARGS__
+
+
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+
+#undef __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+
+
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+
+
+#undef __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+
+
+#undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+
+#define __UCLIBC_HAVE_SIGNED_ZERO__
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 2 3 4
+
+
+
+#define __OPTIMIZE_SIZE__ 1
+# 122 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 3 4
+#undef __USE_ISOC99
+#undef __USE_POSIX
+#undef __USE_POSIX2
+#undef __USE_POSIX199309
+#undef __USE_POSIX199506
+#undef __USE_XOPEN
+#undef __USE_XOPEN_EXTENDED
+#undef __USE_UNIX98
+#undef __USE_XOPEN2K
+#undef __USE_LARGEFILE
+#undef __USE_LARGEFILE64
+#undef __USE_FILE_OFFSET64
+#undef __USE_BSD
+#undef __USE_SVID
+#undef __USE_MISC
+#undef __USE_ATFILE
+#undef __USE_GNU
+#undef __USE_REENTRANT
+#undef __USE_FORTIFY_LEVEL
+#undef __FAVOR_BSD
+#undef __KERNEL_STRICT_NAMES
+
+
+
+
+#define __KERNEL_STRICT_NAMES
+
+
+
+#define __USE_ANSI 1
+# 161 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 3 4
+#define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+# 178 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 3 4
+#undef _ISOC99_SOURCE
+#define _ISOC99_SOURCE 1
+#undef _POSIX_SOURCE
+#define _POSIX_SOURCE 1
+#undef _POSIX_C_SOURCE
+#define _POSIX_C_SOURCE 199506L
+#undef _XOPEN_SOURCE
+#define _XOPEN_SOURCE 600
+#undef _XOPEN_SOURCE_EXTENDED
+#define _XOPEN_SOURCE_EXTENDED 1
+
+#undef _LARGEFILE64_SOURCE
+#define _LARGEFILE64_SOURCE 1
+
+#undef _BSD_SOURCE
+#define _BSD_SOURCE 1
+#undef _SVID_SOURCE
+#define _SVID_SOURCE 1
+#undef _ATFILE_SOURCE
+#define _ATFILE_SOURCE 1
+# 216 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 3 4
+#define __USE_ISOC99 1
+# 232 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 3 4
+#define __USE_POSIX 1
+
+
+
+#define __USE_POSIX2 1
+
+
+
+#define __USE_POSIX199309 1
+
+
+
+#define __USE_POSIX199506 1
+
+
+
+
+
+
+
+#define __USE_XOPEN 1
+
+#define __USE_XOPEN_EXTENDED 1
+#define __USE_UNIX98 1
+#undef _LARGEFILE_SOURCE
+#define _LARGEFILE_SOURCE 1
+
+#define __USE_XOPEN2K 1
+#undef __USE_ISOC99
+#define __USE_ISOC99 1
+# 271 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 3 4
+#define __USE_LARGEFILE 1
+
+
+
+#define __USE_LARGEFILE64 1
+
+
+
+
+
+
+
+#define __USE_MISC 1
+
+
+
+#define __USE_BSD 1
+
+
+
+#define __USE_SVID 1
+
+
+
+#define __USE_ATFILE 1
+
+
+
+#define __USE_GNU 1
+
+
+
+#define __USE_REENTRANT 1
+
+
+
+#undef _FORTIFY_SOURCE
+# 316 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 3 4
+#define __USE_FORTIFY_LEVEL 0
+
+
+
+#define __STDC_IEC_559__ 1
+#define __STDC_IEC_559_COMPLEX__ 1
+# 339 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 3 4
+#undef __GNU_LIBRARY__
+#define __GNU_LIBRARY__ 6
+
+
+
+
+#define __GLIBC__ 2
+#define __GLIBC_MINOR__ 2
+
+
+#define __GLIBC_PREREQ(maj,min) ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
+# 365 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 1 3 4
+# 21 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define _SYS_CDEFS_H 1
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#undef __P
+#undef __PMT
+# 51 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __THROW throw ()
+#define __NTH(fct) fct throw ()
+# 74 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __P(args) args
+#define __PMT(args) args
+
+
+
+
+#define __CONCAT(x,y) x ## y
+#define __STRING(x) #x
+
+
+#define __ptr_t void *
+#define __long_double_t long double
+
+
+
+
+#define __BEGIN_DECLS extern "C" {
+#define __END_DECLS }
+# 114 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __BEGIN_NAMESPACE_STD
+#define __END_NAMESPACE_STD
+#define __USING_NAMESPACE_STD(name)
+#define __BEGIN_NAMESPACE_C99
+#define __END_NAMESPACE_C99
+#define __USING_NAMESPACE_C99(name)
+
+
+
+
+
+#define __bounded
+#define __unbounded
+#define __ptrvalue
+
+
+
+
+#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
+#define __bos0(ptr) __builtin_object_size (ptr, 0)
+
+
+#define __warndecl(name,msg) extern void name (void) __attribute__((__warning__ (msg)))
+
+#define __warnattr(msg) __attribute__((__warning__ (msg)))
+#define __errordecl(name,msg) extern void name (void) __attribute__((__error__ (msg)))
+# 150 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __flexarr []
+# 177 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __REDIRECT(name,proto,alias) name proto __asm__ (__ASMNAME (#alias))
+
+#define __REDIRECT_NTH(name,proto,alias) name proto __THROW __asm__ (__ASMNAME (#alias))
+
+
+
+
+
+#define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname)
+#define __ASMNAME2(prefix,cname) __STRING (prefix) cname
+# 206 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __attribute_aligned__(size) __attribute__ ((__aligned__ (size)))
+# 215 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __attribute_malloc__ __attribute__ ((__malloc__))
+# 224 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __attribute_pure__ __attribute__ ((__pure__))
+# 233 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __attribute_used__ __attribute__ ((__used__))
+#define __attribute_noinline__ __attribute__ ((__noinline__))
+
+
+
+
+
+
+
+#define __attribute_deprecated__ __attribute__ ((__deprecated__))
+# 254 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
+# 264 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __attribute_format_strfmon__(a,b) __attribute__ ((__format__ (__strfmon__, a, b)))
+# 273 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __nonnull(params) __attribute__ ((__nonnull__ params))
+
+
+
+
+
+
+
+#define __attribute_warn_unused_result__ __attribute__ ((__warn_unused_result__))
+# 290 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __wur
+
+
+
+
+#define __always_inline __inline __attribute__ ((__always_inline__))
+# 306 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
+
+#define __extern_always_inline extern __always_inline __attribute__ ((__gnu_inline__, __artificial__))
+# 323 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __va_arg_pack() __builtin_va_arg_pack ()
+#define __va_arg_pack_len() __builtin_va_arg_pack_len ()
+# 347 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/cdefs.h" 3 4
+#define __restrict_arr
+# 366 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 2 3 4
+# 418 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/features.h" 3 4
+#undef _ATFILE_SOURCE
+#undef __USE_ATFILE
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/os_defines.h" 2 3
+
+
+#define __NO_STRING_INLINES
+# 41 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 2 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/cpu_defines.h" 1 3
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/cpu_defines.h" 3
+#define _GLIBCXX_CPU_DEFINES 1
+# 44 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 2 3
+
+
+#define __GLIBCXX__ 20090804
+
+
+
+
+#define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1
+
+
+#define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V)))
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_DEPRECATED 1
+
+
+
+
+
+#define _GLIBCXX_DEPRECATED_ATTR
+# 98 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0
+# 122 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_STD_D _GLIBCXX_STD
+#define _GLIBCXX_STD_P _GLIBCXX_STD
+#define _GLIBCXX_STD std
+#define _GLIBCXX_BEGIN_NESTED_NAMESPACE(X,Y) _GLIBCXX_BEGIN_NAMESPACE(X)
+#define _GLIBCXX_END_NESTED_NAMESPACE _GLIBCXX_END_NAMESPACE
+#define _GLIBCXX_BEGIN_NAMESPACE(X) namespace X _GLIBCXX_VISIBILITY_ATTR(default) {
+#define _GLIBCXX_END_NAMESPACE }
+# 229 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#undef _GLIBCXX_LONG_DOUBLE_COMPAT
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+
+
+
+
+
+#define _GLIBCXX_LDBL_NAMESPACE
+#define _GLIBCXX_BEGIN_LDBL_NAMESPACE
+#define _GLIBCXX_END_LDBL_NAMESPACE
+
+}
+# 259 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_EXTERN_TEMPLATE 1
+
+
+
+
+
+
+
+#define _GLIBCXX_WEAK_DEFINITION
+# 285 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_FAST_MATH 0
+
+
+
+
+
+
+#define __N(msgid) (msgid)
+
+
+#undef min
+#undef max
+
+
+
+
+
+
+#define _GLIBCXX_HAVE_ACOSF 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_ASINF 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_ATAN2F 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_ATANF 1
+# 330 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_CEILF 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_COMPLEX_H 1
+
+
+#define _GLIBCXX_HAVE_COPYSIGN 1
+
+
+#define _GLIBCXX_HAVE_COPYSIGNF 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_COSF 1
+
+
+#define _GLIBCXX_HAVE_COSHF 1
+# 360 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_DLFCN_H 1
+
+
+#define _GLIBCXX_HAVE_ENDIAN_H 1
+
+
+#define _GLIBCXX_HAVE_EXPF 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_FABSF 1
+# 381 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_FINITE 1
+
+
+#define _GLIBCXX_HAVE_FINITEF 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_FLOAT_H 1
+
+
+#define _GLIBCXX_HAVE_FLOORF 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_FMODF 1
+# 411 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_FREXPF 1
+# 423 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_GETIPINFO 1
+
+
+
+
+
+
+#define _GLIBCXX_HAVE_GTHR_DEFAULT 1
+
+
+#define _GLIBCXX_HAVE_HYPOT 1
+
+
+#define _GLIBCXX_HAVE_HYPOTF 1
+# 448 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_INT64_T 1
+
+
+#define _GLIBCXX_HAVE_INTTYPES_H 1
+
+
+#define _GLIBCXX_HAVE_ISINF 1
+
+
+#define _GLIBCXX_HAVE_ISINFF 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_ISNAN 1
+
+
+#define _GLIBCXX_HAVE_ISNANF 1
+# 478 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_LDEXPF 1
+# 487 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_LIBM 1
+# 505 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_LINUX_FUTEX 1
+
+
+#define _GLIBCXX_HAVE_LOCALE_H 1
+
+
+#define _GLIBCXX_HAVE_LOG10F 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_LOGF 1
+# 532 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_MEMORY_H 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_MODF 1
+
+
+#define _GLIBCXX_HAVE_MODFF 1
+# 550 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_POLL 1
+
+
+#define _GLIBCXX_HAVE_POWF 1
+# 565 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_SIGSETJMP 1
+# 577 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_SINF 1
+
+
+#define _GLIBCXX_HAVE_SINHF 1
+# 589 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_SQRTF 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_STDBOOL_H 1
+
+
+#define _GLIBCXX_HAVE_STDINT_H 1
+
+
+#define _GLIBCXX_HAVE_STDLIB_H 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_STRERROR_R 1
+
+
+#define _GLIBCXX_HAVE_STRINGS_H 1
+
+
+#define _GLIBCXX_HAVE_STRING_H 1
+
+
+#define _GLIBCXX_HAVE_STRTOF 1
+
+
+#define _GLIBCXX_HAVE_STRTOLD 1
+# 628 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_SYS_IOCTL_H 1
+
+
+#define _GLIBCXX_HAVE_SYS_IPC_H 1
+# 646 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_SYS_SEM_H 1
+
+
+#define _GLIBCXX_HAVE_SYS_STAT_H 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_SYS_TYPES_H 1
+
+
+#define _GLIBCXX_HAVE_SYS_UIO_H 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_S_ISREG 1
+
+
+#define _GLIBCXX_HAVE_TANF 1
+
+
+#define _GLIBCXX_HAVE_TANHF 1
+# 679 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_TGMATH_H 1
+
+
+
+
+
+#define _GLIBCXX_HAVE_UNISTD_H 1
+# 706 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE_WRITEV 1
+# 901 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HAVE___BUILTIN_ABS 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_COS 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_COSF 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_COSL 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_FABS 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_FABSF 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_FABSL 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_LABS 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_SIN 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_SINF 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_SINL 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_SQRT 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_SQRTF 1
+
+
+#define _GLIBCXX_HAVE___BUILTIN_SQRTL 1
+
+
+#define _GLIBCXX_HAVE___SIGNBIT 1
+
+
+#define _GLIBCXX_HAVE___SIGNBITF 1
+# 956 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define LT_OBJDIR ".libs/"
+
+
+
+
+
+#define _GLIBCXX_PACKAGE_BUGREPORT ""
+
+
+#define _GLIBCXX_PACKAGE_NAME "package-unused"
+
+
+#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused"
+
+
+#define _GLIBCXX_PACKAGE_TARNAME "libstdc++"
+
+
+#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused"
+
+
+#define STDC_HEADERS 1
+
+
+
+
+
+#define _GLIBCXX_ATOMIC_BUILTINS 1
+# 992 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_HOSTED 1
+# 1032 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++config.h" 3
+#define _GLIBCXX_USE_C99_COMPLEX_TR1 1
+
+
+
+#define _GLIBCXX_USE_C99_CTYPE_TR1 1
+
+
+
+
+
+
+
+#define _GLIBCXX_USE_C99_INTTYPES_TR1 1
+
+
+
+#define _GLIBCXX_USE_C99_MATH 1
+
+
+
+
+
+
+
+#define _GLIBCXX_USE_C99_STDINT_TR1 1
+
+
+#define _GLIBCXX_USE_LFS 1
+
+
+#define _GLIBCXX_USE_LONG_LONG 1
+# 66 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iterator" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 2 3
+
+
+#define _GLIBCXX_CSTDDEF 1
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ using ::ptrdiff_t;
+ using ::size_t;
+
+}
+# 67 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iterator" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator_base_types.h" 1 3
+# 66 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator_base_types.h" 3
+#define _STL_ITERATOR_BASE_TYPES_H 1
+
+
+# 69 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator_base_types.h" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 2 3
+# 72 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator_base_types.h" 2 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 84 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator_base_types.h" 3
+ struct input_iterator_tag {};
+
+ struct output_iterator_tag {};
+
+ struct forward_iterator_tag : public input_iterator_tag {};
+
+
+ struct bidirectional_iterator_tag : public forward_iterator_tag {};
+
+
+ struct random_access_iterator_tag : public bidirectional_iterator_tag {};
+# 108 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator_base_types.h" 3
+ template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
+ typename _Pointer = _Tp*, typename _Reference = _Tp&>
+ struct iterator
+ {
+
+ typedef _Category iterator_category;
+
+ typedef _Tp value_type;
+
+ typedef _Distance difference_type;
+
+ typedef _Pointer pointer;
+
+ typedef _Reference reference;
+ };
+
+
+
+
+
+
+
+ template<typename _Iterator>
+ struct iterator_traits
+ {
+ typedef typename _Iterator::iterator_category iterator_category;
+ typedef typename _Iterator::value_type value_type;
+ typedef typename _Iterator::difference_type difference_type;
+ typedef typename _Iterator::pointer pointer;
+ typedef typename _Iterator::reference reference;
+ };
+
+ template<typename _Tp>
+ struct iterator_traits<_Tp*>
+ {
+ typedef random_access_iterator_tag iterator_category;
+ typedef _Tp value_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Tp* pointer;
+ typedef _Tp& reference;
+ };
+
+ template<typename _Tp>
+ struct iterator_traits<const _Tp*>
+ {
+ typedef random_access_iterator_tag iterator_category;
+ typedef _Tp value_type;
+ typedef ptrdiff_t difference_type;
+ typedef const _Tp* pointer;
+ typedef const _Tp& reference;
+ };
+
+
+
+
+
+ template<typename _Iter>
+ inline typename iterator_traits<_Iter>::iterator_category
+ __iterator_category(const _Iter&)
+ { return typename iterator_traits<_Iter>::iterator_category(); }
+
+}
+# 68 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iterator" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator_base_funcs.h" 1 3
+# 66 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator_base_funcs.h" 3
+#define _STL_ITERATOR_BASE_FUNCS_H 1
+
+
+# 69 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator_base_funcs.h" 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/concept_check.h" 1 3
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/concept_check.h" 3
+#define _CONCEPT_CHECK_H 1
+
+
+# 39 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/concept_check.h" 3
+# 52 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/concept_check.h" 3
+#define __glibcxx_function_requires(...)
+#define __glibcxx_class_requires(_a,_b)
+#define __glibcxx_class_requires2(_a,_b,_c)
+#define __glibcxx_class_requires3(_a,_b,_c,_d)
+#define __glibcxx_class_requires4(_a,_b,_c,_d,_e)
+# 70 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator_base_funcs.h" 2 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _InputIterator>
+ inline typename iterator_traits<_InputIterator>::difference_type
+ __distance(_InputIterator __first, _InputIterator __last,
+ input_iterator_tag)
+ {
+
+
+
+ typename iterator_traits<_InputIterator>::difference_type __n = 0;
+ while (__first != __last)
+ {
+ ++__first;
+ ++__n;
+ }
+ return __n;
+ }
+
+ template<typename _RandomAccessIterator>
+ inline typename iterator_traits<_RandomAccessIterator>::difference_type
+ __distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
+ random_access_iterator_tag)
+ {
+
+
+
+ return __last - __first;
+ }
+# 113 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator_base_funcs.h" 3
+ template<typename _InputIterator>
+ inline typename iterator_traits<_InputIterator>::difference_type
+ distance(_InputIterator __first, _InputIterator __last)
+ {
+
+ return std::__distance(__first, __last,
+ std::__iterator_category(__first));
+ }
+
+ template<typename _InputIterator, typename _Distance>
+ inline void
+ __advance(_InputIterator& __i, _Distance __n, input_iterator_tag)
+ {
+
+
+ while (__n--)
+ ++__i;
+ }
+
+ template<typename _BidirectionalIterator, typename _Distance>
+ inline void
+ __advance(_BidirectionalIterator& __i, _Distance __n,
+ bidirectional_iterator_tag)
+ {
+
+
+
+ if (__n > 0)
+ while (__n--)
+ ++__i;
+ else
+ while (__n++)
+ --__i;
+ }
+
+ template<typename _RandomAccessIterator, typename _Distance>
+ inline void
+ __advance(_RandomAccessIterator& __i, _Distance __n,
+ random_access_iterator_tag)
+ {
+
+
+
+ __i += __n;
+ }
+# 171 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator_base_funcs.h" 3
+ template<typename _InputIterator, typename _Distance>
+ inline void
+ advance(_InputIterator& __i, _Distance __n)
+ {
+
+ typename iterator_traits<_InputIterator>::difference_type __d = __n;
+ std::__advance(__i, __d, std::__iterator_category(__i));
+ }
+
+}
+# 69 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iterator" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 1 3
+# 67 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+#define _STL_ITERATOR_H 1
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/cpp_type_traits.h" 1 3
+# 39 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/cpp_type_traits.h" 3
+#define _CPP_TYPE_TRAITS_H 1
+
+
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/cpp_type_traits.h" 3
+# 74 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/cpp_type_traits.h" 3
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _Iterator, typename _Container>
+ class __normal_iterator;
+
+}
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ struct __true_type { };
+ struct __false_type { };
+
+ template<bool>
+ struct __truth_type
+ { typedef __false_type __type; };
+
+ template<>
+ struct __truth_type<true>
+ { typedef __true_type __type; };
+
+
+
+ template<class _Sp, class _Tp>
+ struct __traitor
+ {
+ enum { __value = bool(_Sp::__value) || bool(_Tp::__value) };
+ typedef typename __truth_type<__value>::__type __type;
+ };
+
+
+
+ template<class _Sp, class _Tp>
+ struct __traitand
+ {
+ enum { __value = bool(_Sp::__value) && bool(_Tp::__value) };
+ typedef typename __truth_type<__value>::__type __type;
+ };
+
+
+ template<typename, typename>
+ struct __are_same
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+
+ template<typename _Tp>
+ struct __are_same<_Tp, _Tp>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+
+ template<typename _Tp>
+ struct __is_void
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+
+ template<>
+ struct __is_void<void>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+
+
+
+ template<typename _Tp>
+ struct __is_integer
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+
+
+
+
+ template<>
+ struct __is_integer<bool>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_integer<char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_integer<signed char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_integer<unsigned char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+# 192 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/cpp_type_traits.h" 3
+ template<>
+ struct __is_integer<short>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_integer<unsigned short>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_integer<int>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_integer<unsigned int>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_integer<long>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_integer<unsigned long>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_integer<long long>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_integer<unsigned long long>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+
+
+
+ template<typename _Tp>
+ struct __is_floating
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+
+
+ template<>
+ struct __is_floating<float>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_floating<double>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_floating<long double>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+
+
+
+ template<typename _Tp>
+ struct __is_pointer
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+
+ template<typename _Tp>
+ struct __is_pointer<_Tp*>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+
+
+
+ template<typename _Tp>
+ struct __is_normal_iterator
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+
+ template<typename _Iterator, typename _Container>
+ struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator,
+ _Container> >
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+
+
+
+ template<typename _Tp>
+ struct __is_arithmetic
+ : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >
+ { };
+
+
+
+
+ template<typename _Tp>
+ struct __is_fundamental
+ : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> >
+ { };
+
+
+
+
+ template<typename _Tp>
+ struct __is_scalar
+ : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> >
+ { };
+
+
+
+
+ template<typename _Tp>
+ struct __is_char
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+
+ template<>
+ struct __is_char<char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+# 365 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/cpp_type_traits.h" 3
+ template<typename _Tp>
+ struct __is_byte
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+
+ template<>
+ struct __is_byte<char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_byte<signed char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+ template<>
+ struct __is_byte<unsigned char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+
+
+
+
+ template<typename _Tp>
+ struct __is_move_iterator
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+# 415 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/cpp_type_traits.h" 3
+}
+# 70 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/type_traits.h" 1 3
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/type_traits.h" 3
+#define _EXT_TYPE_TRAITS 1
+
+
+# 39 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/type_traits.h" 3
+
+
+
+
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+
+
+ template<bool, typename>
+ struct __enable_if
+ { };
+
+ template<typename _Tp>
+ struct __enable_if<true, _Tp>
+ { typedef _Tp __type; };
+
+
+
+ template<bool _Cond, typename _Iftrue, typename _Iffalse>
+ struct __conditional_type
+ { typedef _Iftrue __type; };
+
+ template<typename _Iftrue, typename _Iffalse>
+ struct __conditional_type<false, _Iftrue, _Iffalse>
+ { typedef _Iffalse __type; };
+
+
+
+ template<typename _Tp>
+ struct __add_unsigned
+ {
+ private:
+ typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
+
+ public:
+ typedef typename __if_type::__type __type;
+ };
+
+ template<>
+ struct __add_unsigned<char>
+ { typedef unsigned char __type; };
+
+ template<>
+ struct __add_unsigned<signed char>
+ { typedef unsigned char __type; };
+
+ template<>
+ struct __add_unsigned<short>
+ { typedef unsigned short __type; };
+
+ template<>
+ struct __add_unsigned<int>
+ { typedef unsigned int __type; };
+
+ template<>
+ struct __add_unsigned<long>
+ { typedef unsigned long __type; };
+
+ template<>
+ struct __add_unsigned<long long>
+ { typedef unsigned long long __type; };
+
+
+ template<>
+ struct __add_unsigned<bool>;
+
+ template<>
+ struct __add_unsigned<wchar_t>;
+
+
+
+ template<typename _Tp>
+ struct __remove_unsigned
+ {
+ private:
+ typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
+
+ public:
+ typedef typename __if_type::__type __type;
+ };
+
+ template<>
+ struct __remove_unsigned<char>
+ { typedef signed char __type; };
+
+ template<>
+ struct __remove_unsigned<unsigned char>
+ { typedef signed char __type; };
+
+ template<>
+ struct __remove_unsigned<unsigned short>
+ { typedef short __type; };
+
+ template<>
+ struct __remove_unsigned<unsigned int>
+ { typedef int __type; };
+
+ template<>
+ struct __remove_unsigned<unsigned long>
+ { typedef long __type; };
+
+ template<>
+ struct __remove_unsigned<unsigned long long>
+ { typedef long long __type; };
+
+
+ template<>
+ struct __remove_unsigned<bool>;
+
+ template<>
+ struct __remove_unsigned<wchar_t>;
+
+
+
+ template<typename _Type>
+ inline bool
+ __is_null_pointer(_Type* __ptr)
+ { return __ptr == 0; }
+
+ template<typename _Type>
+ inline bool
+ __is_null_pointer(_Type)
+ { return false; }
+
+
+
+ template<typename _Tp, bool = std::__is_integer<_Tp>::__value>
+ struct __promote
+ { typedef double __type; };
+
+ template<typename _Tp>
+ struct __promote<_Tp, false>
+ { typedef _Tp __type; };
+
+ template<typename _Tp, typename _Up>
+ struct __promote_2
+ {
+ private:
+ typedef typename __promote<_Tp>::__type __type1;
+ typedef typename __promote<_Up>::__type __type2;
+
+ public:
+ typedef __typeof__(__type1() + __type2()) __type;
+ };
+
+ template<typename _Tp, typename _Up, typename _Vp>
+ struct __promote_3
+ {
+ private:
+ typedef typename __promote<_Tp>::__type __type1;
+ typedef typename __promote<_Up>::__type __type2;
+ typedef typename __promote<_Vp>::__type __type3;
+
+ public:
+ typedef __typeof__(__type1() + __type2() + __type3()) __type;
+ };
+
+ template<typename _Tp, typename _Up, typename _Vp, typename _Wp>
+ struct __promote_4
+ {
+ private:
+ typedef typename __promote<_Tp>::__type __type1;
+ typedef typename __promote<_Up>::__type __type2;
+ typedef typename __promote<_Vp>::__type __type3;
+ typedef typename __promote<_Wp>::__type __type4;
+
+ public:
+ typedef __typeof__(__type1() + __type2() + __type3() + __type4()) __type;
+ };
+
+}
+# 71 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_move.h" 1 3
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_move.h" 3
+#define _STL_MOVE_H 1
+# 67 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_move.h" 3
+#define _GLIBCXX_MOVE(_Tp) (_Tp)
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+
+
+
+
+
+ template<typename _Tp>
+ inline void
+ swap(_Tp& __a, _Tp& __b)
+ {
+
+
+
+ _Tp __tmp = (__a);
+ __a = (__b);
+ __b = (__tmp);
+ }
+
+}
+# 72 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 2 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 94 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ template<typename _Iterator>
+ class reverse_iterator
+ : public iterator<typename iterator_traits<_Iterator>::iterator_category,
+ typename iterator_traits<_Iterator>::value_type,
+ typename iterator_traits<_Iterator>::difference_type,
+ typename iterator_traits<_Iterator>::pointer,
+ typename iterator_traits<_Iterator>::reference>
+ {
+ protected:
+ _Iterator current;
+
+ public:
+ typedef _Iterator iterator_type;
+ typedef typename iterator_traits<_Iterator>::difference_type
+ difference_type;
+ typedef typename iterator_traits<_Iterator>::reference reference;
+ typedef typename iterator_traits<_Iterator>::pointer pointer;
+
+ public:
+
+
+
+
+
+
+ reverse_iterator() : current() { }
+
+
+
+
+ explicit
+ reverse_iterator(iterator_type __x) : current(__x) { }
+
+
+
+
+ reverse_iterator(const reverse_iterator& __x)
+ : current(__x.current) { }
+
+
+
+
+
+ template<typename _Iter>
+ reverse_iterator(const reverse_iterator<_Iter>& __x)
+ : current(__x.base()) { }
+
+
+
+
+ iterator_type
+ base() const
+ { return current; }
+
+
+
+
+
+
+ reference
+ operator*() const
+ {
+ _Iterator __tmp = current;
+ return *--__tmp;
+ }
+
+
+
+
+
+
+ pointer
+ operator->() const
+ { return &(operator*()); }
+
+
+
+
+
+
+ reverse_iterator&
+ operator++()
+ {
+ --current;
+ return *this;
+ }
+
+
+
+
+
+
+ reverse_iterator
+ operator++(int)
+ {
+ reverse_iterator __tmp = *this;
+ --current;
+ return __tmp;
+ }
+
+
+
+
+
+
+ reverse_iterator&
+ operator--()
+ {
+ ++current;
+ return *this;
+ }
+
+
+
+
+
+
+ reverse_iterator
+ operator--(int)
+ {
+ reverse_iterator __tmp = *this;
+ ++current;
+ return __tmp;
+ }
+
+
+
+
+
+
+ reverse_iterator
+ operator+(difference_type __n) const
+ { return reverse_iterator(current - __n); }
+
+
+
+
+
+
+ reverse_iterator&
+ operator+=(difference_type __n)
+ {
+ current -= __n;
+ return *this;
+ }
+
+
+
+
+
+
+ reverse_iterator
+ operator-(difference_type __n) const
+ { return reverse_iterator(current + __n); }
+
+
+
+
+
+
+ reverse_iterator&
+ operator-=(difference_type __n)
+ {
+ current += __n;
+ return *this;
+ }
+
+
+
+
+
+
+ reference
+ operator[](difference_type __n) const
+ { return *(*this + __n); }
+ };
+# 281 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ template<typename _Iterator>
+ inline bool
+ operator==(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return __x.base() == __y.base(); }
+
+ template<typename _Iterator>
+ inline bool
+ operator<(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return __y.base() < __x.base(); }
+
+ template<typename _Iterator>
+ inline bool
+ operator!=(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return !(__x == __y); }
+
+ template<typename _Iterator>
+ inline bool
+ operator>(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return __y < __x; }
+
+ template<typename _Iterator>
+ inline bool
+ operator<=(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return !(__y < __x); }
+
+ template<typename _Iterator>
+ inline bool
+ operator>=(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return !(__x < __y); }
+
+ template<typename _Iterator>
+ inline typename reverse_iterator<_Iterator>::difference_type
+ operator-(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return __y.base() - __x.base(); }
+
+ template<typename _Iterator>
+ inline reverse_iterator<_Iterator>
+ operator+(typename reverse_iterator<_Iterator>::difference_type __n,
+ const reverse_iterator<_Iterator>& __x)
+ { return reverse_iterator<_Iterator>(__x.base() - __n); }
+
+
+
+ template<typename _IteratorL, typename _IteratorR>
+ inline bool
+ operator==(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return __x.base() == __y.base(); }
+
+ template<typename _IteratorL, typename _IteratorR>
+ inline bool
+ operator<(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return __y.base() < __x.base(); }
+
+ template<typename _IteratorL, typename _IteratorR>
+ inline bool
+ operator!=(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return !(__x == __y); }
+
+ template<typename _IteratorL, typename _IteratorR>
+ inline bool
+ operator>(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return __y < __x; }
+
+ template<typename _IteratorL, typename _IteratorR>
+ inline bool
+ operator<=(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return !(__y < __x); }
+
+ template<typename _IteratorL, typename _IteratorR>
+ inline bool
+ operator>=(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return !(__x < __y); }
+
+ template<typename _IteratorL, typename _IteratorR>
+ inline typename reverse_iterator<_IteratorL>::difference_type
+ operator-(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return __y.base() - __x.base(); }
+# 385 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ template<typename _Container>
+ class back_insert_iterator
+ : public iterator<output_iterator_tag, void, void, void, void>
+ {
+ protected:
+ _Container* container;
+
+ public:
+
+ typedef _Container container_type;
+
+
+ explicit
+ back_insert_iterator(_Container& __x) : container(&__x) { }
+# 411 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ back_insert_iterator&
+ operator=(typename _Container::const_reference __value)
+ {
+ container->push_back(__value);
+ return *this;
+ }
+# 428 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ back_insert_iterator&
+ operator*()
+ { return *this; }
+
+
+ back_insert_iterator&
+ operator++()
+ { return *this; }
+
+
+ back_insert_iterator
+ operator++(int)
+ { return *this; }
+ };
+# 454 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ template<typename _Container>
+ inline back_insert_iterator<_Container>
+ back_inserter(_Container& __x)
+ { return back_insert_iterator<_Container>(__x); }
+# 469 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ template<typename _Container>
+ class front_insert_iterator
+ : public iterator<output_iterator_tag, void, void, void, void>
+ {
+ protected:
+ _Container* container;
+
+ public:
+
+ typedef _Container container_type;
+
+
+ explicit front_insert_iterator(_Container& __x) : container(&__x) { }
+# 494 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ front_insert_iterator&
+ operator=(typename _Container::const_reference __value)
+ {
+ container->push_front(__value);
+ return *this;
+ }
+# 511 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ front_insert_iterator&
+ operator*()
+ { return *this; }
+
+
+ front_insert_iterator&
+ operator++()
+ { return *this; }
+
+
+ front_insert_iterator
+ operator++(int)
+ { return *this; }
+ };
+# 537 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ template<typename _Container>
+ inline front_insert_iterator<_Container>
+ front_inserter(_Container& __x)
+ { return front_insert_iterator<_Container>(__x); }
+# 556 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ template<typename _Container>
+ class insert_iterator
+ : public iterator<output_iterator_tag, void, void, void, void>
+ {
+ protected:
+ _Container* container;
+ typename _Container::iterator iter;
+
+ public:
+
+ typedef _Container container_type;
+
+
+
+
+
+ insert_iterator(_Container& __x, typename _Container::iterator __i)
+ : container(&__x), iter(__i) {}
+# 598 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ insert_iterator&
+ operator=(typename _Container::const_reference __value)
+ {
+ iter = container->insert(iter, __value);
+ ++iter;
+ return *this;
+ }
+# 617 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ insert_iterator&
+ operator*()
+ { return *this; }
+
+
+ insert_iterator&
+ operator++()
+ { return *this; }
+
+
+ insert_iterator&
+ operator++(int)
+ { return *this; }
+ };
+# 643 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ template<typename _Container, typename _Iterator>
+ inline insert_iterator<_Container>
+ inserter(_Container& __x, _Iterator __i)
+ {
+ return insert_iterator<_Container>(__x,
+ typename _Container::iterator(__i));
+ }
+
+}
+
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+# 662 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ using std::iterator_traits;
+ using std::iterator;
+ template<typename _Iterator, typename _Container>
+ class __normal_iterator
+ {
+ protected:
+ _Iterator _M_current;
+
+ public:
+ typedef _Iterator iterator_type;
+ typedef typename iterator_traits<_Iterator>::iterator_category
+ iterator_category;
+ typedef typename iterator_traits<_Iterator>::value_type value_type;
+ typedef typename iterator_traits<_Iterator>::difference_type
+ difference_type;
+ typedef typename iterator_traits<_Iterator>::reference reference;
+ typedef typename iterator_traits<_Iterator>::pointer pointer;
+
+ __normal_iterator() : _M_current(_Iterator()) { }
+
+ explicit
+ __normal_iterator(const _Iterator& __i) : _M_current(__i) { }
+
+
+ template<typename _Iter>
+ __normal_iterator(const __normal_iterator<_Iter,
+ typename __enable_if<
+ (std::__are_same<_Iter, typename _Container::pointer>::__value),
+ _Container>::__type>& __i)
+ : _M_current(__i.base()) { }
+
+
+ reference
+ operator*() const
+ { return *_M_current; }
+
+ pointer
+ operator->() const
+ { return _M_current; }
+
+ __normal_iterator&
+ operator++()
+ {
+ ++_M_current;
+ return *this;
+ }
+
+ __normal_iterator
+ operator++(int)
+ { return __normal_iterator(_M_current++); }
+
+
+ __normal_iterator&
+ operator--()
+ {
+ --_M_current;
+ return *this;
+ }
+
+ __normal_iterator
+ operator--(int)
+ { return __normal_iterator(_M_current--); }
+
+
+ reference
+ operator[](const difference_type& __n) const
+ { return _M_current[__n]; }
+
+ __normal_iterator&
+ operator+=(const difference_type& __n)
+ { _M_current += __n; return *this; }
+
+ __normal_iterator
+ operator+(const difference_type& __n) const
+ { return __normal_iterator(_M_current + __n); }
+
+ __normal_iterator&
+ operator-=(const difference_type& __n)
+ { _M_current -= __n; return *this; }
+
+ __normal_iterator
+ operator-(const difference_type& __n) const
+ { return __normal_iterator(_M_current - __n); }
+
+ const _Iterator&
+ base() const
+ { return _M_current; }
+ };
+# 760 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline bool
+ operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() == __rhs.base(); }
+
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() == __rhs.base(); }
+
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline bool
+ operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() != __rhs.base(); }
+
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() != __rhs.base(); }
+
+
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline bool
+ operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() < __rhs.base(); }
+
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() < __rhs.base(); }
+
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline bool
+ operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() > __rhs.base(); }
+
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator>(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() > __rhs.base(); }
+
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline bool
+ operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() <= __rhs.base(); }
+
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator<=(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() <= __rhs.base(); }
+
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline bool
+ operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() >= __rhs.base(); }
+
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator>=(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() >= __rhs.base(); }
+
+
+
+
+
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline typename __normal_iterator<_IteratorL, _Container>::difference_type
+ operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() - __rhs.base(); }
+
+ template<typename _Iterator, typename _Container>
+ inline typename __normal_iterator<_Iterator, _Container>::difference_type
+ operator-(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() - __rhs.base(); }
+
+ template<typename _Iterator, typename _Container>
+ inline __normal_iterator<_Iterator, _Container>
+ operator+(typename __normal_iterator<_Iterator, _Container>::difference_type
+ __n, const __normal_iterator<_Iterator, _Container>& __i)
+ { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }
+
+}
+# 1025 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_iterator.h" 3
+#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) (_Iter)
+# 70 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iterator" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 1 3
+# 41 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+#define _GLIBCXX_OSTREAM 1
+
+
+# 44 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ios" 1 3
+# 40 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ios" 3
+#define _GLIBCXX_IOS 1
+
+
+# 43 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ios" 3
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iosfwd" 1 3
+# 41 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iosfwd" 3
+#define _GLIBCXX_IOSFWD 1
+
+
+# 44 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iosfwd" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stringfwd.h" 1 3
+# 40 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stringfwd.h" 3
+#define _STRINGFWD_H 1
+
+
+# 43 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stringfwd.h" 3
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _Alloc>
+ class allocator;
+
+ template<class _CharT>
+ struct char_traits;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ typename _Alloc = allocator<_CharT> >
+ class basic_string;
+
+ template<> struct char_traits<char>;
+
+ typedef basic_string<char> string;
+
+
+
+
+
+
+
+}
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iosfwd" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/postypes.h" 1 3
+# 43 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/postypes.h" 3
+#define _GLIBCXX_POSTYPES_H 1
+
+
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/postypes.h" 3
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cwchar" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cwchar" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cwchar" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 2 3
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cwchar" 2 3
+
+
+
+
+
+
+#define _GLIBCXX_CWCHAR 1
+
+
+
+
+extern "C"
+{
+ typedef struct
+ {
+ int __fill[6];
+ } mbstate_t;
+}
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ using ::mbstate_t;
+
+}
+
+
+#undef btowc
+#undef fgetwc
+#undef fgetws
+#undef fputwc
+#undef fputws
+#undef fwide
+#undef fwprintf
+#undef fwscanf
+#undef getwc
+#undef getwchar
+#undef mbrlen
+#undef mbrtowc
+#undef mbsinit
+#undef mbsrtowcs
+#undef putwc
+#undef putwchar
+#undef swprintf
+#undef swscanf
+#undef ungetwc
+#undef vfwprintf
+
+
+
+#undef vswprintf
+
+
+
+#undef vwprintf
+
+
+
+#undef wcrtomb
+#undef wcscat
+#undef wcschr
+#undef wcscmp
+#undef wcscoll
+#undef wcscpy
+#undef wcscspn
+#undef wcsftime
+#undef wcslen
+#undef wcsncat
+#undef wcsncmp
+#undef wcsncpy
+#undef wcspbrk
+#undef wcsrchr
+#undef wcsrtombs
+#undef wcsspn
+#undef wcsstr
+#undef wcstod
+
+
+
+#undef wcstok
+#undef wcstol
+#undef wcstoul
+#undef wcsxfrm
+#undef wctob
+#undef wmemchr
+#undef wmemcmp
+#undef wmemcpy
+#undef wmemmove
+#undef wmemset
+#undef wprintf
+#undef wscanf
+# 48 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/postypes.h" 2 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdint.h" 1 3 4
+# 24 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdint.h" 3 4
+#define _STDINT_H 1
+
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/wordsize.h" 1 3 4
+# 19 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/wordsize.h" 3 4
+#define __WORDSIZE 32
+# 31 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdint.h" 2 3 4
+
+
+
+
+
+
+
+#define __int8_t_defined
+typedef signed char int8_t;
+typedef short int int16_t;
+typedef int int32_t;
+
+
+
+__extension__
+typedef long long int int64_t;
+
+
+
+
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+
+typedef unsigned int uint32_t;
+#define __uint32_t_defined
+
+
+
+
+__extension__
+typedef unsigned long long int uint64_t;
+
+
+
+
+
+
+typedef signed char int_least8_t;
+typedef short int int_least16_t;
+typedef int int_least32_t;
+
+
+
+__extension__
+typedef long long int int_least64_t;
+
+
+
+typedef unsigned char uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int uint_least32_t;
+
+
+
+__extension__
+typedef unsigned long long int uint_least64_t;
+
+
+
+
+
+
+typedef signed char int_fast8_t;
+
+
+
+
+
+typedef int int_fast16_t;
+typedef int int_fast32_t;
+__extension__
+typedef long long int int_fast64_t;
+
+
+
+typedef unsigned char uint_fast8_t;
+
+
+
+
+
+typedef unsigned int uint_fast16_t;
+typedef unsigned int uint_fast32_t;
+__extension__
+typedef unsigned long long int uint_fast64_t;
+# 128 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdint.h" 3 4
+typedef int intptr_t;
+#define __intptr_t_defined
+
+typedef unsigned int uintptr_t;
+# 140 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdint.h" 3 4
+__extension__
+typedef long long int intmax_t;
+__extension__
+typedef unsigned long long int uintmax_t;
+# 51 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/postypes.h" 2 3
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 71 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/postypes.h" 3
+ typedef int64_t streamoff;
+
+
+
+
+
+ typedef ptrdiff_t streamsize;
+# 90 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/postypes.h" 3
+ template<typename _StateT>
+ class fpos
+ {
+ private:
+ streamoff _M_off;
+ _StateT _M_state;
+
+ public:
+
+
+
+
+ fpos()
+ : _M_off(0), _M_state() { }
+# 112 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/postypes.h" 3
+ fpos(streamoff __off)
+ : _M_off(__off), _M_state() { }
+
+
+ operator streamoff() const { return _M_off; }
+
+
+ void
+ state(_StateT __st)
+ { _M_state = __st; }
+
+
+ _StateT
+ state() const
+ { return _M_state; }
+
+
+
+
+
+ fpos&
+ operator+=(streamoff __off)
+ {
+ _M_off += __off;
+ return *this;
+ }
+
+
+
+
+
+ fpos&
+ operator-=(streamoff __off)
+ {
+ _M_off -= __off;
+ return *this;
+ }
+
+
+
+
+
+
+
+ fpos
+ operator+(streamoff __off) const
+ {
+ fpos __pos(*this);
+ __pos += __off;
+ return __pos;
+ }
+
+
+
+
+
+
+
+ fpos
+ operator-(streamoff __off) const
+ {
+ fpos __pos(*this);
+ __pos -= __off;
+ return __pos;
+ }
+
+
+
+
+
+
+ streamoff
+ operator-(const fpos& __other) const
+ { return _M_off - __other._M_off; }
+ };
+
+
+
+
+
+
+ template<typename _StateT>
+ inline bool
+ operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
+ { return streamoff(__lhs) == streamoff(__rhs); }
+
+ template<typename _StateT>
+ inline bool
+ operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
+ { return streamoff(__lhs) != streamoff(__rhs); }
+
+
+
+
+
+ typedef fpos<mbstate_t> streampos;
+
+ typedef fpos<mbstate_t> wstreampos;
+
+}
+# 48 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iosfwd" 2 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_ios;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_streambuf;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_istream;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_ostream;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_iostream;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ typename _Alloc = allocator<_CharT> >
+ class basic_stringbuf;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ typename _Alloc = allocator<_CharT> >
+ class basic_istringstream;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ typename _Alloc = allocator<_CharT> >
+ class basic_ostringstream;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ typename _Alloc = allocator<_CharT> >
+ class basic_stringstream;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_filebuf;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_ifstream;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_ofstream;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_fstream;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class istreambuf_iterator;
+
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class ostreambuf_iterator;
+
+
+
+ class ios_base;
+# 132 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iosfwd" 3
+ typedef basic_ios<char> ios;
+ typedef basic_streambuf<char> streambuf;
+ typedef basic_istream<char> istream;
+ typedef basic_ostream<char> ostream;
+ typedef basic_iostream<char> iostream;
+ typedef basic_stringbuf<char> stringbuf;
+ typedef basic_istringstream<char> istringstream;
+ typedef basic_ostringstream<char> ostringstream;
+ typedef basic_stringstream<char> stringstream;
+ typedef basic_filebuf<char> filebuf;
+ typedef basic_ifstream<char> ifstream;
+ typedef basic_ofstream<char> ofstream;
+ typedef basic_fstream<char> fstream;
+# 163 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iosfwd" 3
+}
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ios" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/exception" 1 3
+# 38 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/exception" 3
+#define __EXCEPTION__
+
+#pragma GCC visibility push(default)
+
+
+
+extern "C++" {
+
+namespace std
+{
+# 56 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/exception" 3
+ class exception
+ {
+ public:
+ exception() throw() { }
+ virtual ~exception() throw();
+
+
+
+ virtual const char* what() const throw();
+ };
+
+
+
+ class bad_exception : public exception
+ {
+ public:
+ bad_exception() throw() { }
+
+
+
+ virtual ~bad_exception() throw();
+
+
+ virtual const char* what() const throw();
+ };
+
+
+ typedef void (*terminate_handler) ();
+
+
+ typedef void (*unexpected_handler) ();
+
+
+ terminate_handler set_terminate(terminate_handler) throw();
+
+
+
+ void terminate() __attribute__ ((__noreturn__));
+
+
+ unexpected_handler set_unexpected(unexpected_handler) throw();
+
+
+
+ void unexpected() __attribute__ ((__noreturn__));
+# 112 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/exception" 3
+ bool uncaught_exception() throw();
+}
+
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+# 127 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/exception" 3
+ void __verbose_terminate_handler ();
+
+}
+
+}
+
+#pragma GCC visibility pop
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ios" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/char_traits.h" 1 3
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/char_traits.h" 3
+#define _CHAR_TRAITS_H 1
+
+
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/char_traits.h" 3
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+#define _STL_ALGOBASE_H 1
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 2 3
+# 67 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/functexcept.h" 1 3
+# 39 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/functexcept.h" 3
+#define _FUNCTEXCEPT_H 1
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/exception_defines.h" 1 3
+# 39 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/exception_defines.h" 3
+#define _EXCEPTION_DEFINES_H 1
+# 48 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/exception_defines.h" 3
+#define __throw_exception_again throw
+# 43 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/functexcept.h" 2 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+ void
+ __throw_bad_exception(void) __attribute__((__noreturn__));
+
+
+ void
+ __throw_bad_alloc(void) __attribute__((__noreturn__));
+
+
+ void
+ __throw_bad_cast(void) __attribute__((__noreturn__));
+
+ void
+ __throw_bad_typeid(void) __attribute__((__noreturn__));
+
+
+ void
+ __throw_logic_error(const char*) __attribute__((__noreturn__));
+
+ void
+ __throw_domain_error(const char*) __attribute__((__noreturn__));
+
+ void
+ __throw_invalid_argument(const char*) __attribute__((__noreturn__));
+
+ void
+ __throw_length_error(const char*) __attribute__((__noreturn__));
+
+ void
+ __throw_out_of_range(const char*) __attribute__((__noreturn__));
+
+ void
+ __throw_runtime_error(const char*) __attribute__((__noreturn__));
+
+ void
+ __throw_range_error(const char*) __attribute__((__noreturn__));
+
+ void
+ __throw_overflow_error(const char*) __attribute__((__noreturn__));
+
+ void
+ __throw_underflow_error(const char*) __attribute__((__noreturn__));
+
+
+ void
+ __throw_ios_failure(const char*) __attribute__((__noreturn__));
+
+}
+# 68 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 2 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/numeric_traits.h" 1 3
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/numeric_traits.h" 3
+#define _EXT_NUMERIC_TRAITS 1
+
+
+# 39 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/numeric_traits.h" 3
+
+
+
+
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+
+
+
+#define __glibcxx_signed(_Tp) ((_Tp)(-1) < 0)
+#define __glibcxx_digits(_Tp) (sizeof(_Tp) * __CHAR_BIT__ - __glibcxx_signed(_Tp))
+
+
+#define __glibcxx_min(_Tp) (__glibcxx_signed(_Tp) ? (_Tp)1 << __glibcxx_digits(_Tp) : (_Tp)0)
+
+
+#define __glibcxx_max(_Tp) (__glibcxx_signed(_Tp) ? (((((_Tp)1 << (__glibcxx_digits(_Tp) - 1)) - 1) << 1) + 1) : ~(_Tp)0)
+
+
+
+ template<typename _Value>
+ struct __numeric_traits_integer
+ {
+
+ static const _Value __min = (((_Value)(-1) < 0) ? (_Value)1 << (sizeof(_Value) * 8 - ((_Value)(-1) < 0)) : (_Value)0);
+ static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0);
+
+
+
+ static const bool __is_signed = ((_Value)(-1) < 0);
+ static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0));
+ };
+
+ template<typename _Value>
+ const _Value __numeric_traits_integer<_Value>::__min;
+
+ template<typename _Value>
+ const _Value __numeric_traits_integer<_Value>::__max;
+
+ template<typename _Value>
+ const bool __numeric_traits_integer<_Value>::__is_signed;
+
+ template<typename _Value>
+ const int __numeric_traits_integer<_Value>::__digits;
+
+#undef __glibcxx_signed
+#undef __glibcxx_digits
+#undef __glibcxx_min
+#undef __glibcxx_max
+
+#define __glibcxx_floating(_Tp,_Fval,_Dval,_LDval) (std::__are_same<_Tp, float>::__value ? _Fval : std::__are_same<_Tp, double>::__value ? _Dval : _LDval)
+
+
+
+#define __glibcxx_max_digits10(_Tp) (2 + __glibcxx_floating(_Tp, __FLT_MANT_DIG__, __DBL_MANT_DIG__, __LDBL_MANT_DIG__) * 3010 / 10000)
+
+
+
+#define __glibcxx_digits10(_Tp) __glibcxx_floating(_Tp, __FLT_DIG__, __DBL_DIG__, __LDBL_DIG__)
+
+
+#define __glibcxx_max_exponent10(_Tp) __glibcxx_floating(_Tp, __FLT_MAX_10_EXP__, __DBL_MAX_10_EXP__, __LDBL_MAX_10_EXP__)
+
+
+
+ template<typename _Value>
+ struct __numeric_traits_floating
+ {
+
+ static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 53) * 3010 / 10000);
+
+
+ static const bool __is_signed = true;
+ static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 15);
+ static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 308);
+ };
+
+ template<typename _Value>
+ const int __numeric_traits_floating<_Value>::__max_digits10;
+
+ template<typename _Value>
+ const bool __numeric_traits_floating<_Value>::__is_signed;
+
+ template<typename _Value>
+ const int __numeric_traits_floating<_Value>::__digits10;
+
+ template<typename _Value>
+ const int __numeric_traits_floating<_Value>::__max_exponent10;
+
+ template<typename _Value>
+ struct __numeric_traits
+ : public __conditional_type<std::__is_integer<_Value>::__value,
+ __numeric_traits_integer<_Value>,
+ __numeric_traits_floating<_Value> >::__type
+ { };
+
+}
+
+#undef __glibcxx_floating
+#undef __glibcxx_max_digits10
+#undef __glibcxx_digits10
+#undef __glibcxx_max_exponent10
+# 71 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_pair.h" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_pair.h" 3
+#define _STL_PAIR_H 1
+
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+ template<class _T1, class _T2>
+ struct pair
+ {
+ typedef _T1 first_type;
+ typedef _T2 second_type;
+
+ _T1 first;
+ _T2 second;
+
+
+
+
+
+ pair()
+ : first(), second() { }
+
+
+ pair(const _T1& __a, const _T2& __b)
+ : first(__a), second(__b) { }
+# 103 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_pair.h" 3
+ template<class _U1, class _U2>
+ pair(const pair<_U1, _U2>& __p)
+ : first(__p.first),
+ second(__p.second) { }
+# 146 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_pair.h" 3
+ };
+
+
+ template<class _T1, class _T2>
+ inline bool
+ operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+ { return __x.first == __y.first && __x.second == __y.second; }
+
+
+ template<class _T1, class _T2>
+ inline bool
+ operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+ { return __x.first < __y.first
+ || (!(__y.first < __x.first) && __x.second < __y.second); }
+
+
+ template<class _T1, class _T2>
+ inline bool
+ operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+ { return !(__x == __y); }
+
+
+ template<class _T1, class _T2>
+ inline bool
+ operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+ { return __y < __x; }
+
+
+ template<class _T1, class _T2>
+ inline bool
+ operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+ { return !(__y < __x); }
+
+
+ template<class _T1, class _T2>
+ inline bool
+ operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+ { return !(__x < __y); }
+# 216 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_pair.h" 3
+ template<class _T1, class _T2>
+ inline pair<_T1, _T2>
+ make_pair(_T1 __x, _T2 __y)
+ { return pair<_T1, _T2>(__x, __y); }
+# 262 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_pair.h" 3
+}
+# 72 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 2 3
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/debug/debug.h" 1 3
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/debug/debug.h" 3
+#define _GLIBCXX_DEBUG_MACRO_SWITCH_H 1
+# 52 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/debug/debug.h" 3
+namespace std
+{
+ namespace __debug { }
+}
+
+
+
+
+namespace __gnu_debug
+{
+ using namespace std::__debug;
+}
+
+
+
+#define _GLIBCXX_DEBUG_ASSERT(_Condition)
+#define _GLIBCXX_DEBUG_PEDASSERT(_Condition)
+#define _GLIBCXX_DEBUG_ONLY(_Statement) ;
+#define __glibcxx_requires_cond(_Cond,_Msg)
+#define __glibcxx_requires_valid_range(_First,_Last)
+#define __glibcxx_requires_sorted(_First,_Last)
+#define __glibcxx_requires_sorted_pred(_First,_Last,_Pred)
+#define __glibcxx_requires_sorted_set(_First1,_Last1,_First2)
+#define __glibcxx_requires_sorted_set_pred(_First1,_Last1,_First2,_Pred)
+#define __glibcxx_requires_partitioned_lower(_First,_Last,_Value)
+#define __glibcxx_requires_partitioned_upper(_First,_Last,_Value)
+#define __glibcxx_requires_partitioned_lower_pred(_First,_Last,_Value,_Pred)
+#define __glibcxx_requires_partitioned_upper_pred(_First,_Last,_Value,_Pred)
+#define __glibcxx_requires_heap(_First,_Last)
+#define __glibcxx_requires_heap_pred(_First,_Last,_Pred)
+#define __glibcxx_requires_nonempty()
+#define __glibcxx_requires_string(_String)
+#define __glibcxx_requires_string_len(_String,_Len)
+#define __glibcxx_requires_subscript(_N)
+# 77 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 2 3
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+
+
+ template<bool _BoolType>
+ struct __iter_swap
+ {
+ template<typename _ForwardIterator1, typename _ForwardIterator2>
+ static void
+ iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
+ {
+ typedef typename iterator_traits<_ForwardIterator1>::value_type
+ _ValueType1;
+ _ValueType1 __tmp = (*__a);
+ *__a = (*__b);
+ *__b = (__tmp);
+ }
+ };
+
+ template<>
+ struct __iter_swap<true>
+ {
+ template<typename _ForwardIterator1, typename _ForwardIterator2>
+ static void
+ iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
+ {
+ swap(*__a, *__b);
+ }
+ };
+# 119 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _ForwardIterator1, typename _ForwardIterator2>
+ inline void
+ iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
+ {
+ typedef typename iterator_traits<_ForwardIterator1>::value_type
+ _ValueType1;
+ typedef typename iterator_traits<_ForwardIterator2>::value_type
+ _ValueType2;
+
+
+
+
+
+
+
+
+
+
+
+ typedef typename iterator_traits<_ForwardIterator1>::reference
+ _ReferenceType1;
+ typedef typename iterator_traits<_ForwardIterator2>::reference
+ _ReferenceType2;
+ std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value
+ && __are_same<_ValueType1&, _ReferenceType1>::__value
+ && __are_same<_ValueType2&, _ReferenceType2>::__value>::
+ iter_swap(__a, __b);
+ }
+# 159 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _ForwardIterator1, typename _ForwardIterator2>
+ _ForwardIterator2
+ swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
+ _ForwardIterator2 __first2)
+ {
+
+
+
+
+
+ ;
+
+ for (; __first1 != __last1; ++__first1, ++__first2)
+ std::iter_swap(__first1, __first2);
+ return __first2;
+ }
+# 186 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _Tp>
+ inline const _Tp&
+ min(const _Tp& __a, const _Tp& __b)
+ {
+
+
+
+ if (__b < __a)
+ return __b;
+ return __a;
+ }
+# 208 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _Tp>
+ inline const _Tp&
+ max(const _Tp& __a, const _Tp& __b)
+ {
+
+
+
+ if (__a < __b)
+ return __b;
+ return __a;
+ }
+# 230 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _Tp, typename _Compare>
+ inline const _Tp&
+ min(const _Tp& __a, const _Tp& __b, _Compare __comp)
+ {
+
+ if (__comp(__b, __a))
+ return __b;
+ return __a;
+ }
+# 250 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _Tp, typename _Compare>
+ inline const _Tp&
+ max(const _Tp& __a, const _Tp& __b, _Compare __comp)
+ {
+
+ if (__comp(__a, __b))
+ return __b;
+ return __a;
+ }
+
+
+
+
+ template<typename _Iterator,
+ bool _IsNormal = __is_normal_iterator<_Iterator>::__value>
+ struct __niter_base
+ {
+ static _Iterator
+ __b(_Iterator __it)
+ { return __it; }
+ };
+
+ template<typename _Iterator>
+ struct __niter_base<_Iterator, true>
+ {
+ static typename _Iterator::iterator_type
+ __b(_Iterator __it)
+ { return __it.base(); }
+ };
+
+
+ template<typename _Iterator,
+ bool _IsMove = __is_move_iterator<_Iterator>::__value>
+ struct __miter_base
+ {
+ static _Iterator
+ __b(_Iterator __it)
+ { return __it; }
+ };
+
+ template<typename _Iterator>
+ struct __miter_base<_Iterator, true>
+ {
+ static typename _Iterator::iterator_type
+ __b(_Iterator __it)
+ { return __it.base(); }
+ };
+
+
+
+
+
+
+
+ template<bool, bool, typename>
+ struct __copy_move
+ {
+ template<typename _II, typename _OI>
+ static _OI
+ __copy_m(_II __first, _II __last, _OI __result)
+ {
+ for (; __first != __last; ++__result, ++__first)
+ *__result = *__first;
+ return __result;
+ }
+ };
+# 332 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<>
+ struct __copy_move<false, false, random_access_iterator_tag>
+ {
+ template<typename _II, typename _OI>
+ static _OI
+ __copy_m(_II __first, _II __last, _OI __result)
+ {
+ typedef typename iterator_traits<_II>::difference_type _Distance;
+ for(_Distance __n = __last - __first; __n > 0; --__n)
+ {
+ *__result = *__first;
+ ++__first;
+ ++__result;
+ }
+ return __result;
+ }
+ };
+# 370 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<bool _IsMove>
+ struct __copy_move<_IsMove, true, random_access_iterator_tag>
+ {
+ template<typename _Tp>
+ static _Tp*
+ __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result)
+ {
+ __builtin_memmove(__result, __first,
+ sizeof(_Tp) * (__last - __first));
+ return __result + (__last - __first);
+ }
+ };
+
+ template<bool _IsMove, typename _II, typename _OI>
+ inline _OI
+ __copy_move_a(_II __first, _II __last, _OI __result)
+ {
+ typedef typename iterator_traits<_II>::value_type _ValueTypeI;
+ typedef typename iterator_traits<_OI>::value_type _ValueTypeO;
+ typedef typename iterator_traits<_II>::iterator_category _Category;
+ const bool __simple = (__is_pod(_ValueTypeI)
+ && __is_pointer<_II>::__value
+ && __is_pointer<_OI>::__value
+ && __are_same<_ValueTypeI, _ValueTypeO>::__value);
+
+ return std::__copy_move<_IsMove, __simple,
+ _Category>::__copy_m(__first, __last, __result);
+ }
+
+
+
+ template<typename _CharT>
+ struct char_traits;
+
+ template<typename _CharT, typename _Traits>
+ class istreambuf_iterator;
+
+ template<typename _CharT, typename _Traits>
+ class ostreambuf_iterator;
+
+ template<bool _IsMove, typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
+ __copy_move_a2(_CharT*, _CharT*,
+ ostreambuf_iterator<_CharT, char_traits<_CharT> >);
+
+ template<bool _IsMove, typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
+ __copy_move_a2(const _CharT*, const _CharT*,
+ ostreambuf_iterator<_CharT, char_traits<_CharT> >);
+
+ template<bool _IsMove, typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ _CharT*>::__type
+ __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >,
+ istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*);
+
+ template<bool _IsMove, typename _II, typename _OI>
+ inline _OI
+ __copy_move_a2(_II __first, _II __last, _OI __result)
+ {
+ return _OI(std::__copy_move_a<_IsMove>
+ (std::__niter_base<_II>::__b(__first),
+ std::__niter_base<_II>::__b(__last),
+ std::__niter_base<_OI>::__b(__result)));
+ }
+# 454 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _II, typename _OI>
+ inline _OI
+ copy(_II __first, _II __last, _OI __result)
+ {
+
+
+
+
+ ;
+
+ return (std::__copy_move_a2<__is_move_iterator<_II>::__value>
+ (std::__miter_base<_II>::__b(__first),
+ std::__miter_base<_II>::__b(__last), __result));
+ }
+# 503 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+#define _GLIBCXX_MOVE3(_Tp,_Up,_Vp) std::copy(_Tp, _Up, _Vp)
+
+
+ template<bool, bool, typename>
+ struct __copy_move_backward
+ {
+ template<typename _BI1, typename _BI2>
+ static _BI2
+ __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
+ {
+ while (__first != __last)
+ *--__result = *--__last;
+ return __result;
+ }
+ };
+# 534 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<>
+ struct __copy_move_backward<false, false, random_access_iterator_tag>
+ {
+ template<typename _BI1, typename _BI2>
+ static _BI2
+ __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
+ {
+ typename iterator_traits<_BI1>::difference_type __n;
+ for (__n = __last - __first; __n > 0; --__n)
+ *--__result = *--__last;
+ return __result;
+ }
+ };
+# 564 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<bool _IsMove>
+ struct __copy_move_backward<_IsMove, true, random_access_iterator_tag>
+ {
+ template<typename _Tp>
+ static _Tp*
+ __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
+ {
+ const ptrdiff_t _Num = __last - __first;
+ __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
+ return __result - _Num;
+ }
+ };
+
+ template<bool _IsMove, typename _BI1, typename _BI2>
+ inline _BI2
+ __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result)
+ {
+ typedef typename iterator_traits<_BI1>::value_type _ValueType1;
+ typedef typename iterator_traits<_BI2>::value_type _ValueType2;
+ typedef typename iterator_traits<_BI1>::iterator_category _Category;
+ const bool __simple = (__is_pod(_ValueType1)
+ && __is_pointer<_BI1>::__value
+ && __is_pointer<_BI2>::__value
+ && __are_same<_ValueType1, _ValueType2>::__value);
+
+ return std::__copy_move_backward<_IsMove, __simple,
+ _Category>::__copy_move_b(__first,
+ __last,
+ __result);
+ }
+
+ template<bool _IsMove, typename _BI1, typename _BI2>
+ inline _BI2
+ __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result)
+ {
+ return _BI2(std::__copy_move_backward_a<_IsMove>
+ (std::__niter_base<_BI1>::__b(__first),
+ std::__niter_base<_BI1>::__b(__last),
+ std::__niter_base<_BI2>::__b(__result)));
+ }
+# 622 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _BI1, typename _BI2>
+ inline _BI2
+ copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)
+ {
+
+
+
+
+
+
+ ;
+
+ return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value>
+ (std::__miter_base<_BI1>::__b(__first),
+ std::__miter_base<_BI1>::__b(__last), __result));
+ }
+# 676 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+#define _GLIBCXX_MOVE_BACKWARD3(_Tp,_Up,_Vp) std::copy_backward(_Tp, _Up, _Vp)
+
+
+ template<typename _ForwardIterator, typename _Tp>
+ inline typename
+ __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type
+ __fill_a(_ForwardIterator __first, _ForwardIterator __last,
+ const _Tp& __value)
+ {
+ for (; __first != __last; ++__first)
+ *__first = __value;
+ }
+
+ template<typename _ForwardIterator, typename _Tp>
+ inline typename
+ __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type
+ __fill_a(_ForwardIterator __first, _ForwardIterator __last,
+ const _Tp& __value)
+ {
+ const _Tp __tmp = __value;
+ for (; __first != __last; ++__first)
+ *__first = __tmp;
+ }
+
+
+ template<typename _Tp>
+ inline typename
+ __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type
+ __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c)
+ {
+ const _Tp __tmp = __c;
+ __builtin_memset(__first, static_cast<unsigned char>(__tmp),
+ __last - __first);
+ }
+# 722 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _ForwardIterator, typename _Tp>
+ inline void
+ fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value)
+ {
+
+
+
+ ;
+
+ std::__fill_a(std::__niter_base<_ForwardIterator>::__b(__first),
+ std::__niter_base<_ForwardIterator>::__b(__last), __value);
+ }
+
+ template<typename _OutputIterator, typename _Size, typename _Tp>
+ inline typename
+ __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type
+ __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
+ {
+ for (; __n > 0; --__n, ++__first)
+ *__first = __value;
+ return __first;
+ }
+
+ template<typename _OutputIterator, typename _Size, typename _Tp>
+ inline typename
+ __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type
+ __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
+ {
+ const _Tp __tmp = __value;
+ for (; __n > 0; --__n, ++__first)
+ *__first = __tmp;
+ return __first;
+ }
+
+ template<typename _Size, typename _Tp>
+ inline typename
+ __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type
+ __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c)
+ {
+ std::__fill_a(__first, __first + __n, __c);
+ return __first + __n;
+ }
+# 776 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _OI, typename _Size, typename _Tp>
+ inline _OI
+ fill_n(_OI __first, _Size __n, const _Tp& __value)
+ {
+
+
+
+ return _OI(std::__fill_n_a(std::__niter_base<_OI>::__b(__first),
+ __n, __value));
+ }
+
+ template<bool _BoolType>
+ struct __equal
+ {
+ template<typename _II1, typename _II2>
+ static bool
+ equal(_II1 __first1, _II1 __last1, _II2 __first2)
+ {
+ for (; __first1 != __last1; ++__first1, ++__first2)
+ if (!(*__first1 == *__first2))
+ return false;
+ return true;
+ }
+ };
+
+ template<>
+ struct __equal<true>
+ {
+ template<typename _Tp>
+ static bool
+ equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2)
+ {
+ return !__builtin_memcmp(__first1, __first2, sizeof(_Tp)
+ * (__last1 - __first1));
+ }
+ };
+
+ template<typename _II1, typename _II2>
+ inline bool
+ __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2)
+ {
+ typedef typename iterator_traits<_II1>::value_type _ValueType1;
+ typedef typename iterator_traits<_II2>::value_type _ValueType2;
+ const bool __simple = (__is_integer<_ValueType1>::__value
+ && __is_pointer<_II1>::__value
+ && __is_pointer<_II2>::__value
+ && __are_same<_ValueType1, _ValueType2>::__value);
+
+ return std::__equal<__simple>::equal(__first1, __last1, __first2);
+ }
+
+
+ template<typename, typename>
+ struct __lc_rai
+ {
+ template<typename _II1, typename _II2>
+ static _II1
+ __newlast1(_II1, _II1 __last1, _II2, _II2)
+ { return __last1; }
+
+ template<typename _II>
+ static bool
+ __cnd2(_II __first, _II __last)
+ { return __first != __last; }
+ };
+
+ template<>
+ struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag>
+ {
+ template<typename _RAI1, typename _RAI2>
+ static _RAI1
+ __newlast1(_RAI1 __first1, _RAI1 __last1,
+ _RAI2 __first2, _RAI2 __last2)
+ {
+ const typename iterator_traits<_RAI1>::difference_type
+ __diff1 = __last1 - __first1;
+ const typename iterator_traits<_RAI2>::difference_type
+ __diff2 = __last2 - __first2;
+ return __diff2 < __diff1 ? __first1 + __diff2 : __last1;
+ }
+
+ template<typename _RAI>
+ static bool
+ __cnd2(_RAI, _RAI)
+ { return true; }
+ };
+
+ template<bool _BoolType>
+ struct __lexicographical_compare
+ {
+ template<typename _II1, typename _II2>
+ static bool __lc(_II1, _II1, _II2, _II2);
+ };
+
+ template<bool _BoolType>
+ template<typename _II1, typename _II2>
+ bool
+ __lexicographical_compare<_BoolType>::
+ __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
+ {
+ typedef typename iterator_traits<_II1>::iterator_category _Category1;
+ typedef typename iterator_traits<_II2>::iterator_category _Category2;
+ typedef std::__lc_rai<_Category1, _Category2> __rai_type;
+
+ __last1 = __rai_type::__newlast1(__first1, __last1,
+ __first2, __last2);
+ for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
+ ++__first1, ++__first2)
+ {
+ if (*__first1 < *__first2)
+ return true;
+ if (*__first2 < *__first1)
+ return false;
+ }
+ return __first1 == __last1 && __first2 != __last2;
+ }
+
+ template<>
+ struct __lexicographical_compare<true>
+ {
+ template<typename _Tp, typename _Up>
+ static bool
+ __lc(const _Tp* __first1, const _Tp* __last1,
+ const _Up* __first2, const _Up* __last2)
+ {
+ const size_t __len1 = __last1 - __first1;
+ const size_t __len2 = __last2 - __first2;
+ const int __result = __builtin_memcmp(__first1, __first2,
+ std::min(__len1, __len2));
+ return __result != 0 ? __result < 0 : __len1 < __len2;
+ }
+ };
+
+ template<typename _II1, typename _II2>
+ inline bool
+ __lexicographical_compare_aux(_II1 __first1, _II1 __last1,
+ _II2 __first2, _II2 __last2)
+ {
+ typedef typename iterator_traits<_II1>::value_type _ValueType1;
+ typedef typename iterator_traits<_II2>::value_type _ValueType2;
+ const bool __simple =
+ (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value
+ && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed
+ && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed
+ && __is_pointer<_II1>::__value
+ && __is_pointer<_II2>::__value);
+
+ return std::__lexicographical_compare<__simple>::__lc(__first1, __last1,
+ __first2, __last2);
+ }
+
+}
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 942 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _II1, typename _II2>
+ inline bool
+ equal(_II1 __first1, _II1 __last1, _II2 __first2)
+ {
+
+
+
+
+
+
+ ;
+
+ return std::__equal_aux(std::__niter_base<_II1>::__b(__first1),
+ std::__niter_base<_II1>::__b(__last1),
+ std::__niter_base<_II2>::__b(__first2));
+ }
+# 973 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
+ inline bool
+ equal(_IIter1 __first1, _IIter1 __last1,
+ _IIter2 __first2, _BinaryPredicate __binary_pred)
+ {
+
+
+
+ ;
+
+ for (; __first1 != __last1; ++__first1, ++__first2)
+ if (!bool(__binary_pred(*__first1, *__first2)))
+ return false;
+ return true;
+ }
+# 1003 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _II1, typename _II2>
+ inline bool
+ lexicographical_compare(_II1 __first1, _II1 __last1,
+ _II2 __first2, _II2 __last2)
+ {
+
+ typedef typename iterator_traits<_II1>::value_type _ValueType1;
+ typedef typename iterator_traits<_II2>::value_type _ValueType2;
+
+
+
+
+ ;
+ ;
+
+ return std::__lexicographical_compare_aux
+ (std::__niter_base<_II1>::__b(__first1),
+ std::__niter_base<_II1>::__b(__last1),
+ std::__niter_base<_II2>::__b(__first2),
+ std::__niter_base<_II2>::__b(__last2));
+ }
+# 1037 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _II1, typename _II2, typename _Compare>
+ bool
+ lexicographical_compare(_II1 __first1, _II1 __last1,
+ _II2 __first2, _II2 __last2, _Compare __comp)
+ {
+ typedef typename iterator_traits<_II1>::iterator_category _Category1;
+ typedef typename iterator_traits<_II2>::iterator_category _Category2;
+ typedef std::__lc_rai<_Category1, _Category2> __rai_type;
+
+
+
+
+ ;
+ ;
+
+ __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2);
+ for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
+ ++__first1, ++__first2)
+ {
+ if (__comp(*__first1, *__first2))
+ return true;
+ if (__comp(*__first2, *__first1))
+ return false;
+ }
+ return __first1 == __last1 && __first2 != __last2;
+ }
+# 1076 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _InputIterator1, typename _InputIterator2>
+ pair<_InputIterator1, _InputIterator2>
+ mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
+ _InputIterator2 __first2)
+ {
+
+
+
+
+
+
+ ;
+
+ while (__first1 != __last1 && *__first1 == *__first2)
+ {
+ ++__first1;
+ ++__first2;
+ }
+ return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
+ }
+# 1112 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_algobase.h" 3
+ template<typename _InputIterator1, typename _InputIterator2,
+ typename _BinaryPredicate>
+ pair<_InputIterator1, _InputIterator2>
+ mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
+ _InputIterator2 __first2, _BinaryPredicate __binary_pred)
+ {
+
+
+
+ ;
+
+ while (__first1 != __last1 && bool(__binary_pred(*__first1, *__first2)))
+ {
+ ++__first1;
+ ++__first2;
+ }
+ return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
+ }
+
+}
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/char_traits.h" 2 3
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstdio" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstdio" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstdio" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 2 3
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstdio" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 1 3 4
+# 27 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+#define _STDIO_H 1
+
+
+extern "C" {
+
+#define __need_size_t
+#define __need_NULL
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 163 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 236 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 398 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 409 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 35 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 2 3 4
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/types.h" 1 3 4
+# 25 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/types.h" 3 4
+#define _BITS_TYPES_H 1
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/wordsize.h" 1 3 4
+# 19 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/wordsize.h" 3 4
+#define __WORDSIZE 32
+# 29 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/types.h" 2 3 4
+
+#define __need_size_t
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 163 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 236 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 398 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 409 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 32 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/types.h" 2 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/kernel_types.h" 1 3 4
+# 9 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/kernel_types.h" 3 4
+#define __ARCH_BFIN_POSIX_TYPES_H
+typedef unsigned short __kernel_dev_t;
+typedef unsigned long __kernel_ino_t;
+typedef unsigned short __kernel_mode_t;
+typedef unsigned short __kernel_nlink_t;
+typedef long __kernel_off_t;
+typedef int __kernel_pid_t;
+typedef unsigned int __kernel_ipc_pid_t;
+typedef unsigned int __kernel_uid_t;
+typedef unsigned int __kernel_gid_t;
+typedef unsigned int __kernel_size_t;
+typedef int __kernel_ssize_t;
+typedef int __kernel_ptrdiff_t;
+typedef long __kernel_time_t;
+typedef long __kernel_suseconds_t;
+typedef long __kernel_clock_t;
+typedef int __kernel_daddr_t;
+typedef char * __kernel_caddr_t;
+typedef unsigned short __kernel_uid16_t;
+typedef unsigned short __kernel_gid16_t;
+typedef unsigned int __kernel_uid32_t;
+typedef unsigned int __kernel_gid32_t;
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+typedef long long __kernel_loff_t;
+typedef __kernel_dev_t __kernel_old_dev_t;
+
+typedef struct {
+
+
+
+ int __val[2];
+
+} __kernel_fsid_t;
+# 33 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/types.h" 2 3 4
+
+
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+
+
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+
+
+
+
+__extension__ typedef signed long long int __int64_t;
+__extension__ typedef unsigned long long int __uint64_t;
+
+
+
+
+
+
+
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
+# 103 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/types.h" 3 4
+#define __S16_TYPE short int
+#define __U16_TYPE unsigned short int
+#define __S32_TYPE int
+#define __U32_TYPE unsigned int
+#define __SLONGWORD_TYPE long int
+#define __ULONGWORD_TYPE unsigned long int
+
+#define __SQUAD_TYPE __quad_t
+#define __UQUAD_TYPE __u_quad_t
+#define __SWORD_TYPE int
+#define __UWORD_TYPE unsigned int
+#define __SLONG32_TYPE long int
+#define __ULONG32_TYPE unsigned long int
+#define __S64_TYPE __quad_t
+#define __U64_TYPE __u_quad_t
+
+
+#define __STD_TYPE __extension__ typedef
+# 135 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/types.h" 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/typesizes.h" 1 3 4
+# 25 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/typesizes.h" 3 4
+#define _BITS_TYPESIZES_H 1
+
+
+
+
+#define __DEV_T_TYPE __UQUAD_TYPE
+#define __UID_T_TYPE __U32_TYPE
+#define __GID_T_TYPE __U32_TYPE
+#define __INO_T_TYPE __ULONGWORD_TYPE
+#define __INO64_T_TYPE __UQUAD_TYPE
+#define __MODE_T_TYPE __U32_TYPE
+#define __NLINK_T_TYPE __UWORD_TYPE
+#define __OFF_T_TYPE __SLONGWORD_TYPE
+#define __OFF64_T_TYPE __SQUAD_TYPE
+#define __PID_T_TYPE __S32_TYPE
+#define __RLIM_T_TYPE __ULONGWORD_TYPE
+#define __RLIM64_T_TYPE __UQUAD_TYPE
+#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
+#define __BLKCNT64_T_TYPE __SQUAD_TYPE
+#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
+#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
+#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
+#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
+#define __ID_T_TYPE __U32_TYPE
+#define __CLOCK_T_TYPE __SLONGWORD_TYPE
+#define __TIME_T_TYPE __SLONGWORD_TYPE
+#define __USECONDS_T_TYPE __U32_TYPE
+#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
+#define __DADDR_T_TYPE __S32_TYPE
+#define __SWBLK_T_TYPE __SLONGWORD_TYPE
+#define __KEY_T_TYPE __S32_TYPE
+#define __CLOCKID_T_TYPE __S32_TYPE
+#define __TIMER_T_TYPE void *
+#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
+#define __FSID_T_TYPE struct { int __val[2]; }
+#define __SSIZE_T_TYPE __SLONGWORD_TYPE
+
+
+#define __FD_SETSIZE 1024
+# 136 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/types.h" 2 3 4
+
+
+__extension__ typedef __u_quad_t __dev_t;
+__extension__ typedef unsigned int __uid_t;
+__extension__ typedef unsigned int __gid_t;
+__extension__ typedef unsigned long int __ino_t;
+__extension__ typedef __u_quad_t __ino64_t;
+__extension__ typedef unsigned int __mode_t;
+__extension__ typedef unsigned int __nlink_t;
+__extension__ typedef long int __off_t;
+__extension__ typedef __quad_t __off64_t;
+__extension__ typedef int __pid_t;
+__extension__ typedef struct { int __val[2]; } __fsid_t;
+__extension__ typedef long int __clock_t;
+__extension__ typedef unsigned long int __rlim_t;
+__extension__ typedef __u_quad_t __rlim64_t;
+__extension__ typedef unsigned int __id_t;
+__extension__ typedef long int __time_t;
+__extension__ typedef unsigned int __useconds_t;
+__extension__ typedef long int __suseconds_t;
+
+__extension__ typedef int __daddr_t;
+__extension__ typedef long int __swblk_t;
+__extension__ typedef int __key_t;
+
+
+__extension__ typedef int __clockid_t;
+
+
+__extension__ typedef void * __timer_t;
+
+
+__extension__ typedef long int __blksize_t;
+
+
+
+
+__extension__ typedef long int __blkcnt_t;
+__extension__ typedef __quad_t __blkcnt64_t;
+
+
+__extension__ typedef unsigned long int __fsblkcnt_t;
+__extension__ typedef __u_quad_t __fsblkcnt64_t;
+
+
+__extension__ typedef unsigned long int __fsfilcnt_t;
+__extension__ typedef __u_quad_t __fsfilcnt64_t;
+
+__extension__ typedef long int __ssize_t;
+
+
+
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+
+
+__extension__ typedef int __intptr_t;
+
+
+__extension__ typedef unsigned int __socklen_t;
+
+
+#undef __STD_TYPE
+
+
+typedef __kernel_ipc_pid_t __ipc_pid_t;
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/pthreadtypes.h" 1 3 4
+# 20 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/pthreadtypes.h" 3 4
+#define _BITS_PTHREADTYPES_H 1
+
+#define __need_schedparam
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/sched.h" 1 3 4
+# 89 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/sched.h" 3 4
+#define __defined_schedparam 1
+
+struct __sched_param
+ {
+ int __sched_priority;
+ };
+#undef __need_schedparam
+# 24 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/pthreadtypes.h" 2 3 4
+
+
+struct _pthread_fastlock
+{
+ long int __status;
+ int __spinlock;
+
+};
+
+
+
+typedef struct _pthread_descr_struct *_pthread_descr;
+#define _PTHREAD_DESCR_DEFINED
+
+
+
+
+typedef struct __pthread_attr_s
+{
+ int __detachstate;
+ int __schedpolicy;
+ struct __sched_param __schedparam;
+ int __inheritsched;
+ int __scope;
+ size_t __guardsize;
+ int __stackaddr_set;
+ void *__stackaddr;
+ size_t __stacksize;
+} pthread_attr_t;
+
+
+
+typedef struct
+{
+ struct _pthread_fastlock __c_lock;
+ _pthread_descr __c_waiting;
+} pthread_cond_t;
+
+
+
+typedef struct
+{
+ int __dummy;
+} pthread_condattr_t;
+
+
+typedef unsigned int pthread_key_t;
+
+
+
+
+
+typedef struct
+{
+ int __m_reserved;
+ int __m_count;
+ _pthread_descr __m_owner;
+ int __m_kind;
+ struct _pthread_fastlock __m_lock;
+} pthread_mutex_t;
+
+
+
+typedef struct
+{
+ int __mutexkind;
+} pthread_mutexattr_t;
+
+
+
+typedef int pthread_once_t;
+
+
+
+
+typedef struct _pthread_rwlock_t
+{
+ struct _pthread_fastlock __rw_lock;
+ int __rw_readers;
+ _pthread_descr __rw_writer;
+ _pthread_descr __rw_read_waiting;
+ _pthread_descr __rw_write_waiting;
+ int __rw_kind;
+ int __rw_pshared;
+} pthread_rwlock_t;
+
+
+
+typedef struct
+{
+ int __lockkind;
+ int __pshared;
+} pthread_rwlockattr_t;
+
+
+
+
+typedef volatile int pthread_spinlock_t;
+
+
+typedef struct {
+ struct _pthread_fastlock __ba_lock;
+ int __ba_required;
+ int __ba_present;
+ _pthread_descr __ba_waiting;
+} pthread_barrier_t;
+
+
+typedef struct {
+ int __pshared;
+} pthread_barrierattr_t;
+
+
+
+
+
+typedef unsigned long int pthread_t;
+# 207 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/types.h" 2 3 4
+# 37 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 2 3 4
+#define __need_FILE
+#define __need___FILE
+
+
+
+
+
+
+
+typedef struct __STDIO_FILE_STRUCT FILE;
+
+
+
+
+
+
+
+#define __FILE_defined 1
+
+#undef __need_FILE
+
+
+
+
+
+typedef struct __STDIO_FILE_STRUCT __FILE;
+
+#define ____FILE_defined 1
+
+#undef __need___FILE
+
+
+
+#undef _STDIO_USES_IOSTREAM
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 1 3 4
+# 14 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+#define __STDIO_BUFFERS
+
+
+
+
+
+
+#define __STDIO_BUFSIZ 256
+# 40 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+#define __STDIO_BUILTIN_BUF_SIZE 0
+# 51 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+#define __STDIO_HAS_OPENLIST 1
+# 83 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+#define __STDIO_GETC_MACRO
+
+
+
+#define __STDIO_PUTC_MACRO
+# 107 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_mutex.h" 1 3 4
+# 9 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_mutex.h" 3 4
+#define _UCLIBC_MUTEX_H
+
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 1 3 4
+# 16 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 3 4
+#define _PTHREAD_H 1
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sched.h" 1 3 4
+# 21 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sched.h" 3 4
+#define _SCHED_H 1
+
+
+
+
+
+
+#define __need_timespec
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 1 3 4
+# 68 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+#undef __need_clock_t
+# 84 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+#undef __need_time_t
+# 96 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+#undef __clockid_time_t
+# 108 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+#undef __need_timer_t
+
+
+
+
+
+
+#define __timespec_defined 1
+
+
+
+
+
+struct timespec
+ {
+ __time_t tv_sec;
+ long int tv_nsec;
+ };
+
+
+#undef __need_timespec
+# 30 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sched.h" 2 3 4
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/sched.h" 1 3 4
+# 29 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/sched.h" 3 4
+#define SCHED_OTHER 0
+#define SCHED_FIFO 1
+#define SCHED_RR 2
+
+#define SCHED_BATCH 3
+
+
+
+
+#define CSIGNAL 0x000000ff
+#define CLONE_VM 0x00000100
+#define CLONE_FS 0x00000200
+#define CLONE_FILES 0x00000400
+#define CLONE_SIGHAND 0x00000800
+#define CLONE_PTRACE 0x00002000
+#define CLONE_VFORK 0x00004000
+
+#define CLONE_PARENT 0x00008000
+
+#define CLONE_THREAD 0x00010000
+#define CLONE_NEWNS 0x00020000
+#define CLONE_SYSVSEM 0x00040000
+#define CLONE_SETTLS 0x00080000
+#define CLONE_PARENT_SETTID 0x00100000
+
+#define CLONE_CHILD_CLEARTID 0x00200000
+
+#define CLONE_DETACHED 0x00400000
+#define CLONE_UNTRACED 0x00800000
+
+#define CLONE_CHILD_SETTID 0x01000000
+
+#define CLONE_STOPPED 0x02000000
+
+
+
+struct sched_param
+ {
+ int __sched_priority;
+ };
+
+extern "C" {
+
+
+
+extern int clone (int (*__fn) (void *__arg), void *__child_stack,
+ int __flags, void *__arg, ...) throw ();
+
+
+
+
+
+
+
+}
+# 100 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/sched.h" 3 4
+#define __cpu_set_t_defined
+
+#define __CPU_SETSIZE 1024
+#define __NCPUBITS (8 * sizeof (__cpu_mask))
+
+
+typedef unsigned long int __cpu_mask;
+
+
+#define __CPUELT(cpu) ((cpu) / __NCPUBITS)
+#define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
+
+
+typedef struct
+{
+ __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
+} cpu_set_t;
+
+
+#define __CPU_ZERO(cpusetp) do { unsigned int __i; cpu_set_t *__arr = (cpusetp); for (__i = 0; __i < sizeof (cpu_set_t) / sizeof (__cpu_mask); ++__i) __arr->__bits[__i] = 0; } while (0)
+
+
+
+
+
+
+#define __CPU_SET(cpu,cpusetp) ((cpusetp)->__bits[__CPUELT (cpu)] |= __CPUMASK (cpu))
+
+#define __CPU_CLR(cpu,cpusetp) ((cpusetp)->__bits[__CPUELT (cpu)] &= ~__CPUMASK (cpu))
+
+#define __CPU_ISSET(cpu,cpusetp) (((cpusetp)->__bits[__CPUELT (cpu)] & __CPUMASK (cpu)) != 0)
+# 33 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sched.h" 2 3 4
+
+#define sched_priority __sched_priority
+
+
+extern "C" {
+
+
+extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
+ throw ();
+
+
+extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw ();
+
+
+extern int sched_setscheduler (__pid_t __pid, int __policy,
+ __const struct sched_param *__param) throw ();
+
+
+extern int sched_getscheduler (__pid_t __pid) throw ();
+
+
+extern int sched_yield (void) throw ();
+
+
+extern int sched_get_priority_max (int __algorithm) throw ();
+
+
+extern int sched_get_priority_min (int __algorithm) throw ();
+
+
+extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw ();
+
+
+
+
+#define CPU_SETSIZE __CPU_SETSIZE
+#define CPU_SET(cpu,cpusetp) __CPU_SET (cpu, cpusetp)
+#define CPU_CLR(cpu,cpusetp) __CPU_CLR (cpu, cpusetp)
+#define CPU_ISSET(cpu,cpusetp) __CPU_ISSET (cpu, cpusetp)
+#define CPU_ZERO(cpusetp) __CPU_ZERO (cpusetp)
+
+
+
+extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
+ __const cpu_set_t *__cpuset) throw ();
+
+
+extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
+ cpu_set_t *__cpuset) throw ();
+
+
+}
+# 21 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 2 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 1 3 4
+# 28 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+#define _TIME_H 1
+
+
+extern "C" {
+
+
+
+
+
+#define __need_size_t
+#define __need_NULL
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 163 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 236 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 398 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 409 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 40 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 2 3 4
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/time.h" 1 3 4
+# 26 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/time.h" 3 4
+#define _BITS_TIME_H 1
+
+
+
+
+
+
+
+#define CLOCKS_PER_SEC 1000000l
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_clk_tck.h" 1 3 4
+
+
+
+
+
+
+
+#define __UCLIBC_CLK_TCK_CONST 100
+# 39 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/time.h" 2 3 4
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/time.h" 3 4
+#define CLOCK_REALTIME 0
+
+#define CLOCK_MONOTONIC 1
+
+#define CLOCK_PROCESS_CPUTIME_ID 2
+
+#define CLOCK_THREAD_CPUTIME_ID 3
+
+
+#define TIMER_ABSTIME 1
+# 44 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 2 3 4
+# 55 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+#define __clock_t_defined 1
+
+
+
+
+
+typedef __clock_t clock_t;
+
+
+
+
+
+
+#undef __need_clock_t
+
+
+#define __time_t_defined 1
+
+
+
+
+
+typedef __time_t time_t;
+
+
+
+
+
+
+#undef __need_time_t
+
+
+
+#define __clockid_t_defined 1
+
+
+
+
+typedef __clockid_t clockid_t;
+
+
+#undef __clockid_time_t
+
+
+
+#define __timer_t_defined 1
+
+
+
+
+typedef __timer_t timer_t;
+
+
+#undef __need_timer_t
+# 128 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+#undef __need_timespec
+
+
+
+
+
+struct tm
+{
+ int tm_sec;
+ int tm_min;
+ int tm_hour;
+ int tm_mday;
+ int tm_mon;
+ int tm_year;
+ int tm_wday;
+ int tm_yday;
+ int tm_isdst;
+
+
+
+ long int tm_gmtoff;
+ __const char *tm_zone;
+
+
+
+
+
+};
+
+
+
+
+
+
+
+
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+
+
+struct sigevent;
+
+
+
+
+
+typedef __pid_t pid_t;
+#define __pid_t_defined
+
+
+
+
+
+
+
+extern clock_t clock (void) throw ();
+
+
+extern time_t time (time_t *__timer) throw ();
+
+
+
+extern double difftime (time_t __time1, time_t __time0)
+ throw () __attribute__ ((__const__));
+
+
+
+extern time_t mktime (struct tm *__tp) throw ();
+
+
+
+
+
+extern size_t strftime (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format,
+ __const struct tm *__restrict __tp) throw ();
+
+
+
+
+
+extern char *strptime (__const char *__restrict __s,
+ __const char *__restrict __fmt, struct tm *__tp)
+ throw ();
+# 235 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+
+
+
+extern struct tm *gmtime (__const time_t *__timer) throw ();
+
+
+
+extern struct tm *localtime (__const time_t *__timer) throw ();
+
+
+
+
+
+extern struct tm *gmtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) throw ();
+
+
+
+extern struct tm *localtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) throw ();
+
+
+
+
+
+extern char *asctime (__const struct tm *__tp) throw ();
+
+
+extern char *ctime (__const time_t *__timer) throw ();
+
+
+
+
+
+
+
+extern char *asctime_r (__const struct tm *__restrict __tp,
+ char *__restrict __buf) throw ();
+
+
+extern char *ctime_r (__const time_t *__restrict __timer,
+ char *__restrict __buf) throw ();
+# 291 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+extern char *tzname[2];
+
+
+
+extern void tzset (void) throw ();
+
+
+
+extern int daylight;
+extern long int timezone;
+
+
+
+
+
+extern int stime (__const time_t *__when) throw ();
+
+
+
+
+
+#define __isleap(year) ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0))
+# 321 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+extern time_t timegm (struct tm *__tp) throw ();
+
+
+extern time_t timelocal (struct tm *__tp) throw ();
+
+
+extern int dysize (int __year) throw () __attribute__ ((__const__));
+# 337 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+extern int nanosleep (__const struct timespec *__requested_time,
+ struct timespec *__remaining);
+
+
+
+extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw ();
+
+
+extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw ();
+
+
+extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
+ throw ();
+# 369 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+extern int timer_create (clockid_t __clock_id,
+ struct sigevent *__restrict __evp,
+ timer_t *__restrict __timerid) throw ();
+
+
+extern int timer_delete (timer_t __timerid) throw ();
+
+
+extern int timer_settime (timer_t __timerid, int __flags,
+ __const struct itimerspec *__restrict __value,
+ struct itimerspec *__restrict __ovalue) throw ();
+
+
+extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
+ throw ();
+
+
+extern int timer_getoverrun (timer_t __timerid) throw ();
+# 433 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/time.h" 3 4
+}
+# 22 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 2 3 4
+
+#define __need_sigset_t
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/signal.h" 1 3 4
+# 31 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/signal.h" 3 4
+extern "C" {
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/sigset.h" 1 3 4
+# 21 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/sigset.h" 3 4
+#define _SIGSET_H_types 1
+
+typedef int __sig_atomic_t;
+
+
+
+#define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int)))
+typedef struct
+ {
+ unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+ } __sigset_t;
+# 34 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/signal.h" 2 3 4
+# 49 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/signal.h" 3 4
+#define __sigset_t_defined
+typedef __sigset_t sigset_t;
+
+#undef __need_sigset_t
+# 400 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/signal.h" 3 4
+}
+# 25 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 2 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/pthreadtypes.h" 1 3 4
+# 26 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 2 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/initspin.h" 1 3 4
+# 23 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/initspin.h" 3 4
+#define __LT_SPINLOCK_INIT 0
+
+
+#define __LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT }
+#define __ALT_LOCK_INITIALIZER { 0, __LT_SPINLOCK_INIT }
+#define __ATOMIC_INITIALIZER { 0, __LT_SPINLOCK_INIT }
+# 27 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 2 3 4
+
+
+extern "C" {
+
+
+
+#define PTHREAD_MUTEX_INITIALIZER {0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __LOCK_INITIALIZER}
+
+
+#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP {0, 0, 0, PTHREAD_MUTEX_RECURSIVE_NP, __LOCK_INITIALIZER}
+
+#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP {0, 0, 0, PTHREAD_MUTEX_ERRORCHECK_NP, __LOCK_INITIALIZER}
+
+#define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP {0, 0, 0, PTHREAD_MUTEX_ADAPTIVE_NP, __LOCK_INITIALIZER}
+
+
+
+#define PTHREAD_COND_INITIALIZER {__LOCK_INITIALIZER, 0}
+
+
+#define PTHREAD_RWLOCK_INITIALIZER { __LOCK_INITIALIZER, 0, NULL, NULL, NULL, PTHREAD_RWLOCK_DEFAULT_NP, PTHREAD_PROCESS_PRIVATE }
+
+
+
+
+#define PTHREAD_RWLOCK_WRITER_NONRECURSIVE_INITIALIZER_NP { __LOCK_INITIALIZER, 0, NULL, NULL, NULL, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP, PTHREAD_PROCESS_PRIVATE }
+
+
+
+
+
+
+enum
+{
+ PTHREAD_CREATE_JOINABLE,
+#define PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_JOINABLE
+ PTHREAD_CREATE_DETACHED
+#define PTHREAD_CREATE_DETACHED PTHREAD_CREATE_DETACHED
+};
+
+enum
+{
+ PTHREAD_INHERIT_SCHED,
+#define PTHREAD_INHERIT_SCHED PTHREAD_INHERIT_SCHED
+ PTHREAD_EXPLICIT_SCHED
+#define PTHREAD_EXPLICIT_SCHED PTHREAD_EXPLICIT_SCHED
+};
+
+enum
+{
+ PTHREAD_SCOPE_SYSTEM,
+#define PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_SYSTEM
+ PTHREAD_SCOPE_PROCESS
+#define PTHREAD_SCOPE_PROCESS PTHREAD_SCOPE_PROCESS
+};
+
+enum
+{
+ PTHREAD_MUTEX_ADAPTIVE_NP,
+ PTHREAD_MUTEX_RECURSIVE_NP,
+ PTHREAD_MUTEX_ERRORCHECK_NP,
+ PTHREAD_MUTEX_TIMED_NP
+
+ ,
+ PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_ADAPTIVE_NP,
+ PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
+ PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
+ PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
+
+
+
+ , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_ADAPTIVE_NP
+
+};
+
+enum
+{
+ PTHREAD_PROCESS_PRIVATE,
+#define PTHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_PRIVATE
+ PTHREAD_PROCESS_SHARED
+#define PTHREAD_PROCESS_SHARED PTHREAD_PROCESS_SHARED
+};
+
+
+enum
+{
+ PTHREAD_RWLOCK_PREFER_READER_NP,
+ PTHREAD_RWLOCK_PREFER_WRITER_NP,
+ PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
+ PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_WRITER_NP
+};
+
+
+#define PTHREAD_ONCE_INIT 0
+
+
+
+
+
+#define PTHREAD_BARRIER_SERIAL_THREAD -1
+
+
+
+
+struct _pthread_cleanup_buffer
+{
+ void (*__routine) (void *);
+ void *__arg;
+ int __canceltype;
+ struct _pthread_cleanup_buffer *__prev;
+};
+
+
+
+enum
+{
+ PTHREAD_CANCEL_ENABLE,
+#define PTHREAD_CANCEL_ENABLE PTHREAD_CANCEL_ENABLE
+ PTHREAD_CANCEL_DISABLE
+#define PTHREAD_CANCEL_DISABLE PTHREAD_CANCEL_DISABLE
+};
+enum
+{
+ PTHREAD_CANCEL_DEFERRED,
+#define PTHREAD_CANCEL_DEFERRED PTHREAD_CANCEL_DEFERRED
+ PTHREAD_CANCEL_ASYNCHRONOUS
+#define PTHREAD_CANCEL_ASYNCHRONOUS PTHREAD_CANCEL_ASYNCHRONOUS
+};
+#define PTHREAD_CANCELED ((void *) -1)
+
+
+
+
+
+
+
+extern int pthread_create (pthread_t *__restrict __threadp,
+ __const pthread_attr_t *__restrict __attr,
+ void *(*__start_routine) (void *),
+ void *__restrict __arg) throw ();
+
+
+extern pthread_t pthread_self (void) throw ();
+
+
+extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ();
+
+
+extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
+
+
+
+
+extern int pthread_join (pthread_t __th, void **__thread_return);
+
+
+
+
+
+extern int pthread_detach (pthread_t __th) throw ();
+
+
+
+
+
+
+
+extern int pthread_attr_init (pthread_attr_t *__attr) throw ();
+
+
+extern int pthread_attr_destroy (pthread_attr_t *__attr) throw ();
+
+
+extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
+ int __detachstate) throw ();
+
+
+extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
+ int *__detachstate) throw ();
+
+
+extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
+ __const struct sched_param *__restrict
+ __param) throw ();
+
+
+extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
+ __attr,
+ struct sched_param *__restrict __param)
+ throw ();
+
+
+extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
+ throw ();
+
+
+extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
+ __attr, int *__restrict __policy)
+ throw ();
+
+
+extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
+ int __inherit) throw ();
+
+
+extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
+ __attr, int *__restrict __inherit)
+ throw ();
+
+
+extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
+ throw ();
+
+
+extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
+ int *__restrict __scope) throw ();
+
+
+
+extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
+ size_t __guardsize) throw ();
+
+
+extern int pthread_attr_getguardsize (__const pthread_attr_t *__restrict
+ __attr, size_t *__restrict __guardsize)
+ throw ();
+
+
+
+
+
+
+extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
+ void *__stackaddr) throw ();
+
+
+extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
+ __attr, void **__restrict __stackaddr)
+ throw ();
+
+
+
+
+
+extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
+ size_t __stacksize) throw ();
+
+
+extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
+ void **__restrict __stackaddr,
+ size_t *__restrict __stacksize) throw ();
+
+
+
+
+
+extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
+ size_t __stacksize) throw ();
+
+
+extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
+ __attr, size_t *__restrict __stacksize)
+ throw ();
+# 306 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 3 4
+extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
+ __const struct sched_param *__param)
+ throw ();
+
+
+extern int pthread_getschedparam (pthread_t __target_thread,
+ int *__restrict __policy,
+ struct sched_param *__restrict __param)
+ throw ();
+
+
+
+extern int pthread_getconcurrency (void) throw ();
+
+
+extern int pthread_setconcurrency (int __level) throw ();
+
+
+
+
+
+
+extern int pthread_mutex_init (pthread_mutex_t *__restrict __mutex,
+ __const pthread_mutexattr_t *__restrict
+ __mutex_attr) throw ();
+
+
+extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) throw ();
+
+
+extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) throw ();
+
+
+extern int pthread_mutex_lock (pthread_mutex_t *__mutex) throw ();
+
+
+
+extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
+ __const struct timespec *__restrict
+ __abstime) throw ();
+
+
+
+extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) throw ();
+
+
+
+
+
+
+extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) throw ();
+
+
+extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) throw ();
+
+
+extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
+ __restrict __attr,
+ int *__restrict __pshared) throw ();
+
+
+extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
+ int __pshared) throw ();
+
+
+
+
+
+extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
+ throw ();
+
+
+extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
+ __attr, int *__restrict __kind) throw ();
+
+
+
+
+
+
+
+extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
+ __const pthread_condattr_t *__restrict
+ __cond_attr) throw ();
+
+
+extern int pthread_cond_destroy (pthread_cond_t *__cond) throw ();
+
+
+extern int pthread_cond_signal (pthread_cond_t *__cond) throw ();
+
+
+extern int pthread_cond_broadcast (pthread_cond_t *__cond) throw ();
+
+
+
+extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
+ pthread_mutex_t *__restrict __mutex);
+
+
+
+
+
+extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
+ pthread_mutex_t *__restrict __mutex,
+ __const struct timespec *__restrict
+ __abstime);
+
+
+
+
+extern int pthread_condattr_init (pthread_condattr_t *__attr) throw ();
+
+
+extern int pthread_condattr_destroy (pthread_condattr_t *__attr) throw ();
+
+
+extern int pthread_condattr_getpshared (__const pthread_condattr_t *
+ __restrict __attr,
+ int *__restrict __pshared) throw ();
+
+
+extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
+ int __pshared) throw ();
+
+
+
+
+
+
+
+extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
+ __const pthread_rwlockattr_t *__restrict
+ __attr) throw ();
+
+
+extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) throw ();
+
+
+extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) throw ();
+
+
+extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) throw ();
+
+
+
+extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
+ __const struct timespec *__restrict
+ __abstime) throw ();
+
+
+
+extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) throw ();
+
+
+extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) throw ();
+
+
+
+extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
+ __const struct timespec *__restrict
+ __abstime) throw ();
+
+
+
+extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) throw ();
+
+
+
+
+
+extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) throw ();
+
+
+extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) throw ();
+
+
+extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
+ __restrict __attr,
+ int *__restrict __pshared) throw ();
+
+
+extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
+ int __pshared) throw ();
+
+
+extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *__attr,
+ int *__pref) throw ();
+
+
+extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
+ int __pref) throw ();
+# 557 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 3 4
+extern int pthread_key_create (pthread_key_t *__key,
+ void (*__destr_function) (void *)) throw ();
+
+
+extern int pthread_key_delete (pthread_key_t __key) throw ();
+
+
+extern int pthread_setspecific (pthread_key_t __key,
+ __const void *__pointer) throw ();
+
+
+extern void *pthread_getspecific (pthread_key_t __key) throw ();
+# 580 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 3 4
+extern int pthread_once (pthread_once_t *__once_control,
+ void (*__init_routine) (void));
+
+
+
+
+
+
+extern int pthread_setcancelstate (int __state, int *__oldstate);
+
+
+
+extern int pthread_setcanceltype (int __type, int *__oldtype);
+
+
+extern int pthread_cancel (pthread_t __cancelthread);
+
+
+
+
+extern void pthread_testcancel (void);
+# 610 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 3 4
+#define pthread_cleanup_push(routine,arg) { struct _pthread_cleanup_buffer _buffer; _pthread_cleanup_push (&_buffer, (routine), (arg));
+
+
+
+extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer,
+ void (*__routine) (void *),
+ void *__arg) throw ();
+
+
+
+
+#define pthread_cleanup_pop(execute) _pthread_cleanup_pop (&_buffer, (execute)); }
+
+
+extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer,
+ int __execute) throw ();
+
+
+
+
+
+#define pthread_cleanup_push_defer_np(routine,arg) { struct _pthread_cleanup_buffer _buffer; _pthread_cleanup_push_defer (&_buffer, (routine), (arg));
+
+
+
+extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *__buffer,
+ void (*__routine) (void *),
+ void *__arg) throw ();
+extern void __pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *__buffer,
+ void (*__routine) (void *),
+ void *__arg) throw ();
+
+
+
+
+
+#define pthread_cleanup_pop_restore_np(execute) _pthread_cleanup_pop_restore (&_buffer, (execute)); }
+
+
+extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *__buffer,
+ int __execute) throw ();
+extern void __pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *__buffer,
+ int __execute) throw ();
+# 668 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/sigthread.h" 1 3 4
+# 21 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/sigthread.h" 3 4
+#define _BITS_SIGTHREAD_H 1
+# 31 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/sigthread.h" 3 4
+extern int pthread_sigmask (int __how,
+ __const __sigset_t *__restrict __newmask,
+ __sigset_t *__restrict __oldmask)throw ();
+
+
+extern int pthread_kill (pthread_t __threadid, int __signo) throw ();
+# 669 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 2 3 4
+# 684 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/pthread.h" 3 4
+extern int pthread_atfork (void (*__prepare) (void),
+ void (*__parent) (void),
+ void (*__child) (void)) throw ();
+
+
+
+
+extern void pthread_kill_other_threads_np (void) throw ();
+
+}
+# 16 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_mutex.h" 2 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_pthread.h" 1 3 4
+# 24 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_pthread.h" 3 4
+#define _UCLIBC_PTHREAD_H
+# 17 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_mutex.h" 2 3 4
+
+#define __UCLIBC_MUTEX_TYPE pthread_mutex_t
+
+#define __UCLIBC_MUTEX(M) pthread_mutex_t M
+#define __UCLIBC_MUTEX_INIT(M,I) pthread_mutex_t M = I
+#define __UCLIBC_MUTEX_STATIC(M,I) static pthread_mutex_t M = I
+#define __UCLIBC_MUTEX_EXTERN(M) extern pthread_mutex_t M
+
+#define __UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE(M) __pthread_mutex_lock(&(M))
+
+
+#define __UCLIBC_MUTEX_UNLOCK_CANCEL_UNSAFE(M) __pthread_mutex_unlock(&(M))
+
+
+#define __UCLIBC_MUTEX_TRYLOCK_CANCEL_UNSAFE(M) __pthread_mutex_trylock(&(M))
+
+
+#define __UCLIBC_MUTEX_CONDITIONAL_LOCK(M,C) do { struct _pthread_cleanup_buffer __infunc_pthread_cleanup_buffer; if (C) { _pthread_cleanup_push_defer(&__infunc_pthread_cleanup_buffer, (void (*) (void *))__pthread_mutex_unlock, &(M)); __pthread_mutex_lock(&(M)); } ((void)0)
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_mutex.h" 3 4
+#define __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(M,C) if (C) { _pthread_cleanup_pop_restore(&__infunc_pthread_cleanup_buffer,1); } } while (0)
+
+
+
+
+
+#define __UCLIBC_MUTEX_AUTO_LOCK_VAR(A) int A
+
+#define __UCLIBC_MUTEX_AUTO_LOCK(M,A,V) __UCLIBC_MUTEX_CONDITIONAL_LOCK(M,((A=(V)) == 0))
+
+
+#define __UCLIBC_MUTEX_AUTO_UNLOCK(M,A) __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(M,(A == 0))
+
+
+#define __UCLIBC_MUTEX_LOCK(M) __UCLIBC_MUTEX_CONDITIONAL_LOCK(M, 1)
+
+
+#define __UCLIBC_MUTEX_UNLOCK(M) __UCLIBC_MUTEX_CONDITIONAL_UNLOCK(M, 1)
+# 108 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 2 3 4
+# 121 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+#define __STDIO_AUTO_THREADLOCK_VAR __UCLIBC_MUTEX_AUTO_LOCK_VAR(__infunc_user_locking)
+
+
+#define __STDIO_AUTO_THREADLOCK(__stream) __UCLIBC_MUTEX_AUTO_LOCK((__stream)->__lock, __infunc_user_locking, (__stream)->__user_locking)
+
+
+
+#define __STDIO_AUTO_THREADUNLOCK(__stream) __UCLIBC_MUTEX_AUTO_UNLOCK((__stream)->__lock, __infunc_user_locking)
+
+
+#define __STDIO_ALWAYS_THREADLOCK(__stream) __UCLIBC_MUTEX_LOCK((__stream)->__lock)
+
+
+#define __STDIO_ALWAYS_THREADUNLOCK(__stream) __UCLIBC_MUTEX_UNLOCK((__stream)->__lock)
+
+
+#define __STDIO_ALWAYS_THREADLOCK_CANCEL_UNSAFE(__stream) __UCLIBC_MUTEX_LOCK_CANCEL_UNSAFE((__stream)->__lock)
+
+
+#define __STDIO_ALWAYS_THREADTRYLOCK_CANCEL_UNSAFE(__stream) __UCLIBC_MUTEX_TRYLOCK_CANCEL_UNSAFE((__stream)->__lock)
+
+
+#define __STDIO_ALWAYS_THREADUNLOCK_CANCEL_UNSAFE(__stream) __UCLIBC_MUTEX_UNLOCK_CANCEL_UNSAFE((__stream)->__lock)
+
+
+
+#define __STDIO_SET_USER_LOCKING(__stream) ((__stream)->__user_locking = 1)
+
+
+
+
+
+
+#define __STDIO_IOFBF 0
+#define __STDIO_IOLBF 1
+#define __STDIO_IONBF 2
+
+typedef struct {
+ __off_t __pos;
+
+
+
+
+
+
+} __STDIO_fpos_t;
+
+
+typedef struct {
+ __off64_t __pos;
+
+
+
+
+
+
+} __STDIO_fpos64_t;
+
+
+
+
+typedef __off64_t __offmax_t;
+# 221 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+struct __STDIO_FILE_STRUCT {
+ unsigned short __modeflags;
+
+
+
+
+
+
+
+ unsigned char __ungot[2];
+
+ int __filedes;
+
+ unsigned char *__bufstart;
+ unsigned char *__bufend;
+ unsigned char *__bufpos;
+ unsigned char *__bufread;
+
+
+ unsigned char *__bufgetc_u;
+
+
+ unsigned char *__bufputc_u;
+
+
+
+
+
+ struct __STDIO_FILE_STRUCT *__nextopen;
+# 265 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+ int __user_locking;
+ pthread_mutex_t __lock;
+
+
+
+
+
+};
+# 293 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+#define __MASK_READING 0x0003U
+#define __FLAG_READING 0x0001U
+#define __FLAG_UNGOT 0x0002U
+#define __FLAG_EOF 0x0004U
+#define __FLAG_ERROR 0x0008U
+#define __FLAG_WRITEONLY 0x0010U
+#define __FLAG_READONLY 0x0020U
+#define __FLAG_WRITING 0x0040U
+#define __FLAG_NARROW 0x0080U
+
+#define __FLAG_FBF 0x0000U
+#define __FLAG_LBF 0x0100U
+#define __FLAG_NBF 0x0200U
+#define __MASK_BUFMODE 0x0300U
+#define __FLAG_APPEND 0x0400U
+#define __FLAG_WIDE 0x0800U
+
+#define __FLAG_FREEFILE 0x2000U
+#define __FLAG_FREEBUF 0x4000U
+#define __FLAG_LARGEFILE 0x8000U
+#define __FLAG_FAILED_FREOPEN __FLAG_LARGEFILE
+# 357 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+#define __CLEARERR_UNLOCKED(__stream) ((void)((__stream)->__modeflags &= ~(__FLAG_EOF|__FLAG_ERROR)))
+
+#define __FEOF_UNLOCKED(__stream) ((__stream)->__modeflags & __FLAG_EOF)
+#define __FERROR_UNLOCKED(__stream) ((__stream)->__modeflags & __FLAG_ERROR)
+
+
+#define __CLEARERR(__stream) (clearerr)(__stream)
+#define __FERROR(__stream) (ferror)(__stream)
+#define __FEOF(__stream) (feof)(__stream)
+
+
+
+
+
+
+extern int __fgetc_unlocked(FILE *__stream);
+extern int __fputc_unlocked(int __c, FILE *__stream);
+
+
+
+#define __FGETC_UNLOCKED(__stream) (__fgetc_unlocked)((__stream))
+#define __FGETC(__stream) (fgetc)((__stream))
+#define __GETC_UNLOCKED_MACRO(__stream) (__fgetc_unlocked)((__stream))
+#define __GETC_UNLOCKED(__stream) (__fgetc_unlocked)((__stream))
+#define __GETC(__stream) (fgetc)((__stream))
+
+#define __FPUTC_UNLOCKED(__c,__stream) (__fputc_unlocked)((__c),(__stream))
+#define __FPUTC(__c,__stream) (fputc)((__c),(__stream))
+#define __PUTC_UNLOCKED_MACRO(__c,__stream) (__fputc_unlocked)((__c),(__stream))
+#define __PUTC_UNLOCKED(__c,__stream) (__fputc_unlocked)((__c),(__stream))
+#define __PUTC(__c,__stream) (fputc)((__c),(__stream))
+
+
+
+
+extern FILE *__stdin;
+
+#undef __GETC_UNLOCKED_MACRO
+#define __GETC_UNLOCKED_MACRO(__stream) ( ((__stream)->__bufpos < (__stream)->__bufgetc_u) ? (*(__stream)->__bufpos++) : __fgetc_unlocked(__stream) )
+# 411 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+#undef __FGETC_UNLOCKED
+#define __FGETC_UNLOCKED(__stream) (__extension__ ({ FILE *__S = (__stream); __GETC_UNLOCKED_MACRO(__S); }) )
+
+
+
+
+
+#undef __GETC_UNLOCKED
+#define __GETC_UNLOCKED(__stream) __FGETC_UNLOCKED((__stream))
+
+
+#undef __FGETC
+#define __FGETC(__stream) (__extension__ ({ FILE *__S = (__stream); ((__S->__user_locking ) ? __GETC_UNLOCKED_MACRO(__S) : (fgetc)(__S)); }) )
+
+
+
+
+
+
+
+#undef __GETC
+#define __GETC(__stream) __FGETC((__stream))
+# 451 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+extern FILE *__stdout;
+
+#undef __PUTC_UNLOCKED_MACRO
+#define __PUTC_UNLOCKED_MACRO(__c,__stream) ( ((__stream)->__bufpos < (__stream)->__bufputc_u) ? (*(__stream)->__bufpos++) = (__c) : __fputc_unlocked((__c),(__stream)) )
+# 472 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_stdio.h" 3 4
+#undef __FPUTC_UNLOCKED
+#define __FPUTC_UNLOCKED(__c,__stream) (__extension__ ({ FILE *__S = (__stream); __PUTC_UNLOCKED_MACRO((__c),__S); }) )
+
+
+
+
+
+#undef __PUTC_UNLOCKED
+#define __PUTC_UNLOCKED(__c,__stream) __FPUTC_UNLOCKED((__c), (__stream))
+
+
+#undef __FPUTC
+#define __FPUTC(__c,__stream) (__extension__ ({ FILE *__S = (__stream); ((__S->__user_locking) ? __PUTC_UNLOCKED_MACRO((__c),__S) : (fputc)((__c),__S)); }) )
+
+
+
+
+
+
+
+#undef __PUTC
+#define __PUTC(__c,__stream) __FPUTC((__c), (__stream))
+# 73 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 2 3 4
+
+
+#define __need___va_list
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stdarg.h" 1 3 4
+# 37 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stdarg.h" 3 4
+#undef __need___va_list
+
+
+
+
+#define __GNUC_VA_LIST
+typedef __builtin_va_list __gnuc_va_list;
+# 77 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 2 3 4
+
+
+
+
+typedef __STDIO_fpos_t fpos_t;
+
+
+
+
+
+typedef __STDIO_fpos64_t fpos64_t;
+
+
+
+#define _IOFBF __STDIO_IOFBF
+#define _IOLBF __STDIO_IOLBF
+#define _IONBF __STDIO_IONBF
+
+
+
+
+#define BUFSIZ __STDIO_BUFSIZ
+
+
+
+
+
+
+#define EOF (-1)
+
+
+
+
+
+#define SEEK_SET 0
+#define SEEK_CUR 1
+#define SEEK_END 2
+
+
+
+
+#define P_tmpdir "/tmp"
+# 131 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/stdio_lim.h" 1 3 4
+# 24 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/stdio_lim.h" 3 4
+#define L_tmpnam 20
+#define TMP_MAX 238328
+#define FILENAME_MAX 4095
+
+
+#define L_ctermid 9
+#define L_cuserid 9
+
+
+
+
+#undef FOPEN_MAX
+#define FOPEN_MAX 16
+# 132 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 2 3 4
+
+
+
+extern FILE *stdin;
+extern FILE *stdout;
+extern FILE *stderr;
+
+#define stdin stdin
+#define stdout stdout
+#define stderr stderr
+
+
+
+extern int remove (__const char *__filename) throw ();
+
+extern int rename (__const char *__old, __const char *__new) throw ();
+
+
+
+
+
+
+
+
+
+extern FILE *tmpfile (void) ;
+# 167 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern FILE *tmpfile64 (void) ;
+
+
+
+extern char *tmpnam (char *__s) throw () ;
+
+
+
+
+
+extern char *tmpnam_r (char *__s) throw () ;
+# 189 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+ throw () __attribute__ ((__malloc__)) ;
+
+
+
+
+
+
+
+
+extern int fclose (FILE *__stream);
+
+
+
+
+extern int fflush (FILE *__stream);
+
+# 214 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern int fflush_unlocked (FILE *__stream);
+# 224 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern int fcloseall (void);
+
+
+
+
+
+
+
+
+
+extern FILE *fopen (__const char *__restrict __filename,
+ __const char *__restrict __modes) ;
+
+
+
+
+extern FILE *freopen (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) ;
+# 257 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+
+
+extern FILE *fopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes) ;
+extern FILE *freopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) ;
+
+
+
+
+extern FILE *fdopen (int __fd, __const char *__modes) throw () ;
+# 292 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+
+
+
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw ();
+
+
+
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+ int __modes, size_t __n) throw ();
+
+
+
+
+
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+ size_t __size) throw ();
+
+
+extern void setlinebuf (FILE *__stream) throw ();
+
+
+
+
+
+
+
+
+extern int fprintf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...);
+
+
+
+
+extern int printf (__const char *__restrict __format, ...);
+
+extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) throw ();
+
+
+
+
+
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg);
+
+
+
+
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg) throw ();
+
+
+
+
+
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...)
+ throw () __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ throw () __attribute__ ((__format__ (__printf__, 3, 0)));
+
+
+
+
+
+
+extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
+ __gnuc_va_list __arg)
+ throw () __attribute__ ((__format__ (__printf__, 2, 0))) ;
+
+
+
+
+
+extern int asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ throw () __attribute__ ((__format__ (__printf__, 2, 3))) ;
+
+
+
+
+
+
+
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+
+
+
+
+
+
+
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) ;
+
+
+
+
+extern int scanf (__const char *__restrict __format, ...) ;
+
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) throw ();
+
+
+
+
+
+
+
+
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 2, 0))) ;
+
+
+
+
+
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 1, 0))) ;
+
+
+extern int vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ throw () __attribute__ ((__format__ (__scanf__, 2, 0)));
+
+
+
+
+
+
+
+
+
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+
+
+
+
+
+extern int getchar (void);
+
+
+
+
+#define getc(_fp) __GETC(_fp)
+
+
+
+
+
+
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+
+
+#define getc_unlocked(_fp) __GETC_UNLOCKED(_fp)
+# 468 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern int fgetc_unlocked (FILE *__stream);
+
+
+
+
+
+
+
+
+
+
+
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+
+
+
+
+
+extern int putchar (int __c);
+
+
+
+
+#define putc(_ch,_fp) __PUTC(_ch, _fp)
+# 501 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern int fputc_unlocked (int __c, FILE *__stream);
+
+
+
+
+
+
+
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+
+
+#define putc_unlocked(_ch,_fp) __PUTC_UNLOCKED(_ch, _fp)
+
+
+
+
+
+
+extern int getw (FILE *__stream);
+
+
+extern int putw (int __w, FILE *__stream);
+
+
+
+
+
+
+
+
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+ ;
+
+
+
+
+
+
+extern char *gets (char *__s) ;
+
+# 550 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern char *fgets_unlocked (char *__restrict __s, int __n,
+ FILE *__restrict __stream) ;
+# 571 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern __ssize_t getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+
+
+
+
+
+
+
+extern __ssize_t getline (char **__restrict __lineptr,
+ size_t *__restrict __n,
+ FILE *__restrict __stream) ;
+
+
+
+
+
+
+
+
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+
+
+
+
+
+extern int puts (__const char *__s);
+
+
+
+
+
+
+extern int ungetc (int __c, FILE *__stream);
+
+
+
+
+
+
+extern size_t fread (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+
+
+
+
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __s) ;
+
+# 629 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern int fputs_unlocked (__const char *__restrict __s,
+ FILE *__restrict __stream);
+# 640 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+
+
+
+
+
+
+
+
+extern int fseek (FILE *__stream, long int __off, int __whence);
+
+
+
+
+extern long int ftell (FILE *__stream) ;
+
+
+
+
+extern void rewind (FILE *__stream);
+
+# 676 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
+
+
+
+
+extern __off_t ftello (FILE *__stream) ;
+# 695 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
+
+
+
+
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+# 718 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+
+
+
+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
+extern __off64_t ftello64 (FILE *__stream) ;
+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
+
+
+
+
+extern void clearerr (FILE *__stream) throw ();
+
+extern int feof (FILE *__stream) throw () ;
+
+extern int ferror (FILE *__stream) throw () ;
+
+
+
+
+extern void clearerr_unlocked (FILE *__stream) throw ();
+extern int feof_unlocked (FILE *__stream) throw () ;
+extern int ferror_unlocked (FILE *__stream) throw () ;
+
+
+
+
+
+
+
+
+extern void perror (__const char *__s);
+
+# 764 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern int fileno (FILE *__stream) throw () ;
+
+
+
+
+extern int fileno_unlocked (FILE *__stream) throw () ;
+# 779 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern FILE *popen (__const char *__command, __const char *__modes) ;
+
+
+
+
+
+extern int pclose (FILE *__stream);
+
+
+
+
+
+extern char *ctermid (char *__s) throw ();
+
+
+
+
+
+extern char *cuserid (char *__s);
+# 819 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+extern void flockfile (FILE *__stream) throw ();
+
+
+
+extern int ftrylockfile (FILE *__stream) throw () ;
+
+
+extern void funlockfile (FILE *__stream) throw ();
+# 839 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdio.h" 3 4
+#define fgetc(_fp) __FGETC(_fp)
+#define fputc(_ch,_fp) __FPUTC(_ch, _fp)
+
+
+#define fgetc_unlocked(_fp) __FGETC_UNLOCKED(_fp)
+#define fputc_unlocked(_ch,_fp) __FPUTC_UNLOCKED(_ch, _fp)
+
+
+
+
+
+#define getchar() __GETC(__stdin)
+
+
+
+
+#define putchar(_ch) __PUTC((_ch), __stdout)
+
+
+#define getchar_unlocked() __GETC_UNLOCKED(__stdin)
+#define putchar_unlocked(_ch) __PUTC_UNLOCKED((_ch), __stdout)
+
+
+
+#define clearerr(_fp) __CLEARERR(_fp)
+#define feof(_fp) __FEOF(_fp)
+#define ferror(_fp) __FERROR(_fp)
+
+
+#define clearerr_unlocked(_fp) __CLEARERR_UNLOCKED(_fp)
+#define feof_unlocked(_fp) __FEOF_UNLOCKED(_fp)
+#define ferror_unlocked(_fp) __FERROR_UNLOCKED(_fp)
+
+
+}
+# 51 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstdio" 2 3
+
+
+#define _GLIBCXX_CSTDIO 1
+
+
+#undef clearerr
+#undef fclose
+#undef feof
+#undef ferror
+#undef fflush
+#undef fgetc
+#undef fgetpos
+#undef fgets
+#undef fopen
+#undef fprintf
+#undef fputc
+#undef fputs
+#undef fread
+#undef freopen
+#undef fscanf
+#undef fseek
+#undef fsetpos
+#undef ftell
+#undef fwrite
+#undef getc
+#undef getchar
+#undef gets
+#undef perror
+#undef printf
+#undef putc
+#undef putchar
+#undef puts
+#undef remove
+#undef rename
+#undef rewind
+#undef scanf
+#undef setbuf
+#undef setvbuf
+#undef sprintf
+#undef sscanf
+#undef tmpfile
+#undef tmpnam
+#undef ungetc
+#undef vfprintf
+#undef vprintf
+#undef vsprintf
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ using ::FILE;
+ using ::fpos_t;
+
+ using ::clearerr;
+ using ::fclose;
+ using ::feof;
+ using ::ferror;
+ using ::fflush;
+ using ::fgetc;
+ using ::fgetpos;
+ using ::fgets;
+ using ::fopen;
+ using ::fprintf;
+ using ::fputc;
+ using ::fputs;
+ using ::fread;
+ using ::freopen;
+ using ::fscanf;
+ using ::fseek;
+ using ::fsetpos;
+ using ::ftell;
+ using ::fwrite;
+ using ::getc;
+ using ::getchar;
+ using ::gets;
+ using ::perror;
+ using ::printf;
+ using ::putc;
+ using ::putchar;
+ using ::puts;
+ using ::remove;
+ using ::rename;
+ using ::rewind;
+ using ::scanf;
+ using ::setbuf;
+ using ::setvbuf;
+ using ::sprintf;
+ using ::sscanf;
+ using ::tmpfile;
+ using ::tmpnam;
+ using ::ungetc;
+ using ::vfprintf;
+ using ::vprintf;
+ using ::vsprintf;
+
+}
+# 49 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/char_traits.h" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cwchar" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cwchar" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cwchar" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 2 3
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cwchar" 2 3
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/char_traits.h" 2 3
+
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/char_traits.h" 3
+ template<typename _CharT>
+ struct _Char_types
+ {
+ typedef unsigned long int_type;
+ typedef std::streampos pos_type;
+ typedef std::streamoff off_type;
+ typedef std::mbstate_t state_type;
+ };
+# 88 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/char_traits.h" 3
+ template<typename _CharT>
+ struct char_traits
+ {
+ typedef _CharT char_type;
+ typedef typename _Char_types<_CharT>::int_type int_type;
+ typedef typename _Char_types<_CharT>::pos_type pos_type;
+ typedef typename _Char_types<_CharT>::off_type off_type;
+ typedef typename _Char_types<_CharT>::state_type state_type;
+
+ static void
+ assign(char_type& __c1, const char_type& __c2)
+ { __c1 = __c2; }
+
+ static bool
+ eq(const char_type& __c1, const char_type& __c2)
+ { return __c1 == __c2; }
+
+ static bool
+ lt(const char_type& __c1, const char_type& __c2)
+ { return __c1 < __c2; }
+
+ static int
+ compare(const char_type* __s1, const char_type* __s2, std::size_t __n);
+
+ static std::size_t
+ length(const char_type* __s);
+
+ static const char_type*
+ find(const char_type* __s, std::size_t __n, const char_type& __a);
+
+ static char_type*
+ move(char_type* __s1, const char_type* __s2, std::size_t __n);
+
+ static char_type*
+ copy(char_type* __s1, const char_type* __s2, std::size_t __n);
+
+ static char_type*
+ assign(char_type* __s, std::size_t __n, char_type __a);
+
+ static char_type
+ to_char_type(const int_type& __c)
+ { return static_cast<char_type>(__c); }
+
+ static int_type
+ to_int_type(const char_type& __c)
+ { return static_cast<int_type>(__c); }
+
+ static bool
+ eq_int_type(const int_type& __c1, const int_type& __c2)
+ { return __c1 == __c2; }
+
+ static int_type
+ eof()
+ { return static_cast<int_type>((-1)); }
+
+ static int_type
+ not_eof(const int_type& __c)
+ { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }
+ };
+
+ template<typename _CharT>
+ int
+ char_traits<_CharT>::
+ compare(const char_type* __s1, const char_type* __s2, std::size_t __n)
+ {
+ for (std::size_t __i = 0; __i < __n; ++__i)
+ if (lt(__s1[__i], __s2[__i]))
+ return -1;
+ else if (lt(__s2[__i], __s1[__i]))
+ return 1;
+ return 0;
+ }
+
+ template<typename _CharT>
+ std::size_t
+ char_traits<_CharT>::
+ length(const char_type* __p)
+ {
+ std::size_t __i = 0;
+ while (!eq(__p[__i], char_type()))
+ ++__i;
+ return __i;
+ }
+
+ template<typename _CharT>
+ const typename char_traits<_CharT>::char_type*
+ char_traits<_CharT>::
+ find(const char_type* __s, std::size_t __n, const char_type& __a)
+ {
+ for (std::size_t __i = 0; __i < __n; ++__i)
+ if (eq(__s[__i], __a))
+ return __s + __i;
+ return 0;
+ }
+
+ template<typename _CharT>
+ typename char_traits<_CharT>::char_type*
+ char_traits<_CharT>::
+ move(char_type* __s1, const char_type* __s2, std::size_t __n)
+ {
+ return static_cast<_CharT*>(__builtin_memmove(__s1, __s2,
+ __n * sizeof(char_type)));
+ }
+
+ template<typename _CharT>
+ typename char_traits<_CharT>::char_type*
+ char_traits<_CharT>::
+ copy(char_type* __s1, const char_type* __s2, std::size_t __n)
+ {
+
+ std::copy(__s2, __s2 + __n, __s1);
+ return __s1;
+ }
+
+ template<typename _CharT>
+ typename char_traits<_CharT>::char_type*
+ char_traits<_CharT>::
+ assign(char_type* __s, std::size_t __n, char_type __a)
+ {
+
+ std::fill_n(__s, __n, __a);
+ return __s;
+ }
+
+}
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 229 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/char_traits.h" 3
+ template<class _CharT>
+ struct char_traits : public __gnu_cxx::char_traits<_CharT>
+ { };
+
+
+
+ template<>
+ struct char_traits<char>
+ {
+ typedef char char_type;
+ typedef int int_type;
+ typedef streampos pos_type;
+ typedef streamoff off_type;
+ typedef mbstate_t state_type;
+
+ static void
+ assign(char_type& __c1, const char_type& __c2)
+ { __c1 = __c2; }
+
+ static bool
+ eq(const char_type& __c1, const char_type& __c2)
+ { return __c1 == __c2; }
+
+ static bool
+ lt(const char_type& __c1, const char_type& __c2)
+ { return __c1 < __c2; }
+
+ static int
+ compare(const char_type* __s1, const char_type* __s2, size_t __n)
+ { return __builtin_memcmp(__s1, __s2, __n); }
+
+ static size_t
+ length(const char_type* __s)
+ { return __builtin_strlen(__s); }
+
+ static const char_type*
+ find(const char_type* __s, size_t __n, const char_type& __a)
+ { return static_cast<const char_type*>(__builtin_memchr(__s, __a, __n)); }
+
+ static char_type*
+ move(char_type* __s1, const char_type* __s2, size_t __n)
+ { return static_cast<char_type*>(__builtin_memmove(__s1, __s2, __n)); }
+
+ static char_type*
+ copy(char_type* __s1, const char_type* __s2, size_t __n)
+ { return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); }
+
+ static char_type*
+ assign(char_type* __s, size_t __n, char_type __a)
+ { return static_cast<char_type*>(__builtin_memset(__s, __a, __n)); }
+
+ static char_type
+ to_char_type(const int_type& __c)
+ { return static_cast<char_type>(__c); }
+
+
+
+ static int_type
+ to_int_type(const char_type& __c)
+ { return static_cast<int_type>(static_cast<unsigned char>(__c)); }
+
+ static bool
+ eq_int_type(const int_type& __c1, const int_type& __c2)
+ { return __c1 == __c2; }
+
+ static int_type
+ eof() { return static_cast<int_type>((-1)); }
+
+ static int_type
+ not_eof(const int_type& __c)
+ { return (__c == eof()) ? 0 : __c; }
+ };
+# 369 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/char_traits.h" 3
+}
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ios" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/localefwd.h" 1 3
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/localefwd.h" 3
+#define _LOCALE_FWD_H 1
+
+
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/localefwd.h" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++locale.h" 1 3
+# 43 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++locale.h" 3
+#define _GLIBCXX_CXX_LOCALE_H 1
+
+
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++locale.h" 3
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/clocale" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/clocale" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/clocale" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/locale.h" 1 3 4
+# 24 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/locale.h" 3 4
+#define _LOCALE_H 1
+
+
+
+#define __need_NULL
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 163 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 236 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 398 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 409 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 30 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/locale.h" 2 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_locale.h" 1 3 4
+# 31 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_locale.h" 3 4
+#define _UCLIBC_LOCALE_H
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_locale.h" 3 4
+#define __LOCALE_C_ONLY
+
+#define __XL_NPP(N) N
+#define __LOCALE_PARAM
+#define __LOCALE_ARG
+
+
+
+
+
+#define __NL_ITEM_CATEGORY_SHIFT (8)
+#define __NL_ITEM_INDEX_MASK (0xff)
+
+
+
+#define __LC_CTYPE 0
+#define __LC_NUMERIC 1
+#define __LC_MONETARY 2
+#define __LC_TIME 3
+#define __LC_COLLATE 4
+#define __LC_MESSAGES 5
+#define __LC_ALL 6
+# 31 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/locale.h" 2 3 4
+
+extern "C" {
+
+
+
+#define LC_CTYPE __LC_CTYPE
+#define LC_NUMERIC __LC_NUMERIC
+#define LC_TIME __LC_TIME
+#define LC_COLLATE __LC_COLLATE
+#define LC_MONETARY __LC_MONETARY
+#define LC_MESSAGES __LC_MESSAGES
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/locale.h" 3 4
+#define LC_ALL __LC_ALL
+
+
+
+struct lconv
+{
+
+
+ char *decimal_point;
+ char *thousands_sep;
+
+
+
+
+
+ char *grouping;
+
+
+
+
+
+ char *int_curr_symbol;
+ char *currency_symbol;
+ char *mon_decimal_point;
+ char *mon_thousands_sep;
+ char *mon_grouping;
+ char *positive_sign;
+ char *negative_sign;
+ char int_frac_digits;
+ char frac_digits;
+
+ char p_cs_precedes;
+
+ char p_sep_by_space;
+
+ char n_cs_precedes;
+
+ char n_sep_by_space;
+
+
+
+
+
+
+ char p_sign_posn;
+ char n_sign_posn;
+
+
+ char int_p_cs_precedes;
+
+ char int_p_sep_by_space;
+
+ char int_n_cs_precedes;
+
+ char int_n_sep_by_space;
+
+
+
+
+
+
+ char int_p_sign_posn;
+ char int_n_sign_posn;
+# 121 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/locale.h" 3 4
+};
+
+
+
+
+
+extern char *setlocale (int __category, __const char *__locale) throw ();
+
+
+extern struct lconv *localeconv (void) throw ();
+
+
+# 225 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/locale.h" 3 4
+}
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/clocale" 2 3
+
+
+#define _GLIBCXX_CLOCALE 1
+
+
+#undef setlocale
+#undef localeconv
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ using ::lconv;
+ using ::setlocale;
+ using ::localeconv;
+
+}
+# 48 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++locale.h" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 2 3
+# 49 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++locale.h" 2 3
+
+#define _GLIBCXX_NUM_CATEGORIES 0
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ typedef int* __c_locale;
+
+
+
+
+
+ inline int
+ __convert_from_v(const __c_locale&, char* __out,
+ const int __size __attribute__((__unused__)),
+ const char* __fmt, ...)
+ {
+ char* __old = std::setlocale(1, __null);
+ char* __sav = __null;
+ if (__builtin_strcmp(__old, "C"))
+ {
+ const size_t __len = __builtin_strlen(__old) + 1;
+ __sav = new char[__len];
+ __builtin_memcpy(__sav, __old, __len);
+ std::setlocale(1, "C");
+ }
+
+ __builtin_va_list __args;
+ __builtin_va_start(__args, __fmt);
+
+
+
+
+ const int __ret = __builtin_vsprintf(__out, __fmt, __args);
+
+
+ __builtin_va_end(__args);
+
+ if (__sav)
+ {
+ std::setlocale(1, __sav);
+ delete [] __sav;
+ }
+ return __ret;
+ }
+
+}
+# 48 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/localefwd.h" 2 3
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cctype" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cctype" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cctype" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/ctype.h" 1 3 4
+# 25 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/ctype.h" 3 4
+#define _CTYPE_H 1
+
+
+
+
+
+
+extern "C" {
+
+
+
+
+
+
+#define _ISbit(bit) (1 << (bit))
+
+enum
+{
+ _ISupper = (1 << (0)),
+ _ISlower = (1 << (1)),
+ _ISalpha = (1 << (2)),
+ _ISdigit = (1 << (3)),
+ _ISxdigit = (1 << (4)),
+ _ISspace = (1 << (5)),
+ _ISprint = (1 << (6)),
+ _ISgraph = (1 << (7)),
+ _ISblank = (1 << (8)),
+ _IScntrl = (1 << (9)),
+ _ISpunct = (1 << (10)),
+ _ISalnum = (1 << (11))
+};
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_touplow.h" 1 3 4
+# 31 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_touplow.h" 3 4
+#define _UCLIBC_TOUPLOW_H
+
+
+
+
+
+
+typedef __uint16_t __ctype_mask_t;
+
+
+
+typedef __int16_t __ctype_touplow_t;
+#define __UCLIBC_CTYPE_B_TBL_OFFSET 128
+#define __UCLIBC_CTYPE_TO_TBL_OFFSET 128
+# 61 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/ctype.h" 2 3 4
+
+
+#define __UCLIBC_CTYPE_IN_TO_DOMAIN(c) (((unsigned int)((c) + 128)) < 384)
+# 103 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/ctype.h" 3 4
+extern const __ctype_mask_t *__C_ctype_b;
+extern const __ctype_touplow_t *__C_ctype_toupper;
+extern const __ctype_touplow_t *__C_ctype_tolower;
+# 123 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/ctype.h" 3 4
+extern const __ctype_mask_t *__ctype_b;
+extern const __ctype_touplow_t *__ctype_toupper;
+extern const __ctype_touplow_t *__ctype_tolower;
+
+#define __UCLIBC_CTYPE_B (__ctype_b)
+#define __UCLIBC_CTYPE_TOLOWER (__ctype_tolower)
+#define __UCLIBC_CTYPE_TOUPPER (__ctype_toupper)
+
+
+
+#define __isctype(c,type) ((__UCLIBC_CTYPE_B)[(int) (c)] & (__ctype_mask_t) type)
+
+
+#define __isascii(c) (((c) & ~0x7f) == 0)
+#define __toascii(c) ((c) & 0x7f)
+# 146 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/ctype.h" 3 4
+#define __exctype(name) extern int name (int) __THROW
+
+
+
+
+
+
+
+extern int isalnum (int) throw ();
+extern int isalpha (int) throw ();
+extern int iscntrl (int) throw ();
+extern int isdigit (int) throw ();
+extern int islower (int) throw ();
+extern int isgraph (int) throw ();
+extern int isprint (int) throw ();
+extern int ispunct (int) throw ();
+extern int isspace (int) throw ();
+extern int isupper (int) throw ();
+extern int isxdigit (int) throw ();
+
+
+
+extern int tolower (int __c) throw ();
+
+
+extern int toupper (int __c) throw ();
+
+
+
+
+
+
+
+
+extern int isblank (int) throw ();
+
+
+
+
+
+
+extern int isctype (int __c, int __mask) throw ();
+
+
+
+
+
+
+extern int isascii (int __c) throw ();
+
+
+
+extern int toascii (int __c) throw ();
+
+
+
+extern int _toupper (int) throw ();
+extern int _tolower (int) throw ();
+
+
+
+#define __tobody(c,f,a,args) (__extension__ ({ int __res; if (sizeof (c) > 1) { if (__builtin_constant_p (c)) { int __c = (c); __res = __UCLIBC_CTYPE_IN_TO_DOMAIN(__c) ? (a)[__c] : __c; } else __res = f args; } else __res = (a)[(int) (c)]; __res; }))
+# 375 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/ctype.h" 3 4
+}
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cctype" 2 3
+
+
+#define _GLIBCXX_CCTYPE 1
+
+
+#undef isalnum
+#undef isalpha
+#undef iscntrl
+#undef isdigit
+#undef isgraph
+#undef islower
+#undef isprint
+#undef ispunct
+#undef isspace
+#undef isupper
+#undef isxdigit
+#undef tolower
+#undef toupper
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ using ::isalnum;
+ using ::isalpha;
+ using ::iscntrl;
+ using ::isdigit;
+ using ::isgraph;
+ using ::islower;
+ using ::isprint;
+ using ::ispunct;
+ using ::isspace;
+ using ::isupper;
+ using ::isxdigit;
+ using ::tolower;
+ using ::toupper;
+
+}
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/localefwd.h" 2 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+ class locale;
+
+ template<typename _Facet>
+ bool
+ has_facet(const locale&) throw();
+
+ template<typename _Facet>
+ const _Facet&
+ use_facet(const locale&);
+
+
+ template<typename _CharT>
+ bool
+ isspace(_CharT, const locale&);
+
+ template<typename _CharT>
+ bool
+ isprint(_CharT, const locale&);
+
+ template<typename _CharT>
+ bool
+ iscntrl(_CharT, const locale&);
+
+ template<typename _CharT>
+ bool
+ isupper(_CharT, const locale&);
+
+ template<typename _CharT>
+ bool
+ islower(_CharT, const locale&);
+
+ template<typename _CharT>
+ bool
+ isalpha(_CharT, const locale&);
+
+ template<typename _CharT>
+ bool
+ isdigit(_CharT, const locale&);
+
+ template<typename _CharT>
+ bool
+ ispunct(_CharT, const locale&);
+
+ template<typename _CharT>
+ bool
+ isxdigit(_CharT, const locale&);
+
+ template<typename _CharT>
+ bool
+ isalnum(_CharT, const locale&);
+
+ template<typename _CharT>
+ bool
+ isgraph(_CharT, const locale&);
+
+ template<typename _CharT>
+ _CharT
+ toupper(_CharT, const locale&);
+
+ template<typename _CharT>
+ _CharT
+ tolower(_CharT, const locale&);
+
+
+ class ctype_base;
+ template<typename _CharT>
+ class ctype;
+ template<> class ctype<char>;
+
+
+
+ template<typename _CharT>
+ class ctype_byname;
+
+
+ class codecvt_base;
+ template<typename _InternT, typename _ExternT, typename _StateT>
+ class codecvt;
+ template<> class codecvt<char, char, mbstate_t>;
+
+
+
+ template<typename _InternT, typename _ExternT, typename _StateT>
+ class codecvt_byname;
+
+
+
+ template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
+ class num_get;
+ template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+ class num_put;
+
+ template<typename _CharT> class numpunct;
+ template<typename _CharT> class numpunct_byname;
+
+
+ template<typename _CharT>
+ class collate;
+ template<typename _CharT> class
+ collate_byname;
+
+
+ class time_base;
+ template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
+ class time_get;
+ template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
+ class time_get_byname;
+ template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+ class time_put;
+ template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+ class time_put_byname;
+
+
+ class money_base;
+
+ template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
+ class money_get;
+ template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+ class money_put;
+
+ template<typename _CharT, bool _Intl = false>
+ class moneypunct;
+ template<typename _CharT, bool _Intl = false>
+ class moneypunct_byname;
+
+
+ class messages_base;
+ template<typename _CharT>
+ class messages;
+ template<typename _CharT>
+ class messages_byname;
+
+}
+# 48 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ios" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 1 3
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+#define _IOS_BASE_H 1
+
+
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/atomicity.h" 1 3
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/atomicity.h" 3
+#define _GLIBCXX_ATOMICITY_H 1
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/gthr.h" 1 3
+# 30 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/gthr.h" 3
+#define _GLIBCXX_GCC_GTHR_H
+
+
+#pragma GCC visibility push(default)
+# 129 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/gthr.h" 3
+#define _GLIBCXX_GTHREAD_USE_WEAK 1
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/gthr-default.h" 1 3
+# 31 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/gthr-default.h" 3
+#define _GLIBCXX_GCC_GTHR_POSIX_H
+
+
+
+
+#define __GTHREADS 1
+
+
+
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 1 3 4
+# 24 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+#define _UNISTD_H 1
+
+
+
+extern "C" {
+
+
+
+
+
+#define _POSIX_VERSION 200112L
+
+
+
+
+
+#define _POSIX2_VERSION 200112L
+
+
+
+#define _POSIX2_C_BIND 200112L
+
+
+
+#define _POSIX2_C_DEV 200112L
+
+
+
+#define _POSIX2_SW_DEV 200112L
+
+
+
+#define _POSIX2_LOCALEDEF 200112L
+
+
+
+#define _XOPEN_VERSION 500
+
+
+
+
+
+#define _XOPEN_XCU_VERSION 4
+
+
+#define _XOPEN_XPG2 1
+#define _XOPEN_XPG3 1
+#define _XOPEN_XPG4 1
+
+
+#define _XOPEN_UNIX 1
+
+
+#define _XOPEN_CRYPT 1
+
+
+
+#define _XOPEN_ENH_I18N 1
+
+
+#define _XOPEN_LEGACY 1
+# 171 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/posix_opt.h" 1 3 4
+# 21 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/posix_opt.h" 3 4
+#define _POSIX_OPT_H 1
+
+
+#define _POSIX_JOB_CONTROL 1
+
+
+#define _POSIX_SAVED_IDS 1
+
+
+#define _POSIX_PRIORITY_SCHEDULING 200112L
+
+
+#define _POSIX_SYNCHRONIZED_IO 200112L
+
+
+#define _POSIX_FSYNC 200112L
+
+
+#define _POSIX_MAPPED_FILES 200112L
+
+
+#define _POSIX_MEMLOCK 200112L
+
+
+#define _POSIX_MEMLOCK_RANGE 200112L
+
+
+#define _POSIX_MEMORY_PROTECTION 200112L
+
+
+#define _POSIX_CHOWN_RESTRICTED 1
+
+
+
+#define _POSIX_VDISABLE '\0'
+
+
+#define _POSIX_NO_TRUNC 1
+
+
+#define _XOPEN_REALTIME 1
+
+
+#define _XOPEN_SHM 1
+
+
+#define _POSIX_THREADS 200112L
+
+
+#define _POSIX_REENTRANT_FUNCTIONS 1
+#define _POSIX_THREAD_SAFE_FUNCTIONS 200112L
+
+
+#define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L
+
+
+#define _POSIX_THREAD_ATTR_STACKSIZE 200112L
+
+
+#define _POSIX_THREAD_ATTR_STACKADDR 200112L
+
+
+#define _POSIX_SEMAPHORES 200112L
+
+
+#define _POSIX_REALTIME_SIGNALS 200112L
+
+
+#define _POSIX_ASYNCHRONOUS_IO 200112L
+#define _POSIX_ASYNC_IO 1
+
+#define _LFS_ASYNCHRONOUS_IO 1
+
+#define _POSIX_PRIORITIZED_IO 200112L
+
+
+#define _LFS64_ASYNCHRONOUS_IO 1
+
+
+
+#define _LFS_LARGEFILE 1
+#define _LFS64_LARGEFILE 1
+#define _LFS64_STDIO 1
+
+
+
+#define _POSIX_SHARED_MEMORY_OBJECTS 200112L
+
+
+#define _POSIX_CPUTIME 0
+
+
+#define _POSIX_THREAD_CPUTIME 0
+
+
+#define _POSIX_REGEXP 1
+
+
+#define _POSIX_READER_WRITER_LOCKS 200112L
+
+
+#define _POSIX_SHELL 1
+
+
+#define _POSIX_TIMEOUTS 200112L
+# 138 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/posix_opt.h" 3 4
+#define _POSIX_TIMERS 200112L
+
+
+#define _POSIX_BARRIERS 200112L
+
+
+#define _POSIX_MESSAGE_PASSING 200112L
+
+
+#define _POSIX_THREAD_PROCESS_SHARED 200112L
+
+
+#define _POSIX_MONOTONIC_CLOCK 0
+
+
+#define _POSIX_CLOCK_SELECTION 200112L
+
+
+#define _POSIX_ADVISORY_INFO 200112L
+
+
+#define _POSIX_IPV6 200112L
+
+
+#define _POSIX_RAW_SOCKETS 200112L
+
+
+#define _POSIX2_CHAR_TERM 200112L
+
+
+#define _POSIX_SPORADIC_SERVER -1
+#define _POSIX_THREAD_SPORADIC_SERVER -1
+
+
+#define _POSIX_TRACE -1
+#define _POSIX_TRACE_EVENT_FILTER -1
+#define _POSIX_TRACE_INHERIT -1
+#define _POSIX_TRACE_LOG -1
+
+
+#define _POSIX_TYPED_MEMORY_OBJECTS -1
+
+
+#define _POSIX_THREAD_PRIO_INHERIT -1
+#define _POSIX_THREAD_PRIO_PROTECT -1
+# 172 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 2 3 4
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/environments.h" 1 3 4
+# 23 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/environments.h" 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/wordsize.h" 1 3 4
+# 19 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/wordsize.h" 3 4
+#define __WORDSIZE 32
+# 24 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/environments.h" 2 3 4
+# 61 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/environments.h" 3 4
+#define _POSIX_V6_ILP32_OFF32 1
+#define _POSIX_V6_ILP32_OFFBIG 1
+#define _XBS5_ILP32_OFF32 1
+#define _XBS5_ILP32_OFFBIG 1
+
+
+
+
+
+#define _POSIX_V6_LP64_OFF64 -1
+#define _POSIX_V6_LPBIG_OFFBIG -1
+#define _XBS5_LP64_OFF64 -1
+#define _XBS5_LPBIG_OFFBIG -1
+
+
+#define __ILP32_OFFBIG_CFLAGS "-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+# 176 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 2 3 4
+
+
+
+#define STDIN_FILENO 0
+#define STDOUT_FILENO 1
+#define STDERR_FILENO 2
+
+
+
+
+
+
+
+typedef __ssize_t ssize_t;
+#define __ssize_t_defined
+
+
+#define __need_size_t
+#define __need_NULL
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 163 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 236 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 398 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 409 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 196 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 2 3 4
+
+
+
+
+
+typedef __gid_t gid_t;
+#define __gid_t_defined
+
+
+
+typedef __uid_t uid_t;
+#define __uid_t_defined
+
+
+
+
+typedef __off_t off_t;
+
+
+
+#define __off_t_defined
+
+
+typedef __off64_t off64_t;
+#define __off64_t_defined
+
+
+
+typedef __useconds_t useconds_t;
+#define __useconds_t_defined
+# 243 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+typedef __socklen_t socklen_t;
+#define __socklen_t_defined
+
+
+
+
+
+#define R_OK 4
+#define W_OK 2
+#define X_OK 1
+#define F_OK 0
+
+
+extern int access (__const char *__name, int __type) throw () __attribute__ ((__nonnull__ (1)));
+# 287 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+#define L_SET SEEK_SET
+#define L_INCR SEEK_CUR
+#define L_XTND SEEK_END
+# 299 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern __off_t lseek (int __fd, __off_t __offset, int __whence) throw ();
+# 310 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
+ throw ();
+
+
+
+
+
+
+extern int close (int __fd);
+
+
+
+
+
+
+extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;
+
+
+
+
+
+extern ssize_t write (int __fd, __const void *__buf, size_t __n) ;
+# 341 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
+ __off_t __offset) ;
+
+
+
+
+
+
+extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
+ __off_t __offset) ;
+# 369 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
+ __off64_t __offset) ;
+
+
+extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
+ __off64_t __offset) ;
+
+
+
+
+
+
+
+extern int pipe (int __pipedes[2]) throw () ;
+# 391 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern unsigned int alarm (unsigned int __seconds) throw ();
+# 403 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern unsigned int sleep (unsigned int __seconds);
+
+
+
+
+
+
+extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
+ throw ();
+
+
+
+
+
+
+extern int usleep (__useconds_t __useconds);
+# 427 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int pause (void);
+
+
+
+extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw () ;
+
+
+
+
+extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+# 455 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int chdir (__const char *__path) throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+extern int fchdir (int __fd) throw () ;
+# 469 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern char *getcwd (char *__buf, size_t __size) throw () ;
+
+
+
+
+
+extern char *get_current_dir_name (void) throw ();
+# 488 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int dup (int __fd) throw () ;
+
+
+extern int dup2 (int __fd, int __fd2) throw ();
+
+
+extern char **__environ;
+
+extern char **environ;
+
+
+
+
+
+extern int execve (__const char *__path, char *__const __argv[],
+ char *__const __envp[]) throw () __attribute__ ((__nonnull__ (1)));
+# 514 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int execv (__const char *__path, char *__const __argv[])
+ throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int execle (__const char *__path, __const char *__arg, ...)
+ throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int execl (__const char *__path, __const char *__arg, ...)
+ throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int execvp (__const char *__file, char *__const __argv[])
+ throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int execlp (__const char *__file, __const char *__arg, ...)
+ throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int nice (int __inc) throw () ;
+
+
+
+
+extern void _exit (int __status) __attribute__ ((__noreturn__));
+
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/confname.h" 1 3 4
+# 26 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/confname.h" 3 4
+enum
+ {
+ _PC_LINK_MAX,
+#define _PC_LINK_MAX _PC_LINK_MAX
+ _PC_MAX_CANON,
+#define _PC_MAX_CANON _PC_MAX_CANON
+ _PC_MAX_INPUT,
+#define _PC_MAX_INPUT _PC_MAX_INPUT
+ _PC_NAME_MAX,
+#define _PC_NAME_MAX _PC_NAME_MAX
+ _PC_PATH_MAX,
+#define _PC_PATH_MAX _PC_PATH_MAX
+ _PC_PIPE_BUF,
+#define _PC_PIPE_BUF _PC_PIPE_BUF
+ _PC_CHOWN_RESTRICTED,
+#define _PC_CHOWN_RESTRICTED _PC_CHOWN_RESTRICTED
+ _PC_NO_TRUNC,
+#define _PC_NO_TRUNC _PC_NO_TRUNC
+ _PC_VDISABLE,
+#define _PC_VDISABLE _PC_VDISABLE
+ _PC_SYNC_IO,
+#define _PC_SYNC_IO _PC_SYNC_IO
+ _PC_ASYNC_IO,
+#define _PC_ASYNC_IO _PC_ASYNC_IO
+ _PC_PRIO_IO,
+#define _PC_PRIO_IO _PC_PRIO_IO
+ _PC_SOCK_MAXBUF,
+#define _PC_SOCK_MAXBUF _PC_SOCK_MAXBUF
+ _PC_FILESIZEBITS,
+#define _PC_FILESIZEBITS _PC_FILESIZEBITS
+ _PC_REC_INCR_XFER_SIZE,
+#define _PC_REC_INCR_XFER_SIZE _PC_REC_INCR_XFER_SIZE
+ _PC_REC_MAX_XFER_SIZE,
+#define _PC_REC_MAX_XFER_SIZE _PC_REC_MAX_XFER_SIZE
+ _PC_REC_MIN_XFER_SIZE,
+#define _PC_REC_MIN_XFER_SIZE _PC_REC_MIN_XFER_SIZE
+ _PC_REC_XFER_ALIGN,
+#define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN
+ _PC_ALLOC_SIZE_MIN,
+#define _PC_ALLOC_SIZE_MIN _PC_ALLOC_SIZE_MIN
+ _PC_SYMLINK_MAX,
+#define _PC_SYMLINK_MAX _PC_SYMLINK_MAX
+ _PC_2_SYMLINKS
+#define _PC_2_SYMLINKS _PC_2_SYMLINKS
+ };
+
+
+enum
+ {
+ _SC_ARG_MAX,
+#define _SC_ARG_MAX _SC_ARG_MAX
+ _SC_CHILD_MAX,
+#define _SC_CHILD_MAX _SC_CHILD_MAX
+ _SC_CLK_TCK,
+#define _SC_CLK_TCK _SC_CLK_TCK
+ _SC_NGROUPS_MAX,
+#define _SC_NGROUPS_MAX _SC_NGROUPS_MAX
+ _SC_OPEN_MAX,
+#define _SC_OPEN_MAX _SC_OPEN_MAX
+ _SC_STREAM_MAX,
+#define _SC_STREAM_MAX _SC_STREAM_MAX
+ _SC_TZNAME_MAX,
+#define _SC_TZNAME_MAX _SC_TZNAME_MAX
+ _SC_JOB_CONTROL,
+#define _SC_JOB_CONTROL _SC_JOB_CONTROL
+ _SC_SAVED_IDS,
+#define _SC_SAVED_IDS _SC_SAVED_IDS
+ _SC_REALTIME_SIGNALS,
+#define _SC_REALTIME_SIGNALS _SC_REALTIME_SIGNALS
+ _SC_PRIORITY_SCHEDULING,
+#define _SC_PRIORITY_SCHEDULING _SC_PRIORITY_SCHEDULING
+ _SC_TIMERS,
+#define _SC_TIMERS _SC_TIMERS
+ _SC_ASYNCHRONOUS_IO,
+#define _SC_ASYNCHRONOUS_IO _SC_ASYNCHRONOUS_IO
+ _SC_PRIORITIZED_IO,
+#define _SC_PRIORITIZED_IO _SC_PRIORITIZED_IO
+ _SC_SYNCHRONIZED_IO,
+#define _SC_SYNCHRONIZED_IO _SC_SYNCHRONIZED_IO
+ _SC_FSYNC,
+#define _SC_FSYNC _SC_FSYNC
+ _SC_MAPPED_FILES,
+#define _SC_MAPPED_FILES _SC_MAPPED_FILES
+ _SC_MEMLOCK,
+#define _SC_MEMLOCK _SC_MEMLOCK
+ _SC_MEMLOCK_RANGE,
+#define _SC_MEMLOCK_RANGE _SC_MEMLOCK_RANGE
+ _SC_MEMORY_PROTECTION,
+#define _SC_MEMORY_PROTECTION _SC_MEMORY_PROTECTION
+ _SC_MESSAGE_PASSING,
+#define _SC_MESSAGE_PASSING _SC_MESSAGE_PASSING
+ _SC_SEMAPHORES,
+#define _SC_SEMAPHORES _SC_SEMAPHORES
+ _SC_SHARED_MEMORY_OBJECTS,
+#define _SC_SHARED_MEMORY_OBJECTS _SC_SHARED_MEMORY_OBJECTS
+ _SC_AIO_LISTIO_MAX,
+#define _SC_AIO_LISTIO_MAX _SC_AIO_LISTIO_MAX
+ _SC_AIO_MAX,
+#define _SC_AIO_MAX _SC_AIO_MAX
+ _SC_AIO_PRIO_DELTA_MAX,
+#define _SC_AIO_PRIO_DELTA_MAX _SC_AIO_PRIO_DELTA_MAX
+ _SC_DELAYTIMER_MAX,
+#define _SC_DELAYTIMER_MAX _SC_DELAYTIMER_MAX
+ _SC_MQ_OPEN_MAX,
+#define _SC_MQ_OPEN_MAX _SC_MQ_OPEN_MAX
+ _SC_MQ_PRIO_MAX,
+#define _SC_MQ_PRIO_MAX _SC_MQ_PRIO_MAX
+ _SC_VERSION,
+#define _SC_VERSION _SC_VERSION
+ _SC_PAGESIZE,
+#define _SC_PAGESIZE _SC_PAGESIZE
+#define _SC_PAGE_SIZE _SC_PAGESIZE
+ _SC_RTSIG_MAX,
+#define _SC_RTSIG_MAX _SC_RTSIG_MAX
+ _SC_SEM_NSEMS_MAX,
+#define _SC_SEM_NSEMS_MAX _SC_SEM_NSEMS_MAX
+ _SC_SEM_VALUE_MAX,
+#define _SC_SEM_VALUE_MAX _SC_SEM_VALUE_MAX
+ _SC_SIGQUEUE_MAX,
+#define _SC_SIGQUEUE_MAX _SC_SIGQUEUE_MAX
+ _SC_TIMER_MAX,
+#define _SC_TIMER_MAX _SC_TIMER_MAX
+
+
+
+ _SC_BC_BASE_MAX,
+#define _SC_BC_BASE_MAX _SC_BC_BASE_MAX
+ _SC_BC_DIM_MAX,
+#define _SC_BC_DIM_MAX _SC_BC_DIM_MAX
+ _SC_BC_SCALE_MAX,
+#define _SC_BC_SCALE_MAX _SC_BC_SCALE_MAX
+ _SC_BC_STRING_MAX,
+#define _SC_BC_STRING_MAX _SC_BC_STRING_MAX
+ _SC_COLL_WEIGHTS_MAX,
+#define _SC_COLL_WEIGHTS_MAX _SC_COLL_WEIGHTS_MAX
+ _SC_EQUIV_CLASS_MAX,
+#define _SC_EQUIV_CLASS_MAX _SC_EQUIV_CLASS_MAX
+ _SC_EXPR_NEST_MAX,
+#define _SC_EXPR_NEST_MAX _SC_EXPR_NEST_MAX
+ _SC_LINE_MAX,
+#define _SC_LINE_MAX _SC_LINE_MAX
+ _SC_RE_DUP_MAX,
+#define _SC_RE_DUP_MAX _SC_RE_DUP_MAX
+ _SC_CHARCLASS_NAME_MAX,
+#define _SC_CHARCLASS_NAME_MAX _SC_CHARCLASS_NAME_MAX
+
+ _SC_2_VERSION,
+#define _SC_2_VERSION _SC_2_VERSION
+ _SC_2_C_BIND,
+#define _SC_2_C_BIND _SC_2_C_BIND
+ _SC_2_C_DEV,
+#define _SC_2_C_DEV _SC_2_C_DEV
+ _SC_2_FORT_DEV,
+#define _SC_2_FORT_DEV _SC_2_FORT_DEV
+ _SC_2_FORT_RUN,
+#define _SC_2_FORT_RUN _SC_2_FORT_RUN
+ _SC_2_SW_DEV,
+#define _SC_2_SW_DEV _SC_2_SW_DEV
+ _SC_2_LOCALEDEF,
+#define _SC_2_LOCALEDEF _SC_2_LOCALEDEF
+
+ _SC_PII,
+#define _SC_PII _SC_PII
+ _SC_PII_XTI,
+#define _SC_PII_XTI _SC_PII_XTI
+ _SC_PII_SOCKET,
+#define _SC_PII_SOCKET _SC_PII_SOCKET
+ _SC_PII_INTERNET,
+#define _SC_PII_INTERNET _SC_PII_INTERNET
+ _SC_PII_OSI,
+#define _SC_PII_OSI _SC_PII_OSI
+ _SC_POLL,
+#define _SC_POLL _SC_POLL
+ _SC_SELECT,
+#define _SC_SELECT _SC_SELECT
+ _SC_UIO_MAXIOV,
+#define _SC_UIO_MAXIOV _SC_UIO_MAXIOV
+ _SC_IOV_MAX = _SC_UIO_MAXIOV,
+#define _SC_IOV_MAX _SC_IOV_MAX
+ _SC_PII_INTERNET_STREAM,
+#define _SC_PII_INTERNET_STREAM _SC_PII_INTERNET_STREAM
+ _SC_PII_INTERNET_DGRAM,
+#define _SC_PII_INTERNET_DGRAM _SC_PII_INTERNET_DGRAM
+ _SC_PII_OSI_COTS,
+#define _SC_PII_OSI_COTS _SC_PII_OSI_COTS
+ _SC_PII_OSI_CLTS,
+#define _SC_PII_OSI_CLTS _SC_PII_OSI_CLTS
+ _SC_PII_OSI_M,
+#define _SC_PII_OSI_M _SC_PII_OSI_M
+ _SC_T_IOV_MAX,
+#define _SC_T_IOV_MAX _SC_T_IOV_MAX
+
+
+ _SC_THREADS,
+#define _SC_THREADS _SC_THREADS
+ _SC_THREAD_SAFE_FUNCTIONS,
+#define _SC_THREAD_SAFE_FUNCTIONS _SC_THREAD_SAFE_FUNCTIONS
+ _SC_GETGR_R_SIZE_MAX,
+#define _SC_GETGR_R_SIZE_MAX _SC_GETGR_R_SIZE_MAX
+ _SC_GETPW_R_SIZE_MAX,
+#define _SC_GETPW_R_SIZE_MAX _SC_GETPW_R_SIZE_MAX
+ _SC_LOGIN_NAME_MAX,
+#define _SC_LOGIN_NAME_MAX _SC_LOGIN_NAME_MAX
+ _SC_TTY_NAME_MAX,
+#define _SC_TTY_NAME_MAX _SC_TTY_NAME_MAX
+ _SC_THREAD_DESTRUCTOR_ITERATIONS,
+#define _SC_THREAD_DESTRUCTOR_ITERATIONS _SC_THREAD_DESTRUCTOR_ITERATIONS
+ _SC_THREAD_KEYS_MAX,
+#define _SC_THREAD_KEYS_MAX _SC_THREAD_KEYS_MAX
+ _SC_THREAD_STACK_MIN,
+#define _SC_THREAD_STACK_MIN _SC_THREAD_STACK_MIN
+ _SC_THREAD_THREADS_MAX,
+#define _SC_THREAD_THREADS_MAX _SC_THREAD_THREADS_MAX
+ _SC_THREAD_ATTR_STACKADDR,
+#define _SC_THREAD_ATTR_STACKADDR _SC_THREAD_ATTR_STACKADDR
+ _SC_THREAD_ATTR_STACKSIZE,
+#define _SC_THREAD_ATTR_STACKSIZE _SC_THREAD_ATTR_STACKSIZE
+ _SC_THREAD_PRIORITY_SCHEDULING,
+#define _SC_THREAD_PRIORITY_SCHEDULING _SC_THREAD_PRIORITY_SCHEDULING
+ _SC_THREAD_PRIO_INHERIT,
+#define _SC_THREAD_PRIO_INHERIT _SC_THREAD_PRIO_INHERIT
+ _SC_THREAD_PRIO_PROTECT,
+#define _SC_THREAD_PRIO_PROTECT _SC_THREAD_PRIO_PROTECT
+ _SC_THREAD_PROCESS_SHARED,
+#define _SC_THREAD_PROCESS_SHARED _SC_THREAD_PROCESS_SHARED
+
+ _SC_NPROCESSORS_CONF,
+#define _SC_NPROCESSORS_CONF _SC_NPROCESSORS_CONF
+ _SC_NPROCESSORS_ONLN,
+#define _SC_NPROCESSORS_ONLN _SC_NPROCESSORS_ONLN
+ _SC_PHYS_PAGES,
+#define _SC_PHYS_PAGES _SC_PHYS_PAGES
+ _SC_AVPHYS_PAGES,
+#define _SC_AVPHYS_PAGES _SC_AVPHYS_PAGES
+ _SC_ATEXIT_MAX,
+#define _SC_ATEXIT_MAX _SC_ATEXIT_MAX
+ _SC_PASS_MAX,
+#define _SC_PASS_MAX _SC_PASS_MAX
+
+ _SC_XOPEN_VERSION,
+#define _SC_XOPEN_VERSION _SC_XOPEN_VERSION
+ _SC_XOPEN_XCU_VERSION,
+#define _SC_XOPEN_XCU_VERSION _SC_XOPEN_XCU_VERSION
+ _SC_XOPEN_UNIX,
+#define _SC_XOPEN_UNIX _SC_XOPEN_UNIX
+ _SC_XOPEN_CRYPT,
+#define _SC_XOPEN_CRYPT _SC_XOPEN_CRYPT
+ _SC_XOPEN_ENH_I18N,
+#define _SC_XOPEN_ENH_I18N _SC_XOPEN_ENH_I18N
+ _SC_XOPEN_SHM,
+#define _SC_XOPEN_SHM _SC_XOPEN_SHM
+
+ _SC_2_CHAR_TERM,
+#define _SC_2_CHAR_TERM _SC_2_CHAR_TERM
+ _SC_2_C_VERSION,
+#define _SC_2_C_VERSION _SC_2_C_VERSION
+ _SC_2_UPE,
+#define _SC_2_UPE _SC_2_UPE
+
+ _SC_XOPEN_XPG2,
+#define _SC_XOPEN_XPG2 _SC_XOPEN_XPG2
+ _SC_XOPEN_XPG3,
+#define _SC_XOPEN_XPG3 _SC_XOPEN_XPG3
+ _SC_XOPEN_XPG4,
+#define _SC_XOPEN_XPG4 _SC_XOPEN_XPG4
+
+ _SC_CHAR_BIT,
+#define _SC_CHAR_BIT _SC_CHAR_BIT
+ _SC_CHAR_MAX,
+#define _SC_CHAR_MAX _SC_CHAR_MAX
+ _SC_CHAR_MIN,
+#define _SC_CHAR_MIN _SC_CHAR_MIN
+ _SC_INT_MAX,
+#define _SC_INT_MAX _SC_INT_MAX
+ _SC_INT_MIN,
+#define _SC_INT_MIN _SC_INT_MIN
+ _SC_LONG_BIT,
+#define _SC_LONG_BIT _SC_LONG_BIT
+ _SC_WORD_BIT,
+#define _SC_WORD_BIT _SC_WORD_BIT
+ _SC_MB_LEN_MAX,
+#define _SC_MB_LEN_MAX _SC_MB_LEN_MAX
+ _SC_NZERO,
+#define _SC_NZERO _SC_NZERO
+ _SC_SSIZE_MAX,
+#define _SC_SSIZE_MAX _SC_SSIZE_MAX
+ _SC_SCHAR_MAX,
+#define _SC_SCHAR_MAX _SC_SCHAR_MAX
+ _SC_SCHAR_MIN,
+#define _SC_SCHAR_MIN _SC_SCHAR_MIN
+ _SC_SHRT_MAX,
+#define _SC_SHRT_MAX _SC_SHRT_MAX
+ _SC_SHRT_MIN,
+#define _SC_SHRT_MIN _SC_SHRT_MIN
+ _SC_UCHAR_MAX,
+#define _SC_UCHAR_MAX _SC_UCHAR_MAX
+ _SC_UINT_MAX,
+#define _SC_UINT_MAX _SC_UINT_MAX
+ _SC_ULONG_MAX,
+#define _SC_ULONG_MAX _SC_ULONG_MAX
+ _SC_USHRT_MAX,
+#define _SC_USHRT_MAX _SC_USHRT_MAX
+
+ _SC_NL_ARGMAX,
+#define _SC_NL_ARGMAX _SC_NL_ARGMAX
+ _SC_NL_LANGMAX,
+#define _SC_NL_LANGMAX _SC_NL_LANGMAX
+ _SC_NL_MSGMAX,
+#define _SC_NL_MSGMAX _SC_NL_MSGMAX
+ _SC_NL_NMAX,
+#define _SC_NL_NMAX _SC_NL_NMAX
+ _SC_NL_SETMAX,
+#define _SC_NL_SETMAX _SC_NL_SETMAX
+ _SC_NL_TEXTMAX,
+#define _SC_NL_TEXTMAX _SC_NL_TEXTMAX
+
+ _SC_XBS5_ILP32_OFF32,
+#define _SC_XBS5_ILP32_OFF32 _SC_XBS5_ILP32_OFF32
+ _SC_XBS5_ILP32_OFFBIG,
+#define _SC_XBS5_ILP32_OFFBIG _SC_XBS5_ILP32_OFFBIG
+ _SC_XBS5_LP64_OFF64,
+#define _SC_XBS5_LP64_OFF64 _SC_XBS5_LP64_OFF64
+ _SC_XBS5_LPBIG_OFFBIG,
+#define _SC_XBS5_LPBIG_OFFBIG _SC_XBS5_LPBIG_OFFBIG
+
+ _SC_XOPEN_LEGACY,
+#define _SC_XOPEN_LEGACY _SC_XOPEN_LEGACY
+ _SC_XOPEN_REALTIME,
+#define _SC_XOPEN_REALTIME _SC_XOPEN_REALTIME
+ _SC_XOPEN_REALTIME_THREADS,
+#define _SC_XOPEN_REALTIME_THREADS _SC_XOPEN_REALTIME_THREADS
+
+ _SC_ADVISORY_INFO,
+#define _SC_ADVISORY_INFO _SC_ADVISORY_INFO
+ _SC_BARRIERS,
+#define _SC_BARRIERS _SC_BARRIERS
+ _SC_BASE,
+#define _SC_BASE _SC_BASE
+ _SC_C_LANG_SUPPORT,
+#define _SC_C_LANG_SUPPORT _SC_C_LANG_SUPPORT
+ _SC_C_LANG_SUPPORT_R,
+#define _SC_C_LANG_SUPPORT_R _SC_C_LANG_SUPPORT_R
+ _SC_CLOCK_SELECTION,
+#define _SC_CLOCK_SELECTION _SC_CLOCK_SELECTION
+ _SC_CPUTIME,
+#define _SC_CPUTIME _SC_CPUTIME
+ _SC_THREAD_CPUTIME,
+#define _SC_THREAD_CPUTIME _SC_THREAD_CPUTIME
+ _SC_DEVICE_IO,
+#define _SC_DEVICE_IO _SC_DEVICE_IO
+ _SC_DEVICE_SPECIFIC,
+#define _SC_DEVICE_SPECIFIC _SC_DEVICE_SPECIFIC
+ _SC_DEVICE_SPECIFIC_R,
+#define _SC_DEVICE_SPECIFIC_R _SC_DEVICE_SPECIFIC_R
+ _SC_FD_MGMT,
+#define _SC_FD_MGMT _SC_FD_MGMT
+ _SC_FIFO,
+#define _SC_FIFO _SC_FIFO
+ _SC_PIPE,
+#define _SC_PIPE _SC_PIPE
+ _SC_FILE_ATTRIBUTES,
+#define _SC_FILE_ATTRIBUTES _SC_FILE_ATTRIBUTES
+ _SC_FILE_LOCKING,
+#define _SC_FILE_LOCKING _SC_FILE_LOCKING
+ _SC_FILE_SYSTEM,
+#define _SC_FILE_SYSTEM _SC_FILE_SYSTEM
+ _SC_MONOTONIC_CLOCK,
+#define _SC_MONOTONIC_CLOCK _SC_MONOTONIC_CLOCK
+ _SC_MULTI_PROCESS,
+#define _SC_MULTI_PROCESS _SC_MULTI_PROCESS
+ _SC_SINGLE_PROCESS,
+#define _SC_SINGLE_PROCESS _SC_SINGLE_PROCESS
+ _SC_NETWORKING,
+#define _SC_NETWORKING _SC_NETWORKING
+ _SC_READER_WRITER_LOCKS,
+#define _SC_READER_WRITER_LOCKS _SC_READER_WRITER_LOCKS
+ _SC_SPIN_LOCKS,
+#define _SC_SPIN_LOCKS _SC_SPIN_LOCKS
+ _SC_REGEXP,
+#define _SC_REGEXP _SC_REGEXP
+ _SC_REGEX_VERSION,
+#define _SC_REGEX_VERSION _SC_REGEX_VERSION
+ _SC_SHELL,
+#define _SC_SHELL _SC_SHELL
+ _SC_SIGNALS,
+#define _SC_SIGNALS _SC_SIGNALS
+ _SC_SPAWN,
+#define _SC_SPAWN _SC_SPAWN
+ _SC_SPORADIC_SERVER,
+#define _SC_SPORADIC_SERVER _SC_SPORADIC_SERVER
+ _SC_THREAD_SPORADIC_SERVER,
+#define _SC_THREAD_SPORADIC_SERVER _SC_THREAD_SPORADIC_SERVER
+ _SC_SYSTEM_DATABASE,
+#define _SC_SYSTEM_DATABASE _SC_SYSTEM_DATABASE
+ _SC_SYSTEM_DATABASE_R,
+#define _SC_SYSTEM_DATABASE_R _SC_SYSTEM_DATABASE_R
+ _SC_TIMEOUTS,
+#define _SC_TIMEOUTS _SC_TIMEOUTS
+ _SC_TYPED_MEMORY_OBJECTS,
+#define _SC_TYPED_MEMORY_OBJECTS _SC_TYPED_MEMORY_OBJECTS
+ _SC_USER_GROUPS,
+#define _SC_USER_GROUPS _SC_USER_GROUPS
+ _SC_USER_GROUPS_R,
+#define _SC_USER_GROUPS_R _SC_USER_GROUPS_R
+ _SC_2_PBS,
+#define _SC_2_PBS _SC_2_PBS
+ _SC_2_PBS_ACCOUNTING,
+#define _SC_2_PBS_ACCOUNTING _SC_2_PBS_ACCOUNTING
+ _SC_2_PBS_LOCATE,
+#define _SC_2_PBS_LOCATE _SC_2_PBS_LOCATE
+ _SC_2_PBS_MESSAGE,
+#define _SC_2_PBS_MESSAGE _SC_2_PBS_MESSAGE
+ _SC_2_PBS_TRACK,
+#define _SC_2_PBS_TRACK _SC_2_PBS_TRACK
+ _SC_SYMLOOP_MAX,
+#define _SC_SYMLOOP_MAX _SC_SYMLOOP_MAX
+ _SC_STREAMS,
+#define _SC_STREAMS _SC_STREAMS
+ _SC_2_PBS_CHECKPOINT,
+#define _SC_2_PBS_CHECKPOINT _SC_2_PBS_CHECKPOINT
+
+ _SC_V6_ILP32_OFF32,
+#define _SC_V6_ILP32_OFF32 _SC_V6_ILP32_OFF32
+ _SC_V6_ILP32_OFFBIG,
+#define _SC_V6_ILP32_OFFBIG _SC_V6_ILP32_OFFBIG
+ _SC_V6_LP64_OFF64,
+#define _SC_V6_LP64_OFF64 _SC_V6_LP64_OFF64
+ _SC_V6_LPBIG_OFFBIG,
+#define _SC_V6_LPBIG_OFFBIG _SC_V6_LPBIG_OFFBIG
+
+ _SC_HOST_NAME_MAX,
+#define _SC_HOST_NAME_MAX _SC_HOST_NAME_MAX
+ _SC_TRACE,
+#define _SC_TRACE _SC_TRACE
+ _SC_TRACE_EVENT_FILTER,
+#define _SC_TRACE_EVENT_FILTER _SC_TRACE_EVENT_FILTER
+ _SC_TRACE_INHERIT,
+#define _SC_TRACE_INHERIT _SC_TRACE_INHERIT
+ _SC_TRACE_LOG,
+#define _SC_TRACE_LOG _SC_TRACE_LOG
+
+ _SC_LEVEL1_ICACHE_SIZE,
+#define _SC_LEVEL1_ICACHE_SIZE _SC_LEVEL1_ICACHE_SIZE
+ _SC_LEVEL1_ICACHE_ASSOC,
+#define _SC_LEVEL1_ICACHE_ASSOC _SC_LEVEL1_ICACHE_ASSOC
+ _SC_LEVEL1_ICACHE_LINESIZE,
+#define _SC_LEVEL1_ICACHE_LINESIZE _SC_LEVEL1_ICACHE_LINESIZE
+ _SC_LEVEL1_DCACHE_SIZE,
+#define _SC_LEVEL1_DCACHE_SIZE _SC_LEVEL1_DCACHE_SIZE
+ _SC_LEVEL1_DCACHE_ASSOC,
+#define _SC_LEVEL1_DCACHE_ASSOC _SC_LEVEL1_DCACHE_ASSOC
+ _SC_LEVEL1_DCACHE_LINESIZE,
+#define _SC_LEVEL1_DCACHE_LINESIZE _SC_LEVEL1_DCACHE_LINESIZE
+ _SC_LEVEL2_CACHE_SIZE,
+#define _SC_LEVEL2_CACHE_SIZE _SC_LEVEL2_CACHE_SIZE
+ _SC_LEVEL2_CACHE_ASSOC,
+#define _SC_LEVEL2_CACHE_ASSOC _SC_LEVEL2_CACHE_ASSOC
+ _SC_LEVEL2_CACHE_LINESIZE,
+#define _SC_LEVEL2_CACHE_LINESIZE _SC_LEVEL2_CACHE_LINESIZE
+ _SC_LEVEL3_CACHE_SIZE,
+#define _SC_LEVEL3_CACHE_SIZE _SC_LEVEL3_CACHE_SIZE
+ _SC_LEVEL3_CACHE_ASSOC,
+#define _SC_LEVEL3_CACHE_ASSOC _SC_LEVEL3_CACHE_ASSOC
+ _SC_LEVEL3_CACHE_LINESIZE,
+#define _SC_LEVEL3_CACHE_LINESIZE _SC_LEVEL3_CACHE_LINESIZE
+ _SC_LEVEL4_CACHE_SIZE,
+#define _SC_LEVEL4_CACHE_SIZE _SC_LEVEL4_CACHE_SIZE
+ _SC_LEVEL4_CACHE_ASSOC,
+#define _SC_LEVEL4_CACHE_ASSOC _SC_LEVEL4_CACHE_ASSOC
+ _SC_LEVEL4_CACHE_LINESIZE,
+#define _SC_LEVEL4_CACHE_LINESIZE _SC_LEVEL4_CACHE_LINESIZE
+
+
+ _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
+#define _SC_IPV6 _SC_IPV6
+ _SC_RAW_SOCKETS
+#define _SC_RAW_SOCKETS _SC_RAW_SOCKETS
+ };
+
+
+
+
+
+enum
+ {
+ _CS_PATH,
+#define _CS_PATH _CS_PATH
+
+ _CS_V6_WIDTH_RESTRICTED_ENVS,
+#define _CS_V6_WIDTH_RESTRICTED_ENVS _CS_V6_WIDTH_RESTRICTED_ENVS
+
+
+
+ _CS_LFS_CFLAGS = 1000,
+#define _CS_LFS_CFLAGS _CS_LFS_CFLAGS
+ _CS_LFS_LDFLAGS,
+#define _CS_LFS_LDFLAGS _CS_LFS_LDFLAGS
+ _CS_LFS_LIBS,
+#define _CS_LFS_LIBS _CS_LFS_LIBS
+ _CS_LFS_LINTFLAGS,
+#define _CS_LFS_LINTFLAGS _CS_LFS_LINTFLAGS
+ _CS_LFS64_CFLAGS,
+#define _CS_LFS64_CFLAGS _CS_LFS64_CFLAGS
+ _CS_LFS64_LDFLAGS,
+#define _CS_LFS64_LDFLAGS _CS_LFS64_LDFLAGS
+ _CS_LFS64_LIBS,
+#define _CS_LFS64_LIBS _CS_LFS64_LIBS
+ _CS_LFS64_LINTFLAGS,
+#define _CS_LFS64_LINTFLAGS _CS_LFS64_LINTFLAGS
+
+
+
+ _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
+#define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_XBS5_ILP32_OFF32_CFLAGS
+ _CS_XBS5_ILP32_OFF32_LDFLAGS,
+#define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_XBS5_ILP32_OFF32_LDFLAGS
+ _CS_XBS5_ILP32_OFF32_LIBS,
+#define _CS_XBS5_ILP32_OFF32_LIBS _CS_XBS5_ILP32_OFF32_LIBS
+ _CS_XBS5_ILP32_OFF32_LINTFLAGS,
+#define _CS_XBS5_ILP32_OFF32_LINTFLAGS _CS_XBS5_ILP32_OFF32_LINTFLAGS
+ _CS_XBS5_ILP32_OFFBIG_CFLAGS,
+#define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_XBS5_ILP32_OFFBIG_CFLAGS
+ _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
+#define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_XBS5_ILP32_OFFBIG_LDFLAGS
+ _CS_XBS5_ILP32_OFFBIG_LIBS,
+#define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_XBS5_ILP32_OFFBIG_LIBS
+ _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
+#define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS _CS_XBS5_ILP32_OFFBIG_LINTFLAGS
+ _CS_XBS5_LP64_OFF64_CFLAGS,
+#define _CS_XBS5_LP64_OFF64_CFLAGS _CS_XBS5_LP64_OFF64_CFLAGS
+ _CS_XBS5_LP64_OFF64_LDFLAGS,
+#define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_XBS5_LP64_OFF64_LDFLAGS
+ _CS_XBS5_LP64_OFF64_LIBS,
+#define _CS_XBS5_LP64_OFF64_LIBS _CS_XBS5_LP64_OFF64_LIBS
+ _CS_XBS5_LP64_OFF64_LINTFLAGS,
+#define _CS_XBS5_LP64_OFF64_LINTFLAGS _CS_XBS5_LP64_OFF64_LINTFLAGS
+ _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
+#define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_XBS5_LPBIG_OFFBIG_CFLAGS
+ _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
+#define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_XBS5_LPBIG_OFFBIG_LDFLAGS
+ _CS_XBS5_LPBIG_OFFBIG_LIBS,
+#define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_XBS5_LPBIG_OFFBIG_LIBS
+ _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
+#define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS
+
+
+ _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
+#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V6_ILP32_OFF32_CFLAGS
+ _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
+#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V6_ILP32_OFF32_LDFLAGS
+ _CS_POSIX_V6_ILP32_OFF32_LIBS,
+#define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V6_ILP32_OFF32_LIBS
+ _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
+#define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS
+ _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
+#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS
+ _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
+#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS
+ _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
+#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V6_ILP32_OFFBIG_LIBS
+ _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
+#define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS
+ _CS_POSIX_V6_LP64_OFF64_CFLAGS,
+#define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V6_LP64_OFF64_CFLAGS
+ _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
+#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V6_LP64_OFF64_LDFLAGS
+ _CS_POSIX_V6_LP64_OFF64_LIBS,
+#define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V6_LP64_OFF64_LIBS
+ _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
+#define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS _CS_POSIX_V6_LP64_OFF64_LINTFLAGS
+ _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
+#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS
+ _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS
+ _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V6_LPBIG_OFFBIG_LIBS
+ _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
+
+ };
+# 553 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 2 3 4
+
+
+extern long int pathconf (__const char *__path, int __name)
+ throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern long int fpathconf (int __fd, int __name) throw ();
+
+
+extern long int sysconf (int __name) throw ();
+
+
+
+extern size_t confstr (int __name, char *__buf, size_t __len) throw ();
+
+
+
+
+extern __pid_t getpid (void) throw ();
+
+
+extern __pid_t getppid (void) throw ();
+
+
+
+
+extern __pid_t getpgrp (void) throw ();
+# 589 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern __pid_t __getpgid (__pid_t __pid) throw ();
+
+extern __pid_t getpgid (__pid_t __pid) throw ();
+
+
+
+
+
+
+extern int setpgid (__pid_t __pid, __pid_t __pgid) throw ();
+# 615 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int setpgrp (void) throw ();
+# 632 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern __pid_t setsid (void) throw ();
+
+
+
+extern __pid_t getsid (__pid_t __pid) throw ();
+
+
+
+extern __uid_t getuid (void) throw ();
+
+
+extern __uid_t geteuid (void) throw ();
+
+
+extern __gid_t getgid (void) throw ();
+
+
+extern __gid_t getegid (void) throw ();
+
+
+
+
+extern int getgroups (int __size, __gid_t __list[]) throw () ;
+# 665 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int setuid (__uid_t __uid) throw ();
+
+
+
+
+extern int setreuid (__uid_t __ruid, __uid_t __euid) throw ();
+
+
+
+
+extern int seteuid (__uid_t __uid) throw ();
+
+
+
+
+
+
+extern int setgid (__gid_t __gid) throw ();
+
+
+
+
+extern int setregid (__gid_t __rgid, __gid_t __egid) throw ();
+
+
+
+
+extern int setegid (__gid_t __gid) throw ();
+
+
+
+
+
+extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
+ throw ();
+
+
+
+extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
+ throw ();
+
+
+
+
+extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
+ throw ();
+
+
+
+
+extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
+ throw ();
+# 732 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern __pid_t vfork (void) throw ();
+
+
+
+
+
+extern char *ttyname (int __fd) throw ();
+
+
+
+extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
+ throw () __attribute__ ((__nonnull__ (2))) ;
+
+
+
+extern int isatty (int __fd) throw ();
+# 758 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int link (__const char *__from, __const char *__to)
+ throw () __attribute__ ((__nonnull__ (1, 2))) ;
+# 771 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int symlink (__const char *__from, __const char *__to)
+ throw () __attribute__ ((__nonnull__ (1, 2))) ;
+
+
+
+
+extern ssize_t readlink (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ throw () __attribute__ ((__nonnull__ (1, 2))) ;
+# 794 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int unlink (__const char *__name) throw () __attribute__ ((__nonnull__ (1)));
+# 803 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int rmdir (__const char *__path) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+extern __pid_t tcgetpgrp (int __fd) throw ();
+
+
+extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) throw ();
+
+
+
+
+
+
+extern char *getlogin (void);
+
+
+
+
+
+
+
+extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));
+# 838 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+#define __need_getopt
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/getopt.h" 1 3 4
+# 52 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/getopt.h" 3 4
+extern "C" {
+# 61 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/getopt.h" 3 4
+extern char *optarg;
+# 75 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/getopt.h" 3 4
+extern int optind;
+
+
+
+
+extern int opterr;
+
+
+
+extern int optopt;
+# 154 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/getopt.h" 3 4
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ throw ();
+# 175 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/getopt.h" 3 4
+}
+
+
+
+#undef __need_getopt
+# 841 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 2 3 4
+
+
+
+
+
+
+
+extern int gethostname (char *__name, size_t __len) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int sethostname (__const char *__name, size_t __len)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+extern int sethostid (long int __id) throw () ;
+
+
+
+
+
+extern int getdomainname (char *__name, size_t __len)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern int setdomainname (__const char *__name, size_t __len)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern int vhangup (void) throw ();
+# 896 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int acct (__const char *__name) throw ();
+
+
+
+extern char *getusershell (void) throw ();
+extern void endusershell (void) throw ();
+extern void setusershell (void) throw ();
+
+
+
+
+
+extern int daemon (int __nochdir, int __noclose) throw () ;
+
+
+
+
+
+
+extern int chroot (__const char *__path) throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1)));
+# 928 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int fsync (int __fd);
+
+
+
+
+
+
+extern long int gethostid (void);
+
+
+extern void sync (void) throw ();
+
+
+
+
+extern int getpagesize (void) throw () __attribute__ ((__const__));
+
+
+
+
+extern int getdtablesize (void) throw ();
+
+
+
+
+extern int truncate (__const char *__file, __off_t __length)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+# 965 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int truncate64 (__const char *__file, __off64_t __length)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+# 975 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int ftruncate (int __fd, __off_t __length) throw () ;
+# 985 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int ftruncate64 (int __fd, __off64_t __length) throw () ;
+# 995 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int brk (void *__addr) throw () ;
+
+
+
+
+
+extern void *sbrk (intptr_t __delta) throw ();
+# 1016 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern long int syscall (long int __sysno, ...) throw ();
+# 1033 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+#define F_ULOCK 0
+#define F_LOCK 1
+#define F_TLOCK 2
+#define F_TEST 3
+
+
+extern int lockf (int __fd, int __cmd, __off_t __len) ;
+# 1049 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int lockf64 (int __fd, int __cmd, __off64_t __len) ;
+# 1059 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+#define TEMP_FAILURE_RETRY(expression) (__extension__ ({ long int __result; do __result = (long int) (expression); while (__result == -1L && errno == EINTR); __result; }))
+# 1071 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern int fdatasync (int __fildes) throw ();
+# 1080 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+extern char *crypt (__const char *__key, __const char *__salt)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern void encrypt (char *__block, int __edflag) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+extern void swab (__const void *__restrict __from, void *__restrict __to,
+ ssize_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+
+extern char *ctermid (char *__s) throw ();
+# 1111 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/unistd.h" 3 4
+}
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/gthr-default.h" 2 3
+
+typedef pthread_key_t __gthread_key_t;
+typedef pthread_once_t __gthread_once_t;
+typedef pthread_mutex_t __gthread_mutex_t;
+typedef pthread_mutex_t __gthread_recursive_mutex_t;
+typedef pthread_cond_t __gthread_cond_t;
+
+
+
+#define __GTHREAD_HAS_COND 1
+
+#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
+#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT
+
+
+
+#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
+
+
+
+#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER
+
+
+
+#define __gthrw_pragma(pragma)
+
+#define __gthrw2(name,name2,type) static __typeof(type) name __attribute__ ((__weakref__(#name2))); __gthrw_pragma(weak type)
+
+
+#define __gthrw_(name) __gthrw_ ## name
+
+
+
+
+
+
+#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name)
+# 100 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/gthr-default.h" 3
+static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once")));
+static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific")));
+static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific")));
+static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create")));
+static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel")));
+static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock")));
+static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock")));
+static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock")));
+static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init")));
+static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast")));
+static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait")));
+
+
+static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create")));
+static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete")));
+static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init")));
+static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype")));
+static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy")));
+# 211 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/gthr-default.h" 3
+static inline int
+__gthread_active_p (void)
+{
+ static void *const __gthread_active_ptr
+ = __extension__ (void *) &__gthrw_pthread_cancel;
+ return __gthread_active_ptr != 0;
+}
+# 649 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/gthr-default.h" 3
+static inline int
+__gthread_once (__gthread_once_t *once, void (*func) (void))
+{
+ if (__gthread_active_p ())
+ return __gthrw_pthread_once (once, func);
+ else
+ return -1;
+}
+
+static inline int
+__gthread_key_create (__gthread_key_t *key, void (*dtor) (void *))
+{
+ return __gthrw_pthread_key_create (key, dtor);
+}
+
+static inline int
+__gthread_key_delete (__gthread_key_t key)
+{
+ return __gthrw_pthread_key_delete (key);
+}
+
+static inline void *
+__gthread_getspecific (__gthread_key_t key)
+{
+ return __gthrw_pthread_getspecific (key);
+}
+
+static inline int
+__gthread_setspecific (__gthread_key_t key, const void *ptr)
+{
+ return __gthrw_pthread_setspecific (key, ptr);
+}
+
+static inline int
+__gthread_mutex_lock (__gthread_mutex_t *mutex)
+{
+ if (__gthread_active_p ())
+ return __gthrw_pthread_mutex_lock (mutex);
+ else
+ return 0;
+}
+
+static inline int
+__gthread_mutex_trylock (__gthread_mutex_t *mutex)
+{
+ if (__gthread_active_p ())
+ return __gthrw_pthread_mutex_trylock (mutex);
+ else
+ return 0;
+}
+
+static inline int
+__gthread_mutex_unlock (__gthread_mutex_t *mutex)
+{
+ if (__gthread_active_p ())
+ return __gthrw_pthread_mutex_unlock (mutex);
+ else
+ return 0;
+}
+# 731 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/gthr-default.h" 3
+static inline int
+__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex)
+{
+ return __gthread_mutex_lock (mutex);
+}
+
+static inline int
+__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex)
+{
+ return __gthread_mutex_trylock (mutex);
+}
+
+static inline int
+__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex)
+{
+ return __gthread_mutex_unlock (mutex);
+}
+
+static inline int
+__gthread_cond_broadcast (__gthread_cond_t *cond)
+{
+ return __gthrw_pthread_cond_broadcast (cond);
+}
+
+static inline int
+__gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex)
+{
+ return __gthrw_pthread_cond_wait (cond, mutex);
+}
+
+static inline int
+__gthread_cond_wait_recursive (__gthread_cond_t *cond,
+ __gthread_recursive_mutex_t *mutex)
+{
+ return __gthread_cond_wait (cond, mutex);
+}
+# 133 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/gthr.h" 2 3
+
+
+
+
+
+
+
+#pragma GCC visibility pop
+# 40 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/atomicity.h" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/atomic_word.h" 1 3
+# 35 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/atomic_word.h" 3
+#define _GLIBCXX_ATOMIC_WORD_H 1
+
+typedef int _Atomic_word;
+# 41 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/atomicity.h" 2 3
+
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+
+
+
+
+
+
+ static inline _Atomic_word
+ __exchange_and_add(volatile _Atomic_word* __mem, int __val)
+ { return __sync_fetch_and_add(__mem, __val); }
+
+ static inline void
+ __atomic_add(volatile _Atomic_word* __mem, int __val)
+ { __sync_fetch_and_add(__mem, __val); }
+# 66 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/atomicity.h" 3
+ static inline _Atomic_word
+ __exchange_and_add_single(_Atomic_word* __mem, int __val)
+ {
+ _Atomic_word __result = *__mem;
+ *__mem += __val;
+ return __result;
+ }
+
+ static inline void
+ __atomic_add_single(_Atomic_word* __mem, int __val)
+ { *__mem += __val; }
+
+ static inline _Atomic_word
+ __attribute__ ((__unused__))
+ __exchange_and_add_dispatch(_Atomic_word* __mem, int __val)
+ {
+
+ if (__gthread_active_p())
+ return __exchange_and_add(__mem, __val);
+ else
+ return __exchange_and_add_single(__mem, __val);
+
+
+
+ }
+
+ static inline void
+ __attribute__ ((__unused__))
+ __atomic_add_dispatch(_Atomic_word* __mem, int __val)
+ {
+
+ if (__gthread_active_p())
+ __atomic_add(__mem, __val);
+ else
+ __atomic_add_single(__mem, __val);
+
+
+
+ }
+
+}
+
+
+
+
+
+#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory")
+
+
+#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory")
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 2 3
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 1 3
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+#define _LOCALE_CLASSES_H 1
+
+
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/string" 1 3
+# 41 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/string" 3
+#define _GLIBCXX_STRING 1
+
+
+# 44 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/string" 3
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/allocator.h" 1 3
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/allocator.h" 3
+#define _ALLOCATOR_H 1
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++allocator.h" 1 3
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++allocator.h" 3
+#define _GLIBCXX_CXX_ALLOCATOR_H 1
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/new_allocator.h" 1 3
+# 35 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/new_allocator.h" 3
+#define _NEW_ALLOCATOR_H 1
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/new" 1 3
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/new" 3
+#define _NEW
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 2 3
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/new" 2 3
+
+
+#pragma GCC visibility push(default)
+
+extern "C++" {
+
+namespace std
+{
+
+
+
+
+
+ class bad_alloc : public exception
+ {
+ public:
+ bad_alloc() throw() { }
+
+
+
+ virtual ~bad_alloc() throw();
+
+
+ virtual const char* what() const throw();
+ };
+
+ struct nothrow_t { };
+
+ extern const nothrow_t nothrow;
+
+
+
+ typedef void (*new_handler)();
+
+
+
+ new_handler set_new_handler(new_handler) throw();
+}
+# 95 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/new" 3
+void* operator new(std::size_t) throw (std::bad_alloc);
+void* operator new[](std::size_t) throw (std::bad_alloc);
+void operator delete(void*) throw();
+void operator delete[](void*) throw();
+void* operator new(std::size_t, const std::nothrow_t&) throw();
+void* operator new[](std::size_t, const std::nothrow_t&) throw();
+void operator delete(void*, const std::nothrow_t&) throw();
+void operator delete[](void*, const std::nothrow_t&) throw();
+
+
+inline void* operator new(std::size_t, void* __p) throw() { return __p; }
+inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
+
+
+inline void operator delete (void*, void*) throw() { }
+inline void operator delete[](void*, void*) throw() { }
+
+}
+
+#pragma GCC visibility pop
+# 38 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/new_allocator.h" 2 3
+
+
+
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+
+ using std::size_t;
+ using std::ptrdiff_t;
+# 53 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/new_allocator.h" 3
+ template<typename _Tp>
+ class new_allocator
+ {
+ public:
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Tp* pointer;
+ typedef const _Tp* const_pointer;
+ typedef _Tp& reference;
+ typedef const _Tp& const_reference;
+ typedef _Tp value_type;
+
+ template<typename _Tp1>
+ struct rebind
+ { typedef new_allocator<_Tp1> other; };
+
+ new_allocator() throw() { }
+
+ new_allocator(const new_allocator&) throw() { }
+
+ template<typename _Tp1>
+ new_allocator(const new_allocator<_Tp1>&) throw() { }
+
+ ~new_allocator() throw() { }
+
+ pointer
+ address(reference __x) const { return &__x; }
+
+ const_pointer
+ address(const_reference __x) const { return &__x; }
+
+
+
+ pointer
+ allocate(size_type __n, const void* = 0)
+ {
+ if (__builtin_expect(__n > this->max_size(), false))
+ std::__throw_bad_alloc();
+
+ return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
+ }
+
+
+ void
+ deallocate(pointer __p, size_type)
+ { ::operator delete(__p); }
+
+ size_type
+ max_size() const throw()
+ { return size_t(-1) / sizeof(_Tp); }
+
+
+
+ void
+ construct(pointer __p, const _Tp& __val)
+ { ::new((void *)__p) _Tp(__val); }
+# 117 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ext/new_allocator.h" 3
+ void
+ destroy(pointer __p) { __p->~_Tp(); }
+ };
+
+ template<typename _Tp>
+ inline bool
+ operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
+ { return true; }
+
+ template<typename _Tp>
+ inline bool
+ operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
+ { return false; }
+
+}
+# 40 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/c++allocator.h" 2 3
+#define __glibcxx_base_allocator __gnu_cxx::new_allocator
+# 54 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/allocator.h" 2 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _Tp>
+ class allocator;
+
+
+ template<>
+ class allocator<void>
+ {
+ public:
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef void* pointer;
+ typedef const void* const_pointer;
+ typedef void value_type;
+
+ template<typename _Tp1>
+ struct rebind
+ { typedef allocator<_Tp1> other; };
+ };
+
+
+
+
+
+
+
+ template<typename _Tp>
+ class allocator: public __gnu_cxx::new_allocator<_Tp>
+ {
+ public:
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Tp* pointer;
+ typedef const _Tp* const_pointer;
+ typedef _Tp& reference;
+ typedef const _Tp& const_reference;
+ typedef _Tp value_type;
+
+ template<typename _Tp1>
+ struct rebind
+ { typedef allocator<_Tp1> other; };
+
+ allocator() throw() { }
+
+ allocator(const allocator& __a) throw()
+ : __gnu_cxx::new_allocator<_Tp>(__a) { }
+
+ template<typename _Tp1>
+ allocator(const allocator<_Tp1>&) throw() { }
+
+ ~allocator() throw() { }
+
+
+ };
+
+ template<typename _T1, typename _T2>
+ inline bool
+ operator==(const allocator<_T1>&, const allocator<_T2>&)
+ { return true; }
+
+ template<typename _Tp>
+ inline bool
+ operator==(const allocator<_Tp>&, const allocator<_Tp>&)
+ { return true; }
+
+ template<typename _T1, typename _T2>
+ inline bool
+ operator!=(const allocator<_T1>&, const allocator<_T2>&)
+ { return false; }
+
+ template<typename _Tp>
+ inline bool
+ operator!=(const allocator<_Tp>&, const allocator<_Tp>&)
+ { return false; }
+
+
+
+
+
+ extern template class allocator<char>;
+ extern template class allocator<wchar_t>;
+
+
+
+#undef __glibcxx_base_allocator
+
+
+ template<typename _Alloc, bool = __is_empty(_Alloc)>
+ struct __alloc_swap
+ { static void _S_do_it(_Alloc&, _Alloc&) { } };
+
+ template<typename _Alloc>
+ struct __alloc_swap<_Alloc, false>
+ {
+ static void
+ _S_do_it(_Alloc& __one, _Alloc& __two)
+ {
+
+ if (__one != __two)
+ swap(__one, __two);
+ }
+ };
+
+
+ template<typename _Alloc, bool = __is_empty(_Alloc)>
+ struct __alloc_neq
+ {
+ static bool
+ _S_do_it(const _Alloc&, const _Alloc&)
+ { return false; }
+ };
+
+ template<typename _Alloc>
+ struct __alloc_neq<_Alloc, false>
+ {
+ static bool
+ _S_do_it(const _Alloc& __one, const _Alloc& __two)
+ { return __one != __two; }
+ };
+
+}
+# 49 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/string" 2 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ostream_insert.h" 1 3
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ostream_insert.h" 3
+#define _OSTREAM_INSERT_H 1
+
+
+# 39 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ostream_insert.h" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cxxabi-forced.h" 1 3
+# 32 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cxxabi-forced.h" 3
+#define _CXXABI_FORCED_H 1
+
+#pragma GCC visibility push(default)
+
+
+namespace __cxxabiv1
+{
+
+
+ class __forced_unwind
+ {
+ virtual ~__forced_unwind() throw();
+ virtual void __pure_dummy() = 0;
+ };
+}
+
+
+#pragma GCC visibility pop
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ostream_insert.h" 2 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _CharT, typename _Traits>
+ inline void
+ __ostream_write(basic_ostream<_CharT, _Traits>& __out,
+ const _CharT* __s, streamsize __n)
+ {
+ typedef basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const streamsize __put = __out.rdbuf()->sputn(__s, __n);
+ if (__put != __n)
+ __out.setstate(__ios_base::badbit);
+ }
+
+ template<typename _CharT, typename _Traits>
+ inline void
+ __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n)
+ {
+ typedef basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ const _CharT __c = __out.fill();
+ for (; __n > 0; --__n)
+ {
+ const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c);
+ if (_Traits::eq_int_type(__put, _Traits::eof()))
+ {
+ __out.setstate(__ios_base::badbit);
+ break;
+ }
+ }
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ __ostream_insert(basic_ostream<_CharT, _Traits>& __out,
+ const _CharT* __s, streamsize __n)
+ {
+ typedef basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+
+ typename __ostream_type::sentry __cerb(__out);
+ if (__cerb)
+ {
+ try
+ {
+ const streamsize __w = __out.width();
+ if (__w > __n)
+ {
+ const bool __left = ((__out.flags()
+ & __ios_base::adjustfield)
+ == __ios_base::left);
+ if (!__left)
+ __ostream_fill(__out, __w - __n);
+ if (__out.good())
+ __ostream_write(__out, __s, __n);
+ if (__left && __out.good())
+ __ostream_fill(__out, __w - __n);
+ }
+ else
+ __ostream_write(__out, __s, __n);
+ __out.width(0);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ __out._M_setstate(__ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { __out._M_setstate(__ios_base::badbit); }
+ }
+ return __out;
+ }
+
+
+
+
+
+ extern template ostream& __ostream_insert(ostream&, const char*, streamsize);
+
+
+
+
+
+
+
+}
+# 52 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/string" 2 3
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_function.h" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_function.h" 3
+#define _STL_FUNCTION_H 1
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 102 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_function.h" 3
+ template<typename _Arg, typename _Result>
+ struct unary_function
+ {
+ typedef _Arg argument_type;
+
+
+ typedef _Result result_type;
+ };
+
+
+
+
+ template<typename _Arg1, typename _Arg2, typename _Result>
+ struct binary_function
+ {
+ typedef _Arg1 first_argument_type;
+
+
+ typedef _Arg2 second_argument_type;
+ typedef _Result result_type;
+ };
+# 136 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_function.h" 3
+ template<typename _Tp>
+ struct plus : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x + __y; }
+ };
+
+
+ template<typename _Tp>
+ struct minus : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x - __y; }
+ };
+
+
+ template<typename _Tp>
+ struct multiplies : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x * __y; }
+ };
+
+
+ template<typename _Tp>
+ struct divides : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x / __y; }
+ };
+
+
+ template<typename _Tp>
+ struct modulus : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x % __y; }
+ };
+
+
+ template<typename _Tp>
+ struct negate : public unary_function<_Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x) const
+ { return -__x; }
+ };
+# 198 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_function.h" 3
+ template<typename _Tp>
+ struct equal_to : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x == __y; }
+ };
+
+
+ template<typename _Tp>
+ struct not_equal_to : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x != __y; }
+ };
+
+
+ template<typename _Tp>
+ struct greater : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x > __y; }
+ };
+
+
+ template<typename _Tp>
+ struct less : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x < __y; }
+ };
+
+
+ template<typename _Tp>
+ struct greater_equal : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x >= __y; }
+ };
+
+
+ template<typename _Tp>
+ struct less_equal : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x <= __y; }
+ };
+# 260 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_function.h" 3
+ template<typename _Tp>
+ struct logical_and : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x && __y; }
+ };
+
+
+ template<typename _Tp>
+ struct logical_or : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x || __y; }
+ };
+
+
+ template<typename _Tp>
+ struct logical_not : public unary_function<_Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x) const
+ { return !__x; }
+ };
+
+
+
+
+ template<typename _Tp>
+ struct bit_and : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x & __y; }
+ };
+
+ template<typename _Tp>
+ struct bit_or : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x | __y; }
+ };
+
+ template<typename _Tp>
+ struct bit_xor : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x ^ __y; }
+ };
+# 341 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_function.h" 3
+ template<typename _Predicate>
+ class unary_negate
+ : public unary_function<typename _Predicate::argument_type, bool>
+ {
+ protected:
+ _Predicate _M_pred;
+
+ public:
+ explicit
+ unary_negate(const _Predicate& __x) : _M_pred(__x) { }
+
+ bool
+ operator()(const typename _Predicate::argument_type& __x) const
+ { return !_M_pred(__x); }
+ };
+
+
+ template<typename _Predicate>
+ inline unary_negate<_Predicate>
+ not1(const _Predicate& __pred)
+ { return unary_negate<_Predicate>(__pred); }
+
+
+ template<typename _Predicate>
+ class binary_negate
+ : public binary_function<typename _Predicate::first_argument_type,
+ typename _Predicate::second_argument_type, bool>
+ {
+ protected:
+ _Predicate _M_pred;
+
+ public:
+ explicit
+ binary_negate(const _Predicate& __x) : _M_pred(__x) { }
+
+ bool
+ operator()(const typename _Predicate::first_argument_type& __x,
+ const typename _Predicate::second_argument_type& __y) const
+ { return !_M_pred(__x, __y); }
+ };
+
+
+ template<typename _Predicate>
+ inline binary_negate<_Predicate>
+ not2(const _Predicate& __pred)
+ { return binary_negate<_Predicate>(__pred); }
+# 410 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_function.h" 3
+ template<typename _Arg, typename _Result>
+ class pointer_to_unary_function : public unary_function<_Arg, _Result>
+ {
+ protected:
+ _Result (*_M_ptr)(_Arg);
+
+ public:
+ pointer_to_unary_function() { }
+
+ explicit
+ pointer_to_unary_function(_Result (*__x)(_Arg))
+ : _M_ptr(__x) { }
+
+ _Result
+ operator()(_Arg __x) const
+ { return _M_ptr(__x); }
+ };
+
+
+ template<typename _Arg, typename _Result>
+ inline pointer_to_unary_function<_Arg, _Result>
+ ptr_fun(_Result (*__x)(_Arg))
+ { return pointer_to_unary_function<_Arg, _Result>(__x); }
+
+
+ template<typename _Arg1, typename _Arg2, typename _Result>
+ class pointer_to_binary_function
+ : public binary_function<_Arg1, _Arg2, _Result>
+ {
+ protected:
+ _Result (*_M_ptr)(_Arg1, _Arg2);
+
+ public:
+ pointer_to_binary_function() { }
+
+ explicit
+ pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2))
+ : _M_ptr(__x) { }
+
+ _Result
+ operator()(_Arg1 __x, _Arg2 __y) const
+ { return _M_ptr(__x, __y); }
+ };
+
+
+ template<typename _Arg1, typename _Arg2, typename _Result>
+ inline pointer_to_binary_function<_Arg1, _Arg2, _Result>
+ ptr_fun(_Result (*__x)(_Arg1, _Arg2))
+ { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); }
+
+
+ template<typename _Tp>
+ struct _Identity : public unary_function<_Tp,_Tp>
+ {
+ _Tp&
+ operator()(_Tp& __x) const
+ { return __x; }
+
+ const _Tp&
+ operator()(const _Tp& __x) const
+ { return __x; }
+ };
+
+ template<typename _Pair>
+ struct _Select1st : public unary_function<_Pair,
+ typename _Pair::first_type>
+ {
+ typename _Pair::first_type&
+ operator()(_Pair& __x) const
+ { return __x.first; }
+
+ const typename _Pair::first_type&
+ operator()(const _Pair& __x) const
+ { return __x.first; }
+ };
+
+ template<typename _Pair>
+ struct _Select2nd : public unary_function<_Pair,
+ typename _Pair::second_type>
+ {
+ typename _Pair::second_type&
+ operator()(_Pair& __x) const
+ { return __x.second; }
+
+ const typename _Pair::second_type&
+ operator()(const _Pair& __x) const
+ { return __x.second; }
+ };
+# 515 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_function.h" 3
+ template<typename _Ret, typename _Tp>
+ class mem_fun_t : public unary_function<_Tp*, _Ret>
+ {
+ public:
+ explicit
+ mem_fun_t(_Ret (_Tp::*__pf)())
+ : _M_f(__pf) { }
+
+ _Ret
+ operator()(_Tp* __p) const
+ { return (__p->*_M_f)(); }
+
+ private:
+ _Ret (_Tp::*_M_f)();
+ };
+
+
+
+ template<typename _Ret, typename _Tp>
+ class const_mem_fun_t : public unary_function<const _Tp*, _Ret>
+ {
+ public:
+ explicit
+ const_mem_fun_t(_Ret (_Tp::*__pf)() const)
+ : _M_f(__pf) { }
+
+ _Ret
+ operator()(const _Tp* __p) const
+ { return (__p->*_M_f)(); }
+
+ private:
+ _Ret (_Tp::*_M_f)() const;
+ };
+
+
+
+ template<typename _Ret, typename _Tp>
+ class mem_fun_ref_t : public unary_function<_Tp, _Ret>
+ {
+ public:
+ explicit
+ mem_fun_ref_t(_Ret (_Tp::*__pf)())
+ : _M_f(__pf) { }
+
+ _Ret
+ operator()(_Tp& __r) const
+ { return (__r.*_M_f)(); }
+
+ private:
+ _Ret (_Tp::*_M_f)();
+ };
+
+
+
+ template<typename _Ret, typename _Tp>
+ class const_mem_fun_ref_t : public unary_function<_Tp, _Ret>
+ {
+ public:
+ explicit
+ const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const)
+ : _M_f(__pf) { }
+
+ _Ret
+ operator()(const _Tp& __r) const
+ { return (__r.*_M_f)(); }
+
+ private:
+ _Ret (_Tp::*_M_f)() const;
+ };
+
+
+
+ template<typename _Ret, typename _Tp, typename _Arg>
+ class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret>
+ {
+ public:
+ explicit
+ mem_fun1_t(_Ret (_Tp::*__pf)(_Arg))
+ : _M_f(__pf) { }
+
+ _Ret
+ operator()(_Tp* __p, _Arg __x) const
+ { return (__p->*_M_f)(__x); }
+
+ private:
+ _Ret (_Tp::*_M_f)(_Arg);
+ };
+
+
+
+ template<typename _Ret, typename _Tp, typename _Arg>
+ class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret>
+ {
+ public:
+ explicit
+ const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const)
+ : _M_f(__pf) { }
+
+ _Ret
+ operator()(const _Tp* __p, _Arg __x) const
+ { return (__p->*_M_f)(__x); }
+
+ private:
+ _Ret (_Tp::*_M_f)(_Arg) const;
+ };
+
+
+
+ template<typename _Ret, typename _Tp, typename _Arg>
+ class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
+ {
+ public:
+ explicit
+ mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg))
+ : _M_f(__pf) { }
+
+ _Ret
+ operator()(_Tp& __r, _Arg __x) const
+ { return (__r.*_M_f)(__x); }
+
+ private:
+ _Ret (_Tp::*_M_f)(_Arg);
+ };
+
+
+
+ template<typename _Ret, typename _Tp, typename _Arg>
+ class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
+ {
+ public:
+ explicit
+ const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const)
+ : _M_f(__pf) { }
+
+ _Ret
+ operator()(const _Tp& __r, _Arg __x) const
+ { return (__r.*_M_f)(__x); }
+
+ private:
+ _Ret (_Tp::*_M_f)(_Arg) const;
+ };
+
+
+
+ template<typename _Ret, typename _Tp>
+ inline mem_fun_t<_Ret, _Tp>
+ mem_fun(_Ret (_Tp::*__f)())
+ { return mem_fun_t<_Ret, _Tp>(__f); }
+
+ template<typename _Ret, typename _Tp>
+ inline const_mem_fun_t<_Ret, _Tp>
+ mem_fun(_Ret (_Tp::*__f)() const)
+ { return const_mem_fun_t<_Ret, _Tp>(__f); }
+
+ template<typename _Ret, typename _Tp>
+ inline mem_fun_ref_t<_Ret, _Tp>
+ mem_fun_ref(_Ret (_Tp::*__f)())
+ { return mem_fun_ref_t<_Ret, _Tp>(__f); }
+
+ template<typename _Ret, typename _Tp>
+ inline const_mem_fun_ref_t<_Ret, _Tp>
+ mem_fun_ref(_Ret (_Tp::*__f)() const)
+ { return const_mem_fun_ref_t<_Ret, _Tp>(__f); }
+
+ template<typename _Ret, typename _Tp, typename _Arg>
+ inline mem_fun1_t<_Ret, _Tp, _Arg>
+ mem_fun(_Ret (_Tp::*__f)(_Arg))
+ { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
+
+ template<typename _Ret, typename _Tp, typename _Arg>
+ inline const_mem_fun1_t<_Ret, _Tp, _Arg>
+ mem_fun(_Ret (_Tp::*__f)(_Arg) const)
+ { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
+
+ template<typename _Ret, typename _Tp, typename _Arg>
+ inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
+ mem_fun_ref(_Ret (_Tp::*__f)(_Arg))
+ { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
+
+ template<typename _Ret, typename _Tp, typename _Arg>
+ inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
+ mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const)
+ { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
+
+
+
+}
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/backward/binders.h" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/backward/binders.h" 3
+#define _GLIBCXX_BINDERS_H 1
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 99 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/backward/binders.h" 3
+ template<typename _Operation>
+ class binder1st
+ : public unary_function<typename _Operation::second_argument_type,
+ typename _Operation::result_type>
+ {
+ protected:
+ _Operation op;
+ typename _Operation::first_argument_type value;
+
+ public:
+ binder1st(const _Operation& __x,
+ const typename _Operation::first_argument_type& __y)
+ : op(__x), value(__y) { }
+
+ typename _Operation::result_type
+ operator()(const typename _Operation::second_argument_type& __x) const
+ { return op(value, __x); }
+
+
+
+ typename _Operation::result_type
+ operator()(typename _Operation::second_argument_type& __x) const
+ { return op(value, __x); }
+ } ;
+
+
+ template<typename _Operation, typename _Tp>
+ inline binder1st<_Operation>
+ bind1st(const _Operation& __fn, const _Tp& __x)
+ {
+ typedef typename _Operation::first_argument_type _Arg1_type;
+ return binder1st<_Operation>(__fn, _Arg1_type(__x));
+ }
+
+
+ template<typename _Operation>
+ class binder2nd
+ : public unary_function<typename _Operation::first_argument_type,
+ typename _Operation::result_type>
+ {
+ protected:
+ _Operation op;
+ typename _Operation::second_argument_type value;
+
+ public:
+ binder2nd(const _Operation& __x,
+ const typename _Operation::second_argument_type& __y)
+ : op(__x), value(__y) { }
+
+ typename _Operation::result_type
+ operator()(const typename _Operation::first_argument_type& __x) const
+ { return op(__x, value); }
+
+
+
+ typename _Operation::result_type
+ operator()(typename _Operation::first_argument_type& __x) const
+ { return op(__x, value); }
+ } ;
+
+
+ template<typename _Operation, typename _Tp>
+ inline binder2nd<_Operation>
+ bind2nd(const _Operation& __fn, const _Tp& __x)
+ {
+ typedef typename _Operation::second_argument_type _Arg2_type;
+ return binder2nd<_Operation>(__fn, _Arg2_type(__x));
+ }
+
+
+}
+# 705 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_function.h" 2 3
+# 56 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/string" 2 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 1 3
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+#define _BASIC_STRING_H 1
+
+
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 108 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ class basic_string
+ {
+ typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
+
+
+ public:
+ typedef _Traits traits_type;
+ typedef typename _Traits::char_type value_type;
+ typedef _Alloc allocator_type;
+ typedef typename _CharT_alloc_type::size_type size_type;
+ typedef typename _CharT_alloc_type::difference_type difference_type;
+ typedef typename _CharT_alloc_type::reference reference;
+ typedef typename _CharT_alloc_type::const_reference const_reference;
+ typedef typename _CharT_alloc_type::pointer pointer;
+ typedef typename _CharT_alloc_type::const_pointer const_pointer;
+ typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator;
+ typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>
+ const_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+
+ private:
+# 145 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ struct _Rep_base
+ {
+ size_type _M_length;
+ size_type _M_capacity;
+ _Atomic_word _M_refcount;
+ };
+
+ struct _Rep : _Rep_base
+ {
+
+ typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc;
+# 170 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ static const size_type _S_max_size;
+ static const _CharT _S_terminal;
+
+
+
+ static size_type _S_empty_rep_storage[];
+
+ static _Rep&
+ _S_empty_rep()
+ {
+
+
+
+ void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage);
+ return *reinterpret_cast<_Rep*>(__p);
+ }
+
+ bool
+ _M_is_leaked() const
+ { return this->_M_refcount < 0; }
+
+ bool
+ _M_is_shared() const
+ { return this->_M_refcount > 0; }
+
+ void
+ _M_set_leaked()
+ { this->_M_refcount = -1; }
+
+ void
+ _M_set_sharable()
+ { this->_M_refcount = 0; }
+
+ void
+ _M_set_length_and_sharable(size_type __n)
+ {
+ this->_M_set_sharable();
+ this->_M_length = __n;
+ traits_type::assign(this->_M_refdata()[__n], _S_terminal);
+
+
+ }
+
+ _CharT*
+ _M_refdata() throw()
+ { return reinterpret_cast<_CharT*>(this + 1); }
+
+ _CharT*
+ _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)
+ {
+ return (!_M_is_leaked() && __alloc1 == __alloc2)
+ ? _M_refcopy() : _M_clone(__alloc1);
+ }
+
+
+ static _Rep*
+ _S_create(size_type, size_type, const _Alloc&);
+
+ void
+ _M_dispose(const _Alloc& __a)
+ {
+
+ if (__builtin_expect(this != &_S_empty_rep(), false))
+
+ if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount,
+ -1) <= 0)
+ _M_destroy(__a);
+ }
+
+ void
+ _M_destroy(const _Alloc&) throw();
+
+ _CharT*
+ _M_refcopy() throw()
+ {
+
+ if (__builtin_expect(this != &_S_empty_rep(), false))
+
+ __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1);
+ return _M_refdata();
+ }
+
+ _CharT*
+ _M_clone(const _Alloc&, size_type __res = 0);
+ };
+
+
+ struct _Alloc_hider : _Alloc
+ {
+ _Alloc_hider(_CharT* __dat, const _Alloc& __a)
+ : _Alloc(__a), _M_p(__dat) { }
+
+ _CharT* _M_p;
+ };
+
+ public:
+
+
+
+
+ static const size_type npos = static_cast<size_type>(-1);
+
+ private:
+
+ mutable _Alloc_hider _M_dataplus;
+
+ _CharT*
+ _M_data() const
+ { return _M_dataplus._M_p; }
+
+ _CharT*
+ _M_data(_CharT* __p)
+ { return (_M_dataplus._M_p = __p); }
+
+ _Rep*
+ _M_rep() const
+ { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
+
+
+
+ iterator
+ _M_ibegin() const
+ { return iterator(_M_data()); }
+
+ iterator
+ _M_iend() const
+ { return iterator(_M_data() + this->size()); }
+
+ void
+ _M_leak()
+ {
+ if (!_M_rep()->_M_is_leaked())
+ _M_leak_hard();
+ }
+
+ size_type
+ _M_check(size_type __pos, const char* __s) const
+ {
+ if (__pos > this->size())
+ __throw_out_of_range((__s));
+ return __pos;
+ }
+
+ void
+ _M_check_length(size_type __n1, size_type __n2, const char* __s) const
+ {
+ if (this->max_size() - (this->size() - __n1) < __n2)
+ __throw_length_error((__s));
+ }
+
+
+ size_type
+ _M_limit(size_type __pos, size_type __off) const
+ {
+ const bool __testoff = __off < this->size() - __pos;
+ return __testoff ? __off : this->size() - __pos;
+ }
+
+
+ bool
+ _M_disjunct(const _CharT* __s) const
+ {
+ return (less<const _CharT*>()(__s, _M_data())
+ || less<const _CharT*>()(_M_data() + this->size(), __s));
+ }
+
+
+
+ static void
+ _M_copy(_CharT* __d, const _CharT* __s, size_type __n)
+ {
+ if (__n == 1)
+ traits_type::assign(*__d, *__s);
+ else
+ traits_type::copy(__d, __s, __n);
+ }
+
+ static void
+ _M_move(_CharT* __d, const _CharT* __s, size_type __n)
+ {
+ if (__n == 1)
+ traits_type::assign(*__d, *__s);
+ else
+ traits_type::move(__d, __s, __n);
+ }
+
+ static void
+ _M_assign(_CharT* __d, size_type __n, _CharT __c)
+ {
+ if (__n == 1)
+ traits_type::assign(*__d, __c);
+ else
+ traits_type::assign(__d, __n, __c);
+ }
+
+
+
+ template<class _Iterator>
+ static void
+ _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
+ {
+ for (; __k1 != __k2; ++__k1, ++__p)
+ traits_type::assign(*__p, *__k1);
+ }
+
+ static void
+ _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2)
+ { _S_copy_chars(__p, __k1.base(), __k2.base()); }
+
+ static void
+ _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
+ { _S_copy_chars(__p, __k1.base(), __k2.base()); }
+
+ static void
+ _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
+ { _M_copy(__p, __k1, __k2 - __k1); }
+
+ static void
+ _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
+ { _M_copy(__p, __k1, __k2 - __k1); }
+
+ static int
+ _S_compare(size_type __n1, size_type __n2)
+ {
+ const difference_type __d = difference_type(__n1 - __n2);
+
+ if (__d > __gnu_cxx::__numeric_traits<int>::__max)
+ return __gnu_cxx::__numeric_traits<int>::__max;
+ else if (__d < __gnu_cxx::__numeric_traits<int>::__min)
+ return __gnu_cxx::__numeric_traits<int>::__min;
+ else
+ return int(__d);
+ }
+
+ void
+ _M_mutate(size_type __pos, size_type __len1, size_type __len2);
+
+ void
+ _M_leak_hard();
+
+ static _Rep&
+ _S_empty_rep()
+ { return _Rep::_S_empty_rep(); }
+
+ public:
+
+
+
+
+
+
+
+ inline
+ basic_string();
+
+
+
+
+ explicit
+ basic_string(const _Alloc& __a);
+
+
+
+
+
+
+ basic_string(const basic_string& __str);
+
+
+
+
+
+
+ basic_string(const basic_string& __str, size_type __pos,
+ size_type __n = npos);
+
+
+
+
+
+
+
+ basic_string(const basic_string& __str, size_type __pos,
+ size_type __n, const _Alloc& __a);
+# 464 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string(const _CharT* __s, size_type __n,
+ const _Alloc& __a = _Alloc());
+
+
+
+
+
+ basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
+
+
+
+
+
+
+ basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc());
+
+
+
+
+
+
+
+ template<class _InputIterator>
+ basic_string(_InputIterator __beg, _InputIterator __end,
+ const _Alloc& __a = _Alloc());
+
+
+
+
+ ~basic_string()
+ { _M_rep()->_M_dispose(this->get_allocator()); }
+
+
+
+
+
+ basic_string&
+ operator=(const basic_string& __str)
+ { return this->assign(__str); }
+
+
+
+
+
+ basic_string&
+ operator=(const _CharT* __s)
+ { return this->assign(__s); }
+# 519 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ operator=(_CharT __c)
+ {
+ this->assign(1, __c);
+ return *this;
+ }
+
+
+
+
+
+
+ iterator
+ begin()
+ {
+ _M_leak();
+ return iterator(_M_data());
+ }
+
+
+
+
+
+ const_iterator
+ begin() const
+ { return const_iterator(_M_data()); }
+
+
+
+
+
+ iterator
+ end()
+ {
+ _M_leak();
+ return iterator(_M_data() + this->size());
+ }
+
+
+
+
+
+ const_iterator
+ end() const
+ { return const_iterator(_M_data() + this->size()); }
+
+
+
+
+
+
+ reverse_iterator
+ rbegin()
+ { return reverse_iterator(this->end()); }
+
+
+
+
+
+
+ const_reverse_iterator
+ rbegin() const
+ { return const_reverse_iterator(this->end()); }
+
+
+
+
+
+
+ reverse_iterator
+ rend()
+ { return reverse_iterator(this->begin()); }
+
+
+
+
+
+
+ const_reverse_iterator
+ rend() const
+ { return const_reverse_iterator(this->begin()); }
+
+ public:
+
+
+
+ size_type
+ size() const
+ { return _M_rep()->_M_length; }
+
+
+
+ size_type
+ length() const
+ { return _M_rep()->_M_length; }
+
+
+ size_type
+ max_size() const
+ { return _Rep::_S_max_size; }
+# 630 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ void
+ resize(size_type __n, _CharT __c);
+# 643 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ void
+ resize(size_type __n)
+ { this->resize(__n, _CharT()); }
+
+
+
+
+
+ size_type
+ capacity() const
+ { return _M_rep()->_M_capacity; }
+# 672 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ void
+ reserve(size_type __res_arg = 0);
+
+
+
+
+ void
+ clear()
+ { _M_mutate(0, this->size(), 0); }
+
+
+
+
+ bool
+ empty() const
+ { return this->size() == 0; }
+# 700 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ const_reference
+ operator[] (size_type __pos) const
+ {
+ ;
+ return _M_data()[__pos];
+ }
+# 717 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ reference
+ operator[](size_type __pos)
+ {
+
+ ;
+
+ ;
+ _M_leak();
+ return _M_data()[__pos];
+ }
+# 738 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ const_reference
+ at(size_type __n) const
+ {
+ if (__n >= this->size())
+ __throw_out_of_range(("basic_string::at"));
+ return _M_data()[__n];
+ }
+# 757 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ reference
+ at(size_type __n)
+ {
+ if (__n >= size())
+ __throw_out_of_range(("basic_string::at"));
+ _M_leak();
+ return _M_data()[__n];
+ }
+
+
+
+
+
+
+
+ basic_string&
+ operator+=(const basic_string& __str)
+ { return this->append(__str); }
+
+
+
+
+
+
+ basic_string&
+ operator+=(const _CharT* __s)
+ { return this->append(__s); }
+
+
+
+
+
+
+ basic_string&
+ operator+=(_CharT __c)
+ {
+ this->push_back(__c);
+ return *this;
+ }
+
+
+
+
+
+
+ basic_string&
+ append(const basic_string& __str);
+# 817 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ append(const basic_string& __str, size_type __pos, size_type __n);
+
+
+
+
+
+
+
+ basic_string&
+ append(const _CharT* __s, size_type __n);
+
+
+
+
+
+
+ basic_string&
+ append(const _CharT* __s)
+ {
+ ;
+ return this->append(__s, traits_type::length(__s));
+ }
+# 849 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ append(size_type __n, _CharT __c);
+# 860 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<class _InputIterator>
+ basic_string&
+ append(_InputIterator __first, _InputIterator __last)
+ { return this->replace(_M_iend(), _M_iend(), __first, __last); }
+
+
+
+
+
+ void
+ push_back(_CharT __c)
+ {
+ const size_type __len = 1 + this->size();
+ if (__len > this->capacity() || _M_rep()->_M_is_shared())
+ this->reserve(__len);
+ traits_type::assign(_M_data()[this->size()], __c);
+ _M_rep()->_M_set_length_and_sharable(__len);
+ }
+
+
+
+
+
+
+ basic_string&
+ assign(const basic_string& __str);
+# 899 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ assign(const basic_string& __str, size_type __pos, size_type __n)
+ { return this->assign(__str._M_data()
+ + __str._M_check(__pos, "basic_string::assign"),
+ __str._M_limit(__pos, __n)); }
+# 915 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ assign(const _CharT* __s, size_type __n);
+# 927 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ assign(const _CharT* __s)
+ {
+ ;
+ return this->assign(__s, traits_type::length(__s));
+ }
+# 943 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ assign(size_type __n, _CharT __c)
+ { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
+# 955 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<class _InputIterator>
+ basic_string&
+ assign(_InputIterator __first, _InputIterator __last)
+ { return this->replace(_M_ibegin(), _M_iend(), __first, __last); }
+# 972 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ void
+ insert(iterator __p, size_type __n, _CharT __c)
+ { this->replace(__p, __p, __n, __c); }
+# 987 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<class _InputIterator>
+ void
+ insert(iterator __p, _InputIterator __beg, _InputIterator __end)
+ { this->replace(__p, __p, __beg, __end); }
+# 1003 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ insert(size_type __pos1, const basic_string& __str)
+ { return this->insert(__pos1, __str, size_type(0), __str.size()); }
+# 1025 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ insert(size_type __pos1, const basic_string& __str,
+ size_type __pos2, size_type __n)
+ { return this->insert(__pos1, __str._M_data()
+ + __str._M_check(__pos2, "basic_string::insert"),
+ __str._M_limit(__pos2, __n)); }
+# 1048 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ insert(size_type __pos, const _CharT* __s, size_type __n);
+# 1066 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ insert(size_type __pos, const _CharT* __s)
+ {
+ ;
+ return this->insert(__pos, __s, traits_type::length(__s));
+ }
+# 1089 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ insert(size_type __pos, size_type __n, _CharT __c)
+ { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),
+ size_type(0), __n, __c); }
+# 1106 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ iterator
+ insert(iterator __p, _CharT __c)
+ {
+ ;
+ const size_type __pos = __p - _M_ibegin();
+ _M_replace_aux(__pos, size_type(0), size_type(1), __c);
+ _M_rep()->_M_set_leaked();
+ return iterator(_M_data() + __pos);
+ }
+# 1130 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ erase(size_type __pos = 0, size_type __n = npos)
+ {
+ _M_mutate(_M_check(__pos, "basic_string::erase"),
+ _M_limit(__pos, __n), size_type(0));
+ return *this;
+ }
+# 1146 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ iterator
+ erase(iterator __position)
+ {
+ ;
+
+ const size_type __pos = __position - _M_ibegin();
+ _M_mutate(__pos, size_type(1), size_type(0));
+ _M_rep()->_M_set_leaked();
+ return iterator(_M_data() + __pos);
+ }
+# 1166 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ iterator
+ erase(iterator __first, iterator __last)
+ {
+ ;
+
+ const size_type __pos = __first - _M_ibegin();
+ _M_mutate(__pos, __last - __first, size_type(0));
+ _M_rep()->_M_set_leaked();
+ return iterator(_M_data() + __pos);
+ }
+# 1193 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ replace(size_type __pos, size_type __n, const basic_string& __str)
+ { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
+# 1215 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ replace(size_type __pos1, size_type __n1, const basic_string& __str,
+ size_type __pos2, size_type __n2)
+ { return this->replace(__pos1, __n1, __str._M_data()
+ + __str._M_check(__pos2, "basic_string::replace"),
+ __str._M_limit(__pos2, __n2)); }
+# 1239 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ replace(size_type __pos, size_type __n1, const _CharT* __s,
+ size_type __n2);
+# 1258 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ replace(size_type __pos, size_type __n1, const _CharT* __s)
+ {
+ ;
+ return this->replace(__pos, __n1, __s, traits_type::length(__s));
+ }
+# 1281 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
+ { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),
+ _M_limit(__pos, __n1), __n2, __c); }
+# 1299 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ replace(iterator __i1, iterator __i2, const basic_string& __str)
+ { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
+# 1317 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
+ {
+ ;
+
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
+ }
+# 1338 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ replace(iterator __i1, iterator __i2, const _CharT* __s)
+ {
+ ;
+ return this->replace(__i1, __i2, __s, traits_type::length(__s));
+ }
+# 1359 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string&
+ replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
+ {
+ ;
+
+ return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);
+ }
+# 1381 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<class _InputIterator>
+ basic_string&
+ replace(iterator __i1, iterator __i2,
+ _InputIterator __k1, _InputIterator __k2)
+ {
+ ;
+
+ ;
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
+ }
+
+
+
+ basic_string&
+ replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
+ {
+ ;
+
+ ;
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+ __k1, __k2 - __k1);
+ }
+
+ basic_string&
+ replace(iterator __i1, iterator __i2,
+ const _CharT* __k1, const _CharT* __k2)
+ {
+ ;
+
+ ;
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+ __k1, __k2 - __k1);
+ }
+
+ basic_string&
+ replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
+ {
+ ;
+
+ ;
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+ __k1.base(), __k2 - __k1);
+ }
+
+ basic_string&
+ replace(iterator __i1, iterator __i2,
+ const_iterator __k1, const_iterator __k2)
+ {
+ ;
+
+ ;
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+ __k1.base(), __k2 - __k1);
+ }
+
+ private:
+ template<class _Integer>
+ basic_string&
+ _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,
+ _Integer __val, __true_type)
+ { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }
+
+ template<class _InputIterator>
+ basic_string&
+ _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
+ _InputIterator __k2, __false_type);
+
+ basic_string&
+ _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
+ _CharT __c);
+
+ basic_string&
+ _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
+ size_type __n2);
+
+
+
+ template<class _InIterator>
+ static _CharT*
+ _S_construct_aux(_InIterator __beg, _InIterator __end,
+ const _Alloc& __a, __false_type)
+ {
+ typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
+ return _S_construct(__beg, __end, __a, _Tag());
+ }
+
+
+
+ template<class _Integer>
+ static _CharT*
+ _S_construct_aux(_Integer __beg, _Integer __end,
+ const _Alloc& __a, __true_type)
+ { return _S_construct(static_cast<size_type>(__beg), __end, __a); }
+
+ template<class _InIterator>
+ static _CharT*
+ _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)
+ {
+ typedef typename std::__is_integer<_InIterator>::__type _Integral;
+ return _S_construct_aux(__beg, __end, __a, _Integral());
+ }
+
+
+ template<class _InIterator>
+ static _CharT*
+ _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
+ input_iterator_tag);
+
+
+
+ template<class _FwdIterator>
+ static _CharT*
+ _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,
+ forward_iterator_tag);
+
+ static _CharT*
+ _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
+
+ public:
+# 1513 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
+# 1523 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ void
+ swap(basic_string& __s);
+# 1533 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ const _CharT*
+ c_str() const
+ { return _M_data(); }
+
+
+
+
+
+
+
+ const _CharT*
+ data() const
+ { return _M_data(); }
+
+
+
+
+ allocator_type
+ get_allocator() const
+ { return _M_dataplus; }
+# 1565 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find(const _CharT* __s, size_type __pos, size_type __n) const;
+# 1578 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find(const basic_string& __str, size_type __pos = 0) const
+ { return this->find(__str.data(), __pos, __str.size()); }
+# 1592 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find(const _CharT* __s, size_type __pos = 0) const
+ {
+ ;
+ return this->find(__s, __pos, traits_type::length(__s));
+ }
+# 1609 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find(_CharT __c, size_type __pos = 0) const;
+# 1622 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ rfind(const basic_string& __str, size_type __pos = npos) const
+ { return this->rfind(__str.data(), __pos, __str.size()); }
+# 1637 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ rfind(const _CharT* __s, size_type __pos, size_type __n) const;
+# 1650 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ rfind(const _CharT* __s, size_type __pos = npos) const
+ {
+ ;
+ return this->rfind(__s, __pos, traits_type::length(__s));
+ }
+# 1667 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ rfind(_CharT __c, size_type __pos = npos) const;
+# 1680 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_first_of(const basic_string& __str, size_type __pos = 0) const
+ { return this->find_first_of(__str.data(), __pos, __str.size()); }
+# 1695 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
+# 1708 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_first_of(const _CharT* __s, size_type __pos = 0) const
+ {
+ ;
+ return this->find_first_of(__s, __pos, traits_type::length(__s));
+ }
+# 1727 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_first_of(_CharT __c, size_type __pos = 0) const
+ { return this->find(__c, __pos); }
+# 1741 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_last_of(const basic_string& __str, size_type __pos = npos) const
+ { return this->find_last_of(__str.data(), __pos, __str.size()); }
+# 1756 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
+# 1769 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_last_of(const _CharT* __s, size_type __pos = npos) const
+ {
+ ;
+ return this->find_last_of(__s, __pos, traits_type::length(__s));
+ }
+# 1788 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_last_of(_CharT __c, size_type __pos = npos) const
+ { return this->rfind(__c, __pos); }
+# 1802 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_first_not_of(const basic_string& __str, size_type __pos = 0) const
+ { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
+# 1817 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_first_not_of(const _CharT* __s, size_type __pos,
+ size_type __n) const;
+# 1831 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_first_not_of(const _CharT* __s, size_type __pos = 0) const
+ {
+ ;
+ return this->find_first_not_of(__s, __pos, traits_type::length(__s));
+ }
+# 1848 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_first_not_of(_CharT __c, size_type __pos = 0) const;
+# 1861 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_last_not_of(const basic_string& __str, size_type __pos = npos) const
+ { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
+# 1877 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_last_not_of(const _CharT* __s, size_type __pos,
+ size_type __n) const;
+# 1890 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_last_not_of(const _CharT* __s, size_type __pos = npos) const
+ {
+ ;
+ return this->find_last_not_of(__s, __pos, traits_type::length(__s));
+ }
+# 1907 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ size_type
+ find_last_not_of(_CharT __c, size_type __pos = npos) const;
+# 1922 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ basic_string
+ substr(size_type __pos = 0, size_type __n = npos) const
+ { return basic_string(*this,
+ _M_check(__pos, "basic_string::substr"), __n); }
+# 1940 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ int
+ compare(const basic_string& __str) const
+ {
+ const size_type __size = this->size();
+ const size_type __osize = __str.size();
+ const size_type __len = std::min(__size, __osize);
+
+ int __r = traits_type::compare(_M_data(), __str.data(), __len);
+ if (!__r)
+ __r = _S_compare(__size, __osize);
+ return __r;
+ }
+# 1970 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ int
+ compare(size_type __pos, size_type __n, const basic_string& __str) const;
+# 1994 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ int
+ compare(size_type __pos1, size_type __n1, const basic_string& __str,
+ size_type __pos2, size_type __n2) const;
+# 2012 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ int
+ compare(const _CharT* __s) const;
+# 2035 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ int
+ compare(size_type __pos, size_type __n1, const _CharT* __s) const;
+# 2060 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ int
+ compare(size_type __pos, size_type __n1, const _CharT* __s,
+ size_type __n2) const;
+ };
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline basic_string<_CharT, _Traits, _Alloc>::
+ basic_string()
+
+ : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { }
+# 2081 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>
+ operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ {
+ basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
+ __str.append(__rhs);
+ return __str;
+ }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT,_Traits,_Alloc>
+ operator+(const _CharT* __lhs,
+ const basic_string<_CharT,_Traits,_Alloc>& __rhs);
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT,_Traits,_Alloc>
+ operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline basic_string<_CharT, _Traits, _Alloc>
+ operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ {
+ basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
+ __str.append(__rhs);
+ return __str;
+ }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline basic_string<_CharT, _Traits, _Alloc>
+ operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
+ {
+ typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
+ typedef typename __string_type::size_type __size_type;
+ __string_type __str(__lhs);
+ __str.append(__size_type(1), __rhs);
+ return __str;
+ }
+# 2152 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __lhs.compare(__rhs) == 0; }
+
+ template<typename _CharT>
+ inline
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type
+ operator==(const basic_string<_CharT>& __lhs,
+ const basic_string<_CharT>& __rhs)
+ { return (__lhs.size() == __rhs.size()
+ && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(),
+ __lhs.size())); }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator==(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __rhs.compare(__lhs) == 0; }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ { return __lhs.compare(__rhs) == 0; }
+# 2198 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return !(__lhs == __rhs); }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator!=(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return !(__lhs == __rhs); }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ { return !(__lhs == __rhs); }
+# 2235 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __lhs.compare(__rhs) < 0; }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ { return __lhs.compare(__rhs) < 0; }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator<(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __rhs.compare(__lhs) > 0; }
+# 2272 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __lhs.compare(__rhs) > 0; }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ { return __lhs.compare(__rhs) > 0; }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator>(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __rhs.compare(__lhs) < 0; }
+# 2309 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __lhs.compare(__rhs) <= 0; }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ { return __lhs.compare(__rhs) <= 0; }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator<=(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __rhs.compare(__lhs) >= 0; }
+# 2346 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __lhs.compare(__rhs) >= 0; }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ { return __lhs.compare(__rhs) >= 0; }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator>=(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __rhs.compare(__lhs) <= 0; }
+# 2383 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline void
+ swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { __lhs.swap(__rhs); }
+# 2400 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_istream<_CharT, _Traits>&
+ operator>>(basic_istream<_CharT, _Traits>& __is,
+ basic_string<_CharT, _Traits, _Alloc>& __str);
+
+ template<>
+ basic_istream<char>&
+ operator>>(basic_istream<char>& __is, basic_string<char>& __str);
+# 2418 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline basic_ostream<_CharT, _Traits>&
+ operator<<(basic_ostream<_CharT, _Traits>& __os,
+ const basic_string<_CharT, _Traits, _Alloc>& __str)
+ {
+
+
+ return __ostream_insert(__os, __str.data(), __str.size());
+ }
+# 2441 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_istream<_CharT, _Traits>&
+ getline(basic_istream<_CharT, _Traits>& __is,
+ basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim);
+# 2458 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline basic_istream<_CharT, _Traits>&
+ getline(basic_istream<_CharT, _Traits>& __is,
+ basic_string<_CharT, _Traits, _Alloc>& __str)
+ { return getline(__is, __str, __is.widen('\n')); }
+
+ template<>
+ basic_istream<char>&
+ getline(basic_istream<char>& __in, basic_string<char>& __str,
+ char __delim);
+# 2476 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.h" 3
+}
+# 59 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/string" 2 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.tcc" 1 3
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.tcc" 3
+#define _BASIC_STRING_TCC 1
+
+
+# 48 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.tcc" 3
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ const typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4;
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ const _CharT
+ basic_string<_CharT, _Traits, _Alloc>::
+ _Rep::_S_terminal = _CharT();
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ const typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::npos;
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[
+ (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) /
+ sizeof(size_type)];
+
+
+
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ template<typename _InIterator>
+ _CharT*
+ basic_string<_CharT, _Traits, _Alloc>::
+ _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
+ input_iterator_tag)
+ {
+
+ if (__beg == __end && __a == _Alloc())
+ return _S_empty_rep()._M_refdata();
+
+
+ _CharT __buf[128];
+ size_type __len = 0;
+ while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT))
+ {
+ __buf[__len++] = *__beg;
+ ++__beg;
+ }
+ _Rep* __r = _Rep::_S_create(__len, size_type(0), __a);
+ _M_copy(__r->_M_refdata(), __buf, __len);
+ try
+ {
+ while (__beg != __end)
+ {
+ if (__len == __r->_M_capacity)
+ {
+
+ _Rep* __another = _Rep::_S_create(__len + 1, __len, __a);
+ _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len);
+ __r->_M_destroy(__a);
+ __r = __another;
+ }
+ __r->_M_refdata()[__len++] = *__beg;
+ ++__beg;
+ }
+ }
+ catch(...)
+ {
+ __r->_M_destroy(__a);
+ throw;
+ }
+ __r->_M_set_length_and_sharable(__len);
+ return __r->_M_refdata();
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ template <typename _InIterator>
+ _CharT*
+ basic_string<_CharT, _Traits, _Alloc>::
+ _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
+ forward_iterator_tag)
+ {
+
+ if (__beg == __end && __a == _Alloc())
+ return _S_empty_rep()._M_refdata();
+
+
+ if (__builtin_expect(__gnu_cxx::__is_null_pointer(__beg)
+ && __beg != __end, 0))
+ __throw_logic_error(("basic_string::_S_construct NULL not valid"));
+
+ const size_type __dnew = static_cast<size_type>(std::distance(__beg,
+ __end));
+
+ _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a);
+ try
+ { _S_copy_chars(__r->_M_refdata(), __beg, __end); }
+ catch(...)
+ {
+ __r->_M_destroy(__a);
+ throw;
+ }
+ __r->_M_set_length_and_sharable(__dnew);
+ return __r->_M_refdata();
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ _CharT*
+ basic_string<_CharT, _Traits, _Alloc>::
+ _S_construct(size_type __n, _CharT __c, const _Alloc& __a)
+ {
+
+ if (__n == 0 && __a == _Alloc())
+ return _S_empty_rep()._M_refdata();
+
+
+ _Rep* __r = _Rep::_S_create(__n, size_type(0), __a);
+ if (__n)
+ _M_assign(__r->_M_refdata(), __n, __c);
+
+ __r->_M_set_length_and_sharable(__n);
+ return __r->_M_refdata();
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(const basic_string& __str)
+ : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()),
+ __str.get_allocator()),
+ __str.get_allocator())
+ { }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(const _Alloc& __a)
+ : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a)
+ { }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(const basic_string& __str, size_type __pos, size_type __n)
+ : _M_dataplus(_S_construct(__str._M_data()
+ + __str._M_check(__pos,
+ "basic_string::basic_string"),
+ __str._M_data() + __str._M_limit(__pos, __n)
+ + __pos, _Alloc()), _Alloc())
+ { }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(const basic_string& __str, size_type __pos,
+ size_type __n, const _Alloc& __a)
+ : _M_dataplus(_S_construct(__str._M_data()
+ + __str._M_check(__pos,
+ "basic_string::basic_string"),
+ __str._M_data() + __str._M_limit(__pos, __n)
+ + __pos, __a), __a)
+ { }
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(const _CharT* __s, size_type __n, const _Alloc& __a)
+ : _M_dataplus(_S_construct(__s, __s + __n, __a), __a)
+ { }
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(const _CharT* __s, const _Alloc& __a)
+ : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) :
+ __s + npos, __a), __a)
+ { }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(size_type __n, _CharT __c, const _Alloc& __a)
+ : _M_dataplus(_S_construct(__n, __c, __a), __a)
+ { }
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ template<typename _InputIterator>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a)
+ : _M_dataplus(_S_construct(__beg, __end, __a), __a)
+ { }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ assign(const basic_string& __str)
+ {
+ if (_M_rep() != __str._M_rep())
+ {
+
+ const allocator_type __a = this->get_allocator();
+ _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator());
+ _M_rep()->_M_dispose(__a);
+ _M_data(__tmp);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ assign(const _CharT* __s, size_type __n)
+ {
+ ;
+ _M_check_length(this->size(), __n, "basic_string::assign");
+ if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
+ return _M_replace_safe(size_type(0), this->size(), __s, __n);
+ else
+ {
+
+ const size_type __pos = __s - _M_data();
+ if (__pos >= __n)
+ _M_copy(_M_data(), __s, __n);
+ else if (__pos)
+ _M_move(_M_data(), __s, __n);
+ _M_rep()->_M_set_length_and_sharable(__n);
+ return *this;
+ }
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ append(size_type __n, _CharT __c)
+ {
+ if (__n)
+ {
+ _M_check_length(size_type(0), __n, "basic_string::append");
+ const size_type __len = __n + this->size();
+ if (__len > this->capacity() || _M_rep()->_M_is_shared())
+ this->reserve(__len);
+ _M_assign(_M_data() + this->size(), __n, __c);
+ _M_rep()->_M_set_length_and_sharable(__len);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ append(const _CharT* __s, size_type __n)
+ {
+ ;
+ if (__n)
+ {
+ _M_check_length(size_type(0), __n, "basic_string::append");
+ const size_type __len = __n + this->size();
+ if (__len > this->capacity() || _M_rep()->_M_is_shared())
+ {
+ if (_M_disjunct(__s))
+ this->reserve(__len);
+ else
+ {
+ const size_type __off = __s - _M_data();
+ this->reserve(__len);
+ __s = _M_data() + __off;
+ }
+ }
+ _M_copy(_M_data() + this->size(), __s, __n);
+ _M_rep()->_M_set_length_and_sharable(__len);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ append(const basic_string& __str)
+ {
+ const size_type __size = __str.size();
+ if (__size)
+ {
+ const size_type __len = __size + this->size();
+ if (__len > this->capacity() || _M_rep()->_M_is_shared())
+ this->reserve(__len);
+ _M_copy(_M_data() + this->size(), __str._M_data(), __size);
+ _M_rep()->_M_set_length_and_sharable(__len);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ append(const basic_string& __str, size_type __pos, size_type __n)
+ {
+ __str._M_check(__pos, "basic_string::append");
+ __n = __str._M_limit(__pos, __n);
+ if (__n)
+ {
+ const size_type __len = __n + this->size();
+ if (__len > this->capacity() || _M_rep()->_M_is_shared())
+ this->reserve(__len);
+ _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n);
+ _M_rep()->_M_set_length_and_sharable(__len);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ insert(size_type __pos, const _CharT* __s, size_type __n)
+ {
+ ;
+ _M_check(__pos, "basic_string::insert");
+ _M_check_length(size_type(0), __n, "basic_string::insert");
+ if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
+ return _M_replace_safe(__pos, size_type(0), __s, __n);
+ else
+ {
+
+ const size_type __off = __s - _M_data();
+ _M_mutate(__pos, 0, __n);
+ __s = _M_data() + __off;
+ _CharT* __p = _M_data() + __pos;
+ if (__s + __n <= __p)
+ _M_copy(__p, __s, __n);
+ else if (__s >= __p)
+ _M_copy(__p, __s + __n, __n);
+ else
+ {
+ const size_type __nleft = __p - __s;
+ _M_copy(__p, __s, __nleft);
+ _M_copy(__p + __nleft, __p + __n, __n - __nleft);
+ }
+ return *this;
+ }
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ replace(size_type __pos, size_type __n1, const _CharT* __s,
+ size_type __n2)
+ {
+ ;
+ _M_check(__pos, "basic_string::replace");
+ __n1 = _M_limit(__pos, __n1);
+ _M_check_length(__n1, __n2, "basic_string::replace");
+ bool __left;
+ if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
+ return _M_replace_safe(__pos, __n1, __s, __n2);
+ else if ((__left = __s + __n2 <= _M_data() + __pos)
+ || _M_data() + __pos + __n1 <= __s)
+ {
+
+ size_type __off = __s - _M_data();
+ __left ? __off : (__off += __n2 - __n1);
+ _M_mutate(__pos, __n1, __n2);
+ _M_copy(_M_data() + __pos, _M_data() + __off, __n2);
+ return *this;
+ }
+ else
+ {
+
+ const basic_string __tmp(__s, __n2);
+ return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2);
+ }
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ void
+ basic_string<_CharT, _Traits, _Alloc>::_Rep::
+ _M_destroy(const _Alloc& __a) throw ()
+ {
+ const size_type __size = sizeof(_Rep_base) +
+ (this->_M_capacity + 1) * sizeof(_CharT);
+ _Raw_bytes_alloc(__a).deallocate(reinterpret_cast<char*>(this), __size);
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ void
+ basic_string<_CharT, _Traits, _Alloc>::
+ _M_leak_hard()
+ {
+
+ if (_M_rep() == &_S_empty_rep())
+ return;
+
+ if (_M_rep()->_M_is_shared())
+ _M_mutate(0, 0, 0);
+ _M_rep()->_M_set_leaked();
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ void
+ basic_string<_CharT, _Traits, _Alloc>::
+ _M_mutate(size_type __pos, size_type __len1, size_type __len2)
+ {
+ const size_type __old_size = this->size();
+ const size_type __new_size = __old_size + __len2 - __len1;
+ const size_type __how_much = __old_size - __pos - __len1;
+
+ if (__new_size > this->capacity() || _M_rep()->_M_is_shared())
+ {
+
+ const allocator_type __a = get_allocator();
+ _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a);
+
+ if (__pos)
+ _M_copy(__r->_M_refdata(), _M_data(), __pos);
+ if (__how_much)
+ _M_copy(__r->_M_refdata() + __pos + __len2,
+ _M_data() + __pos + __len1, __how_much);
+
+ _M_rep()->_M_dispose(__a);
+ _M_data(__r->_M_refdata());
+ }
+ else if (__how_much && __len1 != __len2)
+ {
+
+ _M_move(_M_data() + __pos + __len2,
+ _M_data() + __pos + __len1, __how_much);
+ }
+ _M_rep()->_M_set_length_and_sharable(__new_size);
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ void
+ basic_string<_CharT, _Traits, _Alloc>::
+ reserve(size_type __res)
+ {
+ if (__res != this->capacity() || _M_rep()->_M_is_shared())
+ {
+
+ if (__res < this->size())
+ __res = this->size();
+ const allocator_type __a = get_allocator();
+ _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size());
+ _M_rep()->_M_dispose(__a);
+ _M_data(__tmp);
+ }
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ void
+ basic_string<_CharT, _Traits, _Alloc>::
+ swap(basic_string& __s)
+ {
+ if (_M_rep()->_M_is_leaked())
+ _M_rep()->_M_set_sharable();
+ if (__s._M_rep()->_M_is_leaked())
+ __s._M_rep()->_M_set_sharable();
+ if (this->get_allocator() == __s.get_allocator())
+ {
+ _CharT* __tmp = _M_data();
+ _M_data(__s._M_data());
+ __s._M_data(__tmp);
+ }
+
+ else
+ {
+ const basic_string __tmp1(_M_ibegin(), _M_iend(),
+ __s.get_allocator());
+ const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(),
+ this->get_allocator());
+ *this = __tmp2;
+ __s = __tmp1;
+ }
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::_Rep*
+ basic_string<_CharT, _Traits, _Alloc>::_Rep::
+ _S_create(size_type __capacity, size_type __old_capacity,
+ const _Alloc& __alloc)
+ {
+
+
+ if (__capacity > _S_max_size)
+ __throw_length_error(("basic_string::_S_create"));
+# 552 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.tcc" 3
+ const size_type __pagesize = 4096;
+ const size_type __malloc_header_size = 4 * sizeof(void*);
+
+
+
+
+
+
+
+ if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
+ __capacity = 2 * __old_capacity;
+
+
+
+
+ size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
+
+ const size_type __adj_size = __size + __malloc_header_size;
+ if (__adj_size > __pagesize && __capacity > __old_capacity)
+ {
+ const size_type __extra = __pagesize - __adj_size % __pagesize;
+ __capacity += __extra / sizeof(_CharT);
+
+ if (__capacity > _S_max_size)
+ __capacity = _S_max_size;
+ __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
+ }
+
+
+
+ void* __place = _Raw_bytes_alloc(__alloc).allocate(__size);
+ _Rep *__p = new (__place) _Rep;
+ __p->_M_capacity = __capacity;
+
+
+
+
+
+
+
+ __p->_M_set_sharable();
+ return __p;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ _CharT*
+ basic_string<_CharT, _Traits, _Alloc>::_Rep::
+ _M_clone(const _Alloc& __alloc, size_type __res)
+ {
+
+ const size_type __requested_cap = this->_M_length + __res;
+ _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity,
+ __alloc);
+ if (this->_M_length)
+ _M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length);
+
+ __r->_M_set_length_and_sharable(this->_M_length);
+ return __r->_M_refdata();
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ void
+ basic_string<_CharT, _Traits, _Alloc>::
+ resize(size_type __n, _CharT __c)
+ {
+ const size_type __size = this->size();
+ _M_check_length(__size, __n, "basic_string::resize");
+ if (__size < __n)
+ this->append(__n - __size, __c);
+ else if (__n < __size)
+ this->erase(__n);
+
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ template<typename _InputIterator>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
+ _InputIterator __k2, __false_type)
+ {
+ const basic_string __s(__k1, __k2);
+ const size_type __n1 = __i2 - __i1;
+ _M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch");
+ return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(),
+ __s.size());
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
+ _CharT __c)
+ {
+ _M_check_length(__n1, __n2, "basic_string::_M_replace_aux");
+ _M_mutate(__pos1, __n1, __n2);
+ if (__n2)
+ _M_assign(_M_data() + __pos1, __n2, __c);
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
+ size_type __n2)
+ {
+ _M_mutate(__pos1, __n1, __n2);
+ if (__n2)
+ _M_copy(_M_data() + __pos1, __s, __n2);
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>
+ operator+(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ {
+ ;
+ typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
+ typedef typename __string_type::size_type __size_type;
+ const __size_type __len = _Traits::length(__lhs);
+ __string_type __str;
+ __str.reserve(__len + __rhs.size());
+ __str.append(__lhs, __len);
+ __str.append(__rhs);
+ return __str;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>
+ operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ {
+ typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
+ typedef typename __string_type::size_type __size_type;
+ __string_type __str;
+ const __size_type __len = __rhs.size();
+ __str.reserve(__len + 1);
+ __str.append(__size_type(1), __lhs);
+ __str.append(__rhs);
+ return __str;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ copy(_CharT* __s, size_type __n, size_type __pos) const
+ {
+ _M_check(__pos, "basic_string::copy");
+ __n = _M_limit(__pos, __n);
+ ;
+ if (__n)
+ _M_copy(__s, _M_data() + __pos, __n);
+
+ return __n;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find(const _CharT* __s, size_type __pos, size_type __n) const
+ {
+ ;
+ const size_type __size = this->size();
+ const _CharT* __data = _M_data();
+
+ if (__n == 0)
+ return __pos <= __size ? __pos : npos;
+
+ if (__n <= __size)
+ {
+ for (; __pos <= __size - __n; ++__pos)
+ if (traits_type::eq(__data[__pos], __s[0])
+ && traits_type::compare(__data + __pos + 1,
+ __s + 1, __n - 1) == 0)
+ return __pos;
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find(_CharT __c, size_type __pos) const
+ {
+ size_type __ret = npos;
+ const size_type __size = this->size();
+ if (__pos < __size)
+ {
+ const _CharT* __data = _M_data();
+ const size_type __n = __size - __pos;
+ const _CharT* __p = traits_type::find(__data + __pos, __n, __c);
+ if (__p)
+ __ret = __p - __data;
+ }
+ return __ret;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ rfind(const _CharT* __s, size_type __pos, size_type __n) const
+ {
+ ;
+ const size_type __size = this->size();
+ if (__n <= __size)
+ {
+ __pos = std::min(size_type(__size - __n), __pos);
+ const _CharT* __data = _M_data();
+ do
+ {
+ if (traits_type::compare(__data + __pos, __s, __n) == 0)
+ return __pos;
+ }
+ while (__pos-- > 0);
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ rfind(_CharT __c, size_type __pos) const
+ {
+ size_type __size = this->size();
+ if (__size)
+ {
+ if (--__size > __pos)
+ __size = __pos;
+ for (++__size; __size-- > 0; )
+ if (traits_type::eq(_M_data()[__size], __c))
+ return __size;
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
+ {
+ ;
+ for (; __n && __pos < this->size(); ++__pos)
+ {
+ const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]);
+ if (__p)
+ return __pos;
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
+ {
+ ;
+ size_type __size = this->size();
+ if (__size && __n)
+ {
+ if (--__size > __pos)
+ __size = __pos;
+ do
+ {
+ if (traits_type::find(__s, __n, _M_data()[__size]))
+ return __size;
+ }
+ while (__size-- != 0);
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
+ {
+ ;
+ for (; __pos < this->size(); ++__pos)
+ if (!traits_type::find(__s, __n, _M_data()[__pos]))
+ return __pos;
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find_first_not_of(_CharT __c, size_type __pos) const
+ {
+ for (; __pos < this->size(); ++__pos)
+ if (!traits_type::eq(_M_data()[__pos], __c))
+ return __pos;
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
+ {
+ ;
+ size_type __size = this->size();
+ if (__size)
+ {
+ if (--__size > __pos)
+ __size = __pos;
+ do
+ {
+ if (!traits_type::find(__s, __n, _M_data()[__size]))
+ return __size;
+ }
+ while (__size--);
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find_last_not_of(_CharT __c, size_type __pos) const
+ {
+ size_type __size = this->size();
+ if (__size)
+ {
+ if (--__size > __pos)
+ __size = __pos;
+ do
+ {
+ if (!traits_type::eq(_M_data()[__size], __c))
+ return __size;
+ }
+ while (__size--);
+ }
+ return npos;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ int
+ basic_string<_CharT, _Traits, _Alloc>::
+ compare(size_type __pos, size_type __n, const basic_string& __str) const
+ {
+ _M_check(__pos, "basic_string::compare");
+ __n = _M_limit(__pos, __n);
+ const size_type __osize = __str.size();
+ const size_type __len = std::min(__n, __osize);
+ int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len);
+ if (!__r)
+ __r = _S_compare(__n, __osize);
+ return __r;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ int
+ basic_string<_CharT, _Traits, _Alloc>::
+ compare(size_type __pos1, size_type __n1, const basic_string& __str,
+ size_type __pos2, size_type __n2) const
+ {
+ _M_check(__pos1, "basic_string::compare");
+ __str._M_check(__pos2, "basic_string::compare");
+ __n1 = _M_limit(__pos1, __n1);
+ __n2 = __str._M_limit(__pos2, __n2);
+ const size_type __len = std::min(__n1, __n2);
+ int __r = traits_type::compare(_M_data() + __pos1,
+ __str.data() + __pos2, __len);
+ if (!__r)
+ __r = _S_compare(__n1, __n2);
+ return __r;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ int
+ basic_string<_CharT, _Traits, _Alloc>::
+ compare(const _CharT* __s) const
+ {
+ ;
+ const size_type __size = this->size();
+ const size_type __osize = traits_type::length(__s);
+ const size_type __len = std::min(__size, __osize);
+ int __r = traits_type::compare(_M_data(), __s, __len);
+ if (!__r)
+ __r = _S_compare(__size, __osize);
+ return __r;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ int
+ basic_string <_CharT, _Traits, _Alloc>::
+ compare(size_type __pos, size_type __n1, const _CharT* __s) const
+ {
+ ;
+ _M_check(__pos, "basic_string::compare");
+ __n1 = _M_limit(__pos, __n1);
+ const size_type __osize = traits_type::length(__s);
+ const size_type __len = std::min(__n1, __osize);
+ int __r = traits_type::compare(_M_data() + __pos, __s, __len);
+ if (!__r)
+ __r = _S_compare(__n1, __osize);
+ return __r;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ int
+ basic_string <_CharT, _Traits, _Alloc>::
+ compare(size_type __pos, size_type __n1, const _CharT* __s,
+ size_type __n2) const
+ {
+ ;
+ _M_check(__pos, "basic_string::compare");
+ __n1 = _M_limit(__pos, __n1);
+ const size_type __len = std::min(__n1, __n2);
+ int __r = traits_type::compare(_M_data() + __pos, __s, __len);
+ if (!__r)
+ __r = _S_compare(__n1, __n2);
+ return __r;
+ }
+
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_istream<_CharT, _Traits>&
+ operator>>(basic_istream<_CharT, _Traits>& __in,
+ basic_string<_CharT, _Traits, _Alloc>& __str)
+ {
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
+ typedef typename __istream_type::ios_base __ios_base;
+ typedef typename __istream_type::int_type __int_type;
+ typedef typename __string_type::size_type __size_type;
+ typedef ctype<_CharT> __ctype_type;
+ typedef typename __ctype_type::ctype_base __ctype_base;
+
+ __size_type __extracted = 0;
+ typename __ios_base::iostate __err = __ios_base::goodbit;
+ typename __istream_type::sentry __cerb(__in, false);
+ if (__cerb)
+ {
+ try
+ {
+
+ __str.erase();
+ _CharT __buf[128];
+ __size_type __len = 0;
+ const streamsize __w = __in.width();
+ const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)
+ : __str.max_size();
+ const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
+ const __int_type __eof = _Traits::eof();
+ __int_type __c = __in.rdbuf()->sgetc();
+
+ while (__extracted < __n
+ && !_Traits::eq_int_type(__c, __eof)
+ && !__ct.is(__ctype_base::space,
+ _Traits::to_char_type(__c)))
+ {
+ if (__len == sizeof(__buf) / sizeof(_CharT))
+ {
+ __str.append(__buf, sizeof(__buf) / sizeof(_CharT));
+ __len = 0;
+ }
+ __buf[__len++] = _Traits::to_char_type(__c);
+ ++__extracted;
+ __c = __in.rdbuf()->snextc();
+ }
+ __str.append(__buf, __len);
+
+ if (_Traits::eq_int_type(__c, __eof))
+ __err |= __ios_base::eofbit;
+ __in.width(0);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ __in._M_setstate(__ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ {
+
+
+
+ __in._M_setstate(__ios_base::badbit);
+ }
+ }
+
+ if (!__extracted)
+ __err |= __ios_base::failbit;
+ if (__err)
+ __in.setstate(__err);
+ return __in;
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_istream<_CharT, _Traits>&
+ getline(basic_istream<_CharT, _Traits>& __in,
+ basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim)
+ {
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
+ typedef typename __istream_type::ios_base __ios_base;
+ typedef typename __istream_type::int_type __int_type;
+ typedef typename __string_type::size_type __size_type;
+
+ __size_type __extracted = 0;
+ const __size_type __n = __str.max_size();
+ typename __ios_base::iostate __err = __ios_base::goodbit;
+ typename __istream_type::sentry __cerb(__in, true);
+ if (__cerb)
+ {
+ try
+ {
+ __str.erase();
+ const __int_type __idelim = _Traits::to_int_type(__delim);
+ const __int_type __eof = _Traits::eof();
+ __int_type __c = __in.rdbuf()->sgetc();
+
+ while (__extracted < __n
+ && !_Traits::eq_int_type(__c, __eof)
+ && !_Traits::eq_int_type(__c, __idelim))
+ {
+ __str += _Traits::to_char_type(__c);
+ ++__extracted;
+ __c = __in.rdbuf()->snextc();
+ }
+
+ if (_Traits::eq_int_type(__c, __eof))
+ __err |= __ios_base::eofbit;
+ else if (_Traits::eq_int_type(__c, __idelim))
+ {
+ ++__extracted;
+ __in.rdbuf()->sbumpc();
+ }
+ else
+ __err |= __ios_base::failbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ __in._M_setstate(__ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ {
+
+
+
+ __in._M_setstate(__ios_base::badbit);
+ }
+ }
+ if (!__extracted)
+ __err |= __ios_base::failbit;
+ if (__err)
+ __in.setstate(__err);
+ return __in;
+ }
+
+
+
+
+
+ extern template class basic_string<char>;
+ extern template
+ basic_istream<char>&
+ operator>>(basic_istream<char>&, string&);
+ extern template
+ basic_ostream<char>&
+ operator<<(basic_ostream<char>&, const string&);
+ extern template
+ basic_istream<char>&
+ getline(basic_istream<char>&, string&, char);
+ extern template
+ basic_istream<char>&
+ getline(basic_istream<char>&, string&);
+# 1139 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_string.tcc" 3
+}
+# 62 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/string" 2 3
+# 48 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 2 3
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 66 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ class locale
+ {
+ public:
+
+
+ typedef int category;
+
+
+ class facet;
+ class id;
+ class _Impl;
+
+ friend class facet;
+ friend class _Impl;
+
+ template<typename _Facet>
+ friend bool
+ has_facet(const locale&) throw();
+
+ template<typename _Facet>
+ friend const _Facet&
+ use_facet(const locale&);
+
+ template<typename _Cache>
+ friend struct __use_cache;
+# 102 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ static const category none = 0;
+ static const category ctype = 1L << 0;
+ static const category numeric = 1L << 1;
+ static const category collate = 1L << 2;
+ static const category time = 1L << 3;
+ static const category monetary = 1L << 4;
+ static const category messages = 1L << 5;
+ static const category all = (ctype | numeric | collate |
+ time | monetary | messages);
+# 121 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ locale() throw();
+# 130 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ locale(const locale& __other) throw();
+# 140 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ explicit
+ locale(const char* __s);
+# 155 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ locale(const locale& __base, const char* __s, category __cat);
+# 168 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ locale(const locale& __base, const locale& __add, category __cat);
+# 180 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ template<typename _Facet>
+ locale(const locale& __other, _Facet* __f);
+
+
+ ~locale() throw();
+# 194 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ const locale&
+ operator=(const locale& __other) throw();
+# 209 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ template<typename _Facet>
+ locale
+ combine(const locale& __other) const;
+
+
+
+
+
+
+ string
+ name() const;
+# 228 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ bool
+ operator==(const locale& __other) const throw ();
+
+
+
+
+
+
+
+ bool
+ operator!=(const locale& __other) const throw ()
+ { return !(this->operator==(__other)); }
+# 256 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ template<typename _Char, typename _Traits, typename _Alloc>
+ bool
+ operator()(const basic_string<_Char, _Traits, _Alloc>& __s1,
+ const basic_string<_Char, _Traits, _Alloc>& __s2) const;
+# 272 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ static locale
+ global(const locale&);
+
+
+
+
+ static const locale&
+ classic();
+
+ private:
+
+ _Impl* _M_impl;
+
+
+ static _Impl* _S_classic;
+
+
+ static _Impl* _S_global;
+
+
+
+
+
+ static const char* const* const _S_categories;
+# 307 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ enum { _S_categories_size = 6 + 0 };
+
+
+ static __gthread_once_t _S_once;
+
+
+ explicit
+ locale(_Impl*) throw();
+
+ static void
+ _S_initialize();
+
+ static void
+ _S_initialize_once();
+
+ static category
+ _S_normalize_category(category);
+
+ void
+ _M_coalesce(const locale& __base, const locale& __add, category __cat);
+ };
+# 340 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ class locale::facet
+ {
+ private:
+ friend class locale;
+ friend class locale::_Impl;
+
+ mutable _Atomic_word _M_refcount;
+
+
+ static __c_locale _S_c_locale;
+
+
+ static const char _S_c_name[2];
+
+
+ static __gthread_once_t _S_once;
+
+
+ static void
+ _S_initialize_once();
+
+ protected:
+# 371 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ explicit
+ facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0)
+ { }
+
+
+ virtual
+ ~facet();
+
+ static void
+ _S_create_c_locale(__c_locale& __cloc, const char* __s,
+ __c_locale __old = 0);
+
+ static __c_locale
+ _S_clone_c_locale(__c_locale& __cloc);
+
+ static void
+ _S_destroy_c_locale(__c_locale& __cloc);
+
+
+
+ static __c_locale
+ _S_get_c_locale();
+
+ static const char*
+ _S_get_c_name();
+
+ private:
+ void
+ _M_add_reference() const throw()
+ { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
+
+ void
+ _M_remove_reference() const throw()
+ {
+ if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
+ {
+ try
+ { delete this; }
+ catch(...)
+ { }
+ }
+ }
+
+ facet(const facet&);
+
+ facet&
+ operator=(const facet&);
+ };
+# 431 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ class locale::id
+ {
+ private:
+ friend class locale;
+ friend class locale::_Impl;
+
+ template<typename _Facet>
+ friend const _Facet&
+ use_facet(const locale&);
+
+ template<typename _Facet>
+ friend bool
+ has_facet(const locale&) throw ();
+
+
+
+
+ mutable size_t _M_index;
+
+
+ static _Atomic_word _S_refcount;
+
+ void
+ operator=(const id&);
+
+ id(const id&);
+
+ public:
+
+
+
+ id() { }
+
+ size_t
+ _M_id() const;
+ };
+
+
+
+ class locale::_Impl
+ {
+ public:
+
+ friend class locale;
+ friend class locale::facet;
+
+ template<typename _Facet>
+ friend bool
+ has_facet(const locale&) throw();
+
+ template<typename _Facet>
+ friend const _Facet&
+ use_facet(const locale&);
+
+ template<typename _Cache>
+ friend struct __use_cache;
+
+ private:
+
+ _Atomic_word _M_refcount;
+ const facet** _M_facets;
+ size_t _M_facets_size;
+ const facet** _M_caches;
+ char** _M_names;
+ static const locale::id* const _S_id_ctype[];
+ static const locale::id* const _S_id_numeric[];
+ static const locale::id* const _S_id_collate[];
+ static const locale::id* const _S_id_time[];
+ static const locale::id* const _S_id_monetary[];
+ static const locale::id* const _S_id_messages[];
+ static const locale::id* const* const _S_facet_categories[];
+
+ void
+ _M_add_reference() throw()
+ { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
+
+ void
+ _M_remove_reference() throw()
+ {
+ if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
+ {
+ try
+ { delete this; }
+ catch(...)
+ { }
+ }
+ }
+
+ _Impl(const _Impl&, size_t);
+ _Impl(const char*, size_t);
+ _Impl(size_t) throw();
+
+ ~_Impl() throw();
+
+ _Impl(const _Impl&);
+
+ void
+ operator=(const _Impl&);
+
+ bool
+ _M_check_same_name()
+ {
+ bool __ret = true;
+ if (_M_names[1])
+
+ for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)
+ __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0;
+ return __ret;
+ }
+
+ void
+ _M_replace_categories(const _Impl*, category);
+
+ void
+ _M_replace_category(const _Impl*, const locale::id* const*);
+
+ void
+ _M_replace_facet(const _Impl*, const locale::id*);
+
+ void
+ _M_install_facet(const locale::id*, const facet*);
+
+ template<typename _Facet>
+ void
+ _M_init_facet(_Facet* __facet)
+ { _M_install_facet(&_Facet::id, __facet); }
+
+ void
+ _M_install_cache(const facet*, size_t);
+ };
+# 574 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ template<typename _Facet>
+ bool
+ has_facet(const locale& __loc) throw();
+# 591 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ template<typename _Facet>
+ const _Facet&
+ use_facet(const locale& __loc);
+# 608 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ template<typename _CharT>
+ class collate : public locale::facet
+ {
+ public:
+
+
+
+ typedef _CharT char_type;
+ typedef basic_string<_CharT> string_type;
+
+
+ protected:
+
+
+ __c_locale _M_c_locale_collate;
+
+ public:
+
+ static locale::id id;
+# 635 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ explicit
+ collate(size_t __refs = 0)
+ : facet(__refs), _M_c_locale_collate(_S_get_c_locale())
+ { }
+# 649 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ explicit
+ collate(__c_locale __cloc, size_t __refs = 0)
+ : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc))
+ { }
+# 666 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ int
+ compare(const _CharT* __lo1, const _CharT* __hi1,
+ const _CharT* __lo2, const _CharT* __hi2) const
+ { return this->do_compare(__lo1, __hi1, __lo2, __hi2); }
+# 685 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ string_type
+ transform(const _CharT* __lo, const _CharT* __hi) const
+ { return this->do_transform(__lo, __hi); }
+# 699 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ long
+ hash(const _CharT* __lo, const _CharT* __hi) const
+ { return this->do_hash(__lo, __hi); }
+
+
+ int
+ _M_compare(const _CharT*, const _CharT*) const;
+
+ size_t
+ _M_transform(_CharT*, const _CharT*, size_t) const;
+
+ protected:
+
+ virtual
+ ~collate()
+ { _S_destroy_c_locale(_M_c_locale_collate); }
+# 728 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ virtual int
+ do_compare(const _CharT* __lo1, const _CharT* __hi1,
+ const _CharT* __lo2, const _CharT* __hi2) const;
+# 744 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ virtual string_type
+ do_transform(const _CharT* __lo, const _CharT* __hi) const;
+# 757 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ virtual long
+ do_hash(const _CharT* __lo, const _CharT* __hi) const;
+ };
+
+ template<typename _CharT>
+ locale::id collate<_CharT>::id;
+
+
+ template<>
+ int
+ collate<char>::_M_compare(const char*, const char*) const;
+
+ template<>
+ size_t
+ collate<char>::_M_transform(char*, const char*, size_t) const;
+# 784 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 3
+ template<typename _CharT>
+ class collate_byname : public collate<_CharT>
+ {
+ public:
+
+
+ typedef _CharT char_type;
+ typedef basic_string<_CharT> string_type;
+
+
+ explicit
+ collate_byname(const char* __s, size_t __refs = 0)
+ : collate<_CharT>(__refs)
+ {
+ if (__builtin_strcmp(__s, "C") != 0
+ && __builtin_strcmp(__s, "POSIX") != 0)
+ {
+ this->_S_destroy_c_locale(this->_M_c_locale_collate);
+ this->_S_create_c_locale(this->_M_c_locale_collate, __s);
+ }
+ }
+
+ protected:
+ virtual
+ ~collate_byname() { }
+ };
+
+}
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.tcc" 1 3
+# 40 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.tcc" 3
+#define _LOCALE_CLASSES_TCC 1
+
+
+# 43 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.tcc" 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _Facet>
+ locale::
+ locale(const locale& __other, _Facet* __f)
+ {
+ _M_impl = new _Impl(*__other._M_impl, 1);
+
+ try
+ { _M_impl->_M_install_facet(&_Facet::id, __f); }
+ catch(...)
+ {
+ _M_impl->_M_remove_reference();
+ throw;
+ }
+ delete [] _M_impl->_M_names[0];
+ _M_impl->_M_names[0] = 0;
+ }
+
+ template<typename _Facet>
+ locale
+ locale::
+ combine(const locale& __other) const
+ {
+ _Impl* __tmp = new _Impl(*_M_impl, 1);
+ try
+ {
+ __tmp->_M_replace_facet(__other._M_impl, &_Facet::id);
+ }
+ catch(...)
+ {
+ __tmp->_M_remove_reference();
+ throw;
+ }
+ return locale(__tmp);
+ }
+
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ bool
+ locale::
+ operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1,
+ const basic_string<_CharT, _Traits, _Alloc>& __s2) const
+ {
+ typedef std::collate<_CharT> __collate_type;
+ const __collate_type& __collate = use_facet<__collate_type>(*this);
+ return (__collate.compare(__s1.data(), __s1.data() + __s1.length(),
+ __s2.data(), __s2.data() + __s2.length()) < 0);
+ }
+
+
+ template<typename _Facet>
+ bool
+ has_facet(const locale& __loc) throw()
+ {
+ const size_t __i = _Facet::id._M_id();
+ const locale::facet** __facets = __loc._M_impl->_M_facets;
+ return (__i < __loc._M_impl->_M_facets_size
+
+ && dynamic_cast<const _Facet*>(__facets[__i]));
+
+
+
+ }
+
+ template<typename _Facet>
+ const _Facet&
+ use_facet(const locale& __loc)
+ {
+ const size_t __i = _Facet::id._M_id();
+ const locale::facet** __facets = __loc._M_impl->_M_facets;
+ if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i])
+ __throw_bad_cast();
+
+ return dynamic_cast<const _Facet&>(*__facets[__i]);
+
+
+
+ }
+
+
+
+ template<typename _CharT>
+ int
+ collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const
+ { return 0; }
+
+
+ template<typename _CharT>
+ size_t
+ collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const
+ { return 0; }
+
+ template<typename _CharT>
+ int
+ collate<_CharT>::
+ do_compare(const _CharT* __lo1, const _CharT* __hi1,
+ const _CharT* __lo2, const _CharT* __hi2) const
+ {
+
+
+ const string_type __one(__lo1, __hi1);
+ const string_type __two(__lo2, __hi2);
+
+ const _CharT* __p = __one.c_str();
+ const _CharT* __pend = __one.data() + __one.length();
+ const _CharT* __q = __two.c_str();
+ const _CharT* __qend = __two.data() + __two.length();
+
+
+
+
+ for (;;)
+ {
+ const int __res = _M_compare(__p, __q);
+ if (__res)
+ return __res;
+
+ __p += char_traits<_CharT>::length(__p);
+ __q += char_traits<_CharT>::length(__q);
+ if (__p == __pend && __q == __qend)
+ return 0;
+ else if (__p == __pend)
+ return -1;
+ else if (__q == __qend)
+ return 1;
+
+ __p++;
+ __q++;
+ }
+ }
+
+ template<typename _CharT>
+ typename collate<_CharT>::string_type
+ collate<_CharT>::
+ do_transform(const _CharT* __lo, const _CharT* __hi) const
+ {
+ string_type __ret;
+
+
+ const string_type __str(__lo, __hi);
+
+ const _CharT* __p = __str.c_str();
+ const _CharT* __pend = __str.data() + __str.length();
+
+ size_t __len = (__hi - __lo) * 2;
+
+ _CharT* __c = new _CharT[__len];
+
+ try
+ {
+
+
+
+ for (;;)
+ {
+
+ size_t __res = _M_transform(__c, __p, __len);
+
+
+ if (__res >= __len)
+ {
+ __len = __res + 1;
+ delete [] __c, __c = 0;
+ __c = new _CharT[__len];
+ __res = _M_transform(__c, __p, __len);
+ }
+
+ __ret.append(__c, __res);
+ __p += char_traits<_CharT>::length(__p);
+ if (__p == __pend)
+ break;
+
+ __p++;
+ __ret.push_back(_CharT());
+ }
+ }
+ catch(...)
+ {
+ delete [] __c;
+ throw;
+ }
+
+ delete [] __c;
+
+ return __ret;
+ }
+
+ template<typename _CharT>
+ long
+ collate<_CharT>::
+ do_hash(const _CharT* __lo, const _CharT* __hi) const
+ {
+ unsigned long __val = 0;
+ for (; __lo < __hi; ++__lo)
+ __val =
+ *__lo + ((__val << 7)
+ | (__val >> (__gnu_cxx::__numeric_traits<unsigned long>::
+ __digits - 7)));
+ return static_cast<long>(__val);
+ }
+
+
+
+
+
+ extern template class collate<char>;
+ extern template class collate_byname<char>;
+
+ extern template
+ const collate<char>&
+ use_facet<collate<char> >(const locale&);
+
+ extern template
+ bool
+ has_facet<collate<char> >(const locale&);
+# 274 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.tcc" 3
+}
+# 815 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_classes.h" 2 3
+# 49 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstdio" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstdio" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstdio" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstddef" 2 3
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cstdio" 2 3
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 2 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+
+
+
+ enum _Ios_Fmtflags
+ {
+ _S_boolalpha = 1L << 0,
+ _S_dec = 1L << 1,
+ _S_fixed = 1L << 2,
+ _S_hex = 1L << 3,
+ _S_internal = 1L << 4,
+ _S_left = 1L << 5,
+ _S_oct = 1L << 6,
+ _S_right = 1L << 7,
+ _S_scientific = 1L << 8,
+ _S_showbase = 1L << 9,
+ _S_showpoint = 1L << 10,
+ _S_showpos = 1L << 11,
+ _S_skipws = 1L << 12,
+ _S_unitbuf = 1L << 13,
+ _S_uppercase = 1L << 14,
+ _S_adjustfield = _S_left | _S_right | _S_internal,
+ _S_basefield = _S_dec | _S_oct | _S_hex,
+ _S_floatfield = _S_scientific | _S_fixed,
+ _S_ios_fmtflags_end = 1L << 16
+ };
+
+ inline _Ios_Fmtflags
+ operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
+ { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); }
+
+ inline _Ios_Fmtflags
+ operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
+ { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); }
+
+ inline _Ios_Fmtflags
+ operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
+ { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); }
+
+ inline _Ios_Fmtflags&
+ operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
+ { return __a = __a | __b; }
+
+ inline _Ios_Fmtflags&
+ operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
+ { return __a = __a & __b; }
+
+ inline _Ios_Fmtflags&
+ operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
+ { return __a = __a ^ __b; }
+
+ inline _Ios_Fmtflags
+ operator~(_Ios_Fmtflags __a)
+ { return _Ios_Fmtflags(~static_cast<int>(__a)); }
+
+
+ enum _Ios_Openmode
+ {
+ _S_app = 1L << 0,
+ _S_ate = 1L << 1,
+ _S_bin = 1L << 2,
+ _S_in = 1L << 3,
+ _S_out = 1L << 4,
+ _S_trunc = 1L << 5,
+ _S_ios_openmode_end = 1L << 16
+ };
+
+ inline _Ios_Openmode
+ operator&(_Ios_Openmode __a, _Ios_Openmode __b)
+ { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); }
+
+ inline _Ios_Openmode
+ operator|(_Ios_Openmode __a, _Ios_Openmode __b)
+ { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); }
+
+ inline _Ios_Openmode
+ operator^(_Ios_Openmode __a, _Ios_Openmode __b)
+ { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); }
+
+ inline _Ios_Openmode&
+ operator|=(_Ios_Openmode& __a, _Ios_Openmode __b)
+ { return __a = __a | __b; }
+
+ inline _Ios_Openmode&
+ operator&=(_Ios_Openmode& __a, _Ios_Openmode __b)
+ { return __a = __a & __b; }
+
+ inline _Ios_Openmode&
+ operator^=(_Ios_Openmode& __a, _Ios_Openmode __b)
+ { return __a = __a ^ __b; }
+
+ inline _Ios_Openmode
+ operator~(_Ios_Openmode __a)
+ { return _Ios_Openmode(~static_cast<int>(__a)); }
+
+
+ enum _Ios_Iostate
+ {
+ _S_goodbit = 0,
+ _S_badbit = 1L << 0,
+ _S_eofbit = 1L << 1,
+ _S_failbit = 1L << 2,
+ _S_ios_iostate_end = 1L << 16
+ };
+
+ inline _Ios_Iostate
+ operator&(_Ios_Iostate __a, _Ios_Iostate __b)
+ { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); }
+
+ inline _Ios_Iostate
+ operator|(_Ios_Iostate __a, _Ios_Iostate __b)
+ { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); }
+
+ inline _Ios_Iostate
+ operator^(_Ios_Iostate __a, _Ios_Iostate __b)
+ { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); }
+
+ inline _Ios_Iostate&
+ operator|=(_Ios_Iostate& __a, _Ios_Iostate __b)
+ { return __a = __a | __b; }
+
+ inline _Ios_Iostate&
+ operator&=(_Ios_Iostate& __a, _Ios_Iostate __b)
+ { return __a = __a & __b; }
+
+ inline _Ios_Iostate&
+ operator^=(_Ios_Iostate& __a, _Ios_Iostate __b)
+ { return __a = __a ^ __b; }
+
+ inline _Ios_Iostate
+ operator~(_Ios_Iostate __a)
+ { return _Ios_Iostate(~static_cast<int>(__a)); }
+
+ enum _Ios_Seekdir
+ {
+ _S_beg = 0,
+ _S_cur = 1,
+ _S_end = 2,
+ _S_ios_seekdir_end = 1L << 16
+ };
+# 203 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ class ios_base
+ {
+ public:
+
+
+
+ class failure : public exception
+ {
+ public:
+
+
+ explicit
+ failure(const string& __str) throw();
+
+
+
+ virtual
+ ~failure() throw();
+
+ virtual const char*
+ what() const throw();
+
+ private:
+ string _M_msg;
+ };
+# 255 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ typedef _Ios_Fmtflags fmtflags;
+
+
+ static const fmtflags boolalpha = _S_boolalpha;
+
+
+ static const fmtflags dec = _S_dec;
+
+
+ static const fmtflags fixed = _S_fixed;
+
+
+ static const fmtflags hex = _S_hex;
+
+
+
+
+ static const fmtflags internal = _S_internal;
+
+
+
+ static const fmtflags left = _S_left;
+
+
+ static const fmtflags oct = _S_oct;
+
+
+
+ static const fmtflags right = _S_right;
+
+
+ static const fmtflags scientific = _S_scientific;
+
+
+
+ static const fmtflags showbase = _S_showbase;
+
+
+
+ static const fmtflags showpoint = _S_showpoint;
+
+
+ static const fmtflags showpos = _S_showpos;
+
+
+ static const fmtflags skipws = _S_skipws;
+
+
+ static const fmtflags unitbuf = _S_unitbuf;
+
+
+
+ static const fmtflags uppercase = _S_uppercase;
+
+
+ static const fmtflags adjustfield = _S_adjustfield;
+
+
+ static const fmtflags basefield = _S_basefield;
+
+
+ static const fmtflags floatfield = _S_floatfield;
+# 330 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ typedef _Ios_Iostate iostate;
+
+
+
+ static const iostate badbit = _S_badbit;
+
+
+ static const iostate eofbit = _S_eofbit;
+
+
+
+
+ static const iostate failbit = _S_failbit;
+
+
+ static const iostate goodbit = _S_goodbit;
+# 361 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ typedef _Ios_Openmode openmode;
+
+
+ static const openmode app = _S_app;
+
+
+ static const openmode ate = _S_ate;
+
+
+
+
+ static const openmode binary = _S_bin;
+
+
+ static const openmode in = _S_in;
+
+
+ static const openmode out = _S_out;
+
+
+ static const openmode trunc = _S_trunc;
+# 393 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ typedef _Ios_Seekdir seekdir;
+
+
+ static const seekdir beg = _S_beg;
+
+
+ static const seekdir cur = _S_cur;
+
+
+ static const seekdir end = _S_end;
+
+
+ typedef int io_state;
+ typedef int open_mode;
+ typedef int seek_dir;
+
+ typedef std::streampos streampos;
+ typedef std::streamoff streamoff;
+# 419 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ enum event
+ {
+ erase_event,
+ imbue_event,
+ copyfmt_event
+ };
+# 436 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ typedef void (*event_callback) (event, ios_base&, int);
+# 448 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ void
+ register_callback(event_callback __fn, int __index);
+
+ protected:
+
+
+
+
+ streamsize _M_precision;
+ streamsize _M_width;
+ fmtflags _M_flags;
+ iostate _M_exception;
+ iostate _M_streambuf_state;
+
+
+
+
+ struct _Callback_list
+ {
+
+ _Callback_list* _M_next;
+ ios_base::event_callback _M_fn;
+ int _M_index;
+ _Atomic_word _M_refcount;
+
+ _Callback_list(ios_base::event_callback __fn, int __index,
+ _Callback_list* __cb)
+ : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { }
+
+ void
+ _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
+
+
+ int
+ _M_remove_reference()
+ { return __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); }
+ };
+
+ _Callback_list* _M_callbacks;
+
+ void
+ _M_call_callbacks(event __ev) throw();
+
+ void
+ _M_dispose_callbacks(void);
+
+
+ struct _Words
+ {
+ void* _M_pword;
+ long _M_iword;
+ _Words() : _M_pword(0), _M_iword(0) { }
+ };
+
+
+ _Words _M_word_zero;
+
+
+
+ enum { _S_local_word_size = 8 };
+ _Words _M_local_word[_S_local_word_size];
+
+
+ int _M_word_size;
+ _Words* _M_word;
+
+ _Words&
+ _M_grow_words(int __index, bool __iword);
+
+
+ locale _M_ios_locale;
+
+ void
+ _M_init();
+
+ public:
+
+
+
+
+
+ class Init
+ {
+ friend class ios_base;
+ public:
+ Init();
+ ~Init();
+
+ private:
+ static _Atomic_word _S_refcount;
+ static bool _S_synced_with_stdio;
+ };
+
+
+
+
+
+
+ fmtflags
+ flags() const
+ { return _M_flags; }
+# 557 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ fmtflags
+ flags(fmtflags __fmtfl)
+ {
+ fmtflags __old = _M_flags;
+ _M_flags = __fmtfl;
+ return __old;
+ }
+# 573 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ fmtflags
+ setf(fmtflags __fmtfl)
+ {
+ fmtflags __old = _M_flags;
+ _M_flags |= __fmtfl;
+ return __old;
+ }
+# 590 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ fmtflags
+ setf(fmtflags __fmtfl, fmtflags __mask)
+ {
+ fmtflags __old = _M_flags;
+ _M_flags &= ~__mask;
+ _M_flags |= (__fmtfl & __mask);
+ return __old;
+ }
+
+
+
+
+
+
+
+ void
+ unsetf(fmtflags __mask)
+ { _M_flags &= ~__mask; }
+# 616 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ streamsize
+ precision() const
+ { return _M_precision; }
+
+
+
+
+
+
+ streamsize
+ precision(streamsize __prec)
+ {
+ streamsize __old = _M_precision;
+ _M_precision = __prec;
+ return __old;
+ }
+
+
+
+
+
+
+
+ streamsize
+ width() const
+ { return _M_width; }
+
+
+
+
+
+
+ streamsize
+ width(streamsize __wide)
+ {
+ streamsize __old = _M_width;
+ _M_width = __wide;
+ return __old;
+ }
+# 667 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ static bool
+ sync_with_stdio(bool __sync = true);
+# 679 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ locale
+ imbue(const locale& __loc);
+# 690 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ locale
+ getloc() const
+ { return _M_ios_locale; }
+# 701 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ const locale&
+ _M_getloc() const
+ { return _M_ios_locale; }
+# 720 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ static int
+ xalloc() throw();
+# 736 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ long&
+ iword(int __ix)
+ {
+ _Words& __word = (__ix < _M_word_size)
+ ? _M_word[__ix] : _M_grow_words(__ix, true);
+ return __word._M_iword;
+ }
+# 757 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ void*&
+ pword(int __ix)
+ {
+ _Words& __word = (__ix < _M_word_size)
+ ? _M_word[__ix] : _M_grow_words(__ix, false);
+ return __word._M_pword;
+ }
+# 774 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ios_base.h" 3
+ virtual ~ios_base();
+
+ protected:
+ ios_base();
+
+
+
+ private:
+ ios_base(const ios_base&);
+
+ ios_base&
+ operator=(const ios_base&);
+ };
+
+
+
+ inline ios_base&
+ boolalpha(ios_base& __base)
+ {
+ __base.setf(ios_base::boolalpha);
+ return __base;
+ }
+
+
+ inline ios_base&
+ noboolalpha(ios_base& __base)
+ {
+ __base.unsetf(ios_base::boolalpha);
+ return __base;
+ }
+
+
+ inline ios_base&
+ showbase(ios_base& __base)
+ {
+ __base.setf(ios_base::showbase);
+ return __base;
+ }
+
+
+ inline ios_base&
+ noshowbase(ios_base& __base)
+ {
+ __base.unsetf(ios_base::showbase);
+ return __base;
+ }
+
+
+ inline ios_base&
+ showpoint(ios_base& __base)
+ {
+ __base.setf(ios_base::showpoint);
+ return __base;
+ }
+
+
+ inline ios_base&
+ noshowpoint(ios_base& __base)
+ {
+ __base.unsetf(ios_base::showpoint);
+ return __base;
+ }
+
+
+ inline ios_base&
+ showpos(ios_base& __base)
+ {
+ __base.setf(ios_base::showpos);
+ return __base;
+ }
+
+
+ inline ios_base&
+ noshowpos(ios_base& __base)
+ {
+ __base.unsetf(ios_base::showpos);
+ return __base;
+ }
+
+
+ inline ios_base&
+ skipws(ios_base& __base)
+ {
+ __base.setf(ios_base::skipws);
+ return __base;
+ }
+
+
+ inline ios_base&
+ noskipws(ios_base& __base)
+ {
+ __base.unsetf(ios_base::skipws);
+ return __base;
+ }
+
+
+ inline ios_base&
+ uppercase(ios_base& __base)
+ {
+ __base.setf(ios_base::uppercase);
+ return __base;
+ }
+
+
+ inline ios_base&
+ nouppercase(ios_base& __base)
+ {
+ __base.unsetf(ios_base::uppercase);
+ return __base;
+ }
+
+
+ inline ios_base&
+ unitbuf(ios_base& __base)
+ {
+ __base.setf(ios_base::unitbuf);
+ return __base;
+ }
+
+
+ inline ios_base&
+ nounitbuf(ios_base& __base)
+ {
+ __base.unsetf(ios_base::unitbuf);
+ return __base;
+ }
+
+
+
+ inline ios_base&
+ internal(ios_base& __base)
+ {
+ __base.setf(ios_base::internal, ios_base::adjustfield);
+ return __base;
+ }
+
+
+ inline ios_base&
+ left(ios_base& __base)
+ {
+ __base.setf(ios_base::left, ios_base::adjustfield);
+ return __base;
+ }
+
+
+ inline ios_base&
+ right(ios_base& __base)
+ {
+ __base.setf(ios_base::right, ios_base::adjustfield);
+ return __base;
+ }
+
+
+
+ inline ios_base&
+ dec(ios_base& __base)
+ {
+ __base.setf(ios_base::dec, ios_base::basefield);
+ return __base;
+ }
+
+
+ inline ios_base&
+ hex(ios_base& __base)
+ {
+ __base.setf(ios_base::hex, ios_base::basefield);
+ return __base;
+ }
+
+
+ inline ios_base&
+ oct(ios_base& __base)
+ {
+ __base.setf(ios_base::oct, ios_base::basefield);
+ return __base;
+ }
+
+
+
+ inline ios_base&
+ fixed(ios_base& __base)
+ {
+ __base.setf(ios_base::fixed, ios_base::floatfield);
+ return __base;
+ }
+
+
+ inline ios_base&
+ scientific(ios_base& __base)
+ {
+ __base.setf(ios_base::scientific, ios_base::floatfield);
+ return __base;
+ }
+
+}
+# 49 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ios" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 1 3
+# 40 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+#define _GLIBXX_STREAMBUF 1
+
+
+# 43 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+# 51 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _CharT, typename _Traits>
+ streamsize
+ __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*,
+ basic_streambuf<_CharT, _Traits>*, bool&);
+# 118 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ template<typename _CharT, typename _Traits>
+ class basic_streambuf
+ {
+ public:
+
+
+
+
+
+
+ typedef _CharT char_type;
+ typedef _Traits traits_type;
+ typedef typename traits_type::int_type int_type;
+ typedef typename traits_type::pos_type pos_type;
+ typedef typename traits_type::off_type off_type;
+
+
+
+
+ typedef basic_streambuf<char_type, traits_type> __streambuf_type;
+
+
+ friend class basic_ios<char_type, traits_type>;
+ friend class basic_istream<char_type, traits_type>;
+ friend class basic_ostream<char_type, traits_type>;
+ friend class istreambuf_iterator<char_type, traits_type>;
+ friend class ostreambuf_iterator<char_type, traits_type>;
+
+ friend streamsize
+ __copy_streambufs_eof<>(__streambuf_type*, __streambuf_type*, bool&);
+
+ template<bool _IsMove, typename _CharT2>
+ friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+ _CharT2*>::__type
+ __copy_move_a2(istreambuf_iterator<_CharT2>,
+ istreambuf_iterator<_CharT2>, _CharT2*);
+
+ template<typename _CharT2>
+ friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+ istreambuf_iterator<_CharT2> >::__type
+ find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
+ const _CharT2&);
+
+ template<typename _CharT2, typename _Traits2>
+ friend basic_istream<_CharT2, _Traits2>&
+ operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*);
+
+ template<typename _CharT2, typename _Traits2, typename _Alloc>
+ friend basic_istream<_CharT2, _Traits2>&
+ operator>>(basic_istream<_CharT2, _Traits2>&,
+ basic_string<_CharT2, _Traits2, _Alloc>&);
+
+ template<typename _CharT2, typename _Traits2, typename _Alloc>
+ friend basic_istream<_CharT2, _Traits2>&
+ getline(basic_istream<_CharT2, _Traits2>&,
+ basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2);
+
+ protected:
+# 184 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ char_type* _M_in_beg;
+ char_type* _M_in_cur;
+ char_type* _M_in_end;
+ char_type* _M_out_beg;
+ char_type* _M_out_cur;
+ char_type* _M_out_end;
+
+
+ locale _M_buf_locale;
+
+ public:
+
+ virtual
+ ~basic_streambuf()
+ { }
+# 208 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ locale
+ pubimbue(const locale &__loc)
+ {
+ locale __tmp(this->getloc());
+ this->imbue(__loc);
+ _M_buf_locale = __loc;
+ return __tmp;
+ }
+# 225 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ locale
+ getloc() const
+ { return _M_buf_locale; }
+# 238 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ __streambuf_type*
+ pubsetbuf(char_type* __s, streamsize __n)
+ { return this->setbuf(__s, __n); }
+
+ pos_type
+ pubseekoff(off_type __off, ios_base::seekdir __way,
+ ios_base::openmode __mode = ios_base::in | ios_base::out)
+ { return this->seekoff(__off, __way, __mode); }
+
+ pos_type
+ pubseekpos(pos_type __sp,
+ ios_base::openmode __mode = ios_base::in | ios_base::out)
+ { return this->seekpos(__sp, __mode); }
+
+ int
+ pubsync() { return this->sync(); }
+# 265 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ streamsize
+ in_avail()
+ {
+ const streamsize __ret = this->egptr() - this->gptr();
+ return __ret ? __ret : this->showmanyc();
+ }
+# 279 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ int_type
+ snextc()
+ {
+ int_type __ret = traits_type::eof();
+ if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(),
+ __ret), true))
+ __ret = this->sgetc();
+ return __ret;
+ }
+# 297 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ int_type
+ sbumpc()
+ {
+ int_type __ret;
+ if (__builtin_expect(this->gptr() < this->egptr(), true))
+ {
+ __ret = traits_type::to_int_type(*this->gptr());
+ this->gbump(1);
+ }
+ else
+ __ret = this->uflow();
+ return __ret;
+ }
+# 319 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ int_type
+ sgetc()
+ {
+ int_type __ret;
+ if (__builtin_expect(this->gptr() < this->egptr(), true))
+ __ret = traits_type::to_int_type(*this->gptr());
+ else
+ __ret = this->underflow();
+ return __ret;
+ }
+# 338 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ streamsize
+ sgetn(char_type* __s, streamsize __n)
+ { return this->xsgetn(__s, __n); }
+# 352 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ int_type
+ sputbackc(char_type __c)
+ {
+ int_type __ret;
+ const bool __testpos = this->eback() < this->gptr();
+ if (__builtin_expect(!__testpos ||
+ !traits_type::eq(__c, this->gptr()[-1]), false))
+ __ret = this->pbackfail(traits_type::to_int_type(__c));
+ else
+ {
+ this->gbump(-1);
+ __ret = traits_type::to_int_type(*this->gptr());
+ }
+ return __ret;
+ }
+# 377 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ int_type
+ sungetc()
+ {
+ int_type __ret;
+ if (__builtin_expect(this->eback() < this->gptr(), true))
+ {
+ this->gbump(-1);
+ __ret = traits_type::to_int_type(*this->gptr());
+ }
+ else
+ __ret = this->pbackfail();
+ return __ret;
+ }
+# 404 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ int_type
+ sputc(char_type __c)
+ {
+ int_type __ret;
+ if (__builtin_expect(this->pptr() < this->epptr(), true))
+ {
+ *this->pptr() = __c;
+ this->pbump(1);
+ __ret = traits_type::to_int_type(__c);
+ }
+ else
+ __ret = this->overflow(traits_type::to_int_type(__c));
+ return __ret;
+ }
+# 430 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ streamsize
+ sputn(const char_type* __s, streamsize __n)
+ { return this->xsputn(__s, __n); }
+
+ protected:
+# 444 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ basic_streambuf()
+ : _M_in_beg(0), _M_in_cur(0), _M_in_end(0),
+ _M_out_beg(0), _M_out_cur(0), _M_out_end(0),
+ _M_buf_locale(locale())
+ { }
+# 462 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ char_type*
+ eback() const { return _M_in_beg; }
+
+ char_type*
+ gptr() const { return _M_in_cur; }
+
+ char_type*
+ egptr() const { return _M_in_end; }
+# 478 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ void
+ gbump(int __n) { _M_in_cur += __n; }
+# 489 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ void
+ setg(char_type* __gbeg, char_type* __gnext, char_type* __gend)
+ {
+ _M_in_beg = __gbeg;
+ _M_in_cur = __gnext;
+ _M_in_end = __gend;
+ }
+# 509 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ char_type*
+ pbase() const { return _M_out_beg; }
+
+ char_type*
+ pptr() const { return _M_out_cur; }
+
+ char_type*
+ epptr() const { return _M_out_end; }
+# 525 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ void
+ pbump(int __n) { _M_out_cur += __n; }
+# 535 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ void
+ setp(char_type* __pbeg, char_type* __pend)
+ {
+ _M_out_beg = _M_out_cur = __pbeg;
+ _M_out_end = __pend;
+ }
+# 556 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ virtual void
+ imbue(const locale&)
+ { }
+# 571 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ virtual basic_streambuf<char_type,_Traits>*
+ setbuf(char_type*, streamsize)
+ { return this; }
+# 582 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ virtual pos_type
+ seekoff(off_type, ios_base::seekdir,
+ ios_base::openmode = ios_base::in | ios_base::out)
+ { return pos_type(off_type(-1)); }
+# 594 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ virtual pos_type
+ seekpos(pos_type,
+ ios_base::openmode = ios_base::in | ios_base::out)
+ { return pos_type(off_type(-1)); }
+# 607 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ virtual int
+ sync() { return 0; }
+# 629 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ virtual streamsize
+ showmanyc() { return 0; }
+# 645 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ virtual streamsize
+ xsgetn(char_type* __s, streamsize __n);
+# 667 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ virtual int_type
+ underflow()
+ { return traits_type::eof(); }
+# 680 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ virtual int_type
+ uflow()
+ {
+ int_type __ret = traits_type::eof();
+ const bool __testeof = traits_type::eq_int_type(this->underflow(),
+ __ret);
+ if (!__testeof)
+ {
+ __ret = traits_type::to_int_type(*this->gptr());
+ this->gbump(1);
+ }
+ return __ret;
+ }
+# 704 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ virtual int_type
+ pbackfail(int_type = traits_type::eof())
+ { return traits_type::eof(); }
+# 722 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ virtual streamsize
+ xsputn(const char_type* __s, streamsize __n);
+# 747 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ virtual int_type
+ overflow(int_type = traits_type::eof())
+ { return traits_type::eof(); }
+
+
+
+ public:
+# 762 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 3
+ void
+ stossc()
+ {
+ if (this->gptr() < this->egptr())
+ this->gbump(1);
+ else
+ this->uflow();
+ }
+
+
+ private:
+
+
+ basic_streambuf(const __streambuf_type& __sb)
+ : _M_in_beg(__sb._M_in_beg), _M_in_cur(__sb._M_in_cur),
+ _M_in_end(__sb._M_in_end), _M_out_beg(__sb._M_out_beg),
+ _M_out_cur(__sb._M_out_cur), _M_out_end(__sb._M_out_cur),
+ _M_buf_locale(__sb._M_buf_locale)
+ { }
+
+ __streambuf_type&
+ operator=(const __streambuf_type&) { return *this; };
+ };
+
+
+ template<>
+ streamsize
+ __copy_streambufs_eof(basic_streambuf<char>* __sbin,
+ basic_streambuf<char>* __sbout, bool& __ineof);
+
+
+
+
+
+
+
+}
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/streambuf.tcc" 1 3
+# 41 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/streambuf.tcc" 3
+#define _STREAMBUF_TCC 1
+
+
+# 44 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/streambuf.tcc" 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _CharT, typename _Traits>
+ streamsize
+ basic_streambuf<_CharT, _Traits>::
+ xsgetn(char_type* __s, streamsize __n)
+ {
+ streamsize __ret = 0;
+ while (__ret < __n)
+ {
+ const streamsize __buf_len = this->egptr() - this->gptr();
+ if (__buf_len)
+ {
+ const streamsize __remaining = __n - __ret;
+ const streamsize __len = std::min(__buf_len, __remaining);
+ traits_type::copy(__s, this->gptr(), __len);
+ __ret += __len;
+ __s += __len;
+ this->gbump(__len);
+ }
+
+ if (__ret < __n)
+ {
+ const int_type __c = this->uflow();
+ if (!traits_type::eq_int_type(__c, traits_type::eof()))
+ {
+ traits_type::assign(*__s++, traits_type::to_char_type(__c));
+ ++__ret;
+ }
+ else
+ break;
+ }
+ }
+ return __ret;
+ }
+
+ template<typename _CharT, typename _Traits>
+ streamsize
+ basic_streambuf<_CharT, _Traits>::
+ xsputn(const char_type* __s, streamsize __n)
+ {
+ streamsize __ret = 0;
+ while (__ret < __n)
+ {
+ const streamsize __buf_len = this->epptr() - this->pptr();
+ if (__buf_len)
+ {
+ const streamsize __remaining = __n - __ret;
+ const streamsize __len = std::min(__buf_len, __remaining);
+ traits_type::copy(this->pptr(), __s, __len);
+ __ret += __len;
+ __s += __len;
+ this->pbump(__len);
+ }
+
+ if (__ret < __n)
+ {
+ int_type __c = this->overflow(traits_type::to_int_type(*__s));
+ if (!traits_type::eq_int_type(__c, traits_type::eof()))
+ {
+ ++__ret;
+ ++__s;
+ }
+ else
+ break;
+ }
+ }
+ return __ret;
+ }
+
+
+
+
+ template<typename _CharT, typename _Traits>
+ streamsize
+ __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin,
+ basic_streambuf<_CharT, _Traits>* __sbout,
+ bool& __ineof)
+ {
+ streamsize __ret = 0;
+ __ineof = true;
+ typename _Traits::int_type __c = __sbin->sgetc();
+ while (!_Traits::eq_int_type(__c, _Traits::eof()))
+ {
+ __c = __sbout->sputc(_Traits::to_char_type(__c));
+ if (_Traits::eq_int_type(__c, _Traits::eof()))
+ {
+ __ineof = false;
+ break;
+ }
+ ++__ret;
+ __c = __sbin->snextc();
+ }
+ return __ret;
+ }
+
+ template<typename _CharT, typename _Traits>
+ inline streamsize
+ __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin,
+ basic_streambuf<_CharT, _Traits>* __sbout)
+ {
+ bool __ineof;
+ return __copy_streambufs_eof(__sbin, __sbout, __ineof);
+ }
+
+
+
+
+
+ extern template class basic_streambuf<char>;
+ extern template
+ streamsize
+ __copy_streambufs(basic_streambuf<char>*,
+ basic_streambuf<char>*);
+ extern template
+ streamsize
+ __copy_streambufs_eof(basic_streambuf<char>*,
+ basic_streambuf<char>*, bool&);
+# 177 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/streambuf.tcc" 3
+}
+# 802 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/streambuf" 2 3
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ios" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 1 3
+# 38 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+#define _BASIC_IOS_H 1
+
+
+# 41 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 1 3
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+#define _LOCALE_FACETS_H 1
+
+
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cwctype" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cwctype" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cwctype" 3
+# 55 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cwctype" 3
+#define _GLIBCXX_CWCTYPE 1
+
+
+#undef iswalnum
+#undef iswalpha
+
+
+
+#undef iswcntrl
+#undef iswctype
+#undef iswdigit
+#undef iswgraph
+#undef iswlower
+#undef iswprint
+#undef iswpunct
+#undef iswspace
+#undef iswupper
+#undef iswxdigit
+#undef towctrans
+#undef towlower
+#undef towupper
+#undef wctrans
+#undef wctype
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cctype" 1 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cctype" 3
+
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/cctype" 3
+# 48 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/ctype_base.h" 1 3
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/ctype_base.h" 3
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+ struct ctype_base
+ {
+
+
+
+ typedef const __ctype_touplow_t* __to_type;
+
+
+
+ typedef __ctype_mask_t mask;
+ static const mask upper = _ISupper;
+ static const mask lower = _ISlower;
+ static const mask alpha = _ISalpha;
+ static const mask digit = _ISdigit;
+ static const mask xdigit = _ISxdigit;
+ static const mask space = _ISspace;
+ static const mask print = _ISprint;
+ static const mask graph = _ISalpha | _ISdigit | _ISpunct;
+ static const mask cntrl = _IScntrl;
+ static const mask punct = _ISpunct;
+ static const mask alnum = _ISalpha | _ISdigit;
+ };
+
+}
+# 49 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 2 3
+
+
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/streambuf_iterator.h" 1 3
+# 38 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/streambuf_iterator.h" 3
+#define _STREAMBUF_ITERATOR_H 1
+
+
+# 41 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/streambuf_iterator.h" 3
+
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+
+ template<typename _CharT, typename _Traits>
+ class istreambuf_iterator
+ : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type,
+ _CharT*, _CharT&>
+ {
+ public:
+
+
+
+ typedef _CharT char_type;
+ typedef _Traits traits_type;
+ typedef typename _Traits::int_type int_type;
+ typedef basic_streambuf<_CharT, _Traits> streambuf_type;
+ typedef basic_istream<_CharT, _Traits> istream_type;
+
+
+ template<typename _CharT2>
+ friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+ ostreambuf_iterator<_CharT2> >::__type
+ copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
+ ostreambuf_iterator<_CharT2>);
+
+ template<bool _IsMove, typename _CharT2>
+ friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+ _CharT2*>::__type
+ __copy_move_a2(istreambuf_iterator<_CharT2>,
+ istreambuf_iterator<_CharT2>, _CharT2*);
+
+ template<typename _CharT2>
+ friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+ istreambuf_iterator<_CharT2> >::__type
+ find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
+ const _CharT2&);
+
+ private:
+
+
+
+
+
+
+
+ mutable streambuf_type* _M_sbuf;
+ mutable int_type _M_c;
+
+ public:
+
+ istreambuf_iterator() throw()
+ : _M_sbuf(0), _M_c(traits_type::eof()) { }
+
+
+ istreambuf_iterator(istream_type& __s) throw()
+ : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { }
+
+
+ istreambuf_iterator(streambuf_type* __s) throw()
+ : _M_sbuf(__s), _M_c(traits_type::eof()) { }
+
+
+
+
+ char_type
+ operator*() const
+ {
+
+
+
+
+
+
+
+ return traits_type::to_char_type(_M_get());
+ }
+
+
+ istreambuf_iterator&
+ operator++()
+ {
+ ;
+
+
+ if (_M_sbuf)
+ {
+ _M_sbuf->sbumpc();
+ _M_c = traits_type::eof();
+ }
+ return *this;
+ }
+
+
+ istreambuf_iterator
+ operator++(int)
+ {
+ ;
+
+
+
+ istreambuf_iterator __old = *this;
+ if (_M_sbuf)
+ {
+ __old._M_c = _M_sbuf->sbumpc();
+ _M_c = traits_type::eof();
+ }
+ return __old;
+ }
+
+
+
+
+
+ bool
+ equal(const istreambuf_iterator& __b) const
+ { return _M_at_eof() == __b._M_at_eof(); }
+
+ private:
+ int_type
+ _M_get() const
+ {
+ const int_type __eof = traits_type::eof();
+ int_type __ret = __eof;
+ if (_M_sbuf)
+ {
+ if (!traits_type::eq_int_type(_M_c, __eof))
+ __ret = _M_c;
+ else if (!traits_type::eq_int_type((__ret = _M_sbuf->sgetc()),
+ __eof))
+ _M_c = __ret;
+ else
+ _M_sbuf = 0;
+ }
+ return __ret;
+ }
+
+ bool
+ _M_at_eof() const
+ {
+ const int_type __eof = traits_type::eof();
+ return traits_type::eq_int_type(_M_get(), __eof);
+ }
+ };
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator==(const istreambuf_iterator<_CharT, _Traits>& __a,
+ const istreambuf_iterator<_CharT, _Traits>& __b)
+ { return __a.equal(__b); }
+
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator!=(const istreambuf_iterator<_CharT, _Traits>& __a,
+ const istreambuf_iterator<_CharT, _Traits>& __b)
+ { return !__a.equal(__b); }
+
+
+ template<typename _CharT, typename _Traits>
+ class ostreambuf_iterator
+ : public iterator<output_iterator_tag, void, void, void, void>
+ {
+ public:
+
+
+
+ typedef _CharT char_type;
+ typedef _Traits traits_type;
+ typedef basic_streambuf<_CharT, _Traits> streambuf_type;
+ typedef basic_ostream<_CharT, _Traits> ostream_type;
+
+
+ template<typename _CharT2>
+ friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+ ostreambuf_iterator<_CharT2> >::__type
+ copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
+ ostreambuf_iterator<_CharT2>);
+
+ private:
+ streambuf_type* _M_sbuf;
+ bool _M_failed;
+
+ public:
+
+ ostreambuf_iterator(ostream_type& __s) throw ()
+ : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { }
+
+
+ ostreambuf_iterator(streambuf_type* __s) throw ()
+ : _M_sbuf(__s), _M_failed(!_M_sbuf) { }
+
+
+ ostreambuf_iterator&
+ operator=(_CharT __c)
+ {
+ if (!_M_failed &&
+ _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof()))
+ _M_failed = true;
+ return *this;
+ }
+
+
+ ostreambuf_iterator&
+ operator*()
+ { return *this; }
+
+
+ ostreambuf_iterator&
+ operator++(int)
+ { return *this; }
+
+
+ ostreambuf_iterator&
+ operator++()
+ { return *this; }
+
+
+ bool
+ failed() const throw()
+ { return _M_failed; }
+
+ ostreambuf_iterator&
+ _M_put(const _CharT* __ws, streamsize __len)
+ {
+ if (__builtin_expect(!_M_failed, true)
+ && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len,
+ false))
+ _M_failed = true;
+ return *this;
+ }
+ };
+
+
+ template<typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ ostreambuf_iterator<_CharT> >::__type
+ copy(istreambuf_iterator<_CharT> __first,
+ istreambuf_iterator<_CharT> __last,
+ ostreambuf_iterator<_CharT> __result)
+ {
+ if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed)
+ {
+ bool __ineof;
+ __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof);
+ if (!__ineof)
+ __result._M_failed = true;
+ }
+ return __result;
+ }
+
+ template<bool _IsMove, typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ ostreambuf_iterator<_CharT> >::__type
+ __copy_move_a2(_CharT* __first, _CharT* __last,
+ ostreambuf_iterator<_CharT> __result)
+ {
+ const streamsize __num = __last - __first;
+ if (__num > 0)
+ __result._M_put(__first, __num);
+ return __result;
+ }
+
+ template<bool _IsMove, typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ ostreambuf_iterator<_CharT> >::__type
+ __copy_move_a2(const _CharT* __first, const _CharT* __last,
+ ostreambuf_iterator<_CharT> __result)
+ {
+ const streamsize __num = __last - __first;
+ if (__num > 0)
+ __result._M_put(__first, __num);
+ return __result;
+ }
+
+ template<bool _IsMove, typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ _CharT*>::__type
+ __copy_move_a2(istreambuf_iterator<_CharT> __first,
+ istreambuf_iterator<_CharT> __last, _CharT* __result)
+ {
+ typedef istreambuf_iterator<_CharT> __is_iterator_type;
+ typedef typename __is_iterator_type::traits_type traits_type;
+ typedef typename __is_iterator_type::streambuf_type streambuf_type;
+ typedef typename traits_type::int_type int_type;
+
+ if (__first._M_sbuf && !__last._M_sbuf)
+ {
+ streambuf_type* __sb = __first._M_sbuf;
+ int_type __c = __sb->sgetc();
+ while (!traits_type::eq_int_type(__c, traits_type::eof()))
+ {
+ const streamsize __n = __sb->egptr() - __sb->gptr();
+ if (__n > 1)
+ {
+ traits_type::copy(__result, __sb->gptr(), __n);
+ __sb->gbump(__n);
+ __result += __n;
+ __c = __sb->underflow();
+ }
+ else
+ {
+ *__result++ = traits_type::to_char_type(__c);
+ __c = __sb->snextc();
+ }
+ }
+ }
+ return __result;
+ }
+
+ template<typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ istreambuf_iterator<_CharT> >::__type
+ find(istreambuf_iterator<_CharT> __first,
+ istreambuf_iterator<_CharT> __last, const _CharT& __val)
+ {
+ typedef istreambuf_iterator<_CharT> __is_iterator_type;
+ typedef typename __is_iterator_type::traits_type traits_type;
+ typedef typename __is_iterator_type::streambuf_type streambuf_type;
+ typedef typename traits_type::int_type int_type;
+
+ if (__first._M_sbuf && !__last._M_sbuf)
+ {
+ const int_type __ival = traits_type::to_int_type(__val);
+ streambuf_type* __sb = __first._M_sbuf;
+ int_type __c = __sb->sgetc();
+ while (!traits_type::eq_int_type(__c, traits_type::eof())
+ && !traits_type::eq_int_type(__c, __ival))
+ {
+ streamsize __n = __sb->egptr() - __sb->gptr();
+ if (__n > 1)
+ {
+ const _CharT* __p = traits_type::find(__sb->gptr(),
+ __n, __val);
+ if (__p)
+ __n = __p - __sb->gptr();
+ __sb->gbump(__n);
+ __c = __sb->sgetc();
+ }
+ else
+ __c = __sb->snextc();
+ }
+
+ if (!traits_type::eq_int_type(__c, traits_type::eof()))
+ __first._M_c = __c;
+ else
+ __first._M_sbuf = 0;
+ }
+ return __first;
+ }
+
+}
+# 56 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 2 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+
+
+
+#define _GLIBCXX_NUM_FACETS 14
+
+
+
+
+
+ template<typename _Tv>
+ void
+ __convert_to_v(const char* __in, _Tv& __out, ios_base::iostate& __err,
+ const __c_locale& __cloc);
+
+
+ template<>
+ void
+ __convert_to_v(const char*, float&, ios_base::iostate&,
+ const __c_locale&);
+
+ template<>
+ void
+ __convert_to_v(const char*, double&, ios_base::iostate&,
+ const __c_locale&);
+
+ template<>
+ void
+ __convert_to_v(const char*, long double&, ios_base::iostate&,
+ const __c_locale&);
+
+
+
+ template<typename _CharT, typename _Traits>
+ struct __pad
+ {
+ static void
+ _S_pad(ios_base& __io, _CharT __fill, _CharT* __news,
+ const _CharT* __olds, const streamsize __newlen,
+ const streamsize __oldlen);
+ };
+
+
+
+
+
+
+ template<typename _CharT>
+ _CharT*
+ __add_grouping(_CharT* __s, _CharT __sep,
+ const char* __gbeg, size_t __gsize,
+ const _CharT* __first, const _CharT* __last);
+
+
+
+
+ template<typename _CharT>
+ inline
+ ostreambuf_iterator<_CharT>
+ __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len)
+ {
+ __s._M_put(__ws, __len);
+ return __s;
+ }
+
+
+ template<typename _CharT, typename _OutIter>
+ inline
+ _OutIter
+ __write(_OutIter __s, const _CharT* __ws, int __len)
+ {
+ for (int __j = 0; __j < __len; __j++, ++__s)
+ *__s = __ws[__j];
+ return __s;
+ }
+# 149 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ template<typename _CharT>
+ class __ctype_abstract_base : public locale::facet, public ctype_base
+ {
+ public:
+
+
+ typedef _CharT char_type;
+# 167 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ bool
+ is(mask __m, char_type __c) const
+ { return this->do_is(__m, __c); }
+# 184 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ const char_type*
+ is(const char_type *__lo, const char_type *__hi, mask *__vec) const
+ { return this->do_is(__lo, __hi, __vec); }
+# 200 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ const char_type*
+ scan_is(mask __m, const char_type* __lo, const char_type* __hi) const
+ { return this->do_scan_is(__m, __lo, __hi); }
+# 216 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ const char_type*
+ scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
+ { return this->do_scan_not(__m, __lo, __hi); }
+# 230 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ char_type
+ toupper(char_type __c) const
+ { return this->do_toupper(__c); }
+# 245 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ const char_type*
+ toupper(char_type *__lo, const char_type* __hi) const
+ { return this->do_toupper(__lo, __hi); }
+# 259 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ char_type
+ tolower(char_type __c) const
+ { return this->do_tolower(__c); }
+# 274 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ const char_type*
+ tolower(char_type* __lo, const char_type* __hi) const
+ { return this->do_tolower(__lo, __hi); }
+# 291 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ char_type
+ widen(char __c) const
+ { return this->do_widen(__c); }
+# 310 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ const char*
+ widen(const char* __lo, const char* __hi, char_type* __to) const
+ { return this->do_widen(__lo, __hi, __to); }
+# 329 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ char
+ narrow(char_type __c, char __dfault) const
+ { return this->do_narrow(__c, __dfault); }
+# 351 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ const char_type*
+ narrow(const char_type* __lo, const char_type* __hi,
+ char __dfault, char *__to) const
+ { return this->do_narrow(__lo, __hi, __dfault, __to); }
+
+ protected:
+ explicit
+ __ctype_abstract_base(size_t __refs = 0): facet(__refs) { }
+
+ virtual
+ ~__ctype_abstract_base() { }
+# 376 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual bool
+ do_is(mask __m, char_type __c) const = 0;
+# 395 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual const char_type*
+ do_is(const char_type* __lo, const char_type* __hi,
+ mask* __vec) const = 0;
+# 414 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual const char_type*
+ do_scan_is(mask __m, const char_type* __lo,
+ const char_type* __hi) const = 0;
+# 433 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual const char_type*
+ do_scan_not(mask __m, const char_type* __lo,
+ const char_type* __hi) const = 0;
+# 451 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual char_type
+ do_toupper(char_type) const = 0;
+# 468 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual const char_type*
+ do_toupper(char_type* __lo, const char_type* __hi) const = 0;
+# 484 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual char_type
+ do_tolower(char_type) const = 0;
+# 501 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual const char_type*
+ do_tolower(char_type* __lo, const char_type* __hi) const = 0;
+# 520 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual char_type
+ do_widen(char) const = 0;
+# 541 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual const char*
+ do_widen(const char* __lo, const char* __hi,
+ char_type* __dest) const = 0;
+# 563 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual char
+ do_narrow(char_type, char __dfault) const = 0;
+# 587 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual const char_type*
+ do_narrow(const char_type* __lo, const char_type* __hi,
+ char __dfault, char* __dest) const = 0;
+ };
+# 610 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ template<typename _CharT>
+ class ctype : public __ctype_abstract_base<_CharT>
+ {
+ public:
+
+ typedef _CharT char_type;
+ typedef typename __ctype_abstract_base<_CharT>::mask mask;
+
+
+ static locale::id id;
+
+ explicit
+ ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { }
+
+ protected:
+ virtual
+ ~ctype();
+
+ virtual bool
+ do_is(mask __m, char_type __c) const;
+
+ virtual const char_type*
+ do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
+
+ virtual const char_type*
+ do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
+
+ virtual const char_type*
+ do_scan_not(mask __m, const char_type* __lo,
+ const char_type* __hi) const;
+
+ virtual char_type
+ do_toupper(char_type __c) const;
+
+ virtual const char_type*
+ do_toupper(char_type* __lo, const char_type* __hi) const;
+
+ virtual char_type
+ do_tolower(char_type __c) const;
+
+ virtual const char_type*
+ do_tolower(char_type* __lo, const char_type* __hi) const;
+
+ virtual char_type
+ do_widen(char __c) const;
+
+ virtual const char*
+ do_widen(const char* __lo, const char* __hi, char_type* __dest) const;
+
+ virtual char
+ do_narrow(char_type, char __dfault) const;
+
+ virtual const char_type*
+ do_narrow(const char_type* __lo, const char_type* __hi,
+ char __dfault, char* __dest) const;
+ };
+
+ template<typename _CharT>
+ locale::id ctype<_CharT>::id;
+# 679 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ template<>
+ class ctype<char> : public locale::facet, public ctype_base
+ {
+ public:
+
+
+ typedef char char_type;
+
+ protected:
+
+ __c_locale _M_c_locale_ctype;
+ bool _M_del;
+ __to_type _M_toupper;
+ __to_type _M_tolower;
+ const mask* _M_table;
+ mutable char _M_widen_ok;
+ mutable char _M_widen[1 + static_cast<unsigned char>(-1)];
+ mutable char _M_narrow[1 + static_cast<unsigned char>(-1)];
+ mutable char _M_narrow_ok;
+
+
+ public:
+
+ static locale::id id;
+
+ static const size_t table_size = 1 + static_cast<unsigned char>(-1);
+# 716 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ explicit
+ ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0);
+# 729 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ explicit
+ ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false,
+ size_t __refs = 0);
+# 742 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ inline bool
+ is(mask __m, char __c) const;
+# 757 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ inline const char*
+ is(const char* __lo, const char* __hi, mask* __vec) const;
+# 771 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ inline const char*
+ scan_is(mask __m, const char* __lo, const char* __hi) const;
+# 785 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ inline const char*
+ scan_not(mask __m, const char* __lo, const char* __hi) const;
+# 800 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ char_type
+ toupper(char_type __c) const
+ { return this->do_toupper(__c); }
+# 817 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ const char_type*
+ toupper(char_type *__lo, const char_type* __hi) const
+ { return this->do_toupper(__lo, __hi); }
+# 833 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ char_type
+ tolower(char_type __c) const
+ { return this->do_tolower(__c); }
+# 850 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ const char_type*
+ tolower(char_type* __lo, const char_type* __hi) const
+ { return this->do_tolower(__lo, __hi); }
+# 870 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ char_type
+ widen(char __c) const
+ {
+ if (_M_widen_ok)
+ return _M_widen[static_cast<unsigned char>(__c)];
+ this->_M_widen_init();
+ return this->do_widen(__c);
+ }
+# 897 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ const char*
+ widen(const char* __lo, const char* __hi, char_type* __to) const
+ {
+ if (_M_widen_ok == 1)
+ {
+ __builtin_memcpy(__to, __lo, __hi - __lo);
+ return __hi;
+ }
+ if (!_M_widen_ok)
+ _M_widen_init();
+ return this->do_widen(__lo, __hi, __to);
+ }
+# 928 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ char
+ narrow(char_type __c, char __dfault) const
+ {
+ if (_M_narrow[static_cast<unsigned char>(__c)])
+ return _M_narrow[static_cast<unsigned char>(__c)];
+ const char __t = do_narrow(__c, __dfault);
+ if (__t != __dfault)
+ _M_narrow[static_cast<unsigned char>(__c)] = __t;
+ return __t;
+ }
+# 961 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ const char_type*
+ narrow(const char_type* __lo, const char_type* __hi,
+ char __dfault, char *__to) const
+ {
+ if (__builtin_expect(_M_narrow_ok == 1, true))
+ {
+ __builtin_memcpy(__to, __lo, __hi - __lo);
+ return __hi;
+ }
+ if (!_M_narrow_ok)
+ _M_narrow_init();
+ return this->do_narrow(__lo, __hi, __dfault, __to);
+ }
+
+
+
+
+
+ const mask*
+ table() const throw()
+ { return _M_table; }
+
+
+ static const mask*
+ classic_table() throw();
+ protected:
+
+
+
+
+
+
+
+ virtual
+ ~ctype();
+# 1010 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual char_type
+ do_toupper(char_type) const;
+# 1027 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual const char_type*
+ do_toupper(char_type* __lo, const char_type* __hi) const;
+# 1043 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual char_type
+ do_tolower(char_type) const;
+# 1060 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual const char_type*
+ do_tolower(char_type* __lo, const char_type* __hi) const;
+# 1080 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual char_type
+ do_widen(char __c) const
+ { return __c; }
+# 1103 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual const char*
+ do_widen(const char* __lo, const char* __hi, char_type* __dest) const
+ {
+ __builtin_memcpy(__dest, __lo, __hi - __lo);
+ return __hi;
+ }
+# 1129 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual char
+ do_narrow(char_type __c, char) const
+ { return __c; }
+# 1155 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual const char_type*
+ do_narrow(const char_type* __lo, const char_type* __hi,
+ char, char* __dest) const
+ {
+ __builtin_memcpy(__dest, __lo, __hi - __lo);
+ return __hi;
+ }
+
+ private:
+
+ void _M_widen_init() const
+ {
+ char __tmp[sizeof(_M_widen)];
+ for (size_t __i = 0; __i < sizeof(_M_widen); ++__i)
+ __tmp[__i] = __i;
+ do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen);
+
+ _M_widen_ok = 1;
+
+ if (__builtin_memcmp(__tmp, _M_widen, sizeof(_M_widen)))
+ _M_widen_ok = 2;
+ }
+
+
+
+
+ void _M_narrow_init() const
+ {
+ char __tmp[sizeof(_M_narrow)];
+ for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i)
+ __tmp[__i] = __i;
+ do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow);
+
+ _M_narrow_ok = 1;
+ if (__builtin_memcmp(__tmp, _M_narrow, sizeof(_M_narrow)))
+ _M_narrow_ok = 2;
+ else
+ {
+
+
+ char __c;
+ do_narrow(__tmp, __tmp + 1, 1, &__c);
+ if (__c == 1)
+ _M_narrow_ok = 2;
+ }
+ }
+ };
+
+ template<>
+ const ctype<char>&
+ use_facet<ctype<char> >(const locale& __loc);
+# 1515 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ template<typename _CharT>
+ class ctype_byname : public ctype<_CharT>
+ {
+ public:
+ typedef typename ctype<_CharT>::mask mask;
+
+ explicit
+ ctype_byname(const char* __s, size_t __refs = 0);
+
+ protected:
+ virtual
+ ~ctype_byname() { };
+ };
+
+
+ template<>
+ class ctype_byname<char> : public ctype<char>
+ {
+ public:
+ explicit
+ ctype_byname(const char* __s, size_t __refs = 0);
+
+ protected:
+ virtual
+ ~ctype_byname();
+ };
+# 1556 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+}
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/ctype_inline.h" 1 3
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bfin-linux-uclibc/bits/ctype_inline.h" 3
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ bool
+ ctype<char>::
+ is(mask __m, char __c) const
+ { return _M_table[static_cast<unsigned char>(__c)] & __m; }
+
+ const char*
+ ctype<char>::
+ is(const char* __low, const char* __high, mask* __vec) const
+ {
+ while (__low < __high)
+ *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+ return __high;
+ }
+
+ const char*
+ ctype<char>::
+ scan_is(mask __m, const char* __low, const char* __high) const
+ {
+ while (__low < __high
+ && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+ ++__low;
+ return __low;
+ }
+
+ const char*
+ ctype<char>::
+ scan_not(mask __m, const char* __low, const char* __high) const
+ {
+ while (__low < __high
+ && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+ ++__low;
+ return __low;
+ }
+
+}
+# 1560 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 2 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+ class __num_base
+ {
+ public:
+
+
+ enum
+ {
+ _S_ominus,
+ _S_oplus,
+ _S_ox,
+ _S_oX,
+ _S_odigits,
+ _S_odigits_end = _S_odigits + 16,
+ _S_oudigits = _S_odigits_end,
+ _S_oudigits_end = _S_oudigits + 16,
+ _S_oe = _S_odigits + 14,
+ _S_oE = _S_oudigits + 14,
+ _S_oend = _S_oudigits_end
+ };
+
+
+
+
+
+
+ static const char* _S_atoms_out;
+
+
+
+ static const char* _S_atoms_in;
+
+ enum
+ {
+ _S_iminus,
+ _S_iplus,
+ _S_ix,
+ _S_iX,
+ _S_izero,
+ _S_ie = _S_izero + 14,
+ _S_iE = _S_izero + 20,
+ _S_iend = 26
+ };
+
+
+
+ static void
+ _S_format_float(const ios_base& __io, char* __fptr, char __mod);
+ };
+
+ template<typename _CharT>
+ struct __numpunct_cache : public locale::facet
+ {
+ const char* _M_grouping;
+ size_t _M_grouping_size;
+ bool _M_use_grouping;
+ const _CharT* _M_truename;
+ size_t _M_truename_size;
+ const _CharT* _M_falsename;
+ size_t _M_falsename_size;
+ _CharT _M_decimal_point;
+ _CharT _M_thousands_sep;
+
+
+
+
+
+ _CharT _M_atoms_out[__num_base::_S_oend];
+
+
+
+
+
+ _CharT _M_atoms_in[__num_base::_S_iend];
+
+ bool _M_allocated;
+
+ __numpunct_cache(size_t __refs = 0) : facet(__refs),
+ _M_grouping(__null), _M_grouping_size(0), _M_use_grouping(false),
+ _M_truename(__null), _M_truename_size(0), _M_falsename(__null),
+ _M_falsename_size(0), _M_decimal_point(_CharT()),
+ _M_thousands_sep(_CharT()), _M_allocated(false)
+ { }
+
+ ~__numpunct_cache();
+
+ void
+ _M_cache(const locale& __loc);
+
+ private:
+ __numpunct_cache&
+ operator=(const __numpunct_cache&);
+
+ explicit
+ __numpunct_cache(const __numpunct_cache&);
+ };
+
+ template<typename _CharT>
+ __numpunct_cache<_CharT>::~__numpunct_cache()
+ {
+ if (_M_allocated)
+ {
+ delete [] _M_grouping;
+ delete [] _M_truename;
+ delete [] _M_falsename;
+ }
+ }
+# 1684 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ template<typename _CharT>
+ class numpunct : public locale::facet
+ {
+ public:
+
+
+
+ typedef _CharT char_type;
+ typedef basic_string<_CharT> string_type;
+
+ typedef __numpunct_cache<_CharT> __cache_type;
+
+ protected:
+ __cache_type* _M_data;
+
+ public:
+
+ static locale::id id;
+
+
+
+
+
+
+ explicit
+ numpunct(size_t __refs = 0) : facet(__refs), _M_data(__null)
+ { _M_initialize_numpunct(); }
+# 1721 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ explicit
+ numpunct(__cache_type* __cache, size_t __refs = 0)
+ : facet(__refs), _M_data(__cache)
+ { _M_initialize_numpunct(); }
+# 1735 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ explicit
+ numpunct(__c_locale __cloc, size_t __refs = 0)
+ : facet(__refs), _M_data(__null)
+ { _M_initialize_numpunct(__cloc); }
+# 1749 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ char_type
+ decimal_point() const
+ { return this->do_decimal_point(); }
+# 1762 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ char_type
+ thousands_sep() const
+ { return this->do_thousands_sep(); }
+# 1793 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ string
+ grouping() const
+ { return this->do_grouping(); }
+# 1806 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ string_type
+ truename() const
+ { return this->do_truename(); }
+# 1819 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ string_type
+ falsename() const
+ { return this->do_falsename(); }
+
+ protected:
+
+ virtual
+ ~numpunct();
+# 1836 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual char_type
+ do_decimal_point() const
+ { return _M_data->_M_decimal_point; }
+# 1848 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual char_type
+ do_thousands_sep() const
+ { return _M_data->_M_thousands_sep; }
+# 1861 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual string
+ do_grouping() const
+ { return _M_data->_M_grouping; }
+# 1874 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual string_type
+ do_truename() const
+ { return _M_data->_M_truename; }
+# 1887 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual string_type
+ do_falsename() const
+ { return _M_data->_M_falsename; }
+
+
+ void
+ _M_initialize_numpunct(__c_locale __cloc = __null);
+ };
+
+ template<typename _CharT>
+ locale::id numpunct<_CharT>::id;
+
+ template<>
+ numpunct<char>::~numpunct();
+
+ template<>
+ void
+ numpunct<char>::_M_initialize_numpunct(__c_locale __cloc);
+# 1916 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ template<typename _CharT>
+ class numpunct_byname : public numpunct<_CharT>
+ {
+ public:
+ typedef _CharT char_type;
+ typedef basic_string<_CharT> string_type;
+
+ explicit
+ numpunct_byname(const char* __s, size_t __refs = 0)
+ : numpunct<_CharT>(__refs)
+ {
+ if (__builtin_strcmp(__s, "C") != 0
+ && __builtin_strcmp(__s, "POSIX") != 0)
+ {
+ __c_locale __tmp;
+ this->_S_create_c_locale(__tmp, __s);
+ this->_M_initialize_numpunct(__tmp);
+ this->_S_destroy_c_locale(__tmp);
+ }
+ }
+
+ protected:
+ virtual
+ ~numpunct_byname() { }
+ };
+
+
+# 1956 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ template<typename _CharT, typename _InIter>
+ class num_get : public locale::facet
+ {
+ public:
+
+
+
+ typedef _CharT char_type;
+ typedef _InIter iter_type;
+
+
+
+ static locale::id id;
+# 1977 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ explicit
+ num_get(size_t __refs = 0) : facet(__refs) { }
+# 2003 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, bool& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+# 2039 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, long& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned short& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned int& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned long& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+
+
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, long long& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned long long& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+# 2098 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, float& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, double& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, long double& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+# 2140 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, void*& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+
+ protected:
+
+ virtual ~num_get() { }
+
+ iter_type
+ _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&,
+ string& __xtrc) const;
+
+ template<typename _ValueT>
+ iter_type
+ _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&,
+ _ValueT& __v) const;
+
+ template<typename _CharT2>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type
+ _M_find(const _CharT2*, size_t __len, _CharT2 __c) const
+ {
+ int __ret = -1;
+ if (__len <= 10)
+ {
+ if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len))
+ __ret = __c - _CharT2('0');
+ }
+ else
+ {
+ if (__c >= _CharT2('0') && __c <= _CharT2('9'))
+ __ret = __c - _CharT2('0');
+ else if (__c >= _CharT2('a') && __c <= _CharT2('f'))
+ __ret = 10 + (__c - _CharT2('a'));
+ else if (__c >= _CharT2('A') && __c <= _CharT2('F'))
+ __ret = 10 + (__c - _CharT2('A'));
+ }
+ return __ret;
+ }
+
+ template<typename _CharT2>
+ typename __gnu_cxx::__enable_if<!__is_char<_CharT2>::__value,
+ int>::__type
+ _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const
+ {
+ int __ret = -1;
+ const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c);
+ if (__q)
+ {
+ __ret = __q - __zero;
+ if (__ret > 15)
+ __ret -= 6;
+ }
+ return __ret;
+ }
+# 2211 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
+
+
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, long&) const;
+
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ unsigned short&) const;
+
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ unsigned int&) const;
+
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ unsigned long&) const;
+
+
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ long long&) const;
+
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ unsigned long long&) const;
+
+
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ float&) const;
+
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ double&) const;
+
+
+
+
+
+
+
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ long double&) const;
+
+
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ void*&) const;
+# 2270 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ };
+
+ template<typename _CharT, typename _InIter>
+ locale::id num_get<_CharT, _InIter>::id;
+# 2287 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ template<typename _CharT, typename _OutIter>
+ class num_put : public locale::facet
+ {
+ public:
+
+
+
+ typedef _CharT char_type;
+ typedef _OutIter iter_type;
+
+
+
+ static locale::id id;
+# 2308 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ explicit
+ num_put(size_t __refs = 0) : facet(__refs) { }
+# 2326 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill, bool __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+# 2368 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill, long __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill,
+ unsigned long __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+
+
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill, long long __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill,
+ unsigned long long __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+# 2431 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill, double __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill,
+ long double __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+# 2456 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill,
+ const void* __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+
+ protected:
+ template<typename _ValueT>
+ iter_type
+ _M_insert_float(iter_type, ios_base& __io, char_type __fill,
+ char __mod, _ValueT __v) const;
+
+ void
+ _M_group_float(const char* __grouping, size_t __grouping_size,
+ char_type __sep, const char_type* __p, char_type* __new,
+ char_type* __cs, int& __len) const;
+
+ template<typename _ValueT>
+ iter_type
+ _M_insert_int(iter_type, ios_base& __io, char_type __fill,
+ _ValueT __v) const;
+
+ void
+ _M_group_int(const char* __grouping, size_t __grouping_size,
+ char_type __sep, ios_base& __io, char_type* __new,
+ char_type* __cs, int& __len) const;
+
+ void
+ _M_pad(char_type __fill, streamsize __w, ios_base& __io,
+ char_type* __new, const char_type* __cs, int& __len) const;
+
+
+ virtual
+ ~num_put() { };
+# 2504 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 3
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, bool __v) const;
+
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, long __v) const;
+
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, unsigned long) const;
+
+
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, long long __v) const;
+
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, unsigned long long) const;
+
+
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, double __v) const;
+
+
+
+
+
+
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
+
+
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, const void* __v) const;
+
+
+
+
+
+
+
+ };
+
+ template <typename _CharT, typename _OutIter>
+ locale::id num_put<_CharT, _OutIter>::id;
+
+
+
+
+
+
+
+
+
+ template<typename _CharT>
+ inline bool
+ isspace(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c); }
+
+
+ template<typename _CharT>
+ inline bool
+ isprint(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c); }
+
+
+ template<typename _CharT>
+ inline bool
+ iscntrl(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c); }
+
+
+ template<typename _CharT>
+ inline bool
+ isupper(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c); }
+
+
+ template<typename _CharT>
+ inline bool
+ islower(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c); }
+
+
+ template<typename _CharT>
+ inline bool
+ isalpha(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c); }
+
+
+ template<typename _CharT>
+ inline bool
+ isdigit(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c); }
+
+
+ template<typename _CharT>
+ inline bool
+ ispunct(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c); }
+
+
+ template<typename _CharT>
+ inline bool
+ isxdigit(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c); }
+
+
+ template<typename _CharT>
+ inline bool
+ isalnum(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c); }
+
+
+ template<typename _CharT>
+ inline bool
+ isgraph(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c); }
+
+
+ template<typename _CharT>
+ inline _CharT
+ toupper(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).toupper(__c); }
+
+
+ template<typename _CharT>
+ inline _CharT
+ tolower(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).tolower(__c); }
+
+}
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.tcc" 1 3
+# 38 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.tcc" 3
+#define _LOCALE_FACETS_TCC 1
+
+
+# 41 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.tcc" 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+
+ template<typename _Facet>
+ struct __use_cache
+ {
+ const _Facet*
+ operator() (const locale& __loc) const;
+ };
+
+
+ template<typename _CharT>
+ struct __use_cache<__numpunct_cache<_CharT> >
+ {
+ const __numpunct_cache<_CharT>*
+ operator() (const locale& __loc) const
+ {
+ const size_t __i = numpunct<_CharT>::id._M_id();
+ const locale::facet** __caches = __loc._M_impl->_M_caches;
+ if (!__caches[__i])
+ {
+ __numpunct_cache<_CharT>* __tmp = __null;
+ try
+ {
+ __tmp = new __numpunct_cache<_CharT>;
+ __tmp->_M_cache(__loc);
+ }
+ catch(...)
+ {
+ delete __tmp;
+ throw;
+ }
+ __loc._M_impl->_M_install_cache(__tmp, __i);
+ }
+ return static_cast<const __numpunct_cache<_CharT>*>(__caches[__i]);
+ }
+ };
+
+ template<typename _CharT>
+ void
+ __numpunct_cache<_CharT>::_M_cache(const locale& __loc)
+ {
+ _M_allocated = true;
+
+ const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
+
+ _M_grouping_size = __np.grouping().size();
+ char* __grouping = new char[_M_grouping_size];
+ __np.grouping().copy(__grouping, _M_grouping_size);
+ _M_grouping = __grouping;
+ _M_use_grouping = (_M_grouping_size
+ && static_cast<signed char>(__np.grouping()[0]) > 0);
+
+ _M_truename_size = __np.truename().size();
+ _CharT* __truename = new _CharT[_M_truename_size];
+ __np.truename().copy(__truename, _M_truename_size);
+ _M_truename = __truename;
+
+ _M_falsename_size = __np.falsename().size();
+ _CharT* __falsename = new _CharT[_M_falsename_size];
+ __np.falsename().copy(__falsename, _M_falsename_size);
+ _M_falsename = __falsename;
+
+ _M_decimal_point = __np.decimal_point();
+ _M_thousands_sep = __np.thousands_sep();
+
+ const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
+ __ct.widen(__num_base::_S_atoms_out,
+ __num_base::_S_atoms_out + __num_base::_S_oend, _M_atoms_out);
+ __ct.widen(__num_base::_S_atoms_in,
+ __num_base::_S_atoms_in + __num_base::_S_iend, _M_atoms_in);
+ }
+# 124 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.tcc" 3
+ bool
+ __verify_grouping(const char* __grouping, size_t __grouping_size,
+ const string& __grouping_tmp);
+
+
+
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,
+ ios_base::iostate& __err, string& __xtrc) const
+ {
+ typedef char_traits<_CharT> __traits_type;
+ typedef __numpunct_cache<_CharT> __cache_type;
+ __use_cache<__cache_type> __uc;
+ const locale& __loc = __io._M_getloc();
+ const __cache_type* __lc = __uc(__loc);
+ const _CharT* __lit = __lc->_M_atoms_in;
+ char_type __c = char_type();
+
+
+ bool __testeof = __beg == __end;
+
+
+ if (!__testeof)
+ {
+ __c = *__beg;
+ const bool __plus = __c == __lit[__num_base::_S_iplus];
+ if ((__plus || __c == __lit[__num_base::_S_iminus])
+ && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+ && !(__c == __lc->_M_decimal_point))
+ {
+ __xtrc += __plus ? '+' : '-';
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+ }
+
+
+ bool __found_mantissa = false;
+ int __sep_pos = 0;
+ while (!__testeof)
+ {
+ if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+ || __c == __lc->_M_decimal_point)
+ break;
+ else if (__c == __lit[__num_base::_S_izero])
+ {
+ if (!__found_mantissa)
+ {
+ __xtrc += '0';
+ __found_mantissa = true;
+ }
+ ++__sep_pos;
+
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+ else
+ break;
+ }
+
+
+ bool __found_dec = false;
+ bool __found_sci = false;
+ string __found_grouping;
+ if (__lc->_M_use_grouping)
+ __found_grouping.reserve(32);
+ const char_type* __lit_zero = __lit + __num_base::_S_izero;
+
+ if (!__lc->_M_allocated)
+
+ while (!__testeof)
+ {
+ const int __digit = _M_find(__lit_zero, 10, __c);
+ if (__digit != -1)
+ {
+ __xtrc += '0' + __digit;
+ __found_mantissa = true;
+ }
+ else if (__c == __lc->_M_decimal_point
+ && !__found_dec && !__found_sci)
+ {
+ __xtrc += '.';
+ __found_dec = true;
+ }
+ else if ((__c == __lit[__num_base::_S_ie]
+ || __c == __lit[__num_base::_S_iE])
+ && !__found_sci && __found_mantissa)
+ {
+
+ __xtrc += 'e';
+ __found_sci = true;
+
+
+ if (++__beg != __end)
+ {
+ __c = *__beg;
+ const bool __plus = __c == __lit[__num_base::_S_iplus];
+ if (__plus || __c == __lit[__num_base::_S_iminus])
+ __xtrc += __plus ? '+' : '-';
+ else
+ continue;
+ }
+ else
+ {
+ __testeof = true;
+ break;
+ }
+ }
+ else
+ break;
+
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+ else
+ while (!__testeof)
+ {
+
+
+ if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+ {
+ if (!__found_dec && !__found_sci)
+ {
+
+
+ if (__sep_pos)
+ {
+ __found_grouping += static_cast<char>(__sep_pos);
+ __sep_pos = 0;
+ }
+ else
+ {
+
+
+ __xtrc.clear();
+ break;
+ }
+ }
+ else
+ break;
+ }
+ else if (__c == __lc->_M_decimal_point)
+ {
+ if (!__found_dec && !__found_sci)
+ {
+
+
+
+ if (__found_grouping.size())
+ __found_grouping += static_cast<char>(__sep_pos);
+ __xtrc += '.';
+ __found_dec = true;
+ }
+ else
+ break;
+ }
+ else
+ {
+ const char_type* __q =
+ __traits_type::find(__lit_zero, 10, __c);
+ if (__q)
+ {
+ __xtrc += '0' + (__q - __lit_zero);
+ __found_mantissa = true;
+ ++__sep_pos;
+ }
+ else if ((__c == __lit[__num_base::_S_ie]
+ || __c == __lit[__num_base::_S_iE])
+ && !__found_sci && __found_mantissa)
+ {
+
+ if (__found_grouping.size() && !__found_dec)
+ __found_grouping += static_cast<char>(__sep_pos);
+ __xtrc += 'e';
+ __found_sci = true;
+
+
+ if (++__beg != __end)
+ {
+ __c = *__beg;
+ const bool __plus = __c == __lit[__num_base::_S_iplus];
+ if ((__plus || __c == __lit[__num_base::_S_iminus])
+ && !(__lc->_M_use_grouping
+ && __c == __lc->_M_thousands_sep)
+ && !(__c == __lc->_M_decimal_point))
+ __xtrc += __plus ? '+' : '-';
+ else
+ continue;
+ }
+ else
+ {
+ __testeof = true;
+ break;
+ }
+ }
+ else
+ break;
+ }
+
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+
+
+
+ if (__found_grouping.size())
+ {
+
+ if (!__found_dec && !__found_sci)
+ __found_grouping += static_cast<char>(__sep_pos);
+
+ if (!std::__verify_grouping(__lc->_M_grouping,
+ __lc->_M_grouping_size,
+ __found_grouping))
+ __err |= ios_base::failbit;
+ }
+
+
+ if (__testeof)
+ __err |= ios_base::eofbit;
+ return __beg;
+ }
+
+ template<typename _CharT, typename _InIter>
+ template<typename _ValueT>
+ _InIter
+ num_get<_CharT, _InIter>::
+ _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io,
+ ios_base::iostate& __err, _ValueT& __v) const
+ {
+ typedef char_traits<_CharT> __traits_type;
+ using __gnu_cxx::__add_unsigned;
+ typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
+ typedef __numpunct_cache<_CharT> __cache_type;
+ __use_cache<__cache_type> __uc;
+ const locale& __loc = __io._M_getloc();
+ const __cache_type* __lc = __uc(__loc);
+ const _CharT* __lit = __lc->_M_atoms_in;
+ char_type __c = char_type();
+
+
+ const ios_base::fmtflags __basefield = __io.flags()
+ & ios_base::basefield;
+ const bool __oct = __basefield == ios_base::oct;
+ int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10);
+
+
+ bool __testeof = __beg == __end;
+
+
+ bool __negative = false;
+ if (!__testeof)
+ {
+ __c = *__beg;
+ if (__gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
+ __negative = __c == __lit[__num_base::_S_iminus];
+ if ((__negative || __c == __lit[__num_base::_S_iplus])
+ && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+ && !(__c == __lc->_M_decimal_point))
+ {
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+ }
+
+
+
+ bool __found_zero = false;
+ int __sep_pos = 0;
+ while (!__testeof)
+ {
+ if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+ || __c == __lc->_M_decimal_point)
+ break;
+ else if (__c == __lit[__num_base::_S_izero]
+ && (!__found_zero || __base == 10))
+ {
+ __found_zero = true;
+ ++__sep_pos;
+ if (__basefield == 0)
+ __base = 8;
+ if (__base == 8)
+ __sep_pos = 0;
+ }
+ else if (__found_zero
+ && (__c == __lit[__num_base::_S_ix]
+ || __c == __lit[__num_base::_S_iX]))
+ {
+ if (__basefield == 0)
+ __base = 16;
+ if (__base == 16)
+ {
+ __found_zero = false;
+ __sep_pos = 0;
+ }
+ else
+ break;
+ }
+ else
+ break;
+
+ if (++__beg != __end)
+ {
+ __c = *__beg;
+ if (!__found_zero)
+ break;
+ }
+ else
+ __testeof = true;
+ }
+
+
+
+ const size_t __len = (__base == 16 ? __num_base::_S_iend
+ - __num_base::_S_izero : __base);
+
+
+ string __found_grouping;
+ if (__lc->_M_use_grouping)
+ __found_grouping.reserve(32);
+ bool __testfail = false;
+ const __unsigned_type __max = __negative
+ ? -__gnu_cxx::__numeric_traits<_ValueT>::__min
+ : __gnu_cxx::__numeric_traits<_ValueT>::__max;
+ const __unsigned_type __smax = __max / __base;
+ __unsigned_type __result = 0;
+ int __digit = 0;
+ const char_type* __lit_zero = __lit + __num_base::_S_izero;
+
+ if (!__lc->_M_allocated)
+
+ while (!__testeof)
+ {
+ __digit = _M_find(__lit_zero, __len, __c);
+ if (__digit == -1)
+ break;
+
+ if (__result > __smax)
+ __testfail = true;
+ else
+ {
+ __result *= __base;
+ __testfail |= __result > __max - __digit;
+ __result += __digit;
+ ++__sep_pos;
+ }
+
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+ else
+ while (!__testeof)
+ {
+
+
+ if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+ {
+
+
+ if (__sep_pos)
+ {
+ __found_grouping += static_cast<char>(__sep_pos);
+ __sep_pos = 0;
+ }
+ else
+ {
+ __testfail = true;
+ break;
+ }
+ }
+ else if (__c == __lc->_M_decimal_point)
+ break;
+ else
+ {
+ const char_type* __q =
+ __traits_type::find(__lit_zero, __len, __c);
+ if (!__q)
+ break;
+
+ __digit = __q - __lit_zero;
+ if (__digit > 15)
+ __digit -= 6;
+ if (__result > __smax)
+ __testfail = true;
+ else
+ {
+ __result *= __base;
+ __testfail |= __result > __max - __digit;
+ __result += __digit;
+ ++__sep_pos;
+ }
+ }
+
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+
+
+
+ if (__found_grouping.size())
+ {
+
+ __found_grouping += static_cast<char>(__sep_pos);
+
+ if (!std::__verify_grouping(__lc->_M_grouping,
+ __lc->_M_grouping_size,
+ __found_grouping))
+ __err |= ios_base::failbit;
+ }
+
+ if (!__testfail && (__sep_pos || __found_zero
+ || __found_grouping.size()))
+ __v = __negative ? -__result : __result;
+ else
+ __err |= ios_base::failbit;
+
+ if (__testeof)
+ __err |= ios_base::eofbit;
+ return __beg;
+ }
+
+
+
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, bool& __v) const
+ {
+ if (!(__io.flags() & ios_base::boolalpha))
+ {
+
+
+
+ long __l = -1;
+ __beg = _M_extract_int(__beg, __end, __io, __err, __l);
+ if (__l == 0 || __l == 1)
+ __v = bool(__l);
+ else
+ __err |= ios_base::failbit;
+ }
+ else
+ {
+
+ typedef __numpunct_cache<_CharT> __cache_type;
+ __use_cache<__cache_type> __uc;
+ const locale& __loc = __io._M_getloc();
+ const __cache_type* __lc = __uc(__loc);
+
+ bool __testf = true;
+ bool __testt = true;
+ size_t __n;
+ bool __testeof = __beg == __end;
+ for (__n = 0; !__testeof; ++__n)
+ {
+ const char_type __c = *__beg;
+
+ if (__testf)
+ {
+ if (__n < __lc->_M_falsename_size)
+ __testf = __c == __lc->_M_falsename[__n];
+ else
+ break;
+ }
+
+ if (__testt)
+ {
+ if (__n < __lc->_M_truename_size)
+ __testt = __c == __lc->_M_truename[__n];
+ else
+ break;
+ }
+
+ if (!__testf && !__testt)
+ break;
+
+ if (++__beg == __end)
+ __testeof = true;
+ }
+ if (__testf && __n == __lc->_M_falsename_size)
+ __v = false;
+ else if (__testt && __n == __lc->_M_truename_size)
+ __v = true;
+ else
+ __err |= ios_base::failbit;
+
+ if (__testeof)
+ __err |= ios_base::eofbit;
+ }
+ return __beg;
+ }
+
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, long& __v) const
+ { return _M_extract_int(__beg, __end, __io, __err, __v); }
+
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned short& __v) const
+ { return _M_extract_int(__beg, __end, __io, __err, __v); }
+
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned int& __v) const
+ { return _M_extract_int(__beg, __end, __io, __err, __v); }
+
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned long& __v) const
+ { return _M_extract_int(__beg, __end, __io, __err, __v); }
+
+
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, long long& __v) const
+ { return _M_extract_int(__beg, __end, __io, __err, __v); }
+
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned long long& __v) const
+ { return _M_extract_int(__beg, __end, __io, __err, __v); }
+
+
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, float& __v) const
+ {
+ string __xtrc;
+ __xtrc.reserve(32);
+ __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
+ std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
+ return __beg;
+ }
+
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, double& __v) const
+ {
+ string __xtrc;
+ __xtrc.reserve(32);
+ __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
+ std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
+ return __beg;
+ }
+# 717 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.tcc" 3
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, long double& __v) const
+ {
+ string __xtrc;
+ __xtrc.reserve(32);
+ __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
+ std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
+ return __beg;
+ }
+
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, void*& __v) const
+ {
+
+ typedef ios_base::fmtflags fmtflags;
+ const fmtflags __fmt = __io.flags();
+ __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex);
+
+ typedef __gnu_cxx::__conditional_type<(sizeof(void*)
+ <= sizeof(unsigned long)),
+ unsigned long, unsigned long long>::__type _UIntPtrType;
+
+ _UIntPtrType __ul;
+ __beg = _M_extract_int(__beg, __end, __io, __err, __ul);
+
+
+ __io.flags(__fmt);
+
+ if (!(__err & ios_base::failbit))
+ __v = reinterpret_cast<void*>(__ul);
+ return __beg;
+ }
+
+
+
+ template<typename _CharT, typename _OutIter>
+ void
+ num_put<_CharT, _OutIter>::
+ _M_pad(_CharT __fill, streamsize __w, ios_base& __io,
+ _CharT* __new, const _CharT* __cs, int& __len) const
+ {
+
+
+ __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new,
+ __cs, __w, __len);
+ __len = static_cast<int>(__w);
+ }
+
+
+
+ template<typename _CharT, typename _ValueT>
+ int
+ __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit,
+ ios_base::fmtflags __flags, bool __dec)
+ {
+ _CharT* __buf = __bufend;
+ if (__builtin_expect(__dec, true))
+ {
+
+ do
+ {
+ *--__buf = __lit[(__v % 10) + __num_base::_S_odigits];
+ __v /= 10;
+ }
+ while (__v != 0);
+ }
+ else if ((__flags & ios_base::basefield) == ios_base::oct)
+ {
+
+ do
+ {
+ *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits];
+ __v >>= 3;
+ }
+ while (__v != 0);
+ }
+ else
+ {
+
+ const bool __uppercase = __flags & ios_base::uppercase;
+ const int __case_offset = __uppercase ? __num_base::_S_oudigits
+ : __num_base::_S_odigits;
+ do
+ {
+ *--__buf = __lit[(__v & 0xf) + __case_offset];
+ __v >>= 4;
+ }
+ while (__v != 0);
+ }
+ return __bufend - __buf;
+ }
+
+
+
+ template<typename _CharT, typename _OutIter>
+ void
+ num_put<_CharT, _OutIter>::
+ _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep,
+ ios_base&, _CharT* __new, _CharT* __cs, int& __len) const
+ {
+ _CharT* __p = std::__add_grouping(__new, __sep, __grouping,
+ __grouping_size, __cs, __cs + __len);
+ __len = __p - __new;
+ }
+
+ template<typename _CharT, typename _OutIter>
+ template<typename _ValueT>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill,
+ _ValueT __v) const
+ {
+ using __gnu_cxx::__add_unsigned;
+ typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
+ typedef __numpunct_cache<_CharT> __cache_type;
+ __use_cache<__cache_type> __uc;
+ const locale& __loc = __io._M_getloc();
+ const __cache_type* __lc = __uc(__loc);
+ const _CharT* __lit = __lc->_M_atoms_out;
+ const ios_base::fmtflags __flags = __io.flags();
+
+
+ const int __ilen = 5 * sizeof(_ValueT);
+ _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * __ilen));
+
+
+
+ const ios_base::fmtflags __basefield = __flags & ios_base::basefield;
+ const bool __dec = (__basefield != ios_base::oct
+ && __basefield != ios_base::hex);
+ const __unsigned_type __u = ((__v > 0 || !__dec)
+ ? __unsigned_type(__v)
+ : -__unsigned_type(__v));
+ int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec);
+ __cs += __ilen - __len;
+
+
+ if (__lc->_M_use_grouping)
+ {
+
+
+ _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * (__len + 1)
+ * 2));
+ _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size,
+ __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len);
+ __cs = __cs2 + 2;
+ }
+
+
+ if (__builtin_expect(__dec, true))
+ {
+
+ if (__v >= 0)
+ {
+ if (bool(__flags & ios_base::showpos)
+ && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
+ *--__cs = __lit[__num_base::_S_oplus], ++__len;
+ }
+ else
+ *--__cs = __lit[__num_base::_S_ominus], ++__len;
+ }
+ else if (bool(__flags & ios_base::showbase) && __v)
+ {
+ if (__basefield == ios_base::oct)
+ *--__cs = __lit[__num_base::_S_odigits], ++__len;
+ else
+ {
+
+ const bool __uppercase = __flags & ios_base::uppercase;
+ *--__cs = __lit[__num_base::_S_ox + __uppercase];
+
+ *--__cs = __lit[__num_base::_S_odigits];
+ __len += 2;
+ }
+ }
+
+
+ const streamsize __w = __io.width();
+ if (__w > static_cast<streamsize>(__len))
+ {
+ _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * __w));
+ _M_pad(__fill, __w, __io, __cs3, __cs, __len);
+ __cs = __cs3;
+ }
+ __io.width(0);
+
+
+
+ return std::__write(__s, __cs, __len);
+ }
+
+ template<typename _CharT, typename _OutIter>
+ void
+ num_put<_CharT, _OutIter>::
+ _M_group_float(const char* __grouping, size_t __grouping_size,
+ _CharT __sep, const _CharT* __p, _CharT* __new,
+ _CharT* __cs, int& __len) const
+ {
+
+
+
+ const int __declen = __p ? __p - __cs : __len;
+ _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping,
+ __grouping_size,
+ __cs, __cs + __declen);
+
+
+ int __newlen = __p2 - __new;
+ if (__p)
+ {
+ char_traits<_CharT>::copy(__p2, __p, __len - __declen);
+ __newlen += __len - __declen;
+ }
+ __len = __newlen;
+ }
+# 952 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.tcc" 3
+ template<typename _CharT, typename _OutIter>
+ template<typename _ValueT>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod,
+ _ValueT __v) const
+ {
+ typedef __numpunct_cache<_CharT> __cache_type;
+ __use_cache<__cache_type> __uc;
+ const locale& __loc = __io._M_getloc();
+ const __cache_type* __lc = __uc(__loc);
+
+
+ const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision();
+
+ const int __max_digits =
+ __gnu_cxx::__numeric_traits<_ValueT>::__digits10;
+
+
+ int __len;
+
+ char __fbuf[16];
+ __num_base::_S_format_float(__io, __fbuf, __mod);
+# 994 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.tcc" 3
+ const bool __fixed = __io.flags() & ios_base::fixed;
+ const int __max_exp =
+ __gnu_cxx::__numeric_traits<_ValueT>::__max_exponent10;
+
+
+
+
+
+
+
+ const int __cs_size = __fixed ? __max_exp + __prec + 4
+ : __max_digits * 2 + __prec;
+ char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
+ __len = std::__convert_from_v(_S_get_c_locale(), __cs, 0, __fbuf,
+ __prec, __v);
+
+
+
+
+ const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+
+ _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * __len));
+ __ctype.widen(__cs, __cs + __len, __ws);
+
+
+ _CharT* __wp = 0;
+ const char* __p = char_traits<char>::find(__cs, __len, '.');
+ if (__p)
+ {
+ __wp = __ws + (__p - __cs);
+ *__wp = __lc->_M_decimal_point;
+ }
+
+
+
+
+ if (__lc->_M_use_grouping
+ && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9'
+ && __cs[1] >= '0' && __cs[2] >= '0')))
+ {
+
+
+ _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * __len * 2));
+
+ streamsize __off = 0;
+ if (__cs[0] == '-' || __cs[0] == '+')
+ {
+ __off = 1;
+ __ws2[0] = __ws[0];
+ __len -= 1;
+ }
+
+ _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size,
+ __lc->_M_thousands_sep, __wp, __ws2 + __off,
+ __ws + __off, __len);
+ __len += __off;
+
+ __ws = __ws2;
+ }
+
+
+ const streamsize __w = __io.width();
+ if (__w > static_cast<streamsize>(__len))
+ {
+ _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * __w));
+ _M_pad(__fill, __w, __io, __ws3, __ws, __len);
+ __ws = __ws3;
+ }
+ __io.width(0);
+
+
+
+ return std::__write(__s, __ws, __len);
+ }
+
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
+ {
+ const ios_base::fmtflags __flags = __io.flags();
+ if ((__flags & ios_base::boolalpha) == 0)
+ {
+ const long __l = __v;
+ __s = _M_insert_int(__s, __io, __fill, __l);
+ }
+ else
+ {
+ typedef __numpunct_cache<_CharT> __cache_type;
+ __use_cache<__cache_type> __uc;
+ const locale& __loc = __io._M_getloc();
+ const __cache_type* __lc = __uc(__loc);
+
+ const _CharT* __name = __v ? __lc->_M_truename
+ : __lc->_M_falsename;
+ int __len = __v ? __lc->_M_truename_size
+ : __lc->_M_falsename_size;
+
+ const streamsize __w = __io.width();
+ if (__w > static_cast<streamsize>(__len))
+ {
+ _CharT* __cs
+ = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * __w));
+ _M_pad(__fill, __w, __io, __cs, __name, __len);
+ __name = __cs;
+ }
+ __io.width(0);
+ __s = std::__write(__s, __name, __len);
+ }
+ return __s;
+ }
+
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
+ { return _M_insert_int(__s, __io, __fill, __v); }
+
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill,
+ unsigned long __v) const
+ { return _M_insert_int(__s, __io, __fill, __v); }
+
+
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const
+ { return _M_insert_int(__s, __io, __fill, __v); }
+
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill,
+ unsigned long long __v) const
+ { return _M_insert_int(__s, __io, __fill, __v); }
+
+
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
+ { return _M_insert_float(__s, __io, __fill, char(), __v); }
+# 1152 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.tcc" 3
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill,
+ long double __v) const
+ { return _M_insert_float(__s, __io, __fill, 'L', __v); }
+
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill,
+ const void* __v) const
+ {
+ const ios_base::fmtflags __flags = __io.flags();
+ const ios_base::fmtflags __fmt = ~(ios_base::basefield
+ | ios_base::uppercase
+ | ios_base::internal);
+ __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase));
+
+ typedef __gnu_cxx::__conditional_type<(sizeof(const void*)
+ <= sizeof(unsigned long)),
+ unsigned long, unsigned long long>::__type _UIntPtrType;
+
+ __s = _M_insert_int(__s, __io, __fill,
+ reinterpret_cast<_UIntPtrType>(__v));
+ __io.flags(__flags);
+ return __s;
+ }
+
+
+# 1190 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.tcc" 3
+ template<typename _CharT, typename _Traits>
+ void
+ __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill,
+ _CharT* __news, const _CharT* __olds,
+ const streamsize __newlen,
+ const streamsize __oldlen)
+ {
+ const size_t __plen = static_cast<size_t>(__newlen - __oldlen);
+ const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield;
+
+
+ if (__adjust == ios_base::left)
+ {
+ _Traits::copy(__news, __olds, __oldlen);
+ _Traits::assign(__news + __oldlen, __plen, __fill);
+ return;
+ }
+
+ size_t __mod = 0;
+ if (__adjust == ios_base::internal)
+ {
+
+
+
+ const locale& __loc = __io._M_getloc();
+ const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+
+ if (__ctype.widen('-') == __olds[0]
+ || __ctype.widen('+') == __olds[0])
+ {
+ __news[0] = __olds[0];
+ __mod = 1;
+ ++__news;
+ }
+ else if (__ctype.widen('0') == __olds[0]
+ && __oldlen > 1
+ && (__ctype.widen('x') == __olds[1]
+ || __ctype.widen('X') == __olds[1]))
+ {
+ __news[0] = __olds[0];
+ __news[1] = __olds[1];
+ __mod = 2;
+ __news += 2;
+ }
+
+ }
+ _Traits::assign(__news, __plen, __fill);
+ _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod);
+ }
+
+ template<typename _CharT>
+ _CharT*
+ __add_grouping(_CharT* __s, _CharT __sep,
+ const char* __gbeg, size_t __gsize,
+ const _CharT* __first, const _CharT* __last)
+ {
+ size_t __idx = 0;
+ size_t __ctr = 0;
+
+ while (__last - __first > __gbeg[__idx]
+ && static_cast<signed char>(__gbeg[__idx]) > 0)
+ {
+ __last -= __gbeg[__idx];
+ __idx < __gsize - 1 ? ++__idx : ++__ctr;
+ }
+
+ while (__first != __last)
+ *__s++ = *__first++;
+
+ while (__ctr--)
+ {
+ *__s++ = __sep;
+ for (char __i = __gbeg[__idx]; __i > 0; --__i)
+ *__s++ = *__first++;
+ }
+
+ while (__idx--)
+ {
+ *__s++ = __sep;
+ for (char __i = __gbeg[__idx]; __i > 0; --__i)
+ *__s++ = *__first++;
+ }
+
+ return __s;
+ }
+
+
+
+
+
+ extern template class numpunct<char>;
+ extern template class numpunct_byname<char>;
+ extern template class num_get<char>;
+ extern template class num_put<char>;
+ extern template class ctype_byname<char>;
+
+ extern template
+ const numpunct<char>&
+ use_facet<numpunct<char> >(const locale&);
+
+ extern template
+ const num_put<char>&
+ use_facet<num_put<char> >(const locale&);
+
+ extern template
+ const num_get<char>&
+ use_facet<num_get<char> >(const locale&);
+
+ extern template
+ bool
+ has_facet<ctype<char> >(const locale&);
+
+ extern template
+ bool
+ has_facet<numpunct<char> >(const locale&);
+
+ extern template
+ bool
+ has_facet<num_put<char> >(const locale&);
+
+ extern template
+ bool
+ has_facet<num_get<char> >(const locale&);
+# 1351 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.tcc" 3
+}
+# 2636 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/locale_facets.h" 2 3
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 2 3
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _Facet>
+ inline const _Facet&
+ __check_facet(const _Facet* __f)
+ {
+ if (!__f)
+ __throw_bad_cast();
+ return *__f;
+ }
+# 65 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ template<typename _CharT, typename _Traits>
+ class basic_ios : public ios_base
+ {
+ public:
+
+
+
+
+
+
+ typedef _CharT char_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+ typedef _Traits traits_type;
+
+
+
+
+
+
+ typedef ctype<_CharT> __ctype_type;
+ typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
+ __num_put_type;
+ typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
+ __num_get_type;
+
+
+
+ protected:
+ basic_ostream<_CharT, _Traits>* _M_tie;
+ mutable char_type _M_fill;
+ mutable bool _M_fill_init;
+ basic_streambuf<_CharT, _Traits>* _M_streambuf;
+
+
+ const __ctype_type* _M_ctype;
+
+ const __num_put_type* _M_num_put;
+
+ const __num_get_type* _M_num_get;
+
+ public:
+
+
+
+
+
+
+
+ operator void*() const
+ { return this->fail() ? 0 : const_cast<basic_ios*>(this); }
+
+ bool
+ operator!() const
+ { return this->fail(); }
+# 130 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ iostate
+ rdstate() const
+ { return _M_streambuf_state; }
+# 141 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ void
+ clear(iostate __state = goodbit);
+
+
+
+
+
+
+
+ void
+ setstate(iostate __state)
+ { this->clear(this->rdstate() | __state); }
+
+
+
+
+ void
+ _M_setstate(iostate __state)
+ {
+
+
+ _M_streambuf_state |= __state;
+ if (this->exceptions() & __state)
+ throw;
+ }
+
+
+
+
+
+
+
+ bool
+ good() const
+ { return this->rdstate() == 0; }
+
+
+
+
+
+
+
+ bool
+ eof() const
+ { return (this->rdstate() & eofbit) != 0; }
+# 194 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ bool
+ fail() const
+ { return (this->rdstate() & (badbit | failbit)) != 0; }
+
+
+
+
+
+
+
+ bool
+ bad() const
+ { return (this->rdstate() & badbit) != 0; }
+# 215 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ iostate
+ exceptions() const
+ { return _M_exception; }
+# 250 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ void
+ exceptions(iostate __except)
+ {
+ _M_exception = __except;
+ this->clear(_M_streambuf_state);
+ }
+
+
+
+
+
+
+
+ explicit
+ basic_ios(basic_streambuf<_CharT, _Traits>* __sb)
+ : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0),
+ _M_ctype(0), _M_num_put(0), _M_num_get(0)
+ { this->init(__sb); }
+
+
+
+
+
+
+
+ virtual
+ ~basic_ios() { }
+# 288 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ basic_ostream<_CharT, _Traits>*
+ tie() const
+ { return _M_tie; }
+# 300 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ basic_ostream<_CharT, _Traits>*
+ tie(basic_ostream<_CharT, _Traits>* __tiestr)
+ {
+ basic_ostream<_CharT, _Traits>* __old = _M_tie;
+ _M_tie = __tiestr;
+ return __old;
+ }
+
+
+
+
+
+
+
+ basic_streambuf<_CharT, _Traits>*
+ rdbuf() const
+ { return _M_streambuf; }
+# 340 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ basic_streambuf<_CharT, _Traits>*
+ rdbuf(basic_streambuf<_CharT, _Traits>* __sb);
+# 354 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ basic_ios&
+ copyfmt(const basic_ios& __rhs);
+
+
+
+
+
+
+
+ char_type
+ fill() const
+ {
+ if (!_M_fill_init)
+ {
+ _M_fill = this->widen(' ');
+ _M_fill_init = true;
+ }
+ return _M_fill;
+ }
+# 383 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ char_type
+ fill(char_type __ch)
+ {
+ char_type __old = this->fill();
+ _M_fill = __ch;
+ return __old;
+ }
+# 403 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ locale
+ imbue(const locale& __loc);
+# 423 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ char
+ narrow(char_type __c, char __dfault) const
+ { return __check_facet(_M_ctype).narrow(__c, __dfault); }
+# 442 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 3
+ char_type
+ widen(char __c) const
+ { return __check_facet(_M_ctype).widen(__c); }
+
+ protected:
+
+
+
+
+
+
+
+ basic_ios()
+ : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false),
+ _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)
+ { }
+
+
+
+
+
+
+
+ void
+ init(basic_streambuf<_CharT, _Traits>* __sb);
+
+ void
+ _M_cache_locale(const locale& __loc);
+ };
+
+}
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.tcc" 1 3
+# 37 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.tcc" 3
+#define _BASIC_IOS_TCC 1
+
+
+# 40 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.tcc" 3
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _CharT, typename _Traits>
+ void
+ basic_ios<_CharT, _Traits>::clear(iostate __state)
+ {
+ if (this->rdbuf())
+ _M_streambuf_state = __state;
+ else
+ _M_streambuf_state = __state | badbit;
+ if (this->exceptions() & this->rdstate())
+ __throw_ios_failure(("basic_ios::clear"));
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_streambuf<_CharT, _Traits>*
+ basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb)
+ {
+ basic_streambuf<_CharT, _Traits>* __old = _M_streambuf;
+ _M_streambuf = __sb;
+ this->clear();
+ return __old;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_ios<_CharT, _Traits>&
+ basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs)
+ {
+
+
+ if (this != &__rhs)
+ {
+
+
+
+
+ _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ?
+ _M_local_word : new _Words[__rhs._M_word_size];
+
+
+ _Callback_list* __cb = __rhs._M_callbacks;
+ if (__cb)
+ __cb->_M_add_reference();
+ _M_call_callbacks(erase_event);
+ if (_M_word != _M_local_word)
+ {
+ delete [] _M_word;
+ _M_word = 0;
+ }
+ _M_dispose_callbacks();
+
+
+ _M_callbacks = __cb;
+ for (int __i = 0; __i < __rhs._M_word_size; ++__i)
+ __words[__i] = __rhs._M_word[__i];
+ _M_word = __words;
+ _M_word_size = __rhs._M_word_size;
+
+ this->flags(__rhs.flags());
+ this->width(__rhs.width());
+ this->precision(__rhs.precision());
+ this->tie(__rhs.tie());
+ this->fill(__rhs.fill());
+ _M_ios_locale = __rhs.getloc();
+ _M_cache_locale(_M_ios_locale);
+
+ _M_call_callbacks(copyfmt_event);
+
+
+ this->exceptions(__rhs.exceptions());
+ }
+ return *this;
+ }
+
+
+ template<typename _CharT, typename _Traits>
+ locale
+ basic_ios<_CharT, _Traits>::imbue(const locale& __loc)
+ {
+ locale __old(this->getloc());
+ ios_base::imbue(__loc);
+ _M_cache_locale(__loc);
+ if (this->rdbuf() != 0)
+ this->rdbuf()->pubimbue(__loc);
+ return __old;
+ }
+
+ template<typename _CharT, typename _Traits>
+ void
+ basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb)
+ {
+
+ ios_base::_M_init();
+
+
+ _M_cache_locale(_M_ios_locale);
+# 150 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.tcc" 3
+ _M_fill = _CharT();
+ _M_fill_init = false;
+
+ _M_tie = 0;
+ _M_exception = goodbit;
+ _M_streambuf = __sb;
+ _M_streambuf_state = __sb ? goodbit : badbit;
+ }
+
+ template<typename _CharT, typename _Traits>
+ void
+ basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc)
+ {
+ if (__builtin_expect(has_facet<__ctype_type>(__loc), true))
+ _M_ctype = &use_facet<__ctype_type>(__loc);
+ else
+ _M_ctype = 0;
+
+ if (__builtin_expect(has_facet<__num_put_type>(__loc), true))
+ _M_num_put = &use_facet<__num_put_type>(__loc);
+ else
+ _M_num_put = 0;
+
+ if (__builtin_expect(has_facet<__num_get_type>(__loc), true))
+ _M_num_get = &use_facet<__num_get_type>(__loc);
+ else
+ _M_num_get = 0;
+ }
+
+
+
+
+
+ extern template class basic_ios<char>;
+
+
+
+
+
+
+}
+# 476 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/basic_ios.h" 2 3
+# 51 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ios" 2 3
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 2 3
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 58 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ template<typename _CharT, typename _Traits>
+ class basic_ostream : virtual public basic_ios<_CharT, _Traits>
+ {
+ public:
+
+ typedef _CharT char_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+ typedef _Traits traits_type;
+
+
+ typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
+ typedef basic_ios<_CharT, _Traits> __ios_type;
+ typedef basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
+ __num_put_type;
+ typedef ctype<_CharT> __ctype_type;
+# 85 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ explicit
+ basic_ostream(__streambuf_type* __sb)
+ { this->init(__sb); }
+
+
+
+
+
+
+ virtual
+ ~basic_ostream() { }
+
+
+ class sentry;
+ friend class sentry;
+# 111 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ __ostream_type&
+ operator<<(__ostream_type& (*__pf)(__ostream_type&))
+ {
+
+
+
+ return __pf(*this);
+ }
+
+ __ostream_type&
+ operator<<(__ios_type& (*__pf)(__ios_type&))
+ {
+
+
+
+ __pf(*this);
+ return *this;
+ }
+
+ __ostream_type&
+ operator<<(ios_base& (*__pf) (ios_base&))
+ {
+
+
+
+ __pf(*this);
+ return *this;
+ }
+# 168 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ __ostream_type&
+ operator<<(long __n)
+ { return _M_insert(__n); }
+
+ __ostream_type&
+ operator<<(unsigned long __n)
+ { return _M_insert(__n); }
+
+ __ostream_type&
+ operator<<(bool __n)
+ { return _M_insert(__n); }
+
+ __ostream_type&
+ operator<<(short __n);
+
+ __ostream_type&
+ operator<<(unsigned short __n)
+ {
+
+
+ return _M_insert(static_cast<unsigned long>(__n));
+ }
+
+ __ostream_type&
+ operator<<(int __n);
+
+ __ostream_type&
+ operator<<(unsigned int __n)
+ {
+
+
+ return _M_insert(static_cast<unsigned long>(__n));
+ }
+
+
+ __ostream_type&
+ operator<<(long long __n)
+ { return _M_insert(__n); }
+
+ __ostream_type&
+ operator<<(unsigned long long __n)
+ { return _M_insert(__n); }
+
+
+ __ostream_type&
+ operator<<(double __f)
+ { return _M_insert(__f); }
+
+ __ostream_type&
+ operator<<(float __f)
+ {
+
+
+ return _M_insert(static_cast<double>(__f));
+ }
+
+ __ostream_type&
+ operator<<(long double __f)
+ { return _M_insert(__f); }
+
+ __ostream_type&
+ operator<<(const void* __p)
+ { return _M_insert(__p); }
+# 253 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ __ostream_type&
+ operator<<(__streambuf_type* __sb);
+# 286 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ __ostream_type&
+ put(char_type __c);
+
+
+ void
+ _M_write(const char_type* __s, streamsize __n)
+ {
+ const streamsize __put = this->rdbuf()->sputn(__s, __n);
+ if (__put != __n)
+ this->setstate(ios_base::badbit);
+ }
+# 314 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ __ostream_type&
+ write(const char_type* __s, streamsize __n);
+# 327 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ __ostream_type&
+ flush();
+# 338 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ pos_type
+ tellp();
+# 349 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ __ostream_type&
+ seekp(pos_type);
+# 361 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ __ostream_type&
+ seekp(off_type, ios_base::seekdir);
+
+ protected:
+ basic_ostream()
+ { this->init(0); }
+
+ template<typename _ValueT>
+ __ostream_type&
+ _M_insert(_ValueT __v);
+ };
+# 380 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ template <typename _CharT, typename _Traits>
+ class basic_ostream<_CharT, _Traits>::sentry
+ {
+
+ bool _M_ok;
+ basic_ostream<_CharT, _Traits>& _M_os;
+
+ public:
+# 399 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ explicit
+ sentry(basic_ostream<_CharT, _Traits>& __os);
+# 409 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ ~sentry()
+ {
+
+ if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception())
+ {
+
+ if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1)
+ _M_os.setstate(ios_base::badbit);
+ }
+ }
+# 427 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ operator bool() const
+ { return _M_ok; }
+ };
+# 448 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
+ { return __ostream_insert(__out, &__c, 1); }
+
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
+ { return (__out << __out.widen(__c)); }
+
+
+ template <class _Traits>
+ inline basic_ostream<char, _Traits>&
+ operator<<(basic_ostream<char, _Traits>& __out, char __c)
+ { return __ostream_insert(__out, &__c, 1); }
+
+
+ template<class _Traits>
+ inline basic_ostream<char, _Traits>&
+ operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
+ { return (__out << static_cast<char>(__c)); }
+
+ template<class _Traits>
+ inline basic_ostream<char, _Traits>&
+ operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
+ { return (__out << static_cast<char>(__c)); }
+# 490 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
+ {
+ if (!__s)
+ __out.setstate(ios_base::badbit);
+ else
+ __ostream_insert(__out, __s,
+ static_cast<streamsize>(_Traits::length(__s)));
+ return __out;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits> &
+ operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s);
+
+
+ template<class _Traits>
+ inline basic_ostream<char, _Traits>&
+ operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
+ {
+ if (!__s)
+ __out.setstate(ios_base::badbit);
+ else
+ __ostream_insert(__out, __s,
+ static_cast<streamsize>(_Traits::length(__s)));
+ return __out;
+ }
+
+
+ template<class _Traits>
+ inline basic_ostream<char, _Traits>&
+ operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
+ { return (__out << reinterpret_cast<const char*>(__s)); }
+
+ template<class _Traits>
+ inline basic_ostream<char, _Traits> &
+ operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
+ { return (__out << reinterpret_cast<const char*>(__s)); }
+# 540 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 3
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ endl(basic_ostream<_CharT, _Traits>& __os)
+ { return flush(__os.put(__os.widen('\n'))); }
+
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ ends(basic_ostream<_CharT, _Traits>& __os)
+ { return __os.put(_CharT()); }
+
+
+
+
+
+
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ flush(basic_ostream<_CharT, _Traits>& __os)
+ { return __os.flush(); }
+
+}
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ostream.tcc" 1 3
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ostream.tcc" 3
+#define _OSTREAM_TCC 1
+
+
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ostream.tcc" 3
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>::sentry::
+ sentry(basic_ostream<_CharT, _Traits>& __os)
+ : _M_ok(false), _M_os(__os)
+ {
+
+ if (__os.tie() && __os.good())
+ __os.tie()->flush();
+
+ if (__os.good())
+ _M_ok = true;
+ else
+ __os.setstate(ios_base::failbit);
+ }
+
+ template<typename _CharT, typename _Traits>
+ template<typename _ValueT>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ _M_insert(_ValueT __v)
+ {
+ sentry __cerb(*this);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const __num_put_type& __np = __check_facet(this->_M_num_put);
+ if (__np.put(*this, *this, this->fill(), __v).failed())
+ __err |= ios_base::badbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ operator<<(short __n)
+ {
+
+
+ const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
+ if (__fmt == ios_base::oct || __fmt == ios_base::hex)
+ return _M_insert(static_cast<long>(static_cast<unsigned short>(__n)));
+ else
+ return _M_insert(static_cast<long>(__n));
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ operator<<(int __n)
+ {
+
+
+ const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
+ if (__fmt == ios_base::oct || __fmt == ios_base::hex)
+ return _M_insert(static_cast<long>(static_cast<unsigned int>(__n)));
+ else
+ return _M_insert(static_cast<long>(__n));
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ operator<<(__streambuf_type* __sbin)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this);
+ if (__cerb && __sbin)
+ {
+ try
+ {
+ if (!__copy_streambufs(__sbin, this->rdbuf()))
+ __err |= ios_base::failbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::failbit); }
+ }
+ else if (!__sbin)
+ __err |= ios_base::badbit;
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ put(char_type __c)
+ {
+
+
+
+
+
+
+ sentry __cerb(*this);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const int_type __put = this->rdbuf()->sputc(__c);
+ if (traits_type::eq_int_type(__put, traits_type::eof()))
+ __err |= ios_base::badbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ write(const _CharT* __s, streamsize __n)
+ {
+
+
+
+
+
+
+
+ sentry __cerb(*this);
+ if (__cerb)
+ {
+ try
+ { _M_write(__s, __n); }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ flush()
+ {
+
+
+
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ if (this->rdbuf() && this->rdbuf()->pubsync() == -1)
+ __err |= ios_base::badbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_ostream<_CharT, _Traits>::pos_type
+ basic_ostream<_CharT, _Traits>::
+ tellp()
+ {
+ pos_type __ret = pos_type(-1);
+ try
+ {
+ if (!this->fail())
+ __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ return __ret;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ seekp(pos_type __pos)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ if (!this->fail())
+ {
+
+
+ const pos_type __p = this->rdbuf()->pubseekpos(__pos,
+ ios_base::out);
+
+
+ if (__p == pos_type(off_type(-1)))
+ __err |= ios_base::failbit;
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ seekp(off_type __off, ios_base::seekdir __dir)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ if (!this->fail())
+ {
+
+
+ const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
+ ios_base::out);
+
+
+ if (__p == pos_type(off_type(-1)))
+ __err |= ios_base::failbit;
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
+ {
+ if (!__s)
+ __out.setstate(ios_base::badbit);
+ else
+ {
+
+
+ const size_t __clen = char_traits<char>::length(__s);
+ try
+ {
+ struct __ptr_guard
+ {
+ _CharT *__p;
+ __ptr_guard (_CharT *__ip): __p(__ip) { }
+ ~__ptr_guard() { delete[] __p; }
+ _CharT* __get() { return __p; }
+ } __pg (new _CharT[__clen]);
+
+ _CharT *__ws = __pg.__get();
+ for (size_t __i = 0; __i < __clen; ++__i)
+ __ws[__i] = __out.widen(__s[__i]);
+ __ostream_insert(__out, __ws, __clen);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ __out._M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { __out._M_setstate(ios_base::badbit); }
+ }
+ return __out;
+ }
+
+
+
+
+
+ extern template class basic_ostream<char>;
+ extern template ostream& endl(ostream&);
+ extern template ostream& ends(ostream&);
+ extern template ostream& flush(ostream&);
+ extern template ostream& operator<<(ostream&, char);
+ extern template ostream& operator<<(ostream&, unsigned char);
+ extern template ostream& operator<<(ostream&, signed char);
+ extern template ostream& operator<<(ostream&, const char*);
+ extern template ostream& operator<<(ostream&, const unsigned char*);
+ extern template ostream& operator<<(ostream&, const signed char*);
+
+ extern template ostream& ostream::_M_insert(long);
+ extern template ostream& ostream::_M_insert(unsigned long);
+ extern template ostream& ostream::_M_insert(bool);
+
+ extern template ostream& ostream::_M_insert(long long);
+ extern template ostream& ostream::_M_insert(unsigned long long);
+
+ extern template ostream& ostream::_M_insert(double);
+ extern template ostream& ostream::_M_insert(long double);
+ extern template ostream& ostream::_M_insert(const void*);
+# 410 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/ostream.tcc" 3
+}
+# 570 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/ostream" 2 3
+# 71 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iterator" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 1 3
+# 41 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+#define _GLIBCXX_ISTREAM 1
+
+
+# 44 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 58 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ template<typename _CharT, typename _Traits>
+ class basic_istream : virtual public basic_ios<_CharT, _Traits>
+ {
+ public:
+
+ typedef _CharT char_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+ typedef _Traits traits_type;
+
+
+ typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
+ typedef basic_ios<_CharT, _Traits> __ios_type;
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
+ __num_get_type;
+ typedef ctype<_CharT> __ctype_type;
+
+ protected:
+
+
+
+
+
+ streamsize _M_gcount;
+
+ public:
+# 94 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ explicit
+ basic_istream(__streambuf_type* __sb)
+ : _M_gcount(streamsize(0))
+ { this->init(__sb); }
+
+
+
+
+
+
+ virtual
+ ~basic_istream()
+ { _M_gcount = streamsize(0); }
+
+
+ class sentry;
+ friend class sentry;
+# 122 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ operator>>(__istream_type& (*__pf)(__istream_type&))
+ { return __pf(*this); }
+
+ __istream_type&
+ operator>>(__ios_type& (*__pf)(__ios_type&))
+ {
+ __pf(*this);
+ return *this;
+ }
+
+ __istream_type&
+ operator>>(ios_base& (*__pf)(ios_base&))
+ {
+ __pf(*this);
+ return *this;
+ }
+# 169 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ operator>>(bool& __n)
+ { return _M_extract(__n); }
+
+ __istream_type&
+ operator>>(short& __n);
+
+ __istream_type&
+ operator>>(unsigned short& __n)
+ { return _M_extract(__n); }
+
+ __istream_type&
+ operator>>(int& __n);
+
+ __istream_type&
+ operator>>(unsigned int& __n)
+ { return _M_extract(__n); }
+
+ __istream_type&
+ operator>>(long& __n)
+ { return _M_extract(__n); }
+
+ __istream_type&
+ operator>>(unsigned long& __n)
+ { return _M_extract(__n); }
+
+
+ __istream_type&
+ operator>>(long long& __n)
+ { return _M_extract(__n); }
+
+ __istream_type&
+ operator>>(unsigned long long& __n)
+ { return _M_extract(__n); }
+
+
+ __istream_type&
+ operator>>(float& __f)
+ { return _M_extract(__f); }
+
+ __istream_type&
+ operator>>(double& __f)
+ { return _M_extract(__f); }
+
+ __istream_type&
+ operator>>(long double& __f)
+ { return _M_extract(__f); }
+
+ __istream_type&
+ operator>>(void*& __p)
+ { return _M_extract(__p); }
+# 241 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ operator>>(__streambuf_type* __sb);
+# 251 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ streamsize
+ gcount() const
+ { return _M_gcount; }
+# 283 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ int_type
+ get();
+# 297 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ get(char_type& __c);
+# 324 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ get(char_type* __s, streamsize __n, char_type __delim);
+# 335 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ get(char_type* __s, streamsize __n)
+ { return this->get(__s, __n, this->widen('\n')); }
+# 358 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ get(__streambuf_type& __sb, char_type __delim);
+# 368 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ get(__streambuf_type& __sb)
+ { return this->get(__sb, this->widen('\n')); }
+# 397 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ getline(char_type* __s, streamsize __n, char_type __delim);
+# 408 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ getline(char_type* __s, streamsize __n)
+ { return this->getline(__s, __n, this->widen('\n')); }
+# 432 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ ignore();
+
+ __istream_type&
+ ignore(streamsize __n);
+
+ __istream_type&
+ ignore(streamsize __n, int_type __delim);
+# 449 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ int_type
+ peek();
+# 467 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ read(char_type* __s, streamsize __n);
+# 486 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ streamsize
+ readsome(char_type* __s, streamsize __n);
+# 502 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ putback(char_type __c);
+# 517 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ unget();
+# 535 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ int
+ sync();
+# 549 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ pos_type
+ tellg();
+# 564 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ seekg(pos_type);
+# 580 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ __istream_type&
+ seekg(off_type, ios_base::seekdir);
+
+
+ protected:
+ basic_istream()
+ : _M_gcount(streamsize(0))
+ { this->init(0); }
+
+ template<typename _ValueT>
+ __istream_type&
+ _M_extract(_ValueT& __v);
+ };
+
+
+ template<>
+ basic_istream<char>&
+ basic_istream<char>::
+ getline(char_type* __s, streamsize __n, char_type __delim);
+
+ template<>
+ basic_istream<char>&
+ basic_istream<char>::
+ ignore(streamsize __n);
+
+ template<>
+ basic_istream<char>&
+ basic_istream<char>::
+ ignore(streamsize __n, int_type __delim);
+# 635 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ template<typename _CharT, typename _Traits>
+ class basic_istream<_CharT, _Traits>::sentry
+ {
+ public:
+
+ typedef _Traits traits_type;
+ typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::__ctype_type __ctype_type;
+ typedef typename _Traits::int_type __int_type;
+# 667 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ explicit
+ sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false);
+# 677 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ operator bool() const
+ { return _M_ok; }
+
+ private:
+ bool _M_ok;
+ };
+# 697 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c);
+
+ template<class _Traits>
+ inline basic_istream<char, _Traits>&
+ operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)
+ { return (__in >> reinterpret_cast<char&>(__c)); }
+
+ template<class _Traits>
+ inline basic_istream<char, _Traits>&
+ operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
+ { return (__in >> reinterpret_cast<char&>(__c)); }
+# 738 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s);
+
+
+ template<>
+ basic_istream<char>&
+ operator>>(basic_istream<char>& __in, char* __s);
+
+ template<class _Traits>
+ inline basic_istream<char, _Traits>&
+ operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)
+ { return (__in >> reinterpret_cast<char*>(__s)); }
+
+ template<class _Traits>
+ inline basic_istream<char, _Traits>&
+ operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
+ { return (__in >> reinterpret_cast<char*>(__s)); }
+# 765 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ template<typename _CharT, typename _Traits>
+ class basic_iostream
+ : public basic_istream<_CharT, _Traits>,
+ public basic_ostream<_CharT, _Traits>
+ {
+ public:
+
+
+
+ typedef _CharT char_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+ typedef _Traits traits_type;
+
+
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef basic_ostream<_CharT, _Traits> __ostream_type;
+
+
+
+
+
+
+
+ explicit
+ basic_iostream(basic_streambuf<_CharT, _Traits>* __sb)
+ : __istream_type(__sb), __ostream_type(__sb) { }
+
+
+
+
+ virtual
+ ~basic_iostream() { }
+
+ protected:
+ basic_iostream()
+ : __istream_type(), __ostream_type() { }
+ };
+# 826 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 3
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ ws(basic_istream<_CharT, _Traits>& __is);
+
+}
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/istream.tcc" 1 3
+# 42 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/istream.tcc" 3
+#define _ISTREAM_TCC 1
+
+
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/istream.tcc" 3
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>::sentry::
+ sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ if (__in.good())
+ {
+ if (__in.tie())
+ __in.tie()->flush();
+ if (!__noskip && bool(__in.flags() & ios_base::skipws))
+ {
+ const __int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = __in.rdbuf();
+ __int_type __c = __sb->sgetc();
+
+ const __ctype_type& __ct = __check_facet(__in._M_ctype);
+ while (!traits_type::eq_int_type(__c, __eof)
+ && __ct.is(ctype_base::space,
+ traits_type::to_char_type(__c)))
+ __c = __sb->snextc();
+
+
+
+
+ if (traits_type::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ }
+ }
+
+ if (__in.good() && __err == ios_base::goodbit)
+ _M_ok = true;
+ else
+ {
+ __err |= ios_base::failbit;
+ __in.setstate(__err);
+ }
+ }
+
+ template<typename _CharT, typename _Traits>
+ template<typename _ValueT>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ _M_extract(_ValueT& __v)
+ {
+ sentry __cerb(*this, false);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const __num_get_type& __ng = __check_facet(this->_M_num_get);
+ __ng.get(*this, 0, *this, __err, __v);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ operator>>(short& __n)
+ {
+
+
+ long __l;
+ _M_extract(__l);
+ if (!this->fail())
+ {
+ if (__gnu_cxx::__numeric_traits<short>::__min <= __l
+ && __l <= __gnu_cxx::__numeric_traits<short>::__max)
+ __n = short(__l);
+ else
+ this->setstate(ios_base::failbit);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ operator>>(int& __n)
+ {
+
+
+ long __l;
+ _M_extract(__l);
+ if (!this->fail())
+ {
+ if (__gnu_cxx::__numeric_traits<int>::__min <= __l
+ && __l <= __gnu_cxx::__numeric_traits<int>::__max)
+ __n = int(__l);
+ else
+ this->setstate(ios_base::failbit);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ operator>>(__streambuf_type* __sbout)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this, false);
+ if (__cerb && __sbout)
+ {
+ try
+ {
+ bool __ineof;
+ if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof))
+ __err |= ios_base::failbit;
+ if (__ineof)
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::failbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::failbit); }
+ }
+ else if (!__sbout)
+ __err |= ios_base::failbit;
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_istream<_CharT, _Traits>::int_type
+ basic_istream<_CharT, _Traits>::
+ get(void)
+ {
+ const int_type __eof = traits_type::eof();
+ int_type __c = __eof;
+ _M_gcount = 0;
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ try
+ {
+ __c = this->rdbuf()->sbumpc();
+
+ if (!traits_type::eq_int_type(__c, __eof))
+ _M_gcount = 1;
+ else
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ }
+ if (!_M_gcount)
+ __err |= ios_base::failbit;
+ if (__err)
+ this->setstate(__err);
+ return __c;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ get(char_type& __c)
+ {
+ _M_gcount = 0;
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ try
+ {
+ const int_type __cb = this->rdbuf()->sbumpc();
+
+ if (!traits_type::eq_int_type(__cb, traits_type::eof()))
+ {
+ _M_gcount = 1;
+ __c = traits_type::to_char_type(__cb);
+ }
+ else
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ }
+ if (!_M_gcount)
+ __err |= ios_base::failbit;
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ get(char_type* __s, streamsize __n, char_type __delim)
+ {
+ _M_gcount = 0;
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ try
+ {
+ const int_type __idelim = traits_type::to_int_type(__delim);
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ int_type __c = __sb->sgetc();
+
+ while (_M_gcount + 1 < __n
+ && !traits_type::eq_int_type(__c, __eof)
+ && !traits_type::eq_int_type(__c, __idelim))
+ {
+ *__s++ = traits_type::to_char_type(__c);
+ ++_M_gcount;
+ __c = __sb->snextc();
+ }
+ if (traits_type::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ }
+
+
+ if (__n > 0)
+ *__s = char_type();
+ if (!_M_gcount)
+ __err |= ios_base::failbit;
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ get(__streambuf_type& __sb, char_type __delim)
+ {
+ _M_gcount = 0;
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ try
+ {
+ const int_type __idelim = traits_type::to_int_type(__delim);
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __this_sb = this->rdbuf();
+ int_type __c = __this_sb->sgetc();
+ char_type __c2 = traits_type::to_char_type(__c);
+
+ while (!traits_type::eq_int_type(__c, __eof)
+ && !traits_type::eq_int_type(__c, __idelim)
+ && !traits_type::eq_int_type(__sb.sputc(__c2), __eof))
+ {
+ ++_M_gcount;
+ __c = __this_sb->snextc();
+ __c2 = traits_type::to_char_type(__c);
+ }
+ if (traits_type::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ }
+ if (!_M_gcount)
+ __err |= ios_base::failbit;
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ getline(char_type* __s, streamsize __n, char_type __delim)
+ {
+ _M_gcount = 0;
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ try
+ {
+ const int_type __idelim = traits_type::to_int_type(__delim);
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ int_type __c = __sb->sgetc();
+
+ while (_M_gcount + 1 < __n
+ && !traits_type::eq_int_type(__c, __eof)
+ && !traits_type::eq_int_type(__c, __idelim))
+ {
+ *__s++ = traits_type::to_char_type(__c);
+ __c = __sb->snextc();
+ ++_M_gcount;
+ }
+ if (traits_type::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ else
+ {
+ if (traits_type::eq_int_type(__c, __idelim))
+ {
+ __sb->sbumpc();
+ ++_M_gcount;
+ }
+ else
+ __err |= ios_base::failbit;
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ }
+
+
+ if (__n > 0)
+ *__s = char_type();
+ if (!_M_gcount)
+ __err |= ios_base::failbit;
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+
+
+
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ ignore(void)
+ {
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+
+ if (traits_type::eq_int_type(__sb->sbumpc(), __eof))
+ __err |= ios_base::eofbit;
+ else
+ _M_gcount = 1;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ ignore(streamsize __n)
+ {
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb && __n > 0)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ int_type __c = __sb->sgetc();
+# 468 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/istream.tcc" 3
+ bool __large_ignore = false;
+ while (true)
+ {
+ while (_M_gcount < __n
+ && !traits_type::eq_int_type(__c, __eof))
+ {
+ ++_M_gcount;
+ __c = __sb->snextc();
+ }
+ if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
+ && !traits_type::eq_int_type(__c, __eof))
+ {
+ _M_gcount =
+ __gnu_cxx::__numeric_traits<streamsize>::__min;
+ __large_ignore = true;
+ }
+ else
+ break;
+ }
+
+ if (__large_ignore)
+ _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
+
+ if (traits_type::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ ignore(streamsize __n, int_type __delim)
+ {
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb && __n > 0)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ int_type __c = __sb->sgetc();
+
+
+ bool __large_ignore = false;
+ while (true)
+ {
+ while (_M_gcount < __n
+ && !traits_type::eq_int_type(__c, __eof)
+ && !traits_type::eq_int_type(__c, __delim))
+ {
+ ++_M_gcount;
+ __c = __sb->snextc();
+ }
+ if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
+ && !traits_type::eq_int_type(__c, __eof)
+ && !traits_type::eq_int_type(__c, __delim))
+ {
+ _M_gcount =
+ __gnu_cxx::__numeric_traits<streamsize>::__min;
+ __large_ignore = true;
+ }
+ else
+ break;
+ }
+
+ if (__large_ignore)
+ _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
+
+ if (traits_type::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ else if (traits_type::eq_int_type(__c, __delim))
+ {
+ if (_M_gcount
+ < __gnu_cxx::__numeric_traits<streamsize>::__max)
+ ++_M_gcount;
+ __sb->sbumpc();
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_istream<_CharT, _Traits>::int_type
+ basic_istream<_CharT, _Traits>::
+ peek(void)
+ {
+ int_type __c = traits_type::eof();
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ __c = this->rdbuf()->sgetc();
+ if (traits_type::eq_int_type(__c, traits_type::eof()))
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return __c;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ read(char_type* __s, streamsize __n)
+ {
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ _M_gcount = this->rdbuf()->sgetn(__s, __n);
+ if (_M_gcount != __n)
+ __err |= (ios_base::eofbit | ios_base::failbit);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ streamsize
+ basic_istream<_CharT, _Traits>::
+ readsome(char_type* __s, streamsize __n)
+ {
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+
+ const streamsize __num = this->rdbuf()->in_avail();
+ if (__num > 0)
+ _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n));
+ else if (__num == -1)
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return _M_gcount;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ putback(char_type __c)
+ {
+
+
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ if (!__sb
+ || traits_type::eq_int_type(__sb->sputbackc(__c), __eof))
+ __err |= ios_base::badbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ unget(void)
+ {
+
+
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ if (!__sb
+ || traits_type::eq_int_type(__sb->sungetc(), __eof))
+ __err |= ios_base::badbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ int
+ basic_istream<_CharT, _Traits>::
+ sync(void)
+ {
+
+
+ int __ret = -1;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ __streambuf_type* __sb = this->rdbuf();
+ if (__sb)
+ {
+ if (__sb->pubsync() == -1)
+ __err |= ios_base::badbit;
+ else
+ __ret = 0;
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return __ret;
+ }
+
+ template<typename _CharT, typename _Traits>
+ typename basic_istream<_CharT, _Traits>::pos_type
+ basic_istream<_CharT, _Traits>::
+ tellg(void)
+ {
+
+
+ pos_type __ret = pos_type(-1);
+ try
+ {
+ if (!this->fail())
+ __ret = this->rdbuf()->pubseekoff(0, ios_base::cur,
+ ios_base::in);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ return __ret;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ seekg(pos_type __pos)
+ {
+
+
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ if (!this->fail())
+ {
+
+ const pos_type __p = this->rdbuf()->pubseekpos(__pos,
+ ios_base::in);
+
+
+ if (__p == pos_type(off_type(-1)))
+ __err |= ios_base::failbit;
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ seekg(off_type __off, ios_base::seekdir __dir)
+ {
+
+
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ if (!this->fail())
+ {
+
+ const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
+ ios_base::in);
+
+
+ if (__p == pos_type(off_type(-1)))
+ __err |= ios_base::failbit;
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)
+ {
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::int_type __int_type;
+
+ typename __istream_type::sentry __cerb(__in, false);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const __int_type __cb = __in.rdbuf()->sbumpc();
+ if (!_Traits::eq_int_type(__cb, _Traits::eof()))
+ __c = _Traits::to_char_type(__cb);
+ else
+ __err |= (ios_base::eofbit | ios_base::failbit);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ __in._M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { __in._M_setstate(ios_base::badbit); }
+ if (__err)
+ __in.setstate(__err);
+ }
+ return __in;
+ }
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)
+ {
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
+ typedef typename _Traits::int_type int_type;
+ typedef _CharT char_type;
+ typedef ctype<_CharT> __ctype_type;
+
+ streamsize __extracted = 0;
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ typename __istream_type::sentry __cerb(__in, false);
+ if (__cerb)
+ {
+ try
+ {
+
+ streamsize __num = __in.width();
+ if (__num <= 0)
+ __num = __gnu_cxx::__numeric_traits<streamsize>::__max;
+
+ const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
+
+ const int_type __eof = _Traits::eof();
+ __streambuf_type* __sb = __in.rdbuf();
+ int_type __c = __sb->sgetc();
+
+ while (__extracted < __num - 1
+ && !_Traits::eq_int_type(__c, __eof)
+ && !__ct.is(ctype_base::space,
+ _Traits::to_char_type(__c)))
+ {
+ *__s++ = _Traits::to_char_type(__c);
+ ++__extracted;
+ __c = __sb->snextc();
+ }
+ if (_Traits::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+
+
+
+ *__s = char_type();
+ __in.width(0);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ __in._M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { __in._M_setstate(ios_base::badbit); }
+ }
+ if (!__extracted)
+ __err |= ios_base::failbit;
+ if (__err)
+ __in.setstate(__err);
+ return __in;
+ }
+
+
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ ws(basic_istream<_CharT, _Traits>& __in)
+ {
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
+ typedef typename __istream_type::int_type __int_type;
+ typedef ctype<_CharT> __ctype_type;
+
+ const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
+ const __int_type __eof = _Traits::eof();
+ __streambuf_type* __sb = __in.rdbuf();
+ __int_type __c = __sb->sgetc();
+
+ while (!_Traits::eq_int_type(__c, __eof)
+ && __ct.is(ctype_base::space, _Traits::to_char_type(__c)))
+ __c = __sb->snextc();
+
+ if (_Traits::eq_int_type(__c, __eof))
+ __in.setstate(ios_base::eofbit);
+ return __in;
+ }
+
+
+
+
+
+ extern template class basic_istream<char>;
+ extern template istream& ws(istream&);
+ extern template istream& operator>>(istream&, char&);
+ extern template istream& operator>>(istream&, char*);
+ extern template istream& operator>>(istream&, unsigned char&);
+ extern template istream& operator>>(istream&, signed char&);
+ extern template istream& operator>>(istream&, unsigned char*);
+ extern template istream& operator>>(istream&, signed char*);
+
+ extern template istream& istream::_M_extract(unsigned short&);
+ extern template istream& istream::_M_extract(unsigned int&);
+ extern template istream& istream::_M_extract(long&);
+ extern template istream& istream::_M_extract(unsigned long&);
+ extern template istream& istream::_M_extract(bool&);
+
+ extern template istream& istream::_M_extract(long long&);
+ extern template istream& istream::_M_extract(unsigned long long&);
+
+ extern template istream& istream::_M_extract(float&);
+ extern template istream& istream::_M_extract(double&);
+ extern template istream& istream::_M_extract(long double&);
+ extern template istream& istream::_M_extract(void*&);
+
+ extern template class basic_iostream<char>;
+# 1025 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/istream.tcc" 3
+}
+# 834 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/istream" 2 3
+# 72 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iterator" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stream_iterator.h" 1 3
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stream_iterator.h" 3
+#define _STREAM_ITERATOR_H 1
+
+
+# 39 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stream_iterator.h" 3
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+ template<typename _Tp, typename _CharT = char,
+ typename _Traits = char_traits<_CharT>, typename _Dist = ptrdiff_t>
+ class istream_iterator
+ : public iterator<input_iterator_tag, _Tp, _Dist, const _Tp*, const _Tp&>
+ {
+ public:
+ typedef _CharT char_type;
+ typedef _Traits traits_type;
+ typedef basic_istream<_CharT, _Traits> istream_type;
+
+ private:
+ istream_type* _M_stream;
+ _Tp _M_value;
+ bool _M_ok;
+
+ public:
+
+ istream_iterator()
+ : _M_stream(0), _M_value(), _M_ok(false) {}
+
+
+ istream_iterator(istream_type& __s)
+ : _M_stream(&__s)
+ { _M_read(); }
+
+ istream_iterator(const istream_iterator& __obj)
+ : _M_stream(__obj._M_stream), _M_value(__obj._M_value),
+ _M_ok(__obj._M_ok)
+ { }
+
+ const _Tp&
+ operator*() const
+ {
+ ;
+
+
+ return _M_value;
+ }
+
+ const _Tp*
+ operator->() const { return &(operator*()); }
+
+ istream_iterator&
+ operator++()
+ {
+ ;
+
+
+ _M_read();
+ return *this;
+ }
+
+ istream_iterator
+ operator++(int)
+ {
+ ;
+
+
+ istream_iterator __tmp = *this;
+ _M_read();
+ return __tmp;
+ }
+
+ bool
+ _M_equal(const istream_iterator& __x) const
+ { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); }
+
+ private:
+ void
+ _M_read()
+ {
+ _M_ok = (_M_stream && *_M_stream) ? true : false;
+ if (_M_ok)
+ {
+ *_M_stream >> _M_value;
+ _M_ok = *_M_stream ? true : false;
+ }
+ }
+ };
+
+
+ template<typename _Tp, typename _CharT, typename _Traits, typename _Dist>
+ inline bool
+ operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
+ const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y)
+ { return __x._M_equal(__y); }
+
+
+ template <class _Tp, class _CharT, class _Traits, class _Dist>
+ inline bool
+ operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
+ const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y)
+ { return !__x._M_equal(__y); }
+# 150 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stream_iterator.h" 3
+ template<typename _Tp, typename _CharT = char,
+ typename _Traits = char_traits<_CharT> >
+ class ostream_iterator
+ : public iterator<output_iterator_tag, void, void, void, void>
+ {
+ public:
+
+
+ typedef _CharT char_type;
+ typedef _Traits traits_type;
+ typedef basic_ostream<_CharT, _Traits> ostream_type;
+
+
+ private:
+ ostream_type* _M_stream;
+ const _CharT* _M_string;
+
+ public:
+
+ ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {}
+# 181 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stream_iterator.h" 3
+ ostream_iterator(ostream_type& __s, const _CharT* __c)
+ : _M_stream(&__s), _M_string(__c) { }
+
+
+ ostream_iterator(const ostream_iterator& __obj)
+ : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { }
+
+
+
+ ostream_iterator&
+ operator=(const _Tp& __value)
+ {
+ ;
+
+
+ *_M_stream << __value;
+ if (_M_string) *_M_stream << _M_string;
+ return *this;
+ }
+
+ ostream_iterator&
+ operator*()
+ { return *this; }
+
+ ostream_iterator&
+ operator++()
+ { return *this; }
+
+ ostream_iterator&
+ operator++(int)
+ { return *this; }
+ };
+
+}
+# 73 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/iterator" 2 3
+# 51 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qlist.h" 2
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/list" 1 3
+# 62 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/list" 3
+#define _GLIBCXX_LIST 1
+
+
+# 65 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/list" 3
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+#define _STL_LIST_H 1
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+
+
+
+
+
+ struct _List_node_base
+ {
+ _List_node_base* _M_next;
+ _List_node_base* _M_prev;
+
+ static void
+ swap(_List_node_base& __x, _List_node_base& __y);
+
+ void
+ transfer(_List_node_base * const __first,
+ _List_node_base * const __last);
+
+ void
+ reverse();
+
+ void
+ hook(_List_node_base * const __position);
+
+ void
+ unhook();
+ };
+
+
+ template<typename _Tp>
+ struct _List_node : public _List_node_base
+ {
+
+ _Tp _M_data;
+ };
+
+
+
+
+
+
+ template<typename _Tp>
+ struct _List_iterator
+ {
+ typedef _List_iterator<_Tp> _Self;
+ typedef _List_node<_Tp> _Node;
+
+ typedef ptrdiff_t difference_type;
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef _Tp value_type;
+ typedef _Tp* pointer;
+ typedef _Tp& reference;
+
+ _List_iterator()
+ : _M_node() { }
+
+ explicit
+ _List_iterator(_List_node_base* __x)
+ : _M_node(__x) { }
+
+
+ reference
+ operator*() const
+ { return static_cast<_Node*>(_M_node)->_M_data; }
+
+ pointer
+ operator->() const
+ { return &static_cast<_Node*>(_M_node)->_M_data; }
+
+ _Self&
+ operator++()
+ {
+ _M_node = _M_node->_M_next;
+ return *this;
+ }
+
+ _Self
+ operator++(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _M_node->_M_next;
+ return __tmp;
+ }
+
+ _Self&
+ operator--()
+ {
+ _M_node = _M_node->_M_prev;
+ return *this;
+ }
+
+ _Self
+ operator--(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _M_node->_M_prev;
+ return __tmp;
+ }
+
+ bool
+ operator==(const _Self& __x) const
+ { return _M_node == __x._M_node; }
+
+ bool
+ operator!=(const _Self& __x) const
+ { return _M_node != __x._M_node; }
+
+
+ _List_node_base* _M_node;
+ };
+
+
+
+
+
+
+ template<typename _Tp>
+ struct _List_const_iterator
+ {
+ typedef _List_const_iterator<_Tp> _Self;
+ typedef const _List_node<_Tp> _Node;
+ typedef _List_iterator<_Tp> iterator;
+
+ typedef ptrdiff_t difference_type;
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef _Tp value_type;
+ typedef const _Tp* pointer;
+ typedef const _Tp& reference;
+
+ _List_const_iterator()
+ : _M_node() { }
+
+ explicit
+ _List_const_iterator(const _List_node_base* __x)
+ : _M_node(__x) { }
+
+ _List_const_iterator(const iterator& __x)
+ : _M_node(__x._M_node) { }
+
+
+
+ reference
+ operator*() const
+ { return static_cast<_Node*>(_M_node)->_M_data; }
+
+ pointer
+ operator->() const
+ { return &static_cast<_Node*>(_M_node)->_M_data; }
+
+ _Self&
+ operator++()
+ {
+ _M_node = _M_node->_M_next;
+ return *this;
+ }
+
+ _Self
+ operator++(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _M_node->_M_next;
+ return __tmp;
+ }
+
+ _Self&
+ operator--()
+ {
+ _M_node = _M_node->_M_prev;
+ return *this;
+ }
+
+ _Self
+ operator--(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _M_node->_M_prev;
+ return __tmp;
+ }
+
+ bool
+ operator==(const _Self& __x) const
+ { return _M_node == __x._M_node; }
+
+ bool
+ operator!=(const _Self& __x) const
+ { return _M_node != __x._M_node; }
+
+
+ const _List_node_base* _M_node;
+ };
+
+ template<typename _Val>
+ inline bool
+ operator==(const _List_iterator<_Val>& __x,
+ const _List_const_iterator<_Val>& __y)
+ { return __x._M_node == __y._M_node; }
+
+ template<typename _Val>
+ inline bool
+ operator!=(const _List_iterator<_Val>& __x,
+ const _List_const_iterator<_Val>& __y)
+ { return __x._M_node != __y._M_node; }
+
+
+
+ template<typename _Tp, typename _Alloc>
+ class _List_base
+ {
+ protected:
+# 291 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ typedef typename _Alloc::template rebind<_List_node<_Tp> >::other
+ _Node_alloc_type;
+
+ typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
+
+ struct _List_impl
+ : public _Node_alloc_type
+ {
+ _List_node_base _M_node;
+
+ _List_impl()
+ : _Node_alloc_type(), _M_node()
+ { }
+
+ _List_impl(const _Node_alloc_type& __a)
+ : _Node_alloc_type(__a), _M_node()
+ { }
+ };
+
+ _List_impl _M_impl;
+
+ _List_node<_Tp>*
+ _M_get_node()
+ { return _M_impl._Node_alloc_type::allocate(1); }
+
+ void
+ _M_put_node(_List_node<_Tp>* __p)
+ { _M_impl._Node_alloc_type::deallocate(__p, 1); }
+
+ public:
+ typedef _Alloc allocator_type;
+
+ _Node_alloc_type&
+ _M_get_Node_allocator()
+ { return *static_cast<_Node_alloc_type*>(&this->_M_impl); }
+
+ const _Node_alloc_type&
+ _M_get_Node_allocator() const
+ { return *static_cast<const _Node_alloc_type*>(&this->_M_impl); }
+
+ _Tp_alloc_type
+ _M_get_Tp_allocator() const
+ { return _Tp_alloc_type(_M_get_Node_allocator()); }
+
+ allocator_type
+ get_allocator() const
+ { return allocator_type(_M_get_Node_allocator()); }
+
+ _List_base()
+ : _M_impl()
+ { _M_init(); }
+
+ _List_base(const allocator_type& __a)
+ : _M_impl(__a)
+ { _M_init(); }
+# 357 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ ~_List_base()
+ { _M_clear(); }
+
+ void
+ _M_clear();
+
+ void
+ _M_init()
+ {
+ this->_M_impl._M_node._M_next = &this->_M_impl._M_node;
+ this->_M_impl._M_node._M_prev = &this->_M_impl._M_node;
+ }
+ };
+# 415 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
+ class list : protected _List_base<_Tp, _Alloc>
+ {
+
+ typedef typename _Alloc::value_type _Alloc_value_type;
+
+
+
+ typedef _List_base<_Tp, _Alloc> _Base;
+ typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
+
+ public:
+ typedef _Tp value_type;
+ typedef typename _Tp_alloc_type::pointer pointer;
+ typedef typename _Tp_alloc_type::const_pointer const_pointer;
+ typedef typename _Tp_alloc_type::reference reference;
+ typedef typename _Tp_alloc_type::const_reference const_reference;
+ typedef _List_iterator<_Tp> iterator;
+ typedef _List_const_iterator<_Tp> const_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Alloc allocator_type;
+
+ protected:
+
+
+ typedef _List_node<_Tp> _Node;
+
+ using _Base::_M_impl;
+ using _Base::_M_put_node;
+ using _Base::_M_get_node;
+ using _Base::_M_get_Tp_allocator;
+ using _Base::_M_get_Node_allocator;
+
+
+
+
+
+
+
+ _Node*
+ _M_create_node(const value_type& __x)
+ {
+ _Node* __p = this->_M_get_node();
+ try
+ {
+ _M_get_Tp_allocator().construct(&__p->_M_data, __x);
+ }
+ catch(...)
+ {
+ _M_put_node(__p);
+ throw;
+ }
+ return __p;
+ }
+# 492 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ public:
+
+
+
+
+
+ list()
+ : _Base() { }
+
+
+
+
+
+ explicit
+ list(const allocator_type& __a)
+ : _Base(__a) { }
+# 517 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ explicit
+ list(size_type __n, const value_type& __value = value_type(),
+ const allocator_type& __a = allocator_type())
+ : _Base(__a)
+ { _M_fill_initialize(__n, __value); }
+# 530 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ list(const list& __x)
+ : _Base(__x._M_get_Node_allocator())
+ { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); }
+# 556 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ template<typename _InputIterator>
+ list(_InputIterator __first, _InputIterator __last,
+ const allocator_type& __a = allocator_type())
+ : _Base(__a)
+ {
+
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_initialize_dispatch(__first, __last, _Integral());
+ }
+# 581 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ list&
+ operator=(const list& __x);
+# 612 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+ assign(size_type __n, const value_type& __val)
+ { _M_fill_assign(__n, __val); }
+# 628 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ template<typename _InputIterator>
+ void
+ assign(_InputIterator __first, _InputIterator __last)
+ {
+
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_assign_dispatch(__first, __last, _Integral());
+ }
+
+
+ allocator_type
+ get_allocator() const
+ { return _Base::get_allocator(); }
+
+
+
+
+
+
+ iterator
+ begin()
+ { return iterator(this->_M_impl._M_node._M_next); }
+
+
+
+
+
+
+ const_iterator
+ begin() const
+ { return const_iterator(this->_M_impl._M_node._M_next); }
+
+
+
+
+
+
+ iterator
+ end()
+ { return iterator(&this->_M_impl._M_node); }
+
+
+
+
+
+
+ const_iterator
+ end() const
+ { return const_iterator(&this->_M_impl._M_node); }
+
+
+
+
+
+
+ reverse_iterator
+ rbegin()
+ { return reverse_iterator(end()); }
+
+
+
+
+
+
+ const_reverse_iterator
+ rbegin() const
+ { return const_reverse_iterator(end()); }
+
+
+
+
+
+
+ reverse_iterator
+ rend()
+ { return reverse_iterator(begin()); }
+
+
+
+
+
+
+ const_reverse_iterator
+ rend() const
+ { return const_reverse_iterator(begin()); }
+# 757 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ bool
+ empty() const
+ { return this->_M_impl._M_node._M_next == &this->_M_impl._M_node; }
+
+
+ size_type
+ size() const
+ { return std::distance(begin(), end()); }
+
+
+ size_type
+ max_size() const
+ { return _M_get_Tp_allocator().max_size(); }
+# 781 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+ resize(size_type __new_size, value_type __x = value_type());
+
+
+
+
+
+
+ reference
+ front()
+ { return *begin(); }
+
+
+
+
+
+ const_reference
+ front() const
+ { return *begin(); }
+
+
+
+
+
+ reference
+ back()
+ {
+ iterator __tmp = end();
+ --__tmp;
+ return *__tmp;
+ }
+
+
+
+
+
+ const_reference
+ back() const
+ {
+ const_iterator __tmp = end();
+ --__tmp;
+ return *__tmp;
+ }
+# 837 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+ push_front(const value_type& __x)
+ { this->_M_insert(begin(), __x); }
+# 859 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+ pop_front()
+ { this->_M_erase(begin()); }
+# 874 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+ push_back(const value_type& __x)
+ { this->_M_insert(end(), __x); }
+# 895 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+ pop_back()
+ { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); }
+# 928 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ iterator
+ insert(iterator __position, const value_type& __x);
+# 960 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+ insert(iterator __position, size_type __n, const value_type& __x)
+ {
+ list __tmp(__n, __x, _M_get_Node_allocator());
+ splice(__position, __tmp);
+ }
+# 980 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ template<typename _InputIterator>
+ void
+ insert(iterator __position, _InputIterator __first,
+ _InputIterator __last)
+ {
+ list __tmp(__first, __last, _M_get_Node_allocator());
+ splice(__position, __tmp);
+ }
+# 1004 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ iterator
+ erase(iterator __position);
+# 1025 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ iterator
+ erase(iterator __first, iterator __last)
+ {
+ while (__first != __last)
+ __first = erase(__first);
+ return __last;
+ }
+# 1042 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+
+
+
+ swap(list& __x)
+
+ {
+ _List_node_base::swap(this->_M_impl._M_node, __x._M_impl._M_node);
+
+
+
+ std::__alloc_swap<typename _Base::_Node_alloc_type>::
+ _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator());
+ }
+
+
+
+
+
+
+
+ void
+ clear()
+ {
+ _Base::_M_clear();
+ _Base::_M_init();
+ }
+# 1082 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+
+
+
+ splice(iterator __position, list& __x)
+
+ {
+ if (!__x.empty())
+ {
+ _M_check_equal_allocators(__x);
+
+ this->_M_transfer(__position, __x.begin(), __x.end());
+ }
+ }
+# 1106 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+
+
+
+ splice(iterator __position, list& __x, iterator __i)
+
+ {
+ iterator __j = __i;
+ ++__j;
+ if (__position == __i || __position == __j)
+ return;
+
+ if (this != &__x)
+ _M_check_equal_allocators(__x);
+
+ this->_M_transfer(__position, __i, __j);
+ }
+# 1136 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+
+
+
+
+ splice(iterator __position, list& __x, iterator __first,
+ iterator __last)
+
+ {
+ if (__first != __last)
+ {
+ if (this != &__x)
+ _M_check_equal_allocators(__x);
+
+ this->_M_transfer(__position, __first, __last);
+ }
+ }
+# 1165 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+ remove(const _Tp& __value);
+# 1179 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ template<typename _Predicate>
+ void
+ remove_if(_Predicate);
+# 1193 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+ unique();
+# 1208 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ template<typename _BinaryPredicate>
+ void
+ unique(_BinaryPredicate);
+# 1221 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+
+
+
+ merge(list& __x);
+# 1240 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ template<typename _StrictWeakOrdering>
+ void
+
+
+
+ merge(list&, _StrictWeakOrdering);
+
+
+
+
+
+
+
+ void
+ reverse()
+ { this->_M_impl._M_node.reverse(); }
+
+
+
+
+
+
+
+ void
+ sort();
+
+
+
+
+
+
+
+ template<typename _StrictWeakOrdering>
+ void
+ sort(_StrictWeakOrdering);
+
+ protected:
+
+
+
+
+
+
+ template<typename _Integer>
+ void
+ _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
+ { _M_fill_initialize(static_cast<size_type>(__n), __x); }
+
+
+ template<typename _InputIterator>
+ void
+ _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
+ __false_type)
+ {
+ for (; __first != __last; ++__first)
+ push_back(*__first);
+ }
+
+
+
+ void
+ _M_fill_initialize(size_type __n, const value_type& __x)
+ {
+ for (; __n > 0; --__n)
+ push_back(__x);
+ }
+# 1314 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ template<typename _Integer>
+ void
+ _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
+ { _M_fill_assign(__n, __val); }
+
+
+ template<typename _InputIterator>
+ void
+ _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
+ __false_type);
+
+
+
+ void
+ _M_fill_assign(size_type __n, const value_type& __val);
+
+
+
+ void
+ _M_transfer(iterator __position, iterator __first, iterator __last)
+ { __position._M_node->transfer(__first._M_node, __last._M_node); }
+
+
+
+ void
+ _M_insert(iterator __position, const value_type& __x)
+ {
+ _Node* __tmp = _M_create_node(__x);
+ __tmp->hook(__position._M_node);
+ }
+# 1355 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ void
+ _M_erase(iterator __position)
+ {
+ __position._M_node->unhook();
+ _Node* __n = static_cast<_Node*>(__position._M_node);
+ _M_get_Tp_allocator().destroy(&__n->_M_data);
+ _M_put_node(__n);
+ }
+
+
+ void
+ _M_check_equal_allocators(list& __x)
+ {
+ if (std::__alloc_neq<typename _Base::_Node_alloc_type>::
+ _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator()))
+ __throw_runtime_error(("list::_M_check_equal_allocators"));
+ }
+ };
+# 1384 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+ {
+ typedef typename list<_Tp, _Alloc>::const_iterator const_iterator;
+ const_iterator __end1 = __x.end();
+ const_iterator __end2 = __y.end();
+
+ const_iterator __i1 = __x.begin();
+ const_iterator __i2 = __y.begin();
+ while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2)
+ {
+ ++__i1;
+ ++__i2;
+ }
+ return __i1 == __end1 && __i2 == __end2;
+ }
+# 1413 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator<(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+ { return std::lexicographical_compare(__x.begin(), __x.end(),
+ __y.begin(), __y.end()); }
+
+
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+ { return !(__x == __y); }
+
+
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+ { return __y < __x; }
+
+
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+ { return !(__y < __x); }
+
+
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+ { return !(__x < __y); }
+
+
+ template<typename _Tp, typename _Alloc>
+ inline void
+ swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y)
+ { __x.swap(__y); }
+# 1461 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_list.h" 3
+}
+# 69 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/list" 2 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/list.tcc" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/list.tcc" 3
+#define _LIST_TCC 1
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _Tp, typename _Alloc>
+ void
+ _List_base<_Tp, _Alloc>::
+ _M_clear()
+ {
+ typedef _List_node<_Tp> _Node;
+ _Node* __cur = static_cast<_Node*>(this->_M_impl._M_node._M_next);
+ while (__cur != &this->_M_impl._M_node)
+ {
+ _Node* __tmp = __cur;
+ __cur = static_cast<_Node*>(__cur->_M_next);
+ _M_get_Tp_allocator().destroy(&__tmp->_M_data);
+ _M_put_node(__tmp);
+ }
+ }
+# 96 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/list.tcc" 3
+ template<typename _Tp, typename _Alloc>
+ typename list<_Tp, _Alloc>::iterator
+ list<_Tp, _Alloc>::
+ insert(iterator __position, const value_type& __x)
+ {
+ _Node* __tmp = _M_create_node(__x);
+ __tmp->hook(__position._M_node);
+ return iterator(__tmp);
+ }
+
+ template<typename _Tp, typename _Alloc>
+ typename list<_Tp, _Alloc>::iterator
+ list<_Tp, _Alloc>::
+ erase(iterator __position)
+ {
+ iterator __ret = iterator(__position._M_node->_M_next);
+ _M_erase(__position);
+ return __ret;
+ }
+
+ template<typename _Tp, typename _Alloc>
+ void
+ list<_Tp, _Alloc>::
+ resize(size_type __new_size, value_type __x)
+ {
+ iterator __i = begin();
+ size_type __len = 0;
+ for (; __i != end() && __len < __new_size; ++__i, ++__len)
+ ;
+ if (__len == __new_size)
+ erase(__i, end());
+ else
+ insert(end(), __new_size - __len, __x);
+ }
+
+ template<typename _Tp, typename _Alloc>
+ list<_Tp, _Alloc>&
+ list<_Tp, _Alloc>::
+ operator=(const list& __x)
+ {
+ if (this != &__x)
+ {
+ iterator __first1 = begin();
+ iterator __last1 = end();
+ const_iterator __first2 = __x.begin();
+ const_iterator __last2 = __x.end();
+ for (; __first1 != __last1 && __first2 != __last2;
+ ++__first1, ++__first2)
+ *__first1 = *__first2;
+ if (__first2 == __last2)
+ erase(__first1, __last1);
+ else
+ insert(__last1, __first2, __last2);
+ }
+ return *this;
+ }
+
+ template<typename _Tp, typename _Alloc>
+ void
+ list<_Tp, _Alloc>::
+ _M_fill_assign(size_type __n, const value_type& __val)
+ {
+ iterator __i = begin();
+ for (; __i != end() && __n > 0; ++__i, --__n)
+ *__i = __val;
+ if (__n > 0)
+ insert(end(), __n, __val);
+ else
+ erase(__i, end());
+ }
+
+ template<typename _Tp, typename _Alloc>
+ template <typename _InputIterator>
+ void
+ list<_Tp, _Alloc>::
+ _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2,
+ __false_type)
+ {
+ iterator __first1 = begin();
+ iterator __last1 = end();
+ for (; __first1 != __last1 && __first2 != __last2;
+ ++__first1, ++__first2)
+ *__first1 = *__first2;
+ if (__first2 == __last2)
+ erase(__first1, __last1);
+ else
+ insert(__last1, __first2, __last2);
+ }
+
+ template<typename _Tp, typename _Alloc>
+ void
+ list<_Tp, _Alloc>::
+ remove(const value_type& __value)
+ {
+ iterator __first = begin();
+ iterator __last = end();
+ iterator __extra = __last;
+ while (__first != __last)
+ {
+ iterator __next = __first;
+ ++__next;
+ if (*__first == __value)
+ {
+
+
+
+ if (&*__first != &__value)
+ _M_erase(__first);
+ else
+ __extra = __first;
+ }
+ __first = __next;
+ }
+ if (__extra != __last)
+ _M_erase(__extra);
+ }
+
+ template<typename _Tp, typename _Alloc>
+ void
+ list<_Tp, _Alloc>::
+ unique()
+ {
+ iterator __first = begin();
+ iterator __last = end();
+ if (__first == __last)
+ return;
+ iterator __next = __first;
+ while (++__next != __last)
+ {
+ if (*__first == *__next)
+ _M_erase(__next);
+ else
+ __first = __next;
+ __next = __first;
+ }
+ }
+
+ template<typename _Tp, typename _Alloc>
+ void
+ list<_Tp, _Alloc>::
+
+
+
+ merge(list& __x)
+
+ {
+
+
+ if (this != &__x)
+ {
+ _M_check_equal_allocators(__x);
+
+ iterator __first1 = begin();
+ iterator __last1 = end();
+ iterator __first2 = __x.begin();
+ iterator __last2 = __x.end();
+ while (__first1 != __last1 && __first2 != __last2)
+ if (*__first2 < *__first1)
+ {
+ iterator __next = __first2;
+ _M_transfer(__first1, __first2, ++__next);
+ __first2 = __next;
+ }
+ else
+ ++__first1;
+ if (__first2 != __last2)
+ _M_transfer(__last1, __first2, __last2);
+ }
+ }
+
+ template<typename _Tp, typename _Alloc>
+ template <typename _StrictWeakOrdering>
+ void
+ list<_Tp, _Alloc>::
+
+
+
+ merge(list& __x, _StrictWeakOrdering __comp)
+
+ {
+
+
+ if (this != &__x)
+ {
+ _M_check_equal_allocators(__x);
+
+ iterator __first1 = begin();
+ iterator __last1 = end();
+ iterator __first2 = __x.begin();
+ iterator __last2 = __x.end();
+ while (__first1 != __last1 && __first2 != __last2)
+ if (__comp(*__first2, *__first1))
+ {
+ iterator __next = __first2;
+ _M_transfer(__first1, __first2, ++__next);
+ __first2 = __next;
+ }
+ else
+ ++__first1;
+ if (__first2 != __last2)
+ _M_transfer(__last1, __first2, __last2);
+ }
+ }
+
+ template<typename _Tp, typename _Alloc>
+ void
+ list<_Tp, _Alloc>::
+ sort()
+ {
+
+ if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node
+ && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node)
+ {
+ list __carry;
+ list __tmp[64];
+ list * __fill = &__tmp[0];
+ list * __counter;
+
+ do
+ {
+ __carry.splice(__carry.begin(), *this, begin());
+
+ for(__counter = &__tmp[0];
+ __counter != __fill && !__counter->empty();
+ ++__counter)
+ {
+ __counter->merge(__carry);
+ __carry.swap(*__counter);
+ }
+ __carry.swap(*__counter);
+ if (__counter == __fill)
+ ++__fill;
+ }
+ while ( !empty() );
+
+ for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
+ __counter->merge(*(__counter - 1));
+ swap( *(__fill - 1) );
+ }
+ }
+
+ template<typename _Tp, typename _Alloc>
+ template <typename _Predicate>
+ void
+ list<_Tp, _Alloc>::
+ remove_if(_Predicate __pred)
+ {
+ iterator __first = begin();
+ iterator __last = end();
+ while (__first != __last)
+ {
+ iterator __next = __first;
+ ++__next;
+ if (__pred(*__first))
+ _M_erase(__first);
+ __first = __next;
+ }
+ }
+
+ template<typename _Tp, typename _Alloc>
+ template <typename _BinaryPredicate>
+ void
+ list<_Tp, _Alloc>::
+ unique(_BinaryPredicate __binary_pred)
+ {
+ iterator __first = begin();
+ iterator __last = end();
+ if (__first == __last)
+ return;
+ iterator __next = __first;
+ while (++__next != __last)
+ {
+ if (__binary_pred(*__first, *__next))
+ _M_erase(__next);
+ else
+ __first = __next;
+ __next = __first;
+ }
+ }
+
+ template<typename _Tp, typename _Alloc>
+ template <typename _StrictWeakOrdering>
+ void
+ list<_Tp, _Alloc>::
+ sort(_StrictWeakOrdering __comp)
+ {
+
+ if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node
+ && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node)
+ {
+ list __carry;
+ list __tmp[64];
+ list * __fill = &__tmp[0];
+ list * __counter;
+
+ do
+ {
+ __carry.splice(__carry.begin(), *this, begin());
+
+ for(__counter = &__tmp[0];
+ __counter != __fill && !__counter->empty();
+ ++__counter)
+ {
+ __counter->merge(__carry, __comp);
+ __carry.swap(*__counter);
+ }
+ __carry.swap(*__counter);
+ if (__counter == __fill)
+ ++__fill;
+ }
+ while ( !empty() );
+
+ for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
+ __counter->merge(*(__counter - 1), __comp);
+ swap(*(__fill - 1));
+ }
+ }
+
+}
+# 72 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/list" 2 3
+# 52 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qlist.h" 2
+
+
+
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+template <typename T> class QVector;
+template <typename T> class QSet;
+
+struct __attribute__((visibility("default"))) QListData {
+ struct Data {
+ QBasicAtomicInt ref;
+ int alloc, begin, end;
+ uint sharable : 1;
+ void *array[1];
+ };
+ enum { DataHeaderSize = sizeof(Data) - sizeof(void *) };
+
+ Data *detach();
+ Data *detach2();
+ void realloc(int alloc);
+ static Data shared_null;
+ Data *d;
+ void **erase(void **xi);
+ void **append();
+ void **append(const QListData &l);
+ void **prepend();
+ void **insert(int i);
+ void remove(int i);
+ void remove(int i, int n);
+ void move(int from, int to);
+ inline int size() const { return d->end - d->begin; }
+ inline bool isEmpty() const { return d->end == d->begin; }
+ inline void **at(int i) const { return d->array + d->begin + i; }
+ inline void **begin() const { return d->array + d->begin; }
+ inline void **end() const { return d->array + d->end; }
+};
+
+template <typename T>
+class QList
+{
+ struct Node { void *v;
+
+
+
+ inline T &t()
+ { return *reinterpret_cast<T*>(QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic
+ ? v : this); }
+
+ };
+
+ union { QListData p; QListData::Data *d; };
+
+public:
+ inline QList() : d(&QListData::shared_null) { d->ref.ref(); }
+ inline QList(const QList<T> &l) : d(l.d) { d->ref.ref(); if (!d->sharable) detach_helper(); }
+ ~QList();
+ QList<T> &operator=(const QList<T> &l);
+ bool operator==(const QList<T> &l) const;
+ inline bool operator!=(const QList<T> &l) const { return !(*this == l); }
+
+ inline int size() const { return p.size(); }
+
+ inline void detach() { if (d->ref != 1) detach_helper(); }
+ inline bool isDetached() const { return d->ref == 1; }
+ inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; }
+
+ inline bool isEmpty() const { return p.isEmpty(); }
+
+ void clear();
+
+ const T &at(int i) const;
+ const T &operator[](int i) const;
+ T &operator[](int i);
+
+ void append(const T &t);
+ void append(const QList<T> &t);
+ void prepend(const T &t);
+ void insert(int i, const T &t);
+ void replace(int i, const T &t);
+ void removeAt(int i);
+ int removeAll(const T &t);
+ bool removeOne(const T &t);
+ T takeAt(int i);
+ T takeFirst();
+ T takeLast();
+ void move(int from, int to);
+ void swap(int i, int j);
+ int indexOf(const T &t, int from = 0) const;
+ int lastIndexOf(const T &t, int from = -1) const;
+ QBool contains(const T &t) const;
+ int count(const T &t) const;
+
+ class const_iterator;
+
+ class iterator {
+ public:
+ Node *i;
+ typedef std::random_access_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef T *pointer;
+ typedef T &reference;
+
+ inline iterator() : i(0) {}
+ inline iterator(Node *n) : i(n) {}
+ inline iterator(const iterator &o): i(o.i){}
+ inline T &operator*() const { return i->t(); }
+ inline T *operator->() const { return &i->t(); }
+ inline T &operator[](int j) const { return i[j].t(); }
+ inline bool operator==(const iterator &o) const { return i == o.i; }
+ inline bool operator!=(const iterator &o) const { return i != o.i; }
+ inline bool operator<(const iterator& other) const { return i < other.i; }
+ inline bool operator<=(const iterator& other) const { return i <= other.i; }
+ inline bool operator>(const iterator& other) const { return i > other.i; }
+ inline bool operator>=(const iterator& other) const { return i >= other.i; }
+
+ inline bool operator==(const const_iterator &o) const
+ { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const
+ { return i != o.i; }
+ inline bool operator<(const const_iterator& other) const
+ { return i < other.i; }
+ inline bool operator<=(const const_iterator& other) const
+ { return i <= other.i; }
+ inline bool operator>(const const_iterator& other) const
+ { return i > other.i; }
+ inline bool operator>=(const const_iterator& other) const
+ { return i >= other.i; }
+
+ inline iterator &operator++() { ++i; return *this; }
+ inline iterator operator++(int) { Node *n = i; ++i; return n; }
+ inline iterator &operator--() { i--; return *this; }
+ inline iterator operator--(int) { Node *n = i; i--; return n; }
+ inline iterator &operator+=(int j) { i+=j; return *this; }
+ inline iterator &operator-=(int j) { i-=j; return *this; }
+ inline iterator operator+(int j) const { return iterator(i+j); }
+ inline iterator operator-(int j) const { return iterator(i-j); }
+ inline int operator-(iterator j) const { return i - j.i; }
+ };
+ friend class iterator;
+
+ class const_iterator {
+ public:
+ Node *i;
+ typedef std::random_access_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef const T *pointer;
+ typedef const T &reference;
+
+ inline const_iterator() : i(0) {}
+ inline const_iterator(Node *n) : i(n) {}
+ inline const_iterator(const const_iterator &o): i(o.i) {}
+
+
+
+ inline const_iterator(const iterator &o): i(o.i) {}
+
+ inline const T &operator*() const { return i->t(); }
+ inline const T *operator->() const { return &i->t(); }
+ inline const T &operator[](int j) const { return i[j].t(); }
+ inline bool operator==(const const_iterator &o) const { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const { return i != o.i; }
+ inline bool operator<(const const_iterator& other) const { return i < other.i; }
+ inline bool operator<=(const const_iterator& other) const { return i <= other.i; }
+ inline bool operator>(const const_iterator& other) const { return i > other.i; }
+ inline bool operator>=(const const_iterator& other) const { return i >= other.i; }
+ inline const_iterator &operator++() { ++i; return *this; }
+ inline const_iterator operator++(int) { Node *n = i; ++i; return n; }
+ inline const_iterator &operator--() { i--; return *this; }
+ inline const_iterator operator--(int) { Node *n = i; i--; return n; }
+ inline const_iterator &operator+=(int j) { i+=j; return *this; }
+ inline const_iterator &operator-=(int j) { i-=j; return *this; }
+ inline const_iterator operator+(int j) const { return const_iterator(i+j); }
+ inline const_iterator operator-(int j) const { return const_iterator(i-j); }
+ inline int operator-(const_iterator j) const { return i - j.i; }
+ };
+ friend class const_iterator;
+
+
+ inline iterator begin() { detach(); return reinterpret_cast<Node *>(p.begin()); }
+ inline const_iterator begin() const { return reinterpret_cast<Node *>(p.begin()); }
+ inline const_iterator constBegin() const { return reinterpret_cast<Node *>(p.begin()); }
+ inline iterator end() { detach(); return reinterpret_cast<Node *>(p.end()); }
+ inline const_iterator end() const { return reinterpret_cast<Node *>(p.end()); }
+ inline const_iterator constEnd() const { return reinterpret_cast<Node *>(p.end()); }
+ iterator insert(iterator before, const T &t);
+ iterator erase(iterator pos);
+ iterator erase(iterator first, iterator last);
+
+
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ inline int count() const { return p.size(); }
+ inline int length() const { return p.size(); }
+ inline T& first() { qt_noop(); return *begin(); }
+ inline const T& first() const { qt_noop(); return *begin(); }
+ T& last() { qt_noop(); return *(--end()); }
+ const T& last() const { qt_noop(); return *(--end()); }
+ inline void removeFirst() { qt_noop(); erase(begin()); }
+ inline void removeLast() { qt_noop(); erase(--end()); }
+ inline bool startsWith(const T &t) const { return !isEmpty() && first() == t; }
+ inline bool endsWith(const T &t) const { return !isEmpty() && last() == t; }
+ QList<T> mid(int pos, int length = -1) const;
+
+ T value(int i) const;
+ T value(int i, const T &defaultValue) const;
+
+
+ inline void push_back(const T &t) { append(t); }
+ inline void push_front(const T &t) { prepend(t); }
+ inline T& front() { return first(); }
+ inline const T& front() const { return first(); }
+ inline T& back() { return last(); }
+ inline const T& back() const { return last(); }
+ inline void pop_front() { removeFirst(); }
+ inline void pop_back() { removeLast(); }
+ inline bool empty() const { return isEmpty(); }
+ typedef int size_type;
+ typedef T value_type;
+ typedef value_type *pointer;
+ typedef const value_type *const_pointer;
+ typedef value_type &reference;
+ typedef const value_type &const_reference;
+ typedef ptrdiff_t difference_type;
+# 298 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qlist.h"
+ QList<T> &operator+=(const QList<T> &l);
+ inline QList<T> operator+(const QList<T> &l) const
+ { QList n = *this; n += l; return n; }
+ inline QList<T> &operator+=(const T &t)
+ { append(t); return *this; }
+ inline QList<T> &operator<< (const T &t)
+ { append(t); return *this; }
+ inline QList<T> &operator<<(const QList<T> &l)
+ { *this += l; return *this; }
+
+ QVector<T> toVector() const;
+ QSet<T> toSet() const;
+
+ static QList<T> fromVector(const QVector<T> &vector);
+ static QList<T> fromSet(const QSet<T> &set);
+
+
+ static inline QList<T> fromStdList(const std::list<T> &list)
+ { QList<T> tmp; qCopy(list.begin(), list.end(), std::back_inserter(tmp)); return tmp; }
+ inline std::list<T> toStdList() const
+ { std::list<T> tmp; qCopy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; }
+
+
+private:
+ void detach_helper();
+ void free(QListData::Data *d);
+
+ void node_construct(Node *n, const T &t);
+ void node_destruct(Node *n);
+ void node_copy(Node *from, Node *to, Node *src);
+ void node_destruct(Node *from, Node *to);
+};
+
+
+
+
+
+
+
+template <typename T>
+inline void QList<T>::node_construct(Node *n, const T &t)
+{
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) n->v = new T(t);
+ else if (QTypeInfo<T>::isComplex) new (n) T(t);
+ else *reinterpret_cast<T*>(n) = t;
+}
+
+template <typename T>
+inline void QList<T>::node_destruct(Node *n)
+{
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) delete reinterpret_cast<T*>(n->v);
+ else if (QTypeInfo<T>::isComplex) reinterpret_cast<T*>(n)->~T();
+}
+
+template <typename T>
+inline void QList<T>::node_copy(Node *from, Node *to, Node *src)
+{
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic)
+ while(from != to)
+ (from++)->v = new T(*reinterpret_cast<T*>((src++)->v));
+ else if (QTypeInfo<T>::isComplex)
+ while(from != to)
+ new (from++) T(*reinterpret_cast<T*>(src++));
+}
+
+template <typename T>
+inline void QList<T>::node_destruct(Node *from, Node *to)
+{
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic)
+ while(from != to) --to, delete reinterpret_cast<T*>(to->v);
+ else if (QTypeInfo<T>::isComplex)
+ while (from != to) --to, reinterpret_cast<T*>(to)->~T();
+}
+
+template <typename T>
+inline QList<T> &QList<T>::operator=(const QList<T> &l)
+{
+ if (d != l.d) {
+ l.d->ref.ref();
+ if (!d->ref.deref())
+ free(d);
+ d = l.d;
+ if (!d->sharable)
+ detach_helper();
+ }
+ return *this;
+}
+template <typename T>
+inline typename QList<T>::iterator QList<T>::insert(iterator before, const T &t)
+{ Node *n = reinterpret_cast<Node *>(p.insert(before.i-reinterpret_cast<Node *>(p.begin())));
+ node_construct(n,t); return n; }
+template <typename T>
+inline typename QList<T>::iterator QList<T>::erase(iterator it)
+{ node_destruct(it.i);
+ return reinterpret_cast<Node *>(p.erase(reinterpret_cast<void**>(it.i))); }
+template <typename T>
+inline const T &QList<T>::at(int i) const
+{ qt_noop();
+ return reinterpret_cast<Node *>(p.at(i))->t(); }
+template <typename T>
+inline const T &QList<T>::operator[](int i) const
+{ qt_noop();
+ return reinterpret_cast<Node *>(p.at(i))->t(); }
+template <typename T>
+inline T &QList<T>::operator[](int i)
+{ qt_noop();
+ detach(); return reinterpret_cast<Node *>(p.at(i))->t(); }
+template <typename T>
+inline void QList<T>::removeAt(int i)
+{ if(i >= 0 && i < p.size()) { detach();
+ node_destruct(reinterpret_cast<Node *>(p.at(i))); p.remove(i); } }
+template <typename T>
+inline T QList<T>::takeAt(int i)
+{ qt_noop();
+ detach(); Node *n = reinterpret_cast<Node *>(p.at(i)); T t = n->t(); node_destruct(n);
+ p.remove(i); return t; }
+template <typename T>
+inline T QList<T>::takeFirst()
+{ T t = first(); removeFirst(); return t; }
+template <typename T>
+inline T QList<T>::takeLast()
+{ T t = last(); removeLast(); return t; }
+
+template <typename T>
+ void QList<T>::append(const T &t)
+{
+ detach();
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
+ node_construct(reinterpret_cast<Node *>(p.append()), t);
+ } else {
+ const T cpy(t);
+ node_construct(reinterpret_cast<Node *>(p.append()), cpy);
+ }
+}
+
+template <typename T>
+inline void QList<T>::prepend(const T &t)
+{
+ detach();
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
+ node_construct(reinterpret_cast<Node *>(p.prepend()), t);
+ } else {
+ const T cpy(t);
+ node_construct(reinterpret_cast<Node *>(p.prepend()), cpy);
+ }
+}
+
+template <typename T>
+inline void QList<T>::insert(int i, const T &t)
+{
+ detach();
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
+ node_construct(reinterpret_cast<Node *>(p.insert(i)), t);
+ } else {
+ const T cpy(t);
+ node_construct(reinterpret_cast<Node *>(p.insert(i)), cpy);
+ }
+}
+
+template <typename T>
+inline void QList<T>::replace(int i, const T &t)
+{
+ qt_noop();
+ detach();
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
+ reinterpret_cast<Node *>(p.at(i))->t() = t;
+ } else {
+ const T cpy(t);
+ reinterpret_cast<Node *>(p.at(i))->t() = cpy;
+ }
+}
+
+template <typename T>
+inline void QList<T>::swap(int i, int j)
+{
+ qt_noop();
+
+ detach();
+ void *t = d->array[d->begin + i];
+ d->array[d->begin + i] = d->array[d->begin + j];
+ d->array[d->begin + j] = t;
+}
+
+template <typename T>
+inline void QList<T>::move(int from, int to)
+{
+ qt_noop();
+
+ detach();
+ p.move(from, to);
+}
+
+template<typename T>
+ QList<T> QList<T>::mid(int pos, int alength) const
+{
+ if (alength < 0)
+ alength = size() - pos;
+ if (pos == 0 && alength == size())
+ return *this;
+ QList<T> cpy;
+ if (pos + alength > size())
+ alength = size() - pos;
+ for (int i = pos; i < pos + alength; ++i)
+ cpy += at(i);
+ return cpy;
+}
+
+template<typename T>
+ T QList<T>::value(int i) const
+{
+ if (i < 0 || i >= p.size()) {
+ return T();
+ }
+ return reinterpret_cast<Node *>(p.at(i))->t();
+}
+
+template<typename T>
+ T QList<T>::value(int i, const T& defaultValue) const
+{
+ return ((i < 0 || i >= p.size()) ? defaultValue : reinterpret_cast<Node *>(p.at(i))->t());
+}
+
+template <typename T>
+ void QList<T>::detach_helper()
+{
+ Node *n = reinterpret_cast<Node *>(p.begin());
+ QListData::Data *x = p.detach2();
+ node_copy(reinterpret_cast<Node *>(p.begin()), reinterpret_cast<Node *>(p.end()), n);
+ if (!x->ref.deref())
+ free(x);
+}
+
+template <typename T>
+ QList<T>::~QList()
+{
+ if (d && !d->ref.deref())
+ free(d);
+}
+
+template <typename T>
+ bool QList<T>::operator==(const QList<T> &l) const
+{
+ if (p.size() != l.p.size())
+ return false;
+ if (d == l.d)
+ return true;
+ Node *i = reinterpret_cast<Node *>(p.end());
+ Node *b = reinterpret_cast<Node *>(p.begin());
+ Node *li = reinterpret_cast<Node *>(l.p.end());
+ while (i != b) {
+ --i; --li;
+ if (!(i->t() == li->t()))
+ return false;
+ }
+ return true;
+}
+
+
+template <typename T>
+ void QList<T>::free(QListData::Data *data)
+{
+ node_destruct(reinterpret_cast<Node *>(data->array + data->begin),
+ reinterpret_cast<Node *>(data->array + data->end));
+ if (data->ref == 0)
+ qFree(data);
+}
+
+
+template <typename T>
+ void QList<T>::clear()
+{
+ *this = QList<T>();
+}
+
+template <typename T>
+ int QList<T>::removeAll(const T &_t)
+{
+ detach();
+ const T t = _t;
+ int removedCount=0, i=0;
+ Node *n;
+ while (i < p.size())
+ if ((n = reinterpret_cast<Node *>(p.at(i)))->t() == t) {
+ node_destruct(n);
+ p.remove(i);
+ ++removedCount;
+ } else {
+ ++i;
+ }
+ return removedCount;
+}
+
+template <typename T>
+ bool QList<T>::removeOne(const T &_t)
+{
+ detach();
+ int index = indexOf(_t);
+ if (index != -1) {
+ removeAt(index);
+ return true;
+ }
+ return false;
+}
+
+template <typename T>
+ typename QList<T>::iterator QList<T>::erase(typename QList<T>::iterator afirst,
+ typename QList<T>::iterator alast)
+{
+ for (Node *n = afirst.i; n < alast.i; ++n)
+ node_destruct(n);
+ int idx = afirst - begin();
+ p.remove(idx, alast - afirst);
+ return begin() + idx;
+}
+
+template <typename T>
+ QList<T> &QList<T>::operator+=(const QList<T> &l)
+{
+ detach();
+ Node *n = reinterpret_cast<Node *>(p.append(l.p));
+ node_copy(n, reinterpret_cast<Node *>(p.end()), reinterpret_cast<Node *>(l.p.begin()));
+ return *this;
+}
+
+template <typename T>
+inline void QList<T>::append(const QList<T> &t)
+{
+ *this += t;
+}
+
+template <typename T>
+ int QList<T>::indexOf(const T &t, int from) const
+{
+ if (from < 0)
+ from = qMax(from + p.size(), 0);
+ if (from < p.size()) {
+ Node *n = reinterpret_cast<Node *>(p.at(from -1));
+ Node *e = reinterpret_cast<Node *>(p.end());
+ while (++n != e)
+ if (n->t() == t)
+ return n - reinterpret_cast<Node *>(p.begin());
+ }
+ return -1;
+}
+
+template <typename T>
+ int QList<T>::lastIndexOf(const T &t, int from) const
+{
+ if (from < 0)
+ from += p.size();
+ else if (from >= p.size())
+ from = p.size()-1;
+ if (from >= 0) {
+ Node *b = reinterpret_cast<Node *>(p.begin());
+ Node *n = reinterpret_cast<Node *>(p.at(from + 1));
+ while (n-- != b) {
+ if (n->t() == t)
+ return n - b;
+ }
+ }
+ return -1;
+}
+
+template <typename T>
+ QBool QList<T>::contains(const T &t) const
+{
+ Node *b = reinterpret_cast<Node *>(p.begin());
+ Node *i = reinterpret_cast<Node *>(p.end());
+ while (i-- != b)
+ if (i->t() == t)
+ return QBool(true);
+ return QBool(false);
+}
+
+template <typename T>
+ int QList<T>::count(const T &t) const
+{
+ int c = 0;
+ Node *b = reinterpret_cast<Node *>(p.begin());
+ Node *i = reinterpret_cast<Node *>(p.end());
+ while (i-- != b)
+ if (i->t() == t)
+ ++c;
+ return c;
+}
+
+template <class T> class QListIterator { typedef typename QList<T>::const_iterator const_iterator; QList<T> c; const_iterator i; public: inline QListIterator(const QList<T> &container) : c(container), i(c.constBegin()) {} inline QListIterator &operator=(const QList<T> &container) { c = container; i = c.constBegin(); return *this; } inline void toFront() { i = c.constBegin(); } inline void toBack() { i = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline const T &next() { return *i++; } inline const T &peekNext() const { return *i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline const T &previous() { return *--i; } inline const T &peekPrevious() const { const_iterator p = i; return *--p; } inline bool findNext(const T &t) { while (i != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(--i) == t) return true; return false; } };
+template <class T> class QMutableListIterator { typedef typename QList<T>::iterator iterator; typedef typename QList<T>::const_iterator const_iterator; QList<T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableListIterator(QList<T> &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableListIterator() { c->setSharable(true); } inline QMutableListIterator &operator=(QList<T> &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = i; } inline bool hasNext() const { return c->constEnd() != const_iterator(i); } inline T &next() { n = i++; return *n; } inline T &peekNext() const { return *i; } inline bool hasPrevious() const { return c->constBegin() != const_iterator(i); } inline T &previous() { n = --i; return *n; } inline T &peekPrevious() const { iterator p = i; return *--p; } inline void remove() { if (c->constEnd() != const_iterator(n)) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) const { if (c->constEnd() != const_iterator(n)) *n = t; } inline T &value() { qt_noop(); return *n; } inline const T &value() const { qt_noop(); return *n; } inline void insert(const T &t) { n = i = c->insert(i, t); ++i; } inline bool findNext(const T &t) { while (c->constEnd() != const_iterator(n = i)) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (c->constBegin() != const_iterator(i)) if (*(n = --i) == t) return true; n = c->end(); return false; } };
+
+
+
+
+# 1 "../../include/QtCore/qlist.h" 2
+# 49 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qhash.h" 2
+# 1 "../../include/QtCore/qpair.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qpair.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qpair.h"
+#define QPAIR_H
+
+# 1 "../../include/QtCore/qdatastream.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdatastream.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdatastream.h"
+#define QDATASTREAM_H
+
+# 1 "../../include/QtCore/qiodevice.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qiodevice.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qiodevice.h"
+#define QIODEVICE_H
+
+
+# 1 "../../include/QtCore/qobject.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h"
+#define QOBJECT_H
+
+
+
+# 1 "../../include/QtCore/qobjectdefs.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobjectdefs.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobjectdefs.h"
+#define QOBJECTDEFS_H
+
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+#define QNAMESPACE_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+
+namespace
+
+
+
+Qt {
+# 98 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ enum GlobalColor {
+ color0,
+ color1,
+ black,
+ white,
+ darkGray,
+ gray,
+ lightGray,
+ red,
+ green,
+ blue,
+ cyan,
+ magenta,
+ yellow,
+ darkRed,
+ darkGreen,
+ darkBlue,
+ darkCyan,
+ darkMagenta,
+ darkYellow,
+ transparent
+ };
+
+ enum KeyboardModifier {
+ NoModifier = 0x00000000,
+ ShiftModifier = 0x02000000,
+ ControlModifier = 0x04000000,
+ AltModifier = 0x08000000,
+ MetaModifier = 0x10000000,
+ KeypadModifier = 0x20000000,
+ GroupSwitchModifier = 0x40000000,
+
+ KeyboardModifierMask = 0xfe000000
+ };
+ typedef QFlags<KeyboardModifier> KeyboardModifiers;
+
+
+ enum Modifier {
+ META = Qt::MetaModifier,
+ SHIFT = Qt::ShiftModifier,
+ CTRL = Qt::ControlModifier,
+ ALT = Qt::AltModifier,
+ MODIFIER_MASK = KeyboardModifierMask,
+ UNICODE_ACCEL = 0x00000000
+ };
+
+ enum MouseButton {
+ NoButton = 0x00000000,
+ LeftButton = 0x00000001,
+ RightButton = 0x00000002,
+ MidButton = 0x00000004,
+ XButton1 = 0x00000008,
+ XButton2 = 0x00000010,
+ MouseButtonMask = 0x000000ff
+ };
+ typedef QFlags<MouseButton> MouseButtons;
+# 167 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ enum Orientation {
+ Horizontal = 0x1,
+ Vertical = 0x2
+ };
+
+ typedef QFlags<Orientation> Orientations;
+
+ enum FocusPolicy {
+ NoFocus = 0,
+ TabFocus = 0x1,
+ ClickFocus = 0x2,
+ StrongFocus = TabFocus | ClickFocus | 0x8,
+ WheelFocus = StrongFocus | 0x4
+ };
+
+ enum SortOrder {
+ AscendingOrder,
+ DescendingOrder
+
+
+
+
+ };
+
+
+
+
+
+ enum AlignmentFlag {
+ AlignLeft = 0x0001,
+ AlignLeading = AlignLeft,
+ AlignRight = 0x0002,
+ AlignTrailing = AlignRight,
+ AlignHCenter = 0x0004,
+ AlignJustify = 0x0008,
+ AlignAbsolute = 0x0010,
+ AlignHorizontal_Mask = AlignLeft | AlignRight | AlignHCenter | AlignJustify | AlignAbsolute,
+
+ AlignTop = 0x0020,
+ AlignBottom = 0x0040,
+ AlignVCenter = 0x0080,
+ AlignVertical_Mask = AlignTop | AlignBottom | AlignVCenter,
+
+ AlignCenter = AlignVCenter | AlignHCenter
+
+
+
+ };
+
+ typedef QFlags<AlignmentFlag> Alignment;
+
+ enum TextFlag {
+ TextSingleLine = 0x0100,
+ TextDontClip = 0x0200,
+ TextExpandTabs = 0x0400,
+ TextShowMnemonic = 0x0800,
+ TextWordWrap = 0x1000,
+ TextWrapAnywhere = 0x2000,
+ TextDontPrint = 0x4000,
+ TextIncludeTrailingSpaces = 0x08000000,
+ TextHideMnemonic = 0x8000,
+ TextJustificationForced = 0x10000,
+ TextForceLeftToRight = 0x20000,
+ TextForceRightToLeft = 0x40000
+# 243 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ };
+
+
+
+
+ enum TextElideMode {
+ ElideLeft,
+ ElideRight,
+ ElideMiddle,
+ ElideNone
+ };
+
+ enum WindowType {
+ Widget = 0x00000000,
+ Window = 0x00000001,
+ Dialog = 0x00000002 | Window,
+ Sheet = 0x00000004 | Window,
+ Drawer = 0x00000006 | Window,
+ Popup = 0x00000008 | Window,
+ Tool = 0x0000000a | Window,
+ ToolTip = 0x0000000c | Window,
+ SplashScreen = 0x0000000e | Window,
+ Desktop = 0x00000010 | Window,
+ SubWindow = 0x00000012,
+
+ WindowType_Mask = 0x000000ff,
+ MSWindowsFixedSizeDialogHint = 0x00000100,
+ MSWindowsOwnDC = 0x00000200,
+ X11BypassWindowManagerHint = 0x00000400,
+ FramelessWindowHint = 0x00000800,
+ WindowTitleHint = 0x00001000,
+ WindowSystemMenuHint = 0x00002000,
+ WindowMinimizeButtonHint = 0x00004000,
+ WindowMaximizeButtonHint = 0x00008000,
+ WindowMinMaxButtonsHint = WindowMinimizeButtonHint | WindowMaximizeButtonHint,
+ WindowContextHelpButtonHint = 0x00010000,
+ WindowShadeButtonHint = 0x00020000,
+ WindowStaysOnTopHint = 0x00040000,
+
+
+
+
+
+
+
+ CustomizeWindowHint = 0x02000000,
+ WindowStaysOnBottomHint = 0x04000000,
+ WindowCloseButtonHint = 0x08000000,
+ MacWindowToolBarButtonHint = 0x10000000,
+ BypassGraphicsProxyWidget = 0x20000000,
+ WindowOkButtonHint = 0x00080000,
+ WindowCancelButtonHint = 0x00100000
+# 345 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ };
+
+ typedef QFlags<WindowType> WindowFlags;
+
+ enum WindowState {
+ WindowNoState = 0x00000000,
+ WindowMinimized = 0x00000001,
+ WindowMaximized = 0x00000002,
+ WindowFullScreen = 0x00000004,
+ WindowActive = 0x00000008
+ };
+
+ typedef QFlags<WindowState> WindowStates;
+
+ enum WidgetAttribute {
+ WA_Disabled = 0,
+ WA_UnderMouse = 1,
+ WA_MouseTracking = 2,
+ WA_ContentsPropagated = 3,
+ WA_OpaquePaintEvent = 4,
+ WA_NoBackground = WA_OpaquePaintEvent,
+ WA_StaticContents = 5,
+ WA_LaidOut = 7,
+ WA_PaintOnScreen = 8,
+ WA_NoSystemBackground = 9,
+ WA_UpdatesDisabled = 10,
+ WA_Mapped = 11,
+ WA_MacNoClickThrough = 12,
+ WA_PaintOutsidePaintEvent = 13,
+ WA_InputMethodEnabled = 14,
+ WA_WState_Visible = 15,
+ WA_WState_Hidden = 16,
+
+ WA_ForceDisabled = 32,
+ WA_KeyCompression = 33,
+ WA_PendingMoveEvent = 34,
+ WA_PendingResizeEvent = 35,
+ WA_SetPalette = 36,
+ WA_SetFont = 37,
+ WA_SetCursor = 38,
+ WA_NoChildEventsFromChildren = 39,
+ WA_WindowModified = 41,
+ WA_Resized = 42,
+ WA_Moved = 43,
+ WA_PendingUpdate = 44,
+ WA_InvalidSize = 45,
+ WA_MacBrushedMetal = 46,
+ WA_MacMetalStyle = WA_MacBrushedMetal,
+ WA_CustomWhatsThis = 47,
+ WA_LayoutOnEntireRect = 48,
+ WA_OutsideWSRange = 49,
+ WA_GrabbedShortcut = 50,
+ WA_TransparentForMouseEvents = 51,
+ WA_PaintUnclipped = 52,
+ WA_SetWindowIcon = 53,
+ WA_NoMouseReplay = 54,
+ WA_DeleteOnClose = 55,
+ WA_RightToLeft = 56,
+ WA_SetLayoutDirection = 57,
+ WA_NoChildEventsForParent = 58,
+ WA_ForceUpdatesDisabled = 59,
+
+ WA_WState_Created = 60,
+ WA_WState_CompressKeys = 61,
+ WA_WState_InPaintEvent = 62,
+ WA_WState_Reparented = 63,
+ WA_WState_ConfigPending = 64,
+ WA_WState_Polished = 66,
+ WA_WState_DND = 67,
+ WA_WState_OwnSizePolicy = 68,
+ WA_WState_ExplicitShowHide = 69,
+
+ WA_ShowModal = 70,
+ WA_MouseNoMask = 71,
+ WA_GroupLeader = 72,
+ WA_NoMousePropagation = 73,
+ WA_Hover = 74,
+ WA_InputMethodTransparent = 75,
+ WA_QuitOnClose = 76,
+
+ WA_KeyboardFocusChange = 77,
+
+ WA_AcceptDrops = 78,
+ WA_DropSiteRegistered = 79,
+ WA_ForceAcceptDrops = WA_DropSiteRegistered,
+
+ WA_WindowPropagation = 80,
+
+ WA_NoX11EventCompression = 81,
+ WA_TintedBackground = 82,
+ WA_X11OpenGLOverlay = 83,
+ WA_AlwaysShowToolTips = 84,
+ WA_MacOpaqueSizeGrip = 85,
+ WA_SetStyle = 86,
+
+ WA_SetLocale = 87,
+ WA_MacShowFocusRect = 88,
+
+ WA_MacNormalSize = 89,
+ WA_MacSmallSize = 90,
+ WA_MacMiniSize = 91,
+
+ WA_LayoutUsesWidgetRect = 92,
+ WA_StyledBackground = 93,
+ WA_MSWindowsUseDirect3D = 94,
+ WA_CanHostQMdiSubWindowTitleBar = 95,
+
+ WA_MacAlwaysShowToolWindow = 96,
+
+ WA_StyleSheet = 97,
+
+ WA_ShowWithoutActivating = 98,
+
+ WA_X11BypassTransientForHint = 99,
+
+ WA_NativeWindow = 100,
+ WA_DontCreateNativeAncestors = 101,
+
+ WA_MacVariableSize = 102,
+
+ WA_DontShowOnScreen = 103,
+
+
+ WA_X11NetWmWindowTypeDesktop = 104,
+ WA_X11NetWmWindowTypeDock = 105,
+ WA_X11NetWmWindowTypeToolBar = 106,
+ WA_X11NetWmWindowTypeMenu = 107,
+ WA_X11NetWmWindowTypeUtility = 108,
+ WA_X11NetWmWindowTypeSplash = 109,
+ WA_X11NetWmWindowTypeDialog = 110,
+ WA_X11NetWmWindowTypeDropDownMenu = 111,
+ WA_X11NetWmWindowTypePopupMenu = 112,
+ WA_X11NetWmWindowTypeToolTip = 113,
+ WA_X11NetWmWindowTypeNotification = 114,
+ WA_X11NetWmWindowTypeCombo = 115,
+ WA_X11NetWmWindowTypeDND = 116,
+
+ WA_MacFrameworkScaled = 117,
+
+ WA_SetWindowModality = 118,
+ WA_WState_WindowOpacitySet = 119,
+ WA_TranslucentBackground = 120,
+
+
+ WA_AttributeCount
+ };
+
+ enum ApplicationAttribute
+ {
+ AA_ImmediateWidgetCreation = 0,
+ AA_MSWindowsUseDirect3DByDefault = 1,
+ AA_DontShowIconsInMenus = 2,
+ AA_NativeWindows = 3,
+ AA_DontCreateNativeWidgetSiblings = 4,
+ AA_MacPluginApplication = 5,
+
+
+ AA_AttributeCount
+ };
+
+
+
+
+
+ enum ImageConversionFlag {
+ ColorMode_Mask = 0x00000003,
+ AutoColor = 0x00000000,
+ ColorOnly = 0x00000003,
+ MonoOnly = 0x00000002,
+
+
+ AlphaDither_Mask = 0x0000000c,
+ ThresholdAlphaDither = 0x00000000,
+ OrderedAlphaDither = 0x00000004,
+ DiffuseAlphaDither = 0x00000008,
+ NoAlpha = 0x0000000c,
+
+ Dither_Mask = 0x00000030,
+ DiffuseDither = 0x00000000,
+ OrderedDither = 0x00000010,
+ ThresholdDither = 0x00000020,
+
+
+ DitherMode_Mask = 0x000000c0,
+ AutoDither = 0x00000000,
+ PreferDither = 0x00000040,
+ AvoidDither = 0x00000080,
+
+ NoOpaqueDetection = 0x00000100
+ };
+ typedef QFlags<ImageConversionFlag> ImageConversionFlags;
+
+ enum BGMode {
+ TransparentMode,
+ OpaqueMode
+ };
+# 561 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ enum Key {
+ Key_Escape = 0x01000000,
+ Key_Tab = 0x01000001,
+ Key_Backtab = 0x01000002,
+
+
+
+ Key_Backspace = 0x01000003,
+
+
+
+ Key_Return = 0x01000004,
+ Key_Enter = 0x01000005,
+ Key_Insert = 0x01000006,
+ Key_Delete = 0x01000007,
+ Key_Pause = 0x01000008,
+ Key_Print = 0x01000009,
+ Key_SysReq = 0x0100000a,
+ Key_Clear = 0x0100000b,
+ Key_Home = 0x01000010,
+ Key_End = 0x01000011,
+ Key_Left = 0x01000012,
+ Key_Up = 0x01000013,
+ Key_Right = 0x01000014,
+ Key_Down = 0x01000015,
+ Key_PageUp = 0x01000016,
+
+
+
+ Key_PageDown = 0x01000017,
+
+
+
+ Key_Shift = 0x01000020,
+ Key_Control = 0x01000021,
+ Key_Meta = 0x01000022,
+ Key_Alt = 0x01000023,
+ Key_CapsLock = 0x01000024,
+ Key_NumLock = 0x01000025,
+ Key_ScrollLock = 0x01000026,
+ Key_F1 = 0x01000030,
+ Key_F2 = 0x01000031,
+ Key_F3 = 0x01000032,
+ Key_F4 = 0x01000033,
+ Key_F5 = 0x01000034,
+ Key_F6 = 0x01000035,
+ Key_F7 = 0x01000036,
+ Key_F8 = 0x01000037,
+ Key_F9 = 0x01000038,
+ Key_F10 = 0x01000039,
+ Key_F11 = 0x0100003a,
+ Key_F12 = 0x0100003b,
+ Key_F13 = 0x0100003c,
+ Key_F14 = 0x0100003d,
+ Key_F15 = 0x0100003e,
+ Key_F16 = 0x0100003f,
+ Key_F17 = 0x01000040,
+ Key_F18 = 0x01000041,
+ Key_F19 = 0x01000042,
+ Key_F20 = 0x01000043,
+ Key_F21 = 0x01000044,
+ Key_F22 = 0x01000045,
+ Key_F23 = 0x01000046,
+ Key_F24 = 0x01000047,
+ Key_F25 = 0x01000048,
+ Key_F26 = 0x01000049,
+ Key_F27 = 0x0100004a,
+ Key_F28 = 0x0100004b,
+ Key_F29 = 0x0100004c,
+ Key_F30 = 0x0100004d,
+ Key_F31 = 0x0100004e,
+ Key_F32 = 0x0100004f,
+ Key_F33 = 0x01000050,
+ Key_F34 = 0x01000051,
+ Key_F35 = 0x01000052,
+ Key_Super_L = 0x01000053,
+ Key_Super_R = 0x01000054,
+ Key_Menu = 0x01000055,
+ Key_Hyper_L = 0x01000056,
+ Key_Hyper_R = 0x01000057,
+ Key_Help = 0x01000058,
+ Key_Direction_L = 0x01000059,
+ Key_Direction_R = 0x01000060,
+ Key_Space = 0x20,
+ Key_Any = Key_Space,
+ Key_Exclam = 0x21,
+ Key_QuoteDbl = 0x22,
+ Key_NumberSign = 0x23,
+ Key_Dollar = 0x24,
+ Key_Percent = 0x25,
+ Key_Ampersand = 0x26,
+ Key_Apostrophe = 0x27,
+ Key_ParenLeft = 0x28,
+ Key_ParenRight = 0x29,
+ Key_Asterisk = 0x2a,
+ Key_Plus = 0x2b,
+ Key_Comma = 0x2c,
+ Key_Minus = 0x2d,
+ Key_Period = 0x2e,
+ Key_Slash = 0x2f,
+ Key_0 = 0x30,
+ Key_1 = 0x31,
+ Key_2 = 0x32,
+ Key_3 = 0x33,
+ Key_4 = 0x34,
+ Key_5 = 0x35,
+ Key_6 = 0x36,
+ Key_7 = 0x37,
+ Key_8 = 0x38,
+ Key_9 = 0x39,
+ Key_Colon = 0x3a,
+ Key_Semicolon = 0x3b,
+ Key_Less = 0x3c,
+ Key_Equal = 0x3d,
+ Key_Greater = 0x3e,
+ Key_Question = 0x3f,
+ Key_At = 0x40,
+ Key_A = 0x41,
+ Key_B = 0x42,
+ Key_C = 0x43,
+ Key_D = 0x44,
+ Key_E = 0x45,
+ Key_F = 0x46,
+ Key_G = 0x47,
+ Key_H = 0x48,
+ Key_I = 0x49,
+ Key_J = 0x4a,
+ Key_K = 0x4b,
+ Key_L = 0x4c,
+ Key_M = 0x4d,
+ Key_N = 0x4e,
+ Key_O = 0x4f,
+ Key_P = 0x50,
+ Key_Q = 0x51,
+ Key_R = 0x52,
+ Key_S = 0x53,
+ Key_T = 0x54,
+ Key_U = 0x55,
+ Key_V = 0x56,
+ Key_W = 0x57,
+ Key_X = 0x58,
+ Key_Y = 0x59,
+ Key_Z = 0x5a,
+ Key_BracketLeft = 0x5b,
+ Key_Backslash = 0x5c,
+ Key_BracketRight = 0x5d,
+ Key_AsciiCircum = 0x5e,
+ Key_Underscore = 0x5f,
+ Key_QuoteLeft = 0x60,
+ Key_BraceLeft = 0x7b,
+ Key_Bar = 0x7c,
+ Key_BraceRight = 0x7d,
+ Key_AsciiTilde = 0x7e,
+
+ Key_nobreakspace = 0x0a0,
+ Key_exclamdown = 0x0a1,
+ Key_cent = 0x0a2,
+ Key_sterling = 0x0a3,
+ Key_currency = 0x0a4,
+ Key_yen = 0x0a5,
+ Key_brokenbar = 0x0a6,
+ Key_section = 0x0a7,
+ Key_diaeresis = 0x0a8,
+ Key_copyright = 0x0a9,
+ Key_ordfeminine = 0x0aa,
+ Key_guillemotleft = 0x0ab,
+ Key_notsign = 0x0ac,
+ Key_hyphen = 0x0ad,
+ Key_registered = 0x0ae,
+ Key_macron = 0x0af,
+ Key_degree = 0x0b0,
+ Key_plusminus = 0x0b1,
+ Key_twosuperior = 0x0b2,
+ Key_threesuperior = 0x0b3,
+ Key_acute = 0x0b4,
+ Key_mu = 0x0b5,
+ Key_paragraph = 0x0b6,
+ Key_periodcentered = 0x0b7,
+ Key_cedilla = 0x0b8,
+ Key_onesuperior = 0x0b9,
+ Key_masculine = 0x0ba,
+ Key_guillemotright = 0x0bb,
+ Key_onequarter = 0x0bc,
+ Key_onehalf = 0x0bd,
+ Key_threequarters = 0x0be,
+ Key_questiondown = 0x0bf,
+ Key_Agrave = 0x0c0,
+ Key_Aacute = 0x0c1,
+ Key_Acircumflex = 0x0c2,
+ Key_Atilde = 0x0c3,
+ Key_Adiaeresis = 0x0c4,
+ Key_Aring = 0x0c5,
+ Key_AE = 0x0c6,
+ Key_Ccedilla = 0x0c7,
+ Key_Egrave = 0x0c8,
+ Key_Eacute = 0x0c9,
+ Key_Ecircumflex = 0x0ca,
+ Key_Ediaeresis = 0x0cb,
+ Key_Igrave = 0x0cc,
+ Key_Iacute = 0x0cd,
+ Key_Icircumflex = 0x0ce,
+ Key_Idiaeresis = 0x0cf,
+ Key_ETH = 0x0d0,
+ Key_Ntilde = 0x0d1,
+ Key_Ograve = 0x0d2,
+ Key_Oacute = 0x0d3,
+ Key_Ocircumflex = 0x0d4,
+ Key_Otilde = 0x0d5,
+ Key_Odiaeresis = 0x0d6,
+ Key_multiply = 0x0d7,
+ Key_Ooblique = 0x0d8,
+ Key_Ugrave = 0x0d9,
+ Key_Uacute = 0x0da,
+ Key_Ucircumflex = 0x0db,
+ Key_Udiaeresis = 0x0dc,
+ Key_Yacute = 0x0dd,
+ Key_THORN = 0x0de,
+ Key_ssharp = 0x0df,
+# 804 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ Key_division = 0x0f7,
+# 814 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ Key_ydiaeresis = 0x0ff,
+
+
+
+
+
+
+ Key_AltGr = 0x01001103,
+ Key_Multi_key = 0x01001120,
+ Key_Codeinput = 0x01001137,
+ Key_SingleCandidate = 0x0100113c,
+ Key_MultipleCandidate = 0x0100113d,
+ Key_PreviousCandidate = 0x0100113e,
+
+
+ Key_Mode_switch = 0x0100117e,
+
+
+
+ Key_Kanji = 0x01001121,
+ Key_Muhenkan = 0x01001122,
+
+ Key_Henkan = 0x01001123,
+ Key_Romaji = 0x01001124,
+ Key_Hiragana = 0x01001125,
+ Key_Katakana = 0x01001126,
+ Key_Hiragana_Katakana = 0x01001127,
+ Key_Zenkaku = 0x01001128,
+ Key_Hankaku = 0x01001129,
+ Key_Zenkaku_Hankaku = 0x0100112a,
+ Key_Touroku = 0x0100112b,
+ Key_Massyo = 0x0100112c,
+ Key_Kana_Lock = 0x0100112d,
+ Key_Kana_Shift = 0x0100112e,
+ Key_Eisu_Shift = 0x0100112f,
+ Key_Eisu_toggle = 0x01001130,
+# 859 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ Key_Hangul = 0x01001131,
+ Key_Hangul_Start = 0x01001132,
+ Key_Hangul_End = 0x01001133,
+ Key_Hangul_Hanja = 0x01001134,
+ Key_Hangul_Jamo = 0x01001135,
+ Key_Hangul_Romaja = 0x01001136,
+
+ Key_Hangul_Jeonja = 0x01001138,
+ Key_Hangul_Banja = 0x01001139,
+ Key_Hangul_PreHanja = 0x0100113a,
+ Key_Hangul_PostHanja = 0x0100113b,
+
+
+
+ Key_Hangul_Special = 0x0100113f,
+
+
+
+ Key_Dead_Grave = 0x01001250,
+ Key_Dead_Acute = 0x01001251,
+ Key_Dead_Circumflex = 0x01001252,
+ Key_Dead_Tilde = 0x01001253,
+ Key_Dead_Macron = 0x01001254,
+ Key_Dead_Breve = 0x01001255,
+ Key_Dead_Abovedot = 0x01001256,
+ Key_Dead_Diaeresis = 0x01001257,
+ Key_Dead_Abovering = 0x01001258,
+ Key_Dead_Doubleacute = 0x01001259,
+ Key_Dead_Caron = 0x0100125a,
+ Key_Dead_Cedilla = 0x0100125b,
+ Key_Dead_Ogonek = 0x0100125c,
+ Key_Dead_Iota = 0x0100125d,
+ Key_Dead_Voiced_Sound = 0x0100125e,
+ Key_Dead_Semivoiced_Sound = 0x0100125f,
+ Key_Dead_Belowdot = 0x01001260,
+ Key_Dead_Hook = 0x01001261,
+ Key_Dead_Horn = 0x01001262,
+
+
+
+ Key_Back = 0x01000061,
+ Key_Forward = 0x01000062,
+ Key_Stop = 0x01000063,
+ Key_Refresh = 0x01000064,
+
+ Key_VolumeDown = 0x01000070,
+ Key_VolumeMute = 0x01000071,
+ Key_VolumeUp = 0x01000072,
+ Key_BassBoost = 0x01000073,
+ Key_BassUp = 0x01000074,
+ Key_BassDown = 0x01000075,
+ Key_TrebleUp = 0x01000076,
+ Key_TrebleDown = 0x01000077,
+
+ Key_MediaPlay = 0x01000080,
+ Key_MediaStop = 0x01000081,
+ Key_MediaPrevious = 0x01000082,
+
+
+
+ Key_MediaNext = 0x01000083,
+ Key_MediaRecord = 0x01000084,
+
+ Key_HomePage = 0x01000090,
+ Key_Favorites = 0x01000091,
+ Key_Search = 0x01000092,
+ Key_Standby = 0x01000093,
+ Key_OpenUrl = 0x01000094,
+
+ Key_LaunchMail = 0x010000a0,
+ Key_LaunchMedia = 0x010000a1,
+ Key_Launch0 = 0x010000a2,
+ Key_Launch1 = 0x010000a3,
+ Key_Launch2 = 0x010000a4,
+ Key_Launch3 = 0x010000a5,
+ Key_Launch4 = 0x010000a6,
+ Key_Launch5 = 0x010000a7,
+ Key_Launch6 = 0x010000a8,
+ Key_Launch7 = 0x010000a9,
+ Key_Launch8 = 0x010000aa,
+ Key_Launch9 = 0x010000ab,
+ Key_LaunchA = 0x010000ac,
+ Key_LaunchB = 0x010000ad,
+ Key_LaunchC = 0x010000ae,
+ Key_LaunchD = 0x010000af,
+ Key_LaunchE = 0x010000b0,
+ Key_LaunchF = 0x010000b1,
+
+ Key_MediaLast = 0x0100ffff,
+
+
+ Key_Select = 0x01010000,
+ Key_Yes = 0x01010001,
+ Key_No = 0x01010002,
+
+
+ Key_Cancel = 0x01020001,
+ Key_Printer = 0x01020002,
+ Key_Execute = 0x01020003,
+ Key_Sleep = 0x01020004,
+ Key_Play = 0x01020005,
+ Key_Zoom = 0x01020006,
+
+
+
+
+
+ Key_Context1 = 0x01100000,
+ Key_Context2 = 0x01100001,
+ Key_Context3 = 0x01100002,
+ Key_Context4 = 0x01100003,
+ Key_Call = 0x01100004,
+ Key_Hangup = 0x01100005,
+ Key_Flip = 0x01100006,
+
+ Key_unknown = 0x01ffffff
+ };
+
+ enum ArrowType {
+ NoArrow,
+ UpArrow,
+ DownArrow,
+ LeftArrow,
+ RightArrow
+ };
+
+ enum PenStyle {
+ NoPen,
+ SolidLine,
+ DashLine,
+ DotLine,
+ DashDotLine,
+ DashDotDotLine,
+ CustomDashLine
+
+ , MPenStyle = 0x0f
+
+ };
+
+ enum PenCapStyle {
+ FlatCap = 0x00,
+ SquareCap = 0x10,
+ RoundCap = 0x20,
+ MPenCapStyle = 0x30
+ };
+
+ enum PenJoinStyle {
+ MiterJoin = 0x00,
+ BevelJoin = 0x40,
+ RoundJoin = 0x80,
+ SvgMiterJoin = 0x100,
+ MPenJoinStyle = 0x1c0
+ };
+
+ enum BrushStyle {
+ NoBrush,
+ SolidPattern,
+ Dense1Pattern,
+ Dense2Pattern,
+ Dense3Pattern,
+ Dense4Pattern,
+ Dense5Pattern,
+ Dense6Pattern,
+ Dense7Pattern,
+ HorPattern,
+ VerPattern,
+ CrossPattern,
+ BDiagPattern,
+ FDiagPattern,
+ DiagCrossPattern,
+ LinearGradientPattern,
+ RadialGradientPattern,
+ ConicalGradientPattern,
+ TexturePattern = 24
+
+
+
+ };
+
+ enum SizeMode {
+ AbsoluteSize,
+ RelativeSize
+ };
+# 1103 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ enum UIEffect {
+ UI_General,
+ UI_AnimateMenu,
+ UI_FadeMenu,
+ UI_AnimateCombo,
+ UI_AnimateTooltip,
+ UI_FadeTooltip,
+ UI_AnimateToolBox
+ };
+
+ enum CursorShape {
+ ArrowCursor,
+ UpArrowCursor,
+ CrossCursor,
+ WaitCursor,
+ IBeamCursor,
+ SizeVerCursor,
+ SizeHorCursor,
+ SizeBDiagCursor,
+ SizeFDiagCursor,
+ SizeAllCursor,
+ BlankCursor,
+ SplitVCursor,
+ SplitHCursor,
+ PointingHandCursor,
+ ForbiddenCursor,
+ WhatsThisCursor,
+ BusyCursor,
+ OpenHandCursor,
+ ClosedHandCursor,
+ LastCursor = ClosedHandCursor,
+ BitmapCursor = 24,
+ CustomCursor = 25
+# 1156 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ };
+
+ enum TextFormat {
+ PlainText,
+ RichText,
+ AutoText,
+ LogText
+ };
+
+ enum AspectRatioMode {
+ IgnoreAspectRatio,
+ KeepAspectRatio,
+ KeepAspectRatioByExpanding
+
+
+
+
+
+ };
+
+
+
+
+
+ enum AnchorAttribute {
+ AnchorName,
+ AnchorHref
+ };
+
+ enum DockWidgetArea {
+ LeftDockWidgetArea = 0x1,
+ RightDockWidgetArea = 0x2,
+ TopDockWidgetArea = 0x4,
+ BottomDockWidgetArea = 0x8,
+
+ DockWidgetArea_Mask = 0xf,
+ AllDockWidgetAreas = DockWidgetArea_Mask,
+ NoDockWidgetArea = 0
+ };
+ enum DockWidgetAreaSizes {
+ NDockWidgetAreas = 4
+ };
+
+ typedef QFlags<DockWidgetArea> DockWidgetAreas;
+
+ enum ToolBarArea {
+ LeftToolBarArea = 0x1,
+ RightToolBarArea = 0x2,
+ TopToolBarArea = 0x4,
+ BottomToolBarArea = 0x8,
+
+ ToolBarArea_Mask = 0xf,
+ AllToolBarAreas = ToolBarArea_Mask,
+ NoToolBarArea = 0
+ };
+
+ enum ToolBarAreaSizes {
+ NToolBarAreas = 4
+ };
+
+ typedef QFlags<ToolBarArea> ToolBarAreas;
+# 1240 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ enum DateFormat {
+ TextDate,
+ ISODate,
+ SystemLocaleDate,
+ LocalDate = SystemLocaleDate,
+ LocaleDate,
+ SystemLocaleShortDate,
+ SystemLocaleLongDate,
+ DefaultLocaleShortDate,
+ DefaultLocaleLongDate
+ };
+
+ enum TimeSpec {
+ LocalTime,
+ UTC,
+ OffsetFromUTC
+ };
+
+ enum DayOfWeek {
+ Monday = 1,
+ Tuesday = 2,
+ Wednesday = 3,
+ Thursday = 4,
+ Friday = 5,
+ Saturday = 6,
+ Sunday = 7
+ };
+
+ enum ScrollBarPolicy {
+ ScrollBarAsNeeded,
+ ScrollBarAlwaysOff,
+ ScrollBarAlwaysOn
+ };
+# 1299 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ enum CaseSensitivity {
+ CaseInsensitive,
+ CaseSensitive
+ };
+
+ enum Corner {
+ TopLeftCorner = 0x00000,
+ TopRightCorner = 0x00001,
+ BottomLeftCorner = 0x00002,
+ BottomRightCorner = 0x00003
+
+
+
+
+
+
+ };
+
+ enum ConnectionType {
+ AutoConnection,
+ DirectConnection,
+ QueuedConnection,
+ AutoCompatConnection,
+ BlockingQueuedConnection
+ };
+
+ enum ShortcutContext {
+ WidgetShortcut,
+ WindowShortcut,
+ ApplicationShortcut,
+ WidgetWithChildrenShortcut
+ };
+
+ enum FillRule {
+ OddEvenFill,
+ WindingFill
+ };
+
+ enum MaskMode {
+ MaskInColor,
+ MaskOutColor
+ };
+
+ enum ClipOperation {
+ NoClip,
+ ReplaceClip,
+ IntersectClip,
+ UniteClip
+ };
+
+
+ enum ItemSelectionMode {
+ ContainsItemShape = 0x0,
+ IntersectsItemShape = 0x1,
+ ContainsItemBoundingRect = 0x2,
+ IntersectsItemBoundingRect = 0x3
+ };
+
+ enum TransformationMode {
+ FastTransformation,
+ SmoothTransformation
+ };
+
+ enum Axis {
+ XAxis,
+ YAxis,
+ ZAxis
+ };
+
+ enum FocusReason {
+ MouseFocusReason,
+ TabFocusReason,
+ BacktabFocusReason,
+ ActiveWindowFocusReason,
+ PopupFocusReason,
+ ShortcutFocusReason,
+ MenuBarFocusReason,
+ OtherFocusReason,
+ NoFocusReason
+ };
+
+ enum ContextMenuPolicy {
+ NoContextMenu,
+ DefaultContextMenu,
+ ActionsContextMenu,
+ CustomContextMenu,
+ PreventContextMenu
+ };
+
+ enum InputMethodQuery {
+ ImMicroFocus,
+ ImFont,
+ ImCursorPosition,
+ ImSurroundingText,
+ ImCurrentSelection
+ };
+
+ enum ToolButtonStyle {
+ ToolButtonIconOnly,
+ ToolButtonTextOnly,
+ ToolButtonTextBesideIcon,
+ ToolButtonTextUnderIcon
+ };
+
+ enum LayoutDirection {
+ LeftToRight,
+ RightToLeft
+ };
+
+ enum DropAction {
+ CopyAction = 0x1,
+ MoveAction = 0x2,
+ LinkAction = 0x4,
+ ActionMask = 0xff,
+ TargetMoveAction = 0x8002,
+ IgnoreAction = 0x0
+ };
+ typedef QFlags<DropAction> DropActions;
+
+ enum CheckState {
+ Unchecked,
+ PartiallyChecked,
+ Checked
+ };
+
+ enum ItemDataRole {
+ DisplayRole = 0,
+ DecorationRole = 1,
+ EditRole = 2,
+ ToolTipRole = 3,
+ StatusTipRole = 4,
+ WhatsThisRole = 5,
+
+ FontRole = 6,
+ TextAlignmentRole = 7,
+ BackgroundColorRole = 8,
+ BackgroundRole = 8,
+ TextColorRole = 9,
+ ForegroundRole = 9,
+ CheckStateRole = 10,
+
+ AccessibleTextRole = 11,
+ AccessibleDescriptionRole = 12,
+
+ SizeHintRole = 13,
+
+ DisplayPropertyRole = 27,
+ DecorationPropertyRole = 28,
+ ToolTipPropertyRole = 29,
+ StatusTipPropertyRole = 30,
+ WhatsThisPropertyRole = 31,
+
+ UserRole = 32
+ };
+
+ enum ItemFlag {
+ NoItemFlags = 0,
+ ItemIsSelectable = 1,
+ ItemIsEditable = 2,
+ ItemIsDragEnabled = 4,
+ ItemIsDropEnabled = 8,
+ ItemIsUserCheckable = 16,
+ ItemIsEnabled = 32,
+ ItemIsTristate = 64
+ };
+ typedef QFlags<ItemFlag> ItemFlags;
+
+ enum MatchFlag {
+ MatchExactly = 0,
+ MatchContains = 1,
+ MatchStartsWith = 2,
+ MatchEndsWith = 3,
+ MatchRegExp = 4,
+ MatchWildcard = 5,
+ MatchFixedString = 8,
+ MatchCaseSensitive = 16,
+ MatchWrap = 32,
+ MatchRecursive = 64
+ };
+ typedef QFlags<MatchFlag> MatchFlags;
+# 1487 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+ typedef void * HANDLE;
+
+ typedef WindowFlags WFlags;
+
+ enum WindowModality {
+ NonModal,
+ WindowModal,
+ ApplicationModal
+ };
+
+ enum TextInteractionFlag {
+ NoTextInteraction = 0,
+ TextSelectableByMouse = 1,
+ TextSelectableByKeyboard = 2,
+ LinksAccessibleByMouse = 4,
+ LinksAccessibleByKeyboard = 8,
+ TextEditable = 16,
+
+ TextEditorInteraction = TextSelectableByMouse | TextSelectableByKeyboard | TextEditable,
+ TextBrowserInteraction = TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard
+ };
+ typedef QFlags<TextInteractionFlag> TextInteractionFlags;
+
+ enum EventPriority {
+ HighEventPriority = 1,
+ NormalEventPriority = 0,
+ LowEventPriority = -1
+ };
+
+ enum SizeHint {
+ MinimumSize,
+ PreferredSize,
+ MaximumSize,
+ MinimumDescent,
+ NSizeHints
+ };
+
+ enum WindowFrameSection {
+ NoSection,
+ LeftSection,
+ TopLeftSection,
+ TopSection,
+ TopRightSection,
+ RightSection,
+ BottomRightSection,
+ BottomSection,
+ BottomLeftSection,
+ TitleBarArea
+ };
+}
+
+
+
+
+
+inline QFlags<Qt::MouseButtons::enum_type> operator|(Qt::MouseButtons::enum_type f1, Qt::MouseButtons::enum_type f2) { return QFlags<Qt::MouseButtons::enum_type>(f1) | f2; } inline QFlags<Qt::MouseButtons::enum_type> operator|(Qt::MouseButtons::enum_type f1, QFlags<Qt::MouseButtons::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::MouseButtons::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::Orientations::enum_type> operator|(Qt::Orientations::enum_type f1, Qt::Orientations::enum_type f2) { return QFlags<Qt::Orientations::enum_type>(f1) | f2; } inline QFlags<Qt::Orientations::enum_type> operator|(Qt::Orientations::enum_type f1, QFlags<Qt::Orientations::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::Orientations::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::KeyboardModifiers::enum_type> operator|(Qt::KeyboardModifiers::enum_type f1, Qt::KeyboardModifiers::enum_type f2) { return QFlags<Qt::KeyboardModifiers::enum_type>(f1) | f2; } inline QFlags<Qt::KeyboardModifiers::enum_type> operator|(Qt::KeyboardModifiers::enum_type f1, QFlags<Qt::KeyboardModifiers::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::KeyboardModifiers::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::WindowFlags::enum_type> operator|(Qt::WindowFlags::enum_type f1, Qt::WindowFlags::enum_type f2) { return QFlags<Qt::WindowFlags::enum_type>(f1) | f2; } inline QFlags<Qt::WindowFlags::enum_type> operator|(Qt::WindowFlags::enum_type f1, QFlags<Qt::WindowFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::WindowFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::Alignment::enum_type> operator|(Qt::Alignment::enum_type f1, Qt::Alignment::enum_type f2) { return QFlags<Qt::Alignment::enum_type>(f1) | f2; } inline QFlags<Qt::Alignment::enum_type> operator|(Qt::Alignment::enum_type f1, QFlags<Qt::Alignment::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::Alignment::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::ImageConversionFlags::enum_type> operator|(Qt::ImageConversionFlags::enum_type f1, Qt::ImageConversionFlags::enum_type f2) { return QFlags<Qt::ImageConversionFlags::enum_type>(f1) | f2; } inline QFlags<Qt::ImageConversionFlags::enum_type> operator|(Qt::ImageConversionFlags::enum_type f1, QFlags<Qt::ImageConversionFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::ImageConversionFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::DockWidgetAreas::enum_type> operator|(Qt::DockWidgetAreas::enum_type f1, Qt::DockWidgetAreas::enum_type f2) { return QFlags<Qt::DockWidgetAreas::enum_type>(f1) | f2; } inline QFlags<Qt::DockWidgetAreas::enum_type> operator|(Qt::DockWidgetAreas::enum_type f1, QFlags<Qt::DockWidgetAreas::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::DockWidgetAreas::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::ToolBarAreas::enum_type> operator|(Qt::ToolBarAreas::enum_type f1, Qt::ToolBarAreas::enum_type f2) { return QFlags<Qt::ToolBarAreas::enum_type>(f1) | f2; } inline QFlags<Qt::ToolBarAreas::enum_type> operator|(Qt::ToolBarAreas::enum_type f1, QFlags<Qt::ToolBarAreas::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::ToolBarAreas::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::WindowStates::enum_type> operator|(Qt::WindowStates::enum_type f1, Qt::WindowStates::enum_type f2) { return QFlags<Qt::WindowStates::enum_type>(f1) | f2; } inline QFlags<Qt::WindowStates::enum_type> operator|(Qt::WindowStates::enum_type f1, QFlags<Qt::WindowStates::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::WindowStates::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::DropActions::enum_type> operator|(Qt::DropActions::enum_type f1, Qt::DropActions::enum_type f2) { return QFlags<Qt::DropActions::enum_type>(f1) | f2; } inline QFlags<Qt::DropActions::enum_type> operator|(Qt::DropActions::enum_type f1, QFlags<Qt::DropActions::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::DropActions::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::ItemFlags::enum_type> operator|(Qt::ItemFlags::enum_type f1, Qt::ItemFlags::enum_type f2) { return QFlags<Qt::ItemFlags::enum_type>(f1) | f2; } inline QFlags<Qt::ItemFlags::enum_type> operator|(Qt::ItemFlags::enum_type f1, QFlags<Qt::ItemFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::ItemFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::MatchFlags::enum_type> operator|(Qt::MatchFlags::enum_type f1, Qt::MatchFlags::enum_type f2) { return QFlags<Qt::MatchFlags::enum_type>(f1) | f2; } inline QFlags<Qt::MatchFlags::enum_type> operator|(Qt::MatchFlags::enum_type f1, QFlags<Qt::MatchFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::MatchFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::TextInteractionFlags::enum_type> operator|(Qt::TextInteractionFlags::enum_type f1, Qt::TextInteractionFlags::enum_type f2) { return QFlags<Qt::TextInteractionFlags::enum_type>(f1) | f2; } inline QFlags<Qt::TextInteractionFlags::enum_type> operator|(Qt::TextInteractionFlags::enum_type f1, QFlags<Qt::TextInteractionFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::TextInteractionFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+
+typedef bool (*qInternalCallback)(void **);
+
+class __attribute__((visibility("default"))) QInternal {
+public:
+ enum PaintDeviceFlags {
+ UnknownDevice = 0x00,
+ Widget = 0x01,
+ Pixmap = 0x02,
+ Image = 0x03,
+ Printer = 0x04,
+ Picture = 0x05,
+ Pbuffer = 0x06,
+ FramebufferObject = 0x07,
+ CustomRaster = 0x08,
+ MacQuartz = 0x09
+ };
+ enum RelayoutType {
+ RelayoutNormal,
+ RelayoutDragging,
+ RelayoutDropped
+ };
+
+
+ enum Callback {
+ ConnectCallback,
+ DisconnectCallback,
+ AdoptCurrentThread,
+ EventNotifyCallback,
+ LastCallback
+ };
+
+ enum InternalFunction {
+ CreateThreadForAdoption,
+ RefAdoptedThread,
+ DerefAdoptedThread,
+ SetCurrentThreadToMainThread,
+ SetQObjectSender,
+ GetQObjectSender,
+ ResetQObjectSender,
+ LastInternalFunction
+ };
+
+ enum DockPosition {
+ LeftDock,
+ RightDock,
+ TopDock,
+ BottomDock,
+ DockCount
+ };
+
+ static bool registerCallback(Callback, qInternalCallback);
+ static bool unregisterCallback(Callback, qInternalCallback);
+
+ static bool activateCallbacks(Callback, void **);
+ static bool callFunction(InternalFunction func, void **);
+};
+# 1621 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnamespace.h"
+
+
+
+# 1 "../../include/QtCore/qnamespace.h" 2
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobjectdefs.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QByteArray;
+
+class QString;
+
+
+#define Q_MOC_OUTPUT_REVISION 61
+# 68 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobjectdefs.h"
+#define slots
+#define signals protected
+
+#define Q_SLOTS
+#define Q_SIGNALS protected
+#define Q_PRIVATE_SLOT(d,signature)
+#define Q_EMIT
+
+#define emit
+
+#define Q_CLASSINFO(name,value)
+#define Q_INTERFACES(x)
+#define Q_PROPERTY(text)
+#define Q_OVERRIDE(text)
+#define Q_ENUMS(x)
+#define Q_FLAGS(x)
+
+
+
+#define Q_SCRIPTABLE
+#define Q_INVOKABLE
+#define Q_SIGNAL
+#define Q_SLOT
+
+
+
+
+
+#define QT_TR_FUNCTIONS static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); }
+# 137 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobjectdefs.h"
+#define Q_OBJECT_CHECK template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; }
+
+
+
+template <typename T>
+inline int qYouForgotTheQ_OBJECT_Macro(T, T) { return 0; }
+
+template <typename T1, typename T2>
+inline void qYouForgotTheQ_OBJECT_Macro(T1, T2) {}
+
+
+
+#define Q_OBJECT public: Q_OBJECT_CHECK static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); QT_TR_FUNCTIONS virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+# 159 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobjectdefs.h"
+#define Q_OBJECT_FAKE Q_OBJECT
+
+#define Q_GADGET public: static const QMetaObject staticMetaObject; private:
+# 202 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobjectdefs.h"
+__attribute__((visibility("default"))) const char *qFlagLocation(const char *method);
+
+#define QTOSTRING_HELPER(s) #s
+#define QTOSTRING(s) QTOSTRING_HELPER(s)
+
+
+
+
+
+
+#define METHOD(a) "0"#a
+#define SLOT(a) "1"#a
+#define SIGNAL(a) "2"#a
+# 223 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobjectdefs.h"
+#define QMETHOD_CODE 0
+#define QSLOT_CODE 1
+#define QSIGNAL_CODE 2
+
+#define Q_ARG(type,data) QArgument<type >(#type, data)
+#define Q_RETURN_ARG(type,data) QReturnArgument<type >(#type, data)
+
+class QObject;
+class QMetaMethod;
+class QMetaEnum;
+class QMetaProperty;
+class QMetaClassInfo;
+
+
+class __attribute__((visibility("default"))) QGenericArgument
+{
+public:
+ inline QGenericArgument(const char *aName = 0, const void *aData = 0)
+ : _data(aData), _name(aName) {}
+ inline void *data() const { return const_cast<void *>(_data); }
+ inline const char *name() const { return _name; }
+
+private:
+ const void *_data;
+ const char *_name;
+};
+
+class __attribute__((visibility("default"))) QGenericReturnArgument: public QGenericArgument
+{
+public:
+ inline QGenericReturnArgument(const char *aName = 0, void *aData = 0)
+ : QGenericArgument(aName, aData)
+ {}
+};
+
+template <class T>
+class QArgument: public QGenericArgument
+{
+public:
+ inline QArgument(const char *aName, const T &aData)
+ : QGenericArgument(aName, static_cast<const void *>(&aData))
+ {}
+};
+
+
+template <typename T>
+class QReturnArgument: public QGenericReturnArgument
+{
+public:
+ inline QReturnArgument(const char *aName, T &aData)
+ : QGenericReturnArgument(aName, static_cast<void *>(&aData))
+ {}
+};
+
+struct __attribute__((visibility("default"))) QMetaObject
+{
+ const char *className() const;
+ const QMetaObject *superClass() const;
+
+ QObject *cast(QObject *obj) const;
+
+
+
+ QString tr(const char *s, const char *c) const;
+ QString trUtf8(const char *s, const char *c) const;
+ QString tr(const char *s, const char *c, int n) const;
+ QString trUtf8(const char *s, const char *c, int n) const;
+
+
+ int methodOffset() const;
+ int enumeratorOffset() const;
+ int propertyOffset() const;
+ int classInfoOffset() const;
+
+ int constructorCount() const;
+ int methodCount() const;
+ int enumeratorCount() const;
+ int propertyCount() const;
+ int classInfoCount() const;
+
+ int indexOfConstructor(const char *constructor) const;
+ int indexOfMethod(const char *method) const;
+ int indexOfSignal(const char *signal) const;
+ int indexOfSlot(const char *slot) const;
+ int indexOfEnumerator(const char *name) const;
+ int indexOfProperty(const char *name) const;
+ int indexOfClassInfo(const char *name) const;
+
+ QMetaMethod constructor(int index) const;
+ QMetaMethod method(int index) const;
+ QMetaEnum enumerator(int index) const;
+ QMetaProperty property(int index) const;
+ QMetaClassInfo classInfo(int index) const;
+ QMetaProperty userProperty() const;
+
+ static bool checkConnectArgs(const char *signal, const char *method);
+ static QByteArray normalizedSignature(const char *method);
+ static QByteArray normalizedType(const char *type);
+
+
+ static bool connect(const QObject *sender, int signal_index,
+ const QObject *receiver, int method_index,
+ int type = 0, int *types = 0);
+
+ static bool disconnect(const QObject *sender, int signal_index,
+ const QObject *receiver, int method_index);
+
+ static void connectSlotsByName(QObject *o);
+
+
+ static void activate(QObject *sender, int signal_index, void **argv);
+ static void activate(QObject *sender, int from_signal_index, int to_signal_index, void **argv);
+ static void activate(QObject *sender, const QMetaObject *, int local_signal_index, void **argv);
+ static void activate(QObject *sender, const QMetaObject *, int from_local_signal_index, int to_local_signal_index, void **argv);
+
+ static void addGuard(QObject **ptr);
+ static void removeGuard(QObject **ptr);
+ static void changeGuard(QObject **ptr, QObject *o);
+
+ static bool invokeMethod(QObject *obj, const char *member,
+ Qt::ConnectionType,
+ QGenericReturnArgument ret,
+ QGenericArgument val0 = QGenericArgument(0),
+ QGenericArgument val1 = QGenericArgument(),
+ QGenericArgument val2 = QGenericArgument(),
+ QGenericArgument val3 = QGenericArgument(),
+ QGenericArgument val4 = QGenericArgument(),
+ QGenericArgument val5 = QGenericArgument(),
+ QGenericArgument val6 = QGenericArgument(),
+ QGenericArgument val7 = QGenericArgument(),
+ QGenericArgument val8 = QGenericArgument(),
+ QGenericArgument val9 = QGenericArgument());
+
+ static inline bool invokeMethod(QObject *obj, const char *member,
+ QGenericReturnArgument ret,
+ QGenericArgument val0 = QGenericArgument(0),
+ QGenericArgument val1 = QGenericArgument(),
+ QGenericArgument val2 = QGenericArgument(),
+ QGenericArgument val3 = QGenericArgument(),
+ QGenericArgument val4 = QGenericArgument(),
+ QGenericArgument val5 = QGenericArgument(),
+ QGenericArgument val6 = QGenericArgument(),
+ QGenericArgument val7 = QGenericArgument(),
+ QGenericArgument val8 = QGenericArgument(),
+ QGenericArgument val9 = QGenericArgument())
+ {
+ return invokeMethod(obj, member, Qt::AutoConnection, ret, val0, val1, val2, val3,
+ val4, val5, val6, val7, val8, val9);
+ }
+
+ static inline bool invokeMethod(QObject *obj, const char *member,
+ Qt::ConnectionType type,
+ QGenericArgument val0 = QGenericArgument(0),
+ QGenericArgument val1 = QGenericArgument(),
+ QGenericArgument val2 = QGenericArgument(),
+ QGenericArgument val3 = QGenericArgument(),
+ QGenericArgument val4 = QGenericArgument(),
+ QGenericArgument val5 = QGenericArgument(),
+ QGenericArgument val6 = QGenericArgument(),
+ QGenericArgument val7 = QGenericArgument(),
+ QGenericArgument val8 = QGenericArgument(),
+ QGenericArgument val9 = QGenericArgument())
+ {
+ return invokeMethod(obj, member, type, QGenericReturnArgument(), val0, val1, val2,
+ val3, val4, val5, val6, val7, val8, val9);
+ }
+
+ static inline bool invokeMethod(QObject *obj, const char *member,
+ QGenericArgument val0 = QGenericArgument(0),
+ QGenericArgument val1 = QGenericArgument(),
+ QGenericArgument val2 = QGenericArgument(),
+ QGenericArgument val3 = QGenericArgument(),
+ QGenericArgument val4 = QGenericArgument(),
+ QGenericArgument val5 = QGenericArgument(),
+ QGenericArgument val6 = QGenericArgument(),
+ QGenericArgument val7 = QGenericArgument(),
+ QGenericArgument val8 = QGenericArgument(),
+ QGenericArgument val9 = QGenericArgument())
+ {
+ return invokeMethod(obj, member, Qt::AutoConnection, QGenericReturnArgument(), val0,
+ val1, val2, val3, val4, val5, val6, val7, val8, val9);
+ }
+
+ QObject *newInstance(QGenericArgument val0 = QGenericArgument(0),
+ QGenericArgument val1 = QGenericArgument(),
+ QGenericArgument val2 = QGenericArgument(),
+ QGenericArgument val3 = QGenericArgument(),
+ QGenericArgument val4 = QGenericArgument(),
+ QGenericArgument val5 = QGenericArgument(),
+ QGenericArgument val6 = QGenericArgument(),
+ QGenericArgument val7 = QGenericArgument(),
+ QGenericArgument val8 = QGenericArgument(),
+ QGenericArgument val9 = QGenericArgument()) const;
+
+ enum Call {
+ InvokeMetaMethod,
+ ReadProperty,
+ WriteProperty,
+ ResetProperty,
+ QueryPropertyDesignable,
+ QueryPropertyScriptable,
+ QueryPropertyStored,
+ QueryPropertyEditable,
+ QueryPropertyUser,
+ CreateInstance
+ };
+
+ int static_metacall(Call, int, void **) const;
+
+
+
+
+
+ struct {
+ const QMetaObject *superdata;
+ const char *stringdata;
+ const uint *data;
+ const void *extradata;
+ } d;
+};
+
+struct QMetaObjectExtraData
+{
+ const QMetaObject **objects;
+ int (*static_metacall)(QMetaObject::Call, int, void **);
+};
+
+inline const char *QMetaObject::className() const
+{ return d.stringdata; }
+
+inline const QMetaObject *QMetaObject::superClass() const
+{ return d.superdata; }
+
+
+
+
+
+
+
+
+
+# 1 "../../include/QtCore/qobjectdefs.h" 2
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h"
+#define QSTRING_H
+
+# 1 "../../include/QtCore/qchar.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h" 2
+# 1 "../../include/QtCore/qbytearray.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qbytearray.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qbytearray.h"
+#define QBYTEARRAY_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qbytearray.h" 2
+# 1 "../../include/QtCore/qatomic.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qbytearray.h" 2
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 1 3 4
+# 24 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+#define _STRING_H 1
+
+
+
+extern "C" {
+
+
+#define __need_size_t
+#define __need_NULL
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 163 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 236 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 398 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 409 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 34 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 2 3 4
+
+
+
+
+extern void *memcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void *memmove (void *__dest, __const void *__src, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
+ int __c, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void *memchr (__const void *__s, int __c, size_t __n)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern void *rawmemchr (__const void *__s, int __c)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern void *memrchr (__const void *__s, int __c, size_t __n)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
+ size_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strcmp (__const char *__s1, __const char *__s2)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strcoll (__const char *__s1, __const char *__s2)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern size_t strxfrm (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ throw () __attribute__ ((__nonnull__ (2)));
+
+# 130 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+extern char *strdup (__const char *__s)
+ throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern char *strndup (__const char *__string, size_t __n)
+ throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+#define strdupa(s) (__extension__ ({ __const char *__old = (s); size_t __len = strlen (__old) + 1; char *__new = (char *) __builtin_alloca (__len); (char *) memcpy (__new, __old, __len); }))
+# 154 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+#define strndupa(s,n) (__extension__ ({ __const char *__old = (s); size_t __len = strnlen (__old, (n)); char *__new = (char *) __builtin_alloca (__len + 1); __new[__len] = '\0'; (char *) memcpy (__new, __old, __len); }))
+# 165 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+
+
+extern char *strchr (__const char *__s, int __c)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+extern char *strrchr (__const char *__s, int __c)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern char *strchrnul (__const char *__s, int __c)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern size_t strcspn (__const char *__s, __const char *__reject)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern size_t strspn (__const char *__s, __const char *__accept)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strpbrk (__const char *__s, __const char *__accept)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern char *strstr (__const char *__haystack, __const char *__needle)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
+ throw () __attribute__ ((__nonnull__ (2)));
+
+# 212 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ throw () __attribute__ ((__nonnull__ (2, 3)));
+
+
+
+
+extern char *strcasestr (__const char *__haystack, __const char *__needle)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern void *memmem (__const void *__haystack, size_t __haystacklen,
+ __const void *__needle, size_t __needlelen)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
+# 238 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+extern void *mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+extern size_t strlen (__const char *__s)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern size_t strnlen (__const char *__string, size_t __maxlen)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern char *strerror (int __errnum) throw ();
+
+# 285 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen)
+ throw () __attribute__ ((__nonnull__ (2)));
+
+extern char * strerror_r (int __errnum, char *__buf, size_t __buflen) throw () __asm__ ("_" "__glibc_strerror_r") __attribute__ ((__nonnull__ (2)));
+# 306 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+extern void bcopy (__const void *__src, void *__dest, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern char *index (__const char *__s, int __c)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern char *rindex (__const char *__s, int __c)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+# 339 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+extern int ffs (int __i) throw () __attribute__ ((__const__));
+# 352 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+extern int strcasecmp (__const char *__s1, __const char *__s2)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+# 375 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+extern char *strsep (char **__restrict __stringp,
+ __const char *__restrict __delim)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+# 388 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+extern char *strsignal (int __sig) throw ();
+
+
+
+
+
+
+extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+# 405 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+extern char *stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+# 422 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/string.h" 3 4
+extern char *basename (__const char *__filename) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern size_t strlcat(char *__restrict dst, const char *__restrict src,
+ size_t n) throw () __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strlcpy(char *__restrict dst, const char *__restrict src,
+ size_t n) throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+}
+# 49 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qbytearray.h" 2
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stdarg.h" 1 3 4
+# 34 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stdarg.h" 3 4
+#define _STDARG_H
+#define _ANSI_STDARG_H_
+
+#undef __need___va_list
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stdarg.h" 3 4
+#define va_start(v,l) __builtin_va_start(v,l)
+#define va_end(v) __builtin_va_end(v)
+#define va_arg(v,l) __builtin_va_arg(v,l)
+
+#define va_copy(d,s) __builtin_va_copy(d,s)
+
+#define __va_copy(d,s) __builtin_va_copy(d,s)
+# 105 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stdarg.h" 3 4
+typedef __gnuc_va_list va_list;
+
+
+
+
+
+#define _VA_LIST_
+
+
+#define _VA_LIST
+
+
+#define _VA_LIST_DEFINED
+
+
+#define _VA_LIST_T_H
+
+
+#define __va_list__
+# 50 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qbytearray.h" 2
+
+
+
+
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+
+
+
+
+__attribute__((visibility("default"))) char *qstrdup(const char *);
+
+inline uint qstrlen(const char *str)
+{ return str ? uint(strlen(str)) : 0; }
+
+inline uint qstrnlen(const char *str, uint maxlen)
+{
+ uint length = 0;
+ if (str) {
+ while (length < maxlen && *str++)
+ length++;
+ }
+ return length;
+}
+
+__attribute__((visibility("default"))) char *qstrcpy(char *dst, const char *src);
+__attribute__((visibility("default"))) char *qstrncpy(char *dst, const char *src, uint len);
+
+__attribute__((visibility("default"))) int qstrcmp(const char *str1, const char *str2);
+__attribute__((visibility("default"))) int qstrcmp(const QByteArray &str1, const QByteArray &str2);
+__attribute__((visibility("default"))) int qstrcmp(const QByteArray &str1, const char *str2);
+static inline int qstrcmp(const char *str1, const QByteArray &str2)
+{ return -qstrcmp(str2, str1); }
+
+inline int qstrncmp(const char *str1, const char *str2, uint len)
+{
+ return (str1 && str2) ? strncmp(str1, str2, len)
+ : (str1 ? 1 : (str2 ? -1 : 0));
+}
+__attribute__((visibility("default"))) int qstricmp(const char *, const char *);
+__attribute__((visibility("default"))) int qstrnicmp(const char *, const char *, uint len);
+
+
+__attribute__((visibility("default"))) int qvsnprintf(char *str, size_t n, const char *fmt, va_list ap);
+__attribute__((visibility("default"))) int qsnprintf(char *str, size_t n, const char *fmt, ...);
+# 116 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qbytearray.h"
+__attribute__((visibility("default"))) quint16 qChecksum(const char *s, uint len);
+
+class QByteRef;
+class QString;
+class QDataStream;
+template <typename T> class QList;
+
+class __attribute__((visibility("default"))) QByteArray
+{
+public:
+ inline QByteArray();
+ QByteArray(const char *);
+ QByteArray(const char *, int size);
+ QByteArray(int size, char c);
+ inline QByteArray(const QByteArray &);
+ inline ~QByteArray();
+
+ QByteArray &operator=(const QByteArray &);
+ QByteArray &operator=(const char *str);
+
+ inline int size() const;
+ bool isEmpty() const;
+ void resize(int size);
+
+ QByteArray &fill(char c, int size = -1);
+
+ int capacity() const;
+ void reserve(int size);
+ void squeeze();
+
+
+ operator const char *() const;
+ operator const void *() const;
+
+ char *data();
+ const char *data() const;
+ inline const char *constData() const;
+ inline void detach();
+ bool isDetached() const;
+ void clear();
+
+
+
+
+
+
+ char at(int i) const;
+ char operator[](int i) const;
+ char operator[](uint i) const;
+
+ QByteRef operator[](int i);
+ QByteRef operator[](uint i);
+
+ int indexOf(char c, int from = 0) const;
+ int indexOf(const char *c, int from = 0) const;
+ int indexOf(const QByteArray &a, int from = 0) const;
+ int lastIndexOf(char c, int from = -1) const;
+ int lastIndexOf(const char *c, int from = -1) const;
+ int lastIndexOf(const QByteArray &a, int from = -1) const;
+
+ QBool contains(char c) const;
+ QBool contains(const char *a) const;
+ QBool contains(const QByteArray &a) const;
+ int count(char c) const;
+ int count(const char *a) const;
+ int count(const QByteArray &a) const;
+
+ QByteArray left(int len) const;
+ QByteArray right(int len) const;
+ QByteArray mid(int index, int len = -1) const;
+
+ bool startsWith(const QByteArray &a) const;
+ bool startsWith(char c) const;
+ bool startsWith(const char *c) const;
+
+ bool endsWith(const QByteArray &a) const;
+ bool endsWith(char c) const;
+ bool endsWith(const char *c) const;
+
+ void truncate(int pos);
+ void chop(int n);
+
+ QByteArray toLower() const;
+ QByteArray toUpper() const;
+
+ QByteArray trimmed() const;
+ QByteArray simplified() const;
+ QByteArray leftJustified(int width, char fill = ' ', bool truncate = false) const;
+ QByteArray rightJustified(int width, char fill = ' ', bool truncate = false) const;
+# 213 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qbytearray.h"
+ QByteArray &prepend(char c);
+ QByteArray &prepend(const char *s);
+ QByteArray &prepend(const QByteArray &a);
+ QByteArray &append(char c);
+ QByteArray &append(const char *s);
+ QByteArray &append(const char *s, int len);
+ QByteArray &append(const QByteArray &a);
+ QByteArray &insert(int i, char c);
+ QByteArray &insert(int i, const char *s);
+ QByteArray &insert(int i, const QByteArray &a);
+ QByteArray &remove(int index, int len);
+ QByteArray &replace(int index, int len, const char *s);
+ QByteArray &replace(int index, int len, const QByteArray &s);
+ QByteArray &replace(char before, const char *after);
+ QByteArray &replace(char before, const QByteArray &after);
+ QByteArray &replace(const char *before, const char *after);
+ QByteArray &replace(const char *before, int bsize, const char *after, int asize);
+ QByteArray &replace(const QByteArray &before, const QByteArray &after);
+ QByteArray &replace(const QByteArray &before, const char *after);
+ QByteArray &replace(const char *before, const QByteArray &after);
+ QByteArray &replace(char before, char after);
+ QByteArray &operator+=(char c);
+ QByteArray &operator+=(const char *s);
+ QByteArray &operator+=(const QByteArray &a);
+
+ QList<QByteArray> split(char sep) const;
+
+ QByteArray repeated(int times) const;
+# 254 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qbytearray.h"
+ inline __attribute__ ((__deprecated__)) bool operator==(const QString &s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator!=(const QString &s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator<(const QString &s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator>(const QString &s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator<=(const QString &s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator>=(const QString &s2) const;
+
+
+ short toShort(bool *ok = 0, int base = 10) const;
+ ushort toUShort(bool *ok = 0, int base = 10) const;
+ int toInt(bool *ok = 0, int base = 10) const;
+ uint toUInt(bool *ok = 0, int base = 10) const;
+ long toLong(bool *ok = 0, int base = 10) const;
+ ulong toULong(bool *ok = 0, int base = 10) const;
+ qlonglong toLongLong(bool *ok = 0, int base = 10) const;
+ qulonglong toULongLong(bool *ok = 0, int base = 10) const;
+ float toFloat(bool *ok = 0) const;
+ double toDouble(bool *ok = 0) const;
+ QByteArray toBase64() const;
+ QByteArray toHex() const;
+ QByteArray toPercentEncoding(const QByteArray &exclude = QByteArray(),
+ const QByteArray &include = QByteArray(),
+ char percent = '%') const;
+
+ QByteArray &setNum(short, int base = 10);
+ QByteArray &setNum(ushort, int base = 10);
+ QByteArray &setNum(int, int base = 10);
+ QByteArray &setNum(uint, int base = 10);
+ QByteArray &setNum(qlonglong, int base = 10);
+ QByteArray &setNum(qulonglong, int base = 10);
+ QByteArray &setNum(float, char f = 'g', int prec = 6);
+ QByteArray &setNum(double, char f = 'g', int prec = 6);
+
+ static QByteArray number(int, int base = 10);
+ static QByteArray number(uint, int base = 10);
+ static QByteArray number(qlonglong, int base = 10);
+ static QByteArray number(qulonglong, int base = 10);
+ static QByteArray number(double, char f = 'g', int prec = 6);
+ static QByteArray fromRawData(const char *, int size);
+ static QByteArray fromBase64(const QByteArray &base64);
+ static QByteArray fromHex(const QByteArray &hexEncoded);
+ static QByteArray fromPercentEncoding(const QByteArray &pctEncoded, char percent = '%');
+
+
+ typedef char *iterator;
+ typedef const char *const_iterator;
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ iterator begin();
+ const_iterator begin() const;
+ const_iterator constBegin() const;
+ iterator end();
+ const_iterator end() const;
+ const_iterator constEnd() const;
+
+
+ typedef const char & const_reference;
+ typedef char & reference;
+ void push_back(char c);
+ void push_back(const char *c);
+ void push_back(const QByteArray &a);
+ void push_front(char c);
+ void push_front(const char *c);
+ void push_front(const QByteArray &a);
+
+ inline int count() const { return d->size; }
+ int length() const { return d->size; }
+ bool isNull() const;
+# 348 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qbytearray.h"
+private:
+ operator QNoImplicitBoolCast() const;
+ struct Data {
+ QBasicAtomicInt ref;
+ int alloc, size;
+
+
+
+ char *data;
+ char array[1];
+ };
+ static Data shared_null;
+ static Data shared_empty;
+ Data *d;
+ QByteArray(Data *dd, int , int ) : d(dd) {}
+ void realloc(int alloc);
+ void expand(int i);
+ QByteArray nulTerminated() const;
+
+ friend class QByteRef;
+ friend class QString;
+public:
+ typedef Data * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+
+inline QByteArray::QByteArray(): d(&shared_null) { d->ref.ref(); }
+inline QByteArray::~QByteArray() { if (!d->ref.deref()) qFree(d); }
+inline int QByteArray::size() const
+{ return d->size; }
+# 387 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qbytearray.h"
+inline char QByteArray::at(int i) const
+{ qt_noop(); return d->data[i]; }
+inline char QByteArray::operator[](int i) const
+{ qt_noop(); return d->data[i]; }
+inline char QByteArray::operator[](uint i) const
+{ qt_noop(); return d->data[i]; }
+
+
+inline bool QByteArray::isEmpty() const
+{ return d->size == 0; }
+
+inline QByteArray::operator const char *() const
+{ return d->data; }
+inline QByteArray::operator const void *() const
+{ return d->data; }
+
+inline char *QByteArray::data()
+{ detach(); return d->data; }
+inline const char *QByteArray::data() const
+{ return d->data; }
+inline const char *QByteArray::constData() const
+{ return d->data; }
+inline void QByteArray::detach()
+{ if (d->ref != 1 || d->data != d->array) realloc(d->size); }
+inline bool QByteArray::isDetached() const
+{ return d->ref == 1; }
+inline QByteArray::QByteArray(const QByteArray &a) : d(a.d)
+{ d->ref.ref(); }
+
+
+
+
+
+inline int QByteArray::capacity() const
+{ return d->alloc; }
+
+inline void QByteArray::reserve(int asize)
+{ if (d->ref != 1 || asize > d->alloc) realloc(asize); }
+
+inline void QByteArray::squeeze()
+{ if (d->size < d->alloc) realloc(d->size); }
+
+class __attribute__((visibility("default"))) QByteRef {
+ QByteArray &a;
+ int i;
+ inline QByteRef(QByteArray &array, int idx)
+ : a(array),i(idx) {}
+ friend class QByteArray;
+public:
+
+
+
+
+ inline operator char() const
+ { return i < a.d->size ? a.d->data[i] : 0; }
+
+ inline QByteRef &operator=(char c)
+ { if (i >= a.d->size) a.expand(i); else a.detach();
+ a.d->data[i] = c; return *this; }
+ inline QByteRef &operator=(const QByteRef &c)
+ { if (i >= a.d->size) a.expand(i); else a.detach();
+ a.d->data[i] = c.a.d->data[c.i]; return *this; }
+ inline bool operator==(char c) const
+ { return a.d->data[i] == c; }
+ inline bool operator!=(char c) const
+ { return a.d->data[i] != c; }
+ inline bool operator>(char c) const
+ { return a.d->data[i] > c; }
+ inline bool operator>=(char c) const
+ { return a.d->data[i] >= c; }
+ inline bool operator<(char c) const
+ { return a.d->data[i] < c; }
+ inline bool operator<=(char c) const
+ { return a.d->data[i] <= c; }
+};
+
+inline QByteRef QByteArray::operator[](int i)
+{ qt_noop(); return QByteRef(*this, i); }
+inline QByteRef QByteArray::operator[](uint i)
+{ return QByteRef(*this, i); }
+inline QByteArray::iterator QByteArray::begin()
+{ detach(); return d->data; }
+inline QByteArray::const_iterator QByteArray::begin() const
+{ return d->data; }
+inline QByteArray::const_iterator QByteArray::constBegin() const
+{ return d->data; }
+inline QByteArray::iterator QByteArray::end()
+{ detach(); return d->data + d->size; }
+inline QByteArray::const_iterator QByteArray::end() const
+{ return d->data + d->size; }
+inline QByteArray::const_iterator QByteArray::constEnd() const
+{ return d->data + d->size; }
+inline QByteArray &QByteArray::operator+=(char c)
+{ return append(c); }
+inline QByteArray &QByteArray::operator+=(const char *s)
+{ return append(s); }
+inline QByteArray &QByteArray::operator+=(const QByteArray &a)
+{ return append(a); }
+inline void QByteArray::push_back(char c)
+{ append(c); }
+inline void QByteArray::push_back(const char *c)
+{ append(c); }
+inline void QByteArray::push_back(const QByteArray &a)
+{ append(a); }
+inline void QByteArray::push_front(char c)
+{ prepend(c); }
+inline void QByteArray::push_front(const char *c)
+{ prepend(c); }
+inline void QByteArray::push_front(const QByteArray &a)
+{ prepend(a); }
+inline QBool QByteArray::contains(const QByteArray &a) const
+{ return QBool(indexOf(a) != -1); }
+inline QBool QByteArray::contains(char c) const
+{ return QBool(indexOf(c) != -1); }
+inline bool operator==(const QByteArray &a1, const QByteArray &a2)
+{ return (a1.size() == a2.size()) && (memcmp(a1.constData(), a2.constData(), a1.size())==0); }
+inline bool operator==(const QByteArray &a1, const char *a2)
+{ return a2 ? qstrcmp(a1,a2) == 0 : a1.isEmpty(); }
+inline bool operator==(const char *a1, const QByteArray &a2)
+{ return a1 ? qstrcmp(a1,a2) == 0 : a2.isEmpty(); }
+inline bool operator!=(const QByteArray &a1, const QByteArray &a2)
+{ return !(a1==a2); }
+inline bool operator!=(const QByteArray &a1, const char *a2)
+{ return a2 ? qstrcmp(a1,a2) != 0 : !a1.isEmpty(); }
+inline bool operator!=(const char *a1, const QByteArray &a2)
+{ return a1 ? qstrcmp(a1,a2) != 0 : !a2.isEmpty(); }
+inline bool operator<(const QByteArray &a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) < 0; }
+ inline bool operator<(const QByteArray &a1, const char *a2)
+{ return qstrcmp(a1, a2) < 0; }
+inline bool operator<(const char *a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) < 0; }
+inline bool operator<=(const QByteArray &a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) <= 0; }
+inline bool operator<=(const QByteArray &a1, const char *a2)
+{ return qstrcmp(a1, a2) <= 0; }
+inline bool operator<=(const char *a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) <= 0; }
+inline bool operator>(const QByteArray &a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) > 0; }
+inline bool operator>(const QByteArray &a1, const char *a2)
+{ return qstrcmp(a1, a2) > 0; }
+inline bool operator>(const char *a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) > 0; }
+inline bool operator>=(const QByteArray &a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) >= 0; }
+inline bool operator>=(const QByteArray &a1, const char *a2)
+{ return qstrcmp(a1, a2) >= 0; }
+inline bool operator>=(const char *a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) >= 0; }
+inline const QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
+{ return QByteArray(a1) += a2; }
+inline const QByteArray operator+(const QByteArray &a1, const char *a2)
+{ return QByteArray(a1) += a2; }
+inline const QByteArray operator+(const QByteArray &a1, char a2)
+{ return QByteArray(a1) += a2; }
+inline const QByteArray operator+(const char *a1, const QByteArray &a2)
+{ return QByteArray(a1) += a2; }
+inline const QByteArray operator+(char a1, const QByteArray &a2)
+{ return QByteArray(&a1, 1) += a2; }
+inline QBool QByteArray::contains(const char *c) const
+{ return QBool(indexOf(c) != -1); }
+inline QByteArray &QByteArray::replace(char before, const char *c)
+{ return replace(&before, 1, c, qstrlen(c)); }
+inline QByteArray &QByteArray::replace(const QByteArray &before, const char *c)
+{ return replace(before.constData(), before.size(), c, qstrlen(c)); }
+inline QByteArray &QByteArray::replace(const char *before, const char *after)
+{ return replace(before, qstrlen(before), after, qstrlen(after)); }
+
+inline QByteArray &QByteArray::setNum(short n, int base)
+{ return setNum(qlonglong(n), base); }
+inline QByteArray &QByteArray::setNum(ushort n, int base)
+{ return setNum(qulonglong(n), base); }
+inline QByteArray &QByteArray::setNum(int n, int base)
+{ return setNum(qlonglong(n), base); }
+inline QByteArray &QByteArray::setNum(uint n, int base)
+{ return setNum(qulonglong(n), base); }
+inline QByteArray &QByteArray::setNum(float n, char f, int prec)
+{ return setNum(double(n),f,prec); }
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QByteArray &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QByteArray &);
+
+
+
+__attribute__((visibility("default"))) QByteArray qCompress(const uchar* data, int nbytes, int compressionLevel = -1);
+__attribute__((visibility("default"))) QByteArray qUncompress(const uchar* data, int nbytes);
+inline QByteArray qCompress(const QByteArray& data, int compressionLevel = -1)
+{ return qCompress(reinterpret_cast<const uchar *>(data.constData()), data.size(), compressionLevel); }
+inline QByteArray qUncompress(const QByteArray& data)
+{ return qUncompress(reinterpret_cast<const uchar*>(data.constData()), data.size()); }
+
+
+template <> class QTypeInfo<QByteArray> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QByteArray)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QByteArray"; } };
+template <> inline bool qIsDetached<QByteArray>(QByteArray &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QByteArray>(QByteArray &value1, QByteArray &value2) { const QByteArray::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+
+
+
+
+# 1 "../../include/QtCore/qbytearray.h" 2
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h" 2
+# 1 "../../include/QtCore/qatomic.h" 1
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h" 2
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 49 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h" 2
+# 65 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h"
+typedef std::basic_string<wchar_t> QStdWString;
+# 76 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h"
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QCharRef;
+class QRegExp;
+class QStringList;
+class QTextCodec;
+class QLatin1String;
+class QStringRef;
+template <typename T> class QVector;
+
+class __attribute__((visibility("default"))) QString
+{
+public:
+ inline QString();
+ QString(const QChar *unicode, int size);
+ QString(QChar c);
+ QString(int size, QChar c);
+ inline QString(const QLatin1String &latin1);
+ inline QString(const QString &);
+ inline ~QString();
+ QString &operator=(QChar c);
+ QString &operator=(const QString &);
+ inline QString &operator=(const QLatin1String &);
+
+ inline int size() const { return d->size; }
+ inline int count() const { return d->size; }
+ inline int length() const;
+ inline bool isEmpty() const;
+ void resize(int size);
+
+ QString &fill(QChar c, int size = -1);
+ void truncate(int pos);
+ void chop(int n);
+
+ int capacity() const;
+ inline void reserve(int size);
+ inline void squeeze() { if (d->size < d->alloc) realloc(); d->capacity = 0;}
+
+ inline const QChar *unicode() const;
+ inline QChar *data();
+ inline const QChar *data() const;
+ inline const QChar *constData() const;
+
+ inline void detach();
+ inline bool isDetached() const;
+ void clear();
+
+ inline const QChar at(int i) const;
+ const QChar operator[](int i) const;
+ QCharRef operator[](int i);
+ const QChar operator[](uint i) const;
+ QCharRef operator[](uint i);
+
+ QString arg(qlonglong a, int fieldwidth=0, int base=10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(qulonglong a, int fieldwidth=0, int base=10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(long a, int fieldwidth=0, int base=10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(ulong a, int fieldwidth=0, int base=10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(int a, int fieldWidth = 0, int base = 10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(uint a, int fieldWidth = 0, int base = 10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(short a, int fieldWidth = 0, int base = 10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(ushort a, int fieldWidth = 0, int base = 10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(double a, int fieldWidth = 0, char fmt = 'g', int prec = -1,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(char a, int fieldWidth = 0,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(QChar a, int fieldWidth = 0,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a, int fieldWidth = 0,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6,
+ const QString &a7) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6,
+ const QString &a7, const QString &a8) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6,
+ const QString &a7, const QString &a8, const QString &a9) const __attribute__ ((warn_unused_result));
+
+ QString &vsprintf(const char *format, va_list ap)
+
+ __attribute__ ((format (printf, 2, 0)))
+
+ ;
+ QString &sprintf(const char *format, ...)
+
+ __attribute__ ((format (printf, 2, 3)))
+
+ ;
+
+ int indexOf(QChar c, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int indexOf(const QString &s, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int indexOf(const QLatin1String &s, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int lastIndexOf(QChar c, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int lastIndexOf(const QString &s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int lastIndexOf(const QLatin1String &s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+
+ inline QBool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline QBool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int count(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int count(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+
+
+ int indexOf(const QRegExp &, int from = 0) const;
+ int lastIndexOf(const QRegExp &, int from = -1) const;
+ inline QBool contains(const QRegExp &rx) const { return QBool(indexOf(rx) != -1); }
+ int count(const QRegExp &) const;
+
+ int indexOf(QRegExp &, int from = 0) const;
+ int lastIndexOf(QRegExp &, int from = -1) const;
+ inline QBool contains(QRegExp &rx) const { return QBool(indexOf(rx) != -1); }
+
+
+ enum SectionFlag {
+ SectionDefault = 0x00,
+ SectionSkipEmpty = 0x01,
+ SectionIncludeLeadingSep = 0x02,
+ SectionIncludeTrailingSep = 0x04,
+ SectionCaseInsensitiveSeps = 0x08
+ };
+ typedef QFlags<SectionFlag> SectionFlags;
+
+ QString section(QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault) const;
+ QString section(const QString &in_sep, int start, int end = -1, SectionFlags flags = SectionDefault) const;
+
+ QString section(const QRegExp ®, int start, int end = -1, SectionFlags flags = SectionDefault) const;
+
+
+ QString left(int n) const __attribute__ ((warn_unused_result));
+ QString right(int n) const __attribute__ ((warn_unused_result));
+ QString mid(int position, int n = -1) const __attribute__ ((warn_unused_result));
+ QStringRef leftRef(int n) const __attribute__ ((warn_unused_result));
+ QStringRef rightRef(int n) const __attribute__ ((warn_unused_result));
+ QStringRef midRef(int position, int n = -1) const __attribute__ ((warn_unused_result));
+
+ bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ bool startsWith(const QLatin1String &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ bool startsWith(const QChar &c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ bool endsWith(const QLatin1String &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ bool endsWith(const QChar &c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+
+ QString leftJustified(int width, QChar fill = QLatin1Char(' '), bool trunc = false) const __attribute__ ((warn_unused_result));
+ QString rightJustified(int width, QChar fill = QLatin1Char(' '), bool trunc = false) const __attribute__ ((warn_unused_result));
+
+ QString toLower() const __attribute__ ((warn_unused_result));
+ QString toUpper() const __attribute__ ((warn_unused_result));
+ QString toCaseFolded() const __attribute__ ((warn_unused_result));
+
+ QString trimmed() const __attribute__ ((warn_unused_result));
+ QString simplified() const __attribute__ ((warn_unused_result));
+
+ QString &insert(int i, QChar c);
+ QString &insert(int i, const QChar *uc, int len);
+ inline QString &insert(int i, const QString &s) { return insert(i, s.constData(), s.length()); }
+ QString &insert(int i, const QLatin1String &s);
+ QString &append(QChar c);
+ QString &append(const QString &s);
+ QString &append(const QStringRef &s);
+ QString &append(const QLatin1String &s);
+ inline QString &prepend(QChar c) { return insert(0, c); }
+ inline QString &prepend(const QString &s) { return insert(0, s); }
+ inline QString &prepend(const QLatin1String &s) { return insert(0, s); }
+
+ inline QString &operator+=(QChar c) {
+ if (d->ref != 1 || d->size + 1 > d->alloc)
+ realloc(grow(d->size + 1));
+ d->data[d->size++] = c.unicode();
+ d->data[d->size] = '\0';
+ return *this;
+ }
+
+ inline QString &operator+=(QChar::SpecialCharacter c) { return append(QChar(c)); }
+ inline QString &operator+=(const QString &s) { return append(s); }
+ inline QString &operator+=(const QStringRef &s) { return append(s); }
+ inline QString &operator+=(const QLatin1String &s) { return append(s); }
+
+ QString &remove(int i, int len);
+ QString &remove(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &remove(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(int i, int len, QChar after);
+ QString &replace(int i, int len, const QChar *s, int slen);
+ QString &replace(int i, int len, const QString &after);
+ QString &replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(const QChar *before, int blen, const QChar *after, int alen, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(const QLatin1String &before, const QLatin1String &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(const QLatin1String &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(const QString &before, const QLatin1String &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(const QString &before, const QString &after,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(QChar c, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(QChar c, const QLatin1String &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+
+ QString &replace(const QRegExp &rx, const QString &after);
+ inline QString &remove(const QRegExp &rx)
+ { return replace(rx, QString()); }
+
+
+ enum SplitBehavior { KeepEmptyParts, SkipEmptyParts };
+
+ QStringList split(const QString &sep, SplitBehavior behavior = KeepEmptyParts,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const __attribute__ ((warn_unused_result));
+ QStringList split(const QChar &sep, SplitBehavior behavior = KeepEmptyParts,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const __attribute__ ((warn_unused_result));
+
+ QStringList split(const QRegExp &sep, SplitBehavior behavior = KeepEmptyParts) const __attribute__ ((warn_unused_result));
+
+
+ enum NormalizationForm {
+ NormalizationForm_D,
+ NormalizationForm_C,
+ NormalizationForm_KD,
+ NormalizationForm_KC
+ };
+ QString normalized(NormalizationForm mode) const __attribute__ ((warn_unused_result));
+ QString normalized(NormalizationForm mode, QChar::UnicodeVersion version) const __attribute__ ((warn_unused_result));
+
+ QString repeated(int times) const;
+
+ const ushort *utf16() const;
+
+ QByteArray toAscii() const __attribute__ ((warn_unused_result));
+ QByteArray toLatin1() const __attribute__ ((warn_unused_result));
+ QByteArray toUtf8() const __attribute__ ((warn_unused_result));
+ QByteArray toLocal8Bit() const __attribute__ ((warn_unused_result));
+ QVector<uint> toUcs4() const __attribute__ ((warn_unused_result));
+
+ static QString fromAscii(const char *, int size = -1);
+ static QString fromLatin1(const char *, int size = -1);
+ static QString fromUtf8(const char *, int size = -1);
+ static QString fromLocal8Bit(const char *, int size = -1);
+ static QString fromUtf16(const ushort *, int size = -1);
+ static QString fromUcs4(const uint *, int size = -1);
+ static QString fromRawData(const QChar *, int size);
+
+ int toWCharArray(wchar_t *array) const;
+ static QString fromWCharArray(const wchar_t *, int size = -1);
+
+ QString &setUnicode(const QChar *unicode, int size);
+ inline QString &setUtf16(const ushort *utf16, int size);
+
+
+ int compare(const QString &s) const;
+ int compare(const QString &s, Qt::CaseSensitivity cs) const;
+
+ int compare(const QLatin1String &other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+
+
+ static inline int compare(const QString &s1, const QString &s2)
+ { return s1.compare(s2); }
+ static inline int compare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs)
+ { return s1.compare(s2, cs); }
+
+ static inline int compare(const QString& s1, const QLatin1String &s2,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive)
+ { return s1.compare(s2, cs); }
+ static inline int compare(const QLatin1String& s1, const QString &s2,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive)
+ { return -s2.compare(s1, cs); }
+
+ int compare(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ static int compare(const QString &s1, const QStringRef &s2,
+ Qt::CaseSensitivity = Qt::CaseSensitive);
+
+ int localeAwareCompare(const QString& s) const;
+ static int localeAwareCompare(const QString& s1, const QString& s2)
+ { return s1.localeAwareCompare(s2); }
+
+ int localeAwareCompare(const QStringRef &s) const;
+ static int localeAwareCompare(const QString& s1, const QStringRef& s2);
+
+ short toShort(bool *ok=0, int base=10) const;
+ ushort toUShort(bool *ok=0, int base=10) const;
+ int toInt(bool *ok=0, int base=10) const;
+ uint toUInt(bool *ok=0, int base=10) const;
+ long toLong(bool *ok=0, int base=10) const;
+ ulong toULong(bool *ok=0, int base=10) const;
+ qlonglong toLongLong(bool *ok=0, int base=10) const;
+ qulonglong toULongLong(bool *ok=0, int base=10) const;
+ float toFloat(bool *ok=0) const;
+ double toDouble(bool *ok=0) const;
+
+ QString &setNum(short, int base=10);
+ QString &setNum(ushort, int base=10);
+ QString &setNum(int, int base=10);
+ QString &setNum(uint, int base=10);
+ QString &setNum(long, int base=10);
+ QString &setNum(ulong, int base=10);
+ QString &setNum(qlonglong, int base=10);
+ QString &setNum(qulonglong, int base=10);
+ QString &setNum(float, char f='g', int prec=6);
+ QString &setNum(double, char f='g', int prec=6);
+
+ static QString number(int, int base=10);
+ static QString number(uint, int base=10);
+ static QString number(long, int base=10);
+ static QString number(ulong, int base=10);
+ static QString number(qlonglong, int base=10);
+ static QString number(qulonglong, int base=10);
+ static QString number(double, char f='g', int prec=6);
+
+ bool operator==(const QString &s) const;
+ bool operator<(const QString &s) const;
+ inline bool operator>(const QString &s) const { return s < *this; }
+ inline bool operator!=(const QString &s) const { return !operator==(s); }
+ inline bool operator<=(const QString &s) const { return !operator>(s); }
+ inline bool operator>=(const QString &s) const { return !operator<(s); }
+
+ bool operator==(const QLatin1String &s) const;
+ bool operator<(const QLatin1String &s) const;
+ bool operator>(const QLatin1String &s) const;
+ inline bool operator!=(const QLatin1String &s) const { return !operator==(s); }
+ inline bool operator<=(const QLatin1String &s) const { return !operator>(s); }
+ inline bool operator>=(const QLatin1String &s) const { return !operator<(s); }
+
+
+
+ inline __attribute__ ((__deprecated__)) QString(const char *ch) : d(fromAscii_helper(ch))
+ {}
+ inline __attribute__ ((__deprecated__)) QString(const QByteArray &a)
+ : d(fromAscii_helper(a.constData(), qstrnlen(a.constData(), a.size())))
+ {}
+ inline __attribute__ ((__deprecated__)) QString &operator=(const char *ch)
+ { return (*this = fromAscii(ch)); }
+ inline __attribute__ ((__deprecated__)) QString &operator=(const QByteArray &a)
+ { return (*this = fromAscii(a.constData(), qstrnlen(a.constData(), a.size()))); }
+ inline __attribute__ ((__deprecated__)) QString &operator=(char c)
+ { return (*this = QChar::fromAscii(c)); }
+
+
+ inline __attribute__ ((__deprecated__)) QString &prepend(const char *s)
+ { return prepend(QString::fromAscii(s)); }
+ inline __attribute__ ((__deprecated__)) QString &prepend(const QByteArray &s)
+ { return prepend(QString::fromAscii(s.constData(), qstrnlen(s.constData(), s.size()))); }
+ inline __attribute__ ((__deprecated__)) QString &append(const char *s)
+ { return append(QString::fromAscii(s)); }
+ inline __attribute__ ((__deprecated__)) QString &append(const QByteArray &s)
+ { return append(QString::fromAscii(s.constData(), qstrnlen(s.constData(), s.size()))); }
+ inline __attribute__ ((__deprecated__)) QString &operator+=(const char *s)
+ { return append(QString::fromAscii(s)); }
+ inline __attribute__ ((__deprecated__)) QString &operator+=(const QByteArray &s)
+ { return append(QString::fromAscii(s.constData(), qstrnlen(s.constData(), s.size()))); }
+ inline __attribute__ ((__deprecated__)) QString &operator+=(char c)
+ { return append(QChar::fromAscii(c)); }
+
+ inline __attribute__ ((__deprecated__)) bool operator==(const char *s) const;
+ inline __attribute__ ((__deprecated__)) bool operator!=(const char *s) const;
+ inline __attribute__ ((__deprecated__)) bool operator<(const char *s) const;
+ inline __attribute__ ((__deprecated__)) bool operator<=(const char *s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator>(const char *s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator>=(const char *s2) const;
+
+ inline __attribute__ ((__deprecated__)) bool operator==(const QByteArray &s) const;
+ inline __attribute__ ((__deprecated__)) bool operator!=(const QByteArray &s) const;
+ inline __attribute__ ((__deprecated__)) bool operator<(const QByteArray &s) const
+ { return *this < QString::fromAscii(s.constData(), s.size()); }
+ inline __attribute__ ((__deprecated__)) bool operator>(const QByteArray &s) const
+ { return *this > QString::fromAscii(s.constData(), s.size()); }
+ inline __attribute__ ((__deprecated__)) bool operator<=(const QByteArray &s) const
+ { return *this <= QString::fromAscii(s.constData(), s.size()); }
+ inline __attribute__ ((__deprecated__)) bool operator>=(const QByteArray &s) const
+ { return *this >= QString::fromAscii(s.constData(), s.size()); }
+
+
+ typedef QChar *iterator;
+ typedef const QChar *const_iterator;
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ iterator begin();
+ const_iterator begin() const;
+ const_iterator constBegin() const;
+ iterator end();
+ const_iterator end() const;
+ const_iterator constEnd() const;
+
+
+ inline void push_back(QChar c) { append(c); }
+ inline void push_back(const QString &s) { append(s); }
+ inline void push_front(QChar c) { prepend(c); }
+ inline void push_front(const QString &s) { prepend(s); }
+
+
+ static inline QString fromStdString(const std::string &s);
+ inline std::string toStdString() const;
+
+
+
+
+
+ static inline QString fromStdWString(const QStdWString &s);
+ inline QStdWString toStdWString() const;
+
+
+
+
+
+ struct Null { };
+ static const Null null;
+ inline QString(const Null &): d(&shared_null) { d->ref.ref(); }
+ inline QString &operator=(const Null &) { *this = QString(); return *this; }
+ inline bool isNull() const { return d == &shared_null; }
+# 579 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h"
+ bool isSimpleText() const { if (!d->clean) updateProperties(); return d->simpletext; }
+ bool isRightToLeft() const { if (!d->clean) updateProperties(); return d->righttoleft; }
+
+private:
+# 592 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h"
+ struct Data {
+ QBasicAtomicInt ref;
+ int alloc, size;
+ ushort *data;
+ ushort clean : 1;
+ ushort simpletext : 1;
+ ushort righttoleft : 1;
+ ushort asciiCache : 1;
+ ushort capacity : 1;
+ ushort reserved : 11;
+ ushort array[1];
+ };
+ static Data shared_null;
+ static Data shared_empty;
+ Data *d;
+ QString(Data *dd, int ) : d(dd) {}
+
+ static QTextCodec *codecForCStrings;
+
+ static int grow(int);
+ static void free(Data *);
+ void realloc();
+ void realloc(int alloc);
+ void expand(int i);
+ void updateProperties() const;
+ QString multiArg(int numArgs, const QString **args) const;
+ static int compare_helper(const QChar *data1, int length1,
+ const QChar *data2, int length2,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ static int compare_helper(const QChar *data1, int length1,
+ QLatin1String s2,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ static int localeAwareCompare_helper(const QChar *data1, int length1,
+ const QChar *data2, int length2);
+ static Data *fromLatin1_helper(const char *str, int size = -1);
+ static Data *fromAscii_helper(const char *str, int size = -1);
+ void replace_helper(uint *indices, int nIndices, int blen, const QChar *after, int alen);
+ friend class QCharRef;
+ friend class QTextCodec;
+ friend class QStringRef;
+ friend inline bool qStringComparisonHelper(const QString &s1, const char *s2);
+ friend inline bool qStringComparisonHelper(const QStringRef &s1, const char *s2);
+public:
+ typedef Data * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+
+
+class __attribute__((visibility("default"))) QLatin1String
+{
+public:
+ inline explicit QLatin1String(const char *s) : chars(s) {}
+ inline QLatin1String &operator=(const QLatin1String &other)
+ { chars = other.chars; return *this; }
+
+ inline const char *latin1() const { return chars; }
+
+ inline bool operator==(const QString &s) const
+ { return s == *this; }
+ inline bool operator!=(const QString &s) const
+ { return s != *this; }
+ inline bool operator>(const QString &s) const
+ { return s < *this; }
+ inline bool operator<(const QString &s) const
+ { return s > *this; }
+ inline bool operator>=(const QString &s) const
+ { return s <= *this; }
+ inline bool operator<=(const QString &s) const
+ { return s >= *this; }
+
+ inline __attribute__ ((__deprecated__)) bool operator==(const char *s) const
+ { return QString::fromAscii(s) == *this; }
+ inline __attribute__ ((__deprecated__)) bool operator!=(const char *s) const
+ { return QString::fromAscii(s) != *this; }
+ inline __attribute__ ((__deprecated__)) bool operator<(const char *s) const
+ { return QString::fromAscii(s) > *this; }
+ inline __attribute__ ((__deprecated__)) bool operator>(const char *s) const
+ { return QString::fromAscii(s) < *this; }
+ inline __attribute__ ((__deprecated__)) bool operator<=(const char *s) const
+ { return QString::fromAscii(s) >= *this; }
+ inline __attribute__ ((__deprecated__)) bool operator>=(const char *s) const
+ { return QString::fromAscii(s) <= *this; }
+private:
+ const char *chars;
+};
+
+
+
+inline QString::QString(const QLatin1String &aLatin1) : d(fromLatin1_helper(aLatin1.latin1()))
+{ }
+inline int QString::length() const
+{ return d->size; }
+inline const QChar QString::at(int i) const
+{ qt_noop(); return d->data[i]; }
+inline const QChar QString::operator[](int i) const
+{ qt_noop(); return d->data[i]; }
+inline const QChar QString::operator[](uint i) const
+{ qt_noop(); return d->data[i]; }
+inline bool QString::isEmpty() const
+{ return d->size == 0; }
+inline const QChar *QString::unicode() const
+{ return reinterpret_cast<const QChar*>(d->data); }
+inline const QChar *QString::data() const
+{ return reinterpret_cast<const QChar*>(d->data); }
+inline QChar *QString::data()
+{ detach(); return reinterpret_cast<QChar*>(d->data); }
+inline const QChar *QString::constData() const
+{ return reinterpret_cast<const QChar*>(d->data); }
+inline void QString::detach()
+{ if (d->ref != 1 || d->data != d->array) realloc(); }
+inline bool QString::isDetached() const
+{ return d->ref == 1; }
+inline QString &QString::operator=(const QLatin1String &s)
+{
+ *this = fromLatin1(s.latin1());
+ return *this;
+}
+inline void QString::clear()
+{ if (!isNull()) *this = QString(); }
+inline QString::QString(const QString &other) : d(other.d)
+{ qt_noop(); d->ref.ref(); }
+inline int QString::capacity() const
+{ return d->alloc; }
+inline QString &QString::setNum(short n, int base)
+{ return setNum(qlonglong(n), base); }
+inline QString &QString::setNum(ushort n, int base)
+{ return setNum(qulonglong(n), base); }
+inline QString &QString::setNum(int n, int base)
+{ return setNum(qlonglong(n), base); }
+inline QString &QString::setNum(uint n, int base)
+{ return setNum(qulonglong(n), base); }
+inline QString &QString::setNum(long n, int base)
+{ return setNum(qlonglong(n), base); }
+inline QString &QString::setNum(ulong n, int base)
+{ return setNum(qulonglong(n), base); }
+inline QString &QString::setNum(float n, char f, int prec)
+{ return setNum(double(n),f,prec); }
+inline QString QString::arg(int a, int fieldWidth, int base, const QChar &fillChar) const
+{ return arg(qlonglong(a), fieldWidth, base, fillChar); }
+inline QString QString::arg(uint a, int fieldWidth, int base, const QChar &fillChar) const
+{ return arg(qulonglong(a), fieldWidth, base, fillChar); }
+inline QString QString::arg(long a, int fieldWidth, int base, const QChar &fillChar) const
+{ return arg(qlonglong(a), fieldWidth, base, fillChar); }
+inline QString QString::arg(ulong a, int fieldWidth, int base, const QChar &fillChar) const
+{ return arg(qulonglong(a), fieldWidth, base, fillChar); }
+inline QString QString::arg(short a, int fieldWidth, int base, const QChar &fillChar) const
+{ return arg(qlonglong(a), fieldWidth, base, fillChar); }
+inline QString QString::arg(ushort a, int fieldWidth, int base, const QChar &fillChar) const
+{ return arg(qulonglong(a), fieldWidth, base, fillChar); }
+inline QString QString::arg(const QString &a1, const QString &a2) const
+{ const QString *args[2] = { &a1, &a2 }; return multiArg(2, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3) const
+{ const QString *args[3] = { &a1, &a2, &a3 }; return multiArg(3, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4) const
+{ const QString *args[4] = { &a1, &a2, &a3, &a4 }; return multiArg(4, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5) const
+{ const QString *args[5] = { &a1, &a2, &a3, &a4, &a5 }; return multiArg(5, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6) const
+{ const QString *args[6] = { &a1, &a2, &a3, &a4, &a5, &a6 }; return multiArg(6, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6,
+ const QString &a7) const
+{ const QString *args[7] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7 }; return multiArg(7, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6,
+ const QString &a7, const QString &a8) const
+{ const QString *args[8] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8 }; return multiArg(8, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6,
+ const QString &a7, const QString &a8, const QString &a9) const
+{ const QString *args[9] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9 }; return multiArg(9, args); }
+
+inline QString QString::section(QChar asep, int astart, int aend, SectionFlags aflags) const
+{ return section(QString(asep), astart, aend, aflags); }
+
+
+class __attribute__((visibility("default"))) QCharRef {
+ QString &s;
+ int i;
+ inline QCharRef(QString &str, int idx)
+ : s(str),i(idx) {}
+ friend class QString;
+public:
+
+
+
+
+ inline operator QChar() const
+ { return i < s.d->size ? s.d->data[i] : 0; }
+ inline QCharRef &operator=(const QChar &c)
+ { if (i >= s.d->size) s.expand(i); else s.detach();
+ s.d->data[i] = c.unicode(); return *this; }
+
+
+
+ inline __attribute__ ((__deprecated__)) QCharRef &operator=(char c)
+ { return operator=(QChar::fromAscii(c)); }
+ inline __attribute__ ((__deprecated__)) QCharRef &operator=(uchar c)
+ { return operator=(QChar::fromAscii(c)); }
+
+ inline QCharRef &operator=(const QCharRef &c) { return operator=(QChar(c)); }
+ inline QCharRef &operator=(ushort rc) { return operator=(QChar(rc)); }
+ inline QCharRef &operator=(short rc) { return operator=(QChar(rc)); }
+ inline QCharRef &operator=(uint rc) { return operator=(QChar(rc)); }
+ inline QCharRef &operator=(int rc) { return operator=(QChar(rc)); }
+
+
+ inline bool isNull() const { return QChar(*this).isNull(); }
+ inline bool isPrint() const { return QChar(*this).isPrint(); }
+ inline bool isPunct() const { return QChar(*this).isPunct(); }
+ inline bool isSpace() const { return QChar(*this).isSpace(); }
+ inline bool isMark() const { return QChar(*this).isMark(); }
+ inline bool isLetter() const { return QChar(*this).isLetter(); }
+ inline bool isNumber() const { return QChar(*this).isNumber(); }
+ inline bool isLetterOrNumber() { return QChar(*this).isLetterOrNumber(); }
+ inline bool isDigit() const { return QChar(*this).isDigit(); }
+ inline bool isLower() const { return QChar(*this).isLower(); }
+ inline bool isUpper() const { return QChar(*this).isUpper(); }
+ inline bool isTitleCase() const { return QChar(*this).isTitleCase(); }
+
+ inline int digitValue() const { return QChar(*this).digitValue(); }
+ QChar toLower() const { return QChar(*this).toLower(); }
+ QChar toUpper() const { return QChar(*this).toUpper(); }
+ QChar toTitleCase () const { return QChar(*this).toTitleCase(); }
+
+ QChar::Category category() const { return QChar(*this).category(); }
+ QChar::Direction direction() const { return QChar(*this).direction(); }
+ QChar::Joining joining() const { return QChar(*this).joining(); }
+ bool hasMirrored() const { return QChar(*this).hasMirrored(); }
+ QChar mirroredChar() const { return QChar(*this).mirroredChar(); }
+ QString decomposition() const { return QChar(*this).decomposition(); }
+ QChar::Decomposition decompositionTag() const { return QChar(*this).decompositionTag(); }
+ uchar combiningClass() const { return QChar(*this).combiningClass(); }
+
+ QChar::UnicodeVersion unicodeVersion() const { return QChar(*this).unicodeVersion(); }
+
+ inline uchar cell() const { return QChar(*this).cell(); }
+ inline uchar row() const { return QChar(*this).row(); }
+ inline void setCell(uchar cell);
+ inline void setRow(uchar row);
+
+
+
+
+
+
+ char toAscii() const { return QChar(*this).toAscii(); }
+ char toLatin1() const { return QChar(*this).toLatin1(); }
+ ushort unicode() const { return QChar(*this).unicode(); }
+
+ ushort& unicode() { return s.data()[i].unicode(); }
+# 859 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h"
+};
+
+inline void QCharRef::setRow(uchar arow) { QChar(*this).setRow(arow); }
+inline void QCharRef::setCell(uchar acell) { QChar(*this).setCell(acell); }
+
+
+inline QString::QString() : d(&shared_null) { d->ref.ref(); }
+inline QString::~QString() { if (!d->ref.deref()) free(d); }
+inline void QString::reserve(int asize) { if (d->ref != 1 || asize > d->alloc) realloc(asize); d->capacity = 1;}
+inline QString &QString::setUtf16(const ushort *autf16, int asize)
+{ return setUnicode(reinterpret_cast<const QChar *>(autf16), asize); }
+inline QCharRef QString::operator[](int i)
+{ qt_noop(); return QCharRef(*this, i); }
+inline QCharRef QString::operator[](uint i)
+{ return QCharRef(*this, i); }
+inline QString::iterator QString::begin()
+{ detach(); return reinterpret_cast<QChar*>(d->data); }
+inline QString::const_iterator QString::begin() const
+{ return reinterpret_cast<const QChar*>(d->data); }
+inline QString::const_iterator QString::constBegin() const
+{ return reinterpret_cast<const QChar*>(d->data); }
+inline QString::iterator QString::end()
+{ detach(); return reinterpret_cast<QChar*>(d->data + d->size); }
+inline QString::const_iterator QString::end() const
+{ return reinterpret_cast<const QChar*>(d->data + d->size); }
+inline QString::const_iterator QString::constEnd() const
+{ return reinterpret_cast<const QChar*>(d->data + d->size); }
+inline QBool QString::contains(const QString &s, Qt::CaseSensitivity cs) const
+{ return QBool(indexOf(s, 0, cs) != -1); }
+inline QBool QString::contains(QChar c, Qt::CaseSensitivity cs) const
+{ return QBool(indexOf(c, 0, cs) != -1); }
+
+
+inline bool operator==(QString::Null, QString::Null) { return true; }
+inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }
+inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }
+inline bool operator!=(QString::Null, QString::Null) { return false; }
+inline bool operator!=(QString::Null, const QString &s) { return !s.isNull(); }
+inline bool operator!=(const QString &s, QString::Null) { return !s.isNull(); }
+
+
+inline bool qStringComparisonHelper(const QString &s1, const char *s2)
+{
+
+ if (QString::codecForCStrings) return (s1 == QString::fromAscii(s2));
+
+ return (s1 == QLatin1String(s2));
+}
+inline bool QString::operator==(const char *s) const
+{ return qStringComparisonHelper(*this, s); }
+inline bool QString::operator!=(const char *s) const
+{ return !qStringComparisonHelper(*this, s); }
+inline bool QString::operator<(const char *s) const
+{ return *this < QString::fromAscii(s); }
+inline bool QString::operator>(const char *s) const
+{ return *this > QString::fromAscii(s); }
+inline bool QString::operator<=(const char *s) const
+{ return *this <= QString::fromAscii(s); }
+inline bool QString::operator>=(const char *s) const
+{ return *this >= QString::fromAscii(s); }
+
+inline __attribute__ ((__deprecated__)) bool operator==(const char *s1, const QString &s2)
+{ return qStringComparisonHelper(s2, s1); }
+inline __attribute__ ((__deprecated__)) bool operator!=(const char *s1, const QString &s2)
+{ return !qStringComparisonHelper(s2, s1); }
+inline __attribute__ ((__deprecated__)) bool operator<(const char *s1, const QString &s2)
+{ return (QString::fromAscii(s1) < s2); }
+inline __attribute__ ((__deprecated__)) bool operator>(const char *s1, const QString &s2)
+{ return (QString::fromAscii(s1) > s2); }
+inline __attribute__ ((__deprecated__)) bool operator<=(const char *s1, const QString &s2)
+{ return (QString::fromAscii(s1) <= s2); }
+inline __attribute__ ((__deprecated__)) bool operator>=(const char *s1, const QString &s2)
+{ return (QString::fromAscii(s1) >= s2); }
+
+inline __attribute__ ((__deprecated__)) bool operator==(const char *s1, const QLatin1String &s2)
+{ return QString::fromAscii(s1) == s2; }
+inline __attribute__ ((__deprecated__)) bool operator!=(const char *s1, const QLatin1String &s2)
+{ return QString::fromAscii(s1) != s2; }
+inline __attribute__ ((__deprecated__)) bool operator<(const char *s1, const QLatin1String &s2)
+{ return (QString::fromAscii(s1) < s2); }
+inline __attribute__ ((__deprecated__)) bool operator>(const char *s1, const QLatin1String &s2)
+{ return (QString::fromAscii(s1) > s2); }
+inline __attribute__ ((__deprecated__)) bool operator<=(const char *s1, const QLatin1String &s2)
+{ return (QString::fromAscii(s1) <= s2); }
+inline __attribute__ ((__deprecated__)) bool operator>=(const char *s1, const QLatin1String &s2)
+{ return (QString::fromAscii(s1) >= s2); }
+
+inline bool operator==(const QLatin1String &s1, const QLatin1String &s2)
+{ return (qstrcmp(s1.latin1(), s2.latin1()) == 0); }
+inline bool operator!=(const QLatin1String &s1, const QLatin1String &s2)
+{ return (qstrcmp(s1.latin1(), s2.latin1()) != 0); }
+inline bool operator<(const QLatin1String &s1, const QLatin1String &s2)
+{ return (qstrcmp(s1.latin1(), s2.latin1()) < 0); }
+inline bool operator<=(const QLatin1String &s1, const QLatin1String &s2)
+{ return (qstrcmp(s1.latin1(), s2.latin1()) <= 0); }
+inline bool operator>(const QLatin1String &s1, const QLatin1String &s2)
+{ return (qstrcmp(s1.latin1(), s2.latin1()) > 0); }
+inline bool operator>=(const QLatin1String &s1, const QLatin1String &s2)
+{ return (qstrcmp(s1.latin1(), s2.latin1()) >= 0); }
+
+
+inline bool QString::operator==(const QByteArray &s) const
+{ return qStringComparisonHelper(*this, s.constData()); }
+inline bool QString::operator!=(const QByteArray &s) const
+{ return !qStringComparisonHelper(*this, s.constData()); }
+
+inline bool QByteArray::operator==(const QString &s) const
+{ return qStringComparisonHelper(s, constData()); }
+inline bool QByteArray::operator!=(const QString &s) const
+{ return !qStringComparisonHelper(s, constData()); }
+inline bool QByteArray::operator<(const QString &s) const
+{ return QString::fromAscii(constData(), size()) < s; }
+inline bool QByteArray::operator>(const QString &s) const
+{ return QString::fromAscii(constData(), size()) > s; }
+inline bool QByteArray::operator<=(const QString &s) const
+{ return QString::fromAscii(constData(), size()) <= s; }
+inline bool QByteArray::operator>=(const QString &s) const
+{ return QString::fromAscii(constData(), size()) >= s; }
+# 1004 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h"
+inline const QString operator+(const QString &s1, const QString &s2)
+{ QString t(s1); t += s2; return t; }
+inline const QString operator+(const QString &s1, QChar s2)
+{ QString t(s1); t += s2; return t; }
+inline const QString operator+(QChar s1, const QString &s2)
+{ QString t(s1); t += s2; return t; }
+
+inline __attribute__ ((__deprecated__)) const QString operator+(const QString &s1, const char *s2)
+{ QString t(s1); t += QString::fromAscii(s2); return t; }
+inline __attribute__ ((__deprecated__)) const QString operator+(const char *s1, const QString &s2)
+{ QString t = QString::fromAscii(s1); t += s2; return t; }
+inline __attribute__ ((__deprecated__)) const QString operator+(char c, const QString &s)
+{ QString t = s; t.prepend(QChar::fromAscii(c)); return t; }
+inline __attribute__ ((__deprecated__)) const QString operator+(const QString &s, char c)
+{ QString t = s; t += QChar::fromAscii(c); return t; }
+inline __attribute__ ((__deprecated__)) const QString operator+(const QByteArray &ba, const QString &s)
+{ QString t = QString::fromAscii(ba.constData(), qstrnlen(ba.constData(), ba.size())); t += s; return t; }
+inline __attribute__ ((__deprecated__)) const QString operator+(const QString &s, const QByteArray &ba)
+{ QString t(s); t += QString::fromAscii(ba.constData(), qstrnlen(ba.constData(), ba.size())); return t; }
+
+
+
+inline std::string QString::toStdString() const
+{ const QByteArray asc = toAscii(); return std::string(asc.constData(), asc.length()); }
+
+inline QString QString::fromStdString(const std::string &s)
+{ return fromAscii(s.data(), int(s.size())); }
+
+
+inline QStdWString QString::toStdWString() const
+{
+ QStdWString str;
+ str.resize(length());
+
+
+
+
+
+
+
+ str.resize(toWCharArray(&(*str.begin())));
+ return str;
+}
+inline QString QString::fromStdWString(const QStdWString &s)
+{ return fromWCharArray(s.data(), int(s.size())); }
+# 1062 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h"
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QString &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QString &);
+# 1076 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h"
+template <> class QTypeInfo<QString> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QString)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QString"; } };
+template <> inline bool qIsDetached<QString>(QString &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QString>(QString &value1, QString &value2) { const QString::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+inline QFlags<QString::SectionFlags::enum_type> operator|(QString::SectionFlags::enum_type f1, QString::SectionFlags::enum_type f2) { return QFlags<QString::SectionFlags::enum_type>(f1) | f2; } inline QFlags<QString::SectionFlags::enum_type> operator|(QString::SectionFlags::enum_type f1, QFlags<QString::SectionFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QString::SectionFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+# 1087 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstring.h"
+class __attribute__((visibility("default"))) QStringRef {
+ const QString *m_string;
+ int m_position;
+ int m_size;
+public:
+ inline QStringRef():m_string(0), m_position(0), m_size(0){}
+ inline QStringRef(const QString *string, int position, int size);
+ inline QStringRef(const QString *string);
+ inline QStringRef(const QStringRef &other)
+ :m_string(other.m_string), m_position(other.m_position), m_size(other.m_size)
+ {}
+
+ inline ~QStringRef(){}
+ inline const QString *string() const { return m_string; }
+ inline int position() const { return m_position; }
+ inline int size() const { return m_size; }
+ inline int count() const { return m_size; }
+ inline int length() const { return m_size; }
+
+ inline QStringRef &operator=(const QStringRef &other) {
+ m_string = other.m_string; m_position = other.m_position;
+ m_size = other.m_size; return *this;
+ }
+
+ inline QStringRef &operator=(const QString *string);
+
+ inline const QChar *unicode() const {
+ if (!m_string)
+ return reinterpret_cast<const QChar *>(QString::shared_null.data);
+ return m_string->unicode() + m_position;
+ }
+ inline const QChar *data() const { return unicode(); }
+ inline const QChar *constData() const { return unicode(); }
+
+ inline void clear() { m_string = 0; m_position = m_size = 0; }
+ QString toString() const;
+ inline bool isEmpty() const { return m_size == 0; }
+ inline bool isNull() const { return m_string == 0 || m_string->isNull(); }
+
+ QStringRef appendTo(QString *string) const;
+
+ inline const QChar at(int i) const
+ { qt_noop(); return m_string->at(i + m_position); }
+
+ int compare(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int compare(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int compare(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ static int compare(const QStringRef &s1, const QString &s2,
+ Qt::CaseSensitivity = Qt::CaseSensitive);
+ static int compare(const QStringRef &s1, const QStringRef &s2,
+ Qt::CaseSensitivity = Qt::CaseSensitive);
+ static int compare(const QStringRef &s1, QLatin1String s2,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+
+ int localeAwareCompare(const QString &s) const;
+ int localeAwareCompare(const QStringRef &s) const;
+ static int localeAwareCompare(const QStringRef &s1, const QString &s2);
+ static int localeAwareCompare(const QStringRef &s1, const QStringRef &s2);
+};
+
+inline QStringRef &QStringRef::operator=(const QString *aString)
+{ m_string = aString; m_position = 0; m_size = aString?aString->size():0; return *this; }
+
+inline QStringRef::QStringRef(const QString *aString, int aPosition, int aSize)
+ :m_string(aString), m_position(aPosition), m_size(aSize){}
+
+inline QStringRef::QStringRef(const QString *aString)
+ :m_string(aString), m_position(0), m_size(aString?aString->size() : 0){}
+
+__attribute__((visibility("default"))) bool operator==(const QStringRef &s1,const QStringRef &s2);
+inline bool operator!=(const QStringRef &s1,const QStringRef &s2)
+{ return !(s1 == s2); }
+__attribute__((visibility("default"))) bool operator==(const QString &s1,const QStringRef &s2);
+inline bool operator!=(const QString &s1,const QStringRef &s2)
+{ return !(s1 == s2); }
+inline bool operator==(const QStringRef &s1,const QString &s2)
+{ return s2 == s1; }
+inline bool operator!=(const QStringRef &s1,const QString &s2)
+{ return s2 != s1; }
+__attribute__((visibility("default"))) bool operator==(const QLatin1String &s1, const QStringRef &s2);
+inline bool operator!=(const QLatin1String &s1,const QStringRef &s2)
+{ return !(s1 == s2); }
+inline bool operator==(const QStringRef &s1,const QLatin1String &s2)
+{ return s2 == s1; }
+inline bool operator!=(const QStringRef &s1,const QLatin1String &s2)
+{ return s2 != s1; }
+
+__attribute__((visibility("default"))) bool operator<(const QStringRef &s1,const QStringRef &s2);
+inline bool operator>(const QStringRef &s1, const QStringRef &s2)
+{ return s2 < s1; }
+inline bool operator<=(const QStringRef &s1, const QStringRef &s2)
+{ return !(s1 > s2); }
+inline bool operator>=(const QStringRef &s1, const QStringRef &s2)
+{ return !(s1 < s2); }
+
+inline bool qStringComparisonHelper(const QStringRef &s1, const char *s2)
+{
+
+ if (QString::codecForCStrings) return (s1 == QString::fromAscii(s2));
+
+ return (s1 == QLatin1String(s2));
+}
+
+inline __attribute__ ((__deprecated__)) bool operator==(const char *s1, const QStringRef &s2)
+{ return qStringComparisonHelper(s2, s1); }
+inline __attribute__ ((__deprecated__)) bool operator==(const QStringRef &s1, const char *s2)
+{ return qStringComparisonHelper(s1, s2); }
+inline __attribute__ ((__deprecated__)) bool operator!=(const char *s1, const QStringRef &s2)
+{ return !qStringComparisonHelper(s2, s1); }
+inline __attribute__ ((__deprecated__)) bool operator!=(const QStringRef &s1, const char *s2)
+{ return !qStringComparisonHelper(s1, s2); }
+
+inline int QString::compare(const QStringRef &s, Qt::CaseSensitivity cs) const
+{ return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); }
+inline int QString::compare(const QString &s1, const QStringRef &s2, Qt::CaseSensitivity cs)
+{ return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); }
+inline int QStringRef::compare(const QString &s, Qt::CaseSensitivity cs) const
+{ return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); }
+inline int QStringRef::compare(const QStringRef &s, Qt::CaseSensitivity cs) const
+{ return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); }
+inline int QStringRef::compare(QLatin1String s, Qt::CaseSensitivity cs) const
+{ return QString::compare_helper(constData(), length(), s, cs); }
+inline int QStringRef::compare(const QStringRef &s1, const QString &s2, Qt::CaseSensitivity cs)
+{ return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); }
+inline int QStringRef::compare(const QStringRef &s1, const QStringRef &s2, Qt::CaseSensitivity cs)
+{ return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); }
+inline int QStringRef::compare(const QStringRef &s1, QLatin1String s2, Qt::CaseSensitivity cs)
+{ return QString::compare_helper(s1.constData(), s1.length(), s2, cs); }
+
+inline int QString::localeAwareCompare(const QStringRef &s) const
+{ return localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); }
+inline int QString::localeAwareCompare(const QString& s1, const QStringRef& s2)
+{ return localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); }
+inline int QStringRef::localeAwareCompare(const QString &s) const
+{ return QString::localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); }
+inline int QStringRef::localeAwareCompare(const QStringRef &s) const
+{ return QString::localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); }
+inline int QStringRef::localeAwareCompare(const QStringRef &s1, const QString &s2)
+{ return QString::localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); }
+inline int QStringRef::localeAwareCompare(const QStringRef &s1, const QStringRef &s2)
+{ return QString::localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); }
+
+
+
+
+
+# 1 "../../include/QtCore/qstring.h" 2
+# 49 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h" 2
+# 1 "../../include/QtCore/qbytearray.h" 1
+# 50 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h" 2
+# 1 "../../include/QtCore/qlist.h" 1
+# 51 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h" 2
+
+
+
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QEvent;
+class QTimerEvent;
+class QChildEvent;
+struct QMetaObject;
+class QVariant;
+class QObjectPrivate;
+class QObject;
+class QThread;
+class QWidget;
+
+class QRegExp;
+
+
+class QObjectUserData;
+
+
+typedef QList<QObject*> QObjectList;
+# 86 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h"
+template<typename T> inline T qFindChild(const QObject *, const QString & = QString());
+template<typename T> inline QList<T> qFindChildren(const QObject *, const QString & = QString());
+
+template<typename T> inline QList<T> qFindChildren(const QObject *, const QRegExp &);
+
+
+
+class QObjectData {
+public:
+ virtual ~QObjectData() = 0;
+ QObject *q_ptr;
+ QObject *parent;
+ QObjectList children;
+
+ uint isWidget : 1;
+ uint pendTimer : 1;
+ uint blockSig : 1;
+ uint wasDeleted : 1;
+ uint ownObjectName : 1;
+ uint sendChildEvents : 1;
+ uint receiveChildEvents : 1;
+ uint inEventHandler : 1;
+ uint inThreadChangeEvent : 1;
+ uint unused : 23;
+ int postedEvents;
+};
+
+
+class __attribute__((visibility("default"))) QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+
+ inline QObjectPrivate* d_func() { return reinterpret_cast<QObjectPrivate *>(d_ptr); } inline const QObjectPrivate* d_func() const { return reinterpret_cast<const QObjectPrivate *>(d_ptr); } friend class QObjectPrivate;
+
+public:
+ explicit QObject(QObject *parent=0);
+ virtual ~QObject();
+
+ virtual bool event(QEvent *);
+ virtual bool eventFilter(QObject *, QEvent *);
+# 146 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h"
+ QString objectName() const;
+ void setObjectName(const QString &name);
+
+ inline bool isWidgetType() const { return d_ptr->isWidget; }
+
+ inline bool signalsBlocked() const { return d_ptr->blockSig; }
+ bool blockSignals(bool b);
+
+ QThread *thread() const;
+ void moveToThread(QThread *thread);
+
+ int startTimer(int interval);
+ void killTimer(int id);
+
+
+ template<typename T>
+ inline T findChild(const QString &aName = QString()) const
+ { return qFindChild<T>(this, aName); }
+
+ template<typename T>
+ inline QList<T> findChildren(const QString &aName = QString()) const
+ { return qFindChildren<T>(this, aName); }
+
+
+ template<typename T>
+ inline QList<T> findChildren(const QRegExp &re) const
+ { return qFindChildren<T>(this, re); }
+# 184 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h"
+ inline const QObjectList &children() const { return d_ptr->children; }
+
+ void setParent(QObject *);
+ void installEventFilter(QObject *);
+ void removeEventFilter(QObject *);
+
+
+ static bool connect(const QObject *sender, const char *signal,
+ const QObject *receiver, const char *member, Qt::ConnectionType =
+
+
+
+
+
+
+ Qt::AutoConnection
+
+
+ );
+ inline bool connect(const QObject *sender, const char *signal,
+ const char *member, Qt::ConnectionType type =
+
+
+
+
+
+
+ Qt::AutoConnection
+
+
+ ) const;
+
+ static bool disconnect(const QObject *sender, const char *signal,
+ const QObject *receiver, const char *member);
+ inline bool disconnect(const char *signal = 0,
+ const QObject *receiver = 0, const char *member = 0)
+ { return disconnect(this, signal, receiver, member); }
+ inline bool disconnect(const QObject *receiver, const char *member = 0)
+ { return disconnect(this, 0, receiver, member); }
+
+ void dumpObjectTree();
+ void dumpObjectInfo();
+
+
+ bool setProperty(const char *name, const QVariant &value);
+ QVariant property(const char *name) const;
+ QList<QByteArray> dynamicPropertyNames() const;
+
+
+
+ static uint registerUserData();
+ void setUserData(uint id, QObjectUserData* data);
+ QObjectUserData* userData(uint id) const;
+
+
+protected:
+ void destroyed(QObject * = 0);
+
+public:
+ inline QObject *parent() const { return d_ptr->parent; }
+
+ inline bool inherits(const char *classname) const
+ { return const_cast<QObject *>(this)->qt_metacast(classname) != 0; }
+
+public :
+ void deleteLater();
+
+protected:
+ QObject *sender() const;
+ int receivers(const char* signal) const;
+
+ virtual void timerEvent(QTimerEvent *);
+ virtual void childEvent(QChildEvent *);
+ virtual void customEvent(QEvent *);
+
+ virtual void connectNotify(const char *signal);
+ virtual void disconnectNotify(const char *signal);
+# 285 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h"
+protected:
+ QObject(QObjectPrivate &dd, QObject *parent = 0);
+
+protected:
+ QObjectData *d_ptr;
+
+ static const QMetaObject staticQtMetaObject;
+
+ friend struct QMetaObject;
+ friend class QApplication;
+ friend class QApplicationPrivate;
+ friend class QCoreApplication;
+ friend class QCoreApplicationPrivate;
+ friend class QWidget;
+ friend class QThreadData;
+
+private:
+ QObject(const QObject &); QObject &operator=(const QObject &);
+
+};
+
+inline bool QObject::connect(const QObject *asender, const char *asignal,
+ const char *amember, Qt::ConnectionType atype) const
+{ return connect(asender, asignal, this, amember, atype); }
+
+
+class __attribute__((visibility("default"))) QObjectUserData {
+public:
+ virtual ~QObjectUserData();
+};
+
+
+__attribute__((visibility("default"))) void qt_qFindChildren_helper(const QObject *parent, const QString &name, const QRegExp *re,
+ const QMetaObject &mo, QList<void *> *list);
+__attribute__((visibility("default"))) QObject *qt_qFindChild_helper(const QObject *parent, const QString &name, const QMetaObject &mo);
+# 405 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h"
+template<typename T>
+inline T qFindChild(const QObject *o, const QString &name)
+{ return static_cast<T>(qt_qFindChild_helper(o, name, reinterpret_cast<T>(0)->staticMetaObject)); }
+
+template<typename T>
+inline QList<T> qFindChildren(const QObject *o, const QString &name)
+{
+ QList<T> list;
+ union {
+ QList<T> *typedList;
+ QList<void *> *voidList;
+ } u;
+ u.typedList = &list;
+ qt_qFindChildren_helper(o, name, 0, reinterpret_cast<T>(0)->staticMetaObject, u.voidList);
+ return list;
+}
+
+
+template<typename T>
+inline QList<T> qFindChildren(const QObject *o, const QRegExp &re)
+{
+ QList<T> list;
+ union {
+ QList<T> *typedList;
+ QList<void *> *voidList;
+ } u;
+ u.typedList = &list;
+ qt_qFindChildren_helper(o, QString(), &re, reinterpret_cast<T>(0)->staticMetaObject, u.voidList);
+ return list;
+}
+
+
+template <class T>
+inline T qobject_cast(QObject *object)
+{
+
+ reinterpret_cast<T>(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast<T>(object));
+
+ return static_cast<T>(reinterpret_cast<T>(0)->staticMetaObject.cast(object));
+}
+
+template <class T>
+inline T qobject_cast(const QObject *object)
+{
+
+ register T ptr = static_cast<T>(object);
+ (void)ptr;;
+
+
+ reinterpret_cast<T>(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast<T>(const_cast<QObject *>(object)));
+
+ return static_cast<T>(const_cast<QObject *>(reinterpret_cast<T>(0)->staticMetaObject.cast(const_cast<QObject *>(object))));
+}
+
+
+
+#define Q_DECLARE_INTERFACE(IFace,IId) template <> inline IFace *qobject_cast<IFace *>(QObject *object) { return reinterpret_cast<IFace *>((object ? object->qt_metacast(IId) : 0)); } template <> inline IFace *qobject_cast<IFace *>(const QObject *object) { return reinterpret_cast<IFace *>((object ? const_cast<QObject *>(object)->qt_metacast(IId) : 0)); }
+# 471 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject.h"
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QObject *);
+
+
+
+
+
+# 1 "../../include/QtCore/qobject.h" 2
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qiodevice.h" 2
+
+
+
+# 1 "../../include/QtCore/qstring.h" 1
+# 51 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qiodevice.h" 2
+
+
+
+
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QByteArray;
+class QIODevicePrivate;
+
+class __attribute__((visibility("default"))) QIODevice
+
+ : public QObject
+
+{
+
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+
+public:
+ enum OpenModeFlag {
+ NotOpen = 0x0000,
+ ReadOnly = 0x0001,
+ WriteOnly = 0x0002,
+ ReadWrite = ReadOnly | WriteOnly,
+ Append = 0x0004,
+ Truncate = 0x0008,
+ Text = 0x0010,
+ Unbuffered = 0x0020
+ };
+ typedef QFlags<OpenModeFlag> OpenMode;
+
+ QIODevice();
+
+ explicit QIODevice(QObject *parent);
+
+ virtual ~QIODevice();
+
+ OpenMode openMode() const;
+
+ void setTextModeEnabled(bool enabled);
+ bool isTextModeEnabled() const;
+
+ bool isOpen() const;
+ bool isReadable() const;
+ bool isWritable() const;
+ virtual bool isSequential() const;
+
+ virtual bool open(OpenMode mode);
+ virtual void close();
+
+
+
+ virtual qint64 pos() const;
+ virtual qint64 size() const;
+ virtual bool seek(qint64 pos);
+ virtual bool atEnd() const;
+ virtual bool reset();
+
+ virtual qint64 bytesAvailable() const;
+ virtual qint64 bytesToWrite() const;
+
+ qint64 read(char *data, qint64 maxlen);
+ QByteArray read(qint64 maxlen);
+ QByteArray readAll();
+ qint64 readLine(char *data, qint64 maxlen);
+ QByteArray readLine(qint64 maxlen = 0);
+ virtual bool canReadLine() const;
+
+ qint64 write(const char *data, qint64 len);
+ qint64 write(const char *data);
+ inline qint64 write(const QByteArray &data)
+ { return write(data.constData(), data.size()); }
+
+ qint64 peek(char *data, qint64 maxlen);
+ QByteArray peek(qint64 maxlen);
+
+ virtual bool waitForReadyRead(int msecs);
+ virtual bool waitForBytesWritten(int msecs);
+
+ void ungetChar(char c);
+ bool putChar(char c);
+ bool getChar(char *c);
+
+ QString errorString() const;
+
+
+protected:
+ void readyRead();
+ void bytesWritten(qint64 bytes);
+ void aboutToClose();
+ void readChannelFinished();
+
+
+protected:
+
+
+
+ QIODevice(QIODevicePrivate &dd, QObject *parent = 0);
+
+ virtual qint64 readData(char *data, qint64 maxlen) = 0;
+ virtual qint64 readLineData(char *data, qint64 maxlen);
+ virtual qint64 writeData(const char *data, qint64 len) = 0;
+
+ void setOpenMode(OpenMode openMode);
+
+ void setErrorString(const QString &errorString);
+
+
+
+
+
+private:
+ inline QIODevicePrivate* d_func() { return reinterpret_cast<QIODevicePrivate *>(d_ptr); } inline const QIODevicePrivate* d_func() const { return reinterpret_cast<const QIODevicePrivate *>(d_ptr); } friend class QIODevicePrivate;
+ QIODevice(const QIODevice &); QIODevice &operator=(const QIODevice &);
+# 203 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qiodevice.h"
+};
+
+inline QFlags<QIODevice::OpenMode::enum_type> operator|(QIODevice::OpenMode::enum_type f1, QIODevice::OpenMode::enum_type f2) { return QFlags<QIODevice::OpenMode::enum_type>(f1) | f2; } inline QFlags<QIODevice::OpenMode::enum_type> operator|(QIODevice::OpenMode::enum_type f1, QFlags<QIODevice::OpenMode::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QIODevice::OpenMode::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+# 245 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qiodevice.h"
+class QDebug;
+__attribute__((visibility("default"))) QDebug operator<<(QDebug debug, QIODevice::OpenMode modes);
+
+
+
+
+
+# 1 "../../include/QtCore/qiodevice.h" 2
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdatastream.h" 2
+# 1 "../../include/QtCore/qglobal.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdatastream.h" 2
+
+
+
+
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QByteArray;
+class QIODevice;
+
+template <typename T> class QList;
+template <typename T> class QLinkedList;
+template <typename T> class QVector;
+template <typename T> class QSet;
+template <class Key, class T> class QHash;
+template <class Key, class T> class QMap;
+
+class QDataStreamPrivate;
+
+
+class __attribute__((visibility("default"))) QDataStream
+{
+public:
+ enum Version {
+ Qt_1_0 = 1,
+ Qt_2_0 = 2,
+ Qt_2_1 = 3,
+ Qt_3_0 = 4,
+ Qt_3_1 = 5,
+ Qt_3_3 = 6,
+ Qt_4_0 = 7,
+ Qt_4_1 = Qt_4_0,
+ Qt_4_2 = 8,
+ Qt_4_3 = 9,
+ Qt_4_4 = 10,
+ Qt_4_5 = 11
+
+
+
+
+ };
+
+ enum ByteOrder {
+ BigEndian = QSysInfo::BigEndian,
+ LittleEndian = QSysInfo::LittleEndian
+ };
+
+ enum Status {
+ Ok,
+ ReadPastEnd,
+ ReadCorruptData
+ };
+
+ QDataStream();
+ explicit QDataStream(QIODevice *);
+
+
+
+ QDataStream(QByteArray *, QIODevice::OpenMode flags);
+ QDataStream(const QByteArray &);
+ virtual ~QDataStream();
+
+ QIODevice *device() const;
+ void setDevice(QIODevice *);
+ void unsetDevice();
+
+ bool atEnd() const;
+
+
+
+
+ Status status() const;
+ void setStatus(Status status);
+ void resetStatus();
+
+ ByteOrder byteOrder() const;
+ void setByteOrder(ByteOrder);
+
+ int version() const;
+ void setVersion(int);
+
+ QDataStream &operator>>(qint8 &i);
+ QDataStream &operator>>(quint8 &i);
+ QDataStream &operator>>(qint16 &i);
+ QDataStream &operator>>(quint16 &i);
+ QDataStream &operator>>(qint32 &i);
+ QDataStream &operator>>(quint32 &i);
+ QDataStream &operator>>(qint64 &i);
+ QDataStream &operator>>(quint64 &i);
+
+ QDataStream &operator>>(bool &i);
+ QDataStream &operator>>(float &f);
+ QDataStream &operator>>(double &f);
+ QDataStream &operator>>(char *&str);
+
+ QDataStream &operator<<(qint8 i);
+ QDataStream &operator<<(quint8 i);
+ QDataStream &operator<<(qint16 i);
+ QDataStream &operator<<(quint16 i);
+ QDataStream &operator<<(qint32 i);
+ QDataStream &operator<<(quint32 i);
+ QDataStream &operator<<(qint64 i);
+ QDataStream &operator<<(quint64 i);
+ QDataStream &operator<<(bool i);
+ QDataStream &operator<<(float f);
+ QDataStream &operator<<(double f);
+ QDataStream &operator<<(const char *str);
+
+ QDataStream &readBytes(char *&, uint &len);
+ int readRawData(char *, int len);
+
+ QDataStream &writeBytes(const char *, uint len);
+ int writeRawData(const char *, int len);
+
+ int skipRawData(int len);
+# 176 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdatastream.h"
+private:
+ QDataStream(const QDataStream &); QDataStream &operator=(const QDataStream &);
+
+ QDataStreamPrivate *d;
+
+ QIODevice *dev;
+ bool owndev;
+ bool noswap;
+ ByteOrder byteorder;
+ int ver;
+ Status q_status;
+};
+
+
+
+
+
+
+inline QIODevice *QDataStream::device() const
+{ return dev; }
+
+inline QDataStream::ByteOrder QDataStream::byteOrder() const
+{ return byteorder; }
+
+inline int QDataStream::version() const
+{ return ver; }
+
+inline void QDataStream::setVersion(int v)
+{ ver = v; }
+
+inline QDataStream &QDataStream::operator>>(quint8 &i)
+{ return *this >> reinterpret_cast<qint8&>(i); }
+
+inline QDataStream &QDataStream::operator>>(quint16 &i)
+{ return *this >> reinterpret_cast<qint16&>(i); }
+
+inline QDataStream &QDataStream::operator>>(quint32 &i)
+{ return *this >> reinterpret_cast<qint32&>(i); }
+
+inline QDataStream &QDataStream::operator>>(quint64 &i)
+{ return *this >> reinterpret_cast<qint64&>(i); }
+
+inline QDataStream &QDataStream::operator<<(quint8 i)
+{ return *this << qint8(i); }
+
+inline QDataStream &QDataStream::operator<<(quint16 i)
+{ return *this << qint16(i); }
+
+inline QDataStream &QDataStream::operator<<(quint32 i)
+{ return *this << qint32(i); }
+
+inline QDataStream &QDataStream::operator<<(quint64 i)
+{ return *this << qint64(i); }
+
+template <typename T>
+QDataStream& operator>>(QDataStream& s, QList<T>& l)
+{
+ l.clear();
+ quint32 c;
+ s >> c;
+ for(quint32 i = 0; i < c; ++i)
+ {
+ T t;
+ s >> t;
+ l.append(t);
+ if (s.atEnd())
+ break;
+ }
+ return s;
+}
+
+template <typename T>
+QDataStream& operator<<(QDataStream& s, const QList<T>& l)
+{
+ s << quint32(l.size());
+ for (int i = 0; i < l.size(); ++i)
+ s << l.at(i);
+ return s;
+}
+
+template <typename T>
+QDataStream& operator>>(QDataStream& s, QLinkedList<T>& l)
+{
+ l.clear();
+ quint32 c;
+ s >> c;
+ for(quint32 i = 0; i < c; ++i)
+ {
+ T t;
+ s >> t;
+ l.append(t);
+ if (s.atEnd())
+ break;
+ }
+ return s;
+}
+
+template <typename T>
+QDataStream& operator<<(QDataStream& s, const QLinkedList<T>& l)
+{
+ s << quint32(l.size());
+ typename QLinkedList<T>::ConstIterator it = l.constBegin();
+ for(; it != l.constEnd(); ++it)
+ s << *it;
+ return s;
+}
+
+template<typename T>
+QDataStream& operator>>(QDataStream& s, QVector<T>& v)
+{
+ v.clear();
+ quint32 c;
+ s >> c;
+ v.resize(c);
+ for(quint32 i = 0; i < c; ++i) {
+ T t;
+ s >> t;
+ v[i] = t;
+ }
+ return s;
+}
+
+template<typename T>
+QDataStream& operator<<(QDataStream& s, const QVector<T>& v)
+{
+ s << quint32(v.size());
+ for (typename QVector<T>::const_iterator it = v.begin(); it != v.end(); ++it)
+ s << *it;
+ return s;
+}
+
+template <typename T>
+QDataStream &operator>>(QDataStream &in, QSet<T> &set)
+{
+ set.clear();
+ quint32 c;
+ in >> c;
+ for (quint32 i = 0; i < c; ++i) {
+ T t;
+ in >> t;
+ set << t;
+ if (in.atEnd())
+ break;
+ }
+ return in;
+}
+
+template <typename T>
+QDataStream& operator<<(QDataStream &out, const QSet<T> &set)
+{
+ out << quint32(set.size());
+ typename QSet<T>::const_iterator i = set.constBegin();
+ while (i != set.constEnd()) {
+ out << *i;
+ ++i;
+ }
+ return out;
+}
+
+template <class Key, class T>
+ QDataStream &operator>>(QDataStream &in, QHash<Key, T> &hash)
+{
+ QDataStream::Status oldStatus = in.status();
+ in.resetStatus();
+ hash.clear();
+
+ quint32 n;
+ in >> n;
+
+ for (quint32 i = 0; i < n; ++i) {
+ if (in.status() != QDataStream::Ok)
+ break;
+
+ Key k;
+ T t;
+ in >> k >> t;
+ hash.insertMulti(k, t);
+ }
+
+ if (in.status() != QDataStream::Ok)
+ hash.clear();
+ if (oldStatus != QDataStream::Ok)
+ in.setStatus(oldStatus);
+ return in;
+}
+
+template <class Key, class T>
+ QDataStream &operator<<(QDataStream &out, const QHash<Key, T>& hash)
+{
+ out << quint32(hash.size());
+ typename QHash<Key, T>::ConstIterator it = hash.end();
+ typename QHash<Key, T>::ConstIterator begin = hash.begin();
+ while (it != begin) {
+ --it;
+ out << it.key() << it.value();
+ }
+ return out;
+}
+
+
+
+
+template <class aKey, class aT>
+ QDataStream &operator>>(QDataStream &in, QMap<aKey, aT> &map)
+
+{
+ QDataStream::Status oldStatus = in.status();
+ in.resetStatus();
+ map.clear();
+
+ quint32 n;
+ in >> n;
+
+ map.detach();
+ map.setInsertInOrder(true);
+ for (quint32 i = 0; i < n; ++i) {
+ if (in.status() != QDataStream::Ok)
+ break;
+
+ aKey key;
+ aT value;
+ in >> key >> value;
+ map.insertMulti(key, value);
+ }
+ map.setInsertInOrder(false);
+ if (in.status() != QDataStream::Ok)
+ map.clear();
+ if (oldStatus != QDataStream::Ok)
+ in.setStatus(oldStatus);
+ return in;
+}
+
+template <class Key, class T>
+ QDataStream &operator<<(QDataStream &out, const QMap<Key, T> &map)
+{
+ out << quint32(map.size());
+ typename QMap<Key, T>::ConstIterator it = map.end();
+ typename QMap<Key, T>::ConstIterator begin = map.begin();
+ while (it != begin) {
+ --it;
+ out << it.key() << it.value();
+ }
+ return out;
+}
+
+
+
+
+
+
+# 1 "../../include/QtCore/qdatastream.h" 2
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qpair.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+template <class T1, class T2>
+struct QPair
+{
+ typedef T1 first_type;
+ typedef T2 second_type;
+
+ QPair() : first(T1()), second(T2()) {}
+ QPair(const T1 &t1, const T2 &t2) : first(t1), second(t2) {}
+
+ QPair<T1, T2> &operator=(const QPair<T1, T2> &other)
+ { first = other.first; second = other.second; return *this; }
+
+ T1 first;
+ T2 second;
+};
+
+template <class T1, class T2>
+inline bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
+{ return p1.first == p2.first && p1.second == p2.second; }
+
+template <class T1, class T2>
+inline bool operator!=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
+{ return !(p1 == p2); }
+
+template <class T1, class T2>
+inline bool operator<(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
+{
+ return p1.first < p2.first || (!(p2.first < p1.first) && p1.second < p2.second);
+}
+
+template <class T1, class T2>
+inline bool operator>(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
+{
+ return p2 < p1;
+}
+
+template <class T1, class T2>
+inline bool operator<=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
+{
+ return !(p2 < p1);
+}
+
+template <class T1, class T2>
+inline bool operator>=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
+{
+ return !(p1 < p2);
+}
+
+template <class T1, class T2>
+ QPair<T1, T2> qMakePair(const T1 &x, const T2 &y)
+{
+ return QPair<T1, T2>(x, y);
+}
+
+
+template <class T1, class T2>
+inline QDataStream& operator>>(QDataStream& s, QPair<T1, T2>& p)
+{
+ s >> p.first >> p.second;
+ return s;
+}
+
+template <class T1, class T2>
+inline QDataStream& operator<<(QDataStream& s, const QPair<T1, T2>& p)
+{
+ s << p.first << p.second;
+ return s;
+}
+
+
+
+
+
+# 1 "../../include/QtCore/qpair.h" 2
+# 50 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qhash.h" 2
+
+
+
+
+
+#undef QT_QHASH_DEBUG
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QBitArray;
+class QByteArray;
+class QString;
+class QStringRef;
+
+inline uint qHash(char key) { return uint(key); }
+inline uint qHash(uchar key) { return uint(key); }
+inline uint qHash(signed char key) { return uint(key); }
+inline uint qHash(ushort key) { return uint(key); }
+inline uint qHash(short key) { return uint(key); }
+inline uint qHash(uint key) { return key; }
+inline uint qHash(int key) { return uint(key); }
+inline uint qHash(ulong key)
+{
+ if (sizeof(ulong) > sizeof(uint)) {
+ return uint((key >> (8 * sizeof(uint) - 1)) ^ key);
+ } else {
+ return uint(key);
+ }
+}
+inline uint qHash(long key) { return qHash(ulong(key)); }
+inline uint qHash(quint64 key)
+{
+ if (sizeof(quint64) > sizeof(uint)) {
+ return uint((key >> (8 * sizeof(uint) - 1)) ^ key);
+ } else {
+ return uint(key);
+ }
+}
+inline uint qHash(qint64 key) { return qHash(quint64(key)); }
+inline uint qHash(QChar key) { return qHash(key.unicode()); }
+__attribute__((visibility("default"))) uint qHash(const QByteArray &key);
+__attribute__((visibility("default"))) uint qHash(const QString &key);
+__attribute__((visibility("default"))) uint qHash(const QStringRef &key);
+__attribute__((visibility("default"))) uint qHash(const QBitArray &key);
+
+
+
+
+
+template <class T> inline uint qHash(const T *key)
+{
+ if (sizeof(const T *) > sizeof(uint))
+ return qHash(reinterpret_cast<quint64>(key));
+ else
+ return uint(reinterpret_cast<ulong>(key));
+}
+
+
+
+
+template <typename T1, typename T2> inline uint qHash(const QPair<T1, T2> &key)
+{
+ uint h1 = qHash(key.first);
+ uint h2 = qHash(key.second);
+ return ((h1 << 16) | (h1 >> 16)) ^ h2;
+}
+
+struct __attribute__((visibility("default"))) QHashData
+{
+ struct Node {
+ Node *next;
+ uint h;
+ };
+
+ Node *fakeNext;
+ Node **buckets;
+ QBasicAtomicInt ref;
+ int size;
+ int nodeSize;
+ short userNumBits;
+ short numBits;
+ int numBuckets;
+ uint sharable : 1;
+
+ void *allocateNode();
+ void freeNode(void *node);
+ QHashData *detach_helper(void (*node_duplicate)(Node *, void *), int nodeSize);
+ void mightGrow();
+ bool willGrow();
+ void hasShrunk();
+ void rehash(int hint);
+ void destroyAndFree();
+ Node *firstNode();
+
+
+
+
+ static Node *nextNode(Node *node);
+ static Node *previousNode(Node *node);
+
+ static QHashData shared_null;
+};
+
+inline void QHashData::mightGrow()
+{
+ if (size >= numBuckets)
+ rehash(numBits + 1);
+}
+
+inline bool QHashData::willGrow()
+{
+ if (size >= numBuckets) {
+ rehash(numBits + 1);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+inline void QHashData::hasShrunk()
+{
+ if (size <= (numBuckets >> 3) && numBits > userNumBits)
+ rehash(qMax(int(numBits) - 2, int(userNumBits)));
+}
+
+inline QHashData::Node *QHashData::firstNode()
+{
+ Node *e = reinterpret_cast<Node *>(this);
+ Node **bucket = buckets;
+ int n = numBuckets;
+ while (n--) {
+ if (*bucket != e)
+ return *bucket;
+ ++bucket;
+ }
+ return e;
+}
+
+struct QHashDummyValue
+{
+};
+
+inline bool operator==(const QHashDummyValue & , const QHashDummyValue & )
+{
+ return true;
+}
+
+template <> class QTypeInfo<QHashDummyValue> { public: enum { isComplex = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QHashDummyValue)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QHashDummyValue"; } };
+
+template <class Key, class T>
+struct QHashDummyNode
+{
+ QHashDummyNode *next;
+ uint h;
+ Key key;
+
+ inline QHashDummyNode(const Key &key0) : key(key0) {}
+};
+
+template <class Key, class T>
+struct QHashNode
+{
+ QHashNode *next;
+ uint h;
+ Key key;
+ T value;
+
+ inline QHashNode(const Key &key0) : key(key0) {}
+ inline QHashNode(const Key &key0, const T &value0) : key(key0), value(value0) {}
+ inline bool same_key(uint h0, const Key &key0) { return h0 == h && key0 == key; }
+};
+
+
+#define Q_HASH_DECLARE_INT_NODES(key_type) template <class T> struct QHashDummyNode<key_type, T> { QHashDummyNode *next; union { uint h; key_type key; }; inline QHashDummyNode(key_type ) {} }; template <class T> struct QHashNode<key_type, T> { QHashNode *next; union { uint h; key_type key; }; T value; inline QHashNode(key_type ) {} inline QHashNode(key_type , const T &value0) : value(value0) {} inline bool same_key(uint h0, key_type) { return h0 == h; } }
+# 243 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qhash.h"
+template <class T> struct QHashDummyNode<short, T> { QHashDummyNode *next; union { uint h; short key; }; inline QHashDummyNode(short ) {} }; template <class T> struct QHashNode<short, T> { QHashNode *next; union { uint h; short key; }; T value; inline QHashNode(short ) {} inline QHashNode(short , const T &value0) : value(value0) {} inline bool same_key(uint h0, short) { return h0 == h; } };
+template <class T> struct QHashDummyNode<ushort, T> { QHashDummyNode *next; union { uint h; ushort key; }; inline QHashDummyNode(ushort ) {} }; template <class T> struct QHashNode<ushort, T> { QHashNode *next; union { uint h; ushort key; }; T value; inline QHashNode(ushort ) {} inline QHashNode(ushort , const T &value0) : value(value0) {} inline bool same_key(uint h0, ushort) { return h0 == h; } };
+
+template <class T> struct QHashDummyNode<int, T> { QHashDummyNode *next; union { uint h; int key; }; inline QHashDummyNode(int ) {} }; template <class T> struct QHashNode<int, T> { QHashNode *next; union { uint h; int key; }; T value; inline QHashNode(int ) {} inline QHashNode(int , const T &value0) : value(value0) {} inline bool same_key(uint h0, int) { return h0 == h; } };
+template <class T> struct QHashDummyNode<uint, T> { QHashDummyNode *next; union { uint h; uint key; }; inline QHashDummyNode(uint ) {} }; template <class T> struct QHashNode<uint, T> { QHashNode *next; union { uint h; uint key; }; T value; inline QHashNode(uint ) {} inline QHashNode(uint , const T &value0) : value(value0) {} inline bool same_key(uint h0, uint) { return h0 == h; } };
+#undef Q_HASH_DECLARE_INT_NODES
+
+
+template <class Key, class T>
+class QHash
+{
+ typedef QHashDummyNode<Key, T> DummyNode;
+ typedef QHashNode<Key, T> Node;
+
+ union {
+ QHashData *d;
+ QHashNode<Key, T> *e;
+ };
+
+ static inline Node *concrete(QHashData::Node *node) {
+ return reinterpret_cast<Node *>(node);
+ }
+
+public:
+ inline QHash() : d(&QHashData::shared_null) { d->ref.ref(); }
+ inline QHash(const QHash<Key, T> &other) : d(other.d) { d->ref.ref(); if (!d->sharable) detach(); }
+ inline ~QHash() { if (!d->ref.deref()) freeData(d); }
+
+ QHash<Key, T> &operator=(const QHash<Key, T> &other);
+
+ bool operator==(const QHash<Key, T> &other) const;
+ inline bool operator!=(const QHash<Key, T> &other) const { return !(*this == other); }
+
+ inline int size() const { return d->size; }
+
+ inline bool isEmpty() const { return d->size == 0; }
+
+ inline int capacity() const { return d->numBuckets; }
+ void reserve(int size);
+ inline void squeeze() { reserve(1); }
+
+ inline void detach() { if (d->ref != 1) detach_helper(); }
+ inline bool isDetached() const { return d->ref == 1; }
+ inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; }
+
+ void clear();
+
+ int remove(const Key &key);
+ T take(const Key &key);
+
+ bool contains(const Key &key) const;
+ const Key key(const T &value) const;
+ const Key key(const T &value, const Key &defaultKey) const;
+ const T value(const Key &key) const;
+ const T value(const Key &key, const T &defaultValue) const;
+ T &operator[](const Key &key);
+ const T operator[](const Key &key) const;
+
+ QList<Key> uniqueKeys() const;
+ QList<Key> keys() const;
+ QList<Key> keys(const T &value) const;
+ QList<T> values() const;
+ QList<T> values(const Key &key) const;
+ int count(const Key &key) const;
+
+ class const_iterator;
+
+ class iterator
+ {
+ friend class const_iterator;
+ QHashData::Node *i;
+
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef T *pointer;
+ typedef T &reference;
+
+
+ inline operator Node *() const { return concrete(i); }
+ inline iterator() : i(0) { }
+ explicit inline iterator(void *node) : i(reinterpret_cast<QHashData::Node *>(node)) { }
+
+ inline const Key &key() const { return concrete(i)->key; }
+ inline T &value() const { return concrete(i)->value; }
+ inline T &operator*() const { return concrete(i)->value; }
+ inline T *operator->() const { return &concrete(i)->value; }
+ inline bool operator==(const iterator &o) const { return i == o.i; }
+ inline bool operator!=(const iterator &o) const { return i != o.i; }
+
+ inline iterator &operator++() {
+ i = QHashData::nextNode(i);
+ return *this;
+ }
+ inline iterator operator++(int) {
+ iterator r = *this;
+ i = QHashData::nextNode(i);
+ return r;
+ }
+ inline iterator &operator--() {
+ i = QHashData::previousNode(i);
+ return *this;
+ }
+ inline iterator operator--(int) {
+ iterator r = *this;
+ i = QHashData::previousNode(i);
+ return r;
+ }
+ inline iterator operator+(int j) const
+ { iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; }
+ inline iterator operator-(int j) const { return operator+(-j); }
+ inline iterator &operator+=(int j) { return *this = *this + j; }
+ inline iterator &operator-=(int j) { return *this = *this - j; }
+
+
+
+
+
+ public:
+
+ inline bool operator==(const const_iterator &o) const
+ { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const
+ { return i != o.i; }
+
+ private:
+
+ inline operator bool() const { return false; }
+ };
+ friend class iterator;
+
+ class const_iterator
+ {
+ friend class iterator;
+ QHashData::Node *i;
+
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef const T *pointer;
+ typedef const T &reference;
+
+
+ inline operator Node *() const { return concrete(i); }
+ inline const_iterator() : i(0) { }
+ explicit inline const_iterator(void *node)
+ : i(reinterpret_cast<QHashData::Node *>(node)) { }
+
+
+
+ inline const_iterator(const iterator &o)
+
+ { i = o.i; }
+
+ inline const Key &key() const { return concrete(i)->key; }
+ inline const T &value() const { return concrete(i)->value; }
+ inline const T &operator*() const { return concrete(i)->value; }
+ inline const T *operator->() const { return &concrete(i)->value; }
+ inline bool operator==(const const_iterator &o) const { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const { return i != o.i; }
+
+ inline const_iterator &operator++() {
+ i = QHashData::nextNode(i);
+ return *this;
+ }
+ inline const_iterator operator++(int) {
+ const_iterator r = *this;
+ i = QHashData::nextNode(i);
+ return r;
+ }
+ inline const_iterator &operator--() {
+ i = QHashData::previousNode(i);
+ return *this;
+ }
+ inline const_iterator operator--(int) {
+ const_iterator r = *this;
+ i = QHashData::previousNode(i);
+ return r;
+ }
+ inline const_iterator operator+(int j) const
+ { const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; }
+ inline const_iterator operator-(int j) const { return operator+(-j); }
+ inline const_iterator &operator+=(int j) { return *this = *this + j; }
+ inline const_iterator &operator-=(int j) { return *this = *this - j; }
+# 437 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qhash.h"
+ private:
+
+ inline operator bool() const { return false; }
+ };
+ friend class const_iterator;
+
+
+ inline iterator begin() { detach(); return iterator(d->firstNode()); }
+ inline const_iterator begin() const { return const_iterator(d->firstNode()); }
+ inline const_iterator constBegin() const { return const_iterator(d->firstNode()); }
+ inline iterator end() { detach(); return iterator(e); }
+ inline const_iterator end() const { return const_iterator(e); }
+ inline const_iterator constEnd() const { return const_iterator(e); }
+ iterator erase(iterator it);
+
+
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ inline int count() const { return d->size; }
+ iterator find(const Key &key);
+ const_iterator find(const Key &key) const;
+ const_iterator constFind(const Key &key) const;
+ iterator insert(const Key &key, const T &value);
+ iterator insertMulti(const Key &key, const T &value);
+ QHash<Key, T> &unite(const QHash<Key, T> &other);
+
+
+ typedef T mapped_type;
+ typedef Key key_type;
+ typedef ptrdiff_t difference_type;
+ typedef int size_type;
+
+ inline bool empty() const { return isEmpty(); }
+
+
+
+
+
+
+private:
+ void detach_helper();
+ void freeData(QHashData *d);
+ Node **findNode(const Key &key, uint *hp = 0) const;
+ Node *createNode(uint h, const Key &key, const T &value, Node **nextNode);
+ void deleteNode(Node *node);
+
+ static void duplicateNode(QHashData::Node *originalNode, void *newNode);
+};
+
+template <class Key, class T>
+inline void QHash<Key, T>::deleteNode(Node *node)
+{
+
+
+
+
+
+ node->~Node();
+
+ d->freeNode(node);
+}
+
+template <class Key, class T>
+inline void QHash<Key, T>::duplicateNode(QHashData::Node *node, void *newNode)
+{
+ Node *concreteNode = concrete(node);
+ if (QTypeInfo<T>::isDummy) {
+ (void) new (newNode) DummyNode(concreteNode->key);
+ } else {
+ (void) new (newNode) Node(concreteNode->key, concreteNode->value);
+ }
+}
+
+template <class Key, class T>
+inline typename QHash<Key, T>::Node *
+QHash<Key, T>::createNode(uint ah, const Key &akey, const T &avalue, Node **anextNode)
+{
+ Node *node;
+
+ if (QTypeInfo<T>::isDummy) {
+ node = reinterpret_cast<Node *>(new (d->allocateNode()) DummyNode(akey));
+ } else {
+ node = new (d->allocateNode()) Node(akey, avalue);
+ }
+
+ node->h = ah;
+ node->next = *anextNode;
+ *anextNode = node;
+ ++d->size;
+ return node;
+}
+
+template <class Key, class T>
+inline QHash<Key, T> &QHash<Key, T>::unite(const QHash<Key, T> &other)
+{
+ QHash<Key, T> copy(other);
+ const_iterator it = copy.constEnd();
+ while (it != copy.constBegin()) {
+ --it;
+ insertMulti(it.key(), it.value());
+ }
+ return *this;
+}
+
+template <class Key, class T>
+ void QHash<Key, T>::freeData(QHashData *x)
+{
+ Node *e_for_x = reinterpret_cast<Node *>(x);
+ Node **bucket = reinterpret_cast<Node **>(x->buckets);
+ int n = x->numBuckets;
+ while (n--) {
+ Node *cur = *bucket++;
+ while (cur != e_for_x) {
+ Node *next = cur->next;
+ deleteNode(cur);
+ cur = next;
+ }
+ }
+ x->destroyAndFree();
+}
+
+template <class Key, class T>
+inline void QHash<Key, T>::clear()
+{
+ *this = QHash<Key,T>();
+}
+
+template <class Key, class T>
+ void QHash<Key, T>::detach_helper()
+{
+ QHashData *x = d->detach_helper(duplicateNode,
+ QTypeInfo<T>::isDummy ? sizeof(DummyNode) : sizeof(Node));
+ if (!d->ref.deref())
+ freeData(d);
+ d = x;
+}
+
+template <class Key, class T>
+inline QHash<Key, T> &QHash<Key, T>::operator=(const QHash<Key, T> &other)
+{
+ if (d != other.d) {
+ other.d->ref.ref();
+ if (!d->ref.deref())
+ freeData(d);
+ d = other.d;
+ if (!d->sharable)
+ detach_helper();
+ }
+ return *this;
+}
+
+template <class Key, class T>
+inline const T QHash<Key, T>::value(const Key &akey) const
+{
+ Node *node;
+ if (d->size == 0 || (node = *findNode(akey)) == e) {
+ return T();
+ } else {
+ return node->value;
+ }
+}
+
+template <class Key, class T>
+inline const T QHash<Key, T>::value(const Key &akey, const T &adefaultValue) const
+{
+ Node *node;
+ if (d->size == 0 || (node = *findNode(akey)) == e) {
+ return adefaultValue;
+ } else {
+ return node->value;
+ }
+}
+
+template <class Key, class T>
+ QList<Key> QHash<Key, T>::uniqueKeys() const
+{
+ QList<Key> res;
+ const_iterator i = begin();
+ if (i != end()) {
+ for (;;) {
+ const Key &aKey = i.key();
+ res.append(aKey);
+ do {
+ if (++i == end())
+ goto break_out_of_outer_loop;
+ } while (aKey == i.key());
+ }
+ }
+break_out_of_outer_loop:
+ return res;
+}
+
+template <class Key, class T>
+ QList<Key> QHash<Key, T>::keys() const
+{
+ QList<Key> res;
+ const_iterator i = begin();
+ while (i != end()) {
+ res.append(i.key());
+ ++i;
+ }
+ return res;
+}
+
+template <class Key, class T>
+ QList<Key> QHash<Key, T>::keys(const T &avalue) const
+{
+ QList<Key> res;
+ const_iterator i = begin();
+ while (i != end()) {
+ if (i.value() == avalue)
+ res.append(i.key());
+ ++i;
+ }
+ return res;
+}
+
+template <class Key, class T>
+ const Key QHash<Key, T>::key(const T &avalue) const
+{
+ return key(avalue, Key());
+}
+
+template <class Key, class T>
+ const Key QHash<Key, T>::key(const T &avalue, const Key &defaultValue) const
+{
+ const_iterator i = begin();
+ while (i != end()) {
+ if (i.value() == avalue)
+ return i.key();
+ ++i;
+ }
+
+ return defaultValue;
+}
+
+template <class Key, class T>
+ QList<T> QHash<Key, T>::values() const
+{
+ QList<T> res;
+ const_iterator i = begin();
+ while (i != end()) {
+ res.append(i.value());
+ ++i;
+ }
+ return res;
+}
+
+template <class Key, class T>
+ QList<T> QHash<Key, T>::values(const Key &akey) const
+{
+ QList<T> res;
+ Node *node = *findNode(akey);
+ if (node != e) {
+ do {
+ res.append(node->value);
+ } while ((node = node->next) != e && node->key == akey);
+ }
+ return res;
+}
+
+template <class Key, class T>
+ int QHash<Key, T>::count(const Key &akey) const
+{
+ int cnt = 0;
+ Node *node = *findNode(akey);
+ if (node != e) {
+ do {
+ ++cnt;
+ } while ((node = node->next) != e && node->key == akey);
+ }
+ return cnt;
+}
+
+template <class Key, class T>
+inline const T QHash<Key, T>::operator[](const Key &akey) const
+{
+ return value(akey);
+}
+
+template <class Key, class T>
+inline T &QHash<Key, T>::operator[](const Key &akey)
+{
+ detach();
+
+ uint h;
+ Node **node = findNode(akey, &h);
+ if (*node == e) {
+ if (d->willGrow())
+ node = findNode(akey, &h);
+ return createNode(h, akey, T(), node)->value;
+ }
+ return (*node)->value;
+}
+
+template <class Key, class T>
+inline typename QHash<Key, T>::iterator QHash<Key, T>::insert(const Key &akey,
+ const T &avalue)
+{
+ detach();
+
+ uint h;
+ Node **node = findNode(akey, &h);
+ if (*node == e) {
+ if (d->willGrow())
+ node = findNode(akey, &h);
+ return iterator(createNode(h, akey, avalue, node));
+ }
+
+ if (!QTypeInfo<T>::isDummy)
+ (*node)->value = avalue;
+ return iterator(*node);
+}
+
+template <class Key, class T>
+inline typename QHash<Key, T>::iterator QHash<Key, T>::insertMulti(const Key &akey,
+ const T &avalue)
+{
+ detach();
+ d->willGrow();
+
+ uint h;
+ Node **nextNode = findNode(akey, &h);
+ return iterator(createNode(h, akey, avalue, nextNode));
+}
+
+template <class Key, class T>
+ int QHash<Key, T>::remove(const Key &akey)
+{
+ detach();
+
+ int oldSize = d->size;
+ Node **node = findNode(akey);
+ if (*node != e) {
+ bool deleteNext = true;
+ do {
+ Node *next = (*node)->next;
+ deleteNext = (next != e && next->key == (*node)->key);
+ deleteNode(*node);
+ *node = next;
+ --d->size;
+ } while (deleteNext);
+ d->hasShrunk();
+ }
+ return oldSize - d->size;
+}
+
+template <class Key, class T>
+ T QHash<Key, T>::take(const Key &akey)
+{
+ detach();
+
+ Node **node = findNode(akey);
+ if (*node != e) {
+ T t = (*node)->value;
+ Node *next = (*node)->next;
+ deleteNode(*node);
+ *node = next;
+ --d->size;
+ d->hasShrunk();
+ return t;
+ }
+ return T();
+}
+
+template <class Key, class T>
+ typename QHash<Key, T>::iterator QHash<Key, T>::erase(iterator it)
+{
+ if (it == iterator(e))
+ return it;
+
+ iterator ret = it;
+ ++ret;
+
+ Node *node = it;
+ Node **node_ptr = reinterpret_cast<Node **>(&d->buckets[node->h % d->numBuckets]);
+ while (*node_ptr != node)
+ node_ptr = &(*node_ptr)->next;
+ *node_ptr = node->next;
+ deleteNode(node);
+ --d->size;
+ return ret;
+}
+
+template <class Key, class T>
+inline void QHash<Key, T>::reserve(int asize)
+{
+ detach();
+ d->rehash(-qMax(asize, 1));
+}
+
+template <class Key, class T>
+inline typename QHash<Key, T>::const_iterator QHash<Key, T>::find(const Key &akey) const
+{
+ return const_iterator(*findNode(akey));
+}
+
+template <class Key, class T>
+inline typename QHash<Key, T>::const_iterator QHash<Key, T>::constFind(const Key &akey) const
+{
+ return const_iterator(*findNode(akey));
+}
+
+template <class Key, class T>
+inline typename QHash<Key, T>::iterator QHash<Key, T>::find(const Key &akey)
+{
+ detach();
+ return iterator(*findNode(akey));
+}
+
+template <class Key, class T>
+inline bool QHash<Key, T>::contains(const Key &akey) const
+{
+ return *findNode(akey) != e;
+}
+
+template <class Key, class T>
+ typename QHash<Key, T>::Node **QHash<Key, T>::findNode(const Key &akey,
+ uint *ahp) const
+{
+ Node **node;
+ uint h = qHash(akey);
+
+ if (d->numBuckets) {
+ node = reinterpret_cast<Node **>(&d->buckets[h % d->numBuckets]);
+ qt_noop();
+ while (*node != e && !(*node)->same_key(h, akey))
+ node = &(*node)->next;
+ } else {
+ node = const_cast<Node **>(reinterpret_cast<const Node * const *>(&e));
+ }
+ if (ahp)
+ *ahp = h;
+ return node;
+}
+
+template <class Key, class T>
+ bool QHash<Key, T>::operator==(const QHash<Key, T> &other) const
+{
+ if (size() != other.size())
+ return false;
+ if (d == other.d)
+ return true;
+
+ const_iterator it = begin();
+
+ while (it != end()) {
+ const Key &akey = it.key();
+
+ const_iterator it2 = other.find(akey);
+ do {
+ if (it2 == other.end() || !(it2.key() == akey))
+ return false;
+ if (!QTypeInfo<T>::isDummy && !(it.value() == it2.value()))
+ return false;
+ ++it;
+ ++it2;
+ } while (it != end() && it.key() == akey);
+ }
+ return true;
+}
+
+template <class Key, class T>
+class QMultiHash : public QHash<Key, T>
+{
+public:
+ QMultiHash() {}
+ QMultiHash(const QHash<Key, T> &other) : QHash<Key, T>(other) {}
+
+ inline typename QHash<Key, T>::iterator replace(const Key &key, const T &value)
+ { return QHash<Key, T>::insert(key, value); }
+
+ inline typename QHash<Key, T>::iterator insert(const Key &key, const T &value)
+ { return QHash<Key, T>::insertMulti(key, value); }
+
+ inline QMultiHash &operator+=(const QMultiHash &other)
+ { unite(other); return *this; }
+ inline QMultiHash operator+(const QMultiHash &other) const
+ { QMultiHash result = *this; result += other; return result; }
+
+
+ using QHash<Key, T>::contains;
+ using QHash<Key, T>::remove;
+ using QHash<Key, T>::count;
+ using QHash<Key, T>::find;
+ using QHash<Key, T>::constFind;
+# 940 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qhash.h"
+ bool contains(const Key &key, const T &value) const;
+
+ int remove(const Key &key, const T &value);
+
+ int count(const Key &key, const T &value) const;
+
+ typename QHash<Key, T>::iterator find(const Key &key, const T &value) {
+ typename QHash<Key, T>::iterator i(find(key));
+ typename QHash<Key, T>::iterator end(this->end());
+ while (i != end && i.key() == key) {
+ if (i.value() == value)
+ return i;
+ ++i;
+ }
+ return end;
+ }
+ typename QHash<Key, T>::const_iterator find(const Key &key, const T &value) const {
+ typename QHash<Key, T>::const_iterator i(constFind(key));
+ typename QHash<Key, T>::const_iterator end(QHash<Key, T>::constEnd());
+ while (i != end && i.key() == key) {
+ if (i.value() == value)
+ return i;
+ ++i;
+ }
+ return end;
+ }
+ typename QHash<Key, T>::const_iterator constFind(const Key &key, const T &value) const
+ { return find(key, value); }
+private:
+ T &operator[](const Key &key);
+ const T operator[](const Key &key) const;
+};
+
+template <class Key, class T>
+inline bool QMultiHash<Key, T>::contains(const Key &key, const T &value) const
+{
+ return constFind(key, value) != QHash<Key, T>::constEnd();
+}
+
+template <class Key, class T>
+inline int QMultiHash<Key, T>::remove(const Key &key, const T &value)
+{
+ int n = 0;
+ typename QHash<Key, T>::iterator i(find(key));
+ typename QHash<Key, T>::iterator end(QHash<Key, T>::end());
+ while (i != end && i.key() == key) {
+ if (i.value() == value) {
+ i = erase(i);
+ ++n;
+ } else {
+ ++i;
+ }
+ }
+ return n;
+}
+
+template <class Key, class T>
+inline int QMultiHash<Key, T>::count(const Key &key, const T &value) const
+{
+ int n = 0;
+ typename QHash<Key, T>::const_iterator i(constFind(key));
+ typename QHash<Key, T>::const_iterator end(QHash<Key, T>::constEnd());
+ while (i != end && i.key() == key) {
+ if (i.value() == value)
+ ++n;
+ ++i;
+ }
+ return n;
+}
+
+template <class Key, class T> class QHashIterator { typedef typename QHash<Key,T>::const_iterator const_iterator; typedef const_iterator Item; QHash<Key,T> c; const_iterator i, n; inline bool item_exists() const { return n != c.constEnd(); } public: inline QHashIterator(const QHash<Key,T> &container) : c(container), i(c.constBegin()), n(c.constEnd()) {} inline QHashIterator &operator=(const QHash<Key,T> &container) { c = container; i = c.constBegin(); n = c.constEnd(); return *this; } inline void toFront() { i = c.constBegin(); n = c.constEnd(); } inline void toBack() { i = c.constEnd(); n = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { const_iterator p = i; return --p; } inline const T &value() const { qt_noop(); return *n; } inline const Key &key() const { qt_noop(); return n.key(); } inline bool findNext(const T &t) { while ((n = i) != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(n = --i) == t) return true; n = c.constEnd(); return false; } };
+template <class Key, class T> class QMutableHashIterator { typedef typename QHash<Key,T>::iterator iterator; typedef typename QHash<Key,T>::const_iterator const_iterator; typedef iterator Item; QHash<Key,T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableHashIterator(QHash<Key,T> &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableHashIterator() { c->setSharable(true); } inline QMutableHashIterator &operator=(QHash<Key,T> &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = c->end(); } inline bool hasNext() const { return const_iterator(i) != c->constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return const_iterator(i) != c->constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { iterator p = i; return --p; } inline void remove() { if (const_iterator(n) != c->constEnd()) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) { if (const_iterator(n) != c->constEnd()) *n = t; } inline T &value() { qt_noop(); return *n; } inline const T &value() const { qt_noop(); return *n; } inline const Key &key() const { qt_noop(); return n.key(); } inline bool findNext(const T &t) { while (const_iterator(n = i) != c->constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (const_iterator(i) != c->constBegin()) if (*(n = --i) == t) return true; n = c->end(); return false; } };
+
+
+
+
+# 1 "../../include/QtCore/qhash.h" 2
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdebug.h" 2
+# 1 "../../include/QtCore/qlist.h" 1
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdebug.h" 2
+# 1 "../../include/QtCore/qmap.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qmap.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qmap.h"
+#define QMAP_H
+
+# 1 "../../include/QtCore/qatomic.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qmap.h" 2
+# 1 "../../include/QtCore/qiterator.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qmap.h" 2
+# 1 "../../include/QtCore/qlist.h" 1
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qmap.h" 2
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/map" 1 3
+# 61 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/map" 3
+#define _GLIBCXX_MAP 1
+
+
+# 64 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/map" 3
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_tree.h" 1 3
+# 65 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_tree.h" 3
+#define _STL_TREE_H 1
+
+
+
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 90 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_tree.h" 3
+ enum _Rb_tree_color { _S_red = false, _S_black = true };
+
+ struct _Rb_tree_node_base
+ {
+ typedef _Rb_tree_node_base* _Base_ptr;
+ typedef const _Rb_tree_node_base* _Const_Base_ptr;
+
+ _Rb_tree_color _M_color;
+ _Base_ptr _M_parent;
+ _Base_ptr _M_left;
+ _Base_ptr _M_right;
+
+ static _Base_ptr
+ _S_minimum(_Base_ptr __x)
+ {
+ while (__x->_M_left != 0) __x = __x->_M_left;
+ return __x;
+ }
+
+ static _Const_Base_ptr
+ _S_minimum(_Const_Base_ptr __x)
+ {
+ while (__x->_M_left != 0) __x = __x->_M_left;
+ return __x;
+ }
+
+ static _Base_ptr
+ _S_maximum(_Base_ptr __x)
+ {
+ while (__x->_M_right != 0) __x = __x->_M_right;
+ return __x;
+ }
+
+ static _Const_Base_ptr
+ _S_maximum(_Const_Base_ptr __x)
+ {
+ while (__x->_M_right != 0) __x = __x->_M_right;
+ return __x;
+ }
+ };
+
+ template<typename _Val>
+ struct _Rb_tree_node : public _Rb_tree_node_base
+ {
+ typedef _Rb_tree_node<_Val>* _Link_type;
+ _Val _M_value_field;
+ };
+
+ _Rb_tree_node_base*
+ _Rb_tree_increment(_Rb_tree_node_base* __x);
+
+ const _Rb_tree_node_base*
+ _Rb_tree_increment(const _Rb_tree_node_base* __x);
+
+ _Rb_tree_node_base*
+ _Rb_tree_decrement(_Rb_tree_node_base* __x);
+
+ const _Rb_tree_node_base*
+ _Rb_tree_decrement(const _Rb_tree_node_base* __x);
+
+ template<typename _Tp>
+ struct _Rb_tree_iterator
+ {
+ typedef _Tp value_type;
+ typedef _Tp& reference;
+ typedef _Tp* pointer;
+
+ typedef bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+
+ typedef _Rb_tree_iterator<_Tp> _Self;
+ typedef _Rb_tree_node_base::_Base_ptr _Base_ptr;
+ typedef _Rb_tree_node<_Tp>* _Link_type;
+
+ _Rb_tree_iterator()
+ : _M_node() { }
+
+ explicit
+ _Rb_tree_iterator(_Link_type __x)
+ : _M_node(__x) { }
+
+ reference
+ operator*() const
+ { return static_cast<_Link_type>(_M_node)->_M_value_field; }
+
+ pointer
+ operator->() const
+ { return &static_cast<_Link_type>(_M_node)->_M_value_field; }
+
+ _Self&
+ operator++()
+ {
+ _M_node = _Rb_tree_increment(_M_node);
+ return *this;
+ }
+
+ _Self
+ operator++(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _Rb_tree_increment(_M_node);
+ return __tmp;
+ }
+
+ _Self&
+ operator--()
+ {
+ _M_node = _Rb_tree_decrement(_M_node);
+ return *this;
+ }
+
+ _Self
+ operator--(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _Rb_tree_decrement(_M_node);
+ return __tmp;
+ }
+
+ bool
+ operator==(const _Self& __x) const
+ { return _M_node == __x._M_node; }
+
+ bool
+ operator!=(const _Self& __x) const
+ { return _M_node != __x._M_node; }
+
+ _Base_ptr _M_node;
+ };
+
+ template<typename _Tp>
+ struct _Rb_tree_const_iterator
+ {
+ typedef _Tp value_type;
+ typedef const _Tp& reference;
+ typedef const _Tp* pointer;
+
+ typedef _Rb_tree_iterator<_Tp> iterator;
+
+ typedef bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+
+ typedef _Rb_tree_const_iterator<_Tp> _Self;
+ typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr;
+ typedef const _Rb_tree_node<_Tp>* _Link_type;
+
+ _Rb_tree_const_iterator()
+ : _M_node() { }
+
+ explicit
+ _Rb_tree_const_iterator(_Link_type __x)
+ : _M_node(__x) { }
+
+ _Rb_tree_const_iterator(const iterator& __it)
+ : _M_node(__it._M_node) { }
+
+ reference
+ operator*() const
+ { return static_cast<_Link_type>(_M_node)->_M_value_field; }
+
+ pointer
+ operator->() const
+ { return &static_cast<_Link_type>(_M_node)->_M_value_field; }
+
+ _Self&
+ operator++()
+ {
+ _M_node = _Rb_tree_increment(_M_node);
+ return *this;
+ }
+
+ _Self
+ operator++(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _Rb_tree_increment(_M_node);
+ return __tmp;
+ }
+
+ _Self&
+ operator--()
+ {
+ _M_node = _Rb_tree_decrement(_M_node);
+ return *this;
+ }
+
+ _Self
+ operator--(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _Rb_tree_decrement(_M_node);
+ return __tmp;
+ }
+
+ bool
+ operator==(const _Self& __x) const
+ { return _M_node == __x._M_node; }
+
+ bool
+ operator!=(const _Self& __x) const
+ { return _M_node != __x._M_node; }
+
+ _Base_ptr _M_node;
+ };
+
+ template<typename _Val>
+ inline bool
+ operator==(const _Rb_tree_iterator<_Val>& __x,
+ const _Rb_tree_const_iterator<_Val>& __y)
+ { return __x._M_node == __y._M_node; }
+
+ template<typename _Val>
+ inline bool
+ operator!=(const _Rb_tree_iterator<_Val>& __x,
+ const _Rb_tree_const_iterator<_Val>& __y)
+ { return __x._M_node != __y._M_node; }
+
+ void
+ _Rb_tree_insert_and_rebalance(const bool __insert_left,
+ _Rb_tree_node_base* __x,
+ _Rb_tree_node_base* __p,
+ _Rb_tree_node_base& __header);
+
+ _Rb_tree_node_base*
+ _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,
+ _Rb_tree_node_base& __header);
+
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc = allocator<_Val> >
+ class _Rb_tree
+ {
+ typedef typename _Alloc::template rebind<_Rb_tree_node<_Val> >::other
+ _Node_allocator;
+
+ protected:
+ typedef _Rb_tree_node_base* _Base_ptr;
+ typedef const _Rb_tree_node_base* _Const_Base_ptr;
+
+ public:
+ typedef _Key key_type;
+ typedef _Val value_type;
+ typedef value_type* pointer;
+ typedef const value_type* const_pointer;
+ typedef value_type& reference;
+ typedef const value_type& const_reference;
+ typedef _Rb_tree_node<_Val>* _Link_type;
+ typedef const _Rb_tree_node<_Val>* _Const_Link_type;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Alloc allocator_type;
+
+ _Node_allocator&
+ _M_get_Node_allocator()
+ { return *static_cast<_Node_allocator*>(&this->_M_impl); }
+
+ const _Node_allocator&
+ _M_get_Node_allocator() const
+ { return *static_cast<const _Node_allocator*>(&this->_M_impl); }
+
+ allocator_type
+ get_allocator() const
+ { return allocator_type(_M_get_Node_allocator()); }
+
+ protected:
+ _Link_type
+ _M_get_node()
+ { return _M_impl._Node_allocator::allocate(1); }
+
+ void
+ _M_put_node(_Link_type __p)
+ { _M_impl._Node_allocator::deallocate(__p, 1); }
+
+ _Link_type
+ _M_create_node(const value_type& __x)
+ {
+ _Link_type __tmp = _M_get_node();
+ try
+ { get_allocator().construct(&__tmp->_M_value_field, __x); }
+ catch(...)
+ {
+ _M_put_node(__tmp);
+ throw;
+ }
+ return __tmp;
+ }
+
+ _Link_type
+ _M_clone_node(_Const_Link_type __x)
+ {
+ _Link_type __tmp = _M_create_node(__x->_M_value_field);
+ __tmp->_M_color = __x->_M_color;
+ __tmp->_M_left = 0;
+ __tmp->_M_right = 0;
+ return __tmp;
+ }
+
+ void
+ _M_destroy_node(_Link_type __p)
+ {
+ get_allocator().destroy(&__p->_M_value_field);
+ _M_put_node(__p);
+ }
+
+ protected:
+ template<typename _Key_compare,
+ bool _Is_pod_comparator = __is_pod(_Key_compare)>
+ struct _Rb_tree_impl : public _Node_allocator
+ {
+ _Key_compare _M_key_compare;
+ _Rb_tree_node_base _M_header;
+ size_type _M_node_count;
+
+ _Rb_tree_impl()
+ : _Node_allocator(), _M_key_compare(), _M_header(),
+ _M_node_count(0)
+ { _M_initialize(); }
+
+ _Rb_tree_impl(const _Key_compare& __comp, const _Node_allocator& __a)
+ : _Node_allocator(__a), _M_key_compare(__comp), _M_header(),
+ _M_node_count(0)
+ { _M_initialize(); }
+
+ private:
+ void
+ _M_initialize()
+ {
+ this->_M_header._M_color = _S_red;
+ this->_M_header._M_parent = 0;
+ this->_M_header._M_left = &this->_M_header;
+ this->_M_header._M_right = &this->_M_header;
+ }
+ };
+
+ _Rb_tree_impl<_Compare> _M_impl;
+
+ protected:
+ _Base_ptr&
+ _M_root()
+ { return this->_M_impl._M_header._M_parent; }
+
+ _Const_Base_ptr
+ _M_root() const
+ { return this->_M_impl._M_header._M_parent; }
+
+ _Base_ptr&
+ _M_leftmost()
+ { return this->_M_impl._M_header._M_left; }
+
+ _Const_Base_ptr
+ _M_leftmost() const
+ { return this->_M_impl._M_header._M_left; }
+
+ _Base_ptr&
+ _M_rightmost()
+ { return this->_M_impl._M_header._M_right; }
+
+ _Const_Base_ptr
+ _M_rightmost() const
+ { return this->_M_impl._M_header._M_right; }
+
+ _Link_type
+ _M_begin()
+ { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); }
+
+ _Const_Link_type
+ _M_begin() const
+ {
+ return static_cast<_Const_Link_type>
+ (this->_M_impl._M_header._M_parent);
+ }
+
+ _Link_type
+ _M_end()
+ { return static_cast<_Link_type>(&this->_M_impl._M_header); }
+
+ _Const_Link_type
+ _M_end() const
+ { return static_cast<_Const_Link_type>(&this->_M_impl._M_header); }
+
+ static const_reference
+ _S_value(_Const_Link_type __x)
+ { return __x->_M_value_field; }
+
+ static const _Key&
+ _S_key(_Const_Link_type __x)
+ { return _KeyOfValue()(_S_value(__x)); }
+
+ static _Link_type
+ _S_left(_Base_ptr __x)
+ { return static_cast<_Link_type>(__x->_M_left); }
+
+ static _Const_Link_type
+ _S_left(_Const_Base_ptr __x)
+ { return static_cast<_Const_Link_type>(__x->_M_left); }
+
+ static _Link_type
+ _S_right(_Base_ptr __x)
+ { return static_cast<_Link_type>(__x->_M_right); }
+
+ static _Const_Link_type
+ _S_right(_Const_Base_ptr __x)
+ { return static_cast<_Const_Link_type>(__x->_M_right); }
+
+ static const_reference
+ _S_value(_Const_Base_ptr __x)
+ { return static_cast<_Const_Link_type>(__x)->_M_value_field; }
+
+ static const _Key&
+ _S_key(_Const_Base_ptr __x)
+ { return _KeyOfValue()(_S_value(__x)); }
+
+ static _Base_ptr
+ _S_minimum(_Base_ptr __x)
+ { return _Rb_tree_node_base::_S_minimum(__x); }
+
+ static _Const_Base_ptr
+ _S_minimum(_Const_Base_ptr __x)
+ { return _Rb_tree_node_base::_S_minimum(__x); }
+
+ static _Base_ptr
+ _S_maximum(_Base_ptr __x)
+ { return _Rb_tree_node_base::_S_maximum(__x); }
+
+ static _Const_Base_ptr
+ _S_maximum(_Const_Base_ptr __x)
+ { return _Rb_tree_node_base::_S_maximum(__x); }
+
+ public:
+ typedef _Rb_tree_iterator<value_type> iterator;
+ typedef _Rb_tree_const_iterator<value_type> const_iterator;
+
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+
+ private:
+ iterator
+ _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __y,
+ const value_type& __v);
+
+
+
+ iterator
+ _M_insert_lower(_Base_ptr __x, _Base_ptr __y, const value_type& __v);
+
+ iterator
+ _M_insert_equal_lower(const value_type& __x);
+
+ _Link_type
+ _M_copy(_Const_Link_type __x, _Link_type __p);
+
+ void
+ _M_erase(_Link_type __x);
+
+ iterator
+ _M_lower_bound(_Link_type __x, _Link_type __y,
+ const _Key& __k);
+
+ const_iterator
+ _M_lower_bound(_Const_Link_type __x, _Const_Link_type __y,
+ const _Key& __k) const;
+
+ iterator
+ _M_upper_bound(_Link_type __x, _Link_type __y,
+ const _Key& __k);
+
+ const_iterator
+ _M_upper_bound(_Const_Link_type __x, _Const_Link_type __y,
+ const _Key& __k) const;
+
+ public:
+
+ _Rb_tree() { }
+
+ _Rb_tree(const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_impl(__comp, __a) { }
+
+ _Rb_tree(const _Rb_tree& __x)
+ : _M_impl(__x._M_impl._M_key_compare, __x._M_get_Node_allocator())
+ {
+ if (__x._M_root() != 0)
+ {
+ _M_root() = _M_copy(__x._M_begin(), _M_end());
+ _M_leftmost() = _S_minimum(_M_root());
+ _M_rightmost() = _S_maximum(_M_root());
+ _M_impl._M_node_count = __x._M_impl._M_node_count;
+ }
+ }
+
+
+
+
+
+ ~_Rb_tree()
+ { _M_erase(_M_begin()); }
+
+ _Rb_tree&
+ operator=(const _Rb_tree& __x);
+
+
+ _Compare
+ key_comp() const
+ { return _M_impl._M_key_compare; }
+
+ iterator
+ begin()
+ {
+ return iterator(static_cast<_Link_type>
+ (this->_M_impl._M_header._M_left));
+ }
+
+ const_iterator
+ begin() const
+ {
+ return const_iterator(static_cast<_Const_Link_type>
+ (this->_M_impl._M_header._M_left));
+ }
+
+ iterator
+ end()
+ { return iterator(static_cast<_Link_type>(&this->_M_impl._M_header)); }
+
+ const_iterator
+ end() const
+ {
+ return const_iterator(static_cast<_Const_Link_type>
+ (&this->_M_impl._M_header));
+ }
+
+ reverse_iterator
+ rbegin()
+ { return reverse_iterator(end()); }
+
+ const_reverse_iterator
+ rbegin() const
+ { return const_reverse_iterator(end()); }
+
+ reverse_iterator
+ rend()
+ { return reverse_iterator(begin()); }
+
+ const_reverse_iterator
+ rend() const
+ { return const_reverse_iterator(begin()); }
+
+ bool
+ empty() const
+ { return _M_impl._M_node_count == 0; }
+
+ size_type
+ size() const
+ { return _M_impl._M_node_count; }
+
+ size_type
+ max_size() const
+ { return get_allocator().max_size(); }
+
+ void
+
+
+
+ swap(_Rb_tree& __t);
+
+
+
+ pair<iterator, bool>
+ _M_insert_unique(const value_type& __x);
+
+ iterator
+ _M_insert_equal(const value_type& __x);
+
+ iterator
+ _M_insert_unique_(const_iterator __position, const value_type& __x);
+
+ iterator
+ _M_insert_equal_(const_iterator __position, const value_type& __x);
+
+ template<typename _InputIterator>
+ void
+ _M_insert_unique(_InputIterator __first, _InputIterator __last);
+
+ template<typename _InputIterator>
+ void
+ _M_insert_equal(_InputIterator __first, _InputIterator __last);
+
+ void
+ erase(iterator __position);
+
+ void
+ erase(const_iterator __position);
+
+ size_type
+ erase(const key_type& __x);
+
+ void
+ erase(iterator __first, iterator __last);
+
+ void
+ erase(const_iterator __first, const_iterator __last);
+
+ void
+ erase(const key_type* __first, const key_type* __last);
+
+ void
+ clear()
+ {
+ _M_erase(_M_begin());
+ _M_leftmost() = _M_end();
+ _M_root() = 0;
+ _M_rightmost() = _M_end();
+ _M_impl._M_node_count = 0;
+ }
+
+
+ iterator
+ find(const key_type& __k);
+
+ const_iterator
+ find(const key_type& __k) const;
+
+ size_type
+ count(const key_type& __k) const;
+
+ iterator
+ lower_bound(const key_type& __k)
+ { return _M_lower_bound(_M_begin(), _M_end(), __k); }
+
+ const_iterator
+ lower_bound(const key_type& __k) const
+ { return _M_lower_bound(_M_begin(), _M_end(), __k); }
+
+ iterator
+ upper_bound(const key_type& __k)
+ { return _M_upper_bound(_M_begin(), _M_end(), __k); }
+
+ const_iterator
+ upper_bound(const key_type& __k) const
+ { return _M_upper_bound(_M_begin(), _M_end(), __k); }
+
+ pair<iterator, iterator>
+ equal_range(const key_type& __k);
+
+ pair<const_iterator, const_iterator>
+ equal_range(const key_type& __k) const;
+
+
+ bool
+ __rb_verify() const;
+ };
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline bool
+ operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ {
+ return __x.size() == __y.size()
+ && std::equal(__x.begin(), __x.end(), __y.begin());
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline bool
+ operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ {
+ return std::lexicographical_compare(__x.begin(), __x.end(),
+ __y.begin(), __y.end());
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline bool
+ operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ { return !(__x == __y); }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline bool
+ operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ { return __y < __x; }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline bool
+ operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ { return !(__y < __x); }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline bool
+ operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ { return !(__x < __y); }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline void
+ swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ { __x.swap(__y); }
+# 820 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_tree.h" 3
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ operator=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x)
+ {
+ if (this != &__x)
+ {
+
+ clear();
+ _M_impl._M_key_compare = __x._M_impl._M_key_compare;
+ if (__x._M_root() != 0)
+ {
+ _M_root() = _M_copy(__x._M_begin(), _M_end());
+ _M_leftmost() = _S_minimum(_M_root());
+ _M_rightmost() = _S_maximum(_M_root());
+ _M_impl._M_node_count = __x._M_impl._M_node_count;
+ }
+ }
+ return *this;
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __p, const _Val& __v)
+ {
+ bool __insert_left = (__x != 0 || __p == _M_end()
+ || _M_impl._M_key_compare(_KeyOfValue()(__v),
+ _S_key(__p)));
+
+ _Link_type __z = _M_create_node(__v);
+
+ _Rb_tree_insert_and_rebalance(__insert_left, __z,
+ const_cast<_Base_ptr>(__p),
+ this->_M_impl._M_header);
+ ++_M_impl._M_node_count;
+ return iterator(__z);
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_lower(_Base_ptr __x, _Base_ptr __p, const _Val& __v)
+ {
+ bool __insert_left = (__x != 0 || __p == _M_end()
+ || !_M_impl._M_key_compare(_S_key(__p),
+ _KeyOfValue()(__v)));
+
+ _Link_type __z = _M_create_node(__v);
+
+ _Rb_tree_insert_and_rebalance(__insert_left, __z, __p,
+ this->_M_impl._M_header);
+ ++_M_impl._M_node_count;
+ return iterator(__z);
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_equal_lower(const _Val& __v)
+ {
+ _Link_type __x = _M_begin();
+ _Link_type __y = _M_end();
+ while (__x != 0)
+ {
+ __y = __x;
+ __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ?
+ _S_left(__x) : _S_right(__x);
+ }
+ return _M_insert_lower(__x, __y, __v);
+ }
+
+ template<typename _Key, typename _Val, typename _KoV,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type
+ _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::
+ _M_copy(_Const_Link_type __x, _Link_type __p)
+ {
+
+ _Link_type __top = _M_clone_node(__x);
+ __top->_M_parent = __p;
+
+ try
+ {
+ if (__x->_M_right)
+ __top->_M_right = _M_copy(_S_right(__x), __top);
+ __p = __top;
+ __x = _S_left(__x);
+
+ while (__x != 0)
+ {
+ _Link_type __y = _M_clone_node(__x);
+ __p->_M_left = __y;
+ __y->_M_parent = __p;
+ if (__x->_M_right)
+ __y->_M_right = _M_copy(_S_right(__x), __y);
+ __p = __y;
+ __x = _S_left(__x);
+ }
+ }
+ catch(...)
+ {
+ _M_erase(__top);
+ throw;
+ }
+ return __top;
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_erase(_Link_type __x)
+ {
+
+ while (__x != 0)
+ {
+ _M_erase(_S_right(__x));
+ _Link_type __y = _S_left(__x);
+ _M_destroy_node(__x);
+ __x = __y;
+ }
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_lower_bound(_Link_type __x, _Link_type __y,
+ const _Key& __k)
+ {
+ while (__x != 0)
+ if (!_M_impl._M_key_compare(_S_key(__x), __k))
+ __y = __x, __x = _S_left(__x);
+ else
+ __x = _S_right(__x);
+ return iterator(__y);
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::const_iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_lower_bound(_Const_Link_type __x, _Const_Link_type __y,
+ const _Key& __k) const
+ {
+ while (__x != 0)
+ if (!_M_impl._M_key_compare(_S_key(__x), __k))
+ __y = __x, __x = _S_left(__x);
+ else
+ __x = _S_right(__x);
+ return const_iterator(__y);
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_upper_bound(_Link_type __x, _Link_type __y,
+ const _Key& __k)
+ {
+ while (__x != 0)
+ if (_M_impl._M_key_compare(__k, _S_key(__x)))
+ __y = __x, __x = _S_left(__x);
+ else
+ __x = _S_right(__x);
+ return iterator(__y);
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::const_iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_upper_bound(_Const_Link_type __x, _Const_Link_type __y,
+ const _Key& __k) const
+ {
+ while (__x != 0)
+ if (_M_impl._M_key_compare(__k, _S_key(__x)))
+ __y = __x, __x = _S_left(__x);
+ else
+ __x = _S_right(__x);
+ return const_iterator(__y);
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::iterator,
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::iterator>
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ equal_range(const _Key& __k)
+ {
+ _Link_type __x = _M_begin();
+ _Link_type __y = _M_end();
+ while (__x != 0)
+ {
+ if (_M_impl._M_key_compare(_S_key(__x), __k))
+ __x = _S_right(__x);
+ else if (_M_impl._M_key_compare(__k, _S_key(__x)))
+ __y = __x, __x = _S_left(__x);
+ else
+ {
+ _Link_type __xu(__x), __yu(__y);
+ __y = __x, __x = _S_left(__x);
+ __xu = _S_right(__xu);
+ return pair<iterator,
+ iterator>(_M_lower_bound(__x, __y, __k),
+ _M_upper_bound(__xu, __yu, __k));
+ }
+ }
+ return pair<iterator, iterator>(iterator(__y),
+ iterator(__y));
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::const_iterator,
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::const_iterator>
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ equal_range(const _Key& __k) const
+ {
+ _Const_Link_type __x = _M_begin();
+ _Const_Link_type __y = _M_end();
+ while (__x != 0)
+ {
+ if (_M_impl._M_key_compare(_S_key(__x), __k))
+ __x = _S_right(__x);
+ else if (_M_impl._M_key_compare(__k, _S_key(__x)))
+ __y = __x, __x = _S_left(__x);
+ else
+ {
+ _Const_Link_type __xu(__x), __yu(__y);
+ __y = __x, __x = _S_left(__x);
+ __xu = _S_right(__xu);
+ return pair<const_iterator,
+ const_iterator>(_M_lower_bound(__x, __y, __k),
+ _M_upper_bound(__xu, __yu, __k));
+ }
+ }
+ return pair<const_iterator, const_iterator>(const_iterator(__y),
+ const_iterator(__y));
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+
+
+
+ swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t)
+
+ {
+ if (_M_root() == 0)
+ {
+ if (__t._M_root() != 0)
+ {
+ _M_root() = __t._M_root();
+ _M_leftmost() = __t._M_leftmost();
+ _M_rightmost() = __t._M_rightmost();
+ _M_root()->_M_parent = _M_end();
+
+ __t._M_root() = 0;
+ __t._M_leftmost() = __t._M_end();
+ __t._M_rightmost() = __t._M_end();
+ }
+ }
+ else if (__t._M_root() == 0)
+ {
+ __t._M_root() = _M_root();
+ __t._M_leftmost() = _M_leftmost();
+ __t._M_rightmost() = _M_rightmost();
+ __t._M_root()->_M_parent = __t._M_end();
+
+ _M_root() = 0;
+ _M_leftmost() = _M_end();
+ _M_rightmost() = _M_end();
+ }
+ else
+ {
+ std::swap(_M_root(),__t._M_root());
+ std::swap(_M_leftmost(),__t._M_leftmost());
+ std::swap(_M_rightmost(),__t._M_rightmost());
+
+ _M_root()->_M_parent = _M_end();
+ __t._M_root()->_M_parent = __t._M_end();
+ }
+
+ std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count);
+ std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare);
+
+
+
+ std::__alloc_swap<_Node_allocator>::
+ _S_do_it(_M_get_Node_allocator(), __t._M_get_Node_allocator());
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::iterator, bool>
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_unique(const _Val& __v)
+ {
+ _Link_type __x = _M_begin();
+ _Link_type __y = _M_end();
+ bool __comp = true;
+ while (__x != 0)
+ {
+ __y = __x;
+ __comp = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x));
+ __x = __comp ? _S_left(__x) : _S_right(__x);
+ }
+ iterator __j = iterator(__y);
+ if (__comp)
+ {
+ if (__j == begin())
+ return pair<iterator, bool>(_M_insert_(__x, __y, __v), true);
+ else
+ --__j;
+ }
+ if (_M_impl._M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v)))
+ return pair<iterator, bool>(_M_insert_(__x, __y, __v), true);
+ return pair<iterator, bool>(__j, false);
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_equal(const _Val& __v)
+ {
+ _Link_type __x = _M_begin();
+ _Link_type __y = _M_end();
+ while (__x != 0)
+ {
+ __y = __x;
+ __x = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x)) ?
+ _S_left(__x) : _S_right(__x);
+ }
+ return _M_insert_(__x, __y, __v);
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_unique_(const_iterator __position, const _Val& __v)
+ {
+
+ if (__position._M_node == _M_end())
+ {
+ if (size() > 0
+ && _M_impl._M_key_compare(_S_key(_M_rightmost()),
+ _KeyOfValue()(__v)))
+ return _M_insert_(0, _M_rightmost(), __v);
+ else
+ return _M_insert_unique(__v).first;
+ }
+ else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
+ _S_key(__position._M_node)))
+ {
+
+ const_iterator __before = __position;
+ if (__position._M_node == _M_leftmost())
+ return _M_insert_(_M_leftmost(), _M_leftmost(), __v);
+ else if (_M_impl._M_key_compare(_S_key((--__before)._M_node),
+ _KeyOfValue()(__v)))
+ {
+ if (_S_right(__before._M_node) == 0)
+ return _M_insert_(0, __before._M_node, __v);
+ else
+ return _M_insert_(__position._M_node,
+ __position._M_node, __v);
+ }
+ else
+ return _M_insert_unique(__v).first;
+ }
+ else if (_M_impl._M_key_compare(_S_key(__position._M_node),
+ _KeyOfValue()(__v)))
+ {
+
+ const_iterator __after = __position;
+ if (__position._M_node == _M_rightmost())
+ return _M_insert_(0, _M_rightmost(), __v);
+ else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
+ _S_key((++__after)._M_node)))
+ {
+ if (_S_right(__position._M_node) == 0)
+ return _M_insert_(0, __position._M_node, __v);
+ else
+ return _M_insert_(__after._M_node, __after._M_node, __v);
+ }
+ else
+ return _M_insert_unique(__v).first;
+ }
+ else
+
+ return iterator(static_cast<_Link_type>
+ (const_cast<_Base_ptr>(__position._M_node)));
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_equal_(const_iterator __position, const _Val& __v)
+ {
+
+ if (__position._M_node == _M_end())
+ {
+ if (size() > 0
+ && !_M_impl._M_key_compare(_KeyOfValue()(__v),
+ _S_key(_M_rightmost())))
+ return _M_insert_(0, _M_rightmost(), __v);
+ else
+ return _M_insert_equal(__v);
+ }
+ else if (!_M_impl._M_key_compare(_S_key(__position._M_node),
+ _KeyOfValue()(__v)))
+ {
+
+ const_iterator __before = __position;
+ if (__position._M_node == _M_leftmost())
+ return _M_insert_(_M_leftmost(), _M_leftmost(), __v);
+ else if (!_M_impl._M_key_compare(_KeyOfValue()(__v),
+ _S_key((--__before)._M_node)))
+ {
+ if (_S_right(__before._M_node) == 0)
+ return _M_insert_(0, __before._M_node, __v);
+ else
+ return _M_insert_(__position._M_node,
+ __position._M_node, __v);
+ }
+ else
+ return _M_insert_equal(__v);
+ }
+ else
+ {
+
+ const_iterator __after = __position;
+ if (__position._M_node == _M_rightmost())
+ return _M_insert_(0, _M_rightmost(), __v);
+ else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node),
+ _KeyOfValue()(__v)))
+ {
+ if (_S_right(__position._M_node) == 0)
+ return _M_insert_(0, __position._M_node, __v);
+ else
+ return _M_insert_(__after._M_node, __after._M_node, __v);
+ }
+ else
+ return _M_insert_equal_lower(__v);
+ }
+ }
+
+ template<typename _Key, typename _Val, typename _KoV,
+ typename _Cmp, typename _Alloc>
+ template<class _II>
+ void
+ _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
+ _M_insert_unique(_II __first, _II __last)
+ {
+ for (; __first != __last; ++__first)
+ _M_insert_unique_(end(), *__first);
+ }
+
+ template<typename _Key, typename _Val, typename _KoV,
+ typename _Cmp, typename _Alloc>
+ template<class _II>
+ void
+ _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
+ _M_insert_equal(_II __first, _II __last)
+ {
+ for (; __first != __last; ++__first)
+ _M_insert_equal_(end(), *__first);
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ erase(iterator __position)
+ {
+ _Link_type __y =
+ static_cast<_Link_type>(_Rb_tree_rebalance_for_erase
+ (__position._M_node,
+ this->_M_impl._M_header));
+ _M_destroy_node(__y);
+ --_M_impl._M_node_count;
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ erase(const_iterator __position)
+ {
+ _Link_type __y =
+ static_cast<_Link_type>(_Rb_tree_rebalance_for_erase
+ (const_cast<_Base_ptr>(__position._M_node),
+ this->_M_impl._M_header));
+ _M_destroy_node(__y);
+ --_M_impl._M_node_count;
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ erase(const _Key& __x)
+ {
+ pair<iterator, iterator> __p = equal_range(__x);
+ const size_type __old_size = size();
+ erase(__p.first, __p.second);
+ return __old_size - size();
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ erase(iterator __first, iterator __last)
+ {
+ if (__first == begin() && __last == end())
+ clear();
+ else
+ while (__first != __last)
+ erase(__first++);
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ erase(const_iterator __first, const_iterator __last)
+ {
+ if (__first == begin() && __last == end())
+ clear();
+ else
+ while (__first != __last)
+ erase(__first++);
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ erase(const _Key* __first, const _Key* __last)
+ {
+ while (__first != __last)
+ erase(*__first++);
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ find(const _Key& __k)
+ {
+ iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k);
+ return (__j == end()
+ || _M_impl._M_key_compare(__k,
+ _S_key(__j._M_node))) ? end() : __j;
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::const_iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ find(const _Key& __k) const
+ {
+ const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k);
+ return (__j == end()
+ || _M_impl._M_key_compare(__k,
+ _S_key(__j._M_node))) ? end() : __j;
+ }
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ count(const _Key& __k) const
+ {
+ pair<const_iterator, const_iterator> __p = equal_range(__k);
+ const size_type __n = std::distance(__p.first, __p.second);
+ return __n;
+ }
+
+ unsigned int
+ _Rb_tree_black_count(const _Rb_tree_node_base* __node,
+ const _Rb_tree_node_base* __root);
+
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ bool
+ _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const
+ {
+ if (_M_impl._M_node_count == 0 || begin() == end())
+ return _M_impl._M_node_count == 0 && begin() == end()
+ && this->_M_impl._M_header._M_left == _M_end()
+ && this->_M_impl._M_header._M_right == _M_end();
+
+ unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root());
+ for (const_iterator __it = begin(); __it != end(); ++__it)
+ {
+ _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node);
+ _Const_Link_type __L = _S_left(__x);
+ _Const_Link_type __R = _S_right(__x);
+
+ if (__x->_M_color == _S_red)
+ if ((__L && __L->_M_color == _S_red)
+ || (__R && __R->_M_color == _S_red))
+ return false;
+
+ if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L)))
+ return false;
+ if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x)))
+ return false;
+
+ if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len)
+ return false;
+ }
+
+ if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root()))
+ return false;
+ if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root()))
+ return false;
+ return true;
+ }
+
+}
+# 66 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/map" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+#define _STL_MAP_H 1
+
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 89 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
+ typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
+ class map
+ {
+ public:
+ typedef _Key key_type;
+ typedef _Tp mapped_type;
+ typedef std::pair<const _Key, _Tp> value_type;
+ typedef _Compare key_compare;
+ typedef _Alloc allocator_type;
+
+ private:
+
+ typedef typename _Alloc::value_type _Alloc_value_type;
+
+
+
+
+
+ public:
+ class value_compare
+ : public std::binary_function<value_type, value_type, bool>
+ {
+ friend class map<_Key, _Tp, _Compare, _Alloc>;
+ protected:
+ _Compare comp;
+
+ value_compare(_Compare __c)
+ : comp(__c) { }
+
+ public:
+ bool operator()(const value_type& __x, const value_type& __y) const
+ { return comp(__x.first, __y.first); }
+ };
+
+ private:
+
+ typedef typename _Alloc::template rebind<value_type>::other
+ _Pair_alloc_type;
+
+ typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,
+ key_compare, _Pair_alloc_type> _Rep_type;
+
+
+ _Rep_type _M_t;
+
+ public:
+
+
+ typedef typename _Pair_alloc_type::pointer pointer;
+ typedef typename _Pair_alloc_type::const_pointer const_pointer;
+ typedef typename _Pair_alloc_type::reference reference;
+ typedef typename _Pair_alloc_type::const_reference const_reference;
+ typedef typename _Rep_type::iterator iterator;
+ typedef typename _Rep_type::const_iterator const_iterator;
+ typedef typename _Rep_type::size_type size_type;
+ typedef typename _Rep_type::difference_type difference_type;
+ typedef typename _Rep_type::reverse_iterator reverse_iterator;
+ typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
+
+
+
+
+
+
+
+ map()
+ : _M_t() { }
+
+
+
+
+
+
+ explicit
+ map(const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_t(__comp, __a) { }
+# 175 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ map(const map& __x)
+ : _M_t(__x._M_t) { }
+# 199 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ template<typename _InputIterator>
+ map(_InputIterator __first, _InputIterator __last)
+ : _M_t()
+ { _M_t._M_insert_unique(__first, __last); }
+# 215 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ template<typename _InputIterator>
+ map(_InputIterator __first, _InputIterator __last,
+ const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_t(__comp, __a)
+ { _M_t._M_insert_unique(__first, __last); }
+# 238 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ map&
+ operator=(const map& __x)
+ {
+ _M_t = __x._M_t;
+ return *this;
+ }
+# 264 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ allocator_type
+ get_allocator() const
+ { return _M_t.get_allocator(); }
+
+
+
+
+
+
+
+ iterator
+ begin()
+ { return _M_t.begin(); }
+
+
+
+
+
+
+ const_iterator
+ begin() const
+ { return _M_t.begin(); }
+
+
+
+
+
+
+ iterator
+ end()
+ { return _M_t.end(); }
+
+
+
+
+
+
+ const_iterator
+ end() const
+ { return _M_t.end(); }
+
+
+
+
+
+
+ reverse_iterator
+ rbegin()
+ { return _M_t.rbegin(); }
+
+
+
+
+
+
+ const_reverse_iterator
+ rbegin() const
+ { return _M_t.rbegin(); }
+
+
+
+
+
+
+ reverse_iterator
+ rend()
+ { return _M_t.rend(); }
+
+
+
+
+
+
+ const_reverse_iterator
+ rend() const
+ { return _M_t.rend(); }
+# 383 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ bool
+ empty() const
+ { return _M_t.empty(); }
+
+
+ size_type
+ size() const
+ { return _M_t.size(); }
+
+
+ size_type
+ max_size() const
+ { return _M_t.max_size(); }
+# 410 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ mapped_type&
+ operator[](const key_type& __k)
+ {
+
+
+
+ iterator __i = lower_bound(__k);
+
+ if (__i == end() || key_comp()(__k, (*__i).first))
+ __i = insert(__i, value_type(__k, mapped_type()));
+ return (*__i).second;
+ }
+# 432 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ mapped_type&
+ at(const key_type& __k)
+ {
+ iterator __i = lower_bound(__k);
+ if (__i == end() || key_comp()(__k, (*__i).first))
+ __throw_out_of_range(("map::at"));
+ return (*__i).second;
+ }
+
+ const mapped_type&
+ at(const key_type& __k) const
+ {
+ const_iterator __i = lower_bound(__k);
+ if (__i == end() || key_comp()(__k, (*__i).first))
+ __throw_out_of_range(("map::at"));
+ return (*__i).second;
+ }
+# 467 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ std::pair<iterator, bool>
+ insert(const value_type& __x)
+ { return _M_t._M_insert_unique(__x); }
+# 494 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ iterator
+ insert(iterator __position, const value_type& __x)
+ { return _M_t._M_insert_unique_(__position, __x); }
+# 506 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ template<typename _InputIterator>
+ void
+ insert(_InputIterator __first, _InputIterator __last)
+ { _M_t._M_insert_unique(__first, __last); }
+# 521 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ void
+ erase(iterator __position)
+ { _M_t.erase(__position); }
+# 536 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ size_type
+ erase(const key_type& __x)
+ { return _M_t.erase(__x); }
+# 551 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ void
+ erase(iterator __first, iterator __last)
+ { _M_t.erase(__first, __last); }
+# 566 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ void
+
+
+
+ swap(map& __x)
+
+ { _M_t.swap(__x._M_t); }
+
+
+
+
+
+
+
+ void
+ clear()
+ { _M_t.clear(); }
+
+
+
+
+
+
+ key_compare
+ key_comp() const
+ { return _M_t.key_comp(); }
+
+
+
+
+
+ value_compare
+ value_comp() const
+ { return value_compare(_M_t.key_comp()); }
+# 613 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ iterator
+ find(const key_type& __x)
+ { return _M_t.find(__x); }
+# 628 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ const_iterator
+ find(const key_type& __x) const
+ { return _M_t.find(__x); }
+# 640 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ size_type
+ count(const key_type& __x) const
+ { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
+# 655 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ iterator
+ lower_bound(const key_type& __x)
+ { return _M_t.lower_bound(__x); }
+# 670 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ const_iterator
+ lower_bound(const key_type& __x) const
+ { return _M_t.lower_bound(__x); }
+
+
+
+
+
+
+
+ iterator
+ upper_bound(const key_type& __x)
+ { return _M_t.upper_bound(__x); }
+
+
+
+
+
+
+
+ const_iterator
+ upper_bound(const key_type& __x) const
+ { return _M_t.upper_bound(__x); }
+# 709 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ std::pair<iterator, iterator>
+ equal_range(const key_type& __x)
+ { return _M_t.equal_range(__x); }
+# 728 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ std::pair<const_iterator, const_iterator>
+ equal_range(const key_type& __x) const
+ { return _M_t.equal_range(__x); }
+
+ template<typename _K1, typename _T1, typename _C1, typename _A1>
+ friend bool
+ operator==(const map<_K1, _T1, _C1, _A1>&,
+ const map<_K1, _T1, _C1, _A1>&);
+
+ template<typename _K1, typename _T1, typename _C1, typename _A1>
+ friend bool
+ operator<(const map<_K1, _T1, _C1, _A1>&,
+ const map<_K1, _T1, _C1, _A1>&);
+ };
+# 753 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+ const map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return __x._M_t == __y._M_t; }
+# 770 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+ const map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return __x._M_t < __y._M_t; }
+
+
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+ const map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return !(__x == __y); }
+
+
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+ const map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return __y < __x; }
+
+
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+ const map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return !(__y < __x); }
+
+
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+ const map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return !(__x < __y); }
+
+
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline void
+ swap(map<_Key, _Tp, _Compare, _Alloc>& __x,
+ map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { __x.swap(__y); }
+# 825 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_map.h" 3
+}
+# 67 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/map" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+#define _STL_MULTIMAP_H 1
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 88 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ template <typename _Key, typename _Tp,
+ typename _Compare = std::less<_Key>,
+ typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
+ class multimap
+ {
+ public:
+ typedef _Key key_type;
+ typedef _Tp mapped_type;
+ typedef std::pair<const _Key, _Tp> value_type;
+ typedef _Compare key_compare;
+ typedef _Alloc allocator_type;
+
+ private:
+
+ typedef typename _Alloc::value_type _Alloc_value_type;
+
+
+
+
+
+ public:
+ class value_compare
+ : public std::binary_function<value_type, value_type, bool>
+ {
+ friend class multimap<_Key, _Tp, _Compare, _Alloc>;
+ protected:
+ _Compare comp;
+
+ value_compare(_Compare __c)
+ : comp(__c) { }
+
+ public:
+ bool operator()(const value_type& __x, const value_type& __y) const
+ { return comp(__x.first, __y.first); }
+ };
+
+ private:
+
+ typedef typename _Alloc::template rebind<value_type>::other
+ _Pair_alloc_type;
+
+ typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,
+ key_compare, _Pair_alloc_type> _Rep_type;
+
+ _Rep_type _M_t;
+
+ public:
+
+
+ typedef typename _Pair_alloc_type::pointer pointer;
+ typedef typename _Pair_alloc_type::const_pointer const_pointer;
+ typedef typename _Pair_alloc_type::reference reference;
+ typedef typename _Pair_alloc_type::const_reference const_reference;
+ typedef typename _Rep_type::iterator iterator;
+ typedef typename _Rep_type::const_iterator const_iterator;
+ typedef typename _Rep_type::size_type size_type;
+ typedef typename _Rep_type::difference_type difference_type;
+ typedef typename _Rep_type::reverse_iterator reverse_iterator;
+ typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
+
+
+
+
+
+
+ multimap()
+ : _M_t() { }
+
+
+
+
+
+
+ explicit
+ multimap(const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_t(__comp, __a) { }
+# 173 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ multimap(const multimap& __x)
+ : _M_t(__x._M_t) { }
+# 197 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ template<typename _InputIterator>
+ multimap(_InputIterator __first, _InputIterator __last)
+ : _M_t()
+ { _M_t._M_insert_equal(__first, __last); }
+# 213 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ template<typename _InputIterator>
+ multimap(_InputIterator __first, _InputIterator __last,
+ const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_t(__comp, __a)
+ { _M_t._M_insert_equal(__first, __last); }
+# 236 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ multimap&
+ operator=(const multimap& __x)
+ {
+ _M_t = __x._M_t;
+ return *this;
+ }
+# 262 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ allocator_type
+ get_allocator() const
+ { return _M_t.get_allocator(); }
+
+
+
+
+
+
+
+ iterator
+ begin()
+ { return _M_t.begin(); }
+
+
+
+
+
+
+ const_iterator
+ begin() const
+ { return _M_t.begin(); }
+
+
+
+
+
+
+ iterator
+ end()
+ { return _M_t.end(); }
+
+
+
+
+
+
+ const_iterator
+ end() const
+ { return _M_t.end(); }
+
+
+
+
+
+
+ reverse_iterator
+ rbegin()
+ { return _M_t.rbegin(); }
+
+
+
+
+
+
+ const_reverse_iterator
+ rbegin() const
+ { return _M_t.rbegin(); }
+
+
+
+
+
+
+ reverse_iterator
+ rend()
+ { return _M_t.rend(); }
+
+
+
+
+
+
+ const_reverse_iterator
+ rend() const
+ { return _M_t.rend(); }
+# 379 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ bool
+ empty() const
+ { return _M_t.empty(); }
+
+
+ size_type
+ size() const
+ { return _M_t.size(); }
+
+
+ size_type
+ max_size() const
+ { return _M_t.max_size(); }
+# 406 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ iterator
+ insert(const value_type& __x)
+ { return _M_t._M_insert_equal(__x); }
+# 430 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ iterator
+ insert(iterator __position, const value_type& __x)
+ { return _M_t._M_insert_equal_(__position, __x); }
+# 443 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ template<typename _InputIterator>
+ void
+ insert(_InputIterator __first, _InputIterator __last)
+ { _M_t._M_insert_equal(__first, __last); }
+# 458 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ void
+ erase(iterator __position)
+ { _M_t.erase(__position); }
+# 473 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ size_type
+ erase(const key_type& __x)
+ { return _M_t.erase(__x); }
+# 488 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ void
+ erase(iterator __first, iterator __last)
+ { _M_t.erase(__first, __last); }
+# 503 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ void
+
+
+
+ swap(multimap& __x)
+
+ { _M_t.swap(__x._M_t); }
+
+
+
+
+
+
+
+ void
+ clear()
+ { _M_t.clear(); }
+
+
+
+
+
+
+ key_compare
+ key_comp() const
+ { return _M_t.key_comp(); }
+
+
+
+
+
+ value_compare
+ value_comp() const
+ { return value_compare(_M_t.key_comp()); }
+# 550 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ iterator
+ find(const key_type& __x)
+ { return _M_t.find(__x); }
+# 565 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ const_iterator
+ find(const key_type& __x) const
+ { return _M_t.find(__x); }
+
+
+
+
+
+
+ size_type
+ count(const key_type& __x) const
+ { return _M_t.count(__x); }
+# 589 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ iterator
+ lower_bound(const key_type& __x)
+ { return _M_t.lower_bound(__x); }
+# 604 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ const_iterator
+ lower_bound(const key_type& __x) const
+ { return _M_t.lower_bound(__x); }
+
+
+
+
+
+
+
+ iterator
+ upper_bound(const key_type& __x)
+ { return _M_t.upper_bound(__x); }
+
+
+
+
+
+
+
+ const_iterator
+ upper_bound(const key_type& __x) const
+ { return _M_t.upper_bound(__x); }
+# 641 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ std::pair<iterator, iterator>
+ equal_range(const key_type& __x)
+ { return _M_t.equal_range(__x); }
+# 658 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ std::pair<const_iterator, const_iterator>
+ equal_range(const key_type& __x) const
+ { return _M_t.equal_range(__x); }
+
+ template<typename _K1, typename _T1, typename _C1, typename _A1>
+ friend bool
+ operator==(const multimap<_K1, _T1, _C1, _A1>&,
+ const multimap<_K1, _T1, _C1, _A1>&);
+
+ template<typename _K1, typename _T1, typename _C1, typename _A1>
+ friend bool
+ operator<(const multimap<_K1, _T1, _C1, _A1>&,
+ const multimap<_K1, _T1, _C1, _A1>&);
+ };
+# 683 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return __x._M_t == __y._M_t; }
+# 700 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return __x._M_t < __y._M_t; }
+
+
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return !(__x == __y); }
+
+
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return __y < __x; }
+
+
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return !(__y < __x); }
+
+
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return !(__x < __y); }
+
+
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline void
+ swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { __x.swap(__y); }
+# 755 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_multimap.h" 3
+}
+# 68 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/map" 2 3
+# 51 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qmap.h" 2
+
+
+
+#undef QT_MAP_DEBUG
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+struct __attribute__((visibility("default"))) QMapData
+{
+ struct Node {
+ Node *backward;
+ Node *forward[1];
+ };
+ enum { LastLevel = 11, Sparseness = 3 };
+
+ QMapData *backward;
+ QMapData *forward[QMapData::LastLevel + 1];
+ QBasicAtomicInt ref;
+ int topLevel;
+ int size;
+ uint randomBits;
+ uint insertInOrder : 1;
+ uint sharable : 1;
+
+ static QMapData *createData();
+ void continueFreeData(int offset);
+ Node *node_create(Node *update[], int offset);
+ void node_delete(Node *update[], int offset, Node *node);
+
+
+
+
+
+ static QMapData shared_null;
+};
+# 102 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qmap.h"
+template <class Key> inline bool qMapLessThanKey(const Key &key1, const Key &key2)
+{
+ return key1 < key2;
+}
+
+
+template <class Ptr> inline bool qMapLessThanKey(Ptr *key1, Ptr *key2)
+{
+ qt_noop();
+ return quintptr(key1) < quintptr(key2);
+}
+
+template <class Ptr> inline bool qMapLessThanKey(const Ptr *key1, const Ptr *key2)
+{
+ qt_noop();
+ return quintptr(key1) < quintptr(key2);
+}
+
+
+template <class Key, class T>
+struct QMapNode {
+ Key key;
+ T value;
+ QMapData::Node *backward;
+ QMapData::Node *forward[1];
+};
+
+template <class Key, class T>
+struct QMapPayloadNode
+{
+ Key key;
+ T value;
+ QMapData::Node *backward;
+};
+
+template <class Key, class T>
+class QMap
+{
+ typedef QMapNode<Key, T> Node;
+ typedef QMapPayloadNode<Key, T> PayloadNode;
+
+ union {
+ QMapData *d;
+ QMapData::Node *e;
+ };
+
+ static inline int payload() { return sizeof(PayloadNode) - sizeof(QMapData::Node *); }
+ static inline Node *concrete(QMapData::Node *node) {
+ return reinterpret_cast<Node *>(reinterpret_cast<char *>(node) - payload());
+ }
+
+public:
+ inline QMap() : d(&QMapData::shared_null) { d->ref.ref(); }
+ inline QMap(const QMap<Key, T> &other) : d(other.d)
+ { d->ref.ref(); if (!d->sharable) detach(); }
+ inline ~QMap() { if (!d) return; if (!d->ref.deref()) freeData(d); }
+
+ QMap<Key, T> &operator=(const QMap<Key, T> &other);
+
+ explicit QMap(const typename std::map<Key, T> &other);
+ std::map<Key, T> toStdMap() const;
+
+
+ bool operator==(const QMap<Key, T> &other) const;
+ inline bool operator!=(const QMap<Key, T> &other) const { return !(*this == other); }
+
+ inline int size() const { return d->size; }
+
+ inline bool isEmpty() const { return d->size == 0; }
+
+ inline void detach() { if (d->ref != 1) detach_helper(); }
+ inline bool isDetached() const { return d->ref == 1; }
+ inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; }
+ inline void setInsertInOrder(bool ordered) { d->insertInOrder = ordered; }
+
+ void clear();
+
+ int remove(const Key &key);
+ T take(const Key &key);
+
+ bool contains(const Key &key) const;
+ const Key key(const T &value) const;
+ const Key key(const T &value, const Key &defaultKey) const;
+ const T value(const Key &key) const;
+ const T value(const Key &key, const T &defaultValue) const;
+ T &operator[](const Key &key);
+ const T operator[](const Key &key) const;
+
+ QList<Key> uniqueKeys() const;
+ QList<Key> keys() const;
+ QList<Key> keys(const T &value) const;
+ QList<T> values() const;
+ QList<T> values(const Key &key) const;
+ int count(const Key &key) const;
+
+ class const_iterator;
+
+ class iterator
+ {
+ friend class const_iterator;
+ QMapData::Node *i;
+
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef T *pointer;
+ typedef T &reference;
+
+
+ inline operator QMapData::Node *() const { return i; }
+ inline iterator() : i(0) { }
+ inline iterator(QMapData::Node *node) : i(node) { }
+
+ inline const Key &key() const { return concrete(i)->key; }
+ inline T &value() const { return concrete(i)->value; }
+
+
+
+ inline T &operator*() const { return concrete(i)->value; }
+ inline T *operator->() const { return &concrete(i)->value; }
+ inline bool operator==(const iterator &o) const { return i == o.i; }
+ inline bool operator!=(const iterator &o) const { return i != o.i; }
+
+ inline iterator &operator++() {
+ i = i->forward[0];
+ return *this;
+ }
+ inline iterator operator++(int) {
+ iterator r = *this;
+ i = i->forward[0];
+ return r;
+ }
+ inline iterator &operator--() {
+ i = i->backward;
+ return *this;
+ }
+ inline iterator operator--(int) {
+ iterator r = *this;
+ i = i->backward;
+ return r;
+ }
+ inline iterator operator+(int j) const
+ { iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; }
+ inline iterator operator-(int j) const { return operator+(-j); }
+ inline iterator &operator+=(int j) { return *this = *this + j; }
+ inline iterator &operator-=(int j) { return *this = *this - j; }
+
+
+
+
+
+ public:
+
+ inline bool operator==(const const_iterator &o) const
+ { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const
+ { return i != o.i; }
+
+ private:
+
+ inline operator bool() const { return false; }
+ };
+ friend class iterator;
+
+ class const_iterator
+ {
+ friend class iterator;
+ QMapData::Node *i;
+
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef const T *pointer;
+ typedef const T &reference;
+
+
+ inline operator QMapData::Node *() const { return i; }
+ inline const_iterator() : i(0) { }
+ inline const_iterator(QMapData::Node *node) : i(node) { }
+
+
+
+ inline const_iterator(const iterator &o)
+
+ { i = o.i; }
+
+ inline const Key &key() const { return concrete(i)->key; }
+ inline const T &value() const { return concrete(i)->value; }
+
+
+
+ inline const T &operator*() const { return concrete(i)->value; }
+ inline const T *operator->() const { return &concrete(i)->value; }
+ inline bool operator==(const const_iterator &o) const { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const { return i != o.i; }
+
+ inline const_iterator &operator++() {
+ i = i->forward[0];
+ return *this;
+ }
+ inline const_iterator operator++(int) {
+ const_iterator r = *this;
+ i = i->forward[0];
+ return r;
+ }
+ inline const_iterator &operator--() {
+ i = i->backward;
+ return *this;
+ }
+ inline const_iterator operator--(int) {
+ const_iterator r = *this;
+ i = i->backward;
+ return r;
+ }
+ inline const_iterator operator+(int j) const
+ { const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; }
+ inline const_iterator operator-(int j) const { return operator+(-j); }
+ inline const_iterator &operator+=(int j) { return *this = *this + j; }
+ inline const_iterator &operator-=(int j) { return *this = *this - j; }
+# 331 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qmap.h"
+ private:
+
+ inline operator bool() const { return false; }
+ };
+ friend class const_iterator;
+
+
+ inline iterator begin() { detach(); return iterator(e->forward[0]); }
+ inline const_iterator begin() const { return const_iterator(e->forward[0]); }
+ inline const_iterator constBegin() const { return const_iterator(e->forward[0]); }
+ inline iterator end() {
+ detach();
+ return iterator(e);
+ }
+ inline const_iterator end() const { return const_iterator(e); }
+ inline const_iterator constEnd() const { return const_iterator(e); }
+ iterator erase(iterator it);
+
+
+
+
+
+
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ inline int count() const { return d->size; }
+ iterator find(const Key &key);
+ const_iterator find(const Key &key) const;
+ const_iterator constFind(const Key &key) const;
+ iterator lowerBound(const Key &key);
+ const_iterator lowerBound(const Key &key) const;
+ iterator upperBound(const Key &key);
+ const_iterator upperBound(const Key &key) const;
+ iterator insert(const Key &key, const T &value);
+
+
+
+ iterator insertMulti(const Key &key, const T &value);
+
+
+
+ QMap<Key, T> &unite(const QMap<Key, T> &other);
+
+
+ typedef Key key_type;
+ typedef T mapped_type;
+ typedef ptrdiff_t difference_type;
+ typedef int size_type;
+ inline bool empty() const { return isEmpty(); }
+
+
+
+
+
+private:
+ void detach_helper();
+ void freeData(QMapData *d);
+ QMapData::Node *findNode(const Key &key) const;
+ QMapData::Node *mutableFindNode(QMapData::Node *update[], const Key &key) const;
+ QMapData::Node *node_create(QMapData *d, QMapData::Node *update[], const Key &key,
+ const T &value);
+};
+
+template <class Key, class T>
+inline QMap<Key, T> &QMap<Key, T>::operator=(const QMap<Key, T> &other)
+{
+ if (d != other.d) {
+ other.d->ref.ref();
+ if (!d->ref.deref())
+ freeData(d);
+ d = other.d;
+ if (!d->sharable)
+ detach_helper();
+ }
+ return *this;
+}
+
+template <class Key, class T>
+inline void QMap<Key, T>::clear()
+{
+ *this = QMap<Key, T>();
+}
+
+template <class Key, class T>
+inline typename QMapData::Node *
+QMap<Key, T>::node_create(QMapData *adt, QMapData::Node *aupdate[], const Key &akey, const T &avalue)
+{
+ QMapData::Node *abstractNode = adt->node_create(aupdate, payload());
+ Node *concreteNode = concrete(abstractNode);
+ new (&concreteNode->key) Key(akey);
+ new (&concreteNode->value) T(avalue);
+ return abstractNode;
+}
+
+template <class Key, class T>
+inline QMapData::Node *QMap<Key, T>::findNode(const Key &akey) const
+{
+ QMapData::Node *cur = e;
+ QMapData::Node *next = e;
+
+ for (int i = d->topLevel; i >= 0; i--) {
+ while ((next = cur->forward[i]) != e && qMapLessThanKey<Key>(concrete(next)->key, akey))
+ cur = next;
+ }
+
+ if (next != e && !qMapLessThanKey<Key>(akey, concrete(next)->key)) {
+ return next;
+ } else {
+ return e;
+ }
+}
+
+template <class Key, class T>
+inline const T QMap<Key, T>::value(const Key &akey) const
+{
+ QMapData::Node *node;
+ if (d->size == 0 || (node = findNode(akey)) == e) {
+ return T();
+ } else {
+ return concrete(node)->value;
+ }
+}
+
+template <class Key, class T>
+inline const T QMap<Key, T>::value(const Key &akey, const T &adefaultValue) const
+{
+ QMapData::Node *node;
+ if (d->size == 0 || (node = findNode(akey)) == e) {
+ return adefaultValue;
+ } else {
+ return concrete(node)->value;
+ }
+}
+
+template <class Key, class T>
+inline const T QMap<Key, T>::operator[](const Key &akey) const
+{
+ return value(akey);
+}
+
+template <class Key, class T>
+inline T &QMap<Key, T>::operator[](const Key &akey)
+{
+ detach();
+
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ QMapData::Node *node = mutableFindNode(update, akey);
+ if (node == e)
+ node = node_create(d, update, akey, T());
+ return concrete(node)->value;
+}
+
+template <class Key, class T>
+inline int QMap<Key, T>::count(const Key &akey) const
+{
+ int cnt = 0;
+ QMapData::Node *node = findNode(akey);
+ if (node != e) {
+ do {
+ ++cnt;
+ node = node->forward[0];
+ } while (node != e && !qMapLessThanKey<Key>(akey, concrete(node)->key));
+ }
+ return cnt;
+}
+
+template <class Key, class T>
+inline bool QMap<Key, T>::contains(const Key &akey) const
+{
+ return findNode(akey) != e;
+}
+
+template <class Key, class T>
+inline typename QMap<Key, T>::iterator QMap<Key, T>::insert(const Key &akey,
+ const T &avalue)
+{
+ detach();
+
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ QMapData::Node *node = mutableFindNode(update, akey);
+ if (node == e) {
+ node = node_create(d, update, akey, avalue);
+ } else {
+ concrete(node)->value = avalue;
+ }
+ return iterator(node);
+}
+# 539 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qmap.h"
+template <class Key, class T>
+inline typename QMap<Key, T>::iterator QMap<Key, T>::insertMulti(const Key &akey,
+ const T &avalue)
+{
+ detach();
+
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ mutableFindNode(update, akey);
+ return iterator(node_create(d, update, akey, avalue));
+}
+
+template <class Key, class T>
+inline typename QMap<Key, T>::const_iterator QMap<Key, T>::find(const Key &akey) const
+{
+ return const_iterator(findNode(akey));
+}
+
+template <class Key, class T>
+inline typename QMap<Key, T>::const_iterator QMap<Key, T>::constFind(const Key &akey) const
+{
+ return const_iterator(findNode(akey));
+}
+
+template <class Key, class T>
+inline typename QMap<Key, T>::iterator QMap<Key, T>::find(const Key &akey)
+{
+ detach();
+ return iterator(findNode(akey));
+}
+
+template <class Key, class T>
+inline QMap<Key, T> &QMap<Key, T>::unite(const QMap<Key, T> &other)
+{
+ QMap<Key, T> copy(other);
+ const_iterator it = copy.constEnd();
+ const const_iterator b = copy.constBegin();
+ while (it != b) {
+ --it;
+ insertMulti(it.key(), it.value());
+ }
+ return *this;
+}
+
+template <class Key, class T>
+ void QMap<Key, T>::freeData(QMapData *x)
+{
+ if (QTypeInfo<Key>::isComplex || QTypeInfo<T>::isComplex) {
+ QMapData::Node *y = reinterpret_cast<QMapData::Node *>(x);
+ QMapData::Node *cur = y;
+ QMapData::Node *next = cur->forward[0];
+ while (next != y) {
+ cur = next;
+ next = cur->forward[0];
+
+
+
+ Node *concreteNode = concrete(cur);
+ concreteNode->key.~Key();
+ concreteNode->value.~T();
+
+
+
+ }
+ }
+ x->continueFreeData(payload());
+}
+
+template <class Key, class T>
+ int QMap<Key, T>::remove(const Key &akey)
+{
+ detach();
+
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ QMapData::Node *cur = e;
+ QMapData::Node *next = e;
+ int oldSize = d->size;
+
+ for (int i = d->topLevel; i >= 0; i--) {
+ while ((next = cur->forward[i]) != e && qMapLessThanKey<Key>(concrete(next)->key, akey))
+ cur = next;
+ update[i] = cur;
+ }
+
+ if (next != e && !qMapLessThanKey<Key>(akey, concrete(next)->key)) {
+ bool deleteNext = true;
+ do {
+ cur = next;
+ next = cur->forward[0];
+ deleteNext = (next != e && !qMapLessThanKey<Key>(concrete(cur)->key, concrete(next)->key));
+ concrete(cur)->key.~Key();
+ concrete(cur)->value.~T();
+ d->node_delete(update, payload(), cur);
+ } while (deleteNext);
+ }
+ return oldSize - d->size;
+}
+
+template <class Key, class T>
+ T QMap<Key, T>::take(const Key &akey)
+{
+ detach();
+
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ QMapData::Node *cur = e;
+ QMapData::Node *next = e;
+
+ for (int i = d->topLevel; i >= 0; i--) {
+ while ((next = cur->forward[i]) != e && qMapLessThanKey<Key>(concrete(next)->key, akey))
+ cur = next;
+ update[i] = cur;
+ }
+
+ if (next != e && !qMapLessThanKey<Key>(akey, concrete(next)->key)) {
+ T t = concrete(next)->value;
+ concrete(next)->key.~Key();
+ concrete(next)->value.~T();
+ d->node_delete(update, payload(), next);
+ return t;
+ }
+ return T();
+}
+
+template <class Key, class T>
+ typename QMap<Key, T>::iterator QMap<Key, T>::erase(iterator it)
+{
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ QMapData::Node *cur = e;
+ QMapData::Node *next = e;
+
+ if (it == iterator(e))
+ return it;
+
+ for (int i = d->topLevel; i >= 0; i--) {
+ while ((next = cur->forward[i]) != e && qMapLessThanKey<Key>(concrete(next)->key, it.key()))
+ cur = next;
+ update[i] = cur;
+ }
+
+ while (next != e) {
+ cur = next;
+ next = cur->forward[0];
+ if (cur == it) {
+ concrete(cur)->key.~Key();
+ concrete(cur)->value.~T();
+ d->node_delete(update, payload(), cur);
+ return iterator(next);
+ }
+
+ for (int i = 0; i <= d->topLevel; ++i) {
+ if (update[i]->forward[i] != cur)
+ break;
+ update[i] = cur;
+ }
+ }
+ return end();
+}
+
+template <class Key, class T>
+ void QMap<Key, T>::detach_helper()
+{
+ union { QMapData *d; QMapData::Node *e; } x;
+ x.d = QMapData::createData();
+ if (d->size) {
+ x.d->insertInOrder = true;
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ QMapData::Node *cur = e->forward[0];
+ update[0] = x.e;
+ while (cur != e) {
+ Node *concreteNode = concrete(cur);
+ node_create(x.d, update, concreteNode->key, concreteNode->value);
+ cur = cur->forward[0];
+ }
+ x.d->insertInOrder = false;
+ }
+ if (!d->ref.deref())
+ freeData(d);
+ d = x.d;
+}
+
+template <class Key, class T>
+ QMapData::Node *QMap<Key, T>::mutableFindNode(QMapData::Node *aupdate[],
+ const Key &akey) const
+{
+ QMapData::Node *cur = e;
+ QMapData::Node *next = e;
+
+ for (int i = d->topLevel; i >= 0; i--) {
+ while ((next = cur->forward[i]) != e && qMapLessThanKey<Key>(concrete(next)->key, akey))
+ cur = next;
+ aupdate[i] = cur;
+ }
+ if (next != e && !qMapLessThanKey<Key>(akey, concrete(next)->key)) {
+ return next;
+ } else {
+ return e;
+ }
+}
+
+template <class Key, class T>
+ QList<Key> QMap<Key, T>::uniqueKeys() const
+{
+ QList<Key> res;
+ const_iterator i = begin();
+ if (i != end()) {
+ for (;;) {
+ const Key &aKey = i.key();
+ res.append(aKey);
+ do {
+ if (++i == end())
+ goto break_out_of_outer_loop;
+ } while (!(aKey < i.key()));
+ }
+ }
+break_out_of_outer_loop:
+ return res;
+}
+
+template <class Key, class T>
+ QList<Key> QMap<Key, T>::keys() const
+{
+ QList<Key> res;
+ const_iterator i = begin();
+ while (i != end()) {
+ res.append(i.key());
+ ++i;
+ }
+ return res;
+}
+
+template <class Key, class T>
+ QList<Key> QMap<Key, T>::keys(const T &avalue) const
+{
+ QList<Key> res;
+ const_iterator i = begin();
+ while (i != end()) {
+ if (i.value() == avalue)
+ res.append(i.key());
+ ++i;
+ }
+ return res;
+}
+
+template <class Key, class T>
+ const Key QMap<Key, T>::key(const T &avalue) const
+{
+ return key(avalue, Key());
+}
+
+template <class Key, class T>
+ const Key QMap<Key, T>::key(const T &avalue, const Key &defaultKey) const
+{
+ const_iterator i = begin();
+ while (i != end()) {
+ if (i.value() == avalue)
+ return i.key();
+ ++i;
+ }
+
+ return defaultKey;
+}
+
+template <class Key, class T>
+ QList<T> QMap<Key, T>::values() const
+{
+ QList<T> res;
+ const_iterator i = begin();
+ while (i != end()) {
+ res.append(i.value());
+ ++i;
+ }
+ return res;
+}
+
+template <class Key, class T>
+ QList<T> QMap<Key, T>::values(const Key &akey) const
+{
+ QList<T> res;
+ QMapData::Node *node = findNode(akey);
+ if (node != e) {
+ do {
+ res.append(concrete(node)->value);
+ node = node->forward[0];
+ } while (node != e && !qMapLessThanKey<Key>(akey, concrete(node)->key));
+ }
+ return res;
+}
+
+template <class Key, class T>
+inline typename QMap<Key, T>::const_iterator
+QMap<Key, T>::lowerBound(const Key &akey) const
+{
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ mutableFindNode(update, akey);
+ return const_iterator(update[0]->forward[0]);
+}
+
+template <class Key, class T>
+inline typename QMap<Key, T>::iterator QMap<Key, T>::lowerBound(const Key &akey)
+{
+ detach();
+ return static_cast<QMapData::Node *>(const_cast<const QMap *>(this)->lowerBound(akey));
+}
+
+template <class Key, class T>
+inline typename QMap<Key, T>::const_iterator
+QMap<Key, T>::upperBound(const Key &akey) const
+{
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ mutableFindNode(update, akey);
+ QMapData::Node *node = update[0]->forward[0];
+ while (node != e && !qMapLessThanKey<Key>(akey, concrete(node)->key))
+ node = node->forward[0];
+ return const_iterator(node);
+}
+
+template <class Key, class T>
+inline typename QMap<Key, T>::iterator QMap<Key, T>::upperBound(const Key &akey)
+{
+ detach();
+ return static_cast<QMapData::Node *>(const_cast<const QMap *>(this)->upperBound(akey));
+}
+
+template <class Key, class T>
+ bool QMap<Key, T>::operator==(const QMap<Key, T> &other) const
+{
+ if (size() != other.size())
+ return false;
+ if (d == other.d)
+ return true;
+
+ const_iterator it1 = begin();
+ const_iterator it2 = other.begin();
+
+ while (it1 != end()) {
+ if (!(it1.value() == it2.value()) || qMapLessThanKey(it1.key(), it2.key()) || qMapLessThanKey(it2.key(), it1.key()))
+ return false;
+ ++it2;
+ ++it1;
+ }
+ return true;
+}
+
+
+template <class Key, class T>
+ QMap<Key, T>::QMap(const std::map<Key, T> &other)
+{
+ d = QMapData::createData();
+ d->insertInOrder = true;
+ typename std::map<Key,T>::const_iterator it = other.end();
+ while (it != other.begin()) {
+ --it;
+ insert((*it).first, (*it).second);
+ }
+ d->insertInOrder = false;
+}
+
+template <class Key, class T>
+ std::map<Key, T> QMap<Key, T>::toStdMap() const
+{
+ std::map<Key, T> map;
+ const_iterator it = end();
+ while (it != begin()) {
+ --it;
+ map.insert(std::pair<Key, T>(it.key(), it.value()));
+ }
+ return map;
+}
+
+
+
+template <class Key, class T>
+class QMultiMap : public QMap<Key, T>
+{
+public:
+ QMultiMap() {}
+ QMultiMap(const QMap<Key, T> &other) : QMap<Key, T>(other) {}
+
+ inline typename QMap<Key, T>::iterator replace(const Key &key, const T &value)
+ { return QMap<Key, T>::insert(key, value); }
+ inline typename QMap<Key, T>::iterator insert(const Key &key, const T &value)
+ { return QMap<Key, T>::insertMulti(key, value); }
+
+ inline QMultiMap &operator+=(const QMultiMap &other)
+ { unite(other); return *this; }
+ inline QMultiMap operator+(const QMultiMap &other) const
+ { QMultiMap result = *this; result += other; return result; }
+
+
+ using QMap<Key, T>::contains;
+ using QMap<Key, T>::remove;
+ using QMap<Key, T>::count;
+ using QMap<Key, T>::find;
+ using QMap<Key, T>::constFind;
+# 949 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qmap.h"
+ bool contains(const Key &key, const T &value) const;
+
+ int remove(const Key &key, const T &value);
+
+ int count(const Key &key, const T &value) const;
+
+ typename QMap<Key, T>::iterator find(const Key &key, const T &value) {
+ typename QMap<Key, T>::iterator i(find(key));
+ typename QMap<Key, T>::iterator end(this->end());
+ while (i != end && !qMapLessThanKey<Key>(key, i.key())) {
+ if (i.value() == value)
+ return i;
+ ++i;
+ }
+ return end;
+ }
+ typename QMap<Key, T>::const_iterator find(const Key &key, const T &value) const {
+ typename QMap<Key, T>::const_iterator i(constFind(key));
+ typename QMap<Key, T>::const_iterator end(QMap<Key, T>::constEnd());
+ while (i != end && !qMapLessThanKey<Key>(key, i.key())) {
+ if (i.value() == value)
+ return i;
+ ++i;
+ }
+ return end;
+ }
+ typename QMap<Key, T>::const_iterator constFind(const Key &key, const T &value) const
+ { return find(key, value); }
+private:
+ T &operator[](const Key &key);
+ const T operator[](const Key &key) const;
+};
+
+template <class Key, class T>
+inline bool QMultiMap<Key, T>::contains(const Key &key, const T &value) const
+{
+ return constFind(key, value) != QMap<Key, T>::constEnd();
+}
+
+template <class Key, class T>
+inline int QMultiMap<Key, T>::remove(const Key &key, const T &value)
+{
+ int n = 0;
+ typename QMap<Key, T>::iterator i(find(key));
+ typename QMap<Key, T>::const_iterator end(QMap<Key, T>::constEnd());
+ while (i != end && !qMapLessThanKey<Key>(key, i.key())) {
+ if (i.value() == value) {
+ i = erase(i);
+ ++n;
+ } else {
+ ++i;
+ }
+ }
+ return n;
+}
+
+template <class Key, class T>
+inline int QMultiMap<Key, T>::count(const Key &key, const T &value) const
+{
+ int n = 0;
+ typename QMap<Key, T>::const_iterator i(constFind(key));
+ typename QMap<Key, T>::const_iterator end(QMap<Key, T>::constEnd());
+ while (i != end && !qMapLessThanKey<Key>(key, i.key())) {
+ if (i.value() == value)
+ ++n;
+ ++i;
+ }
+ return n;
+}
+
+template <class Key, class T> class QMapIterator { typedef typename QMap<Key,T>::const_iterator const_iterator; typedef const_iterator Item; QMap<Key,T> c; const_iterator i, n; inline bool item_exists() const { return n != c.constEnd(); } public: inline QMapIterator(const QMap<Key,T> &container) : c(container), i(c.constBegin()), n(c.constEnd()) {} inline QMapIterator &operator=(const QMap<Key,T> &container) { c = container; i = c.constBegin(); n = c.constEnd(); return *this; } inline void toFront() { i = c.constBegin(); n = c.constEnd(); } inline void toBack() { i = c.constEnd(); n = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { const_iterator p = i; return --p; } inline const T &value() const { qt_noop(); return *n; } inline const Key &key() const { qt_noop(); return n.key(); } inline bool findNext(const T &t) { while ((n = i) != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(n = --i) == t) return true; n = c.constEnd(); return false; } };
+template <class Key, class T> class QMutableMapIterator { typedef typename QMap<Key,T>::iterator iterator; typedef typename QMap<Key,T>::const_iterator const_iterator; typedef iterator Item; QMap<Key,T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableMapIterator(QMap<Key,T> &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableMapIterator() { c->setSharable(true); } inline QMutableMapIterator &operator=(QMap<Key,T> &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = c->end(); } inline bool hasNext() const { return const_iterator(i) != c->constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return const_iterator(i) != c->constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { iterator p = i; return --p; } inline void remove() { if (const_iterator(n) != c->constEnd()) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) { if (const_iterator(n) != c->constEnd()) *n = t; } inline T &value() { qt_noop(); return *n; } inline const T &value() const { qt_noop(); return *n; } inline const Key &key() const { qt_noop(); return n.key(); } inline bool findNext(const T &t) { while (const_iterator(n = i) != c->constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (const_iterator(i) != c->constBegin()) if (*(n = --i) == t) return true; n = c->end(); return false; } };
+
+
+
+
+# 1 "../../include/QtCore/qmap.h" 2
+# 49 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdebug.h" 2
+# 1 "../../include/QtCore/qpair.h" 1
+# 50 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdebug.h" 2
+# 1 "../../include/QtCore/qtextstream.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qtextstream.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qtextstream.h"
+#define QTEXTSTREAM_H
+
+# 1 "../../include/QtCore/qiodevice.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qtextstream.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qtextstream.h" 2
+# 1 "../../include/QtCore/qchar.h" 1
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qtextstream.h" 2
+# 1 "../../include/QtCore/qlocale.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qlocale.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qlocale.h"
+#define QLOCALE_H
+
+# 1 "../../include/QtCore/qstring.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qlocale.h" 2
+# 1 "../../include/QtCore/qobjectdefs.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qlocale.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QDataStream;
+class QDate;
+class QDateTime;
+class QTime;
+class QVariant;
+class QTextStream;
+class QTextStreamPrivate;
+
+class QLocale;
+
+
+class __attribute__((visibility("default"))) QSystemLocale
+{
+public:
+ QSystemLocale();
+ virtual ~QSystemLocale();
+
+ enum QueryType {
+ LanguageId,
+ CountryId,
+ DecimalPoint,
+ GroupSeparator,
+ ZeroDigit,
+ NegativeSign,
+ DateFormatLong,
+ DateFormatShort,
+ TimeFormatLong,
+ TimeFormatShort,
+ DayNameLong,
+ DayNameShort,
+ MonthNameLong,
+ MonthNameShort,
+ DateToStringLong,
+ DateToStringShort,
+ TimeToStringLong,
+ TimeToStringShort,
+ DateTimeFormatLong,
+ DateTimeFormatShort,
+ DateTimeToStringLong,
+ DateTimeToStringShort,
+ MeasurementSystem,
+ PositiveSign,
+ AMText,
+ PMText
+ };
+ virtual QVariant query(QueryType type, QVariant in) const;
+ virtual QLocale fallbackLocale() const;
+
+
+
+
+
+
+};
+
+
+struct QLocalePrivate;
+class __attribute__((visibility("default"))) QLocale
+{
+ public: static const QMetaObject staticMetaObject; private:
+
+
+ friend class QString;
+ friend class QByteArray;
+ friend class QIntValidator;
+ friend class QDoubleValidator;
+ friend class QTextStream;
+ friend class QTextStreamPrivate;
+
+public:
+ enum Language {
+ C = 1,
+ Abkhazian = 2,
+ Afan = 3,
+ Afar = 4,
+ Afrikaans = 5,
+ Albanian = 6,
+ Amharic = 7,
+ Arabic = 8,
+ Armenian = 9,
+ Assamese = 10,
+ Aymara = 11,
+ Azerbaijani = 12,
+ Bashkir = 13,
+ Basque = 14,
+ Bengali = 15,
+ Bhutani = 16,
+ Bihari = 17,
+ Bislama = 18,
+ Breton = 19,
+ Bulgarian = 20,
+ Burmese = 21,
+ Byelorussian = 22,
+ Cambodian = 23,
+ Catalan = 24,
+ Chinese = 25,
+ Corsican = 26,
+ Croatian = 27,
+ Czech = 28,
+ Danish = 29,
+ Dutch = 30,
+ English = 31,
+ Esperanto = 32,
+ Estonian = 33,
+ Faroese = 34,
+ FijiLanguage = 35,
+ Finnish = 36,
+ French = 37,
+ Frisian = 38,
+ Gaelic = 39,
+ Galician = 40,
+ Georgian = 41,
+ German = 42,
+ Greek = 43,
+ Greenlandic = 44,
+ Guarani = 45,
+ Gujarati = 46,
+ Hausa = 47,
+ Hebrew = 48,
+ Hindi = 49,
+ Hungarian = 50,
+ Icelandic = 51,
+ Indonesian = 52,
+ Interlingua = 53,
+ Interlingue = 54,
+ Inuktitut = 55,
+ Inupiak = 56,
+ Irish = 57,
+ Italian = 58,
+ Japanese = 59,
+ Javanese = 60,
+ Kannada = 61,
+ Kashmiri = 62,
+ Kazakh = 63,
+ Kinyarwanda = 64,
+ Kirghiz = 65,
+ Korean = 66,
+ Kurdish = 67,
+ Kurundi = 68,
+ Laothian = 69,
+ Latin = 70,
+ Latvian = 71,
+ Lingala = 72,
+ Lithuanian = 73,
+ Macedonian = 74,
+ Malagasy = 75,
+ Malay = 76,
+ Malayalam = 77,
+ Maltese = 78,
+ Maori = 79,
+ Marathi = 80,
+ Moldavian = 81,
+ Mongolian = 82,
+ NauruLanguage = 83,
+ Nepali = 84,
+ Norwegian = 85,
+ NorwegianBokmal = Norwegian,
+ Occitan = 86,
+ Oriya = 87,
+ Pashto = 88,
+ Persian = 89,
+ Polish = 90,
+ Portuguese = 91,
+ Punjabi = 92,
+ Quechua = 93,
+ RhaetoRomance = 94,
+ Romanian = 95,
+ Russian = 96,
+ Samoan = 97,
+ Sangho = 98,
+ Sanskrit = 99,
+ Serbian = 100,
+ SerboCroatian = 101,
+ Sesotho = 102,
+ Setswana = 103,
+ Shona = 104,
+ Sindhi = 105,
+ Singhalese = 106,
+ Siswati = 107,
+ Slovak = 108,
+ Slovenian = 109,
+ Somali = 110,
+ Spanish = 111,
+ Sundanese = 112,
+ Swahili = 113,
+ Swedish = 114,
+ Tagalog = 115,
+ Tajik = 116,
+ Tamil = 117,
+ Tatar = 118,
+ Telugu = 119,
+ Thai = 120,
+ Tibetan = 121,
+ Tigrinya = 122,
+ TongaLanguage = 123,
+ Tsonga = 124,
+ Turkish = 125,
+ Turkmen = 126,
+ Twi = 127,
+ Uigur = 128,
+ Ukrainian = 129,
+ Urdu = 130,
+ Uzbek = 131,
+ Vietnamese = 132,
+ Volapuk = 133,
+ Welsh = 134,
+ Wolof = 135,
+ Xhosa = 136,
+ Yiddish = 137,
+ Yoruba = 138,
+ Zhuang = 139,
+ Zulu = 140,
+ NorwegianNynorsk = 141,
+ Nynorsk = NorwegianNynorsk,
+ Bosnian = 142,
+ Divehi = 143,
+ Manx = 144,
+ Cornish = 145,
+ Akan = 146,
+ Konkani = 147,
+ Ga = 148,
+ Igbo = 149,
+ Kamba = 150,
+ Syriac = 151,
+ Blin = 152,
+ Geez = 153,
+ Koro = 154,
+ Sidamo = 155,
+ Atsam = 156,
+ Tigre = 157,
+ Jju = 158,
+ Friulian = 159,
+ Venda = 160,
+ Ewe = 161,
+ Walamo = 162,
+ Hawaiian = 163,
+ Tyap = 164,
+ Chewa = 165,
+ LastLanguage = Chewa
+ };
+
+ enum Country {
+ AnyCountry = 0,
+ Afghanistan = 1,
+ Albania = 2,
+ Algeria = 3,
+ AmericanSamoa = 4,
+ Andorra = 5,
+ Angola = 6,
+ Anguilla = 7,
+ Antarctica = 8,
+ AntiguaAndBarbuda = 9,
+ Argentina = 10,
+ Armenia = 11,
+ Aruba = 12,
+ Australia = 13,
+ Austria = 14,
+ Azerbaijan = 15,
+ Bahamas = 16,
+ Bahrain = 17,
+ Bangladesh = 18,
+ Barbados = 19,
+ Belarus = 20,
+ Belgium = 21,
+ Belize = 22,
+ Benin = 23,
+ Bermuda = 24,
+ Bhutan = 25,
+ Bolivia = 26,
+ BosniaAndHerzegowina = 27,
+ Botswana = 28,
+ BouvetIsland = 29,
+ Brazil = 30,
+ BritishIndianOceanTerritory = 31,
+ BruneiDarussalam = 32,
+ Bulgaria = 33,
+ BurkinaFaso = 34,
+ Burundi = 35,
+ Cambodia = 36,
+ Cameroon = 37,
+ Canada = 38,
+ CapeVerde = 39,
+ CaymanIslands = 40,
+ CentralAfricanRepublic = 41,
+ Chad = 42,
+ Chile = 43,
+ China = 44,
+ ChristmasIsland = 45,
+ CocosIslands = 46,
+ Colombia = 47,
+ Comoros = 48,
+ DemocraticRepublicOfCongo = 49,
+ PeoplesRepublicOfCongo = 50,
+ CookIslands = 51,
+ CostaRica = 52,
+ IvoryCoast = 53,
+ Croatia = 54,
+ Cuba = 55,
+ Cyprus = 56,
+ CzechRepublic = 57,
+ Denmark = 58,
+ Djibouti = 59,
+ Dominica = 60,
+ DominicanRepublic = 61,
+ EastTimor = 62,
+ Ecuador = 63,
+ Egypt = 64,
+ ElSalvador = 65,
+ EquatorialGuinea = 66,
+ Eritrea = 67,
+ Estonia = 68,
+ Ethiopia = 69,
+ FalklandIslands = 70,
+ FaroeIslands = 71,
+ FijiCountry = 72,
+ Finland = 73,
+ France = 74,
+ MetropolitanFrance = 75,
+ FrenchGuiana = 76,
+ FrenchPolynesia = 77,
+ FrenchSouthernTerritories = 78,
+ Gabon = 79,
+ Gambia = 80,
+ Georgia = 81,
+ Germany = 82,
+ Ghana = 83,
+ Gibraltar = 84,
+ Greece = 85,
+ Greenland = 86,
+ Grenada = 87,
+ Guadeloupe = 88,
+ Guam = 89,
+ Guatemala = 90,
+ Guinea = 91,
+ GuineaBissau = 92,
+ Guyana = 93,
+ Haiti = 94,
+ HeardAndMcDonaldIslands = 95,
+ Honduras = 96,
+ HongKong = 97,
+ Hungary = 98,
+ Iceland = 99,
+ India = 100,
+ Indonesia = 101,
+ Iran = 102,
+ Iraq = 103,
+ Ireland = 104,
+ Israel = 105,
+ Italy = 106,
+ Jamaica = 107,
+ Japan = 108,
+ Jordan = 109,
+ Kazakhstan = 110,
+ Kenya = 111,
+ Kiribati = 112,
+ DemocraticRepublicOfKorea = 113,
+ RepublicOfKorea = 114,
+ Kuwait = 115,
+ Kyrgyzstan = 116,
+ Lao = 117,
+ Latvia = 118,
+ Lebanon = 119,
+ Lesotho = 120,
+ Liberia = 121,
+ LibyanArabJamahiriya = 122,
+ Liechtenstein = 123,
+ Lithuania = 124,
+ Luxembourg = 125,
+ Macau = 126,
+ Macedonia = 127,
+ Madagascar = 128,
+ Malawi = 129,
+ Malaysia = 130,
+ Maldives = 131,
+ Mali = 132,
+ Malta = 133,
+ MarshallIslands = 134,
+ Martinique = 135,
+ Mauritania = 136,
+ Mauritius = 137,
+ Mayotte = 138,
+ Mexico = 139,
+ Micronesia = 140,
+ Moldova = 141,
+ Monaco = 142,
+ Mongolia = 143,
+ Montserrat = 144,
+ Morocco = 145,
+ Mozambique = 146,
+ Myanmar = 147,
+ Namibia = 148,
+ NauruCountry = 149,
+ Nepal = 150,
+ Netherlands = 151,
+ NetherlandsAntilles = 152,
+ NewCaledonia = 153,
+ NewZealand = 154,
+ Nicaragua = 155,
+ Niger = 156,
+ Nigeria = 157,
+ Niue = 158,
+ NorfolkIsland = 159,
+ NorthernMarianaIslands = 160,
+ Norway = 161,
+ Oman = 162,
+ Pakistan = 163,
+ Palau = 164,
+ PalestinianTerritory = 165,
+ Panama = 166,
+ PapuaNewGuinea = 167,
+ Paraguay = 168,
+ Peru = 169,
+ Philippines = 170,
+ Pitcairn = 171,
+ Poland = 172,
+ Portugal = 173,
+ PuertoRico = 174,
+ Qatar = 175,
+ Reunion = 176,
+ Romania = 177,
+ RussianFederation = 178,
+ Rwanda = 179,
+ SaintKittsAndNevis = 180,
+ StLucia = 181,
+ StVincentAndTheGrenadines = 182,
+ Samoa = 183,
+ SanMarino = 184,
+ SaoTomeAndPrincipe = 185,
+ SaudiArabia = 186,
+ Senegal = 187,
+ Seychelles = 188,
+ SierraLeone = 189,
+ Singapore = 190,
+ Slovakia = 191,
+ Slovenia = 192,
+ SolomonIslands = 193,
+ Somalia = 194,
+ SouthAfrica = 195,
+ SouthGeorgiaAndTheSouthSandwichIslands = 196,
+ Spain = 197,
+ SriLanka = 198,
+ StHelena = 199,
+ StPierreAndMiquelon = 200,
+ Sudan = 201,
+ Suriname = 202,
+ SvalbardAndJanMayenIslands = 203,
+ Swaziland = 204,
+ Sweden = 205,
+ Switzerland = 206,
+ SyrianArabRepublic = 207,
+ Taiwan = 208,
+ Tajikistan = 209,
+ Tanzania = 210,
+ Thailand = 211,
+ Togo = 212,
+ Tokelau = 213,
+ TongaCountry = 214,
+ TrinidadAndTobago = 215,
+ Tunisia = 216,
+ Turkey = 217,
+ Turkmenistan = 218,
+ TurksAndCaicosIslands = 219,
+ Tuvalu = 220,
+ Uganda = 221,
+ Ukraine = 222,
+ UnitedArabEmirates = 223,
+ UnitedKingdom = 224,
+ UnitedStates = 225,
+ UnitedStatesMinorOutlyingIslands = 226,
+ Uruguay = 227,
+ Uzbekistan = 228,
+ Vanuatu = 229,
+ VaticanCityState = 230,
+ Venezuela = 231,
+ VietNam = 232,
+ BritishVirginIslands = 233,
+ USVirginIslands = 234,
+ WallisAndFutunaIslands = 235,
+ WesternSahara = 236,
+ Yemen = 237,
+ Yugoslavia = 238,
+ Zambia = 239,
+ Zimbabwe = 240,
+ SerbiaAndMontenegro = 241,
+ LastCountry = SerbiaAndMontenegro
+ };
+
+ enum MeasurementSystem { MetricSystem, ImperialSystem };
+
+ enum FormatType { LongFormat, ShortFormat, NarrowFormat };
+ enum NumberOption {
+ OmitGroupSeparator = 0x01,
+ RejectGroupSeparator = 0x02
+ };
+ typedef QFlags<NumberOption> NumberOptions;
+
+ QLocale();
+ QLocale(const QString &name);
+ QLocale(Language language, Country country = AnyCountry);
+ QLocale(const QLocale &other);
+
+ QLocale &operator=(const QLocale &other);
+
+ Language language() const;
+ Country country() const;
+ QString name() const;
+
+ short toShort(const QString &s, bool *ok = 0, int base = 0) const;
+ ushort toUShort(const QString &s, bool *ok = 0, int base = 0) const;
+ int toInt(const QString &s, bool *ok = 0, int base = 0) const;
+ uint toUInt(const QString &s, bool *ok = 0, int base = 0) const;
+ qlonglong toLongLong(const QString &s, bool *ok = 0, int base = 0) const;
+ qlonglong toULongLong(const QString &s, bool *ok = 0, int base = 0) const;
+ float toFloat(const QString &s, bool *ok = 0) const;
+ double toDouble(const QString &s, bool *ok = 0) const;
+
+ QString toString(qlonglong i) const;
+ QString toString(qulonglong i) const;
+ inline QString toString(short i) const;
+ inline QString toString(ushort i) const;
+ inline QString toString(int i) const;
+ inline QString toString(uint i) const;
+ QString toString(double i, char f = 'g', int prec = 6) const;
+ inline QString toString(float i, char f = 'g', int prec = 6) const;
+ QString toString(const QDate &date, const QString &formatStr) const;
+ QString toString(const QDate &date, FormatType format = LongFormat) const;
+ QString toString(const QTime &time, const QString &formatStr) const;
+ QString toString(const QTime &time, FormatType format = LongFormat) const;
+ QString toString(const QDateTime &dateTime, FormatType format = LongFormat) const;
+ QString toString(const QDateTime &dateTime, const QString &format) const;
+
+ QString dateFormat(FormatType format = LongFormat) const;
+ QString timeFormat(FormatType format = LongFormat) const;
+ QString dateTimeFormat(FormatType format = LongFormat) const;
+
+ QDate toDate(const QString &string, FormatType = LongFormat) const;
+ QTime toTime(const QString &string, FormatType = LongFormat) const;
+ QDateTime toDateTime(const QString &string, FormatType format = LongFormat) const;
+ QDate toDate(const QString &string, const QString &format) const;
+ QTime toTime(const QString &string, const QString &format) const;
+ QDateTime toDateTime(const QString &string, const QString &format) const;
+
+
+
+
+ QChar decimalPoint() const;
+ QChar groupSeparator() const;
+ QChar percent() const;
+ QChar zeroDigit() const;
+ QChar negativeSign() const;
+ QChar positiveSign() const;
+ QChar exponential() const;
+
+ QString monthName(int, FormatType format = LongFormat) const;
+ QString standaloneMonthName(int, FormatType format = LongFormat) const;
+ QString dayName(int, FormatType format = LongFormat) const;
+ QString standaloneDayName(int, FormatType format = LongFormat) const;
+
+ QString amText() const;
+ QString pmText() const;
+
+ MeasurementSystem measurementSystem() const;
+
+ inline bool operator==(const QLocale &other) const;
+ inline bool operator!=(const QLocale &other) const;
+
+ static QString languageToString(Language language);
+ static QString countryToString(Country country);
+ static void setDefault(const QLocale &locale);
+
+ static QLocale c() { return QLocale(C); }
+ static QLocale system();
+
+ static QList<Country> countriesForLanguage(Language lang);
+
+ void setNumberOptions(NumberOptions options);
+ NumberOptions numberOptions() const;
+
+
+ struct Data {
+ quint16 index;
+ quint16 numberOptions;
+ }
+
+
+
+ ;
+private:
+ friend struct QLocalePrivate;
+
+
+ union {
+ void *v;
+ Data p;
+ };
+ const QLocalePrivate *d() const;
+};
+template <> class QTypeInfo<QLocale> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QLocale)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QLocale"; } };
+inline QFlags<QLocale::NumberOptions::enum_type> operator|(QLocale::NumberOptions::enum_type f1, QLocale::NumberOptions::enum_type f2) { return QFlags<QLocale::NumberOptions::enum_type>(f1) | f2; } inline QFlags<QLocale::NumberOptions::enum_type> operator|(QLocale::NumberOptions::enum_type f1, QFlags<QLocale::NumberOptions::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QLocale::NumberOptions::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+
+inline QString QLocale::toString(short i) const
+ { return toString(qlonglong(i)); }
+inline QString QLocale::toString(ushort i) const
+ { return toString(qulonglong(i)); }
+inline QString QLocale::toString(int i) const
+ { return toString(qlonglong(i)); }
+inline QString QLocale::toString(uint i) const
+ { return toString(qulonglong(i)); }
+inline QString QLocale::toString(float i, char f, int prec) const
+ { return toString(double(i), f, prec); }
+inline bool QLocale::operator==(const QLocale &other) const
+ { return d() == other.d() && numberOptions() == other.numberOptions(); }
+inline bool QLocale::operator!=(const QLocale &other) const
+ { return d() != other.d() || numberOptions() != other.numberOptions(); }
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QLocale &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QLocale &);
+
+
+
+
+
+# 1 "../../include/QtCore/qlocale.h" 2
+# 49 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qtextstream.h" 2
+# 62 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qtextstream.h"
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QTextCodec;
+class QTextDecoder;
+
+class QTextStreamPrivate;
+class __attribute__((visibility("default"))) QTextStream
+{
+ inline QTextStreamPrivate* d_func() { return reinterpret_cast<QTextStreamPrivate *>(d_ptr); } inline const QTextStreamPrivate* d_func() const { return reinterpret_cast<const QTextStreamPrivate *>(d_ptr); } friend class QTextStreamPrivate;
+
+public:
+ enum RealNumberNotation {
+ SmartNotation,
+ FixedNotation,
+ ScientificNotation
+ };
+ enum FieldAlignment {
+ AlignLeft,
+ AlignRight,
+ AlignCenter,
+ AlignAccountingStyle
+ };
+ enum Status {
+ Ok,
+ ReadPastEnd,
+ ReadCorruptData
+ };
+ enum NumberFlag {
+ ShowBase = 0x1,
+ ForcePoint = 0x2,
+ ForceSign = 0x4,
+ UppercaseBase = 0x8,
+ UppercaseDigits = 0x10
+ };
+ typedef QFlags<NumberFlag> NumberFlags;
+
+ QTextStream();
+ explicit QTextStream(QIODevice *device);
+ explicit QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite);
+ explicit QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite);
+ explicit QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite);
+ explicit QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly);
+ virtual ~QTextStream();
+
+
+ void setCodec(QTextCodec *codec);
+ void setCodec(const char *codecName);
+ QTextCodec *codec() const;
+ void setAutoDetectUnicode(bool enabled);
+ bool autoDetectUnicode() const;
+ void setGenerateByteOrderMark(bool generate);
+ bool generateByteOrderMark() const;
+
+
+ void setLocale(const QLocale &locale);
+ QLocale locale() const;
+
+ void setDevice(QIODevice *device);
+ QIODevice *device() const;
+
+ void setString(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite);
+ QString *string() const;
+
+ Status status() const;
+ void setStatus(Status status);
+ void resetStatus();
+
+ bool atEnd() const;
+ void reset();
+ void flush();
+ bool seek(qint64 pos);
+ qint64 pos() const;
+
+ void skipWhiteSpace();
+
+ QString readLine(qint64 maxlen = 0);
+ QString readAll();
+ QString read(qint64 maxlen);
+
+ void setFieldAlignment(FieldAlignment alignment);
+ FieldAlignment fieldAlignment() const;
+
+ void setPadChar(QChar ch);
+ QChar padChar() const;
+
+ void setFieldWidth(int width);
+ int fieldWidth() const;
+
+ void setNumberFlags(NumberFlags flags);
+ NumberFlags numberFlags() const;
+
+ void setIntegerBase(int base);
+ int integerBase() const;
+
+ void setRealNumberNotation(RealNumberNotation notation);
+ RealNumberNotation realNumberNotation() const;
+
+ void setRealNumberPrecision(int precision);
+ int realNumberPrecision() const;
+
+ QTextStream &operator>>(QChar &ch);
+ QTextStream &operator>>(char &ch);
+ QTextStream &operator>>(signed short &i);
+ QTextStream &operator>>(unsigned short &i);
+ QTextStream &operator>>(signed int &i);
+ QTextStream &operator>>(unsigned int &i);
+ QTextStream &operator>>(signed long &i);
+ QTextStream &operator>>(unsigned long &i);
+ QTextStream &operator>>(qlonglong &i);
+ QTextStream &operator>>(qulonglong &i);
+ QTextStream &operator>>(float &f);
+ QTextStream &operator>>(double &f);
+ QTextStream &operator>>(QString &s);
+ QTextStream &operator>>(QByteArray &array);
+ QTextStream &operator>>(char *c);
+
+ QTextStream &operator<<(QBool b);
+ QTextStream &operator<<(QChar ch);
+ QTextStream &operator<<(char ch);
+ QTextStream &operator<<(signed short i);
+ QTextStream &operator<<(unsigned short i);
+ QTextStream &operator<<(signed int i);
+ QTextStream &operator<<(unsigned int i);
+ QTextStream &operator<<(signed long i);
+ QTextStream &operator<<(unsigned long i);
+ QTextStream &operator<<(qlonglong i);
+ QTextStream &operator<<(qulonglong i);
+ QTextStream &operator<<(float f);
+ QTextStream &operator<<(double f);
+ QTextStream &operator<<(const QString &s);
+ QTextStream &operator<<(const QByteArray &array);
+ QTextStream &operator<<(const char *c);
+ QTextStream &operator<<(const void *ptr);
+# 251 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qtextstream.h"
+private:
+
+
+
+
+
+ QTextStream(const QTextStream &); QTextStream &operator=(const QTextStream &);
+
+ QTextStreamPrivate *d_ptr;
+};
+
+inline QFlags<QTextStream::NumberFlags::enum_type> operator|(QTextStream::NumberFlags::enum_type f1, QTextStream::NumberFlags::enum_type f2) { return QFlags<QTextStream::NumberFlags::enum_type>(f1) | f2; } inline QFlags<QTextStream::NumberFlags::enum_type> operator|(QTextStream::NumberFlags::enum_type f1, QFlags<QTextStream::NumberFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QTextStream::NumberFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+
+
+
+
+
+typedef QTextStream & (*QTextStreamFunction)(QTextStream &);
+typedef void (QTextStream::*QTSMFI)(int);
+typedef void (QTextStream::*QTSMFC)(QChar);
+
+class __attribute__((visibility("default"))) QTextStreamManipulator
+{
+public:
+ QTextStreamManipulator(QTSMFI m, int a) { mf = m; mc = 0; arg = a; }
+ QTextStreamManipulator(QTSMFC m, QChar c) { mf = 0; mc = m; ch = c; }
+ void exec(QTextStream &s) { if (mf) { (s.*mf)(arg); } else { (s.*mc)(ch); } }
+
+private:
+ QTSMFI mf;
+ QTSMFC mc;
+ int arg;
+ QChar ch;
+};
+
+inline QTextStream &operator>>(QTextStream &s, QTextStreamFunction f)
+{ return (*f)(s); }
+
+inline QTextStream &operator<<(QTextStream &s, QTextStreamFunction f)
+{ return (*f)(s); }
+
+inline QTextStream &operator<<(QTextStream &s, QTextStreamManipulator m)
+{ m.exec(s); return s; }
+
+__attribute__((visibility("default"))) QTextStream &bin(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &oct(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &dec(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &hex(QTextStream &s);
+
+__attribute__((visibility("default"))) QTextStream &showbase(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &forcesign(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &forcepoint(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &noshowbase(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &noforcesign(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &noforcepoint(QTextStream &s);
+
+__attribute__((visibility("default"))) QTextStream &uppercasebase(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &uppercasedigits(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &lowercasebase(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &lowercasedigits(QTextStream &s);
+
+__attribute__((visibility("default"))) QTextStream &fixed(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &scientific(QTextStream &s);
+
+__attribute__((visibility("default"))) QTextStream &left(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &right(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream ¢er(QTextStream &s);
+
+__attribute__((visibility("default"))) QTextStream &endl(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &flush(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &reset(QTextStream &s);
+
+__attribute__((visibility("default"))) QTextStream &bom(QTextStream &s);
+
+__attribute__((visibility("default"))) QTextStream &ws(QTextStream &s);
+
+inline QTextStreamManipulator qSetFieldWidth(int width)
+{
+ QTSMFI func = &QTextStream::setFieldWidth;
+ return QTextStreamManipulator(func,width);
+}
+
+inline QTextStreamManipulator qSetPadChar(QChar ch)
+{
+ QTSMFC func = &QTextStream::setPadChar;
+ return QTextStreamManipulator(func, ch);
+}
+
+inline QTextStreamManipulator qSetRealNumberPrecision(int precision)
+{
+ QTSMFI func = &QTextStream::setRealNumberPrecision;
+ return QTextStreamManipulator(func, precision);
+}
+# 371 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qtextstream.h"
+
+
+
+# 1 "../../include/QtCore/qtextstream.h" 2
+# 51 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdebug.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 52 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdebug.h" 2
+# 1 "../../include/QtCore/qvector.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvector.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvector.h"
+#define QVECTOR_H
+
+# 1 "../../include/QtCore/qiterator.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvector.h" 2
+# 1 "../../include/QtCore/qatomic.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvector.h" 2
+# 1 "../../include/QtCore/qalgorithms.h" 1
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvector.h" 2
+# 1 "../../include/QtCore/qlist.h" 1
+# 49 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvector.h" 2
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/vector" 1 3
+# 62 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/vector" 3
+#define _GLIBCXX_VECTOR 1
+
+
+# 65 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/vector" 3
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_construct.h" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_construct.h" 3
+#define _STL_CONSTRUCT_H 1
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+
+
+
+ template<typename _T1, typename _T2>
+ inline void
+ _Construct(_T1* __p, const _T2& __value)
+ {
+
+
+ ::new(static_cast<void*>(__p)) _T1(__value);
+ }
+
+
+
+
+ template<typename _Tp>
+ inline void
+ _Destroy(_Tp* __pointer)
+ { __pointer->~_Tp(); }
+
+
+
+
+
+
+ template<typename _ForwardIterator>
+ inline void
+ _Destroy(_ForwardIterator __first, _ForwardIterator __last)
+ {
+ typedef typename iterator_traits<_ForwardIterator>::value_type
+ _Value_type;
+ if (!__has_trivial_destructor(_Value_type))
+ for (; __first != __last; ++__first)
+ std::_Destroy(&*__first);
+ }
+
+
+
+
+
+
+
+ template <typename _Tp> class allocator;
+
+ template<typename _ForwardIterator, typename _Allocator>
+ void
+ _Destroy(_ForwardIterator __first, _ForwardIterator __last,
+ _Allocator& __alloc)
+ {
+ for (; __first != __last; ++__first)
+ __alloc.destroy(&*__first);
+ }
+
+ template<typename _ForwardIterator, typename _Tp>
+ inline void
+ _Destroy(_ForwardIterator __first, _ForwardIterator __last,
+ allocator<_Tp>&)
+ {
+ _Destroy(__first, __last);
+ }
+
+}
+# 69 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/vector" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_uninitialized.h" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_uninitialized.h" 3
+#define _STL_UNINITIALIZED_H 1
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<bool>
+ struct __uninitialized_copy
+ {
+ template<typename _InputIterator, typename _ForwardIterator>
+ static _ForwardIterator
+ uninitialized_copy(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result)
+ {
+ _ForwardIterator __cur = __result;
+ try
+ {
+ for (; __first != __last; ++__first, ++__cur)
+ ::new(static_cast<void*>(&*__cur)) typename
+ iterator_traits<_ForwardIterator>::value_type(*__first);
+ return __cur;
+ }
+ catch(...)
+ {
+ std::_Destroy(__result, __cur);
+ throw;
+ }
+ }
+ };
+
+ template<>
+ struct __uninitialized_copy<true>
+ {
+ template<typename _InputIterator, typename _ForwardIterator>
+ static _ForwardIterator
+ uninitialized_copy(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result)
+ { return std::copy(__first, __last, __result); }
+ };
+# 110 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_uninitialized.h" 3
+ template<typename _InputIterator, typename _ForwardIterator>
+ inline _ForwardIterator
+ uninitialized_copy(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result)
+ {
+ typedef typename iterator_traits<_InputIterator>::value_type
+ _ValueType1;
+ typedef typename iterator_traits<_ForwardIterator>::value_type
+ _ValueType2;
+
+ return std::__uninitialized_copy<(__is_pod(_ValueType1)
+ && __is_pod(_ValueType2))>::
+ uninitialized_copy(__first, __last, __result);
+ }
+
+
+ template<bool>
+ struct __uninitialized_fill
+ {
+ template<typename _ForwardIterator, typename _Tp>
+ static void
+ uninitialized_fill(_ForwardIterator __first,
+ _ForwardIterator __last, const _Tp& __x)
+ {
+ _ForwardIterator __cur = __first;
+ try
+ {
+ for (; __cur != __last; ++__cur)
+ std::_Construct(&*__cur, __x);
+ }
+ catch(...)
+ {
+ std::_Destroy(__first, __cur);
+ throw;
+ }
+ }
+ };
+
+ template<>
+ struct __uninitialized_fill<true>
+ {
+ template<typename _ForwardIterator, typename _Tp>
+ static void
+ uninitialized_fill(_ForwardIterator __first,
+ _ForwardIterator __last, const _Tp& __x)
+ { std::fill(__first, __last, __x); }
+ };
+# 167 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_uninitialized.h" 3
+ template<typename _ForwardIterator, typename _Tp>
+ inline void
+ uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last,
+ const _Tp& __x)
+ {
+ typedef typename iterator_traits<_ForwardIterator>::value_type
+ _ValueType;
+
+ std::__uninitialized_fill<__is_pod(_ValueType)>::
+ uninitialized_fill(__first, __last, __x);
+ }
+
+
+ template<bool>
+ struct __uninitialized_fill_n
+ {
+ template<typename _ForwardIterator, typename _Size, typename _Tp>
+ static void
+ uninitialized_fill_n(_ForwardIterator __first, _Size __n,
+ const _Tp& __x)
+ {
+ _ForwardIterator __cur = __first;
+ try
+ {
+ for (; __n > 0; --__n, ++__cur)
+ std::_Construct(&*__cur, __x);
+ }
+ catch(...)
+ {
+ std::_Destroy(__first, __cur);
+ throw;
+ }
+ }
+ };
+
+ template<>
+ struct __uninitialized_fill_n<true>
+ {
+ template<typename _ForwardIterator, typename _Size, typename _Tp>
+ static void
+ uninitialized_fill_n(_ForwardIterator __first, _Size __n,
+ const _Tp& __x)
+ { std::fill_n(__first, __n, __x); }
+ };
+# 221 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_uninitialized.h" 3
+ template<typename _ForwardIterator, typename _Size, typename _Tp>
+ inline void
+ uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x)
+ {
+ typedef typename iterator_traits<_ForwardIterator>::value_type
+ _ValueType;
+
+ std::__uninitialized_fill_n<__is_pod(_ValueType)>::
+ uninitialized_fill_n(__first, __n, __x);
+ }
+
+
+
+
+
+
+
+ template<typename _InputIterator, typename _ForwardIterator,
+ typename _Allocator>
+ _ForwardIterator
+ __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result, _Allocator& __alloc)
+ {
+ _ForwardIterator __cur = __result;
+ try
+ {
+ for (; __first != __last; ++__first, ++__cur)
+ __alloc.construct(&*__cur, *__first);
+ return __cur;
+ }
+ catch(...)
+ {
+ std::_Destroy(__result, __cur, __alloc);
+ throw;
+ }
+ }
+
+ template<typename _InputIterator, typename _ForwardIterator, typename _Tp>
+ inline _ForwardIterator
+ __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result, allocator<_Tp>&)
+ { return std::uninitialized_copy(__first, __last, __result); }
+
+ template<typename _InputIterator, typename _ForwardIterator,
+ typename _Allocator>
+ inline _ForwardIterator
+ __uninitialized_move_a(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result, _Allocator& __alloc)
+ {
+ return std::__uninitialized_copy_a((__first),
+ (__last),
+ __result, __alloc);
+ }
+
+ template<typename _ForwardIterator, typename _Tp, typename _Allocator>
+ void
+ __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
+ const _Tp& __x, _Allocator& __alloc)
+ {
+ _ForwardIterator __cur = __first;
+ try
+ {
+ for (; __cur != __last; ++__cur)
+ __alloc.construct(&*__cur, __x);
+ }
+ catch(...)
+ {
+ std::_Destroy(__first, __cur, __alloc);
+ throw;
+ }
+ }
+
+ template<typename _ForwardIterator, typename _Tp, typename _Tp2>
+ inline void
+ __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
+ const _Tp& __x, allocator<_Tp2>&)
+ { std::uninitialized_fill(__first, __last, __x); }
+
+ template<typename _ForwardIterator, typename _Size, typename _Tp,
+ typename _Allocator>
+ void
+ __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
+ const _Tp& __x, _Allocator& __alloc)
+ {
+ _ForwardIterator __cur = __first;
+ try
+ {
+ for (; __n > 0; --__n, ++__cur)
+ __alloc.construct(&*__cur, __x);
+ }
+ catch(...)
+ {
+ std::_Destroy(__first, __cur, __alloc);
+ throw;
+ }
+ }
+
+ template<typename _ForwardIterator, typename _Size, typename _Tp,
+ typename _Tp2>
+ inline void
+ __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
+ const _Tp& __x, allocator<_Tp2>&)
+ { std::uninitialized_fill_n(__first, __n, __x); }
+# 335 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_uninitialized.h" 3
+ template<typename _InputIterator1, typename _InputIterator2,
+ typename _ForwardIterator, typename _Allocator>
+ inline _ForwardIterator
+ __uninitialized_copy_move(_InputIterator1 __first1,
+ _InputIterator1 __last1,
+ _InputIterator2 __first2,
+ _InputIterator2 __last2,
+ _ForwardIterator __result,
+ _Allocator& __alloc)
+ {
+ _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1,
+ __result,
+ __alloc);
+ try
+ {
+ return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc);
+ }
+ catch(...)
+ {
+ std::_Destroy(__result, __mid, __alloc);
+ throw;
+ }
+ }
+
+
+
+
+
+ template<typename _InputIterator1, typename _InputIterator2,
+ typename _ForwardIterator, typename _Allocator>
+ inline _ForwardIterator
+ __uninitialized_move_copy(_InputIterator1 __first1,
+ _InputIterator1 __last1,
+ _InputIterator2 __first2,
+ _InputIterator2 __last2,
+ _ForwardIterator __result,
+ _Allocator& __alloc)
+ {
+ _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1,
+ __result,
+ __alloc);
+ try
+ {
+ return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc);
+ }
+ catch(...)
+ {
+ std::_Destroy(__result, __mid, __alloc);
+ throw;
+ }
+ }
+
+
+
+
+ template<typename _ForwardIterator, typename _Tp, typename _InputIterator,
+ typename _Allocator>
+ inline _ForwardIterator
+ __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid,
+ const _Tp& __x, _InputIterator __first,
+ _InputIterator __last, _Allocator& __alloc)
+ {
+ std::__uninitialized_fill_a(__result, __mid, __x, __alloc);
+ try
+ {
+ return std::__uninitialized_move_a(__first, __last, __mid, __alloc);
+ }
+ catch(...)
+ {
+ std::_Destroy(__result, __mid, __alloc);
+ throw;
+ }
+ }
+
+
+
+
+ template<typename _InputIterator, typename _ForwardIterator, typename _Tp,
+ typename _Allocator>
+ inline void
+ __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1,
+ _ForwardIterator __first2,
+ _ForwardIterator __last2, const _Tp& __x,
+ _Allocator& __alloc)
+ {
+ _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1,
+ __first2,
+ __alloc);
+ try
+ {
+ std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc);
+ }
+ catch(...)
+ {
+ std::_Destroy(__first2, __mid2, __alloc);
+ throw;
+ }
+ }
+
+}
+# 70 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/vector" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+#define _STL_VECTOR_H 1
+
+
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+
+ template<typename _Tp, typename _Alloc>
+ struct _Vector_base
+ {
+ typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
+
+ struct _Vector_impl
+ : public _Tp_alloc_type
+ {
+ _Tp* _M_start;
+ _Tp* _M_finish;
+ _Tp* _M_end_of_storage;
+
+ _Vector_impl()
+ : _Tp_alloc_type(), _M_start(0), _M_finish(0), _M_end_of_storage(0)
+ { }
+
+ _Vector_impl(_Tp_alloc_type const& __a)
+ : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
+ { }
+ };
+
+ public:
+ typedef _Alloc allocator_type;
+
+ _Tp_alloc_type&
+ _M_get_Tp_allocator()
+ { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); }
+
+ const _Tp_alloc_type&
+ _M_get_Tp_allocator() const
+ { return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); }
+
+ allocator_type
+ get_allocator() const
+ { return allocator_type(_M_get_Tp_allocator()); }
+
+ _Vector_base()
+ : _M_impl() { }
+
+ _Vector_base(const allocator_type& __a)
+ : _M_impl(__a) { }
+
+ _Vector_base(size_t __n, const allocator_type& __a)
+ : _M_impl(__a)
+ {
+ this->_M_impl._M_start = this->_M_allocate(__n);
+ this->_M_impl._M_finish = this->_M_impl._M_start;
+ this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+ }
+# 135 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ ~_Vector_base()
+ { _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start); }
+
+ public:
+ _Vector_impl _M_impl;
+
+ _Tp*
+ _M_allocate(size_t __n)
+ { return __n != 0 ? _M_impl.allocate(__n) : 0; }
+
+ void
+ _M_deallocate(_Tp* __p, size_t __n)
+ {
+ if (__p)
+ _M_impl.deallocate(__p, __n);
+ }
+ };
+# 174 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
+ class vector : protected _Vector_base<_Tp, _Alloc>
+ {
+
+ typedef typename _Alloc::value_type _Alloc_value_type;
+
+
+
+ typedef _Vector_base<_Tp, _Alloc> _Base;
+ typedef vector<_Tp, _Alloc> vector_type;
+ typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
+
+ public:
+ typedef _Tp value_type;
+ typedef typename _Tp_alloc_type::pointer pointer;
+ typedef typename _Tp_alloc_type::const_pointer const_pointer;
+ typedef typename _Tp_alloc_type::reference reference;
+ typedef typename _Tp_alloc_type::const_reference const_reference;
+ typedef __gnu_cxx::__normal_iterator<pointer, vector_type> iterator;
+ typedef __gnu_cxx::__normal_iterator<const_pointer, vector_type>
+ const_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Alloc allocator_type;
+
+ protected:
+ using _Base::_M_allocate;
+ using _Base::_M_deallocate;
+ using _Base::_M_impl;
+ using _Base::_M_get_Tp_allocator;
+
+ public:
+
+
+
+
+
+ vector()
+ : _Base() { }
+
+
+
+
+
+ explicit
+ vector(const allocator_type& __a)
+ : _Base(__a) { }
+# 232 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ explicit
+ vector(size_type __n, const value_type& __value = value_type(),
+ const allocator_type& __a = allocator_type())
+ : _Base(__n, __a)
+ { _M_fill_initialize(__n, __value); }
+# 247 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ vector(const vector& __x)
+ : _Base(__x.size(), __x._M_get_Tp_allocator())
+ { this->_M_impl._M_finish =
+ std::__uninitialized_copy_a(__x.begin(), __x.end(),
+ this->_M_impl._M_start,
+ _M_get_Tp_allocator());
+ }
+# 283 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ template<typename _InputIterator>
+ vector(_InputIterator __first, _InputIterator __last,
+ const allocator_type& __a = allocator_type())
+ : _Base(__a)
+ {
+
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_initialize_dispatch(__first, __last, _Integral());
+ }
+
+
+
+
+
+
+
+ ~vector()
+ { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator()); }
+# 311 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ vector&
+ operator=(const vector& __x);
+# 342 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ void
+ assign(size_type __n, const value_type& __val)
+ { _M_fill_assign(__n, __val); }
+# 358 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ template<typename _InputIterator>
+ void
+ assign(_InputIterator __first, _InputIterator __last)
+ {
+
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_assign_dispatch(__first, __last, _Integral());
+ }
+
+
+ using _Base::get_allocator;
+
+
+
+
+
+
+
+ iterator
+ begin()
+ { return iterator(this->_M_impl._M_start); }
+
+
+
+
+
+
+ const_iterator
+ begin() const
+ { return const_iterator(this->_M_impl._M_start); }
+
+
+
+
+
+
+ iterator
+ end()
+ { return iterator(this->_M_impl._M_finish); }
+
+
+
+
+
+
+ const_iterator
+ end() const
+ { return const_iterator(this->_M_impl._M_finish); }
+
+
+
+
+
+
+ reverse_iterator
+ rbegin()
+ { return reverse_iterator(end()); }
+
+
+
+
+
+
+ const_reverse_iterator
+ rbegin() const
+ { return const_reverse_iterator(end()); }
+
+
+
+
+
+
+ reverse_iterator
+ rend()
+ { return reverse_iterator(begin()); }
+
+
+
+
+
+
+ const_reverse_iterator
+ rend() const
+ { return const_reverse_iterator(begin()); }
+# 483 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ size_type
+ size() const
+ { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
+
+
+ size_type
+ max_size() const
+ { return _M_get_Tp_allocator().max_size(); }
+# 503 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ void
+ resize(size_type __new_size, value_type __x = value_type())
+ {
+ if (__new_size < size())
+ _M_erase_at_end(this->_M_impl._M_start + __new_size);
+ else
+ insert(end(), __new_size - size(), __x);
+ }
+
+
+
+
+
+ size_type
+ capacity() const
+ { return size_type(this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start); }
+
+
+
+
+
+ bool
+ empty() const
+ { return begin() == end(); }
+# 546 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ void
+ reserve(size_type __n);
+# 561 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ reference
+ operator[](size_type __n)
+ { return *(this->_M_impl._M_start + __n); }
+# 576 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ const_reference
+ operator[](size_type __n) const
+ { return *(this->_M_impl._M_start + __n); }
+
+ protected:
+
+ void
+ _M_range_check(size_type __n) const
+ {
+ if (__n >= this->size())
+ __throw_out_of_range(("vector::_M_range_check"));
+ }
+
+ public:
+# 601 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ reference
+ at(size_type __n)
+ {
+ _M_range_check(__n);
+ return (*this)[__n];
+ }
+# 619 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ const_reference
+ at(size_type __n) const
+ {
+ _M_range_check(__n);
+ return (*this)[__n];
+ }
+
+
+
+
+
+ reference
+ front()
+ { return *begin(); }
+
+
+
+
+
+ const_reference
+ front() const
+ { return *begin(); }
+
+
+
+
+
+ reference
+ back()
+ { return *(end() - 1); }
+
+
+
+
+
+ const_reference
+ back() const
+ { return *(end() - 1); }
+# 665 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ pointer
+ data()
+ { return pointer(this->_M_impl._M_start); }
+
+ const_pointer
+ data() const
+ { return const_pointer(this->_M_impl._M_start); }
+# 685 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ void
+ push_back(const value_type& __x)
+ {
+ if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
+ {
+ this->_M_impl.construct(this->_M_impl._M_finish, __x);
+ ++this->_M_impl._M_finish;
+ }
+ else
+ _M_insert_aux(end(), __x);
+ }
+# 721 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ void
+ pop_back()
+ {
+ --this->_M_impl._M_finish;
+ this->_M_impl.destroy(this->_M_impl._M_finish);
+ }
+# 757 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ iterator
+ insert(iterator __position, const value_type& __x);
+# 790 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ void
+ insert(iterator __position, size_type __n, const value_type& __x)
+ { _M_fill_insert(__position, __n, __x); }
+# 808 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ template<typename _InputIterator>
+ void
+ insert(iterator __position, _InputIterator __first,
+ _InputIterator __last)
+ {
+
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_insert_dispatch(__position, __first, __last, _Integral());
+ }
+# 833 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ iterator
+ erase(iterator __position);
+# 854 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ iterator
+ erase(iterator __first, iterator __last);
+# 866 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ void
+
+
+
+ swap(vector& __x)
+
+ {
+ std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
+ std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
+ std::swap(this->_M_impl._M_end_of_storage,
+ __x._M_impl._M_end_of_storage);
+
+
+
+ std::__alloc_swap<_Tp_alloc_type>::_S_do_it(_M_get_Tp_allocator(),
+ __x._M_get_Tp_allocator());
+ }
+
+
+
+
+
+
+
+ void
+ clear()
+ { _M_erase_at_end(this->_M_impl._M_start); }
+
+ protected:
+
+
+
+
+ template<typename _ForwardIterator>
+ pointer
+ _M_allocate_and_copy(size_type __n,
+ _ForwardIterator __first, _ForwardIterator __last)
+ {
+ pointer __result = this->_M_allocate(__n);
+ try
+ {
+ std::__uninitialized_copy_a(__first, __last, __result,
+ _M_get_Tp_allocator());
+ return __result;
+ }
+ catch(...)
+ {
+ _M_deallocate(__result, __n);
+ throw;
+ }
+ }
+# 925 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ template<typename _Integer>
+ void
+ _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type)
+ {
+ this->_M_impl._M_start = _M_allocate(static_cast<size_type>(__n));
+ this->_M_impl._M_end_of_storage =
+ this->_M_impl._M_start + static_cast<size_type>(__n);
+ _M_fill_initialize(static_cast<size_type>(__n), __value);
+ }
+
+
+ template<typename _InputIterator>
+ void
+ _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
+ __false_type)
+ {
+ typedef typename std::iterator_traits<_InputIterator>::
+ iterator_category _IterCategory;
+ _M_range_initialize(__first, __last, _IterCategory());
+ }
+
+
+ template<typename _InputIterator>
+ void
+ _M_range_initialize(_InputIterator __first,
+ _InputIterator __last, std::input_iterator_tag)
+ {
+ for (; __first != __last; ++__first)
+ push_back(*__first);
+ }
+
+
+ template<typename _ForwardIterator>
+ void
+ _M_range_initialize(_ForwardIterator __first,
+ _ForwardIterator __last, std::forward_iterator_tag)
+ {
+ const size_type __n = std::distance(__first, __last);
+ this->_M_impl._M_start = this->_M_allocate(__n);
+ this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+ this->_M_impl._M_finish =
+ std::__uninitialized_copy_a(__first, __last,
+ this->_M_impl._M_start,
+ _M_get_Tp_allocator());
+ }
+
+
+
+ void
+ _M_fill_initialize(size_type __n, const value_type& __value)
+ {
+ std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish = this->_M_impl._M_end_of_storage;
+ }
+# 989 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ template<typename _Integer>
+ void
+ _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
+ { _M_fill_assign(__n, __val); }
+
+
+ template<typename _InputIterator>
+ void
+ _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
+ __false_type)
+ {
+ typedef typename std::iterator_traits<_InputIterator>::
+ iterator_category _IterCategory;
+ _M_assign_aux(__first, __last, _IterCategory());
+ }
+
+
+ template<typename _InputIterator>
+ void
+ _M_assign_aux(_InputIterator __first, _InputIterator __last,
+ std::input_iterator_tag);
+
+
+ template<typename _ForwardIterator>
+ void
+ _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
+ std::forward_iterator_tag);
+
+
+
+ void
+ _M_fill_assign(size_type __n, const value_type& __val);
+# 1029 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ template<typename _Integer>
+ void
+ _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val,
+ __true_type)
+ { _M_fill_insert(__pos, __n, __val); }
+
+
+ template<typename _InputIterator>
+ void
+ _M_insert_dispatch(iterator __pos, _InputIterator __first,
+ _InputIterator __last, __false_type)
+ {
+ typedef typename std::iterator_traits<_InputIterator>::
+ iterator_category _IterCategory;
+ _M_range_insert(__pos, __first, __last, _IterCategory());
+ }
+
+
+ template<typename _InputIterator>
+ void
+ _M_range_insert(iterator __pos, _InputIterator __first,
+ _InputIterator __last, std::input_iterator_tag);
+
+
+ template<typename _ForwardIterator>
+ void
+ _M_range_insert(iterator __pos, _ForwardIterator __first,
+ _ForwardIterator __last, std::forward_iterator_tag);
+
+
+
+ void
+ _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
+
+
+
+ void
+ _M_insert_aux(iterator __position, const value_type& __x);
+
+
+
+
+
+
+
+ size_type
+ _M_check_len(size_type __n, const char* __s) const
+ {
+ if (max_size() - size() < __n)
+ __throw_length_error((__s));
+
+ const size_type __len = size() + std::max(size(), __n);
+ return (__len < size() || __len > max_size()) ? max_size() : __len;
+ }
+
+
+
+
+
+ void
+ _M_erase_at_end(pointer __pos)
+ {
+ std::_Destroy(__pos, this->_M_impl._M_finish, _M_get_Tp_allocator());
+ this->_M_impl._M_finish = __pos;
+ }
+ };
+# 1107 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+ { return (__x.size() == __y.size()
+ && std::equal(__x.begin(), __x.end(), __y.begin())); }
+# 1124 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+ { return std::lexicographical_compare(__x.begin(), __x.end(),
+ __y.begin(), __y.end()); }
+
+
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+ { return !(__x == __y); }
+
+
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+ { return __y < __x; }
+
+
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+ { return !(__y < __x); }
+
+
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+ { return !(__x < __y); }
+
+
+ template<typename _Tp, typename _Alloc>
+ inline void
+ swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y)
+ { __x.swap(__y); }
+# 1172 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_vector.h" 3
+}
+# 71 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/vector" 2 3
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_bvector.h" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_bvector.h" 3
+#define _STL_BVECTOR_H 1
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ typedef unsigned long _Bit_type;
+ enum { _S_word_bit = int(8 * sizeof(_Bit_type)) };
+
+ struct _Bit_reference
+ {
+ _Bit_type * _M_p;
+ _Bit_type _M_mask;
+
+ _Bit_reference(_Bit_type * __x, _Bit_type __y)
+ : _M_p(__x), _M_mask(__y) { }
+
+ _Bit_reference() : _M_p(0), _M_mask(0) { }
+
+ operator bool() const
+ { return !!(*_M_p & _M_mask); }
+
+ _Bit_reference&
+ operator=(bool __x)
+ {
+ if (__x)
+ *_M_p |= _M_mask;
+ else
+ *_M_p &= ~_M_mask;
+ return *this;
+ }
+
+ _Bit_reference&
+ operator=(const _Bit_reference& __x)
+ { return *this = bool(__x); }
+
+ bool
+ operator==(const _Bit_reference& __x) const
+ { return bool(*this) == bool(__x); }
+
+ bool
+ operator<(const _Bit_reference& __x) const
+ { return !bool(*this) && bool(__x); }
+
+ void
+ flip()
+ { *_M_p ^= _M_mask; }
+ };
+
+ struct _Bit_iterator_base
+ : public std::iterator<std::random_access_iterator_tag, bool>
+ {
+ _Bit_type * _M_p;
+ unsigned int _M_offset;
+
+ _Bit_iterator_base(_Bit_type * __x, unsigned int __y)
+ : _M_p(__x), _M_offset(__y) { }
+
+ void
+ _M_bump_up()
+ {
+ if (_M_offset++ == int(_S_word_bit) - 1)
+ {
+ _M_offset = 0;
+ ++_M_p;
+ }
+ }
+
+ void
+ _M_bump_down()
+ {
+ if (_M_offset-- == 0)
+ {
+ _M_offset = int(_S_word_bit) - 1;
+ --_M_p;
+ }
+ }
+
+ void
+ _M_incr(ptrdiff_t __i)
+ {
+ difference_type __n = __i + _M_offset;
+ _M_p += __n / int(_S_word_bit);
+ __n = __n % int(_S_word_bit);
+ if (__n < 0)
+ {
+ __n += int(_S_word_bit);
+ --_M_p;
+ }
+ _M_offset = static_cast<unsigned int>(__n);
+ }
+
+ bool
+ operator==(const _Bit_iterator_base& __i) const
+ { return _M_p == __i._M_p && _M_offset == __i._M_offset; }
+
+ bool
+ operator<(const _Bit_iterator_base& __i) const
+ {
+ return _M_p < __i._M_p
+ || (_M_p == __i._M_p && _M_offset < __i._M_offset);
+ }
+
+ bool
+ operator!=(const _Bit_iterator_base& __i) const
+ { return !(*this == __i); }
+
+ bool
+ operator>(const _Bit_iterator_base& __i) const
+ { return __i < *this; }
+
+ bool
+ operator<=(const _Bit_iterator_base& __i) const
+ { return !(__i < *this); }
+
+ bool
+ operator>=(const _Bit_iterator_base& __i) const
+ { return !(*this < __i); }
+ };
+
+ inline ptrdiff_t
+ operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
+ {
+ return (int(_S_word_bit) * (__x._M_p - __y._M_p)
+ + __x._M_offset - __y._M_offset);
+ }
+
+ struct _Bit_iterator : public _Bit_iterator_base
+ {
+ typedef _Bit_reference reference;
+ typedef _Bit_reference* pointer;
+ typedef _Bit_iterator iterator;
+
+ _Bit_iterator() : _Bit_iterator_base(0, 0) { }
+
+ _Bit_iterator(_Bit_type * __x, unsigned int __y)
+ : _Bit_iterator_base(__x, __y) { }
+
+ reference
+ operator*() const
+ { return reference(_M_p, 1UL << _M_offset); }
+
+ iterator&
+ operator++()
+ {
+ _M_bump_up();
+ return *this;
+ }
+
+ iterator
+ operator++(int)
+ {
+ iterator __tmp = *this;
+ _M_bump_up();
+ return __tmp;
+ }
+
+ iterator&
+ operator--()
+ {
+ _M_bump_down();
+ return *this;
+ }
+
+ iterator
+ operator--(int)
+ {
+ iterator __tmp = *this;
+ _M_bump_down();
+ return __tmp;
+ }
+
+ iterator&
+ operator+=(difference_type __i)
+ {
+ _M_incr(__i);
+ return *this;
+ }
+
+ iterator&
+ operator-=(difference_type __i)
+ {
+ *this += -__i;
+ return *this;
+ }
+
+ iterator
+ operator+(difference_type __i) const
+ {
+ iterator __tmp = *this;
+ return __tmp += __i;
+ }
+
+ iterator
+ operator-(difference_type __i) const
+ {
+ iterator __tmp = *this;
+ return __tmp -= __i;
+ }
+
+ reference
+ operator[](difference_type __i) const
+ { return *(*this + __i); }
+ };
+
+ inline _Bit_iterator
+ operator+(ptrdiff_t __n, const _Bit_iterator& __x)
+ { return __x + __n; }
+
+ struct _Bit_const_iterator : public _Bit_iterator_base
+ {
+ typedef bool reference;
+ typedef bool const_reference;
+ typedef const bool* pointer;
+ typedef _Bit_const_iterator const_iterator;
+
+ _Bit_const_iterator() : _Bit_iterator_base(0, 0) { }
+
+ _Bit_const_iterator(_Bit_type * __x, unsigned int __y)
+ : _Bit_iterator_base(__x, __y) { }
+
+ _Bit_const_iterator(const _Bit_iterator& __x)
+ : _Bit_iterator_base(__x._M_p, __x._M_offset) { }
+
+ const_reference
+ operator*() const
+ { return _Bit_reference(_M_p, 1UL << _M_offset); }
+
+ const_iterator&
+ operator++()
+ {
+ _M_bump_up();
+ return *this;
+ }
+
+ const_iterator
+ operator++(int)
+ {
+ const_iterator __tmp = *this;
+ _M_bump_up();
+ return __tmp;
+ }
+
+ const_iterator&
+ operator--()
+ {
+ _M_bump_down();
+ return *this;
+ }
+
+ const_iterator
+ operator--(int)
+ {
+ const_iterator __tmp = *this;
+ _M_bump_down();
+ return __tmp;
+ }
+
+ const_iterator&
+ operator+=(difference_type __i)
+ {
+ _M_incr(__i);
+ return *this;
+ }
+
+ const_iterator&
+ operator-=(difference_type __i)
+ {
+ *this += -__i;
+ return *this;
+ }
+
+ const_iterator
+ operator+(difference_type __i) const
+ {
+ const_iterator __tmp = *this;
+ return __tmp += __i;
+ }
+
+ const_iterator
+ operator-(difference_type __i) const
+ {
+ const_iterator __tmp = *this;
+ return __tmp -= __i;
+ }
+
+ const_reference
+ operator[](difference_type __i) const
+ { return *(*this + __i); }
+ };
+
+ inline _Bit_const_iterator
+ operator+(ptrdiff_t __n, const _Bit_const_iterator& __x)
+ { return __x + __n; }
+
+ inline void
+ __fill_bvector(_Bit_iterator __first, _Bit_iterator __last, bool __x)
+ {
+ for (; __first != __last; ++__first)
+ *__first = __x;
+ }
+
+ inline void
+ fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x)
+ {
+ if (__first._M_p != __last._M_p)
+ {
+ std::fill(__first._M_p + 1, __last._M_p, __x ? ~0 : 0);
+ __fill_bvector(__first, _Bit_iterator(__first._M_p + 1, 0), __x);
+ __fill_bvector(_Bit_iterator(__last._M_p, 0), __last, __x);
+ }
+ else
+ __fill_bvector(__first, __last, __x);
+ }
+
+ template<typename _Alloc>
+ struct _Bvector_base
+ {
+ typedef typename _Alloc::template rebind<_Bit_type>::other
+ _Bit_alloc_type;
+
+ struct _Bvector_impl
+ : public _Bit_alloc_type
+ {
+ _Bit_iterator _M_start;
+ _Bit_iterator _M_finish;
+ _Bit_type* _M_end_of_storage;
+
+ _Bvector_impl()
+ : _Bit_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage(0)
+ { }
+
+ _Bvector_impl(const _Bit_alloc_type& __a)
+ : _Bit_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage(0)
+ { }
+ };
+
+ public:
+ typedef _Alloc allocator_type;
+
+ _Bit_alloc_type&
+ _M_get_Bit_allocator()
+ { return *static_cast<_Bit_alloc_type*>(&this->_M_impl); }
+
+ const _Bit_alloc_type&
+ _M_get_Bit_allocator() const
+ { return *static_cast<const _Bit_alloc_type*>(&this->_M_impl); }
+
+ allocator_type
+ get_allocator() const
+ { return allocator_type(_M_get_Bit_allocator()); }
+
+ _Bvector_base()
+ : _M_impl() { }
+
+ _Bvector_base(const allocator_type& __a)
+ : _M_impl(__a) { }
+# 432 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_bvector.h" 3
+ ~_Bvector_base()
+ { this->_M_deallocate(); }
+
+ protected:
+ _Bvector_impl _M_impl;
+
+ _Bit_type*
+ _M_allocate(size_t __n)
+ { return _M_impl.allocate((__n + int(_S_word_bit) - 1)
+ / int(_S_word_bit)); }
+
+ void
+ _M_deallocate()
+ {
+ if (_M_impl._M_start._M_p)
+ _M_impl.deallocate(_M_impl._M_start._M_p,
+ _M_impl._M_end_of_storage - _M_impl._M_start._M_p);
+ }
+ };
+
+}
+
+
+
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+# 477 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_bvector.h" 3
+template<typename _Alloc>
+ class vector<bool, _Alloc> : protected _Bvector_base<_Alloc>
+ {
+ typedef _Bvector_base<_Alloc> _Base;
+
+ public:
+ typedef bool value_type;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Bit_reference reference;
+ typedef bool const_reference;
+ typedef _Bit_reference* pointer;
+ typedef const bool* const_pointer;
+ typedef _Bit_iterator iterator;
+ typedef _Bit_const_iterator const_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef _Alloc allocator_type;
+
+ allocator_type get_allocator() const
+ { return _Base::get_allocator(); }
+
+ protected:
+ using _Base::_M_allocate;
+ using _Base::_M_deallocate;
+ using _Base::_M_get_Bit_allocator;
+
+ public:
+ vector()
+ : _Base() { }
+
+ explicit
+ vector(const allocator_type& __a)
+ : _Base(__a) { }
+
+ explicit
+ vector(size_type __n, const bool& __value = bool(),
+ const allocator_type& __a = allocator_type())
+ : _Base(__a)
+ {
+ _M_initialize(__n);
+ std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_of_storage,
+ __value ? ~0 : 0);
+ }
+
+ vector(const vector& __x)
+ : _Base(__x._M_get_Bit_allocator())
+ {
+ _M_initialize(__x.size());
+ _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start);
+ }
+
+
+
+
+
+
+ template<typename _InputIterator>
+ vector(_InputIterator __first, _InputIterator __last,
+ const allocator_type& __a = allocator_type())
+ : _Base(__a)
+ {
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_initialize_dispatch(__first, __last, _Integral());
+ }
+
+ ~vector() { }
+
+ vector&
+ operator=(const vector& __x)
+ {
+ if (&__x == this)
+ return *this;
+ if (__x.size() > capacity())
+ {
+ this->_M_deallocate();
+ _M_initialize(__x.size());
+ }
+ this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(),
+ begin());
+ return *this;
+ }
+# 575 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_bvector.h" 3
+ void
+ assign(size_type __n, const bool& __x)
+ { _M_fill_assign(__n, __x); }
+
+ template<typename _InputIterator>
+ void
+ assign(_InputIterator __first, _InputIterator __last)
+ {
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_assign_dispatch(__first, __last, _Integral());
+ }
+
+ iterator
+ begin()
+ { return this->_M_impl._M_start; }
+
+ const_iterator
+ begin() const
+ { return this->_M_impl._M_start; }
+
+ iterator
+ end()
+ { return this->_M_impl._M_finish; }
+
+ const_iterator
+ end() const
+ { return this->_M_impl._M_finish; }
+
+ reverse_iterator
+ rbegin()
+ { return reverse_iterator(end()); }
+
+ const_reverse_iterator
+ rbegin() const
+ { return const_reverse_iterator(end()); }
+
+ reverse_iterator
+ rend()
+ { return reverse_iterator(begin()); }
+
+ const_reverse_iterator
+ rend() const
+ { return const_reverse_iterator(begin()); }
+# 637 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/stl_bvector.h" 3
+ size_type
+ size() const
+ { return size_type(end() - begin()); }
+
+ size_type
+ max_size() const
+ {
+ const size_type __isize =
+ __gnu_cxx::__numeric_traits<difference_type>::__max
+ - int(_S_word_bit) + 1;
+ const size_type __asize = _M_get_Bit_allocator().max_size();
+ return (__asize <= __isize / int(_S_word_bit)
+ ? __asize * int(_S_word_bit) : __isize);
+ }
+
+ size_type
+ capacity() const
+ { return size_type(const_iterator(this->_M_impl._M_end_of_storage, 0)
+ - begin()); }
+
+ bool
+ empty() const
+ { return begin() == end(); }
+
+ reference
+ operator[](size_type __n)
+ {
+ return *iterator(this->_M_impl._M_start._M_p
+ + __n / int(_S_word_bit), __n % int(_S_word_bit));
+ }
+
+ const_reference
+ operator[](size_type __n) const
+ {
+ return *const_iterator(this->_M_impl._M_start._M_p
+ + __n / int(_S_word_bit), __n % int(_S_word_bit));
+ }
+
+ protected:
+ void
+ _M_range_check(size_type __n) const
+ {
+ if (__n >= this->size())
+ __throw_out_of_range(("vector<bool>::_M_range_check"));
+ }
+
+ public:
+ reference
+ at(size_type __n)
+ { _M_range_check(__n); return (*this)[__n]; }
+
+ const_reference
+ at(size_type __n) const
+ { _M_range_check(__n); return (*this)[__n]; }
+
+ void
+ reserve(size_type __n);
+
+ reference
+ front()
+ { return *begin(); }
+
+ const_reference
+ front() const
+ { return *begin(); }
+
+ reference
+ back()
+ { return *(end() - 1); }
+
+ const_reference
+ back() const
+ { return *(end() - 1); }
+
+
+
+
+
+
+ void
+ data() { }
+
+ void
+ push_back(bool __x)
+ {
+ if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage)
+ *this->_M_impl._M_finish++ = __x;
+ else
+ _M_insert_aux(end(), __x);
+ }
+
+ void
+
+
+
+ swap(vector& __x)
+
+ {
+ std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
+ std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
+ std::swap(this->_M_impl._M_end_of_storage,
+ __x._M_impl._M_end_of_storage);
+
+
+
+ std::__alloc_swap<typename _Base::_Bit_alloc_type>::
+ _S_do_it(_M_get_Bit_allocator(), __x._M_get_Bit_allocator());
+ }
+
+
+ static void
+ swap(reference __x, reference __y)
+ {
+ bool __tmp = __x;
+ __x = __y;
+ __y = __tmp;
+ }
+
+ iterator
+ insert(iterator __position, const bool& __x = bool())
+ {
+ const difference_type __n = __position - begin();
+ if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage
+ && __position == end())
+ *this->_M_impl._M_finish++ = __x;
+ else
+ _M_insert_aux(__position, __x);
+ return begin() + __n;
+ }
+
+ template<typename _InputIterator>
+ void
+ insert(iterator __position,
+ _InputIterator __first, _InputIterator __last)
+ {
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_insert_dispatch(__position, __first, __last, _Integral());
+ }
+
+ void
+ insert(iterator __position, size_type __n, const bool& __x)
+ { _M_fill_insert(__position, __n, __x); }
+
+ void
+ pop_back()
+ { --this->_M_impl._M_finish; }
+
+ iterator
+ erase(iterator __position)
+ {
+ if (__position + 1 != end())
+ std::copy(__position + 1, end(), __position);
+ --this->_M_impl._M_finish;
+ return __position;
+ }
+
+ iterator
+ erase(iterator __first, iterator __last)
+ {
+ _M_erase_at_end(std::copy(__last, end(), __first));
+ return __first;
+ }
+
+ void
+ resize(size_type __new_size, bool __x = bool())
+ {
+ if (__new_size < size())
+ _M_erase_at_end(begin() + difference_type(__new_size));
+ else
+ insert(end(), __new_size - size(), __x);
+ }
+
+ void
+ flip()
+ {
+ for (_Bit_type * __p = this->_M_impl._M_start._M_p;
+ __p != this->_M_impl._M_end_of_storage; ++__p)
+ *__p = ~*__p;
+ }
+
+ void
+ clear()
+ { _M_erase_at_end(begin()); }
+
+
+ protected:
+
+ iterator
+ _M_copy_aligned(const_iterator __first, const_iterator __last,
+ iterator __result)
+ {
+ _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p);
+ return std::copy(const_iterator(__last._M_p, 0), __last,
+ iterator(__q, 0));
+ }
+
+ void
+ _M_initialize(size_type __n)
+ {
+ _Bit_type* __q = this->_M_allocate(__n);
+ this->_M_impl._M_end_of_storage = (__q
+ + ((__n + int(_S_word_bit) - 1)
+ / int(_S_word_bit)));
+ this->_M_impl._M_start = iterator(__q, 0);
+ this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n);
+ }
+
+
+
+
+
+ template<typename _Integer>
+ void
+ _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
+ {
+ _M_initialize(static_cast<size_type>(__n));
+ std::fill(this->_M_impl._M_start._M_p,
+ this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
+ }
+
+ template<typename _InputIterator>
+ void
+ _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
+ __false_type)
+ { _M_initialize_range(__first, __last,
+ std::__iterator_category(__first)); }
+
+ template<typename _InputIterator>
+ void
+ _M_initialize_range(_InputIterator __first, _InputIterator __last,
+ std::input_iterator_tag)
+ {
+ for (; __first != __last; ++__first)
+ push_back(*__first);
+ }
+
+ template<typename _ForwardIterator>
+ void
+ _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last,
+ std::forward_iterator_tag)
+ {
+ const size_type __n = std::distance(__first, __last);
+ _M_initialize(__n);
+ std::copy(__first, __last, this->_M_impl._M_start);
+ }
+
+
+
+ template<typename _Integer>
+ void
+ _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
+ { _M_fill_assign(__n, __val); }
+
+ template<class _InputIterator>
+ void
+ _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
+ __false_type)
+ { _M_assign_aux(__first, __last, std::__iterator_category(__first)); }
+
+ void
+ _M_fill_assign(size_t __n, bool __x)
+ {
+ if (__n > size())
+ {
+ std::fill(this->_M_impl._M_start._M_p,
+ this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
+ insert(end(), __n - size(), __x);
+ }
+ else
+ {
+ _M_erase_at_end(begin() + __n);
+ std::fill(this->_M_impl._M_start._M_p,
+ this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
+ }
+ }
+
+ template<typename _InputIterator>
+ void
+ _M_assign_aux(_InputIterator __first, _InputIterator __last,
+ std::input_iterator_tag)
+ {
+ iterator __cur = begin();
+ for (; __first != __last && __cur != end(); ++__cur, ++__first)
+ *__cur = *__first;
+ if (__first == __last)
+ _M_erase_at_end(__cur);
+ else
+ insert(end(), __first, __last);
+ }
+
+ template<typename _ForwardIterator>
+ void
+ _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
+ std::forward_iterator_tag)
+ {
+ const size_type __len = std::distance(__first, __last);
+ if (__len < size())
+ _M_erase_at_end(std::copy(__first, __last, begin()));
+ else
+ {
+ _ForwardIterator __mid = __first;
+ std::advance(__mid, size());
+ std::copy(__first, __mid, begin());
+ insert(end(), __mid, __last);
+ }
+ }
+
+
+
+
+
+ template<typename _Integer>
+ void
+ _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x,
+ __true_type)
+ { _M_fill_insert(__pos, __n, __x); }
+
+ template<typename _InputIterator>
+ void
+ _M_insert_dispatch(iterator __pos,
+ _InputIterator __first, _InputIterator __last,
+ __false_type)
+ { _M_insert_range(__pos, __first, __last,
+ std::__iterator_category(__first)); }
+
+ void
+ _M_fill_insert(iterator __position, size_type __n, bool __x);
+
+ template<typename _InputIterator>
+ void
+ _M_insert_range(iterator __pos, _InputIterator __first,
+ _InputIterator __last, std::input_iterator_tag)
+ {
+ for (; __first != __last; ++__first)
+ {
+ __pos = insert(__pos, *__first);
+ ++__pos;
+ }
+ }
+
+ template<typename _ForwardIterator>
+ void
+ _M_insert_range(iterator __position, _ForwardIterator __first,
+ _ForwardIterator __last, std::forward_iterator_tag);
+
+ void
+ _M_insert_aux(iterator __position, bool __x);
+
+ size_type
+ _M_check_len(size_type __n, const char* __s) const
+ {
+ if (max_size() - size() < __n)
+ __throw_length_error((__s));
+
+ const size_type __len = size() + std::max(size(), __n);
+ return (__len < size() || __len > max_size()) ? max_size() : __len;
+ }
+
+ void
+ _M_erase_at_end(iterator __pos)
+ { this->_M_impl._M_finish = __pos; }
+ };
+
+}
+# 72 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/vector" 2 3
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/vector.tcc" 1 3
+# 63 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/vector.tcc" 3
+#define _VECTOR_TCC 1
+
+namespace std __attribute__ ((__visibility__ ("default"))) {
+
+ template<typename _Tp, typename _Alloc>
+ void
+ vector<_Tp, _Alloc>::
+ reserve(size_type __n)
+ {
+ if (__n > this->max_size())
+ __throw_length_error(("vector::reserve"));
+ if (this->capacity() < __n)
+ {
+ const size_type __old_size = size();
+ pointer __tmp = _M_allocate_and_copy(__n,
+ (this->_M_impl._M_start),
+ (this->_M_impl._M_finish));
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(this->_M_impl._M_start,
+ this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start);
+ this->_M_impl._M_start = __tmp;
+ this->_M_impl._M_finish = __tmp + __old_size;
+ this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+ }
+ }
+
+ template<typename _Tp, typename _Alloc>
+ typename vector<_Tp, _Alloc>::iterator
+ vector<_Tp, _Alloc>::
+ insert(iterator __position, const value_type& __x)
+ {
+ const size_type __n = __position - begin();
+ if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage
+ && __position == end())
+ {
+ this->_M_impl.construct(this->_M_impl._M_finish, __x);
+ ++this->_M_impl._M_finish;
+ }
+ else
+ {
+# 113 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/vector.tcc" 3
+ _M_insert_aux(__position, __x);
+ }
+ return iterator(this->_M_impl._M_start + __n);
+ }
+
+ template<typename _Tp, typename _Alloc>
+ typename vector<_Tp, _Alloc>::iterator
+ vector<_Tp, _Alloc>::
+ erase(iterator __position)
+ {
+ if (__position + 1 != end())
+ std::copy(__position + 1, end(), __position);
+ --this->_M_impl._M_finish;
+ this->_M_impl.destroy(this->_M_impl._M_finish);
+ return __position;
+ }
+
+ template<typename _Tp, typename _Alloc>
+ typename vector<_Tp, _Alloc>::iterator
+ vector<_Tp, _Alloc>::
+ erase(iterator __first, iterator __last)
+ {
+ if (__last != end())
+ std::copy(__last, end(), __first);
+ _M_erase_at_end(__first.base() + (end() - __last));
+ return __first;
+ }
+
+ template<typename _Tp, typename _Alloc>
+ vector<_Tp, _Alloc>&
+ vector<_Tp, _Alloc>::
+ operator=(const vector<_Tp, _Alloc>& __x)
+ {
+ if (&__x != this)
+ {
+ const size_type __xlen = __x.size();
+ if (__xlen > capacity())
+ {
+ pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(),
+ __x.end());
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(this->_M_impl._M_start,
+ this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start);
+ this->_M_impl._M_start = __tmp;
+ this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen;
+ }
+ else if (size() >= __xlen)
+ {
+ std::_Destroy(std::copy(__x.begin(), __x.end(), begin()),
+ end(), _M_get_Tp_allocator());
+ }
+ else
+ {
+ std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(),
+ this->_M_impl._M_start);
+ std::__uninitialized_copy_a(__x._M_impl._M_start + size(),
+ __x._M_impl._M_finish,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ }
+ this->_M_impl._M_finish = this->_M_impl._M_start + __xlen;
+ }
+ return *this;
+ }
+
+ template<typename _Tp, typename _Alloc>
+ void
+ vector<_Tp, _Alloc>::
+ _M_fill_assign(size_t __n, const value_type& __val)
+ {
+ if (__n > capacity())
+ {
+ vector __tmp(__n, __val, _M_get_Tp_allocator());
+ __tmp.swap(*this);
+ }
+ else if (__n > size())
+ {
+ std::fill(begin(), end(), __val);
+ std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
+ __n - size(), __val,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __n - size();
+ }
+ else
+ _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val));
+ }
+
+ template<typename _Tp, typename _Alloc>
+ template<typename _InputIterator>
+ void
+ vector<_Tp, _Alloc>::
+ _M_assign_aux(_InputIterator __first, _InputIterator __last,
+ std::input_iterator_tag)
+ {
+ pointer __cur(this->_M_impl._M_start);
+ for (; __first != __last && __cur != this->_M_impl._M_finish;
+ ++__cur, ++__first)
+ *__cur = *__first;
+ if (__first == __last)
+ _M_erase_at_end(__cur);
+ else
+ insert(end(), __first, __last);
+ }
+
+ template<typename _Tp, typename _Alloc>
+ template<typename _ForwardIterator>
+ void
+ vector<_Tp, _Alloc>::
+ _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
+ std::forward_iterator_tag)
+ {
+ const size_type __len = std::distance(__first, __last);
+
+ if (__len > capacity())
+ {
+ pointer __tmp(_M_allocate_and_copy(__len, __first, __last));
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(this->_M_impl._M_start,
+ this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start);
+ this->_M_impl._M_start = __tmp;
+ this->_M_impl._M_finish = this->_M_impl._M_start + __len;
+ this->_M_impl._M_end_of_storage = this->_M_impl._M_finish;
+ }
+ else if (size() >= __len)
+ _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start));
+ else
+ {
+ _ForwardIterator __mid = __first;
+ std::advance(__mid, size());
+ std::copy(__first, __mid, this->_M_impl._M_start);
+ this->_M_impl._M_finish =
+ std::__uninitialized_copy_a(__mid, __last,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ }
+ }
+# 280 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/bits/vector.tcc" 3
+ template<typename _Tp, typename _Alloc>
+ void
+ vector<_Tp, _Alloc>::
+ _M_insert_aux(iterator __position, const _Tp& __x)
+
+ {
+ if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
+ {
+ this->_M_impl.construct(this->_M_impl._M_finish,
+ (*(this->_M_impl._M_finish - 1)));
+
+ ++this->_M_impl._M_finish;
+
+ _Tp __x_copy = __x;
+
+ std::copy_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1);
+
+
+
+ *__position = __x_copy;
+
+
+
+ }
+ else
+ {
+ const size_type __len =
+ _M_check_len(size_type(1), "vector::_M_insert_aux");
+ pointer __new_start(this->_M_allocate(__len));
+ pointer __new_finish(__new_start);
+ try
+ {
+
+
+
+
+ __new_finish =
+ std::__uninitialized_move_a(this->_M_impl._M_start,
+ __position.base(), __new_start,
+ _M_get_Tp_allocator());
+
+ this->_M_impl.construct(__new_finish, __x);
+
+ ++__new_finish;
+ __new_finish =
+ std::__uninitialized_move_a(__position.base(),
+ this->_M_impl._M_finish,
+ __new_finish,
+ _M_get_Tp_allocator());
+ }
+ catch(...)
+ {
+ std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator());
+ _M_deallocate(__new_start, __len);
+ throw;
+ }
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(this->_M_impl._M_start,
+ this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start);
+ this->_M_impl._M_start = __new_start;
+ this->_M_impl._M_finish = __new_finish;
+ this->_M_impl._M_end_of_storage = __new_start + __len;
+ }
+ }
+
+ template<typename _Tp, typename _Alloc>
+ void
+ vector<_Tp, _Alloc>::
+ _M_fill_insert(iterator __position, size_type __n, const value_type& __x)
+ {
+ if (__n != 0)
+ {
+
+
+
+ if (size_type(this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_finish) >= __n)
+ {
+
+ value_type __x_copy = __x;
+
+ const size_type __elems_after = end() - __position;
+ pointer __old_finish(this->_M_impl._M_finish);
+ if (__elems_after > __n)
+ {
+ std::__uninitialized_move_a(this->_M_impl._M_finish - __n,
+ this->_M_impl._M_finish,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __n;
+ std::copy_backward(__position.base(), __old_finish - __n, __old_finish);
+
+ std::fill(__position.base(), __position.base() + __n,
+ __x_copy);
+ }
+ else
+ {
+ std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
+ __n - __elems_after,
+ __x_copy,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __n - __elems_after;
+ std::__uninitialized_move_a(__position.base(), __old_finish,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __elems_after;
+ std::fill(__position.base(), __old_finish, __x_copy);
+ }
+ }
+ else
+ {
+ const size_type __len =
+ _M_check_len(__n, "vector::_M_fill_insert");
+ pointer __new_start(this->_M_allocate(__len));
+ pointer __new_finish(__new_start);
+ try
+ {
+ __new_finish =
+ std::__uninitialized_move_a(this->_M_impl._M_start,
+ __position.base(),
+ __new_start,
+ _M_get_Tp_allocator());
+
+
+
+ std::__uninitialized_fill_n_a(__new_finish, __n, __x,
+
+ _M_get_Tp_allocator());
+ __new_finish += __n;
+ __new_finish =
+ std::__uninitialized_move_a(__position.base(),
+ this->_M_impl._M_finish,
+ __new_finish,
+ _M_get_Tp_allocator());
+ }
+ catch(...)
+ {
+ std::_Destroy(__new_start, __new_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(__new_start, __len);
+ throw;
+ }
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(this->_M_impl._M_start,
+ this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start);
+ this->_M_impl._M_start = __new_start;
+ this->_M_impl._M_finish = __new_finish;
+ this->_M_impl._M_end_of_storage = __new_start + __len;
+ }
+ }
+ }
+
+ template<typename _Tp, typename _Alloc>
+ template<typename _InputIterator>
+ void
+ vector<_Tp, _Alloc>::
+ _M_range_insert(iterator __pos, _InputIterator __first,
+ _InputIterator __last, std::input_iterator_tag)
+ {
+ for (; __first != __last; ++__first)
+ {
+ __pos = insert(__pos, *__first);
+ ++__pos;
+ }
+ }
+
+ template<typename _Tp, typename _Alloc>
+ template<typename _ForwardIterator>
+ void
+ vector<_Tp, _Alloc>::
+ _M_range_insert(iterator __position, _ForwardIterator __first,
+ _ForwardIterator __last, std::forward_iterator_tag)
+ {
+ if (__first != __last)
+ {
+ const size_type __n = std::distance(__first, __last);
+ if (size_type(this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_finish) >= __n)
+ {
+ const size_type __elems_after = end() - __position;
+ pointer __old_finish(this->_M_impl._M_finish);
+ if (__elems_after > __n)
+ {
+ std::__uninitialized_move_a(this->_M_impl._M_finish - __n,
+ this->_M_impl._M_finish,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __n;
+ std::copy_backward(__position.base(), __old_finish - __n, __old_finish);
+
+ std::copy(__first, __last, __position);
+ }
+ else
+ {
+ _ForwardIterator __mid = __first;
+ std::advance(__mid, __elems_after);
+ std::__uninitialized_copy_a(__mid, __last,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __n - __elems_after;
+ std::__uninitialized_move_a(__position.base(),
+ __old_finish,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __elems_after;
+ std::copy(__first, __mid, __position);
+ }
+ }
+ else
+ {
+ const size_type __len =
+ _M_check_len(__n, "vector::_M_range_insert");
+ pointer __new_start(this->_M_allocate(__len));
+ pointer __new_finish(__new_start);
+ try
+ {
+ __new_finish =
+ std::__uninitialized_move_a(this->_M_impl._M_start,
+ __position.base(),
+ __new_start,
+ _M_get_Tp_allocator());
+ __new_finish =
+ std::__uninitialized_copy_a(__first, __last,
+ __new_finish,
+ _M_get_Tp_allocator());
+ __new_finish =
+ std::__uninitialized_move_a(__position.base(),
+ this->_M_impl._M_finish,
+ __new_finish,
+ _M_get_Tp_allocator());
+ }
+ catch(...)
+ {
+ std::_Destroy(__new_start, __new_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(__new_start, __len);
+ throw;
+ }
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(this->_M_impl._M_start,
+ this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start);
+ this->_M_impl._M_start = __new_start;
+ this->_M_impl._M_finish = __new_finish;
+ this->_M_impl._M_end_of_storage = __new_start + __len;
+ }
+ }
+ }
+
+
+
+
+ template<typename _Alloc>
+ void
+ vector<bool, _Alloc>::
+ reserve(size_type __n)
+ {
+ if (__n > this->max_size())
+ __throw_length_error(("vector::reserve"));
+ if (this->capacity() < __n)
+ {
+ _Bit_type* __q = this->_M_allocate(__n);
+ this->_M_impl._M_finish = _M_copy_aligned(begin(), end(),
+ iterator(__q, 0));
+ this->_M_deallocate();
+ this->_M_impl._M_start = iterator(__q, 0);
+ this->_M_impl._M_end_of_storage = (__q + (__n + int(_S_word_bit) - 1)
+ / int(_S_word_bit));
+ }
+ }
+
+ template<typename _Alloc>
+ void
+ vector<bool, _Alloc>::
+ _M_fill_insert(iterator __position, size_type __n, bool __x)
+ {
+ if (__n == 0)
+ return;
+ if (capacity() - size() >= __n)
+ {
+ std::copy_backward(__position, end(),
+ this->_M_impl._M_finish + difference_type(__n));
+ std::fill(__position, __position + difference_type(__n), __x);
+ this->_M_impl._M_finish += difference_type(__n);
+ }
+ else
+ {
+ const size_type __len =
+ _M_check_len(__n, "vector<bool>::_M_fill_insert");
+ _Bit_type * __q = this->_M_allocate(__len);
+ iterator __i = _M_copy_aligned(begin(), __position,
+ iterator(__q, 0));
+ std::fill(__i, __i + difference_type(__n), __x);
+ this->_M_impl._M_finish = std::copy(__position, end(),
+ __i + difference_type(__n));
+ this->_M_deallocate();
+ this->_M_impl._M_end_of_storage = (__q + ((__len
+ + int(_S_word_bit) - 1)
+ / int(_S_word_bit)));
+ this->_M_impl._M_start = iterator(__q, 0);
+ }
+ }
+
+ template<typename _Alloc>
+ template<typename _ForwardIterator>
+ void
+ vector<bool, _Alloc>::
+ _M_insert_range(iterator __position, _ForwardIterator __first,
+ _ForwardIterator __last, std::forward_iterator_tag)
+ {
+ if (__first != __last)
+ {
+ size_type __n = std::distance(__first, __last);
+ if (capacity() - size() >= __n)
+ {
+ std::copy_backward(__position, end(),
+ this->_M_impl._M_finish
+ + difference_type(__n));
+ std::copy(__first, __last, __position);
+ this->_M_impl._M_finish += difference_type(__n);
+ }
+ else
+ {
+ const size_type __len =
+ _M_check_len(__n, "vector<bool>::_M_insert_range");
+ _Bit_type * __q = this->_M_allocate(__len);
+ iterator __i = _M_copy_aligned(begin(), __position,
+ iterator(__q, 0));
+ __i = std::copy(__first, __last, __i);
+ this->_M_impl._M_finish = std::copy(__position, end(), __i);
+ this->_M_deallocate();
+ this->_M_impl._M_end_of_storage = (__q
+ + ((__len
+ + int(_S_word_bit) - 1)
+ / int(_S_word_bit)));
+ this->_M_impl._M_start = iterator(__q, 0);
+ }
+ }
+ }
+
+ template<typename _Alloc>
+ void
+ vector<bool, _Alloc>::
+ _M_insert_aux(iterator __position, bool __x)
+ {
+ if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage)
+ {
+ std::copy_backward(__position, this->_M_impl._M_finish,
+ this->_M_impl._M_finish + 1);
+ *__position = __x;
+ ++this->_M_impl._M_finish;
+ }
+ else
+ {
+ const size_type __len =
+ _M_check_len(size_type(1), "vector<bool>::_M_insert_aux");
+ _Bit_type * __q = this->_M_allocate(__len);
+ iterator __i = _M_copy_aligned(begin(), __position,
+ iterator(__q, 0));
+ *__i++ = __x;
+ this->_M_impl._M_finish = std::copy(__position, end(), __i);
+ this->_M_deallocate();
+ this->_M_impl._M_end_of_storage = (__q + ((__len
+ + int(_S_word_bit) - 1)
+ / int(_S_word_bit)));
+ this->_M_impl._M_start = iterator(__q, 0);
+ }
+ }
+
+}
+# 75 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/c++/vector" 2 3
+# 53 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvector.h" 2
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 1 3 4
+# 28 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+#define __need_size_t
+
+
+
+
+#define __need_NULL
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 163 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 236 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 398 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 409 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 36 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 2 3 4
+
+extern "C" {
+
+
+#define _STDLIB_H 1
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/waitflags.h" 1 3 4
+# 26 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/waitflags.h" 3 4
+#define WNOHANG 1
+#define WUNTRACED 2
+
+
+#define WSTOPPED 2
+#define WEXITED 4
+#define WCONTINUED 8
+#define WNOWAIT 0x01000000
+
+#define __WNOTHREAD 0x20000000
+
+#define __WALL 0x40000000
+#define __WCLONE 0x80000000
+# 45 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 2 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/waitstatus.h" 1 3 4
+# 29 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/waitstatus.h" 3 4
+#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
+
+
+#define __WTERMSIG(status) ((status) & 0x7f)
+
+
+#define __WSTOPSIG(status) __WEXITSTATUS(status)
+
+
+#define __WIFEXITED(status) (__WTERMSIG(status) == 0)
+
+
+#define __WIFSIGNALED(status) (((signed char) (((status) & 0x7f) + 1) >> 1) > 0)
+
+
+
+#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
+
+
+
+
+#define __WIFCONTINUED(status) ((status) == __W_CONTINUED)
+
+
+
+#define __WCOREDUMP(status) ((status) & __WCOREFLAG)
+
+
+#define __W_EXITCODE(ret,sig) ((ret) << 8 | (sig))
+#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f)
+#define __W_CONTINUED 0xffff
+#define __WCOREFLAG 0x80
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/endian.h" 1 3 4
+# 20 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/endian.h" 3 4
+#define _ENDIAN_H 1
+# 32 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/endian.h" 3 4
+#define __LITTLE_ENDIAN 1234
+#define __BIG_ENDIAN 4321
+#define __PDP_ENDIAN 3412
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/endian.h" 1 3 4
+
+
+
+
+
+
+#define __BYTE_ORDER __LITTLE_ENDIAN
+# 38 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/endian.h" 2 3 4
+
+
+
+
+#define __FLOAT_WORD_ORDER __BYTE_ORDER
+
+
+
+#define LITTLE_ENDIAN __LITTLE_ENDIAN
+#define BIG_ENDIAN __BIG_ENDIAN
+#define PDP_ENDIAN __PDP_ENDIAN
+#define BYTE_ORDER __BYTE_ORDER
+
+
+
+#define __LONG_LONG_PAIR(HI,LO) LO, HI
+# 66 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/waitstatus.h" 2 3 4
+
+union wait
+ {
+ int w_status;
+ struct
+ {
+
+ unsigned int __w_termsig:7;
+ unsigned int __w_coredump:1;
+ unsigned int __w_retcode:8;
+ unsigned int:16;
+
+
+
+
+
+
+
+ } __wait_terminated;
+ struct
+ {
+
+ unsigned int __w_stopval:8;
+ unsigned int __w_stopsig:8;
+ unsigned int:16;
+
+
+
+
+
+
+ } __wait_stopped;
+ };
+
+#define w_termsig __wait_terminated.__w_termsig
+#define w_coredump __wait_terminated.__w_coredump
+#define w_retcode __wait_terminated.__w_retcode
+#define w_stopsig __wait_stopped.__w_stopsig
+#define w_stopval __wait_stopped.__w_stopval
+# 46 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 2 3 4
+# 57 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+#define __WAIT_INT(status) (*(int *) &(status))
+# 66 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+#define __WAIT_STATUS void *
+#define __WAIT_STATUS_DEFN void *
+# 87 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+#define WEXITSTATUS(status) __WEXITSTATUS(__WAIT_INT(status))
+#define WTERMSIG(status) __WTERMSIG(__WAIT_INT(status))
+#define WSTOPSIG(status) __WSTOPSIG(__WAIT_INT(status))
+#define WIFEXITED(status) __WIFEXITED(__WAIT_INT(status))
+#define WIFSIGNALED(status) __WIFSIGNALED(__WAIT_INT(status))
+#define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status))
+
+
+
+
+
+
+
+typedef struct
+ {
+ int quot;
+ int rem;
+ } div_t;
+
+
+
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } ldiv_t;
+#define __ldiv_t_defined 1
+
+
+
+
+
+
+__extension__ typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } lldiv_t;
+#define __lldiv_t_defined 1
+
+
+
+
+
+#define RAND_MAX 2147483647
+
+
+
+
+#define EXIT_FAILURE 1
+#define EXIT_SUCCESS 0
+# 151 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+
+
+
+extern double atof (__const char *__nptr)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+extern int atoi (__const char *__nptr)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern long int atol (__const char *__nptr)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+__extension__ extern long long int atoll (__const char *__nptr)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+
+extern double strtod (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern float strtof (__const char *__restrict __nptr,
+ char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))) ;
+
+extern long double strtold (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+
+extern long int strtol (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+# 297 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern char *l64a (long int __n) throw () ;
+
+
+extern long int a64l (__const char *__s)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 1 3 4
+# 25 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 3 4
+#define _SYS_TYPES_H 1
+
+
+
+extern "C" {
+
+
+
+
+
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+#define __u_char_defined
+
+
+
+typedef __loff_t loff_t;
+
+
+
+typedef __ino_t ino_t;
+
+
+
+#define __ino_t_defined
+
+
+typedef __ino64_t ino64_t;
+#define __ino64_t_defined
+
+
+
+typedef __dev_t dev_t;
+#define __dev_t_defined
+# 72 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 3 4
+typedef __mode_t mode_t;
+#define __mode_t_defined
+
+
+
+typedef __nlink_t nlink_t;
+#define __nlink_t_defined
+# 105 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 3 4
+typedef __id_t id_t;
+#define __id_t_defined
+# 116 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 3 4
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+#define __daddr_t_defined
+
+
+
+
+typedef __key_t key_t;
+#define __key_t_defined
+
+
+
+#define __need_clock_t
+
+#define __need_time_t
+#define __need_timer_t
+#define __need_clockid_t
+# 141 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 3 4
+typedef __suseconds_t suseconds_t;
+#define __suseconds_t_defined
+
+
+
+#define __need_size_t
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 163 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 236 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 398 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 409 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 148 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 2 3 4
+
+
+
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+# 188 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 3 4
+#define __intN_t(N,MODE) typedef int int ##N ##_t __attribute__ ((__mode__ (MODE)))
+
+#define __u_intN_t(N,MODE) typedef unsigned int u_int ##N ##_t __attribute__ ((__mode__ (MODE)))
+# 201 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 3 4
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+
+
+
+
+
+#define __BIT_TYPES_DEFINED__ 1
+
+
+
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/select.h" 1 3 4
+# 23 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/select.h" 3 4
+#define _SYS_SELECT_H 1
+
+
+
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/select.h" 1 3 4
+# 26 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/select.h" 3 4
+#define __FD_ZERO(s) do { unsigned int __i; fd_set *__arr = (s); for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) __FDS_BITS (__arr)[__i] = 0; } while (0)
+
+
+
+
+
+
+#define __FD_SET(d,s) (__FDS_BITS (s)[__FDELT(d)] |= __FDMASK(d))
+#define __FD_CLR(d,s) (__FDS_BITS (s)[__FDELT(d)] &= ~__FDMASK(d))
+#define __FD_ISSET(d,s) ((__FDS_BITS (s)[__FDELT(d)] & __FDMASK(d)) != 0)
+# 32 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/select.h" 2 3 4
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/sigset.h" 1 3 4
+# 35 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/select.h" 2 3 4
+
+
+
+
+
+
+
+#define __need_time_t
+#define __need_timespec
+
+#define __need_timeval
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/time.h" 1 3 4
+# 66 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/time.h" 3 4
+#undef __need_timeval
+
+#define _STRUCT_TIMEVAL 1
+
+
+
+
+struct timeval
+ {
+ __time_t tv_sec;
+ __suseconds_t tv_usec;
+ };
+# 47 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/select.h" 2 3 4
+# 55 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/select.h" 3 4
+typedef long int __fd_mask;
+
+
+#undef __NFDBITS
+#undef __FDELT
+#undef __FDMASK
+
+#define __NFDBITS (8 * sizeof (__fd_mask))
+#define __FDELT(d) ((d) / __NFDBITS)
+#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS))
+
+
+typedef struct
+ {
+
+
+
+ __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
+#define __FDS_BITS(set) ((set)->fds_bits)
+
+
+
+
+ } fd_set;
+
+
+#define FD_SETSIZE __FD_SETSIZE
+
+
+
+typedef __fd_mask fd_mask;
+
+
+#define NFDBITS __NFDBITS
+
+
+
+
+#define FD_SET(fd,fdsetp) __FD_SET (fd, fdsetp)
+#define FD_CLR(fd,fdsetp) __FD_CLR (fd, fdsetp)
+#define FD_ISSET(fd,fdsetp) __FD_ISSET (fd, fdsetp)
+#define FD_ZERO(fdsetp) __FD_ZERO (fdsetp)
+
+
+extern "C" {
+# 109 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/select.h" 3 4
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ struct timeval *__restrict __timeout);
+# 121 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/select.h" 3 4
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+ const __sigset_t *__restrict __sigmask);
+
+
+}
+# 221 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 2 3 4
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/sysmacros.h" 1 3 4
+# 21 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/sysmacros.h" 3 4
+#define _SYS_SYSMACROS_H 1
+
+
+
+
+
+
+
+__extension__
+static __inline unsigned int gnu_dev_major (unsigned long long int __dev)
+ throw ();
+__extension__
+static __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
+ throw ();
+__extension__
+static __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
+ unsigned int __minor)
+ throw ();
+
+
+__extension__ static __inline unsigned int
+gnu_dev_major (unsigned long long int __dev) throw ()
+{
+ return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
+}
+
+__extension__ static __inline unsigned int
+gnu_dev_minor (unsigned long long int __dev) throw ()
+{
+ return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
+}
+
+__extension__ static __inline unsigned long long int
+gnu_dev_makedev (unsigned int __major, unsigned int __minor) throw ()
+{
+ return ((__minor & 0xff) | ((__major & 0xfff) << 8)
+ | (((unsigned long long int) (__minor & ~0xff)) << 12)
+ | (((unsigned long long int) (__major & ~0xfff)) << 32));
+}
+
+
+
+
+#define major(dev) gnu_dev_major (dev)
+#define minor(dev) gnu_dev_minor (dev)
+#define makedev(maj,min) gnu_dev_makedev (maj, min)
+# 224 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 2 3 4
+
+
+
+
+typedef __blksize_t blksize_t;
+#define __blksize_t_defined
+
+
+
+
+
+typedef __blkcnt_t blkcnt_t;
+#define __blkcnt_t_defined
+
+
+typedef __fsblkcnt_t fsblkcnt_t;
+#define __fsblkcnt_t_defined
+
+
+typedef __fsfilcnt_t fsfilcnt_t;
+#define __fsfilcnt_t_defined
+# 262 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 3 4
+typedef __blkcnt64_t blkcnt64_t;
+typedef __fsblkcnt64_t fsblkcnt64_t;
+typedef __fsfilcnt64_t fsfilcnt64_t;
+
+
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/pthreadtypes.h" 1 3 4
+# 271 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/sys/types.h" 2 3 4
+
+
+}
+# 307 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 2 3 4
+
+
+
+
+
+
+extern long int random (void) throw ();
+
+
+extern void srandom (unsigned int __seed) throw ();
+
+
+
+
+
+extern char *initstate (unsigned int __seed, char *__statebuf,
+ size_t __statelen) throw () __attribute__ ((__nonnull__ (2)));
+
+
+
+extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+struct random_data
+ {
+ int32_t *fptr;
+ int32_t *rptr;
+ int32_t *state;
+ int rand_type;
+ int rand_deg;
+ int rand_sep;
+ int32_t *end_ptr;
+ };
+
+extern int random_r (struct random_data *__restrict __buf,
+ int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
+
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+ throw () __attribute__ ((__nonnull__ (2)));
+
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+ size_t __statelen,
+ struct random_data *__restrict __buf)
+ throw () __attribute__ ((__nonnull__ (2, 4)));
+
+extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern int rand (void) throw ();
+
+extern void srand (unsigned int __seed) throw ();
+
+
+
+
+extern int rand_r (unsigned int *__seed) throw ();
+# 382 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern double drand48 (void) throw ();
+extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+extern long int lrand48 (void) throw ();
+extern long int nrand48 (unsigned short int __xsubi[3])
+ throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern long int mrand48 (void) throw ();
+extern long int jrand48 (unsigned short int __xsubi[3])
+ throw () __attribute__ ((__nonnull__ (1)));
+
+
+extern void srand48 (long int __seedval) throw ();
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+ throw () __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+struct drand48_data
+ {
+ unsigned short int __x[3];
+ unsigned short int __old_x[3];
+ unsigned short int __c;
+ unsigned short int __init;
+ unsigned long long int __a;
+ };
+
+
+
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+ double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+ throw () __attribute__ ((__nonnull__ (2)));
+
+extern int seed48_r (unsigned short int __seed16v[3],
+ struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2)));
+
+extern int lcong48_r (unsigned short int __param[7],
+ struct drand48_data *__buffer)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+#define __malloc_and_calloc_defined
+
+
+extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) ;
+
+extern void *calloc (size_t __nmemb, size_t __size)
+ throw () __attribute__ ((__malloc__)) ;
+
+
+
+
+
+
+
+extern void *realloc (void *__ptr, size_t __size)
+ throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+
+extern void free (void *__ptr) throw ();
+
+
+
+
+extern void cfree (void *__ptr) throw ();
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/alloca.h" 1 3 4
+# 20 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/alloca.h" 3 4
+#define _ALLOCA_H 1
+
+
+
+#define __need_size_t
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 1 3 4
+# 163 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_ptrdiff_t
+# 236 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_size_t
+# 345 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_wchar_t
+# 398 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef NULL
+
+#define NULL __null
+# 409 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include/stddef.h" 3 4
+#undef __need_NULL
+
+
+
+
+#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
+# 26 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/alloca.h" 2 3 4
+
+extern "C" {
+
+
+#undef alloca
+
+
+extern void *alloca (size_t __size) throw ();
+
+
+#define alloca(size) __builtin_alloca (size)
+
+
+#define __MAX_ALLOCA_CUTOFF 65536
+
+}
+# 485 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 2 3 4
+
+
+
+
+extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) ;
+
+
+
+
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+extern void abort (void) throw () __attribute__ ((__noreturn__));
+
+
+
+extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+ throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern void exit (int __status) throw () __attribute__ ((__noreturn__));
+
+
+
+
+
+
+extern void _Exit (int __status) throw () __attribute__ ((__noreturn__));
+
+
+
+
+
+
+extern char *getenv (__const char *__name) throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+extern char *__secure_getenv (__const char *__name)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+ throw () __attribute__ ((__nonnull__ (2)));
+
+
+extern int unsetenv (__const char *__name) throw ();
+
+
+
+
+
+#define __UCLIBC_MAX_ATEXIT INT_MAX
+# 570 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern int clearenv (void) throw ();
+# 579 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ;
+# 590 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
+# 600 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
+# 610 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+
+
+
+extern int system (__const char *__command) ;
+
+# 639 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern char *realpath (__const char *__restrict __name,
+ char *__restrict __resolved) throw () __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+#define __COMPAR_FN_T
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+
+
+typedef __compar_fn_t comparison_fn_t;
+
+
+
+
+
+
+extern void *bsearch (__const void *__key, __const void *__base,
+ size_t __nmemb, size_t __size, __compar_fn_t __compar)
+ __attribute__ ((__nonnull__ (1, 2, 5))) ;
+
+
+
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+ __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+
+
+
+extern int abs (int __x) throw () __attribute__ ((__const__)) ;
+extern long int labs (long int __x) throw () __attribute__ ((__const__)) ;
+
+
+
+__extension__ extern long long int llabs (long long int __x)
+ throw () __attribute__ ((__const__)) ;
+
+
+
+
+
+
+
+extern div_t div (int __numer, int __denom)
+ throw () __attribute__ ((__const__)) ;
+extern ldiv_t ldiv (long int __numer, long int __denom)
+ throw () __attribute__ ((__const__)) ;
+
+
+
+
+__extension__ extern lldiv_t lldiv (long long int __numer,
+ long long int __denom)
+ throw () __attribute__ ((__const__)) ;
+
+# 720 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+ throw () __attribute__ ((__nonnull__ (3))) ;
+# 786 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern int rpmatch (__const char *__response) throw () __attribute__ ((__nonnull__ (1))) ;
+# 797 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern int getsubopt (char **__restrict __optionp,
+ char *__const *__restrict __tokens,
+ char **__restrict __valuep)
+ throw () __attribute__ ((__nonnull__ (1, 2, 3))) ;
+
+
+
+
+
+
+extern void setkey (__const char *__key) throw () __attribute__ ((__nonnull__ (1)));
+# 816 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern int posix_openpt (int __oflag) ;
+
+
+
+
+
+
+
+extern int grantpt (int __fd) throw ();
+
+
+
+extern int unlockpt (int __fd) throw ();
+
+
+
+
+extern char *ptsname (int __fd) throw () ;
+# 842 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
+ throw () __attribute__ ((__nonnull__ (2)));
+# 867 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/stdlib.h" 3 4
+#undef __need_malloc_and_calloc
+
+}
+# 55 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvector.h" 2
+
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+struct __attribute__((visibility("default"))) QVectorData
+{
+ QBasicAtomicInt ref;
+ int alloc;
+ int size;
+
+
+
+
+
+ uint sharable : 1;
+ uint capacity : 1;
+
+
+ static QVectorData shared_null;
+
+
+ static QVectorData *malloc(int sizeofTypedData, int size, int sizeofT, QVectorData *init);
+ static int grow(int sizeofTypedData, int size, int sizeofT, bool excessive);
+};
+
+template <typename T>
+struct QVectorTypedData
+{
+ QBasicAtomicInt ref;
+ int alloc;
+ int size;
+
+
+
+
+
+ uint sharable : 1;
+ uint capacity : 1;
+
+ T array[1];
+};
+
+class QRegion;
+
+template <typename T>
+class QVector
+{
+ typedef QVectorTypedData<T> Data;
+ union { QVectorData *p; QVectorTypedData<T> *d; };
+
+public:
+ inline QVector() : p(&QVectorData::shared_null) { d->ref.ref(); }
+ explicit QVector(int size);
+ QVector(int size, const T &t);
+ inline QVector(const QVector<T> &v) : d(v.d) { d->ref.ref(); if (!d->sharable) detach_helper(); }
+ inline ~QVector() { if (!d) return; if (!d->ref.deref()) free(d); }
+ QVector<T> &operator=(const QVector<T> &v);
+ bool operator==(const QVector<T> &v) const;
+ inline bool operator!=(const QVector<T> &v) const { return !(*this == v); }
+
+ inline int size() const { return d->size; }
+
+ inline bool isEmpty() const { return d->size == 0; }
+
+ void resize(int size);
+
+ inline int capacity() const { return d->alloc; }
+ void reserve(int size);
+ inline void squeeze() { realloc(d->size, d->size); d->capacity = 0; }
+
+ inline void detach() { if (d->ref != 1) detach_helper(); }
+ inline bool isDetached() const { return d->ref == 1; }
+ inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; }
+
+ inline T *data() { detach(); return d->array; }
+ inline const T *data() const { return d->array; }
+ inline const T *constData() const { return d->array; }
+ void clear();
+
+ const T &at(int i) const;
+ T &operator[](int i);
+ const T &operator[](int i) const;
+ void append(const T &t);
+ void prepend(const T &t);
+ void insert(int i, const T &t);
+ void insert(int i, int n, const T &t);
+ void replace(int i, const T &t);
+ void remove(int i);
+ void remove(int i, int n);
+
+ QVector<T> &fill(const T &t, int size = -1);
+
+ int indexOf(const T &t, int from = 0) const;
+ int lastIndexOf(const T &t, int from = -1) const;
+ bool contains(const T &t) const;
+ int count(const T &t) const;
+# 225 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvector.h"
+ typedef T* iterator;
+ typedef const T* const_iterator;
+
+ inline iterator begin() { detach(); return d->array; }
+ inline const_iterator begin() const { return d->array; }
+ inline const_iterator constBegin() const { return d->array; }
+ inline iterator end() { detach(); return d->array + d->size; }
+ inline const_iterator end() const { return d->array + d->size; }
+ inline const_iterator constEnd() const { return d->array + d->size; }
+ iterator insert(iterator before, int n, const T &x);
+ inline iterator insert(iterator before, const T &x) { return insert(before, 1, x); }
+ iterator erase(iterator begin, iterator end);
+ inline iterator erase(iterator pos) { return erase(pos, pos+1); }
+
+
+ inline int count() const { return d->size; }
+ inline T& first() { qt_noop(); return *begin(); }
+ inline const T &first() const { qt_noop(); return *begin(); }
+ inline T& last() { qt_noop(); return *(end()-1); }
+ inline const T &last() const { qt_noop(); return *(end()-1); }
+ inline bool startsWith(const T &t) const { return !isEmpty() && first() == t; }
+ inline bool endsWith(const T &t) const { return !isEmpty() && last() == t; }
+ QVector<T> mid(int pos, int length = -1) const;
+
+ T value(int i) const;
+ T value(int i, const T &defaultValue) const;
+
+
+ typedef T value_type;
+ typedef value_type* pointer;
+ typedef const value_type* const_pointer;
+ typedef value_type& reference;
+ typedef const value_type& const_reference;
+
+ typedef ptrdiff_t difference_type;
+
+
+
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ typedef int size_type;
+ inline void push_back(const T &t) { append(t); }
+ inline void push_front(const T &t) { prepend(t); }
+ void pop_back() { qt_noop(); erase(end()-1); }
+ void pop_front() { qt_noop(); erase(begin()); }
+ inline bool empty() const
+ { return d->size == 0; }
+ inline T& front() { return first(); }
+ inline const_reference front() const { return first(); }
+ inline reference back() { return last(); }
+ inline const_reference back() const { return last(); }
+
+
+ QVector<T> &operator+=(const QVector<T> &l);
+ inline QVector<T> operator+(const QVector<T> &l) const
+ { QVector n = *this; n += l; return n; }
+ inline QVector<T> &operator+=(const T &t)
+ { append(t); return *this; }
+ inline QVector<T> &operator<< (const T &t)
+ { append(t); return *this; }
+ inline QVector<T> &operator<<(const QVector<T> &l)
+ { *this += l; return *this; }
+
+ QList<T> toList() const;
+
+ static QVector<T> fromList(const QList<T> &list);
+
+
+ static inline QVector<T> fromStdVector(const std::vector<T> &vector)
+ { QVector<T> tmp; qCopy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; }
+ inline std::vector<T> toStdVector() const
+ { std::vector<T> tmp; qCopy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; }
+
+
+private:
+ friend class QRegion;
+
+ void detach_helper();
+ QVectorData *malloc(int alloc);
+ void realloc(int size, int alloc);
+ void free(Data *d);
+ int sizeOfTypedData() {
+
+
+ return reinterpret_cast<const char *>(&(reinterpret_cast<const Data *>(this))->array[1]) - reinterpret_cast<const char *>(this);
+ }
+};
+
+template <typename T>
+void QVector<T>::detach_helper()
+{ realloc(d->size, d->alloc); }
+template <typename T>
+void QVector<T>::reserve(int asize)
+{ if (asize > d->alloc) realloc(d->size, asize); d->capacity = 1; }
+template <typename T>
+void QVector<T>::resize(int asize)
+{ realloc(asize, (asize > d->alloc || (!d->capacity && asize < d->size && asize < (d->alloc >> 1))) ?
+ QVectorData::grow(sizeOfTypedData(), asize, sizeof(T), QTypeInfo<T>::isStatic)
+ : d->alloc); }
+template <typename T>
+inline void QVector<T>::clear()
+{ *this = QVector<T>(); }
+template <typename T>
+inline const T &QVector<T>::at(int i) const
+{ qt_noop();
+ return d->array[i]; }
+template <typename T>
+inline const T &QVector<T>::operator[](int i) const
+{ qt_noop();
+ return d->array[i]; }
+template <typename T>
+inline T &QVector<T>::operator[](int i)
+{ qt_noop();
+ return data()[i]; }
+template <typename T>
+inline void QVector<T>::insert(int i, const T &t)
+{ qt_noop();
+ insert(begin() + i, 1, t); }
+template <typename T>
+inline void QVector<T>::insert(int i, int n, const T &t)
+{ qt_noop();
+ insert(begin() + i, n, t); }
+template <typename T>
+inline void QVector<T>::remove(int i, int n)
+{ qt_noop();
+ erase(begin() + i, begin() + i + n); }
+template <typename T>
+inline void QVector<T>::remove(int i)
+{ qt_noop();
+ erase(begin() + i, begin() + i + 1); }
+template <typename T>
+inline void QVector<T>::prepend(const T &t)
+{ insert(begin(), 1, t); }
+
+template <typename T>
+inline void QVector<T>::replace(int i, const T &t)
+{
+ qt_noop();
+ const T copy(t);
+ data()[i] = copy;
+}
+
+template <typename T>
+QVector<T> &QVector<T>::operator=(const QVector<T> &v)
+{
+ v.d->ref.ref();
+ if (!d->ref.deref())
+ free(d);
+ d = v.d;
+ if (!d->sharable)
+ detach_helper();
+ return *this;
+}
+
+template <typename T>
+inline QVectorData *QVector<T>::malloc(int aalloc)
+{
+ return static_cast<QVectorData *>(qMalloc(sizeOfTypedData() + (aalloc - 1) * sizeof(T)));
+}
+
+template <typename T>
+QVector<T>::QVector(int asize)
+{
+ p = malloc(asize);
+ d->ref = 1;
+ d->alloc = d->size = asize;
+ d->sharable = true;
+ d->capacity = false;
+ if (QTypeInfo<T>::isComplex) {
+ T* b = d->array;
+ T* i = d->array + d->size;
+ while (i != b)
+ new (--i) T;
+ } else {
+ qMemSet(d->array, 0, asize * sizeof(T));
+ }
+}
+
+template <typename T>
+QVector<T>::QVector(int asize, const T &t)
+{
+ p = malloc(asize);
+ d->ref = 1;
+ d->alloc = d->size = asize;
+ d->sharable = true;
+ d->capacity = false;
+ T* i = d->array + d->size;
+ while (i != d->array)
+ new (--i) T(t);
+}
+
+template <typename T>
+void QVector<T>::free(Data *x)
+{
+ if (QTypeInfo<T>::isComplex) {
+ T* b = x->array;
+ T* i = b + x->size;
+ while (i-- != b)
+ i->~T();
+ }
+ qFree(x);
+}
+
+template <typename T>
+void QVector<T>::realloc(int asize, int aalloc)
+{
+ T *j, *i, *b;
+ union { QVectorData *p; Data *d; } x;
+ x.d = d;
+
+ if (QTypeInfo<T>::isComplex && aalloc == d->alloc && d->ref == 1) {
+
+ i = d->array + d->size;
+ j = d->array + asize;
+ if (i > j) {
+ while (i-- != j)
+ i->~T();
+ } else {
+ while (j-- != i)
+ new (j) T;
+ }
+ d->size = asize;
+ return;
+ }
+
+ if (aalloc != d->alloc || d->ref != 1) {
+
+ if (QTypeInfo<T>::isStatic) {
+ x.p = malloc(aalloc);
+ } else if (d->ref != 1) {
+ x.p = QVectorData::malloc(sizeOfTypedData(), aalloc, sizeof(T), p);
+ } else {
+ if (QTypeInfo<T>::isComplex) {
+
+
+ if (asize < d->size) {
+ j = d->array + asize;
+ i = d->array + d->size;
+ while (i-- != j)
+ i->~T();
+ i = d->array + asize;
+ }
+ }
+ x.p = p = static_cast<QVectorData *>(qRealloc(p, sizeOfTypedData() + (aalloc - 1) * sizeof(T)));
+ }
+ x.d->ref = 1;
+ x.d->sharable = true;
+ x.d->capacity = d->capacity;
+
+ }
+ if (QTypeInfo<T>::isComplex) {
+ if (asize < d->size) {
+ j = d->array + asize;
+ i = x.d->array + asize;
+ } else {
+
+ i = x.d->array + asize;
+ j = x.d->array + d->size;
+ while (i != j)
+ new (--i) T;
+ j = d->array + d->size;
+ }
+ if (i != j) {
+
+ b = x.d->array;
+ while (i != b)
+ new (--i) T(*--j);
+ }
+ } else if (asize > d->size) {
+
+ qMemSet(x.d->array + d->size, 0, (asize - d->size) * sizeof(T));
+ }
+ x.d->size = asize;
+ x.d->alloc = aalloc;
+ if (d != x.d) {
+ if (!d->ref.deref())
+ free(d);
+ d = x.d;
+ }
+}
+
+template<typename T>
+ T QVector<T>::value(int i) const
+{
+ if (i < 0 || i >= p->size) {
+ return T();
+ }
+ return d->array[i];
+}
+template<typename T>
+ T QVector<T>::value(int i, const T &defaultValue) const
+{
+ return ((i < 0 || i >= p->size) ? defaultValue : d->array[i]);
+}
+
+template <typename T>
+void QVector<T>::append(const T &t)
+{
+ if (d->ref != 1 || d->size + 1 > d->alloc) {
+ const T copy(t);
+ realloc(d->size, QVectorData::grow(sizeOfTypedData(), d->size + 1, sizeof(T),
+ QTypeInfo<T>::isStatic));
+ if (QTypeInfo<T>::isComplex)
+ new (d->array + d->size) T(copy);
+ else
+ d->array[d->size] = copy;
+ } else {
+ if (QTypeInfo<T>::isComplex)
+ new (d->array + d->size) T(t);
+ else
+ d->array[d->size] = t;
+ }
+ ++d->size;
+}
+
+template <typename T>
+typename QVector<T>::iterator QVector<T>::insert(iterator before, size_type n, const T &t)
+{
+ int offset = before - d->array;
+ if (n != 0) {
+ const T copy(t);
+ if (d->ref != 1 || d->size + n > d->alloc)
+ realloc(d->size, QVectorData::grow(sizeOfTypedData(), d->size + n, sizeof(T),
+ QTypeInfo<T>::isStatic));
+ if (QTypeInfo<T>::isStatic) {
+ T *b = d->array + d->size;
+ T *i = d->array + d->size + n;
+ while (i != b)
+ new (--i) T;
+ i = d->array + d->size;
+ T *j = i + n;
+ b = d->array + offset;
+ while (i != b)
+ *--j = *--i;
+ i = b+n;
+ while (i != b)
+ *--i = copy;
+ } else {
+ T *b = d->array + offset;
+ T *i = b + n;
+ memmove(i, b, (d->size - offset) * sizeof(T));
+ while (i != b)
+ new (--i) T(copy);
+ }
+ d->size += n;
+ }
+ return d->array + offset;
+}
+
+template <typename T>
+typename QVector<T>::iterator QVector<T>::erase(iterator abegin, iterator aend)
+{
+ int f = abegin - d->array;
+ int l = aend - d->array;
+ int n = l - f;
+ detach();
+ if (QTypeInfo<T>::isComplex) {
+ qCopy(d->array+l, d->array+d->size, d->array+f);
+ T *i = d->array+d->size;
+ T* b = d->array+d->size-n;
+ while (i != b) {
+ --i;
+ i->~T();
+ }
+ } else {
+ memmove(d->array + f, d->array + l, (d->size-l)*sizeof(T));
+ }
+ d->size -= n;
+ return d->array + f;
+}
+
+template <typename T>
+bool QVector<T>::operator==(const QVector<T> &v) const
+{
+ if (d->size != v.d->size)
+ return false;
+ if (d == v.d)
+ return true;
+ T* b = d->array;
+ T* i = b + d->size;
+ T* j = v.d->array + d->size;
+ while (i != b)
+ if (!(*--i == *--j))
+ return false;
+ return true;
+}
+
+template <typename T>
+QVector<T> &QVector<T>::fill(const T &from, int asize)
+{
+ const T copy(from);
+ resize(asize < 0 ? d->size : asize);
+ if (d->size) {
+ T *i = d->array + d->size;
+ T *b = d->array;
+ while (i != b)
+ *--i = copy;
+ }
+ return *this;
+}
+
+template <typename T>
+QVector<T> &QVector<T>::operator+=(const QVector &l)
+{
+ int newSize = d->size + l.d->size;
+ realloc(d->size, newSize);
+
+ T *w = d->array + newSize;
+ T *i = l.d->array + l.d->size;
+ T *b = l.d->array;
+ while (i != b) {
+ if (QTypeInfo<T>::isComplex)
+ new (--w) T(*--i);
+ else
+ *--w = *--i;
+ }
+ d->size = newSize;
+ return *this;
+}
+
+template <typename T>
+int QVector<T>::indexOf(const T &t, int from) const
+{
+ if (from < 0)
+ from = qMax(from + d->size, 0);
+ if (from < d->size) {
+ T* n = d->array + from - 1;
+ T* e = d->array + d->size;
+ while (++n != e)
+ if (*n == t)
+ return n - d->array;
+ }
+ return -1;
+}
+
+template <typename T>
+int QVector<T>::lastIndexOf(const T &t, int from) const
+{
+ if (from < 0)
+ from += d->size;
+ else if (from >= d->size)
+ from = d->size-1;
+ if (from >= 0) {
+ T* b = d->array;
+ T* n = d->array + from + 1;
+ while (n != b) {
+ if (*--n == t)
+ return n - b;
+ }
+ }
+ return -1;
+}
+
+template <typename T>
+bool QVector<T>::contains(const T &t) const
+{
+ T* b = d->array;
+ T* i = d->array + d->size;
+ while (i != b)
+ if (*--i == t)
+ return true;
+ return false;
+}
+
+template <typename T>
+int QVector<T>::count(const T &t) const
+{
+ int c = 0;
+ T* b = d->array;
+ T* i = d->array + d->size;
+ while (i != b)
+ if (*--i == t)
+ ++c;
+ return c;
+}
+
+template <typename T>
+ QVector<T> QVector<T>::mid(int pos, int length) const
+{
+ if (length < 0)
+ length = size() - pos;
+ if (pos == 0 && length == size())
+ return *this;
+ QVector<T> copy;
+ if (pos + length > size())
+ length = size() - pos;
+ for (int i = pos; i < pos + length; ++i)
+ copy += at(i);
+ return copy;
+}
+
+template <typename T>
+ QList<T> QVector<T>::toList() const
+{
+ QList<T> result;
+ for (int i = 0; i < size(); ++i)
+ result.append(at(i));
+ return result;
+}
+
+template <typename T>
+ QVector<T> QList<T>::toVector() const
+{
+ QVector<T> result(size());
+ for (int i = 0; i < size(); ++i)
+ result[i] = at(i);
+ return result;
+}
+
+template <typename T>
+QVector<T> QVector<T>::fromList(const QList<T> &list)
+{
+ return list.toVector();
+}
+
+template <typename T>
+QList<T> QList<T>::fromVector(const QVector<T> &vector)
+{
+ return vector.toList();
+}
+
+template <class T> class QVectorIterator { typedef typename QVector<T>::const_iterator const_iterator; QVector<T> c; const_iterator i; public: inline QVectorIterator(const QVector<T> &container) : c(container), i(c.constBegin()) {} inline QVectorIterator &operator=(const QVector<T> &container) { c = container; i = c.constBegin(); return *this; } inline void toFront() { i = c.constBegin(); } inline void toBack() { i = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline const T &next() { return *i++; } inline const T &peekNext() const { return *i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline const T &previous() { return *--i; } inline const T &peekPrevious() const { const_iterator p = i; return *--p; } inline bool findNext(const T &t) { while (i != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(--i) == t) return true; return false; } };
+template <class T> class QMutableVectorIterator { typedef typename QVector<T>::iterator iterator; typedef typename QVector<T>::const_iterator const_iterator; QVector<T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableVectorIterator(QVector<T> &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableVectorIterator() { c->setSharable(true); } inline QMutableVectorIterator &operator=(QVector<T> &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = i; } inline bool hasNext() const { return c->constEnd() != const_iterator(i); } inline T &next() { n = i++; return *n; } inline T &peekNext() const { return *i; } inline bool hasPrevious() const { return c->constBegin() != const_iterator(i); } inline T &previous() { n = --i; return *n; } inline T &peekPrevious() const { iterator p = i; return *--p; } inline void remove() { if (c->constEnd() != const_iterator(n)) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) const { if (c->constEnd() != const_iterator(n)) *n = t; } inline T &value() { qt_noop(); return *n; } inline const T &value() const { qt_noop(); return *n; } inline void insert(const T &t) { n = i = c->insert(i, t); ++i; } inline bool findNext(const T &t) { while (c->constEnd() != const_iterator(n = i)) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (c->constBegin() != const_iterator(i)) if (*(n = --i) == t) return true; n = c->end(); return false; } };
+# 774 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvector.h"
+
+
+
+# 1 "../../include/QtCore/qvector.h" 2
+# 53 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdebug.h" 2
+# 1 "../../include/QtCore/qset.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qset.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qset.h"
+#define QSET_H
+
+# 1 "../../include/QtCore/qhash.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qset.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+template <class T>
+class QSet
+{
+ typedef QHash<T, QHashDummyValue> Hash;
+
+public:
+ inline QSet() {}
+ inline QSet(const QSet<T> &other) : q_hash(other.q_hash) {}
+
+ inline QSet<T> &operator=(const QSet<T> &other)
+ { q_hash = other.q_hash; return *this; }
+
+ inline bool operator==(const QSet<T> &other) const
+ { return q_hash == other.q_hash; }
+ inline bool operator!=(const QSet<T> &other) const
+ { return q_hash != other.q_hash; }
+
+ inline int size() const { return q_hash.size(); }
+
+ inline bool isEmpty() const { return q_hash.isEmpty(); }
+
+ inline int capacity() const { return q_hash.capacity(); }
+ inline void reserve(int size);
+ inline void squeeze() { q_hash.squeeze(); }
+
+ inline void detach() { q_hash.detach(); }
+ inline bool isDetached() const { return q_hash.isDetached(); }
+ inline void setSharable(bool sharable) { q_hash.setSharable(sharable); }
+
+ inline void clear() { q_hash.clear(); }
+
+ inline bool remove(const T &value) { return q_hash.remove(value) != 0; }
+
+ inline bool contains(const T &value) const { return q_hash.contains(value); }
+
+ class const_iterator;
+
+ class iterator
+ {
+ typedef QHash<T, QHashDummyValue> Hash;
+ typename Hash::iterator i;
+ friend class const_iterator;
+
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef const T *pointer;
+ typedef const T &reference;
+
+ inline iterator() {}
+ inline iterator(typename Hash::iterator o) : i(o) {}
+ inline iterator(const iterator &o) : i(o.i) {}
+ inline iterator &operator=(const iterator &o) { i = o.i; return *this; }
+ inline const T &operator*() const { return i.key(); }
+ inline const T *operator->() const { return &i.key(); }
+ inline bool operator==(const iterator &o) const { return i == o.i; }
+ inline bool operator!=(const iterator &o) const { return i != o.i; }
+ inline bool operator==(const const_iterator &o) const
+ { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const
+ { return i != o.i; }
+ inline iterator &operator++() { ++i; return *this; }
+ inline iterator operator++(int) { iterator r = *this; ++i; return r; }
+ inline iterator &operator--() { --i; return *this; }
+ inline iterator operator--(int) { iterator r = *this; --i; return r; }
+ inline iterator operator+(int j) const { return i + j; }
+ inline iterator operator-(int j) const { return i - j; }
+ inline iterator &operator+=(int j) { i += j; return *this; }
+ inline iterator &operator-=(int j) { i -= j; return *this; }
+ };
+
+ class const_iterator
+ {
+ typedef QHash<T, QHashDummyValue> Hash;
+ typename Hash::const_iterator i;
+ friend class iterator;
+
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef const T *pointer;
+ typedef const T &reference;
+
+ inline const_iterator() {}
+ inline const_iterator(typename Hash::const_iterator o) : i(o) {}
+ inline const_iterator(const const_iterator &o) : i(o.i) {}
+ inline const_iterator(const iterator &o)
+ : i(o.i) {}
+ inline const_iterator &operator=(const const_iterator &o) { i = o.i; return *this; }
+ inline const T &operator*() const { return i.key(); }
+ inline const T *operator->() const { return &i.key(); }
+ inline bool operator==(const const_iterator &o) const { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const { return i != o.i; }
+ inline const_iterator &operator++() { ++i; return *this; }
+ inline const_iterator operator++(int) { const_iterator r = *this; ++i; return r; }
+ inline const_iterator &operator--() { --i; return *this; }
+ inline const_iterator operator--(int) { const_iterator r = *this; --i; return r; }
+ inline const_iterator operator+(int j) const { return i + j; }
+ inline const_iterator operator-(int j) const { return i - j; }
+ inline const_iterator &operator+=(int j) { i += j; return *this; }
+ inline const_iterator &operator-=(int j) { i -= j; return *this; }
+ };
+
+
+ inline iterator begin() { return q_hash.begin(); }
+ inline const_iterator begin() const { return q_hash.begin(); }
+ inline const_iterator constBegin() const { return q_hash.constBegin(); }
+ inline iterator end() { return q_hash.end(); }
+ inline const_iterator end() const { return q_hash.end(); }
+ inline const_iterator constEnd() const { return q_hash.constEnd(); }
+ iterator erase(iterator i)
+ { return q_hash.erase(reinterpret_cast<typename Hash::iterator &>(i)); }
+
+
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ inline int count() const { return q_hash.count(); }
+ inline const_iterator insert(const T &value)
+ { return static_cast<typename Hash::const_iterator>(q_hash.insert(value,
+ QHashDummyValue())); }
+ iterator find(const T &value) { return q_hash.find(value); }
+ const_iterator find(const T &value) const { return q_hash.find(value); }
+ inline const_iterator constFind(const T &value) const { return find(value); }
+ QSet<T> &unite(const QSet<T> &other);
+ QSet<T> &intersect(const QSet<T> &other);
+ QSet<T> &subtract(const QSet<T> &other);
+
+
+ typedef T key_type;
+ typedef T value_type;
+ typedef value_type *pointer;
+ typedef const value_type *const_pointer;
+ typedef value_type &reference;
+ typedef const value_type &const_reference;
+ typedef ptrdiff_t difference_type;
+ typedef int size_type;
+
+ inline bool empty() const { return isEmpty(); }
+
+
+ inline QSet<T> &operator<<(const T &value) { insert(value); return *this; }
+ inline QSet<T> &operator|=(const QSet<T> &other) { unite(other); return *this; }
+ inline QSet<T> &operator|=(const T &value) { insert(value); return *this; }
+ inline QSet<T> &operator&=(const QSet<T> &other) { intersect(other); return *this; }
+ inline QSet<T> &operator&=(const T &value)
+ { QSet<T> result; if (contains(value)) result.insert(value); return (*this = result); }
+ inline QSet<T> &operator+=(const QSet<T> &other) { unite(other); return *this; }
+ inline QSet<T> &operator+=(const T &value) { insert(value); return *this; }
+ inline QSet<T> &operator-=(const QSet<T> &other) { subtract(other); return *this; }
+ inline QSet<T> &operator-=(const T &value) { remove(value); return *this; }
+ inline QSet<T> operator|(const QSet<T> &other) const
+ { QSet<T> result = *this; result |= other; return result; }
+ inline QSet<T> operator&(const QSet<T> &other) const
+ { QSet<T> result = *this; result &= other; return result; }
+ inline QSet<T> operator+(const QSet<T> &other) const
+ { QSet<T> result = *this; result += other; return result; }
+ inline QSet<T> operator-(const QSet<T> &other) const
+ { QSet<T> result = *this; result -= other; return result; }
+
+
+ inline QSet<T> operator|(const QSet<T> &other)
+ { QSet<T> result = *this; result |= other; return result; }
+ inline QSet<T> operator&(const QSet<T> &other)
+ { QSet<T> result = *this; result &= other; return result; }
+ inline QSet<T> operator+(const QSet<T> &other)
+ { QSet<T> result = *this; result += other; return result; }
+ inline QSet<T> operator-(const QSet<T> &other)
+ { QSet<T> result = *this; result -= other; return result; }
+
+
+ QList<T> toList() const;
+ inline QList<T> values() const { return toList(); }
+
+ static QSet<T> fromList(const QList<T> &list);
+
+private:
+ Hash q_hash;
+};
+
+template <class T>
+inline void QSet<T>::reserve(int asize) { q_hash.reserve(asize); }
+
+template <class T>
+inline QSet<T> &QSet<T>::unite(const QSet<T> &other)
+{
+ QSet<T> copy(other);
+ typename QSet<T>::const_iterator i = copy.constEnd();
+ while (i != copy.constBegin()) {
+ --i;
+ insert(*i);
+ }
+ return *this;
+}
+
+template <class T>
+inline QSet<T> &QSet<T>::intersect(const QSet<T> &other)
+{
+ QSet<T> copy1(*this);
+ QSet<T> copy2(other);
+ typename QSet<T>::const_iterator i = copy1.constEnd();
+ while (i != copy1.constBegin()) {
+ --i;
+ if (!copy2.contains(*i))
+ remove(*i);
+ }
+ return *this;
+}
+
+template <class T>
+inline QSet<T> &QSet<T>::subtract(const QSet<T> &other)
+{
+ QSet<T> copy1(*this);
+ QSet<T> copy2(other);
+ typename QSet<T>::const_iterator i = copy1.constEnd();
+ while (i != copy1.constBegin()) {
+ --i;
+ if (copy2.contains(*i))
+ remove(*i);
+ }
+ return *this;
+}
+
+template <typename T>
+ QList<T> QSet<T>::toList() const
+{
+ QList<T> result;
+ typename QSet<T>::const_iterator i = constBegin();
+ while (i != constEnd()) {
+ result.append(*i);
+ ++i;
+ }
+ return result;
+}
+
+template <typename T>
+ QSet<T> QList<T>::toSet() const
+{
+ QSet<T> result;
+ result.reserve(size());
+ for (int i = 0; i < size(); ++i)
+ result.insert(at(i));
+ return result;
+}
+
+template <typename T>
+QSet<T> QSet<T>::fromList(const QList<T> &list)
+{
+ return list.toSet();
+}
+
+template <typename T>
+QList<T> QList<T>::fromSet(const QSet<T> &set)
+{
+ return set.toList();
+}
+
+template <class T> class QSetIterator { typedef typename QSet<T>::const_iterator const_iterator; QSet<T> c; const_iterator i; public: inline QSetIterator(const QSet<T> &container) : c(container), i(c.constBegin()) {} inline QSetIterator &operator=(const QSet<T> &container) { c = container; i = c.constBegin(); return *this; } inline void toFront() { i = c.constBegin(); } inline void toBack() { i = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline const T &next() { return *i++; } inline const T &peekNext() const { return *i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline const T &previous() { return *--i; } inline const T &peekPrevious() const { const_iterator p = i; return *--p; } inline bool findNext(const T &t) { while (i != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(--i) == t) return true; return false; } };
+
+template <typename T>
+class QMutableSetIterator
+{
+ typedef typename QSet<T>::iterator iterator;
+ QSet<T> *c;
+ iterator i, n;
+ inline bool item_exists() const { return n != c->constEnd(); }
+
+public:
+ inline QMutableSetIterator(QSet<T> &container)
+ : c(&container)
+ { c->setSharable(false); i = c->begin(); n = c->end(); }
+ inline ~QMutableSetIterator()
+ { c->setSharable(true); }
+ inline QMutableSetIterator &operator=(QSet<T> &container)
+ { c->setSharable(true); c = &container; c->setSharable(false);
+ i = c->begin(); n = c->end(); return *this; }
+ inline void toFront() { i = c->begin(); n = c->end(); }
+ inline void toBack() { i = c->end(); n = i; }
+ inline bool hasNext() const { return c->constEnd() != i; }
+ inline const T &next() { n = i++; return *n; }
+ inline const T &peekNext() const { return *i; }
+ inline bool hasPrevious() const { return c->constBegin() != i; }
+ inline const T &previous() { n = --i; return *n; }
+ inline const T &peekPrevious() const { iterator p = i; return *--p; }
+ inline void remove()
+ { if (c->constEnd() != n) { i = c->erase(n); n = c->end(); } }
+ inline const T &value() const { qt_noop(); return *n; }
+ inline bool findNext(const T &t)
+ { while (c->constEnd() != (n = i)) if (*i++ == t) return true; return false; }
+ inline bool findPrevious(const T &t)
+ { while (c->constBegin() != i) if (*(n = --i) == t) return true;
+ n = c->end(); return false; }
+};
+
+
+
+
+# 1 "../../include/QtCore/qset.h" 2
+# 54 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdebug.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class __attribute__((visibility("default"))) QDebug
+{
+ struct Stream {
+ Stream(QIODevice *device) : ts(device), ref(1), type(QtDebugMsg), space(true), message_output(false) {}
+ Stream(QString *string) : ts(string, QIODevice::WriteOnly), ref(1), type(QtDebugMsg), space(true), message_output(false) {}
+ Stream(QtMsgType t) : ts(&buffer, QIODevice::WriteOnly), ref(1), type(t), space(true), message_output(true) {}
+ QTextStream ts;
+ QString buffer;
+ int ref;
+ QtMsgType type;
+ bool space;
+ bool message_output;
+ } *stream;
+public:
+ inline QDebug(QIODevice *device) : stream(new Stream(device)) {}
+ inline QDebug(QString *string) : stream(new Stream(string)) {}
+ inline QDebug(QtMsgType t) : stream(new Stream(t)) {}
+ inline QDebug(const QDebug &o):stream(o.stream) { ++stream->ref; }
+ inline QDebug &operator=(const QDebug &other);
+ inline ~QDebug() {
+ if (!--stream->ref) {
+ if(stream->message_output)
+ qt_message_output(stream->type, stream->buffer.toLocal8Bit().data());
+ delete stream;
+ }
+ }
+ inline QDebug &space() { stream->space = true; stream->ts << " "; return *this; }
+ inline QDebug &nospace() { stream->space = false; return *this; }
+ inline QDebug &maybeSpace() { if (stream->space) stream->ts << " "; return *this; }
+
+ inline QDebug &operator<<(QChar t) { stream->ts << "\'" << t << "\'"; return maybeSpace(); }
+ inline QDebug &operator<<(QBool t) { stream->ts << (bool(t) ? "true" : "false"); return maybeSpace(); }
+ inline QDebug &operator<<(bool t) { stream->ts << (t ? "true" : "false"); return maybeSpace(); }
+ inline QDebug &operator<<(char t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(signed short t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(unsigned short t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(signed int t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(unsigned int t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(signed long t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(unsigned long t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(qint64 t)
+ { stream->ts << QString::number(t); return maybeSpace(); }
+ inline QDebug &operator<<(quint64 t)
+ { stream->ts << QString::number(t); return maybeSpace(); }
+ inline QDebug &operator<<(float t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(double t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(const char* t) { stream->ts << QString::fromAscii(t); return maybeSpace(); }
+ inline QDebug &operator<<(const QString & t) { stream->ts << "\"" << t << "\""; return maybeSpace(); }
+ inline QDebug &operator<<(const QStringRef & t) { return operator<<(t.toString()); }
+ inline QDebug &operator<<(const QLatin1String &t) { stream->ts << "\"" << t.latin1() << "\""; return maybeSpace(); }
+ inline QDebug &operator<<(const QByteArray & t) { stream->ts << "\"" << t << "\""; return maybeSpace(); }
+ inline QDebug &operator<<(const void * t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(QTextStreamFunction f) {
+ stream->ts << f;
+ return *this;
+ }
+
+ inline QDebug &operator<<(QTextStreamManipulator m)
+ { stream->ts << m; return *this; }
+};
+
+class QNoDebug
+{
+public:
+ inline QNoDebug(){}
+ inline QNoDebug(const QDebug &){}
+ inline ~QNoDebug(){}
+
+ inline QNoDebug &operator<<(QTextStreamFunction) { return *this; }
+ inline QNoDebug &operator<<(QTextStreamManipulator) { return *this; }
+
+ inline QNoDebug &space() { return *this; }
+ inline QNoDebug &nospace() { return *this; }
+ inline QNoDebug &maybeSpace() { return *this; }
+
+
+ template<typename T>
+ inline QNoDebug &operator<<(const T &) { return *this; }
+
+};
+
+__attribute__((visibility("default"))) inline QDebug qCritical() { return QDebug(QtCriticalMsg); }
+
+inline QDebug &QDebug::operator=(const QDebug &other)
+{
+ if (this != &other) {
+ QDebug copy(other);
+ qSwap(stream, copy.stream);
+ }
+ return *this;
+}
+
+
+
+
+
+template <class T>
+inline QDebug operator<<(QDebug debug, const QList<T> &list)
+
+{
+ debug.nospace() << "(";
+ for (typename QList<T>::size_type i = 0; i < list.count(); ++i) {
+ if (i)
+ debug << ", ";
+ debug << list.at(i);
+ }
+ debug << ")";
+ return debug.space();
+}
+
+
+
+
+
+template <typename T>
+inline QDebug operator<<(QDebug debug, const QVector<T> &vec)
+
+{
+ debug.nospace() << "QVector";
+ return operator<<(debug, vec.toList());
+}
+
+
+
+
+
+template <class aKey, class aT>
+inline QDebug operator<<(QDebug debug, const QMap<aKey, aT> &map)
+
+{
+ debug.nospace() << "QMap(";
+ for (typename QMap<aKey, aT>::const_iterator it = map.constBegin();
+ it != map.constEnd(); ++it) {
+ debug << "(" << it.key() << ", " << it.value() << ")";
+ }
+ debug << ")";
+ return debug.space();
+}
+
+
+
+
+
+template <class aKey, class aT>
+inline QDebug operator<<(QDebug debug, const QHash<aKey, aT> &hash)
+
+{
+ debug.nospace() << "QHash(";
+ for (typename QHash<aKey, aT>::const_iterator it = hash.constBegin();
+ it != hash.constEnd(); ++it)
+ debug << "(" << it.key() << ", " << it.value() << ")";
+ debug << ")";
+ return debug.space();
+}
+
+
+
+
+
+template <class T1, class T2>
+inline QDebug operator<<(QDebug debug, const QPair<T1, T2> &pair)
+
+{
+ debug.nospace() << "QPair(" << pair.first << "," << pair.second << ")";
+ return debug.space();
+}
+
+template <typename T>
+inline QDebug operator<<(QDebug debug, const QSet<T> &set)
+{
+ debug.nospace() << "QSet";
+ return operator<<(debug, set.toList());
+}
+
+
+__attribute__((visibility("default"))) inline QDebug qDebug() { return QDebug(QtDebugMsg); }
+# 251 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qdebug.h"
+__attribute__((visibility("default"))) inline QDebug qWarning() { return QDebug(QtWarningMsg); }
+
+
+
+
+
+
+
+
+
+# 1 "../../include/QtCore/qdebug.h" 2
+# 43 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp" 2
+# 1 "../../include/QtGui/private/qfontengine_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine_p.h"
+#define QFONTENGINE_P_H
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine_p.h"
+# 1 "../../include/QtCore/qglobal.h" 1
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine_p.h" 2
+# 1 "../../include/QtCore/qatomic.h" 1
+# 58 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine_p.h" 2
+# 1 "../../include/QtCore/qvarlengtharray.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvarlengtharray.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvarlengtharray.h"
+#define QVARLENGTHARRAY_H
+
+# 1 "../../include/QtCore/qcontainerfwd.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qcontainerfwd.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qcontainerfwd.h"
+#define QCONTAINERFWD_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qcontainerfwd.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+template <class Key, class T> class QCache;
+template <class Key, class T> class QHash;
+template <class T> class QLinkedList;
+template <class T> class QList;
+template <class Key, class T> class QMap;
+template <class Key, class T> class QMultiHash;
+template <class Key, class T> class QMultiMap;
+template <class T1, class T2> struct QPair;
+template <class T> class QQueue;
+template <class T> class QSet;
+template <class T> class QStack;
+template<class T, int Prealloc = 256> class QVarLengthArray;
+template <class T> class QVector;
+
+
+
+
+# 1 "../../include/QtCore/qcontainerfwd.h" 2
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvarlengtharray.h" 2
+# 1 "../../include/QtCore/qglobal.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qvarlengtharray.h" 2
+
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+
+template<class T, int Prealloc>
+class QVarLengthArray
+{
+public:
+ inline explicit QVarLengthArray(int size = 0);
+
+ inline QVarLengthArray(const QVarLengthArray<T, Prealloc> &other)
+ : a(Prealloc), s(0), ptr(reinterpret_cast<T *>(array))
+ {
+ append(other.constData(), other.size());
+ }
+
+ inline ~QVarLengthArray() {
+ if (QTypeInfo<T>::isComplex) {
+ T *i = ptr + s;
+ while (i-- != ptr)
+ i->~T();
+ }
+ if (ptr != reinterpret_cast<T *>(array))
+ qFree(ptr);
+ }
+ inline QVarLengthArray<T, Prealloc> &operator=(const QVarLengthArray<T, Prealloc> &other)
+ {
+ if (this != &other) {
+ clear();
+ append(other.constData(), other.size());
+ }
+ return *this;
+ }
+
+ inline void removeLast() {
+ qt_noop();
+ realloc(s - 1, a);
+ }
+ inline int size() const { return s; }
+ inline int count() const { return s; }
+ inline bool isEmpty() const { return (s == 0); }
+ inline void resize(int size);
+ inline void clear() { resize(0); }
+
+ inline int capacity() const { return a; }
+ inline void reserve(int size);
+
+ inline T &operator[](int idx) {
+ qt_noop();
+ return ptr[idx];
+ }
+ inline const T &operator[](int idx) const {
+ qt_noop();
+ return ptr[idx];
+ }
+
+ inline void append(const T &t) {
+ if (s == a)
+ realloc(s, s<<1);
+ const int idx = s++;
+ if (QTypeInfo<T>::isComplex) {
+ new (ptr + idx) T(t);
+ } else {
+ ptr[idx] = t;
+ }
+ }
+ void append(const T *buf, int size);
+
+ inline T *data() { return ptr; }
+ inline const T *data() const { return ptr; }
+ inline const T * constData() const { return ptr; }
+
+private:
+ void realloc(int size, int alloc);
+
+ int a;
+ int s;
+ T *ptr;
+ union {
+
+ char array[sizeof(qint64) * (((Prealloc * sizeof(T)) / sizeof(qint64)) + 1)];
+ qint64 q_for_alignment_1;
+ double q_for_alignment_2;
+ };
+};
+
+template <class T, int Prealloc>
+inline QVarLengthArray<T, Prealloc>::QVarLengthArray(int asize)
+ : s(asize) {
+ if (s > Prealloc) {
+ ptr = reinterpret_cast<T *>(qMalloc(s * sizeof(T)));
+ a = s;
+ } else {
+ ptr = reinterpret_cast<T *>(array);
+ a = Prealloc;
+ }
+ if (QTypeInfo<T>::isComplex) {
+ T *i = ptr + s;
+ while (i != ptr)
+ new (--i) T;
+ }
+}
+
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::resize(int asize)
+{ realloc(asize, qMax(asize, a)); }
+
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::reserve(int asize)
+{ if (asize > a) realloc(s, asize); }
+
+template <class T, int Prealloc>
+ void QVarLengthArray<T, Prealloc>::append(const T *abuf, int asize)
+{
+ qt_noop();
+ if (asize <= 0)
+ return;
+
+ const int idx = s;
+ const int news = s + asize;
+ if (news >= a)
+ realloc(s, qMax(s<<1, news));
+ s = news;
+
+ if (QTypeInfo<T>::isComplex) {
+ T *i = ptr + idx;
+ T *j = i + asize;
+ while (i < j)
+ new (i++) T(*abuf++);
+ } else {
+ qMemCopy(&ptr[idx], abuf, asize * sizeof(T));
+ }
+}
+
+template <class T, int Prealloc>
+ void QVarLengthArray<T, Prealloc>::realloc(int asize, int aalloc)
+{
+ qt_noop();
+ T *oldPtr = ptr;
+ int osize = s;
+ s = asize;
+
+ if (aalloc != a) {
+ ptr = reinterpret_cast<T *>(qMalloc(aalloc * sizeof(T)));
+ if (ptr) {
+ a = aalloc;
+
+ if (QTypeInfo<T>::isStatic) {
+ T *i = ptr + osize;
+ T *j = oldPtr + osize;
+ while (i != ptr) {
+ new (--i) T(*--j);
+ j->~T();
+ }
+ } else {
+ qMemCopy(ptr, oldPtr, osize * sizeof(T));
+ }
+ } else {
+ ptr = oldPtr;
+ s = 0;
+ asize = 0;
+ }
+ }
+
+ if (QTypeInfo<T>::isComplex) {
+ if (asize < osize) {
+ T *i = oldPtr + osize;
+ T *j = oldPtr + asize;
+ while (i-- != j)
+ i->~T();
+ } else {
+ T *i = ptr + asize;
+ T *j = ptr + osize;
+ while (i != j)
+ new (--i) T;
+ }
+ }
+
+ if (oldPtr != reinterpret_cast<T *>(array) && oldPtr != ptr)
+ qFree(oldPtr);
+}
+
+
+
+
+# 1 "../../include/QtCore/qvarlengtharray.h" 2
+# 59 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine_p.h" 2
+# 1 "../../include/QtGui/private/qtextengine_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h"
+#define QTEXTENGINE_P_H
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h"
+# 1 "../../include/QtCore/qglobal.h" 1
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 58 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtCore/qvarlengtharray.h" 1
+# 59 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 60 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtGui/qtextlayout.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextlayout.h" 1
+# 42 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextlayout.h"
+#define QTEXTLAYOUT_H
+
+# 1 "../../include/QtCore/qstring.h" 1
+# 45 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextlayout.h" 2
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextlayout.h" 2
+# 1 "../../include/QtCore/qrect.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qrect.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qrect.h"
+#define QRECT_H
+
+# 1 "../../include/QtCore/qsize.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qsize.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qsize.h"
+#define QSIZE_H
+
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qsize.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class __attribute__((visibility("default"))) QSize
+{
+public:
+ QSize();
+ QSize(int w, int h);
+
+ bool isNull() const;
+ bool isEmpty() const;
+ bool isValid() const;
+
+ int width() const;
+ int height() const;
+ void setWidth(int w);
+ void setHeight(int h);
+ void transpose();
+
+ void scale(int w, int h, Qt::AspectRatioMode mode);
+ void scale(const QSize &s, Qt::AspectRatioMode mode);
+
+ QSize expandedTo(const QSize &) const;
+ QSize boundedTo(const QSize &) const;
+
+ int &rwidth();
+ int &rheight();
+
+ QSize &operator+=(const QSize &);
+ QSize &operator-=(const QSize &);
+ QSize &operator*=(qreal c);
+ QSize &operator/=(qreal c);
+
+ friend inline bool operator==(const QSize &, const QSize &);
+ friend inline bool operator!=(const QSize &, const QSize &);
+ friend inline const QSize operator+(const QSize &, const QSize &);
+ friend inline const QSize operator-(const QSize &, const QSize &);
+ friend inline const QSize operator*(const QSize &, qreal);
+ friend inline const QSize operator*(qreal, const QSize &);
+ friend inline const QSize operator/(const QSize &, qreal);
+
+private:
+ int wd;
+ int ht;
+};
+template <> class QTypeInfo<QSize> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QSize)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QSize"; } };
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QSize &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QSize &);
+
+
+
+
+
+
+inline QSize::QSize()
+{ wd = ht = -1; }
+
+inline QSize::QSize(int w, int h)
+{ wd = w; ht = h; }
+
+inline bool QSize::isNull() const
+{ return wd==0 && ht==0; }
+
+inline bool QSize::isEmpty() const
+{ return wd<1 || ht<1; }
+
+inline bool QSize::isValid() const
+{ return wd>=0 && ht>=0; }
+
+inline int QSize::width() const
+{ return wd; }
+
+inline int QSize::height() const
+{ return ht; }
+
+inline void QSize::setWidth(int w)
+{ wd = w; }
+
+inline void QSize::setHeight(int h)
+{ ht = h; }
+
+inline void QSize::scale(int w, int h, Qt::AspectRatioMode mode)
+{ scale(QSize(w, h), mode); }
+
+inline int &QSize::rwidth()
+{ return wd; }
+
+inline int &QSize::rheight()
+{ return ht; }
+
+inline QSize &QSize::operator+=(const QSize &s)
+{ wd+=s.wd; ht+=s.ht; return *this; }
+
+inline QSize &QSize::operator-=(const QSize &s)
+{ wd-=s.wd; ht-=s.ht; return *this; }
+
+inline QSize &QSize::operator*=(qreal c)
+{ wd = qRound(wd*c); ht = qRound(ht*c); return *this; }
+
+inline bool operator==(const QSize &s1, const QSize &s2)
+{ return s1.wd == s2.wd && s1.ht == s2.ht; }
+
+inline bool operator!=(const QSize &s1, const QSize &s2)
+{ return s1.wd != s2.wd || s1.ht != s2.ht; }
+
+inline const QSize operator+(const QSize & s1, const QSize & s2)
+{ return QSize(s1.wd+s2.wd, s1.ht+s2.ht); }
+
+inline const QSize operator-(const QSize &s1, const QSize &s2)
+{ return QSize(s1.wd-s2.wd, s1.ht-s2.ht); }
+
+inline const QSize operator*(const QSize &s, qreal c)
+{ return QSize(qRound(s.wd*c), qRound(s.ht*c)); }
+
+inline const QSize operator*(qreal c, const QSize &s)
+{ return QSize(qRound(s.wd*c), qRound(s.ht*c)); }
+
+inline QSize &QSize::operator/=(qreal c)
+{
+ qt_noop();
+ wd = qRound(wd/c); ht = qRound(ht/c);
+ return *this;
+}
+
+inline const QSize operator/(const QSize &s, qreal c)
+{
+ qt_noop();
+ return QSize(qRound(s.wd/c), qRound(s.ht/c));
+}
+
+inline QSize QSize::expandedTo(const QSize & otherSize) const
+{
+ return QSize(qMax(wd,otherSize.wd), qMax(ht,otherSize.ht));
+}
+
+inline QSize QSize::boundedTo(const QSize & otherSize) const
+{
+ return QSize(qMin(wd,otherSize.wd), qMin(ht,otherSize.ht));
+}
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QSize &);
+
+
+
+class __attribute__((visibility("default"))) QSizeF
+{
+public:
+ QSizeF();
+ QSizeF(const QSize &sz);
+ QSizeF(qreal w, qreal h);
+
+ bool isNull() const;
+ bool isEmpty() const;
+ bool isValid() const;
+
+ qreal width() const;
+ qreal height() const;
+ void setWidth(qreal w);
+ void setHeight(qreal h);
+ void transpose();
+
+ void scale(qreal w, qreal h, Qt::AspectRatioMode mode);
+ void scale(const QSizeF &s, Qt::AspectRatioMode mode);
+
+ QSizeF expandedTo(const QSizeF &) const;
+ QSizeF boundedTo(const QSizeF &) const;
+
+ qreal &rwidth();
+ qreal &rheight();
+
+ QSizeF &operator+=(const QSizeF &);
+ QSizeF &operator-=(const QSizeF &);
+ QSizeF &operator*=(qreal c);
+ QSizeF &operator/=(qreal c);
+
+ friend inline bool operator==(const QSizeF &, const QSizeF &);
+ friend inline bool operator!=(const QSizeF &, const QSizeF &);
+ friend inline const QSizeF operator+(const QSizeF &, const QSizeF &);
+ friend inline const QSizeF operator-(const QSizeF &, const QSizeF &);
+ friend inline const QSizeF operator*(const QSizeF &, qreal);
+ friend inline const QSizeF operator*(qreal, const QSizeF &);
+ friend inline const QSizeF operator/(const QSizeF &, qreal);
+
+ inline QSize toSize() const;
+
+private:
+ qreal wd;
+ qreal ht;
+};
+template <> class QTypeInfo<QSizeF> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QSizeF)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QSizeF"; } };
+
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QSizeF &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QSizeF &);
+
+
+
+
+
+
+inline QSizeF::QSizeF()
+{ wd = ht = -1.; }
+
+inline QSizeF::QSizeF(const QSize &sz)
+ : wd(sz.width()), ht(sz.height())
+{
+}
+
+inline QSizeF::QSizeF(qreal w, qreal h)
+{ wd = w; ht = h; }
+
+inline bool QSizeF::isNull() const
+{ return qIsNull(wd) && qIsNull(ht); }
+
+inline bool QSizeF::isEmpty() const
+{ return wd <= 0. || ht <= 0.; }
+
+inline bool QSizeF::isValid() const
+{ return wd >= 0. && ht >= 0.; }
+
+inline qreal QSizeF::width() const
+{ return wd; }
+
+inline qreal QSizeF::height() const
+{ return ht; }
+
+inline void QSizeF::setWidth(qreal w)
+{ wd = w; }
+
+inline void QSizeF::setHeight(qreal h)
+{ ht = h; }
+
+inline void QSizeF::scale(qreal w, qreal h, Qt::AspectRatioMode mode)
+{ scale(QSizeF(w, h), mode); }
+
+inline qreal &QSizeF::rwidth()
+{ return wd; }
+
+inline qreal &QSizeF::rheight()
+{ return ht; }
+
+inline QSizeF &QSizeF::operator+=(const QSizeF &s)
+{ wd += s.wd; ht += s.ht; return *this; }
+
+inline QSizeF &QSizeF::operator-=(const QSizeF &s)
+{ wd -= s.wd; ht -= s.ht; return *this; }
+
+inline QSizeF &QSizeF::operator*=(qreal c)
+{ wd *= c; ht *= c; return *this; }
+
+inline bool operator==(const QSizeF &s1, const QSizeF &s2)
+{ return qFuzzyCompare(s1.wd, s2.wd) && qFuzzyCompare(s1.ht, s2.ht); }
+
+inline bool operator!=(const QSizeF &s1, const QSizeF &s2)
+{ return !qFuzzyCompare(s1.wd, s2.wd) || !qFuzzyCompare(s1.ht, s2.ht); }
+
+inline const QSizeF operator+(const QSizeF & s1, const QSizeF & s2)
+{ return QSizeF(s1.wd+s2.wd, s1.ht+s2.ht); }
+
+inline const QSizeF operator-(const QSizeF &s1, const QSizeF &s2)
+{ return QSizeF(s1.wd-s2.wd, s1.ht-s2.ht); }
+
+inline const QSizeF operator*(const QSizeF &s, qreal c)
+{ return QSizeF(s.wd*c, s.ht*c); }
+
+inline const QSizeF operator*(qreal c, const QSizeF &s)
+{ return QSizeF(s.wd*c, s.ht*c); }
+
+inline QSizeF &QSizeF::operator/=(qreal c)
+{
+ qt_noop();
+ wd = wd/c; ht = ht/c;
+ return *this;
+}
+
+inline const QSizeF operator/(const QSizeF &s, qreal c)
+{
+ qt_noop();
+ return QSizeF(s.wd/c, s.ht/c);
+}
+
+inline QSizeF QSizeF::expandedTo(const QSizeF & otherSize) const
+{
+ return QSizeF(qMax(wd,otherSize.wd), qMax(ht,otherSize.ht));
+}
+
+inline QSizeF QSizeF::boundedTo(const QSizeF & otherSize) const
+{
+ return QSizeF(qMin(wd,otherSize.wd), qMin(ht,otherSize.ht));
+}
+
+inline QSize QSizeF::toSize() const
+{
+ return QSize(qRound(wd), qRound(ht));
+}
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QSizeF &);
+
+
+
+
+
+# 1 "../../include/QtCore/qsize.h" 2
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qrect.h" 2
+# 1 "../../include/QtCore/qpoint.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qpoint.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qpoint.h"
+#define QPOINT_H
+
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qpoint.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class __attribute__((visibility("default"))) QPoint
+{
+public:
+ QPoint();
+ QPoint(int xpos, int ypos);
+
+ bool isNull() const;
+
+ int x() const;
+ int y() const;
+ void setX(int x);
+ void setY(int y);
+
+ int manhattanLength() const;
+
+ int &rx();
+ int &ry();
+
+ QPoint &operator+=(const QPoint &p);
+ QPoint &operator-=(const QPoint &p);
+ QPoint &operator*=(qreal c);
+ QPoint &operator/=(qreal c);
+
+ friend inline bool operator==(const QPoint &, const QPoint &);
+ friend inline bool operator!=(const QPoint &, const QPoint &);
+ friend inline const QPoint operator+(const QPoint &, const QPoint &);
+ friend inline const QPoint operator-(const QPoint &, const QPoint &);
+ friend inline const QPoint operator*(const QPoint &, qreal);
+ friend inline const QPoint operator*(qreal, const QPoint &);
+ friend inline const QPoint operator-(const QPoint &);
+ friend inline const QPoint operator/(const QPoint &, qreal);
+
+private:
+ friend class QTransform;
+
+
+
+
+
+ int xp;
+ int yp;
+
+};
+
+template <> class QTypeInfo<QPoint> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QPoint)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QPoint"; } };
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPoint &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPoint &);
+
+
+
+
+
+
+inline QPoint::QPoint()
+{ xp=0; yp=0; }
+
+inline QPoint::QPoint(int xpos, int ypos)
+{ xp = xpos; yp = ypos; }
+
+inline bool QPoint::isNull() const
+{ return xp == 0 && yp == 0; }
+
+inline int QPoint::x() const
+{ return xp; }
+
+inline int QPoint::y() const
+{ return yp; }
+
+inline void QPoint::setX(int xpos)
+{ xp = xpos; }
+
+inline void QPoint::setY(int ypos)
+{ yp = ypos; }
+
+inline int &QPoint::rx()
+{ return xp; }
+
+inline int &QPoint::ry()
+{ return yp; }
+
+inline QPoint &QPoint::operator+=(const QPoint &p)
+{ xp+=p.xp; yp+=p.yp; return *this; }
+
+inline QPoint &QPoint::operator-=(const QPoint &p)
+{ xp-=p.xp; yp-=p.yp; return *this; }
+
+inline QPoint &QPoint::operator*=(qreal c)
+{ xp = qRound(xp*c); yp = qRound(yp*c); return *this; }
+
+inline bool operator==(const QPoint &p1, const QPoint &p2)
+{ return p1.xp == p2.xp && p1.yp == p2.yp; }
+
+inline bool operator!=(const QPoint &p1, const QPoint &p2)
+{ return p1.xp != p2.xp || p1.yp != p2.yp; }
+
+inline const QPoint operator+(const QPoint &p1, const QPoint &p2)
+{ return QPoint(p1.xp+p2.xp, p1.yp+p2.yp); }
+
+inline const QPoint operator-(const QPoint &p1, const QPoint &p2)
+{ return QPoint(p1.xp-p2.xp, p1.yp-p2.yp); }
+
+inline const QPoint operator*(const QPoint &p, qreal c)
+{ return QPoint(qRound(p.xp*c), qRound(p.yp*c)); }
+
+inline const QPoint operator*(qreal c, const QPoint &p)
+{ return QPoint(qRound(p.xp*c), qRound(p.yp*c)); }
+
+inline const QPoint operator-(const QPoint &p)
+{ return QPoint(-p.xp, -p.yp); }
+
+inline QPoint &QPoint::operator/=(qreal c)
+{
+ xp = qRound(xp/c);
+ yp = qRound(yp/c);
+ return *this;
+}
+
+inline const QPoint operator/(const QPoint &p, qreal c)
+{
+ return QPoint(qRound(p.xp/c), qRound(p.yp/c));
+}
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QPoint &);
+
+
+
+
+
+
+class __attribute__((visibility("default"))) QPointF
+{
+public:
+ QPointF();
+ QPointF(const QPoint &p);
+ QPointF(qreal xpos, qreal ypos);
+
+ bool isNull() const;
+
+ qreal x() const;
+ qreal y() const;
+ void setX(qreal x);
+ void setY(qreal y);
+
+ qreal &rx();
+ qreal &ry();
+
+ QPointF &operator+=(const QPointF &p);
+ QPointF &operator-=(const QPointF &p);
+ QPointF &operator*=(qreal c);
+ QPointF &operator/=(qreal c);
+
+ friend inline bool operator==(const QPointF &, const QPointF &);
+ friend inline bool operator!=(const QPointF &, const QPointF &);
+ friend inline const QPointF operator+(const QPointF &, const QPointF &);
+ friend inline const QPointF operator-(const QPointF &, const QPointF &);
+ friend inline const QPointF operator*(qreal, const QPointF &);
+ friend inline const QPointF operator*(const QPointF &, qreal);
+ friend inline const QPointF operator-(const QPointF &);
+ friend inline const QPointF operator/(const QPointF &, qreal);
+
+ QPoint toPoint() const;
+
+private:
+ friend class QMatrix;
+ friend class QTransform;
+
+ qreal xp;
+ qreal yp;
+};
+
+template <> class QTypeInfo<QPointF> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QPointF)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QPointF"; } };
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPointF &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPointF &);
+
+
+
+
+
+
+inline QPointF::QPointF() : xp(0), yp(0) { }
+
+inline QPointF::QPointF(qreal xpos, qreal ypos) : xp(xpos), yp(ypos) { }
+
+inline QPointF::QPointF(const QPoint &p) : xp(p.x()), yp(p.y()) { }
+
+inline bool QPointF::isNull() const
+{
+ return qIsNull(xp) && qIsNull(yp);
+}
+
+inline qreal QPointF::x() const
+{
+ return xp;
+}
+
+inline qreal QPointF::y() const
+{
+ return yp;
+}
+
+inline void QPointF::setX(qreal xpos)
+{
+ xp = xpos;
+}
+
+inline void QPointF::setY(qreal ypos)
+{
+ yp = ypos;
+}
+
+inline qreal &QPointF::rx()
+{
+ return xp;
+}
+
+inline qreal &QPointF::ry()
+{
+ return yp;
+}
+
+inline QPointF &QPointF::operator+=(const QPointF &p)
+{
+ xp+=p.xp;
+ yp+=p.yp;
+ return *this;
+}
+
+inline QPointF &QPointF::operator-=(const QPointF &p)
+{
+ xp-=p.xp; yp-=p.yp; return *this;
+}
+
+inline QPointF &QPointF::operator*=(qreal c)
+{
+ xp*=c; yp*=c; return *this;
+}
+
+inline bool operator==(const QPointF &p1, const QPointF &p2)
+{
+ return qFuzzyCompare(p1.xp, p2.xp) && qFuzzyCompare(p1.yp, p2.yp);
+}
+
+inline bool operator!=(const QPointF &p1, const QPointF &p2)
+{
+ return !qFuzzyCompare(p1.xp, p2.xp) || !qFuzzyCompare(p1.yp, p2.yp);
+}
+
+inline const QPointF operator+(const QPointF &p1, const QPointF &p2)
+{
+ return QPointF(p1.xp+p2.xp, p1.yp+p2.yp);
+}
+
+inline const QPointF operator-(const QPointF &p1, const QPointF &p2)
+{
+ return QPointF(p1.xp-p2.xp, p1.yp-p2.yp);
+}
+
+inline const QPointF operator*(const QPointF &p, qreal c)
+{
+ return QPointF(p.xp*c, p.yp*c);
+}
+
+inline const QPointF operator*(qreal c, const QPointF &p)
+{
+ return QPointF(p.xp*c, p.yp*c);
+}
+
+inline const QPointF operator-(const QPointF &p)
+{
+ return QPointF(-p.xp, -p.yp);
+}
+
+inline QPointF &QPointF::operator/=(qreal c)
+{
+ xp/=c;
+ yp/=c;
+ return *this;
+}
+
+inline const QPointF operator/(const QPointF &p, qreal c)
+{
+ return QPointF(p.xp/c, p.yp/c);
+}
+
+inline QPoint QPointF::toPoint() const
+{
+ return QPoint(qRound(xp), qRound(yp));
+}
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug d, const QPointF &p);
+
+
+
+
+
+# 1 "../../include/QtCore/qpoint.h" 2
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qrect.h" 2
+
+
+
+
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class __attribute__((visibility("default"))) QRect
+{
+public:
+ QRect() { x1 = y1 = 0; x2 = y2 = -1; }
+ QRect(const QPoint &topleft, const QPoint &bottomright);
+ QRect(const QPoint &topleft, const QSize &size);
+ QRect(int left, int top, int width, int height);
+
+ bool isNull() const;
+ bool isEmpty() const;
+ bool isValid() const;
+
+ int left() const;
+ int top() const;
+ int right() const;
+ int bottom() const;
+ QRect normalized() const;
+# 85 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qrect.h"
+ int x() const;
+ int y() const;
+ void setLeft(int pos);
+ void setTop(int pos);
+ void setRight(int pos);
+ void setBottom(int pos);
+ void setX(int x);
+ void setY(int y);
+
+ void setTopLeft(const QPoint &p);
+ void setBottomRight(const QPoint &p);
+ void setTopRight(const QPoint &p);
+ void setBottomLeft(const QPoint &p);
+
+ QPoint topLeft() const;
+ QPoint bottomRight() const;
+ QPoint topRight() const;
+ QPoint bottomLeft() const;
+ QPoint center() const;
+
+ void moveLeft(int pos);
+ void moveTop(int pos);
+ void moveRight(int pos);
+ void moveBottom(int pos);
+ void moveTopLeft(const QPoint &p);
+ void moveBottomRight(const QPoint &p);
+ void moveTopRight(const QPoint &p);
+ void moveBottomLeft(const QPoint &p);
+ void moveCenter(const QPoint &p);
+
+ inline void translate(int dx, int dy);
+ inline void translate(const QPoint &p);
+ inline QRect translated(int dx, int dy) const;
+ inline QRect translated(const QPoint &p) const;
+
+ void moveTo(int x, int t);
+ void moveTo(const QPoint &p);
+
+
+
+
+
+
+ void setRect(int x, int y, int w, int h);
+ inline void getRect(int *x, int *y, int *w, int *h) const;
+
+ void setCoords(int x1, int y1, int x2, int y2);
+
+
+
+ inline void getCoords(int *x1, int *y1, int *x2, int *y2) const;
+
+ inline void adjust(int x1, int y1, int x2, int y2);
+ inline QRect adjusted(int x1, int y1, int x2, int y2) const;
+
+ QSize size() const;
+ int width() const;
+ int height() const;
+ void setWidth(int w);
+ void setHeight(int h);
+ void setSize(const QSize &s);
+
+ QRect operator|(const QRect &r) const;
+ QRect operator&(const QRect &r) const;
+ QRect& operator|=(const QRect &r);
+ QRect& operator&=(const QRect &r);
+
+ bool contains(const QPoint &p, bool proper=false) const;
+ bool contains(int x, int y) const;
+ bool contains(int x, int y, bool proper) const;
+ bool contains(const QRect &r, bool proper = false) const;
+ QRect unite(const QRect &r) const;
+ QRect united(const QRect &other) const;
+ QRect intersect(const QRect &r) const;
+ QRect intersected(const QRect &other) const;
+ bool intersects(const QRect &r) const;
+
+ friend __attribute__((visibility("default"))) inline bool operator==(const QRect &, const QRect &);
+ friend __attribute__((visibility("default"))) inline bool operator!=(const QRect &, const QRect &);
+
+
+
+
+
+
+
+private:
+# 182 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qrect.h"
+ int x1;
+ int y1;
+ int x2;
+ int y2;
+
+
+};
+template <> class QTypeInfo<QRect> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QRect)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QRect"; } };
+
+__attribute__((visibility("default"))) inline bool operator==(const QRect &, const QRect &);
+__attribute__((visibility("default"))) inline bool operator!=(const QRect &, const QRect &);
+
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QRect &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QRect &);
+
+
+
+
+
+
+inline QRect::QRect(int aleft, int atop, int awidth, int aheight)
+{
+ x1 = aleft;
+ y1 = atop;
+ x2 = (aleft + awidth - 1);
+ y2 = (atop + aheight - 1);
+}
+
+inline QRect::QRect(const QPoint &atopLeft, const QPoint &abottomRight)
+{
+ x1 = atopLeft.x();
+ y1 = atopLeft.y();
+ x2 = abottomRight.x();
+ y2 = abottomRight.y();
+}
+
+inline QRect::QRect(const QPoint &atopLeft, const QSize &asize)
+{
+ x1 = atopLeft.x();
+ y1 = atopLeft.y();
+ x2 = (x1+asize.width() - 1);
+ y2 = (y1+asize.height() - 1);
+}
+
+inline bool QRect::isNull() const
+{ return x2 == x1 - 1 && y2 == y1 - 1; }
+
+inline bool QRect::isEmpty() const
+{ return x1 > x2 || y1 > y2; }
+
+inline bool QRect::isValid() const
+{ return x1 <= x2 && y1 <= y2; }
+
+inline int QRect::left() const
+{ return x1; }
+
+inline int QRect::top() const
+{ return y1; }
+
+inline int QRect::right() const
+{ return x2; }
+
+inline int QRect::bottom() const
+{ return y2; }
+
+inline int QRect::x() const
+{ return x1; }
+
+inline int QRect::y() const
+{ return y1; }
+
+inline void QRect::setLeft(int pos)
+{ x1 = pos; }
+
+inline void QRect::setTop(int pos)
+{ y1 = pos; }
+
+inline void QRect::setRight(int pos)
+{ x2 = pos; }
+
+inline void QRect::setBottom(int pos)
+{ y2 = pos; }
+
+inline void QRect::setTopLeft(const QPoint &p)
+{ x1 = p.x(); y1 = p.y(); }
+
+inline void QRect::setBottomRight(const QPoint &p)
+{ x2 = p.x(); y2 = p.y(); }
+
+inline void QRect::setTopRight(const QPoint &p)
+{ x2 = p.x(); y1 = p.y(); }
+
+inline void QRect::setBottomLeft(const QPoint &p)
+{ x1 = p.x(); y2 = p.y(); }
+
+inline void QRect::setX(int ax)
+{ x1 = ax; }
+
+inline void QRect::setY(int ay)
+{ y1 = ay; }
+
+inline QPoint QRect::topLeft() const
+{ return QPoint(x1, y1); }
+
+inline QPoint QRect::bottomRight() const
+{ return QPoint(x2, y2); }
+
+inline QPoint QRect::topRight() const
+{ return QPoint(x2, y1); }
+
+inline QPoint QRect::bottomLeft() const
+{ return QPoint(x1, y2); }
+
+inline QPoint QRect::center() const
+{ return QPoint((x1+x2)/2, (y1+y2)/2); }
+
+inline int QRect::width() const
+{ return x2 - x1 + 1; }
+
+inline int QRect::height() const
+{ return y2 - y1 + 1; }
+
+inline QSize QRect::size() const
+{ return QSize(width(), height()); }
+
+inline void QRect::translate(int dx, int dy)
+{
+ x1 += dx;
+ y1 += dy;
+ x2 += dx;
+ y2 += dy;
+}
+
+inline void QRect::translate(const QPoint &p)
+{
+ x1 += p.x();
+ y1 += p.y();
+ x2 += p.x();
+ y2 += p.y();
+}
+
+inline QRect QRect::translated(int dx, int dy) const
+{ return QRect(QPoint(x1 + dx, y1 + dy), QPoint(x2 + dx, y2 + dy)); }
+
+inline QRect QRect::translated(const QPoint &p) const
+{ return QRect(QPoint(x1 + p.x(), y1 + p.y()), QPoint(x2 + p.x(), y2 + p.y())); }
+
+inline void QRect::moveTo(int ax, int ay)
+{
+ x2 += ax - x1;
+ y2 += ay - y1;
+ x1 = ax;
+ y1 = ay;
+}
+
+inline void QRect::moveTo(const QPoint &p)
+{
+ x2 += p.x() - x1;
+ y2 += p.y() - y1;
+ x1 = p.x();
+ y1 = p.y();
+}
+
+inline void QRect::moveLeft(int pos)
+{ x2 += (pos - x1); x1 = pos; }
+
+inline void QRect::moveTop(int pos)
+{ y2 += (pos - y1); y1 = pos; }
+
+inline void QRect::moveRight(int pos)
+{
+ x1 += (pos - x2);
+ x2 = pos;
+}
+
+inline void QRect::moveBottom(int pos)
+{
+ y1 += (pos - y2);
+ y2 = pos;
+}
+
+inline void QRect::moveTopLeft(const QPoint &p)
+{
+ moveLeft(p.x());
+ moveTop(p.y());
+}
+
+inline void QRect::moveBottomRight(const QPoint &p)
+{
+ moveRight(p.x());
+ moveBottom(p.y());
+}
+
+inline void QRect::moveTopRight(const QPoint &p)
+{
+ moveRight(p.x());
+ moveTop(p.y());
+}
+
+inline void QRect::moveBottomLeft(const QPoint &p)
+{
+ moveLeft(p.x());
+ moveBottom(p.y());
+}
+
+inline void QRect::getRect(int *ax, int *ay, int *aw, int *ah) const
+{
+ *ax = x1;
+ *ay = y1;
+ *aw = x2 - x1 + 1;
+ *ah = y2 - y1 + 1;
+}
+
+inline void QRect::setRect(int ax, int ay, int aw, int ah)
+{
+ x1 = ax;
+ y1 = ay;
+ x2 = (ax + aw - 1);
+ y2 = (ay + ah - 1);
+}
+
+inline void QRect::getCoords(int *xp1, int *yp1, int *xp2, int *yp2) const
+{
+ *xp1 = x1;
+ *yp1 = y1;
+ *xp2 = x2;
+ *yp2 = y2;
+}
+
+inline void QRect::setCoords(int xp1, int yp1, int xp2, int yp2)
+{
+ x1 = xp1;
+ y1 = yp1;
+ x2 = xp2;
+ y2 = yp2;
+}
+# 431 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qrect.h"
+inline QRect QRect::adjusted(int xp1, int yp1, int xp2, int yp2) const
+{ return QRect(QPoint(x1 + xp1, y1 + yp1), QPoint(x2 + xp2, y2 + yp2)); }
+
+inline void QRect::adjust(int dx1, int dy1, int dx2, int dy2)
+{
+ x1 += dx1;
+ y1 += dy1;
+ x2 += dx2;
+ y2 += dy2;
+}
+
+inline void QRect::setWidth(int w)
+{ x2 = (x1 + w - 1); }
+
+inline void QRect::setHeight(int h)
+{ y2 = (y1 + h - 1); }
+
+inline void QRect::setSize(const QSize &s)
+{
+ x2 = (s.width() + x1 - 1);
+ y2 = (s.height() + y1 - 1);
+}
+
+inline bool QRect::contains(int ax, int ay, bool aproper) const
+{
+ return contains(QPoint(ax, ay), aproper);
+}
+
+inline bool QRect::contains(int ax, int ay) const
+{
+ return contains(QPoint(ax, ay), false);
+}
+
+inline QRect& QRect::operator|=(const QRect &r)
+{
+ *this = *this | r;
+ return *this;
+}
+
+inline QRect& QRect::operator&=(const QRect &r)
+{
+ *this = *this & r;
+ return *this;
+}
+
+inline QRect QRect::intersect(const QRect &r) const
+{
+ return *this & r;
+}
+
+inline QRect QRect::intersected(const QRect &other) const
+{
+ return intersect(other);
+}
+
+inline QRect QRect::unite(const QRect &r) const
+{
+ return *this | r;
+}
+
+inline QRect QRect::united(const QRect &r) const
+{
+ return unite(r);
+}
+
+inline bool operator==(const QRect &r1, const QRect &r2)
+{
+ return r1.x1==r2.x1 && r1.x2==r2.x2 && r1.y1==r2.y1 && r1.y2==r2.y2;
+}
+
+inline bool operator!=(const QRect &r1, const QRect &r2)
+{
+ return r1.x1!=r2.x1 || r1.x2!=r2.x2 || r1.y1!=r2.y1 || r1.y2!=r2.y2;
+}
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QRect &);
+
+
+
+class __attribute__((visibility("default"))) QRectF
+{
+public:
+ QRectF() { xp = yp = 0.; w = h = 0.; }
+ QRectF(const QPointF &topleft, const QSizeF &size);
+ QRectF(const QPointF &topleft, const QPointF &bottomRight);
+ QRectF(qreal left, qreal top, qreal width, qreal height);
+ QRectF(const QRect &rect);
+
+ bool isNull() const;
+ bool isEmpty() const;
+ bool isValid() const;
+ QRectF normalized() const;
+
+ inline qreal left() const { return xp; }
+ inline qreal top() const { return yp; }
+ inline qreal right() const { return xp + w; }
+ inline qreal bottom() const { return yp + h; }
+
+ inline qreal x() const;
+ inline qreal y() const;
+ inline void setLeft(qreal pos);
+ inline void setTop(qreal pos);
+ inline void setRight(qreal pos);
+ inline void setBottom(qreal pos);
+ inline void setX(qreal pos) { setLeft(pos); }
+ inline void setY(qreal pos) { setTop(pos); }
+
+ inline QPointF topLeft() const { return QPointF(xp, yp); }
+ inline QPointF bottomRight() const { return QPointF(xp+w, yp+h); }
+ inline QPointF topRight() const { return QPointF(xp+w, yp); }
+ inline QPointF bottomLeft() const { return QPointF(xp, yp+h); }
+ inline QPointF center() const;
+
+ void setTopLeft(const QPointF &p);
+ void setBottomRight(const QPointF &p);
+ void setTopRight(const QPointF &p);
+ void setBottomLeft(const QPointF &p);
+
+ void moveLeft(qreal pos);
+ void moveTop(qreal pos);
+ void moveRight(qreal pos);
+ void moveBottom(qreal pos);
+ void moveTopLeft(const QPointF &p);
+ void moveBottomRight(const QPointF &p);
+ void moveTopRight(const QPointF &p);
+ void moveBottomLeft(const QPointF &p);
+ void moveCenter(const QPointF &p);
+
+ void translate(qreal dx, qreal dy);
+ void translate(const QPointF &p);
+
+ QRectF translated(qreal dx, qreal dy) const;
+ QRectF translated(const QPointF &p) const;
+
+ void moveTo(qreal x, qreal t);
+ void moveTo(const QPointF &p);
+
+ void setRect(qreal x, qreal y, qreal w, qreal h);
+ void getRect(qreal *x, qreal *y, qreal *w, qreal *h) const;
+
+ void setCoords(qreal x1, qreal y1, qreal x2, qreal y2);
+ void getCoords(qreal *x1, qreal *y1, qreal *x2, qreal *y2) const;
+
+ inline void adjust(qreal x1, qreal y1, qreal x2, qreal y2);
+ inline QRectF adjusted(qreal x1, qreal y1, qreal x2, qreal y2) const;
+
+ QSizeF size() const;
+ qreal width() const;
+ qreal height() const;
+ void setWidth(qreal w);
+ void setHeight(qreal h);
+ void setSize(const QSizeF &s);
+
+ QRectF operator|(const QRectF &r) const;
+ QRectF operator&(const QRectF &r) const;
+ QRectF& operator|=(const QRectF &r);
+ QRectF& operator&=(const QRectF &r);
+
+ bool contains(const QPointF &p) const;
+ bool contains(qreal x, qreal y) const;
+ bool contains(const QRectF &r) const;
+ QRectF unite(const QRectF &r) const;
+ QRectF united(const QRectF &other) const;
+ QRectF intersect(const QRectF &r) const;
+ QRectF intersected(const QRectF &other) const;
+ bool intersects(const QRectF &r) const;
+
+ friend __attribute__((visibility("default"))) inline bool operator==(const QRectF &, const QRectF &);
+ friend __attribute__((visibility("default"))) inline bool operator!=(const QRectF &, const QRectF &);
+
+ QRect toRect() const;
+ QRect toAlignedRect() const;
+
+private:
+ qreal xp;
+ qreal yp;
+ qreal w;
+ qreal h;
+};
+template <> class QTypeInfo<QRectF> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QRectF)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QRectF"; } };
+
+__attribute__((visibility("default"))) inline bool operator==(const QRectF &, const QRectF &);
+__attribute__((visibility("default"))) inline bool operator!=(const QRectF &, const QRectF &);
+
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QRectF &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QRectF &);
+
+
+
+
+
+
+inline QRectF::QRectF(qreal aleft, qreal atop, qreal awidth, qreal aheight)
+ : xp(aleft), yp(atop), w(awidth), h(aheight)
+{
+}
+
+inline QRectF::QRectF(const QPointF &atopLeft, const QSizeF &asize)
+{
+ xp = atopLeft.x();
+ yp = atopLeft.y();
+ w = asize.width();
+ h = asize.height();
+}
+
+inline QRectF::QRectF(const QPointF &atopLeft, const QPointF &abottomRight)
+{
+ xp = atopLeft.x();
+ yp = atopLeft.y();
+ w = abottomRight.x() - xp;
+ h = abottomRight.y() - yp;
+}
+
+inline QRectF::QRectF(const QRect &r)
+ : xp(r.x()), yp(r.y()), w(r.width()), h(r.height())
+{
+}
+
+inline bool QRectF::isNull() const
+{ return qIsNull(w) && qIsNull(h); }
+
+inline bool QRectF::isEmpty() const
+{ return w <= 0. || h <= 0.; }
+
+inline bool QRectF::isValid() const
+{ return w > 0. && h > 0.; }
+
+inline qreal QRectF::x() const
+{ return xp; }
+
+inline qreal QRectF::y() const
+{ return yp; }
+
+inline void QRectF::setLeft(qreal pos) { qreal diff = pos - xp; xp += diff; w -= diff; }
+
+inline void QRectF::setRight(qreal pos) { w = pos - xp; }
+
+inline void QRectF::setTop(qreal pos) { qreal diff = pos - yp; yp += diff; h -= diff; }
+
+inline void QRectF::setBottom(qreal pos) { h = pos - yp; }
+
+inline void QRectF::setTopLeft(const QPointF &p) { setLeft(p.x()); setTop(p.y()); }
+
+inline void QRectF::setTopRight(const QPointF &p) { setRight(p.x()); setTop(p.y()); }
+
+inline void QRectF::setBottomLeft(const QPointF &p) { setLeft(p.x()); setBottom(p.y()); }
+
+inline void QRectF::setBottomRight(const QPointF &p) { setRight(p.x()); setBottom(p.y()); }
+
+inline QPointF QRectF::center() const
+{ return QPointF(xp + w/2, yp + h/2); }
+
+inline void QRectF::moveLeft(qreal pos) { xp = pos; }
+
+inline void QRectF::moveTop(qreal pos) { yp = pos; }
+
+inline void QRectF::moveRight(qreal pos) { xp = pos - w; }
+
+inline void QRectF::moveBottom(qreal pos) { yp = pos - h; }
+
+inline void QRectF::moveTopLeft(const QPointF &p) { moveLeft(p.x()); moveTop(p.y()); }
+
+inline void QRectF::moveTopRight(const QPointF &p) { moveRight(p.x()); moveTop(p.y()); }
+
+inline void QRectF::moveBottomLeft(const QPointF &p) { moveLeft(p.x()); moveBottom(p.y()); }
+
+inline void QRectF::moveBottomRight(const QPointF &p) { moveRight(p.x()); moveBottom(p.y()); }
+
+inline void QRectF::moveCenter(const QPointF &p) { xp = p.x() - w/2; yp = p.y() - h/2; }
+
+inline qreal QRectF::width() const
+{ return w; }
+
+inline qreal QRectF::height() const
+{ return h; }
+
+inline QSizeF QRectF::size() const
+{ return QSizeF(w, h); }
+
+inline void QRectF::translate(qreal dx, qreal dy)
+{
+ xp += dx;
+ yp += dy;
+}
+
+inline void QRectF::translate(const QPointF &p)
+{
+ xp += p.x();
+ yp += p.y();
+}
+
+inline void QRectF::moveTo(qreal ax, qreal ay)
+{
+ xp = ax;
+ yp = ay;
+}
+
+inline void QRectF::moveTo(const QPointF &p)
+{
+ xp = p.x();
+ yp = p.y();
+}
+
+inline QRectF QRectF::translated(qreal dx, qreal dy) const
+{ return QRectF(xp + dx, yp + dy, w, h); }
+
+inline QRectF QRectF::translated(const QPointF &p) const
+{ return QRectF(xp + p.x(), yp + p.y(), w, h); }
+
+inline void QRectF::getRect(qreal *ax, qreal *ay, qreal *aaw, qreal *aah) const
+{
+ *ax = this->xp;
+ *ay = this->yp;
+ *aaw = this->w;
+ *aah = this->h;
+}
+
+inline void QRectF::setRect(qreal ax, qreal ay, qreal aaw, qreal aah)
+{
+ this->xp = ax;
+ this->yp = ay;
+ this->w = aaw;
+ this->h = aah;
+}
+
+inline void QRectF::getCoords(qreal *xp1, qreal *yp1, qreal *xp2, qreal *yp2) const
+{
+ *xp1 = xp;
+ *yp1 = yp;
+ *xp2 = xp + w;
+ *yp2 = yp + h;
+}
+
+inline void QRectF::setCoords(qreal xp1, qreal yp1, qreal xp2, qreal yp2)
+{
+ xp = xp1;
+ yp = yp1;
+ w = xp2 - xp1;
+ h = yp2 - yp1;
+}
+
+inline void QRectF::adjust(qreal xp1, qreal yp1, qreal xp2, qreal yp2)
+{ xp += xp1; yp += yp1; w += xp2 - xp1; h += yp2 - yp1; }
+
+inline QRectF QRectF::adjusted(qreal xp1, qreal yp1, qreal xp2, qreal yp2) const
+{ return QRectF(xp + xp1, yp + yp1, w + xp2 - xp1, h + yp2 - yp1); }
+
+inline void QRectF::setWidth(qreal aw)
+{ this->w = aw; }
+
+inline void QRectF::setHeight(qreal ah)
+{ this->h = ah; }
+
+inline void QRectF::setSize(const QSizeF &s)
+{
+ w = s.width();
+ h = s.height();
+}
+
+inline bool QRectF::contains(qreal ax, qreal ay) const
+{
+ return contains(QPointF(ax, ay));
+}
+
+inline QRectF& QRectF::operator|=(const QRectF &r)
+{
+ *this = *this | r;
+ return *this;
+}
+
+inline QRectF& QRectF::operator&=(const QRectF &r)
+{
+ *this = *this & r;
+ return *this;
+}
+
+inline QRectF QRectF::intersect(const QRectF &r) const
+{
+ return *this & r;
+}
+
+inline QRectF QRectF::intersected(const QRectF &r) const
+{
+ return intersect(r);
+}
+
+inline QRectF QRectF::unite(const QRectF &r) const
+{
+ return *this | r;
+}
+
+inline QRectF QRectF::united(const QRectF &r) const
+{
+ return unite(r);
+}
+
+inline bool operator==(const QRectF &r1, const QRectF &r2)
+{
+ return qFuzzyCompare(r1.xp, r2.xp) && qFuzzyCompare(r1.yp, r2.yp)
+ && qFuzzyCompare(r1.w, r2.w) && qFuzzyCompare(r1.h, r2.h);
+}
+
+inline bool operator!=(const QRectF &r1, const QRectF &r2)
+{
+ return !qFuzzyCompare(r1.xp, r2.xp) || !qFuzzyCompare(r1.yp, r2.yp)
+ || !qFuzzyCompare(r1.w, r2.w) || !qFuzzyCompare(r1.h, r2.h);
+}
+
+inline QRect QRectF::toRect() const
+{
+ return QRect(qRound(xp), qRound(yp), qRound(w), qRound(h));
+}
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QRectF &);
+
+
+
+
+
+# 1 "../../include/QtCore/qrect.h" 2
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextlayout.h" 2
+# 1 "../../include/QtCore/qvector.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextlayout.h" 2
+# 1 "../../include/QtGui/qcolor.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qcolor.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qcolor.h"
+#define QCOLOR_H
+
+# 1 "../../include/QtGui/qrgb.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qrgb.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qrgb.h"
+#define QRGB_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qrgb.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+typedef unsigned int QRgb;
+
+const QRgb RGB_MASK = 0x00ffffff;
+
+__attribute__((visibility("default"))) inline int qRed(QRgb rgb)
+{ return ((rgb >> 16) & 0xff); }
+
+__attribute__((visibility("default"))) inline int qGreen(QRgb rgb)
+{ return ((rgb >> 8) & 0xff); }
+
+__attribute__((visibility("default"))) inline int qBlue(QRgb rgb)
+{ return (rgb & 0xff); }
+
+__attribute__((visibility("default"))) inline int qAlpha(QRgb rgb)
+{ return ((rgb >> 24) & 0xff); }
+
+__attribute__((visibility("default"))) inline QRgb qRgb(int r, int g, int b)
+{ return (0xffu << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff); }
+
+__attribute__((visibility("default"))) inline QRgb qRgba(int r, int g, int b, int a)
+{ return ((a & 0xff) << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff); }
+
+__attribute__((visibility("default"))) inline int qGray(int r, int g, int b)
+{ return (r*11+g*16+b*5)/32; }
+
+__attribute__((visibility("default"))) inline int qGray(QRgb rgb)
+{ return qGray(qRed(rgb), qGreen(rgb), qBlue(rgb)); }
+
+__attribute__((visibility("default"))) inline bool qIsGray(QRgb rgb)
+{ return qRed(rgb) == qGreen(rgb) && qRed(rgb) == qBlue(rgb); }
+
+
+
+
+# 1 "../../include/QtGui/qrgb.h" 2
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qcolor.h" 2
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qcolor.h" 2
+# 1 "../../include/QtCore/qstringlist.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringlist.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringlist.h"
+#define QSTRINGLIST_H
+
+# 1 "../../include/QtCore/qalgorithms.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringlist.h" 2
+# 1 "../../include/QtCore/qdatastream.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringlist.h" 2
+# 1 "../../include/QtCore/qlist.h" 1
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringlist.h" 2
+# 1 "../../include/QtCore/qregexp.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qregexp.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qregexp.h"
+#define QREGEXP_H
+
+
+
+# 1 "../../include/QtCore/qstring.h" 1
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qregexp.h" 2
+
+
+
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+struct QRegExpPrivate;
+class QStringList;
+
+class __attribute__((visibility("default"))) QRegExp
+{
+public:
+ enum PatternSyntax { RegExp, Wildcard, FixedString, RegExp2 };
+ enum CaretMode { CaretAtZero, CaretAtOffset, CaretWontMatch };
+
+ QRegExp();
+ explicit QRegExp(const QString &pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive,
+ PatternSyntax syntax = RegExp);
+ QRegExp(const QRegExp &rx);
+ ~QRegExp();
+ QRegExp &operator=(const QRegExp &rx);
+
+ bool operator==(const QRegExp &rx) const;
+ inline bool operator!=(const QRegExp &rx) const { return !operator==(rx); }
+
+ bool isEmpty() const;
+ bool isValid() const;
+ QString pattern() const;
+ void setPattern(const QString &pattern);
+ Qt::CaseSensitivity caseSensitivity() const;
+ void setCaseSensitivity(Qt::CaseSensitivity cs);
+
+
+
+
+
+ PatternSyntax patternSyntax() const;
+ void setPatternSyntax(PatternSyntax syntax);
+
+
+
+
+
+
+ bool isMinimal() const;
+ void setMinimal(bool minimal);
+
+
+
+
+ bool exactMatch(const QString &str) const;
+
+ int indexIn(const QString &str, int offset = 0, CaretMode caretMode = CaretAtZero) const;
+ int lastIndexIn(const QString &str, int offset = -1, CaretMode caretMode = CaretAtZero) const;
+# 114 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qregexp.h"
+ int matchedLength() const;
+
+ int numCaptures() const;
+ QStringList capturedTexts() const;
+ QStringList capturedTexts();
+ QString cap(int nth = 0) const;
+ QString cap(int nth = 0);
+ int pos(int nth = 0) const;
+ int pos(int nth = 0);
+ QString errorString() const;
+ QString errorString();
+
+
+ static QString escape(const QString &str);
+# 138 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qregexp.h"
+private:
+ QRegExpPrivate *priv;
+};
+
+template <> class QTypeInfo<QRegExp> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QRegExp)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QRegExp"; } };
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &out, const QRegExp ®Exp);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &in, QRegExp ®Exp);
+
+
+
+
+
+# 1 "../../include/QtCore/qregexp.h" 2
+# 49 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringlist.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 50 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringlist.h" 2
+# 1 "../../include/QtCore/qstringmatcher.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringmatcher.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringmatcher.h"
+#define QSTRINGMATCHER_H
+
+# 1 "../../include/QtCore/qstring.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringmatcher.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QStringMatcherPrivate;
+
+class __attribute__((visibility("default"))) QStringMatcher
+{
+public:
+ QStringMatcher();
+ QStringMatcher(const QString &pattern,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QStringMatcher(const QChar *uc, int len,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QStringMatcher(const QStringMatcher &other);
+ ~QStringMatcher();
+
+ QStringMatcher &operator=(const QStringMatcher &other);
+
+ void setPattern(const QString &pattern);
+ void setCaseSensitivity(Qt::CaseSensitivity cs);
+
+ int indexIn(const QString &str, int from = 0) const;
+ int indexIn(const QChar *str, int length, int from = 0) const;
+ QString pattern() const;
+ inline Qt::CaseSensitivity caseSensitivity() const { return q_cs; }
+
+private:
+ QStringMatcherPrivate *d_ptr;
+ QString q_pattern;
+ Qt::CaseSensitivity q_cs;
+
+
+
+
+ union {
+ uint q_data[256];
+ struct {
+ uchar q_skiptable[256];
+ const QChar *uc;
+ int len;
+ } p;
+ };
+};
+
+
+
+
+# 1 "../../include/QtCore/qstringmatcher.h" 2
+# 51 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringlist.h" 2
+
+
+
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QRegExp;
+
+typedef QListIterator<QString> QStringListIterator;
+typedef QMutableListIterator<QString> QMutableStringListIterator;
+
+class QStringList : public QList<QString>
+{
+public:
+ inline QStringList() { }
+ inline explicit QStringList(const QString &i) { append(i); }
+ inline QStringList(const QStringList &l) : QList<QString>(l) { }
+ inline QStringList(const QList<QString> &l) : QList<QString>(l) { }
+
+ inline void sort();
+ inline int removeDuplicates();
+
+ inline QString join(const QString &sep) const;
+
+ inline QStringList filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline QBool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+
+ inline QStringList &replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+
+ inline QStringList operator+(const QStringList &other) const
+ { QStringList n = *this; n += other; return n; }
+ inline QStringList &operator<<(const QString &str)
+ { append(str); return *this; }
+ inline QStringList &operator<<(const QStringList &l)
+ { *this += l; return *this; }
+
+
+ inline QStringList filter(const QRegExp &rx) const;
+ inline QStringList &replaceInStrings(const QRegExp &rx, const QString &after);
+ inline int indexOf(const QRegExp &rx, int from = 0) const;
+ inline int lastIndexOf(const QRegExp &rx, int from = -1) const;
+ inline int indexOf(QRegExp &rx, int from = 0) const;
+ inline int lastIndexOf(QRegExp &rx, int from = -1) const;
+
+
+ using QList<QString>::indexOf;
+ using QList<QString>::lastIndexOf;
+# 126 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringlist.h"
+};
+
+namespace QtPrivate {
+ void __attribute__((visibility("default"))) QStringList_sort(QStringList *that);
+ int __attribute__((visibility("default"))) QStringList_removeDuplicates(QStringList *that);
+ QString __attribute__((visibility("default"))) QStringList_join(const QStringList *that, const QString &sep);
+ QStringList __attribute__((visibility("default"))) QStringList_filter(const QStringList *that, const QString &str,
+ Qt::CaseSensitivity cs);
+
+ QBool __attribute__((visibility("default"))) QStringList_contains(const QStringList *that, const QString &str, Qt::CaseSensitivity cs);
+ void __attribute__((visibility("default"))) QStringList_replaceInStrings(QStringList *that, const QString &before, const QString &after,
+ Qt::CaseSensitivity cs);
+
+
+ void __attribute__((visibility("default"))) QStringList_replaceInStrings(QStringList *that, const QRegExp &rx, const QString &after);
+ QStringList __attribute__((visibility("default"))) QStringList_filter(const QStringList *that, const QRegExp &re);
+ int __attribute__((visibility("default"))) QStringList_indexOf(const QStringList *that, const QRegExp &rx, int from);
+ int __attribute__((visibility("default"))) QStringList_lastIndexOf(const QStringList *that, const QRegExp &rx, int from);
+ int __attribute__((visibility("default"))) QStringList_indexOf(const QStringList *that, QRegExp &rx, int from);
+ int __attribute__((visibility("default"))) QStringList_lastIndexOf(const QStringList *that, QRegExp &rx, int from);
+
+}
+
+inline void QStringList::sort()
+{
+ QtPrivate::QStringList_sort(this);
+}
+
+inline int QStringList::removeDuplicates()
+{
+ return QtPrivate::QStringList_removeDuplicates(this);
+}
+
+inline QString QStringList::join(const QString &sep) const
+{
+ return QtPrivate::QStringList_join(this, sep);
+}
+
+inline QStringList QStringList::filter(const QString &str, Qt::CaseSensitivity cs) const
+{
+ return QtPrivate::QStringList_filter(this, str, cs);
+}
+
+inline QBool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const
+{
+ return QtPrivate::QStringList_contains(this, str, cs);
+}
+
+inline QStringList &QStringList::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs)
+{
+ QtPrivate::QStringList_replaceInStrings(this, before, after, cs);
+ return *this;
+}
+
+
+inline QStringList &QStringList::replaceInStrings(const QRegExp &rx, const QString &after)
+{
+ QtPrivate::QStringList_replaceInStrings(this, rx, after);
+ return *this;
+}
+
+inline QStringList QStringList::filter(const QRegExp &rx) const
+{
+ return QtPrivate::QStringList_filter(this, rx);
+}
+
+inline int QStringList::indexOf(const QRegExp &rx, int from) const
+{
+ return QtPrivate::QStringList_indexOf(this, rx, from);
+}
+
+inline int QStringList::lastIndexOf(const QRegExp &rx, int from) const
+{
+ return QtPrivate::QStringList_lastIndexOf(this, rx, from);
+}
+
+inline int QStringList::indexOf(QRegExp &rx, int from) const
+{
+ return QtPrivate::QStringList_indexOf(this, rx, from);
+}
+
+inline int QStringList::lastIndexOf(QRegExp &rx, int from) const
+{
+ return QtPrivate::QStringList_lastIndexOf(this, rx, from);
+}
+# 245 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qstringlist.h"
+inline QDataStream &operator>>(QDataStream &in, QStringList &list)
+{
+ return operator>>(in, static_cast<QList<QString> &>(list));
+}
+inline QDataStream &operator<<(QDataStream &out, const QStringList &list)
+{
+ return operator<<(out, static_cast<const QList<QString> &>(list));
+}
+
+
+
+
+
+# 1 "../../include/QtCore/qstringlist.h" 2
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qcolor.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QColor;
+class QColormap;
+class QVariant;
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QColor &);
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QColor &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QColor &);
+
+
+class __attribute__((visibility("default"))) QColor
+{
+public:
+ enum Spec { Invalid, Rgb, Hsv, Cmyk };
+
+ QColor();
+ QColor(Qt::GlobalColor color);
+ QColor(int r, int g, int b, int a = 255);
+ QColor(QRgb rgb);
+ QColor(const QString& name);
+ QColor(const char *name);
+ QColor(const QColor &color);
+ QColor(Spec spec);
+
+ bool isValid() const;
+
+ QString name() const;
+ void setNamedColor(const QString& name);
+
+ static QStringList colorNames();
+
+ inline Spec spec() const
+ { return cspec; }
+
+ int alpha() const;
+ void setAlpha(int alpha);
+
+ qreal alphaF() const;
+ void setAlphaF(qreal alpha);
+
+ int red() const;
+ int green() const;
+ int blue() const;
+ void setRed(int red);
+ void setGreen(int green);
+ void setBlue(int blue);
+
+ qreal redF() const;
+ qreal greenF() const;
+ qreal blueF() const;
+ void setRedF(qreal red);
+ void setGreenF(qreal green);
+ void setBlueF(qreal blue);
+
+ void getRgb(int *r, int *g, int *b, int *a = 0) const;
+ void setRgb(int r, int g, int b, int a = 255);
+
+ void getRgbF(qreal *r, qreal *g, qreal *b, qreal *a = 0) const;
+ void setRgbF(qreal r, qreal g, qreal b, qreal a = 1.0);
+
+ QRgb rgba() const;
+ void setRgba(QRgb rgba);
+
+ QRgb rgb() const;
+ void setRgb(QRgb rgb);
+
+ int hue() const;
+ int saturation() const;
+ int value() const;
+
+ qreal hueF() const;
+ qreal saturationF() const;
+ qreal valueF() const;
+
+ void getHsv(int *h, int *s, int *v, int *a = 0) const;
+ void setHsv(int h, int s, int v, int a = 255);
+
+ void getHsvF(qreal *h, qreal *s, qreal *v, qreal *a = 0) const;
+ void setHsvF(qreal h, qreal s, qreal v, qreal a = 1.0);
+
+ int cyan() const;
+ int magenta() const;
+ int yellow() const;
+ int black() const;
+
+ qreal cyanF() const;
+ qreal magentaF() const;
+ qreal yellowF() const;
+ qreal blackF() const;
+
+ void getCmyk(int *c, int *m, int *y, int *k, int *a = 0);
+ void setCmyk(int c, int m, int y, int k, int a = 255);
+
+ void getCmykF(qreal *c, qreal *m, qreal *y, qreal *k, qreal *a = 0);
+ void setCmykF(qreal c, qreal m, qreal y, qreal k, qreal a = 1.0);
+
+ QColor toRgb() const;
+ QColor toHsv() const;
+ QColor toCmyk() const;
+
+ QColor convertTo(Spec colorSpec) const;
+
+ static QColor fromRgb(QRgb rgb);
+ static QColor fromRgba(QRgb rgba);
+
+ static QColor fromRgb(int r, int g, int b, int a = 255);
+ static QColor fromRgbF(qreal r, qreal g, qreal b, qreal a = 1.0);
+
+ static QColor fromHsv(int h, int s, int v, int a = 255);
+ static QColor fromHsvF(qreal h, qreal s, qreal v, qreal a = 1.0);
+
+ static QColor fromCmyk(int c, int m, int y, int k, int a = 255);
+ static QColor fromCmykF(qreal c, qreal m, qreal y, qreal k, qreal a = 1.0);
+
+ QColor light(int f = 150) const;
+ QColor lighter(int f = 150) const;
+ QColor dark(int f = 200) const;
+ QColor darker(int f = 200) const;
+
+ QColor &operator=(const QColor &);
+ QColor &operator=(Qt::GlobalColor color);
+
+ bool operator==(const QColor &c) const;
+ bool operator!=(const QColor &c) const;
+
+ operator QVariant() const;
+# 206 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qcolor.h"
+private:
+
+
+ QColor(int, int, int, Spec);
+
+
+ void invalidate();
+
+ Spec cspec;
+ union {
+ struct {
+ ushort alpha;
+ ushort red;
+ ushort green;
+ ushort blue;
+ ushort pad;
+ } argb;
+ struct {
+ ushort alpha;
+ ushort hue;
+ ushort saturation;
+ ushort value;
+ ushort pad;
+ } ahsv;
+ struct {
+ ushort alpha;
+ ushort cyan;
+ ushort magenta;
+ ushort yellow;
+ ushort black;
+ } acmyk;
+ } ct;
+
+ friend class QColormap;
+
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QColor &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QColor &);
+
+};
+
+inline QColor::QColor()
+{ invalidate(); }
+
+inline QColor::QColor(int r, int g, int b, int a)
+{ setRgb(r, g, b, a); }
+
+inline QColor::QColor(const char *aname)
+{ setNamedColor(QLatin1String(aname)); }
+
+inline QColor::QColor(const QString& aname)
+{ setNamedColor(aname); }
+
+inline QColor::QColor(const QColor &acolor)
+ : cspec(acolor.cspec)
+{ ct.argb = acolor.ct.argb; }
+
+inline bool QColor::isValid() const
+{ return cspec != Invalid; }
+
+inline QColor QColor::lighter(int f) const
+{ return light(f); }
+
+inline QColor QColor::darker(int f) const
+{ return dark(f); }
+
+
+
+
+# 1 "../../include/QtGui/qcolor.h" 2
+# 49 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextlayout.h" 2
+# 1 "../../include/QtCore/qobject.h" 1
+# 50 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextlayout.h" 2
+# 1 "../../include/QtGui/qevent.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h"
+#define QEVENT_H
+
+# 1 "../../include/QtGui/qwindowdefs.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qwindowdefs.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qwindowdefs.h"
+#define QWINDOWDEFS_H
+
+# 1 "../../include/QtCore/qobjectdefs.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qwindowdefs.h" 2
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qwindowdefs.h" 2
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+
+
+class QPaintDevice;
+class QWidget;
+class QDialog;
+class QColor;
+class QPalette;
+
+
+
+class QCursor;
+class QPoint;
+class QSize;
+class QRect;
+class QPolygon;
+class QPainter;
+class QRegion;
+class QFont;
+class QFontMetrics;
+class QFontInfo;
+class QPen;
+class QBrush;
+class QMatrix;
+class QPixmap;
+class QBitmap;
+class QMovie;
+class QImage;
+class QPicture;
+class QPrinter;
+class QTimer;
+class QTime;
+class QClipboard;
+class QString;
+class QByteArray;
+class QApplication;
+
+template<typename T> class QList;
+typedef QList<QWidget *> QWidgetList;
+
+
+
+# 125 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qwindowdefs.h"
+typedef unsigned long WId;
+
+
+struct QWSEvent;
+
+
+
+
+
+
+
+
+template<class K, class V> class QHash;
+typedef QHash<WId, QWidget *> QWidgetMapper;
+
+template<class V> class QSet;
+typedef QSet<QWidget *> QWidgetSet;
+
+
+
+# 1 "../../include/QtGui/qwindowdefs.h" 2
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h" 2
+# 1 "../../include/QtCore/qobject.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h" 2
+# 1 "../../include/QtGui/qregion.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qregion.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qregion.h"
+#define QREGION_H
+
+# 1 "../../include/QtCore/qatomic.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qregion.h" 2
+# 1 "../../include/QtCore/qrect.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qregion.h" 2
+# 1 "../../include/QtGui/qwindowdefs.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qregion.h" 2
+
+
+# 1 "../../include/QtCore/qdatastream.h" 1
+# 51 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qregion.h" 2
+
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+template <class T> class QVector;
+class QVariant;
+
+
+struct QRegionPrivate;
+
+
+class QBitmap;
+
+class __attribute__((visibility("default"))) QRegion
+{
+public:
+ enum RegionType { Rectangle, Ellipse };
+
+ QRegion();
+ QRegion(int x, int y, int w, int h, RegionType t = Rectangle);
+ QRegion(const QRect &r, RegionType t = Rectangle);
+ QRegion(const QPolygon &pa, Qt::FillRule fillRule = Qt::OddEvenFill);
+
+
+
+ QRegion(const QRegion ®ion);
+ QRegion(const QBitmap &bitmap);
+ ~QRegion();
+ QRegion &operator=(const QRegion &);
+
+
+
+
+ bool isEmpty() const;
+
+ bool contains(const QPoint &p) const;
+ bool contains(const QRect &r) const;
+
+ void translate(int dx, int dy);
+ inline void translate(const QPoint &p) { translate(p.x(), p.y()); }
+ QRegion translated(int dx, int dy) const;
+ inline QRegion translated(const QPoint &p) const { return translated(p.x(), p.y()); }
+
+
+ QRegion unite(const QRegion &r) const;
+ QRegion unite(const QRect &r) const;
+ QRegion intersect(const QRegion &r) const;
+ QRegion intersect(const QRect &r) const;
+ QRegion subtract(const QRegion &r) const;
+ QRegion eor(const QRegion &r) const;
+
+ inline QRegion united(const QRegion &r) const { return unite(r); }
+ inline QRegion united(const QRect &r) const { return unite(r); }
+ inline QRegion intersected(const QRegion &r) const { return intersect(r); }
+ inline QRegion intersected(const QRect &r) const { return intersect(r); }
+ inline QRegion subtracted(const QRegion &r) const { return subtract(r); }
+ inline QRegion xored(const QRegion &r) const { return eor(r); }
+
+ bool intersects(const QRegion &r) const;
+ bool intersects(const QRect &r) const;
+
+ QRect boundingRect() const;
+ QVector<QRect> rects() const;
+ void setRects(const QRect *rect, int num);
+ int numRects() const;
+
+ const QRegion operator|(const QRegion &r) const;
+ const QRegion operator+(const QRegion &r) const;
+ const QRegion operator+(const QRect &r) const;
+ const QRegion operator&(const QRegion &r) const;
+ const QRegion operator&(const QRect &r) const;
+ const QRegion operator-(const QRegion &r) const;
+ const QRegion operator^(const QRegion &r) const;
+ QRegion& operator|=(const QRegion &r);
+ QRegion& operator+=(const QRegion &r);
+ QRegion& operator+=(const QRect &r);
+ QRegion& operator&=(const QRegion &r);
+ QRegion& operator&=(const QRect &r);
+ QRegion& operator-=(const QRegion &r);
+ QRegion& operator^=(const QRegion &r);
+
+ bool operator==(const QRegion &r) const;
+ inline bool operator!=(const QRegion &r) const { return !(operator==(r)); }
+ operator QVariant() const;
+# 163 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qregion.h"
+ inline void *handle() const { return d->qt_rgn; }
+
+
+
+
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QRegion &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QRegion &);
+
+private:
+ QRegion copy() const;
+ void detach();
+# 185 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qregion.h"
+ friend bool qt_region_strictContains(const QRegion ®ion,
+ const QRect &rect);
+ friend struct QRegionPrivate;
+
+
+ void exec(const QByteArray &ba, int ver = 0, QDataStream::ByteOrder byteOrder = QDataStream::BigEndian);
+
+ struct QRegionData {
+ QBasicAtomicInt ref;
+# 203 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qregion.h"
+ QRegionPrivate *qt_rgn;
+
+ };
+
+
+
+ struct QRegionData *d;
+ static struct QRegionData shared_empty;
+ static void cleanUp(QRegionData *x);
+};
+
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QRegion &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QRegion &);
+
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QRegion &);
+
+
+
+
+
+# 1 "../../include/QtGui/qregion.h" 2
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h" 2
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 49 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 50 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h" 2
+# 1 "../../include/QtGui/qkeysequence.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qkeysequence.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qkeysequence.h"
+#define QKEYSEQUENCE_H
+
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qkeysequence.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qkeysequence.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+
+
+
+
+
+
+class QKeySequence;
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &in, const QKeySequence &ks);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &out, QKeySequence &ks);
+
+
+
+
+
+
+class QVariant;
+class QKeySequencePrivate;
+
+class __attribute__((visibility("default"))) QKeySequence
+{
+public:
+ enum StandardKey {
+ UnknownKey,
+ HelpContents,
+ WhatsThis,
+ Open,
+ Close,
+ Save,
+ New,
+ Delete,
+ Cut,
+ Copy,
+ Paste,
+ Undo,
+ Redo,
+ Back,
+ Forward,
+ Refresh,
+ ZoomIn,
+ ZoomOut,
+ Print,
+ AddTab,
+ NextChild,
+ PreviousChild,
+ Find,
+ FindNext,
+ FindPrevious,
+ Replace,
+ SelectAll,
+ Bold,
+ Italic,
+ Underline,
+ MoveToNextChar,
+ MoveToPreviousChar,
+ MoveToNextWord,
+ MoveToPreviousWord,
+ MoveToNextLine,
+ MoveToPreviousLine,
+ MoveToNextPage,
+ MoveToPreviousPage,
+ MoveToStartOfLine,
+ MoveToEndOfLine,
+ MoveToStartOfBlock,
+ MoveToEndOfBlock,
+ MoveToStartOfDocument,
+ MoveToEndOfDocument,
+ SelectNextChar,
+ SelectPreviousChar,
+ SelectNextWord,
+ SelectPreviousWord,
+ SelectNextLine,
+ SelectPreviousLine,
+ SelectNextPage,
+ SelectPreviousPage,
+ SelectStartOfLine,
+ SelectEndOfLine,
+ SelectStartOfBlock,
+ SelectEndOfBlock,
+ SelectStartOfDocument,
+ SelectEndOfDocument,
+ DeleteStartOfWord,
+ DeleteEndOfWord,
+ DeleteEndOfLine,
+ InsertParagraphSeparator,
+ InsertLineSeparator,
+ SaveAs
+ };
+
+ QKeySequence();
+ QKeySequence(const QString &key);
+ QKeySequence(int k1, int k2 = 0, int k3 = 0, int k4 = 0);
+ QKeySequence(const QKeySequence &ks);
+ QKeySequence(StandardKey key);
+ ~QKeySequence();
+
+ uint count() const;
+ bool isEmpty() const;
+
+ enum SequenceMatch {
+ NoMatch,
+ PartialMatch,
+ ExactMatch
+
+
+
+ };
+
+ enum SequenceFormat {
+ NativeText,
+ PortableText
+ };
+
+ QString toString(SequenceFormat format = PortableText) const;
+ static QKeySequence fromString(const QString &str, SequenceFormat format = PortableText);
+
+ SequenceMatch matches(const QKeySequence &seq) const;
+ static QKeySequence mnemonic(const QString &text);
+ static QList<QKeySequence> keyBindings(StandardKey key);
+
+
+ operator QString() const;
+ operator QVariant() const;
+ operator int() const;
+ int operator[](uint i) const;
+ QKeySequence &operator=(const QKeySequence &other);
+ bool operator==(const QKeySequence &other) const;
+ inline bool operator!= (const QKeySequence &other) const
+ { return !(*this == other); }
+ bool operator< (const QKeySequence &ks) const;
+ inline bool operator> (const QKeySequence &other) const
+ { return other < *this; }
+ inline bool operator<= (const QKeySequence &other) const
+ { return !(other < *this); }
+ inline bool operator>= (const QKeySequence &other) const
+ { return !(*this < other); }
+
+ bool isDetached() const;
+private:
+ static int decodeString(const QString &ks);
+ static QString encodeString(int key);
+ int assign(const QString &str);
+ void setKey(int key, int index);
+
+ QKeySequencePrivate *d;
+
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &in, const QKeySequence &ks);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &in, QKeySequence &ks);
+ friend class Q3AccelManager;
+ friend class QShortcutMap;
+ friend class QShortcut;
+
+public:
+ typedef QKeySequencePrivate * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+template <> class QTypeInfo<QKeySequence> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QKeySequence)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QKeySequence"; } };
+template <> inline bool qIsDetached<QKeySequence>(QKeySequence &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QKeySequence>(QKeySequence &value1, QKeySequence &value2) { const QKeySequence::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QKeySequence &);
+# 227 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qkeysequence.h"
+
+
+
+# 1 "../../include/QtGui/qkeysequence.h" 2
+# 51 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h" 2
+# 1 "../../include/QtCore/qcoreevent.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qcoreevent.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qcoreevent.h"
+#define QCOREEVENT_H
+
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qcoreevent.h" 2
+# 1 "../../include/QtCore/qbytearray.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qcoreevent.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QEventPrivate;
+class __attribute__((visibility("default"))) QEvent
+{
+
+public:
+ enum Type {
+
+
+
+
+
+
+ None = 0,
+ Timer = 1,
+ MouseButtonPress = 2,
+ MouseButtonRelease = 3,
+ MouseButtonDblClick = 4,
+ MouseMove = 5,
+ KeyPress = 6,
+ KeyRelease = 7,
+ FocusIn = 8,
+ FocusOut = 9,
+ Enter = 10,
+ Leave = 11,
+ Paint = 12,
+ Move = 13,
+ Resize = 14,
+ Create = 15,
+ Destroy = 16,
+ Show = 17,
+ Hide = 18,
+ Close = 19,
+ Quit = 20,
+ ParentChange = 21,
+ ParentAboutToChange = 131,
+
+
+
+ ThreadChange = 22,
+ WindowActivate = 24,
+ WindowDeactivate = 25,
+ ShowToParent = 26,
+ HideToParent = 27,
+ Wheel = 31,
+ WindowTitleChange = 33,
+ WindowIconChange = 34,
+ ApplicationWindowIconChange = 35,
+ ApplicationFontChange = 36,
+ ApplicationLayoutDirectionChange = 37,
+ ApplicationPaletteChange = 38,
+ PaletteChange = 39,
+ Clipboard = 40,
+ Speech = 42,
+ MetaCall = 43,
+ SockAct = 50,
+ WinEventAct = 132,
+ DeferredDelete = 52,
+ DragEnter = 60,
+ DragMove = 61,
+ DragLeave = 62,
+ Drop = 63,
+ DragResponse = 64,
+ ChildAdded = 68,
+ ChildPolished = 69,
+
+
+
+
+
+ ChildRemoved = 71,
+ ShowWindowRequest = 73,
+ PolishRequest = 74,
+ Polish = 75,
+ LayoutRequest = 76,
+ UpdateRequest = 77,
+ UpdateLater = 78,
+
+ EmbeddingControl = 79,
+ ActivateControl = 80,
+ DeactivateControl = 81,
+ ContextMenu = 82,
+ InputMethod = 83,
+ AccessibilityPrepare = 86,
+ TabletMove = 87,
+ LocaleChange = 88,
+ LanguageChange = 89,
+ LayoutDirectionChange = 90,
+ Style = 91,
+ TabletPress = 92,
+ TabletRelease = 93,
+ OkRequest = 94,
+ HelpRequest = 95,
+
+ IconDrag = 96,
+
+ FontChange = 97,
+ EnabledChange = 98,
+ ActivationChange = 99,
+ StyleChange = 100,
+ IconTextChange = 101,
+ ModifiedChange = 102,
+ MouseTrackingChange = 109,
+
+ WindowBlocked = 103,
+ WindowUnblocked = 104,
+ WindowStateChange = 105,
+
+ ToolTip = 110,
+ WhatsThis = 111,
+ StatusTip = 112,
+
+ ActionChanged = 113,
+ ActionAdded = 114,
+ ActionRemoved = 115,
+
+ FileOpen = 116,
+
+ Shortcut = 117,
+ ShortcutOverride = 51,
+
+
+
+
+
+
+
+ WhatsThisClicked = 118,
+
+
+
+
+
+ ToolBarChange = 120,
+
+ ApplicationActivate = 121,
+ ApplicationActivated = ApplicationActivate,
+ ApplicationDeactivate = 122,
+ ApplicationDeactivated = ApplicationDeactivate,
+
+ QueryWhatsThis = 123,
+ EnterWhatsThisMode = 124,
+ LeaveWhatsThisMode = 125,
+
+ ZOrderChange = 126,
+
+ HoverEnter = 127,
+ HoverLeave = 128,
+ HoverMove = 129,
+
+ AccessibilityHelp = 119,
+ AccessibilityDescription = 130,
+
+
+
+
+
+
+
+ AcceptDropsChange = 152,
+
+ MenubarUpdated = 153,
+
+
+ ZeroTimerEvent = 154,
+
+ GraphicsSceneMouseMove = 155,
+ GraphicsSceneMousePress = 156,
+ GraphicsSceneMouseRelease = 157,
+ GraphicsSceneMouseDoubleClick = 158,
+ GraphicsSceneContextMenu = 159,
+ GraphicsSceneHoverEnter = 160,
+ GraphicsSceneHoverMove = 161,
+ GraphicsSceneHoverLeave = 162,
+ GraphicsSceneHelp = 163,
+ GraphicsSceneDragEnter = 164,
+ GraphicsSceneDragMove = 165,
+ GraphicsSceneDragLeave = 166,
+ GraphicsSceneDrop = 167,
+ GraphicsSceneWheel = 168,
+
+ KeyboardLayoutChange = 169,
+
+ DynamicPropertyChange = 170,
+
+ TabletEnterProximity = 171,
+ TabletLeaveProximity = 172,
+
+ NonClientAreaMouseMove = 173,
+ NonClientAreaMouseButtonPress = 174,
+ NonClientAreaMouseButtonRelease = 175,
+ NonClientAreaMouseButtonDblClick = 176,
+
+ MacSizeChange = 177,
+
+ ContentsRectChange = 178,
+
+ MacGLWindowChange = 179,
+
+ FutureCallOut = 180,
+
+ GraphicsSceneResize = 181,
+ GraphicsSceneMove = 182,
+
+ CursorChange = 183,
+ ToolTipChange = 184,
+
+ NetworkReplyUpdated = 185,
+
+ GrabMouse = 186,
+ UngrabMouse = 187,
+ GrabKeyboard = 188,
+ UngrabKeyboard = 189,
+ CocoaRequestModal = 190,
+ MacGLClearDrawable = 191,
+
+
+
+
+ User = 1000,
+ MaxUser = 65535
+ };
+
+ QEvent(Type type);
+ virtual ~QEvent();
+ inline Type type() const { return static_cast<Type>(t); }
+ inline bool spontaneous() const { return spont; }
+
+ inline void setAccepted(bool accepted) { m_accept = accepted; }
+ inline bool isAccepted() const { return m_accept; }
+
+ inline void accept() { m_accept = true; }
+ inline void ignore() { m_accept = false; }
+
+ static int registerEventType(int hint = -1);
+
+protected:
+ QEventPrivate *d;
+ ushort t;
+
+private:
+ ushort posted : 1;
+ ushort spont : 1;
+ ushort m_accept : 1;
+ ushort reserved : 13;
+
+ friend class QCoreApplication;
+ friend class QCoreApplicationPrivate;
+ friend class QThreadData;
+ friend class QApplication;
+ friend class QApplicationPrivate;
+ friend class Q3AccelManager;
+ friend class QShortcutMap;
+ friend class QETWidget;
+};
+
+class __attribute__((visibility("default"))) QTimerEvent : public QEvent
+{
+public:
+ QTimerEvent( int timerId );
+ ~QTimerEvent();
+ int timerId() const { return id; }
+protected:
+ int id;
+};
+
+class QObject;
+
+class __attribute__((visibility("default"))) QChildEvent : public QEvent
+{
+public:
+ QChildEvent( Type type, QObject *child );
+ ~QChildEvent();
+ QObject *child() const { return c; }
+ bool added() const { return type() == ChildAdded; }
+
+
+
+ bool polished() const { return type() == ChildPolished; }
+ bool removed() const { return type() == ChildRemoved; }
+protected:
+ QObject *c;
+};
+# 348 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qcoreevent.h"
+class __attribute__((visibility("default"))) QDynamicPropertyChangeEvent : public QEvent
+{
+public:
+ QDynamicPropertyChangeEvent(const QByteArray &name);
+ ~QDynamicPropertyChangeEvent();
+
+ inline QByteArray propertyName() const { return n; }
+
+private:
+ QByteArray n;
+};
+
+
+
+
+# 1 "../../include/QtCore/qcoreevent.h" 2
+# 52 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h" 2
+# 1 "../../include/QtGui/qmime.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qmime.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qmime.h"
+#define QMIME_H
+
+# 1 "../../include/QtCore/qmimedata.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmimedata.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmimedata.h"
+#define QMIMEDATA_H
+
+# 1 "../../include/QtCore/qvariant.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h"
+#define QVARIANT_H
+
+# 1 "../../include/QtCore/qatomic.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h" 2
+# 1 "../../include/QtCore/qbytearray.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h" 2
+# 1 "../../include/QtCore/qlist.h" 1
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h" 2
+# 1 "../../include/QtCore/qmetatype.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmetatype.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmetatype.h"
+#define QMETATYPE_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmetatype.h" 2
+# 1 "../../include/QtCore/qatomic.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmetatype.h" 2
+
+
+# 1 "../../include/QtCore/qdatastream.h" 1
+# 50 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmetatype.h" 2
+
+
+
+
+
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class __attribute__((visibility("default"))) QMetaType {
+public:
+ enum Type {
+
+ Void = 0, Bool = 1, Int = 2, UInt = 3, LongLong = 4, ULongLong = 5,
+ Double = 6, QChar = 7, QVariantMap = 8, QVariantList = 9,
+ QString = 10, QStringList = 11, QByteArray = 12,
+ QBitArray = 13, QDate = 14, QTime = 15, QDateTime = 16, QUrl = 17,
+ QLocale = 18, QRect = 19, QRectF = 20, QSize = 21, QSizeF = 22,
+ QLine = 23, QLineF = 24, QPoint = 25, QPointF = 26, QRegExp = 27,
+ QVariantHash = 28, LastCoreType = 28 ,
+
+ FirstGuiType = 63 ,
+
+
+
+ QFont = 64, QPixmap = 65, QBrush = 66, QColor = 67, QPalette = 68,
+ QIcon = 69, QImage = 70, QPolygon = 71, QRegion = 72, QBitmap = 73,
+ QCursor = 74, QSizePolicy = 75, QKeySequence = 76, QPen = 77,
+ QTextLength = 78, QTextFormat = 79, QMatrix = 80, QTransform = 81,
+ LastGuiType = 81 ,
+
+ FirstCoreExtType = 128 ,
+ VoidStar = 128, Long = 129, Short = 130, Char = 131, ULong = 132,
+ UShort = 133, UChar = 134, Float = 135, QObjectStar = 136, QWidgetStar = 137,
+ LastCoreExtType = 137 ,
+
+ User = 256
+ };
+
+ typedef void (*Destructor)(void *);
+ typedef void *(*Constructor)(const void *);
+
+
+ typedef void (*SaveOperator)(QDataStream &, const void *);
+ typedef void (*LoadOperator)(QDataStream &, void *);
+ static void registerStreamOperators(const char *typeName, SaveOperator saveOp,
+ LoadOperator loadOp);
+
+ static int registerType(const char *typeName, Destructor destructor,
+ Constructor constructor);
+ static int type(const char *typeName);
+ static const char *typeName(int type);
+ static bool isRegistered(int type);
+ static void *construct(int type, const void *copy = 0);
+ static void destroy(int type, void *data);
+ static void unregisterType(const char *typeName);
+
+
+ static bool save(QDataStream &stream, int type, const void *data);
+ static bool load(QDataStream &stream, int type, void *data);
+
+};
+
+template <typename T>
+void qMetaTypeDeleteHelper(T *t)
+{
+ delete t;
+}
+
+template <typename T>
+void *qMetaTypeConstructHelper(const T *t)
+{
+ if (!t)
+ return new T;
+ return new T(*static_cast<const T*>(t));
+}
+
+
+template <typename T>
+void qMetaTypeSaveHelper(QDataStream &stream, const T *t)
+{
+ stream << *t;
+}
+
+template <typename T>
+void qMetaTypeLoadHelper(QDataStream &stream, T *t)
+{
+ stream >> *t;
+}
+
+
+template <typename T>
+int qRegisterMetaType(const char *typeName
+
+ , T * = 0
+
+)
+{
+ typedef void*(*ConstructPtr)(const T*);
+ ConstructPtr cptr = qMetaTypeConstructHelper<T>;
+ typedef void(*DeletePtr)(T*);
+ DeletePtr dptr = qMetaTypeDeleteHelper<T>;
+
+ return QMetaType::registerType(typeName, reinterpret_cast<QMetaType::Destructor>(dptr),
+ reinterpret_cast<QMetaType::Constructor>(cptr));
+}
+
+
+template <typename T>
+void qRegisterMetaTypeStreamOperators(const char *typeName
+
+ , T * = 0
+
+)
+{
+ typedef void(*SavePtr)(QDataStream &, const T *);
+ typedef void(*LoadPtr)(QDataStream &, T *);
+ SavePtr sptr = qMetaTypeSaveHelper<T>;
+ LoadPtr lptr = qMetaTypeLoadHelper<T>;
+
+ qRegisterMetaType<T>(typeName);
+ QMetaType::registerStreamOperators(typeName, reinterpret_cast<QMetaType::SaveOperator>(sptr),
+ reinterpret_cast<QMetaType::LoadOperator>(lptr));
+}
+
+
+template <typename T>
+struct QMetaTypeId
+{
+ enum { Defined = 0 };
+};
+
+template <typename T>
+struct QMetaTypeId2
+{
+ enum { Defined = QMetaTypeId<T>::Defined };
+ static inline int qt_metatype_id() { return QMetaTypeId<T>::qt_metatype_id(); }
+};
+
+template <typename T>
+inline int qMetaTypeId(
+
+ T * = 0
+
+)
+{
+ return QMetaTypeId2<T>::qt_metatype_id();
+}
+
+template <typename T>
+inline int qRegisterMetaType(
+
+ T * dummy = 0
+
+)
+{
+
+
+
+ return qMetaTypeId(dummy);
+
+}
+
+#define Q_DECLARE_METATYPE(TYPE) QT_BEGIN_NAMESPACE template <> struct QMetaTypeId< TYPE > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); if (!metatype_id) metatype_id = qRegisterMetaType< TYPE >(#TYPE); return metatype_id; } }; QT_END_NAMESPACE
+# 232 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmetatype.h"
+#define Q_DECLARE_BUILTIN_METATYPE(TYPE,NAME) QT_BEGIN_NAMESPACE template<> struct QMetaTypeId2<TYPE> { enum { Defined = 1, MetaType = QMetaType::NAME }; static inline int qt_metatype_id() { return QMetaType::NAME; } }; QT_END_NAMESPACE
+# 241 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmetatype.h"
+class QString;
+class QByteArray;
+class QChar;
+class QStringList;
+class QBitArray;
+class QDate;
+class QTime;
+class QDateTime;
+class QUrl;
+class QLocale;
+class QRect;
+class QRectF;
+class QSize;
+class QSizeF;
+class QLine;
+class QLineF;
+class QPoint;
+class QPointF;
+
+class QRegExp;
+
+class QWidget;
+class QObject;
+
+
+
+
+class QFont;
+class QPixmap;
+class QBrush;
+class QColor;
+class QPalette;
+class QIcon;
+class QImage;
+class QPolygon;
+class QRegion;
+class QBitmap;
+class QCursor;
+class QSizePolicy;
+class QKeySequence;
+class QPen;
+class QTextLength;
+class QTextFormat;
+class QMatrix;
+class QTransform;
+
+
+
+ template<> struct QMetaTypeId2<QString> { enum { Defined = 1, MetaType = QMetaType::QString }; static inline int qt_metatype_id() { return QMetaType::QString; } };
+ template<> struct QMetaTypeId2<int> { enum { Defined = 1, MetaType = QMetaType::Int }; static inline int qt_metatype_id() { return QMetaType::Int; } };
+ template<> struct QMetaTypeId2<uint> { enum { Defined = 1, MetaType = QMetaType::UInt }; static inline int qt_metatype_id() { return QMetaType::UInt; } };
+ template<> struct QMetaTypeId2<bool> { enum { Defined = 1, MetaType = QMetaType::Bool }; static inline int qt_metatype_id() { return QMetaType::Bool; } };
+ template<> struct QMetaTypeId2<double> { enum { Defined = 1, MetaType = QMetaType::Double }; static inline int qt_metatype_id() { return QMetaType::Double; } };
+ template<> struct QMetaTypeId2<QByteArray> { enum { Defined = 1, MetaType = QMetaType::QByteArray }; static inline int qt_metatype_id() { return QMetaType::QByteArray; } };
+ template<> struct QMetaTypeId2<QChar> { enum { Defined = 1, MetaType = QMetaType::QChar }; static inline int qt_metatype_id() { return QMetaType::QChar; } };
+ template<> struct QMetaTypeId2<long> { enum { Defined = 1, MetaType = QMetaType::Long }; static inline int qt_metatype_id() { return QMetaType::Long; } };
+ template<> struct QMetaTypeId2<short> { enum { Defined = 1, MetaType = QMetaType::Short }; static inline int qt_metatype_id() { return QMetaType::Short; } };
+ template<> struct QMetaTypeId2<char> { enum { Defined = 1, MetaType = QMetaType::Char }; static inline int qt_metatype_id() { return QMetaType::Char; } };
+ template<> struct QMetaTypeId2<ulong> { enum { Defined = 1, MetaType = QMetaType::ULong }; static inline int qt_metatype_id() { return QMetaType::ULong; } };
+ template<> struct QMetaTypeId2<ushort> { enum { Defined = 1, MetaType = QMetaType::UShort }; static inline int qt_metatype_id() { return QMetaType::UShort; } };
+ template<> struct QMetaTypeId2<uchar> { enum { Defined = 1, MetaType = QMetaType::UChar }; static inline int qt_metatype_id() { return QMetaType::UChar; } };
+ template<> struct QMetaTypeId2<float> { enum { Defined = 1, MetaType = QMetaType::Float }; static inline int qt_metatype_id() { return QMetaType::Float; } };
+ template<> struct QMetaTypeId2<QObject *> { enum { Defined = 1, MetaType = QMetaType::QObjectStar }; static inline int qt_metatype_id() { return QMetaType::QObjectStar; } };
+ template<> struct QMetaTypeId2<QWidget *> { enum { Defined = 1, MetaType = QMetaType::QWidgetStar }; static inline int qt_metatype_id() { return QMetaType::QWidgetStar; } };
+ template<> struct QMetaTypeId2<void *> { enum { Defined = 1, MetaType = QMetaType::VoidStar }; static inline int qt_metatype_id() { return QMetaType::VoidStar; } };
+ template<> struct QMetaTypeId2<qlonglong> { enum { Defined = 1, MetaType = QMetaType::LongLong }; static inline int qt_metatype_id() { return QMetaType::LongLong; } };
+ template<> struct QMetaTypeId2<qulonglong> { enum { Defined = 1, MetaType = QMetaType::ULongLong }; static inline int qt_metatype_id() { return QMetaType::ULongLong; } };
+ template<> struct QMetaTypeId2<QStringList> { enum { Defined = 1, MetaType = QMetaType::QStringList }; static inline int qt_metatype_id() { return QMetaType::QStringList; } };
+ template<> struct QMetaTypeId2<QBitArray> { enum { Defined = 1, MetaType = QMetaType::QBitArray }; static inline int qt_metatype_id() { return QMetaType::QBitArray; } };
+ template<> struct QMetaTypeId2<QDate> { enum { Defined = 1, MetaType = QMetaType::QDate }; static inline int qt_metatype_id() { return QMetaType::QDate; } };
+ template<> struct QMetaTypeId2<QTime> { enum { Defined = 1, MetaType = QMetaType::QTime }; static inline int qt_metatype_id() { return QMetaType::QTime; } };
+ template<> struct QMetaTypeId2<QDateTime> { enum { Defined = 1, MetaType = QMetaType::QDateTime }; static inline int qt_metatype_id() { return QMetaType::QDateTime; } };
+ template<> struct QMetaTypeId2<QUrl> { enum { Defined = 1, MetaType = QMetaType::QUrl }; static inline int qt_metatype_id() { return QMetaType::QUrl; } };
+ template<> struct QMetaTypeId2<QLocale> { enum { Defined = 1, MetaType = QMetaType::QLocale }; static inline int qt_metatype_id() { return QMetaType::QLocale; } };
+ template<> struct QMetaTypeId2<QRect> { enum { Defined = 1, MetaType = QMetaType::QRect }; static inline int qt_metatype_id() { return QMetaType::QRect; } };
+ template<> struct QMetaTypeId2<QRectF> { enum { Defined = 1, MetaType = QMetaType::QRectF }; static inline int qt_metatype_id() { return QMetaType::QRectF; } };
+ template<> struct QMetaTypeId2<QSize> { enum { Defined = 1, MetaType = QMetaType::QSize }; static inline int qt_metatype_id() { return QMetaType::QSize; } };
+ template<> struct QMetaTypeId2<QSizeF> { enum { Defined = 1, MetaType = QMetaType::QSizeF }; static inline int qt_metatype_id() { return QMetaType::QSizeF; } };
+ template<> struct QMetaTypeId2<QLine> { enum { Defined = 1, MetaType = QMetaType::QLine }; static inline int qt_metatype_id() { return QMetaType::QLine; } };
+ template<> struct QMetaTypeId2<QLineF> { enum { Defined = 1, MetaType = QMetaType::QLineF }; static inline int qt_metatype_id() { return QMetaType::QLineF; } };
+ template<> struct QMetaTypeId2<QPoint> { enum { Defined = 1, MetaType = QMetaType::QPoint }; static inline int qt_metatype_id() { return QMetaType::QPoint; } };
+ template<> struct QMetaTypeId2<QPointF> { enum { Defined = 1, MetaType = QMetaType::QPointF }; static inline int qt_metatype_id() { return QMetaType::QPointF; } };
+
+ template<> struct QMetaTypeId2<QRegExp> { enum { Defined = 1, MetaType = QMetaType::QRegExp }; static inline int qt_metatype_id() { return QMetaType::QRegExp; } };
+
+
+
+
+
+ template<> struct QMetaTypeId2<QFont> { enum { Defined = 1, MetaType = QMetaType::QFont }; static inline int qt_metatype_id() { return QMetaType::QFont; } };
+ template<> struct QMetaTypeId2<QPixmap> { enum { Defined = 1, MetaType = QMetaType::QPixmap }; static inline int qt_metatype_id() { return QMetaType::QPixmap; } };
+ template<> struct QMetaTypeId2<QBrush> { enum { Defined = 1, MetaType = QMetaType::QBrush }; static inline int qt_metatype_id() { return QMetaType::QBrush; } };
+ template<> struct QMetaTypeId2<QColor> { enum { Defined = 1, MetaType = QMetaType::QColor }; static inline int qt_metatype_id() { return QMetaType::QColor; } };
+ template<> struct QMetaTypeId2<QPalette> { enum { Defined = 1, MetaType = QMetaType::QPalette }; static inline int qt_metatype_id() { return QMetaType::QPalette; } };
+ template<> struct QMetaTypeId2<QIcon> { enum { Defined = 1, MetaType = QMetaType::QIcon }; static inline int qt_metatype_id() { return QMetaType::QIcon; } };
+ template<> struct QMetaTypeId2<QImage> { enum { Defined = 1, MetaType = QMetaType::QImage }; static inline int qt_metatype_id() { return QMetaType::QImage; } };
+ template<> struct QMetaTypeId2<QPolygon> { enum { Defined = 1, MetaType = QMetaType::QPolygon }; static inline int qt_metatype_id() { return QMetaType::QPolygon; } };
+ template<> struct QMetaTypeId2<QRegion> { enum { Defined = 1, MetaType = QMetaType::QRegion }; static inline int qt_metatype_id() { return QMetaType::QRegion; } };
+ template<> struct QMetaTypeId2<QBitmap> { enum { Defined = 1, MetaType = QMetaType::QBitmap }; static inline int qt_metatype_id() { return QMetaType::QBitmap; } };
+ template<> struct QMetaTypeId2<QCursor> { enum { Defined = 1, MetaType = QMetaType::QCursor }; static inline int qt_metatype_id() { return QMetaType::QCursor; } };
+ template<> struct QMetaTypeId2<QSizePolicy> { enum { Defined = 1, MetaType = QMetaType::QSizePolicy }; static inline int qt_metatype_id() { return QMetaType::QSizePolicy; } };
+ template<> struct QMetaTypeId2<QKeySequence> { enum { Defined = 1, MetaType = QMetaType::QKeySequence }; static inline int qt_metatype_id() { return QMetaType::QKeySequence; } };
+ template<> struct QMetaTypeId2<QPen> { enum { Defined = 1, MetaType = QMetaType::QPen }; static inline int qt_metatype_id() { return QMetaType::QPen; } };
+ template<> struct QMetaTypeId2<QTextLength> { enum { Defined = 1, MetaType = QMetaType::QTextLength }; static inline int qt_metatype_id() { return QMetaType::QTextLength; } };
+ template<> struct QMetaTypeId2<QTextFormat> { enum { Defined = 1, MetaType = QMetaType::QTextFormat }; static inline int qt_metatype_id() { return QMetaType::QTextFormat; } };
+ template<> struct QMetaTypeId2<QMatrix> { enum { Defined = 1, MetaType = QMetaType::QMatrix }; static inline int qt_metatype_id() { return QMetaType::QMatrix; } };
+ template<> struct QMetaTypeId2<QTransform> { enum { Defined = 1, MetaType = QMetaType::QTransform }; static inline int qt_metatype_id() { return QMetaType::QTransform; } };
+
+
+# 1 "../../include/QtCore/qmetatype.h" 2
+# 49 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h" 2
+# 1 "../../include/QtCore/qmap.h" 1
+# 50 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h" 2
+# 1 "../../include/QtCore/qhash.h" 1
+# 51 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 52 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QBitArray;
+class QDataStream;
+class QDate;
+class QDateTime;
+class QLine;
+class QLineF;
+class QLocale;
+class QMatrix;
+class QTransform;
+class QStringList;
+class QTime;
+class QPoint;
+class QPointF;
+class QSize;
+class QSizeF;
+class QRect;
+class QRectF;
+
+class QRegExp;
+
+class QTextFormat;
+class QTextLength;
+class QUrl;
+class QVariant;
+class QVariantComparisonHelper;
+
+
+template <typename T>
+inline QVariant qVariantFromValue(const T &);
+
+template <typename T>
+inline void qVariantSetValue(QVariant &, const T &);
+
+template<typename T>
+inline T qVariantValue(const QVariant &);
+
+template<typename T>
+inline bool qVariantCanConvert(const QVariant &);
+
+
+class __attribute__((visibility("default"))) QVariant
+{
+ public:
+ enum Type {
+ Invalid = 0,
+
+ Bool = 1,
+ Int = 2,
+ UInt = 3,
+ LongLong = 4,
+ ULongLong = 5,
+ Double = 6,
+ Char = 7,
+ Map = 8,
+ List = 9,
+ String = 10,
+ StringList = 11,
+ ByteArray = 12,
+ BitArray = 13,
+ Date = 14,
+ Time = 15,
+ DateTime = 16,
+ Url = 17,
+ Locale = 18,
+ Rect = 19,
+ RectF = 20,
+ Size = 21,
+ SizeF = 22,
+ Line = 23,
+ LineF = 24,
+ Point = 25,
+ PointF = 26,
+ RegExp = 27,
+ Hash = 28,
+ LastCoreType = Hash,
+
+
+
+
+
+ Font = 64,
+ Pixmap = 65,
+ Brush = 66,
+ Color = 67,
+ Palette = 68,
+ Icon = 69,
+ Image = 70,
+ Polygon = 71,
+ Region = 72,
+ Bitmap = 73,
+ Cursor = 74,
+ SizePolicy = 75,
+ KeySequence = 76,
+ Pen = 77,
+ TextLength = 78,
+ TextFormat = 79,
+ Matrix = 80,
+ Transform = 81,
+ LastGuiType = Transform,
+
+ UserType = 127,
+
+
+
+
+
+ LastType = 0xffffffff
+ };
+
+ inline QVariant();
+ ~QVariant();
+ QVariant(Type type);
+ QVariant(int typeOrUserType, const void *copy);
+ QVariant(const QVariant &other);
+
+
+ QVariant(QDataStream &s);
+
+
+ QVariant(int i);
+ QVariant(uint ui);
+ QVariant(qlonglong ll);
+ QVariant(qulonglong ull);
+ QVariant(bool b);
+ QVariant(double d);
+
+ __attribute__ ((__deprecated__)) QVariant(const char *str);
+
+
+ QVariant(const QByteArray &bytearray);
+ QVariant(const QBitArray &bitarray);
+ QVariant(const QString &string);
+ QVariant(const QLatin1String &string);
+ QVariant(const QStringList &stringlist);
+ QVariant(const QChar &qchar);
+ QVariant(const QDate &date);
+ QVariant(const QTime &time);
+ QVariant(const QDateTime &datetime);
+ QVariant(const QList<QVariant> &list);
+ QVariant(const QMap<QString,QVariant> &map);
+ QVariant(const QHash<QString,QVariant> &hash);
+
+ QVariant(const QSize &size);
+ QVariant(const QSizeF &size);
+ QVariant(const QPoint &pt);
+ QVariant(const QPointF &pt);
+ QVariant(const QLine &line);
+ QVariant(const QLineF &line);
+ QVariant(const QRect &rect);
+ QVariant(const QRectF &rect);
+
+ QVariant(const QUrl &url);
+ QVariant(const QLocale &locale);
+
+ QVariant(const QRegExp ®Exp);
+
+ QVariant(Qt::GlobalColor color);
+
+ QVariant& operator=(const QVariant &other);
+
+ Type type() const;
+ int userType() const;
+ const char *typeName() const;
+
+ bool canConvert(Type t) const;
+ bool convert(Type t);
+# 233 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h"
+ inline bool isValid() const;
+ bool isNull() const;
+
+ void clear();
+
+ void detach();
+ inline bool isDetached() const;
+
+ int toInt(bool *ok = 0) const;
+ uint toUInt(bool *ok = 0) const;
+ qlonglong toLongLong(bool *ok = 0) const;
+ qulonglong toULongLong(bool *ok = 0) const;
+ bool toBool() const;
+ double toDouble(bool *ok = 0) const;
+ QByteArray toByteArray() const;
+ QBitArray toBitArray() const;
+ QString toString() const;
+ QStringList toStringList() const;
+ QChar toChar() const;
+ QDate toDate() const;
+ QTime toTime() const;
+ QDateTime toDateTime() const;
+ QList<QVariant> toList() const;
+ QMap<QString, QVariant> toMap() const;
+ QHash<QString, QVariant> toHash() const;
+
+
+ QPoint toPoint() const;
+ QPointF toPointF() const;
+ QRect toRect() const;
+ QSize toSize() const;
+ QSizeF toSizeF() const;
+ QLine toLine() const;
+ QLineF toLineF() const;
+ QRectF toRectF() const;
+
+ QUrl toUrl() const;
+ QLocale toLocale() const;
+
+ QRegExp toRegExp() const;
+# 297 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h"
+ void load(QDataStream &ds);
+ void save(QDataStream &ds) const;
+
+ static const char *typeToName(Type type);
+ static Type nameToType(const char *name);
+
+
+
+
+
+
+
+ void *data();
+ const void *constData() const;
+ inline const void *data() const { return constData(); }
+
+
+ template<typename T>
+ inline void setValue(const T &value);
+
+ template<typename T>
+ inline T value() const
+ { return qVariantValue<T>(*this); }
+
+ template<typename T>
+ static inline QVariant fromValue(const T &value)
+ { return qVariantFromValue(value); }
+
+ template<typename T>
+ bool canConvert() const
+ { return qVariantCanConvert<T>(*this); }
+
+
+ public:
+
+ struct PrivateShared
+ {
+ inline PrivateShared(void *v) : ptr(v), ref(1) { }
+ void *ptr;
+ QAtomicInt ref;
+ };
+ struct Private
+ {
+ inline Private(): type(Invalid), is_shared(false), is_null(true) { data.ptr = 0; }
+ inline Private(const Private &other)
+ : data(other.data), type(other.type),
+ is_shared(other.is_shared), is_null(other.is_null)
+ {}
+ union Data
+ {
+ char c;
+ int i;
+ uint u;
+ bool b;
+ double d;
+ qlonglong ll;
+ qulonglong ull;
+ void *ptr;
+ PrivateShared *shared;
+ } data;
+ uint type : 30;
+ uint is_shared : 1;
+ uint is_null : 1;
+ };
+ public:
+ typedef void (*f_construct)(Private *, const void *);
+ typedef void (*f_clear)(Private *);
+ typedef bool (*f_null)(const Private *);
+
+ typedef void (*f_load)(Private *, QDataStream &);
+ typedef void (*f_save)(const Private *, QDataStream &);
+
+ typedef bool (*f_compare)(const Private *, const Private *);
+ typedef bool (*f_convert)(const QVariant::Private *d, Type t, void *, bool *);
+ typedef bool (*f_canConvert)(const QVariant::Private *d, Type t);
+ typedef void (*f_debugStream)(QDebug, const QVariant &);
+ struct Handler {
+ f_construct construct;
+ f_clear clear;
+ f_null isNull;
+
+ f_load load;
+ f_save save;
+
+ f_compare compare;
+ f_convert convert;
+ f_canConvert canConvert;
+ f_debugStream debugStream;
+ };
+
+
+ inline bool operator==(const QVariant &v) const
+ { return cmp(v); }
+ inline bool operator!=(const QVariant &v) const
+ { return !cmp(v); }
+
+protected:
+ friend inline bool qvariant_cast_helper(const QVariant &, QVariant::Type, void *);
+ friend int qRegisterGuiVariant();
+ friend int qUnregisterGuiVariant();
+ friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &);
+
+ friend __attribute__((visibility("default"))) QDebug operator<<(QDebug, const QVariant &);
+
+ Private d;
+
+ static const Handler *handler;
+
+ void create(int type, const void *copy);
+
+
+
+ bool cmp(const QVariant &other) const;
+
+private:
+
+ inline QVariant(void *) { qt_noop(); }
+
+
+
+
+
+
+ inline QVariant(bool, int) { qt_noop(); }
+
+public:
+ typedef Private DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+
+typedef QList<QVariant> QVariantList;
+typedef QMap<QString, QVariant> QVariantMap;
+typedef QHash<QString, QVariant> QVariantHash;
+
+inline bool qvariant_cast_helper(const QVariant &v, QVariant::Type tp, void *ptr)
+{ return QVariant::handler->convert(&v.d, tp, ptr, 0); }
+
+template <typename T>
+inline QVariant qVariantFromValue(const T &t)
+{
+ return QVariant(qMetaTypeId<T>(reinterpret_cast<T *>(0)), &t);
+}
+
+template <>
+inline QVariant qVariantFromValue(const QVariant &t) { return t; }
+
+template <typename T>
+inline void qVariantSetValue(QVariant &v, const T &t)
+{
+ v = QVariant(qMetaTypeId<T>(reinterpret_cast<T *>(0)), &t);
+}
+
+inline QVariant::QVariant() {}
+inline bool QVariant::isValid() const { return d.type != Invalid; }
+# 492 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h"
+template<typename T>
+inline void QVariant::setValue(const T &avalue)
+{ qVariantSetValue(*this, avalue); }
+
+
+
+__attribute__((visibility("default"))) QDataStream& operator>> (QDataStream& s, QVariant& p);
+__attribute__((visibility("default"))) QDataStream& operator<< (QDataStream& s, const QVariant& p);
+__attribute__((visibility("default"))) QDataStream& operator>> (QDataStream& s, QVariant::Type& p);
+__attribute__((visibility("default"))) QDataStream& operator<< (QDataStream& s, const QVariant::Type p);
+
+
+inline bool QVariant::isDetached() const
+{ return !d.is_shared || d.data.shared->ref == 1; }
+# 516 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h"
+class QVariantComparisonHelper
+{
+public:
+ inline QVariantComparisonHelper(const QVariant &var)
+ : v(&var) {}
+private:
+ friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &);
+ const QVariant *v;
+};
+
+inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)
+{
+ return v1.cmp(*v2.v);
+}
+
+inline bool operator!=(const QVariant &v1, const QVariantComparisonHelper &v2)
+{
+ return !operator==(v1, v2);
+}
+# 564 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qvariant.h"
+template<typename T> T qvariant_cast(const QVariant &v)
+{
+ const int vid = qMetaTypeId<T>(static_cast<T *>(0));
+ if (vid == v.userType())
+ return *reinterpret_cast<const T *>(v.constData());
+ if (vid < int(QMetaType::User)) {
+ T t;
+ if (qvariant_cast_helper(v, QVariant::Type(vid), &t))
+ return t;
+ }
+ return T();
+}
+
+template<typename T>
+inline T qVariantValue(const QVariant &variant)
+{ return qvariant_cast<T>(variant); }
+
+template<typename T>
+inline bool qVariantCanConvert(const QVariant &variant)
+{
+ return variant.canConvert(static_cast<QVariant::Type>(
+ qMetaTypeId<T>(static_cast<T *>(0))));
+}
+
+
+template <> inline bool qIsDetached<QVariant>(QVariant &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QVariant>(QVariant &value1, QVariant &value2) { const QVariant::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+template <> class QTypeInfo<QVariant> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QVariant)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QVariant"; } };
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QVariant &);
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QVariant::Type);
+
+
+
+
+ template<> struct QMetaTypeId2<QVariantList> { enum { Defined = 1, MetaType = QMetaType::QVariantList }; static inline int qt_metatype_id() { return QMetaType::QVariantList; } };
+ template<> struct QMetaTypeId2<QVariantMap> { enum { Defined = 1, MetaType = QMetaType::QVariantMap }; static inline int qt_metatype_id() { return QMetaType::QVariantMap; } };
+ template<> struct QMetaTypeId2<QVariantHash> { enum { Defined = 1, MetaType = QMetaType::QVariantHash }; static inline int qt_metatype_id() { return QMetaType::QVariantHash; } };
+
+
+# 1 "../../include/QtCore/qvariant.h" 2
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmimedata.h" 2
+# 1 "../../include/QtCore/qobject.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmimedata.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QUrl;
+class QMimeDataPrivate;
+
+class __attribute__((visibility("default"))) QMimeData : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+public:
+ QMimeData();
+ ~QMimeData();
+
+ QList<QUrl> urls() const;
+ void setUrls(const QList<QUrl> &urls);
+ bool hasUrls() const;
+
+ QString text() const;
+ void setText(const QString &text);
+ bool hasText() const;
+
+ QString html() const;
+ void setHtml(const QString &html);
+ bool hasHtml() const;
+
+ QVariant imageData() const;
+ void setImageData(const QVariant &image);
+ bool hasImage() const;
+
+ QVariant colorData() const;
+ void setColorData(const QVariant &color);
+ bool hasColor() const;
+
+ QByteArray data(const QString &mimetype) const;
+ void setData(const QString &mimetype, const QByteArray &data);
+ void removeFormat(const QString &mimetype);
+
+ virtual bool hasFormat(const QString &mimetype) const;
+ virtual QStringList formats() const;
+
+ void clear();
+protected:
+ virtual QVariant retrieveData(const QString &mimetype,
+ QVariant::Type preferredType) const;
+private:
+ QMimeData(const QMimeData &); QMimeData &operator=(const QMimeData &);
+ inline QMimeDataPrivate* d_func() { return reinterpret_cast<QMimeDataPrivate *>(d_ptr); } inline const QMimeDataPrivate* d_func() const { return reinterpret_cast<const QMimeDataPrivate *>(d_ptr); } friend class QMimeDataPrivate;
+};
+
+
+
+
+# 1 "../../include/QtCore/qmimedata.h" 2
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qmime.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class __attribute__((visibility("default"))) QMimeSource
+{
+public:
+ virtual ~QMimeSource();
+ virtual const char* format(int n = 0) const = 0;
+ virtual bool provides(const char*) const;
+ virtual QByteArray encodedData(const char*) const = 0;
+};
+# 172 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qmime.h"
+
+
+
+# 1 "../../include/QtGui/qmime.h" 2
+# 53 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h" 2
+# 1 "../../include/QtGui/qdrag.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qdrag.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qdrag.h"
+#define QDRAG_H
+
+# 1 "../../include/QtCore/qobject.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qdrag.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+
+class QMimeData;
+class QDragPrivate;
+class QWidget;
+class QPixmap;
+class QPoint;
+class QDragManager;
+
+class __attribute__((visibility("default"))) QDrag : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+ inline QDragPrivate* d_func() { return reinterpret_cast<QDragPrivate *>(d_ptr); } inline const QDragPrivate* d_func() const { return reinterpret_cast<const QDragPrivate *>(d_ptr); } friend class QDragPrivate;
+public:
+ explicit QDrag(QWidget *dragSource);
+ ~QDrag();
+
+ void setMimeData(QMimeData *data);
+ QMimeData *mimeData() const;
+
+ void setPixmap(const QPixmap &);
+ QPixmap pixmap() const;
+
+ void setHotSpot(const QPoint &hotspot);
+ QPoint hotSpot() const;
+
+ QWidget *source() const;
+ QWidget *target() const;
+
+ Qt::DropAction start(Qt::DropActions supportedActions = Qt::CopyAction);
+ Qt::DropAction exec(Qt::DropActions supportedActions = Qt::MoveAction);
+ Qt::DropAction exec(Qt::DropActions supportedActions, Qt::DropAction defaultAction);
+
+ void setDragCursor(const QPixmap &cursor, Qt::DropAction action);
+
+protected:
+ void actionChanged(Qt::DropAction action);
+ void targetChanged(QWidget *newTarget);
+
+private:
+
+
+
+ friend class QDragManager;
+ QDrag(const QDrag &); QDrag &operator=(const QDrag &);
+};
+
+
+
+
+
+
+# 1 "../../include/QtGui/qdrag.h" 2
+# 54 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h" 2
+# 1 "../../include/QtCore/qvariant.h" 1
+# 55 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QAction;
+
+class __attribute__((visibility("default"))) QInputEvent : public QEvent
+{
+public:
+ QInputEvent(Type type, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
+ ~QInputEvent();
+ inline Qt::KeyboardModifiers modifiers() const { return modState; }
+protected:
+ Qt::KeyboardModifiers modState;
+};
+
+class __attribute__((visibility("default"))) QMouseEvent : public QInputEvent
+{
+public:
+ QMouseEvent(Type type, const QPoint &pos, Qt::MouseButton button,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers);
+ QMouseEvent(Type type, const QPoint &pos, const QPoint &globalPos,
+ Qt::MouseButton button, Qt::MouseButtons buttons,
+ Qt::KeyboardModifiers modifiers);
+ ~QMouseEvent();
+
+ inline const QPoint &pos() const { return p; }
+ inline const QPoint &globalPos() const { return g; }
+ inline int x() const { return p.x(); }
+ inline int y() const { return p.y(); }
+ inline int globalX() const { return g.x(); }
+ inline int globalY() const { return g.y(); }
+ inline Qt::MouseButton button() const { return b; }
+ inline Qt::MouseButtons buttons() const { return mouseState; }
+
+ static QMouseEvent *createExtendedMouseEvent(Type type, const QPointF &pos,
+ const QPoint &globalPos, Qt::MouseButton button,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers);
+ inline bool hasExtendedInfo() const { return reinterpret_cast<const QMouseEvent *>(d) == this; }
+ QPointF posF() const;
+# 108 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h"
+protected:
+ QPoint p, g;
+ Qt::MouseButton b;
+ Qt::MouseButtons mouseState;
+};
+
+class __attribute__((visibility("default"))) QHoverEvent : public QEvent
+{
+public:
+ QHoverEvent(Type type, const QPoint &pos, const QPoint &oldPos);
+ ~QHoverEvent();
+
+ inline const QPoint &pos() const { return p; }
+ inline const QPoint &oldPos() const { return op; }
+
+protected:
+ QPoint p, op;
+};
+
+
+class __attribute__((visibility("default"))) QWheelEvent : public QInputEvent
+{
+public:
+ QWheelEvent(const QPoint &pos, int delta,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers,
+ Qt::Orientation orient = Qt::Vertical);
+ QWheelEvent(const QPoint &pos, const QPoint& globalPos, int delta,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers,
+ Qt::Orientation orient = Qt::Vertical);
+ ~QWheelEvent();
+
+ inline int delta() const { return d; }
+ inline const QPoint &pos() const { return p; }
+ inline const QPoint &globalPos() const { return g; }
+ inline int x() const { return p.x(); }
+ inline int y() const { return p.y(); }
+ inline int globalX() const { return g.x(); }
+ inline int globalY() const { return g.y(); }
+
+ inline Qt::MouseButtons buttons() const { return mouseState; }
+ Qt::Orientation orientation() const { return o; }
+# 158 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h"
+protected:
+ QPoint p;
+ QPoint g;
+ int d;
+ Qt::MouseButtons mouseState;
+ Qt::Orientation o;
+};
+
+
+
+class __attribute__((visibility("default"))) QTabletEvent : public QInputEvent
+{
+public:
+ enum TabletDevice { NoDevice, Puck, Stylus, Airbrush, FourDMouse,
+ XFreeEraser , RotationStylus };
+ enum PointerType { UnknownPointer, Pen, Cursor, Eraser };
+ QTabletEvent(Type t, const QPoint &pos, const QPoint &globalPos, const QPointF &hiResGlobalPos,
+ int device, int pointerType, qreal pressure, int xTilt, int yTilt,
+ qreal tangentialPressure, qreal rotation, int z,
+ Qt::KeyboardModifiers keyState, qint64 uniqueID);
+ ~QTabletEvent();
+
+ inline const QPoint &pos() const { return mPos; }
+ inline const QPoint &globalPos() const { return mGPos; }
+ inline const QPointF &hiResGlobalPos() const { return mHiResGlobalPos; }
+ inline int x() const { return mPos.x(); }
+ inline int y() const { return mPos.y(); }
+ inline int globalX() const { return mGPos.x(); }
+ inline int globalY() const { return mGPos.y(); }
+ inline qreal hiResGlobalX() const { return mHiResGlobalPos.x(); }
+ inline qreal hiResGlobalY() const { return mHiResGlobalPos.y(); }
+ inline TabletDevice device() const { return TabletDevice(mDev); }
+ inline PointerType pointerType() const { return PointerType(mPointerType); }
+ inline qint64 uniqueId() const { return mUnique; }
+ inline qreal pressure() const { return mPress; }
+ inline int z() const { return mZ; }
+ inline qreal tangentialPressure() const { return mTangential; }
+ inline qreal rotation() const { return mRot; }
+ inline int xTilt() const { return mXT; }
+ inline int yTilt() const { return mYT; }
+
+protected:
+ QPoint mPos, mGPos;
+ QPointF mHiResGlobalPos;
+ int mDev, mPointerType, mXT, mYT, mZ;
+ qreal mPress, mTangential, mRot;
+ qint64 mUnique;
+
+
+
+
+ void *mExtra;
+};
+
+
+class __attribute__((visibility("default"))) QKeyEvent : public QInputEvent
+{
+public:
+ QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString& text = QString(),
+ bool autorep = false, ushort count = 1);
+ ~QKeyEvent();
+
+ int key() const { return k; }
+
+ bool matches(QKeySequence::StandardKey key) const;
+
+ Qt::KeyboardModifiers modifiers() const;
+ inline QString text() const { return txt; }
+ inline bool isAutoRepeat() const { return autor; }
+ inline int count() const { return int(c); }
+
+
+ static QKeyEvent *createExtendedKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers,
+ quint32 nativeScanCode, quint32 nativeVirtualKey,
+ quint32 nativeModifiers,
+ const QString& text = QString(), bool autorep = false,
+ ushort count = 1);
+ inline bool hasExtendedInfo() const { return reinterpret_cast<const QKeyEvent*>(d) == this; }
+ quint32 nativeScanCode() const;
+ quint32 nativeVirtualKey() const;
+ quint32 nativeModifiers() const;
+# 256 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h"
+protected:
+ QString txt;
+ int k;
+ ushort c;
+ uint autor:1;
+};
+
+
+class __attribute__((visibility("default"))) QFocusEvent : public QEvent
+{
+public:
+ QFocusEvent(Type type, Qt::FocusReason reason=Qt::OtherFocusReason);
+ ~QFocusEvent();
+
+ inline bool gotFocus() const { return type() == FocusIn; }
+ inline bool lostFocus() const { return type() == FocusOut; }
+
+
+
+
+
+
+
+ Qt::FocusReason reason();
+ Qt::FocusReason reason() const;
+
+private:
+ Qt::FocusReason m_reason;
+};
+
+
+class __attribute__((visibility("default"))) QPaintEvent : public QEvent
+{
+public:
+ QPaintEvent(const QRegion& paintRegion);
+ QPaintEvent(const QRect &paintRect);
+ ~QPaintEvent();
+
+ inline const QRect &rect() const { return m_rect; }
+ inline const QRegion ®ion() const { return m_region; }
+
+
+
+
+
+
+
+protected:
+ friend class QApplication;
+ friend class QCoreApplication;
+ QRect m_rect;
+ QRegion m_region;
+ bool m_erased;
+};
+
+class QUpdateLaterEvent : public QEvent
+{
+public:
+ QUpdateLaterEvent(const QRegion& paintRegion);
+ ~QUpdateLaterEvent();
+
+ inline const QRegion ®ion() const { return m_region; }
+
+protected:
+ QRegion m_region;
+};
+
+class __attribute__((visibility("default"))) QMoveEvent : public QEvent
+{
+public:
+ QMoveEvent(const QPoint &pos, const QPoint &oldPos);
+ ~QMoveEvent();
+
+ inline const QPoint &pos() const { return p; }
+ inline const QPoint &oldPos() const { return oldp;}
+protected:
+ QPoint p, oldp;
+ friend class QApplication;
+ friend class QCoreApplication;
+};
+
+
+class __attribute__((visibility("default"))) QResizeEvent : public QEvent
+{
+public:
+ QResizeEvent(const QSize &size, const QSize &oldSize);
+ ~QResizeEvent();
+
+ inline const QSize &size() const { return s; }
+ inline const QSize &oldSize()const { return olds;}
+protected:
+ QSize s, olds;
+ friend class QApplication;
+ friend class QCoreApplication;
+};
+
+
+class __attribute__((visibility("default"))) QCloseEvent : public QEvent
+{
+public:
+ QCloseEvent();
+ ~QCloseEvent();
+};
+
+
+class __attribute__((visibility("default"))) QIconDragEvent : public QEvent
+{
+public:
+ QIconDragEvent();
+ ~QIconDragEvent();
+};
+
+
+class __attribute__((visibility("default"))) QShowEvent : public QEvent
+{
+public:
+ QShowEvent();
+ ~QShowEvent();
+};
+
+
+class __attribute__((visibility("default"))) QHideEvent : public QEvent
+{
+public:
+ QHideEvent();
+ ~QHideEvent();
+};
+
+
+class __attribute__((visibility("default"))) QContextMenuEvent : public QInputEvent
+{
+public:
+ enum Reason { Mouse, Keyboard, Other };
+
+ QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos,
+ Qt::KeyboardModifiers modifiers);
+ QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos);
+ QContextMenuEvent(Reason reason, const QPoint &pos);
+ ~QContextMenuEvent();
+
+ inline int x() const { return p.x(); }
+ inline int y() const { return p.y(); }
+ inline int globalX() const { return gp.x(); }
+ inline int globalY() const { return gp.y(); }
+
+ inline const QPoint& pos() const { return p; }
+ inline const QPoint& globalPos() const { return gp; }
+
+ inline Reason reason() const { return Reason(reas); }
+
+
+
+
+
+
+
+protected:
+ QPoint p;
+ QPoint gp;
+ uint reas : 8;
+};
+
+
+
+class __attribute__((visibility("default"))) QInputMethodEvent : public QEvent
+{
+public:
+ enum AttributeType {
+ TextFormat,
+ Cursor,
+ Language,
+ Ruby
+ };
+ class Attribute {
+ public:
+ Attribute(AttributeType t, int s, int l, QVariant val) : type(t), start(s), length(l), value(val) {}
+ AttributeType type;
+
+ int start;
+ int length;
+ QVariant value;
+ };
+ QInputMethodEvent();
+ QInputMethodEvent(const QString &preeditText, const QList<Attribute> &attributes);
+ void setCommitString(const QString &commitString, int replaceFrom = 0, int replaceLength = 0);
+
+ inline const QList<Attribute> &attributes() const { return attrs; }
+ inline const QString &preeditString() const { return preedit; }
+
+ inline const QString &commitString() const { return commit; }
+ inline int replacementStart() const { return replace_from; }
+ inline int replacementLength() const { return replace_length; }
+
+ QInputMethodEvent(const QInputMethodEvent &other);
+
+private:
+ QString preedit;
+ QList<Attribute> attrs;
+ QString commit;
+ int replace_from;
+ int replace_length;
+};
+
+
+
+
+class QMimeData;
+
+class __attribute__((visibility("default"))) QDropEvent : public QEvent
+
+ , public QMimeSource
+
+{
+public:
+ QDropEvent(const QPoint& pos, Qt::DropActions actions, const QMimeData *data,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = Drop);
+ ~QDropEvent();
+
+ inline const QPoint &pos() const { return p; }
+ inline Qt::MouseButtons mouseButtons() const { return mouseState; }
+ inline Qt::KeyboardModifiers keyboardModifiers() const { return modState; }
+
+ inline Qt::DropActions possibleActions() const { return act; }
+ inline Qt::DropAction proposedAction() const { return default_action; }
+ inline void acceptProposedAction() { drop_action = default_action; accept(); }
+
+ inline Qt::DropAction dropAction() const { return drop_action; }
+ void setDropAction(Qt::DropAction action);
+
+ QWidget* source() const;
+ inline const QMimeData *mimeData() const { return mdata; }
+
+
+ const char* format(int n = 0) const;
+ QByteArray encodedData(const char*) const;
+ bool provides(const char*) const;
+# 505 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h"
+protected:
+ friend class QApplication;
+ QPoint p;
+ Qt::MouseButtons mouseState;
+ Qt::KeyboardModifiers modState;
+ Qt::DropActions act;
+ Qt::DropAction drop_action;
+ Qt::DropAction default_action;
+ const QMimeData *mdata;
+ mutable QList<QByteArray> fmts;
+};
+
+
+class __attribute__((visibility("default"))) QDragMoveEvent : public QDropEvent
+{
+public:
+ QDragMoveEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = DragMove);
+ ~QDragMoveEvent();
+
+ inline QRect answerRect() const { return rect; }
+
+ inline void accept() { QDropEvent::accept(); }
+ inline void ignore() { QDropEvent::ignore(); }
+
+ inline void accept(const QRect & r) { accept(); rect = r; }
+ inline void ignore(const QRect & r) { ignore(); rect = r; }
+
+
+
+
+
+protected:
+ friend class QApplication;
+ QRect rect;
+};
+
+
+class __attribute__((visibility("default"))) QDragEnterEvent : public QDragMoveEvent
+{
+public:
+ QDragEnterEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers);
+ ~QDragEnterEvent();
+};
+
+
+
+class __attribute__((visibility("default"))) QDragResponseEvent : public QEvent
+{
+public:
+ QDragResponseEvent(bool accepted);
+ ~QDragResponseEvent();
+
+ inline bool dragAccepted() const { return a; }
+protected:
+ bool a;
+};
+
+
+class __attribute__((visibility("default"))) QDragLeaveEvent : public QEvent
+{
+public:
+ QDragLeaveEvent();
+ ~QDragLeaveEvent();
+};
+
+
+
+class __attribute__((visibility("default"))) QHelpEvent : public QEvent
+{
+public:
+ QHelpEvent(Type type, const QPoint &pos, const QPoint &globalPos);
+ ~QHelpEvent();
+
+ inline int x() const { return p.x(); }
+ inline int y() const { return p.y(); }
+ inline int globalX() const { return gp.x(); }
+ inline int globalY() const { return gp.y(); }
+
+ inline const QPoint& pos() const { return p; }
+ inline const QPoint& globalPos() const { return gp; }
+
+private:
+ QPoint p;
+ QPoint gp;
+};
+
+
+class __attribute__((visibility("default"))) QStatusTipEvent : public QEvent
+{
+public:
+ QStatusTipEvent(const QString &tip);
+ ~QStatusTipEvent();
+
+ inline QString tip() const { return s; }
+private:
+ QString s;
+};
+
+
+
+class __attribute__((visibility("default"))) QWhatsThisClickedEvent : public QEvent
+{
+public:
+ QWhatsThisClickedEvent(const QString &href);
+ ~QWhatsThisClickedEvent();
+
+ inline QString href() const { return s; }
+private:
+ QString s;
+};
+
+
+
+class __attribute__((visibility("default"))) QActionEvent : public QEvent
+{
+ QAction *act, *bef;
+public:
+ QActionEvent(int type, QAction *action, QAction *before = 0);
+ ~QActionEvent();
+
+ inline QAction *action() const { return act; }
+ inline QAction *before() const { return bef; }
+};
+
+
+class __attribute__((visibility("default"))) QFileOpenEvent : public QEvent
+{
+public:
+ QFileOpenEvent(const QString &file);
+ ~QFileOpenEvent();
+
+ inline QString file() const { return f; }
+private:
+ QString f;
+};
+
+
+class __attribute__((visibility("default"))) QToolBarChangeEvent : public QEvent
+{
+public:
+ QToolBarChangeEvent(bool t);
+ ~QToolBarChangeEvent();
+
+ inline bool toggle() const { return tog; }
+private:
+ uint tog : 1;
+};
+
+
+
+class __attribute__((visibility("default"))) QShortcutEvent : public QEvent
+{
+public:
+ QShortcutEvent(const QKeySequence &key, int id, bool ambiguous = false);
+ ~QShortcutEvent();
+
+ inline const QKeySequence &key() { return sequence; }
+ inline const QKeySequence &key() const { return sequence; }
+ inline int shortcutId() { return sid; }
+ inline int shortcutId() const { return sid; }
+ inline bool isAmbiguous() { return ambig; }
+ inline bool isAmbiguous() const { return ambig; }
+protected:
+ QKeySequence sequence;
+ bool ambig;
+ int sid;
+};
+
+
+
+class __attribute__((visibility("default"))) QClipboardEvent : public QEvent
+{
+public:
+ QClipboardEvent(QEventPrivate *data);
+ ~QClipboardEvent();
+
+ QEventPrivate *data() { return d; };
+};
+
+
+class __attribute__((visibility("default"))) QWindowStateChangeEvent: public QEvent
+{
+public:
+ QWindowStateChangeEvent(Qt::WindowStates aOldState);
+ QWindowStateChangeEvent(Qt::WindowStates aOldState, bool isOverride);
+ ~QWindowStateChangeEvent();
+
+ inline Qt::WindowStates oldState() const { return ostate; }
+ bool isOverride() const;
+
+private:
+ Qt::WindowStates ostate;
+};
+# 714 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qevent.h"
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QEvent *);
+
+
+
+inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);}
+inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
+
+
+
+
+
+# 1 "../../include/QtGui/qevent.h" 2
+# 51 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextlayout.h" 2
+# 1 "../../include/QtGui/qtextformat.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat.h"
+#define QTEXTFORMAT_H
+
+# 1 "../../include/QtGui/qcolor.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat.h" 2
+# 1 "../../include/QtGui/qfont.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont.h"
+#define QFONT_H
+
+# 1 "../../include/QtGui/qwindowdefs.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont.h" 2
+
+
+typedef struct FT_FaceRec_* FT_Face;
+
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QFontPrivate;
+class QStringList;
+class QVariant;
+class Q3TextFormatCollection;
+
+class __attribute__((visibility("default"))) QFont
+{
+ public: static const QMetaObject staticMetaObject; private:
+
+public:
+ enum StyleHint {
+ Helvetica, SansSerif = Helvetica,
+ Times, Serif = Times,
+ Courier, TypeWriter = Courier,
+ OldEnglish, Decorative = OldEnglish,
+ System,
+ AnyStyle
+ };
+
+ enum StyleStrategy {
+ PreferDefault = 0x0001,
+ PreferBitmap = 0x0002,
+ PreferDevice = 0x0004,
+ PreferOutline = 0x0008,
+ ForceOutline = 0x0010,
+ PreferMatch = 0x0020,
+ PreferQuality = 0x0040,
+ PreferAntialias = 0x0080,
+ NoAntialias = 0x0100,
+ OpenGLCompatible = 0x0200,
+ NoFontMerging = 0x8000
+ };
+
+ enum Weight {
+ Light = 25,
+ Normal = 50,
+ DemiBold = 63,
+ Bold = 75,
+ Black = 87
+ };
+
+ enum Style {
+ StyleNormal,
+ StyleItalic,
+ StyleOblique
+ };
+
+ enum Stretch {
+ UltraCondensed = 50,
+ ExtraCondensed = 62,
+ Condensed = 75,
+ SemiCondensed = 87,
+ Unstretched = 100,
+ SemiExpanded = 112,
+ Expanded = 125,
+ ExtraExpanded = 150,
+ UltraExpanded = 200
+ };
+
+ enum Capitalization {
+ MixedCase,
+ AllUppercase,
+ AllLowercase,
+ SmallCaps,
+ Capitalize
+ };
+
+ enum SpacingType {
+ PercentageSpacing,
+ AbsoluteSpacing
+ };
+
+ enum ResolveProperties {
+ FamilyResolved = 0x0001,
+ SizeResolved = 0x0002,
+ StyleHintResolved = 0x0004,
+ StyleStrategyResolved = 0x0008,
+ WeightResolved = 0x0010,
+ StyleResolved = 0x0020,
+ UnderlineResolved = 0x0040,
+ OverlineResolved = 0x0080,
+ StrikeOutResolved = 0x0100,
+ FixedPitchResolved = 0x0200,
+ StretchResolved = 0x0400,
+ KerningResolved = 0x0800,
+ CapitalizationResolved = 0x1000,
+ LetterSpacingResolved = 0x2000,
+ WordSpacingResolved = 0x4000,
+ AllPropertiesResolved = 0x7fff
+ };
+
+ QFont();
+ QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false);
+ QFont(const QFont &, QPaintDevice *pd);
+ QFont(const QFont &);
+ ~QFont();
+
+ QString family() const;
+ void setFamily(const QString &);
+
+ int pointSize() const;
+ void setPointSize(int);
+ qreal pointSizeF() const;
+ void setPointSizeF(qreal);
+
+ int pixelSize() const;
+ void setPixelSize(int);
+
+ int weight() const;
+ void setWeight(int);
+
+ inline bool bold() const;
+ inline void setBold(bool);
+
+ void setStyle(Style style);
+ Style style() const;
+
+ inline bool italic() const;
+ inline void setItalic(bool b);
+
+ bool underline() const;
+ void setUnderline(bool);
+
+ bool overline() const;
+ void setOverline(bool);
+
+ bool strikeOut() const;
+ void setStrikeOut(bool);
+
+ bool fixedPitch() const;
+ void setFixedPitch(bool);
+
+ bool kerning() const;
+ void setKerning(bool);
+
+ StyleHint styleHint() const;
+ StyleStrategy styleStrategy() const;
+ void setStyleHint(StyleHint, StyleStrategy = PreferDefault);
+ void setStyleStrategy(StyleStrategy s);
+
+ int stretch() const;
+ void setStretch(int);
+
+ qreal letterSpacing() const;
+ SpacingType letterSpacingType() const;
+ void setLetterSpacing(SpacingType type, qreal spacing);
+
+ qreal wordSpacing() const;
+ void setWordSpacing(qreal spacing);
+
+ void setCapitalization(Capitalization);
+ Capitalization capitalization() const;
+
+
+ bool rawMode() const;
+ void setRawMode(bool);
+
+
+ bool exactMatch() const;
+
+ QFont &operator=(const QFont &);
+ bool operator==(const QFont &) const;
+ bool operator!=(const QFont &) const;
+ bool operator<(const QFont &) const;
+ operator QVariant() const;
+ bool isCopyOf(const QFont &) const;
+
+
+
+
+
+ Qt::HANDLE handle() const;
+
+
+
+
+
+ FT_Face freetypeFace() const;
+
+
+
+ void setRawName(const QString &);
+ QString rawName() const;
+
+ QString key() const;
+
+ QString toString() const;
+ bool fromString(const QString &);
+
+ static QString substitute(const QString &);
+ static QStringList substitutes(const QString &);
+ static QStringList substitutions();
+ static void insertSubstitution(const QString&, const QString &);
+ static void insertSubstitutions(const QString&, const QStringList &);
+ static void removeSubstitution(const QString &);
+ static void initialize();
+ static void cleanup();
+
+
+
+
+ QString defaultFamily() const;
+ QString lastResortFamily() const;
+ QString lastResortFont() const;
+
+ QFont resolve(const QFont &) const;
+ inline uint resolve() const { return resolve_mask; }
+ inline void resolve(uint mask) { resolve_mask = mask; }
+# 275 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont.h"
+private:
+ QFont(QFontPrivate *);
+
+ void detach();
+# 287 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont.h"
+ friend class QFontPrivate;
+ friend class QFontDialogPrivate;
+ friend class QFontMetrics;
+ friend class QFontMetricsF;
+ friend class QFontInfo;
+ friend class QPainter;
+ friend class QPSPrintEngineFont;
+ friend class QApplication;
+ friend class QWidget;
+ friend class QWidgetPrivate;
+ friend class Q3TextFormatCollection;
+ friend class QTextLayout;
+ friend class QTextEngine;
+ friend class QStackTextEngine;
+ friend class QTextLine;
+ friend struct QScriptLine;
+ friend class QGLContext;
+ friend class QWin32PaintEngine;
+ friend class QAlphaPaintEngine;
+ friend class QPainterPath;
+ friend class QTextItemInt;
+ friend class QPicturePaintEngine;
+
+
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QFont &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QFont &);
+
+
+ QFontPrivate *d;
+ uint resolve_mask;
+};
+
+
+inline bool QFont::bold() const
+{ return weight() > Normal; }
+
+
+inline void QFont::setBold(bool enable)
+{ setWeight(enable ? Bold : Normal); }
+
+inline bool QFont::italic() const
+{
+ return (style() != StyleNormal);
+}
+
+inline void QFont::setItalic(bool b) {
+ setStyle(b ? StyleItalic : StyleNormal);
+}
+
+
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QFont &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QFont &);
+
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QFont &);
+
+
+
+
+
+# 1 "../../include/QtGui/qfont.h" 2
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat.h" 2
+# 1 "../../include/QtCore/qshareddata.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qshareddata.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qshareddata.h"
+#define QSHAREDDATA_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qshareddata.h" 2
+# 1 "../../include/QtCore/qatomic.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qshareddata.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+template <class T> class QSharedDataPointer;
+
+class __attribute__((visibility("default"))) QSharedData
+{
+public:
+ mutable QAtomicInt ref;
+
+ inline QSharedData() : ref(0) { }
+ inline QSharedData(const QSharedData &) : ref(0) { }
+
+private:
+
+ QSharedData &operator=(const QSharedData &);
+};
+
+template <class T> class QSharedDataPointer
+{
+public:
+ inline void detach() { if (d && d->ref != 1) detach_helper(); }
+ inline T &operator*() { detach(); return *d; }
+ inline const T &operator*() const { return *d; }
+ inline T *operator->() { detach(); return d; }
+ inline const T *operator->() const { return d; }
+ inline operator T *() { detach(); return d; }
+ inline operator const T *() const { return d; }
+ inline T *data() { detach(); return d; }
+ inline const T *data() const { return d; }
+ inline const T *constData() const { return d; }
+
+ inline bool operator==(const QSharedDataPointer<T> &other) const { return d == other.d; }
+ inline bool operator!=(const QSharedDataPointer<T> &other) const { return d != other.d; }
+
+ inline QSharedDataPointer() { d = 0; }
+ inline ~QSharedDataPointer() { if (d && !d->ref.deref()) delete d; }
+
+ explicit QSharedDataPointer(T *data);
+ inline QSharedDataPointer(const QSharedDataPointer<T> &o) : d(o.d) { if (d) d->ref.ref(); }
+ inline QSharedDataPointer<T> & operator=(const QSharedDataPointer<T> &o) {
+ if (o.d != d) {
+ if (o.d)
+ o.d->ref.ref();
+ if (d && !d->ref.deref())
+ delete d;
+ d = o.d;
+ }
+ return *this;
+ }
+ inline QSharedDataPointer &operator=(T *o) {
+ if (o != d) {
+ if (o)
+ o->ref.ref();
+ if (d && !d->ref.deref())
+ delete d;
+ d = o;
+ }
+ return *this;
+ }
+
+ inline bool operator!() const { return !d; }
+
+protected:
+ T *clone();
+
+private:
+ void detach_helper();
+
+ T *d;
+};
+
+template <class T> class QExplicitlySharedDataPointer
+{
+public:
+ typedef T Type;
+
+ inline T &operator*() const { return *d; }
+ inline T *operator->() { return d; }
+ inline T *operator->() const { return d; }
+ inline T *data() const { return d; }
+ inline const T *constData() const { return d; }
+
+ inline void detach() { if (d && d->ref != 1) detach_helper(); }
+
+ inline void reset()
+ {
+ if(d && !d->ref.deref())
+ delete d;
+
+ d = 0;
+ }
+
+ inline operator bool () const { return d != 0; }
+
+ inline bool operator==(const QExplicitlySharedDataPointer<T> &other) const { return d == other.d; }
+ inline bool operator!=(const QExplicitlySharedDataPointer<T> &other) const { return d != other.d; }
+ inline bool operator==(const T *ptr) const { return d == ptr; }
+ inline bool operator!=(const T *ptr) const { return d != ptr; }
+
+ inline QExplicitlySharedDataPointer() { d = 0; }
+ inline ~QExplicitlySharedDataPointer() { if (d && !d->ref.deref()) delete d; }
+
+ explicit QExplicitlySharedDataPointer(T *data);
+ inline QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer<T> &o) : d(o.d) { if (d) d->ref.ref(); }
+
+
+ template<class X>
+ inline QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer<X> &o) : d(static_cast<T *>(o.data()))
+ {
+ if(d)
+ d->ref.ref();
+ }
+
+
+ inline QExplicitlySharedDataPointer<T> & operator=(const QExplicitlySharedDataPointer<T> &o) {
+ if (o.d != d) {
+ if (o.d)
+ o.d->ref.ref();
+ if (d && !d->ref.deref())
+ delete d;
+ d = o.d;
+ }
+ return *this;
+ }
+ inline QExplicitlySharedDataPointer &operator=(T *o) {
+ if (o != d) {
+ if (o)
+ o->ref.ref();
+ if (d && !d->ref.deref())
+ delete d;
+ d = o;
+ }
+ return *this;
+ }
+
+ inline bool operator!() const { return !d; }
+
+protected:
+ T *clone();
+
+private:
+ void detach_helper();
+
+ T *d;
+};
+
+template <class T>
+inline QSharedDataPointer<T>::QSharedDataPointer(T *adata) : d(adata)
+{ if (d) d->ref.ref(); }
+
+template <class T>
+inline T *QSharedDataPointer<T>::clone()
+{
+ return new T(*d);
+}
+
+template <class T>
+ void QSharedDataPointer<T>::detach_helper()
+{
+ T *x = clone();
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+}
+
+template <class T>
+inline T *QExplicitlySharedDataPointer<T>::clone()
+{
+ return new T(*d);
+}
+
+template <class T>
+ void QExplicitlySharedDataPointer<T>::detach_helper()
+{
+ T *x = clone();
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+}
+
+template <class T>
+inline QExplicitlySharedDataPointer<T>::QExplicitlySharedDataPointer(T *adata) : d(adata)
+{ if (d) d->ref.ref(); }
+
+
+
+
+# 1 "../../include/QtCore/qshareddata.h" 2
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat.h" 2
+# 1 "../../include/QtCore/qvector.h" 1
+# 49 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat.h" 2
+# 1 "../../include/QtCore/qvariant.h" 1
+# 50 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat.h" 2
+# 1 "../../include/QtGui/qpen.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpen.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpen.h"
+#define QPEN_H
+
+# 1 "../../include/QtGui/qcolor.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpen.h" 2
+# 1 "../../include/QtGui/qbrush.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qbrush.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qbrush.h"
+#define QBRUSH_H
+
+# 1 "../../include/QtCore/qpair.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qbrush.h" 2
+# 1 "../../include/QtCore/qpoint.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qbrush.h" 2
+# 1 "../../include/QtCore/qvector.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qbrush.h" 2
+# 1 "../../include/QtGui/qcolor.h" 1
+# 49 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qbrush.h" 2
+# 1 "../../include/QtGui/qmatrix.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qmatrix.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qmatrix.h"
+#define QMATRIX_H
+
+# 1 "../../include/QtGui/qpolygon.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpolygon.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpolygon.h"
+#define QPOLYGON_H
+
+# 1 "../../include/QtCore/qvector.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpolygon.h" 2
+# 1 "../../include/QtCore/qpoint.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpolygon.h" 2
+# 1 "../../include/QtCore/qrect.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpolygon.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QMatrix;
+class QTransform;
+class QRect;
+class QVariant;
+
+class __attribute__((visibility("default"))) QPolygon : public QVector<QPoint>
+{
+public:
+ inline QPolygon() {}
+ inline ~QPolygon() {}
+ inline QPolygon(int size);
+ inline QPolygon(const QPolygon &a) : QVector<QPoint>(a) {}
+ inline QPolygon(const QVector<QPoint> &v) : QVector<QPoint>(v) {}
+ QPolygon(const QRect &r, bool closed=false);
+ QPolygon(int nPoints, const int *points);
+ operator QVariant() const;
+
+ void translate(int dx, int dy);
+ void translate(const QPoint &offset);
+ QRect boundingRect() const;
+
+ void point(int i, int *x, int *y) const;
+ QPoint point(int i) const;
+ void setPoint(int index, int x, int y);
+ void setPoint(int index, const QPoint &p);
+ void setPoints(int nPoints, const int *points);
+ void setPoints(int nPoints, int firstx, int firsty, ...);
+ void putPoints(int index, int nPoints, const int *points);
+ void putPoints(int index, int nPoints, int firstx, int firsty, ...);
+ void putPoints(int index, int nPoints, const QPolygon & from, int fromIndex=0);
+
+ bool containsPoint(const QPoint &pt, Qt::FillRule fillRule) const;
+
+ QPolygon united(const QPolygon &r) const;
+ QPolygon intersected(const QPolygon &r) const;
+ QPolygon subtracted(const QPolygon &r) const;
+};
+
+inline QPolygon::QPolygon(int asize) : QVector<QPoint>(asize) {}
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QPolygon &);
+
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &stream, const QPolygon &polygon);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &stream, QPolygon &polygon);
+
+
+
+
+
+
+inline void QPolygon::setPoint(int index, const QPoint &pt)
+{ (*this)[index] = pt; }
+
+inline void QPolygon::setPoint(int index, int x, int y)
+{ (*this)[index] = QPoint(x, y); }
+
+inline QPoint QPolygon::point(int index) const
+{ return at(index); }
+
+inline void QPolygon::translate(const QPoint &offset)
+{ translate(offset.x(), offset.y()); }
+
+class QRectF;
+
+class __attribute__((visibility("default"))) QPolygonF : public QVector<QPointF>
+{
+public:
+ inline QPolygonF() {}
+ inline ~QPolygonF() {}
+ inline QPolygonF(int size);
+ inline QPolygonF(const QPolygonF &a) : QVector<QPointF>(a) {}
+ inline QPolygonF(const QVector<QPointF> &v) : QVector<QPointF>(v) {}
+ QPolygonF(const QRectF &r);
+ QPolygonF(const QPolygon &a);
+
+ inline void translate(qreal dx, qreal dy);
+ void translate(const QPointF &offset);
+
+ QPolygon toPolygon() const;
+
+ bool isClosed() const { return !isEmpty() && first() == last(); }
+
+ QRectF boundingRect() const;
+
+ bool containsPoint(const QPointF &pt, Qt::FillRule fillRule) const;
+
+ QPolygonF united(const QPolygonF &r) const;
+ QPolygonF intersected(const QPolygonF &r) const;
+ QPolygonF subtracted(const QPolygonF &r) const;
+};
+
+inline QPolygonF::QPolygonF(int asize) : QVector<QPointF>(asize) {}
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QPolygonF &);
+
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &stream, const QPolygonF &array);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &stream, QPolygonF &array);
+
+
+inline void QPolygonF::translate(qreal dx, qreal dy)
+{ translate(QPointF(dx, dy)); }
+
+
+
+
+# 1 "../../include/QtGui/qpolygon.h" 2
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qmatrix.h" 2
+# 1 "../../include/QtGui/qregion.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qmatrix.h" 2
+# 1 "../../include/QtGui/qwindowdefs.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qmatrix.h" 2
+# 1 "../../include/QtCore/qline.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qline.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qline.h"
+#define QLINE_H
+
+# 1 "../../include/QtCore/qpoint.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qline.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+
+
+
+
+class __attribute__((visibility("default"))) QLine
+{
+public:
+ inline QLine();
+ inline QLine(const QPoint &pt1, const QPoint &pt2);
+ inline QLine(int x1, int y1, int x2, int y2);
+
+ inline bool isNull() const;
+
+ inline QPoint p1() const;
+ inline QPoint p2() const;
+
+ inline int x1() const;
+ inline int y1() const;
+
+ inline int x2() const;
+ inline int y2() const;
+
+ inline int dx() const;
+ inline int dy() const;
+
+ inline void translate(const QPoint &p);
+ inline void translate(int dx, int dy);
+
+ inline QLine translated(const QPoint &p) const;
+ inline QLine translated(int dx, int dy) const;
+
+ inline void setP1(const QPoint &p1);
+ inline void setP2(const QPoint &p2);
+ inline void setPoints(const QPoint &p1, const QPoint &p2);
+ inline void setLine(int x1, int y1, int x2, int y2);
+
+ inline bool operator==(const QLine &d) const;
+ inline bool operator!=(const QLine &d) const { return !(*this == d); }
+
+private:
+ QPoint pt1, pt2;
+};
+template <> class QTypeInfo<QLine> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QLine)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QLine"; } };
+
+
+
+
+
+inline QLine::QLine() { }
+
+inline QLine::QLine(const QPoint &pt1_, const QPoint &pt2_) : pt1(pt1_), pt2(pt2_) { }
+
+inline QLine::QLine(int x1pos, int y1pos, int x2pos, int y2pos) : pt1(QPoint(x1pos, y1pos)), pt2(QPoint(x2pos, y2pos)) { }
+
+inline bool QLine::isNull() const
+{
+ return pt1 == pt2;
+}
+
+inline int QLine::x1() const
+{
+ return pt1.x();
+}
+
+inline int QLine::y1() const
+{
+ return pt1.y();
+}
+
+inline int QLine::x2() const
+{
+ return pt2.x();
+}
+
+inline int QLine::y2() const
+{
+ return pt2.y();
+}
+
+inline QPoint QLine::p1() const
+{
+ return pt1;
+}
+
+inline QPoint QLine::p2() const
+{
+ return pt2;
+}
+
+inline int QLine::dx() const
+{
+ return pt2.x() - pt1.x();
+}
+
+inline int QLine::dy() const
+{
+ return pt2.y() - pt1.y();
+}
+
+inline void QLine::translate(const QPoint &point)
+{
+ pt1 += point;
+ pt2 += point;
+}
+
+inline void QLine::translate(int adx, int ady)
+{
+ this->translate(QPoint(adx, ady));
+}
+
+inline QLine QLine::translated(const QPoint &p) const
+{
+ return QLine(pt1 + p, pt2 + p);
+}
+
+inline QLine QLine::translated(int adx, int ady) const
+{
+ return translated(QPoint(adx, ady));
+}
+
+inline void QLine::setP1(const QPoint &aP1)
+{
+ pt1 = aP1;
+}
+
+inline void QLine::setP2(const QPoint &aP2)
+{
+ pt2 = aP2;
+}
+
+inline void QLine::setPoints(const QPoint &aP1, const QPoint &aP2)
+{
+ pt1 = aP1;
+ pt2 = aP2;
+}
+
+inline void QLine::setLine(int aX1, int aY1, int aX2, int aY2)
+{
+ pt1 = QPoint(aX1, aY1);
+ pt2 = QPoint(aX2, aY2);
+}
+
+inline bool QLine::operator==(const QLine &d) const
+{
+ return pt1 == d.pt1 && pt2 == d.pt2;
+}
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug d, const QLine &p);
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QLine &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QLine &);
+
+
+
+
+
+class __attribute__((visibility("default"))) QLineF {
+public:
+
+ enum IntersectType { NoIntersection, BoundedIntersection, UnboundedIntersection };
+
+ inline QLineF();
+ inline QLineF(const QPointF &pt1, const QPointF &pt2);
+ inline QLineF(qreal x1, qreal y1, qreal x2, qreal y2);
+ inline QLineF(const QLine &line) : pt1(line.p1()), pt2(line.p2()) { }
+
+ static QLineF fromPolar(qreal length, qreal angle);
+
+ bool isNull() const;
+
+ inline QPointF p1() const;
+ inline QPointF p2() const;
+
+ inline qreal x1() const;
+ inline qreal y1() const;
+
+ inline qreal x2() const;
+ inline qreal y2() const;
+
+ inline qreal dx() const;
+ inline qreal dy() const;
+
+ qreal length() const;
+ void setLength(qreal len);
+
+ qreal angle() const;
+ void setAngle(qreal angle);
+
+ qreal angleTo(const QLineF &l) const;
+
+ QLineF unitVector() const;
+ QLineF normalVector() const;
+
+
+ IntersectType intersect(const QLineF &l, QPointF *intersectionPoint) const;
+
+ qreal angle(const QLineF &l) const;
+
+ QPointF pointAt(qreal t) const;
+ inline void translate(const QPointF &p);
+ inline void translate(qreal dx, qreal dy);
+
+ inline QLineF translated(const QPointF &p) const;
+ inline QLineF translated(qreal dx, qreal dy) const;
+
+ inline void setP1(const QPointF &p1);
+ inline void setP2(const QPointF &p2);
+ inline void setPoints(const QPointF &p1, const QPointF &p2);
+ inline void setLine(qreal x1, qreal y1, qreal x2, qreal y2);
+
+ inline bool operator==(const QLineF &d) const;
+ inline bool operator!=(const QLineF &d) const { return !(*this == d); }
+
+ QLine toLine() const;
+
+private:
+ QPointF pt1, pt2;
+};
+template <> class QTypeInfo<QLineF> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QLineF)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QLineF"; } };
+
+
+
+
+
+inline QLineF::QLineF()
+{
+}
+
+inline QLineF::QLineF(const QPointF &apt1, const QPointF &apt2)
+ : pt1(apt1), pt2(apt2)
+{
+}
+
+inline QLineF::QLineF(qreal x1pos, qreal y1pos, qreal x2pos, qreal y2pos)
+ : pt1(x1pos, y1pos), pt2(x2pos, y2pos)
+{
+}
+
+inline qreal QLineF::x1() const
+{
+ return pt1.x();
+}
+
+inline qreal QLineF::y1() const
+{
+ return pt1.y();
+}
+
+inline qreal QLineF::x2() const
+{
+ return pt2.x();
+}
+
+inline qreal QLineF::y2() const
+{
+ return pt2.y();
+}
+
+inline QPointF QLineF::p1() const
+{
+ return pt1;
+}
+
+inline QPointF QLineF::p2() const
+{
+ return pt2;
+}
+
+inline qreal QLineF::dx() const
+{
+ return pt2.x() - pt1.x();
+}
+
+inline qreal QLineF::dy() const
+{
+ return pt2.y() - pt1.y();
+}
+
+inline QLineF QLineF::normalVector() const
+{
+ return QLineF(p1(), p1() + QPointF(dy(), -dx()));
+}
+
+inline void QLineF::translate(const QPointF &point)
+{
+ pt1 += point;
+ pt2 += point;
+}
+
+inline void QLineF::translate(qreal adx, qreal ady)
+{
+ this->translate(QPointF(adx, ady));
+}
+
+inline QLineF QLineF::translated(const QPointF &p) const
+{
+ return QLineF(pt1 + p, pt2 + p);
+}
+
+inline QLineF QLineF::translated(qreal adx, qreal ady) const
+{
+ return translated(QPointF(adx, ady));
+}
+
+inline void QLineF::setLength(qreal len)
+{
+ if (isNull())
+ return;
+ QLineF v = unitVector();
+ pt2 = QPointF(pt1.x() + v.dx() * len, pt1.y() + v.dy() * len);
+}
+
+inline QPointF QLineF::pointAt(qreal t) const
+{
+ qreal vx = pt2.x() - pt1.x();
+ qreal vy = pt2.y() - pt1.y();
+ return QPointF(pt1.x() + vx * t, pt1.y() + vy * t);
+}
+
+inline QLine QLineF::toLine() const
+{
+ return QLine(pt1.toPoint(), pt2.toPoint());
+}
+
+
+inline void QLineF::setP1(const QPointF &aP1)
+{
+ pt1 = aP1;
+}
+
+inline void QLineF::setP2(const QPointF &aP2)
+{
+ pt2 = aP2;
+}
+
+inline void QLineF::setPoints(const QPointF &aP1, const QPointF &aP2)
+{
+ pt1 = aP1;
+ pt2 = aP2;
+}
+
+inline void QLineF::setLine(qreal aX1, qreal aY1, qreal aX2, qreal aY2)
+{
+ pt1 = QPointF(aX1, aY1);
+ pt2 = QPointF(aX2, aY2);
+}
+
+
+inline bool QLineF::operator==(const QLineF &d) const
+{
+ return pt1 == d.pt1 && pt2 == d.pt2;
+}
+
+
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug d, const QLineF &p);
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QLineF &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QLineF &);
+
+
+
+
+
+# 1 "../../include/QtCore/qline.h" 2
+# 49 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qmatrix.h" 2
+# 1 "../../include/QtCore/qpoint.h" 1
+# 50 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qmatrix.h" 2
+# 1 "../../include/QtCore/qrect.h" 1
+# 51 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qmatrix.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QPainterPath;
+class QVariant;
+
+class __attribute__((visibility("default"))) QMatrix
+{
+public:
+ QMatrix();
+ QMatrix(qreal m11, qreal m12, qreal m21, qreal m22,
+ qreal dx, qreal dy);
+ QMatrix(const QMatrix &matrix);
+
+ void setMatrix(qreal m11, qreal m12, qreal m21, qreal m22,
+ qreal dx, qreal dy);
+
+ qreal m11() const { return _m11; }
+ qreal m12() const { return _m12; }
+ qreal m21() const { return _m21; }
+ qreal m22() const { return _m22; }
+ qreal dx() const { return _dx; }
+ qreal dy() const { return _dy; }
+
+ void map(int x, int y, int *tx, int *ty) const;
+ void map(qreal x, qreal y, qreal *tx, qreal *ty) const;
+ QRect mapRect(const QRect &) const;
+ QRectF mapRect(const QRectF &) const;
+
+ QPoint map(const QPoint &p) const;
+ QPointF map(const QPointF&p) const;
+ QLine map(const QLine &l) const;
+ QLineF map(const QLineF &l) const;
+ QPolygonF map(const QPolygonF &a) const;
+ QPolygon map(const QPolygon &a) const;
+ QRegion map(const QRegion &r) const;
+ QPainterPath map(const QPainterPath &p) const;
+ QPolygon mapToPolygon(const QRect &r) const;
+
+ void reset();
+ inline bool isIdentity() const;
+
+ QMatrix &translate(qreal dx, qreal dy);
+ QMatrix &scale(qreal sx, qreal sy);
+ QMatrix &shear(qreal sh, qreal sv);
+ QMatrix &rotate(qreal a);
+
+ bool isInvertible() const { return !qFuzzyCompare(_m11*_m22 - _m12*_m21 + 1, 1); }
+ qreal det() const { return _m11*_m22 - _m12*_m21; }
+
+ QMatrix inverted(bool *invertible = 0) const;
+
+ bool operator==(const QMatrix &) const;
+ bool operator!=(const QMatrix &) const;
+
+ QMatrix &operator*=(const QMatrix &);
+ QMatrix operator*(const QMatrix &o) const;
+
+ QMatrix &operator=(const QMatrix &);
+
+ operator QVariant() const;
+
+
+
+
+
+
+
+private:
+ friend class QTransform;
+ qreal _m11, _m12;
+ qreal _m21, _m22;
+ qreal _dx, _dy;
+};
+template <> class QTypeInfo<QMatrix> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QMatrix)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QMatrix"; } };
+
+
+__attribute__((visibility("default"))) inline QPoint operator*(const QPoint &p, const QMatrix &m)
+{ return m.map(p); }
+__attribute__((visibility("default"))) inline QPointF operator*(const QPointF &p, const QMatrix &m)
+{ return m.map(p); }
+__attribute__((visibility("default"))) inline QLineF operator*(const QLineF &l, const QMatrix &m)
+{ return m.map(l); }
+__attribute__((visibility("default"))) inline QLine operator*(const QLine &l, const QMatrix &m)
+{ return m.map(l); }
+__attribute__((visibility("default"))) inline QPolygon operator *(const QPolygon &a, const QMatrix &m)
+{ return m.map(a); }
+__attribute__((visibility("default"))) inline QPolygonF operator *(const QPolygonF &a, const QMatrix &m)
+{ return m.map(a); }
+__attribute__((visibility("default"))) inline QRegion operator *(const QRegion &r, const QMatrix &m)
+{ return m.map(r); }
+__attribute__((visibility("default"))) QPainterPath operator *(const QPainterPath &p, const QMatrix &m);
+
+inline bool QMatrix::isIdentity() const
+{
+ return qFuzzyCompare(_m11, 1) && qFuzzyCompare(_m22, 1) && qFuzzyCompare(_m12 + 1, 1)
+ && qFuzzyCompare(_m21 + 1, 1) && qFuzzyCompare(_dx + 1, 1) && qFuzzyCompare(_dy + 1, 1);
+}
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QMatrix &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QMatrix &);
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QMatrix &);
+# 171 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qmatrix.h"
+
+
+
+# 1 "../../include/QtGui/qmatrix.h" 2
+# 50 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qbrush.h" 2
+# 1 "../../include/QtGui/qtransform.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qtransform.h" 1
+# 42 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qtransform.h"
+#define QTRANSFORM_H
+
+# 1 "../../include/QtGui/qmatrix.h" 1
+# 45 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qtransform.h" 2
+# 1 "../../include/QtGui/qpainterpath.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainterpath.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainterpath.h"
+#define QPAINTERPATH_H
+
+# 1 "../../include/QtGui/qmatrix.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainterpath.h" 2
+# 1 "../../include/QtCore/qglobal.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainterpath.h" 2
+# 1 "../../include/QtCore/qrect.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainterpath.h" 2
+# 1 "../../include/QtCore/qline.h" 1
+# 49 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainterpath.h" 2
+# 1 "../../include/QtCore/qvector.h" 1
+# 50 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainterpath.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QFont;
+class QPainterPathPrivate;
+class QPainterPathData;
+class QPainterPathStrokerPrivate;
+class QPolygonF;
+class QRegion;
+class QVectorPath;
+
+class __attribute__((visibility("default"))) QPainterPath
+{
+public:
+ enum ElementType {
+ MoveToElement,
+ LineToElement,
+ CurveToElement,
+ CurveToDataElement
+ };
+
+ class Element {
+ public:
+ qreal x;
+ qreal y;
+ ElementType type;
+
+ bool isMoveTo() const { return type == MoveToElement; }
+ bool isLineTo() const { return type == LineToElement; }
+ bool isCurveTo() const { return type == CurveToElement; }
+
+ operator QPointF () const { return QPointF(x, y); }
+
+ bool operator==(const Element &e) const { return qFuzzyCompare(x, e.x)
+ && qFuzzyCompare(y, e.y) && type == e.type; }
+ inline bool operator!=(const Element &e) const { return !operator==(e); }
+ };
+
+ QPainterPath();
+ explicit QPainterPath(const QPointF &startPoint);
+ QPainterPath(const QPainterPath &other);
+ QPainterPath &operator=(const QPainterPath &other);
+ ~QPainterPath();
+
+ void closeSubpath();
+
+ void moveTo(const QPointF &p);
+ inline void moveTo(qreal x, qreal y);
+
+ void lineTo(const QPointF &p);
+ inline void lineTo(qreal x, qreal y);
+
+ void arcMoveTo(const QRectF &rect, qreal angle);
+ inline void arcMoveTo(qreal x, qreal y, qreal w, qreal h, qreal angle);
+
+ void arcTo(const QRectF &rect, qreal startAngle, qreal arcLength);
+ inline void arcTo(qreal x, qreal y, qreal w, qreal h, qreal startAngle, qreal arcLength);
+
+ void cubicTo(const QPointF &ctrlPt1, const QPointF &ctrlPt2, const QPointF &endPt);
+ inline void cubicTo(qreal ctrlPt1x, qreal ctrlPt1y, qreal ctrlPt2x, qreal ctrlPt2y,
+ qreal endPtx, qreal endPty);
+ void quadTo(const QPointF &ctrlPt, const QPointF &endPt);
+ inline void quadTo(qreal ctrlPtx, qreal ctrlPty, qreal endPtx, qreal endPty);
+
+ QPointF currentPosition() const;
+
+ void addRect(const QRectF &rect);
+ inline void addRect(qreal x, qreal y, qreal w, qreal h);
+ void addEllipse(const QRectF &rect);
+ inline void addEllipse(qreal x, qreal y, qreal w, qreal h);
+ inline void addEllipse(const QPointF ¢er, qreal rx, qreal ry);
+ void addPolygon(const QPolygonF &polygon);
+ void addText(const QPointF &point, const QFont &f, const QString &text);
+ inline void addText(qreal x, qreal y, const QFont &f, const QString &text);
+ void addPath(const QPainterPath &path);
+ void addRegion(const QRegion ®ion);
+
+ void addRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode = Qt::AbsoluteSize);
+ inline void addRoundedRect(qreal x, qreal y, qreal w, qreal h,
+ qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode = Qt::AbsoluteSize);
+
+ void addRoundRect(const QRectF &rect, int xRnd, int yRnd);
+ inline void addRoundRect(qreal x, qreal y, qreal w, qreal h,
+ int xRnd, int yRnd);
+ inline void addRoundRect(const QRectF &rect, int roundness);
+ inline void addRoundRect(qreal x, qreal y, qreal w, qreal h,
+ int roundness);
+
+ void connectPath(const QPainterPath &path);
+
+ bool contains(const QPointF &pt) const;
+ bool contains(const QRectF &rect) const;
+ bool intersects(const QRectF &rect) const;
+
+ QRectF boundingRect() const;
+ QRectF controlPointRect() const;
+
+ Qt::FillRule fillRule() const;
+ void setFillRule(Qt::FillRule fillRule);
+
+ inline bool isEmpty() const;
+
+ QPainterPath toReversed() const;
+ QList<QPolygonF> toSubpathPolygons(const QMatrix &matrix = QMatrix()) const;
+ QList<QPolygonF> toFillPolygons(const QMatrix &matrix = QMatrix()) const;
+ QPolygonF toFillPolygon(const QMatrix &matrix = QMatrix()) const;
+ QList<QPolygonF> toSubpathPolygons(const QTransform &matrix) const;
+ QList<QPolygonF> toFillPolygons(const QTransform &matrix) const;
+ QPolygonF toFillPolygon(const QTransform &matrix) const;
+
+ inline int elementCount() const;
+ inline const QPainterPath::Element &elementAt(int i) const;
+ inline void setElementPositionAt(int i, qreal x, qreal y);
+
+ qreal length() const;
+ qreal percentAtLength(qreal t) const;
+ QPointF pointAtPercent(qreal t) const;
+ qreal angleAtPercent(qreal t) const;
+ qreal slopeAtPercent(qreal t) const;
+
+ bool intersects(const QPainterPath &p) const;
+ bool contains(const QPainterPath &p) const;
+ QPainterPath united(const QPainterPath &r) const;
+ QPainterPath intersected(const QPainterPath &r) const;
+ QPainterPath subtracted(const QPainterPath &r) const;
+ QPainterPath subtractedInverted(const QPainterPath &r) const;
+
+ QPainterPath simplified() const;
+
+ bool operator==(const QPainterPath &other) const;
+ bool operator!=(const QPainterPath &other) const;
+
+ QPainterPath operator&(const QPainterPath &other) const;
+ QPainterPath operator|(const QPainterPath &other) const;
+ QPainterPath operator+(const QPainterPath &other) const;
+ QPainterPath operator-(const QPainterPath &other) const;
+ QPainterPath &operator&=(const QPainterPath &other);
+ QPainterPath &operator|=(const QPainterPath &other);
+ QPainterPath &operator+=(const QPainterPath &other);
+ QPainterPath &operator-=(const QPainterPath &other);
+
+private:
+ QPainterPathPrivate *d_ptr;
+
+ inline void ensureData() { if (!d_ptr) ensureData_helper(); }
+ void ensureData_helper();
+ inline void detach();
+ void detach_helper();
+ void setDirty(bool);
+ void computeBoundingRect() const;
+ void computeControlPointRect() const;
+
+ QPainterPathData *d_func() const { return reinterpret_cast<QPainterPathData *>(d_ptr); }
+
+ friend class QPainterPathData;
+ friend class QPainterPathStroker;
+ friend class QPainterPathStrokerPrivate;
+ friend class QMatrix;
+ friend class QTransform;
+ friend __attribute__((visibility("default"))) const QVectorPath &qtVectorPathForPath(const QPainterPath &);
+
+
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPainterPath &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPainterPath &);
+
+};
+
+class QPainterPathPrivate
+{
+public:
+ friend class QPainterPath;
+ friend class QPainterPathData;
+ friend class QPainterPathStroker;
+ friend class QPainterPathStrokerPrivate;
+ friend class QMatrix;
+ friend class QTransform;
+
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPainterPath &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPainterPath &);
+
+private:
+ QAtomicInt ref;
+ QVector<QPainterPath::Element> elements;
+};
+
+template <> class QTypeInfo<QPainterPath::Element> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QPainterPath::Element)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QPainterPath::Element"; } };
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPainterPath &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPainterPath &);
+
+
+class __attribute__((visibility("default"))) QPainterPathStroker
+{
+ inline QPainterPathStrokerPrivate* d_func() { return reinterpret_cast<QPainterPathStrokerPrivate *>(d_ptr); } inline const QPainterPathStrokerPrivate* d_func() const { return reinterpret_cast<const QPainterPathStrokerPrivate *>(d_ptr); } friend class QPainterPathStrokerPrivate;
+public:
+ QPainterPathStroker();
+ ~QPainterPathStroker();
+
+ void setWidth(qreal width);
+ qreal width() const;
+
+ void setCapStyle(Qt::PenCapStyle style);
+ Qt::PenCapStyle capStyle() const;
+
+ void setJoinStyle(Qt::PenJoinStyle style);
+ Qt::PenJoinStyle joinStyle() const;
+
+ void setMiterLimit(qreal length);
+ qreal miterLimit() const;
+
+ void setCurveThreshold(qreal threshold);
+ qreal curveThreshold() const;
+
+ void setDashPattern(Qt::PenStyle);
+ void setDashPattern(const QVector<qreal> &dashPattern);
+ QVector<qreal> dashPattern() const;
+
+ void setDashOffset(qreal offset);
+ qreal dashOffset() const;
+
+ QPainterPath createStroke(const QPainterPath &path) const;
+
+private:
+ friend class QX11PaintEngine;
+
+ QPainterPathStrokerPrivate *d_ptr;
+};
+
+inline void QPainterPath::moveTo(qreal x, qreal y)
+{
+ moveTo(QPointF(x, y));
+}
+
+inline void QPainterPath::lineTo(qreal x, qreal y)
+{
+ lineTo(QPointF(x, y));
+}
+
+inline void QPainterPath::arcTo(qreal x, qreal y, qreal w, qreal h, qreal startAngle, qreal arcLenght)
+{
+ arcTo(QRectF(x, y, w, h), startAngle, arcLenght);
+}
+
+inline void QPainterPath::arcMoveTo(qreal x, qreal y, qreal w, qreal h, qreal angle)
+{
+ arcMoveTo(QRectF(x, y, w, h), angle);
+}
+
+inline void QPainterPath::cubicTo(qreal ctrlPt1x, qreal ctrlPt1y, qreal ctrlPt2x, qreal ctrlPt2y,
+ qreal endPtx, qreal endPty)
+{
+ cubicTo(QPointF(ctrlPt1x, ctrlPt1y), QPointF(ctrlPt2x, ctrlPt2y),
+ QPointF(endPtx, endPty));
+}
+
+inline void QPainterPath::quadTo(qreal ctrlPtx, qreal ctrlPty, qreal endPtx, qreal endPty)
+{
+ quadTo(QPointF(ctrlPtx, ctrlPty), QPointF(endPtx, endPty));
+}
+
+inline void QPainterPath::addEllipse(qreal x, qreal y, qreal w, qreal h)
+{
+ addEllipse(QRectF(x, y, w, h));
+}
+
+inline void QPainterPath::addEllipse(const QPointF ¢er, qreal rx, qreal ry)
+{
+ addEllipse(QRectF(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry));
+}
+
+inline void QPainterPath::addRect(qreal x, qreal y, qreal w, qreal h)
+{
+ addRect(QRectF(x, y, w, h));
+}
+
+inline void QPainterPath::addRoundedRect(qreal x, qreal y, qreal w, qreal h,
+ qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode)
+{
+ addRoundedRect(QRectF(x, y, w, h), xRadius, yRadius, mode);
+}
+
+inline void QPainterPath::addRoundRect(qreal x, qreal y, qreal w, qreal h,
+ int xRnd, int yRnd)
+{
+ addRoundRect(QRectF(x, y, w, h), xRnd, yRnd);
+}
+
+inline void QPainterPath::addRoundRect(const QRectF &rect,
+ int roundness)
+{
+ int xRnd = roundness;
+ int yRnd = roundness;
+ if (rect.width() > rect.height())
+ xRnd = int(roundness * rect.height()/rect.width());
+ else
+ yRnd = int(roundness * rect.width()/rect.height());
+ addRoundRect(rect, xRnd, yRnd);
+}
+
+inline void QPainterPath::addRoundRect(qreal x, qreal y, qreal w, qreal h,
+ int roundness)
+{
+ addRoundRect(QRectF(x, y, w, h), roundness);
+}
+
+inline void QPainterPath::addText(qreal x, qreal y, const QFont &f, const QString &text)
+{
+ addText(QPointF(x, y), f, text);
+}
+
+inline bool QPainterPath::isEmpty() const
+{
+ return !d_ptr || (d_ptr->elements.size() == 1 && d_ptr->elements.first().type == MoveToElement);
+}
+
+inline int QPainterPath::elementCount() const
+{
+ return d_ptr ? d_ptr->elements.size() : 0;
+}
+
+inline const QPainterPath::Element &QPainterPath::elementAt(int i) const
+{
+ qt_noop();
+ qt_noop();
+ return d_ptr->elements.at(i);
+}
+
+inline void QPainterPath::setElementPositionAt(int i, qreal x, qreal y)
+{
+ qt_noop();
+ qt_noop();
+ detach();
+ QPainterPath::Element &e = d_ptr->elements[i];
+ e.x = x;
+ e.y = y;
+}
+
+
+inline void QPainterPath::detach()
+{
+ if (d_ptr->ref != 1)
+ detach_helper();
+ setDirty(true);
+}
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QPainterPath &);
+
+
+
+
+
+# 1 "../../include/QtGui/qpainterpath.h" 2
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qtransform.h" 2
+# 1 "../../include/QtGui/qpolygon.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qtransform.h" 2
+# 1 "../../include/QtGui/qregion.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qtransform.h" 2
+# 1 "../../include/QtGui/qwindowdefs.h" 1
+# 49 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qtransform.h" 2
+# 1 "../../include/QtCore/qline.h" 1
+# 50 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qtransform.h" 2
+# 1 "../../include/QtCore/qpoint.h" 1
+# 51 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qtransform.h" 2
+# 1 "../../include/QtCore/qrect.h" 1
+# 52 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qtransform.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QVariant;
+
+class __attribute__((visibility("default"))) QTransform
+{
+
+public:
+ enum TransformationType {
+ TxNone = 0x00,
+ TxTranslate = 0x01,
+ TxScale = 0x02,
+ TxRotate = 0x04,
+ TxShear = 0x08,
+ TxProject = 0x10
+ };
+
+ QTransform();
+ QTransform(qreal h11, qreal h12, qreal h13,
+ qreal h21, qreal h22, qreal h23,
+ qreal h31, qreal h32, qreal h33 = 1.0);
+ QTransform(qreal h11, qreal h12, qreal h21,
+ qreal h22, qreal dx, qreal dy);
+ explicit QTransform(const QMatrix &mtx);
+
+ bool isAffine() const;
+ bool isIdentity() const;
+ bool isInvertible() const;
+ bool isScaling() const;
+ bool isRotating() const;
+ bool isTranslating() const;
+
+ TransformationType type() const;
+
+ inline qreal determinant() const;
+ qreal det() const;
+
+ qreal m11() const;
+ qreal m12() const;
+ qreal m13() const;
+ qreal m21() const;
+ qreal m22() const;
+ qreal m23() const;
+ qreal m31() const;
+ qreal m32() const;
+ qreal m33() const;
+ qreal dx() const;
+ qreal dy() const;
+
+ void setMatrix(qreal m11, qreal m12, qreal m13,
+ qreal m21, qreal m22, qreal m23,
+ qreal m31, qreal m32, qreal m33);
+
+ QTransform inverted(bool *invertible = 0) const;
+ QTransform adjoint() const;
+ QTransform transposed() const;
+
+ QTransform &translate(qreal dx, qreal dy);
+ QTransform &scale(qreal sx, qreal sy);
+ QTransform &shear(qreal sh, qreal sv);
+ QTransform &rotate(qreal a, Qt::Axis axis = Qt::ZAxis);
+ QTransform &rotateRadians(qreal a, Qt::Axis axis = Qt::ZAxis);
+
+ static bool squareToQuad(const QPolygonF &square, QTransform &result);
+ static bool quadToSquare(const QPolygonF &quad, QTransform &result);
+ static bool quadToQuad(const QPolygonF &one,
+ const QPolygonF &two,
+ QTransform &result);
+
+ bool operator==(const QTransform &) const;
+ bool operator!=(const QTransform &) const;
+
+ QTransform &operator*=(const QTransform &);
+ QTransform operator*(const QTransform &o) const;
+
+ QTransform &operator=(const QTransform &);
+
+ operator QVariant() const;
+
+ void reset();
+ QPoint map(const QPoint &p) const;
+ QPointF map(const QPointF &p) const;
+ QLine map(const QLine &l) const;
+ QLineF map(const QLineF &l) const;
+ QPolygonF map(const QPolygonF &a) const;
+ QPolygon map(const QPolygon &a) const;
+ QRegion map(const QRegion &r) const;
+ QPainterPath map(const QPainterPath &p) const;
+ QPolygon mapToPolygon(const QRect &r) const;
+ QRect mapRect(const QRect &) const;
+ QRectF mapRect(const QRectF &) const;
+ void map(int x, int y, int *tx, int *ty) const;
+ void map(qreal x, qreal y, qreal *tx, qreal *ty) const;
+
+ const QMatrix &toAffine() const;
+
+ QTransform &operator*=(qreal div);
+ QTransform &operator/=(qreal div);
+ QTransform &operator+=(qreal div);
+ QTransform &operator-=(qreal div);
+
+ static QTransform fromTranslate(qreal dx, qreal dy);
+ static QTransform fromScale(qreal dx, qreal dy);
+
+private:
+ QMatrix affine;
+ qreal m_13;
+ qreal m_23;
+ qreal m_33;
+
+ mutable uint m_type : 5;
+ mutable uint m_dirty : 5;
+
+ class Private;
+ Private *d;
+};
+template <> class QTypeInfo<QTransform> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTransform)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTransform"; } };
+
+
+inline bool QTransform::isAffine() const
+{
+ return type() < TxProject;
+}
+inline bool QTransform::isIdentity() const
+{
+ return type() == TxNone;
+}
+
+inline bool QTransform::isInvertible() const
+{
+ return !qFuzzyCompare(determinant() + 1, 1);
+}
+
+inline bool QTransform::isScaling() const
+{
+ return type() >= TxScale;
+}
+inline bool QTransform::isRotating() const
+{
+ return type() >= TxRotate;
+}
+
+inline bool QTransform::isTranslating() const
+{
+ return type() >= TxTranslate;
+}
+
+inline qreal QTransform::determinant() const
+{
+ return affine._m11*(m_33*affine._m22-affine._dy*m_23) -
+ affine._m21*(m_33*affine._m12-affine._dy*m_13)+affine._dx*(m_23*affine._m12-affine._m22*m_13);
+}
+inline qreal QTransform::det() const
+{
+ return determinant();
+}
+inline qreal QTransform::m11() const
+{
+ return affine._m11;
+}
+inline qreal QTransform::m12() const
+{
+ return affine._m12;
+}
+inline qreal QTransform::m13() const
+{
+ return m_13;
+}
+inline qreal QTransform::m21() const
+{
+ return affine._m21;
+}
+inline qreal QTransform::m22() const
+{
+ return affine._m22;
+}
+inline qreal QTransform::m23() const
+{
+ return m_23;
+}
+inline qreal QTransform::m31() const
+{
+ return affine._dx;
+}
+inline qreal QTransform::m32() const
+{
+ return affine._dy;
+}
+inline qreal QTransform::m33() const
+{
+ return m_33;
+}
+inline qreal QTransform::dx() const
+{
+ return affine._dx;
+}
+inline qreal QTransform::dy() const
+{
+ return affine._dy;
+}
+
+inline QTransform &QTransform::operator*=(qreal num)
+{
+ if (num == 1.)
+ return *this;
+ affine._m11 *= num;
+ affine._m12 *= num;
+ m_13 *= num;
+ affine._m21 *= num;
+ affine._m22 *= num;
+ m_23 *= num;
+ affine._dx *= num;
+ affine._dy *= num;
+ m_33 *= num;
+ m_dirty |= TxScale;
+ return *this;
+}
+inline QTransform &QTransform::operator/=(qreal div)
+{
+ if (div == 0)
+ return *this;
+ div = 1/div;
+ return operator*=(div);
+}
+inline QTransform &QTransform::operator+=(qreal num)
+{
+ if (num == 0)
+ return *this;
+ affine._m11 += num;
+ affine._m12 += num;
+ m_13 += num;
+ affine._m21 += num;
+ affine._m22 += num;
+ m_23 += num;
+ affine._dx += num;
+ affine._dy += num;
+ m_33 += num;
+ m_dirty |= TxProject;
+ return *this;
+}
+inline QTransform &QTransform::operator-=(qreal num)
+{
+ if (num == 0)
+ return *this;
+ affine._m11 -= num;
+ affine._m12 -= num;
+ m_13 -= num;
+ affine._m21 -= num;
+ affine._m22 -= num;
+ m_23 -= num;
+ affine._dx -= num;
+ affine._dy -= num;
+ m_33 -= num;
+ m_dirty |= TxProject;
+ return *this;
+}
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QTransform &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QTransform &);
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QTransform &);
+
+
+
+
+__attribute__((visibility("default"))) inline QPoint operator*(const QPoint &p, const QTransform &m)
+{ return m.map(p); }
+__attribute__((visibility("default"))) inline QPointF operator*(const QPointF &p, const QTransform &m)
+{ return m.map(p); }
+__attribute__((visibility("default"))) inline QLineF operator*(const QLineF &l, const QTransform &m)
+{ return m.map(l); }
+__attribute__((visibility("default"))) inline QLine operator*(const QLine &l, const QTransform &m)
+{ return m.map(l); }
+__attribute__((visibility("default"))) inline QPolygon operator *(const QPolygon &a, const QTransform &m)
+{ return m.map(a); }
+__attribute__((visibility("default"))) inline QPolygonF operator *(const QPolygonF &a, const QTransform &m)
+{ return m.map(a); }
+__attribute__((visibility("default"))) inline QRegion operator *(const QRegion &r, const QTransform &m)
+{ return m.map(r); }
+__attribute__((visibility("default"))) inline QPainterPath operator *(const QPainterPath &p, const QTransform &m)
+{ return m.map(p); }
+
+__attribute__((visibility("default"))) inline QTransform operator *(const QTransform &a, qreal n)
+{ QTransform t(a); t *= n; return t; }
+__attribute__((visibility("default"))) inline QTransform operator /(const QTransform &a, qreal n)
+{ QTransform t(a); t /= n; return t; }
+__attribute__((visibility("default"))) inline QTransform operator +(const QTransform &a, qreal n)
+{ QTransform t(a); t += n; return t; }
+__attribute__((visibility("default"))) inline QTransform operator -(const QTransform &a, qreal n)
+{ QTransform t(a); t -= n; return t; }
+
+
+
+
+# 1 "../../include/QtGui/qtransform.h" 2
+# 51 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qbrush.h" 2
+# 1 "../../include/QtGui/qimage.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qimage.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qimage.h"
+#define QIMAGE_H
+
+# 1 "../../include/QtGui/qtransform.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qimage.h" 2
+# 1 "../../include/QtGui/qpaintdevice.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintdevice.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintdevice.h"
+#define QPAINTDEVICE_H
+
+# 1 "../../include/QtGui/qwindowdefs.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintdevice.h" 2
+# 1 "../../include/QtCore/qrect.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintdevice.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+
+class QWSDisplay;
+
+
+class QPaintEngine;
+
+class __attribute__((visibility("default"))) QPaintDevice
+{
+public:
+ enum PaintDeviceMetric {
+ PdmWidth = 1,
+ PdmHeight,
+ PdmWidthMM,
+ PdmHeightMM,
+ PdmNumColors,
+ PdmDepth,
+ PdmDpiX,
+ PdmDpiY,
+ PdmPhysicalDpiX,
+ PdmPhysicalDpiY
+ };
+
+ virtual ~QPaintDevice();
+
+ virtual int devType() const;
+ bool paintingActive() const;
+ virtual QPaintEngine *paintEngine() const = 0;
+
+
+ static QWSDisplay *qwsDisplay();
+
+
+
+
+
+
+
+ int width() const { return metric(PdmWidth); }
+ int height() const { return metric(PdmHeight); }
+ int widthMM() const { return metric(PdmWidthMM); }
+ int heightMM() const { return metric(PdmHeightMM); }
+ int logicalDpiX() const { return metric(PdmDpiX); }
+ int logicalDpiY() const { return metric(PdmDpiY); }
+ int physicalDpiX() const { return metric(PdmPhysicalDpiX); }
+ int physicalDpiY() const { return metric(PdmPhysicalDpiY); }
+ int numColors() const { return metric(PdmNumColors); }
+ int depth() const { return metric(PdmDepth); }
+
+protected:
+ QPaintDevice();
+ virtual int metric(PaintDeviceMetric metric) const;
+
+ ushort painters;
+
+private:
+ QPaintDevice(const QPaintDevice &); QPaintDevice &operator=(const QPaintDevice &);
+# 137 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintdevice.h"
+ friend class QPainter;
+ friend class QFontEngineMac;
+ friend class QX11PaintEngine;
+};
+# 163 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintdevice.h"
+inline int QPaintDevice::devType() const
+{ return QInternal::UnknownDevice; }
+
+inline bool QPaintDevice::paintingActive() const
+{ return painters != 0; }
+
+
+
+
+# 1 "../../include/QtGui/qpaintdevice.h" 2
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qimage.h" 2
+# 1 "../../include/QtGui/qrgb.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qimage.h" 2
+# 1 "../../include/QtCore/qbytearray.h" 1
+# 49 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qimage.h" 2
+# 1 "../../include/QtCore/qrect.h" 1
+# 50 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qimage.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 51 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qimage.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QIODevice;
+class QStringList;
+class QMatrix;
+class QTransform;
+class QVariant;
+template <class T> class QList;
+template <class T> class QVector;
+
+struct QImageData;
+class QImageDataMisc;
+
+class __attribute__((visibility("default"))) QImageTextKeyLang {
+public:
+ QImageTextKeyLang(const char* k, const char* l) : key(k), lang(l) { }
+ QImageTextKeyLang() { }
+
+ QByteArray key;
+ QByteArray lang;
+
+ bool operator< (const QImageTextKeyLang& other) const
+ { return key < other.key || (key==other.key && lang < other.lang); }
+ bool operator== (const QImageTextKeyLang& other) const
+ { return key==other.key && lang==other.lang; }
+ inline bool operator!= (const QImageTextKeyLang &other) const
+ { return !operator==(other); }
+};
+
+
+
+class __attribute__((visibility("default"))) QImage : public QPaintDevice
+{
+public:
+ enum InvertMode { InvertRgb, InvertRgba };
+ enum Format {
+ Format_Invalid,
+ Format_Mono,
+ Format_MonoLSB,
+ Format_Indexed8,
+ Format_RGB32,
+ Format_ARGB32,
+ Format_ARGB32_Premultiplied,
+ Format_RGB16,
+ Format_ARGB8565_Premultiplied,
+ Format_RGB666,
+ Format_ARGB6666_Premultiplied,
+ Format_RGB555,
+ Format_ARGB8555_Premultiplied,
+ Format_RGB888,
+ Format_RGB444,
+ Format_ARGB4444_Premultiplied,
+# 119 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qimage.h"
+ NImageFormats
+
+ };
+
+ QImage();
+ QImage(const QSize &size, Format format);
+ QImage(int width, int height, Format format);
+ QImage(uchar *data, int width, int height, Format format);
+ QImage(const uchar *data, int width, int height, Format format);
+ QImage(uchar *data, int width, int height, int bytesPerLine, Format format);
+ QImage(const uchar *data, int width, int height, int bytesPerLine, Format format);
+
+
+ explicit QImage(const char * const xpm[]);
+
+ explicit QImage(const QString &fileName, const char *format = 0);
+
+ explicit QImage(const char *fileName, const char *format = 0);
+
+
+ QImage(const QImage &);
+ ~QImage();
+
+ QImage &operator=(const QImage &);
+ bool isNull() const;
+
+ int devType() const;
+
+ bool operator==(const QImage &) const;
+ bool operator!=(const QImage &) const;
+ operator QVariant() const;
+ void detach();
+ bool isDetached() const;
+
+ QImage copy(const QRect &rect = QRect()) const;
+ inline QImage copy(int x, int y, int w, int h) const
+ { return copy(QRect(x, y, w, h)); }
+
+ Format format() const;
+
+ QImage convertToFormat(Format f, Qt::ImageConversionFlags flags = Qt::AutoColor) const __attribute__ ((warn_unused_result));
+ QImage convertToFormat(Format f, const QVector<QRgb> &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const __attribute__ ((warn_unused_result));
+
+ int width() const;
+ int height() const;
+ QSize size() const;
+ QRect rect() const;
+
+ int depth() const;
+ int numColors() const;
+
+ QRgb color(int i) const;
+ void setColor(int i, QRgb c);
+ void setNumColors(int);
+
+ bool allGray() const;
+ bool isGrayscale() const;
+
+ uchar *bits();
+ const uchar *bits() const;
+ int numBytes() const;
+
+ uchar *scanLine(int);
+ const uchar *scanLine(int) const;
+ int bytesPerLine() const;
+
+ bool valid(int x, int y) const;
+ bool valid(const QPoint &pt) const;
+
+ int pixelIndex(int x, int y) const;
+ int pixelIndex(const QPoint &pt) const;
+
+ QRgb pixel(int x, int y) const;
+ QRgb pixel(const QPoint &pt) const;
+
+ void setPixel(int x, int y, uint index_or_rgb);
+ void setPixel(const QPoint &pt, uint index_or_rgb);
+
+ QVector<QRgb> colorTable() const;
+ void setColorTable(const QVector<QRgb> colors);
+
+ void fill(uint pixel);
+
+ bool hasAlphaChannel() const;
+ void setAlphaChannel(const QImage &alphaChannel);
+ QImage alphaChannel() const;
+ QImage createAlphaMask(Qt::ImageConversionFlags flags = Qt::AutoColor) const;
+
+ QImage createHeuristicMask(bool clipTight = true) const;
+
+ QImage createMaskFromColor(QRgb color, Qt::MaskMode mode = Qt::MaskInColor) const;
+
+ inline QImage scaled(int w, int h, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio,
+ Qt::TransformationMode mode = Qt::FastTransformation) const
+ { return scaled(QSize(w, h), aspectMode, mode); }
+ QImage scaled(const QSize &s, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio,
+ Qt::TransformationMode mode = Qt::FastTransformation) const;
+ QImage scaledToWidth(int w, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ QImage scaledToHeight(int h, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ QImage transformed(const QMatrix &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ static QMatrix trueMatrix(const QMatrix &, int w, int h);
+ QImage transformed(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ static QTransform trueMatrix(const QTransform &, int w, int h);
+ QImage mirrored(bool horizontally = false, bool vertically = true) const;
+ QImage rgbSwapped() const;
+ void invertPixels(InvertMode = InvertRgb);
+
+
+ bool load(QIODevice *device, const char* format);
+ bool load(const QString &fileName, const char* format=0);
+ bool loadFromData(const uchar *buf, int len, const char *format = 0);
+ inline bool loadFromData(const QByteArray &data, const char* aformat=0)
+ { return loadFromData(reinterpret_cast<const uchar *>(data.constData()), data.size(), aformat); }
+
+ bool save(const QString &fileName, const char* format=0, int quality=-1) const;
+ bool save(QIODevice *device, const char* format=0, int quality=-1) const;
+
+ static QImage fromData(const uchar *data, int size, const char *format = 0);
+ inline static QImage fromData(const QByteArray &data, const char *format = 0)
+ { return fromData(reinterpret_cast<const uchar *>(data.constData()), data.size(), format); }
+
+ int serialNumber() const;
+ qint64 cacheKey() const;
+
+ QPaintEngine *paintEngine() const;
+
+
+ int dotsPerMeterX() const;
+ int dotsPerMeterY() const;
+ void setDotsPerMeterX(int);
+ void setDotsPerMeterY(int);
+ QPoint offset() const;
+ void setOffset(const QPoint&);
+
+ QStringList textKeys() const;
+ QString text(const QString &key = QString()) const;
+ void setText(const QString &key, const QString &value);
+
+
+ QString text(const char* key, const char* lang=0) const;
+ QList<QImageTextKeyLang> textList() const;
+ QStringList textLanguages() const;
+ QString text(const QImageTextKeyLang&) const;
+ void setText(const char* key, const char* lang, const QString&);
+# 309 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qimage.h"
+protected:
+ virtual int metric(PaintDeviceMetric metric) const;
+
+private:
+ friend class QWSOnScreenSurface;
+ QImageData *d;
+
+ friend class QRasterPixmapData;
+ friend class QDetachedPixmap;
+ friend __attribute__((visibility("default"))) qint64 qt_image_id(const QImage &image);
+ friend const QVector<QRgb> *qt_image_colortable(const QImage &image);
+
+public:
+ typedef QImageData * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+
+template <> inline bool qIsDetached<QImage>(QImage &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QImage>(QImage &value1, QImage &value2) { const QImage::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+template <> class QTypeInfo<QImage> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QImage)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QImage"; } };
+
+
+
+__attribute__((visibility("default"))) inline bool QImage::valid(const QPoint &pt) const { return valid(pt.x(), pt.y()); }
+__attribute__((visibility("default"))) inline int QImage::pixelIndex(const QPoint &pt) const { return pixelIndex(pt.x(), pt.y());}
+__attribute__((visibility("default"))) inline QRgb QImage::pixel(const QPoint &pt) const { return pixel(pt.x(), pt.y()); }
+__attribute__((visibility("default"))) inline void QImage::setPixel(const QPoint &pt, uint index_or_rgb) { setPixel(pt.x(), pt.y(), index_or_rgb); }
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QImage &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QImage &);
+
+
+
+
+
+
+
+
+
+
+# 1 "../../include/QtGui/qimage.h" 2
+# 52 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qbrush.h" 2
+# 1 "../../include/QtGui/qpixmap.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qpixmap.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qpixmap.h"
+#define QPIXMAP_H
+
+# 1 "../../include/QtGui/qpaintdevice.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qpixmap.h" 2
+# 1 "../../include/QtGui/qcolor.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qpixmap.h" 2
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qpixmap.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 49 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qpixmap.h" 2
+# 1 "../../include/QtGui/qimage.h" 1
+# 50 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qpixmap.h" 2
+# 1 "../../include/QtGui/qtransform.h" 1
+# 51 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qpixmap.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QImageWriter;
+class QColor;
+class QVariant;
+class QX11Info;
+
+class QPixmapData;
+
+class __attribute__((visibility("default"))) QPixmap : public QPaintDevice
+{
+public:
+ QPixmap();
+ explicit QPixmap(QPixmapData *data);
+ QPixmap(int w, int h);
+ QPixmap(const QSize &);
+ QPixmap(const QString& fileName, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor);
+
+ QPixmap(const char * const xpm[]);
+
+ QPixmap(const QPixmap &);
+ ~QPixmap();
+
+ QPixmap &operator=(const QPixmap &);
+ operator QVariant() const;
+
+ bool isNull() const;
+ int devType() const;
+
+ int width() const;
+ int height() const;
+ QSize size() const;
+ QRect rect() const;
+ int depth() const;
+
+ static int defaultDepth();
+
+ void fill(const QColor &fillColor = Qt::white);
+ void fill(const QWidget *widget, const QPoint &ofs);
+ inline void fill(const QWidget *widget, int xofs, int yofs) { fill(widget, QPoint(xofs, yofs)); }
+
+ QBitmap mask() const;
+ void setMask(const QBitmap &);
+
+ QPixmap alphaChannel() const;
+ void setAlphaChannel(const QPixmap &);
+
+ bool hasAlpha() const;
+ bool hasAlphaChannel() const;
+
+
+ QBitmap createHeuristicMask(bool clipTight = true) const;
+
+ QBitmap createMaskFromColor(const QColor &maskColor) const;
+ QBitmap createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode) const;
+
+ static QPixmap grabWindow(WId, int x=0, int y=0, int w=-1, int h=-1);
+ static QPixmap grabWidget(QWidget *widget, const QRect &rect);
+ static inline QPixmap grabWidget(QWidget *widget, int x=0, int y=0, int w=-1, int h=-1)
+ { return grabWidget(widget, QRect(x, y, w, h)); }
+
+
+ inline QPixmap scaled(int w, int h, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio,
+ Qt::TransformationMode mode = Qt::FastTransformation) const
+ { return scaled(QSize(w, h), aspectMode, mode); }
+ QPixmap scaled(const QSize &s, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio,
+ Qt::TransformationMode mode = Qt::FastTransformation) const;
+ QPixmap scaledToWidth(int w, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ QPixmap scaledToHeight(int h, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ QPixmap transformed(const QMatrix &, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ static QMatrix trueMatrix(const QMatrix &m, int w, int h);
+ QPixmap transformed(const QTransform &, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ static QTransform trueMatrix(const QTransform &m, int w, int h);
+
+ QImage toImage() const;
+ static QPixmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor);
+
+ bool load(const QString& fileName, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor);
+ bool loadFromData(const uchar *buf, uint len, const char* format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor);
+ inline bool loadFromData(const QByteArray &data, const char* format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor);
+ bool save(const QString& fileName, const char* format = 0, int quality = -1) const;
+ bool save(QIODevice* device, const char* format = 0, int quality = -1) const;
+# 155 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qpixmap.h"
+ inline QPixmap copy(int x, int y, int width, int height) const;
+ QPixmap copy(const QRect &rect = QRect()) const;
+
+ int serialNumber() const;
+ qint64 cacheKey() const;
+
+ bool isDetached() const;
+ void detach();
+
+ bool isQBitmap() const;
+
+
+ const uchar *qwsBits() const;
+ int qwsBytesPerLine() const;
+ QRgb *clut() const;
+ int numCols() const;
+# 186 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qpixmap.h"
+ Qt::HANDLE handle() const;
+
+
+ QPaintEngine *paintEngine() const;
+
+ inline bool operator!() const { return isNull(); }
+
+protected:
+ int metric(PaintDeviceMetric) const;
+# 218 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qpixmap.h"
+private:
+ QPixmapData *data;
+
+ bool doImageIO(QImageWriter *io, int quality) const;
+
+
+ enum Type { PixmapType, BitmapType };
+ QPixmap(const QSize &s, Type);
+ void init(int, int, Type = PixmapType);
+
+ QPixmap(const QSize &s, int type);
+ void init(int, int, int);
+ void deref();
+
+
+
+
+
+
+
+
+
+
+
+ friend class QPixmapData;
+ friend class QX11PixmapData;
+ friend class QMacPixmapData;
+ friend class QBitmap;
+ friend class QPaintDevice;
+ friend class QPainter;
+ friend class QGLWidget;
+ friend class QX11PaintEngine;
+ friend class QCoreGraphicsPaintEngine;
+ friend class QWidgetPrivate;
+ friend class QRasterPaintEngine;
+ friend class QRasterBuffer;
+ friend class QDirect3DPaintEngine;
+ friend class QDirect3DPaintEnginePrivate;
+ friend class QDetachedPixmap;
+
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPixmap &);
+
+ friend __attribute__((visibility("default"))) qint64 qt_pixmap_id(const QPixmap &pixmap);
+
+public:
+ QPixmapData* pixmapData() const;
+
+public:
+ typedef QPixmapData * DataPtr;
+ inline DataPtr &data_ptr() { return data; }
+};
+
+template <> inline bool qIsDetached<QPixmap>(QPixmap &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QPixmap>(QPixmap &value1, QPixmap &value2) { const QPixmap::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+
+inline QPixmap QPixmap::copy(int ax, int ay, int awidth, int aheight) const
+{
+ return copy(QRect(ax, ay, awidth, aheight));
+}
+
+inline bool QPixmap::loadFromData(const QByteArray &buf, const char *format,
+ Qt::ImageConversionFlags flags)
+{
+ return loadFromData(reinterpret_cast<const uchar *>(buf.constData()), buf.size(), format, flags);
+}
+
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPixmap &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPixmap &);
+# 300 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qpixmap.h"
+
+
+
+# 1 "../../include/QtGui/qpixmap.h" 2
+# 53 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qbrush.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+struct QBrushData;
+class QPixmap;
+class QGradient;
+class QVariant;
+
+class __attribute__((visibility("default"))) QBrush
+{
+public:
+ QBrush();
+ QBrush(Qt::BrushStyle bs);
+ QBrush(const QColor &color, Qt::BrushStyle bs=Qt::SolidPattern);
+ QBrush(Qt::GlobalColor color, Qt::BrushStyle bs=Qt::SolidPattern);
+
+ QBrush(const QColor &color, const QPixmap &pixmap);
+ QBrush(Qt::GlobalColor color, const QPixmap &pixmap);
+ QBrush(const QPixmap &pixmap);
+ QBrush(const QImage &image);
+
+ QBrush(const QBrush &brush);
+
+ QBrush(const QGradient &gradient);
+
+ ~QBrush();
+ QBrush &operator=(const QBrush &brush);
+ operator QVariant() const;
+
+ inline Qt::BrushStyle style() const;
+ void setStyle(Qt::BrushStyle);
+
+ inline const QMatrix &matrix() const;
+ void setMatrix(const QMatrix &mat);
+
+ inline QTransform transform() const;
+ void setTransform(const QTransform &);
+
+ QPixmap texture() const;
+ void setTexture(const QPixmap &pixmap);
+
+ QImage textureImage() const;
+ void setTextureImage(const QImage &image);
+
+ inline const QColor &color() const;
+ void setColor(const QColor &color);
+ inline void setColor(Qt::GlobalColor color);
+
+ const QGradient *gradient() const;
+
+ bool isOpaque() const;
+
+ bool operator==(const QBrush &b) const;
+ inline bool operator!=(const QBrush &b) const { return !(operator==(b)); }
+
+
+
+
+
+
+
+private:
+
+
+
+ friend class QRasterPaintEngine;
+ friend class QRasterPaintEnginePrivate;
+ friend struct QSpanData;
+ friend class QPainter;
+ friend bool qHasPixmapTexture(const QBrush& brush);
+ void detach(Qt::BrushStyle newStyle);
+ void init(const QColor &color, Qt::BrushStyle bs);
+ QBrushData *d;
+ void cleanUp(QBrushData *x);
+
+public:
+ inline bool isDetached() const;
+ typedef QBrushData * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+
+inline void QBrush::setColor(Qt::GlobalColor acolor)
+{ setColor(QColor(acolor)); }
+
+template <> class QTypeInfo<QBrush> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QBrush)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QBrush"; } };
+template <> inline bool qIsDetached<QBrush>(QBrush &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QBrush>(QBrush &value1, QBrush &value2) { const QBrush::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+
+
+
+
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QBrush &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QBrush &);
+
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QBrush &);
+
+
+struct QBrushData
+{
+ QAtomicInt ref;
+ Qt::BrushStyle style;
+ QColor color;
+ QTransform transform;
+};
+
+inline Qt::BrushStyle QBrush::style() const { return d->style; }
+inline const QColor &QBrush::color() const { return d->color; }
+inline const QMatrix &QBrush::matrix() const { return d->transform.toAffine(); }
+inline QTransform QBrush::transform() const { return d->transform; }
+inline bool QBrush::isDetached() const { return d->ref == 1; }
+# 179 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qbrush.h"
+class QGradientPrivate;
+
+typedef QPair<qreal, QColor> QGradientStop;
+typedef QVector<QGradientStop> QGradientStops;
+
+class __attribute__((visibility("default"))) QGradient
+{
+ public: static const QMetaObject staticMetaObject; private:
+
+public:
+ enum Type {
+ LinearGradient,
+ RadialGradient,
+ ConicalGradient,
+ NoGradient
+ };
+
+ enum Spread {
+ PadSpread,
+ ReflectSpread,
+ RepeatSpread
+ };
+
+ enum CoordinateMode {
+ LogicalMode,
+ StretchToDeviceMode,
+ ObjectBoundingMode
+ };
+
+ enum InterpolationMode {
+ ColorInterpolation,
+ ComponentInterpolation
+ };
+
+ QGradient();
+
+ Type type() const { return m_type; }
+
+ inline void setSpread(Spread spread);
+ Spread spread() const { return m_spread; }
+
+ void setColorAt(qreal pos, const QColor &color);
+
+ void setStops(const QGradientStops &stops);
+ QGradientStops stops() const;
+
+ CoordinateMode coordinateMode() const;
+ void setCoordinateMode(CoordinateMode mode);
+
+ InterpolationMode interpolationMode() const;
+ void setInterpolationMode(InterpolationMode mode);
+
+ bool operator==(const QGradient &gradient) const;
+ inline bool operator!=(const QGradient &other) const
+ { return !operator==(other); }
+
+ bool operator==(const QGradient &gradient);
+
+private:
+ friend class QLinearGradient;
+ friend class QRadialGradient;
+ friend class QConicalGradient;
+
+ Type m_type;
+ Spread m_spread;
+ QGradientStops m_stops;
+ union {
+ struct {
+ qreal x1, y1, x2, y2;
+ } linear;
+ struct {
+ qreal cx, cy, fx, fy, radius;
+ } radial;
+ struct {
+ qreal cx, cy, angle;
+ } conical;
+ } m_data;
+ void *dummy;
+};
+
+inline void QGradient::setSpread(Spread aspread)
+{ m_spread = aspread; }
+
+class __attribute__((visibility("default"))) QLinearGradient : public QGradient
+{
+public:
+ QLinearGradient();
+ QLinearGradient(const QPointF &start, const QPointF &finalStop);
+ QLinearGradient(qreal xStart, qreal yStart, qreal xFinalStop, qreal yFinalStop);
+
+ QPointF start() const;
+ void setStart(const QPointF &start);
+ inline void setStart(qreal x, qreal y) { setStart(QPointF(x, y)); }
+
+ QPointF finalStop() const;
+ void setFinalStop(const QPointF &stop);
+ inline void setFinalStop(qreal x, qreal y) { setFinalStop(QPointF(x, y)); }
+};
+
+
+class __attribute__((visibility("default"))) QRadialGradient : public QGradient
+{
+public:
+ QRadialGradient();
+ QRadialGradient(const QPointF ¢er, qreal radius, const QPointF &focalPoint);
+ QRadialGradient(qreal cx, qreal cy, qreal radius, qreal fx, qreal fy);
+
+ QRadialGradient(const QPointF ¢er, qreal radius);
+ QRadialGradient(qreal cx, qreal cy, qreal radius);
+
+ QPointF center() const;
+ void setCenter(const QPointF ¢er);
+ inline void setCenter(qreal x, qreal y) { setCenter(QPointF(x, y)); }
+
+ QPointF focalPoint() const;
+ void setFocalPoint(const QPointF &focalPoint);
+ inline void setFocalPoint(qreal x, qreal y) { setFocalPoint(QPointF(x, y)); }
+
+ qreal radius() const;
+ void setRadius(qreal radius);
+};
+
+
+class __attribute__((visibility("default"))) QConicalGradient : public QGradient
+{
+public:
+ QConicalGradient();
+ QConicalGradient(const QPointF ¢er, qreal startAngle);
+ QConicalGradient(qreal cx, qreal cy, qreal startAngle);
+
+ QPointF center() const;
+ void setCenter(const QPointF ¢er);
+ inline void setCenter(qreal x, qreal y) { setCenter(QPointF(x, y)); }
+
+ qreal angle() const;
+ void setAngle(qreal angle);
+};
+
+
+
+
+# 1 "../../include/QtGui/qbrush.h" 2
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpen.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QVariant;
+class QPenPrivate;
+class QBrush;
+class QPen;
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPen &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPen &);
+
+
+class __attribute__((visibility("default"))) QPen
+{
+public:
+ QPen();
+ QPen(Qt::PenStyle);
+ QPen(const QColor &color);
+ QPen(const QBrush &brush, qreal width, Qt::PenStyle s = Qt::SolidLine,
+ Qt::PenCapStyle c = Qt::SquareCap, Qt::PenJoinStyle j = Qt::BevelJoin);
+ QPen(const QPen &pen);
+
+ ~QPen();
+
+ QPen &operator=(const QPen &pen);
+
+ Qt::PenStyle style() const;
+ void setStyle(Qt::PenStyle);
+
+ QVector<qreal> dashPattern() const;
+ void setDashPattern(const QVector<qreal> &pattern);
+
+ qreal dashOffset() const;
+ void setDashOffset(qreal doffset);
+
+ qreal miterLimit() const;
+ void setMiterLimit(qreal limit);
+
+ qreal widthF() const;
+ void setWidthF(qreal width);
+
+ int width() const;
+ void setWidth(int width);
+
+ QColor color() const;
+ void setColor(const QColor &color);
+
+ QBrush brush() const;
+ void setBrush(const QBrush &brush);
+
+ bool isSolid() const;
+
+ Qt::PenCapStyle capStyle() const;
+ void setCapStyle(Qt::PenCapStyle pcs);
+
+ Qt::PenJoinStyle joinStyle() const;
+ void setJoinStyle(Qt::PenJoinStyle pcs);
+
+ bool isCosmetic() const;
+ void setCosmetic(bool cosmetic);
+
+ bool operator==(const QPen &p) const;
+ inline bool operator!=(const QPen &p) const { return !(operator==(p)); }
+ operator QVariant() const;
+
+ bool isDetached();
+private:
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPen &);
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPen &);
+
+ void detach();
+ class QPenPrivate *d;
+
+public:
+ typedef QPenPrivate * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+template <> class QTypeInfo<QPen> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QPen)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QPen"; } };
+template <> inline bool qIsDetached<QPen>(QPen &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QPen>(QPen &value1, QPen &value2) { const QPen::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QPen &);
+
+
+
+
+
+# 1 "../../include/QtGui/qpen.h" 2
+# 51 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat.h" 2
+# 1 "../../include/QtGui/qbrush.h" 1
+# 52 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat.h" 2
+# 1 "../../include/QtGui/qtextoption.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextoption.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextoption.h"
+#define QTEXTOPTION_H
+
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextoption.h" 2
+# 1 "../../include/QtCore/qchar.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextoption.h" 2
+# 1 "../../include/QtCore/qmetatype.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextoption.h" 2
+
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+template <typename T> class QList;
+struct QTextOptionPrivate;
+
+class __attribute__((visibility("default"))) QTextOption
+{
+public:
+ enum TabType {
+ LeftTab,
+ RightTab,
+ CenterTab,
+ DelimiterTab
+ };
+
+ struct __attribute__((visibility("default"))) Tab {
+ inline Tab() : position(80), type(QTextOption::LeftTab) { }
+
+ inline bool operator==(const Tab &other) const {
+ return type == other.type
+ && qFuzzyCompare(position, other.position)
+ && delimiter == other.delimiter;
+ }
+
+ inline bool operator!=(const Tab &other) const {
+ return !operator==(other);
+ }
+
+ qreal position;
+ TabType type;
+ QChar delimiter;
+ };
+
+ QTextOption();
+ QTextOption(Qt::Alignment alignment);
+ ~QTextOption();
+
+ QTextOption(const QTextOption &o);
+ QTextOption &operator=(const QTextOption &o);
+
+ inline void setAlignment(Qt::Alignment alignment);
+ inline Qt::Alignment alignment() const { return Qt::Alignment(align); }
+
+ inline void setTextDirection(Qt::LayoutDirection aDirection) { this->direction = aDirection; }
+ inline Qt::LayoutDirection textDirection() const { return Qt::LayoutDirection(direction); }
+
+ enum WrapMode {
+ NoWrap,
+ WordWrap,
+ ManualWrap,
+ WrapAnywhere,
+ WrapAtWordBoundaryOrAnywhere
+ };
+ inline void setWrapMode(WrapMode wrap) { wordWrap = wrap; }
+ inline WrapMode wrapMode() const { return static_cast<WrapMode>(wordWrap); }
+
+ enum Flag {
+ ShowTabsAndSpaces = 0x1,
+ ShowLineAndParagraphSeparators = 0x2,
+ AddSpaceForLineAndParagraphSeparators = 0x4,
+ SuppressColors = 0x8,
+ IncludeTrailingSpaces = 0x80000000
+ };
+ typedef QFlags<Flag> Flags;
+ inline void setFlags(Flags flags);
+ inline Flags flags() const { return Flags(f); }
+
+ inline void setTabStop(qreal tabStop);
+ inline qreal tabStop() const { return tab; }
+
+ void setTabArray(QList<qreal> tabStops);
+ QList<qreal> tabArray() const;
+
+ void setTabs(QList<Tab> tabStops);
+ QList<Tab> tabs() const;
+
+ void setUseDesignMetrics(bool b) { design = b; }
+ bool useDesignMetrics() const { return design; }
+
+private:
+ uint align : 8;
+ uint wordWrap : 4;
+ uint design : 1;
+ uint direction : 1;
+ uint unused : 19;
+ uint f;
+ qreal tab;
+ QTextOptionPrivate *d;
+};
+
+inline QFlags<QTextOption::Flags::enum_type> operator|(QTextOption::Flags::enum_type f1, QTextOption::Flags::enum_type f2) { return QFlags<QTextOption::Flags::enum_type>(f1) | f2; } inline QFlags<QTextOption::Flags::enum_type> operator|(QTextOption::Flags::enum_type f1, QFlags<QTextOption::Flags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QTextOption::Flags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+
+inline void QTextOption::setAlignment(Qt::Alignment aalignment)
+{ align = aalignment; }
+
+inline void QTextOption::setFlags(Flags aflags)
+{ f = aflags; }
+
+inline void QTextOption::setTabStop(qreal atabStop)
+{ tab = atabStop; }
+
+
+
+ template <> struct QMetaTypeId< QTextOption::Tab > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { (0) }; if (!metatype_id) metatype_id = qRegisterMetaType< QTextOption::Tab >("QTextOption::Tab"); return metatype_id; } };
+
+
+# 1 "../../include/QtGui/qtextoption.h" 2
+# 53 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QString;
+class QVariant;
+class QFont;
+
+class QTextFormatCollection;
+class QTextFormatPrivate;
+class QTextBlockFormat;
+class QTextCharFormat;
+class QTextListFormat;
+class QTextTableFormat;
+class QTextFrameFormat;
+class QTextImageFormat;
+class QTextTableCellFormat;
+class QTextFormat;
+class QTextObject;
+class QTextCursor;
+class QTextDocument;
+class QTextLength;
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QTextLength &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QTextLength &);
+
+class __attribute__((visibility("default"))) QTextLength
+{
+public:
+ enum Type { VariableLength = 0, FixedLength, PercentageLength };
+
+ inline QTextLength() : lengthType(VariableLength), fixedValueOrPercentage(0) {}
+
+ inline explicit QTextLength(Type type, qreal value);
+
+ inline Type type() const { return lengthType; }
+ inline qreal value(qreal maximumLength) const
+ {
+ switch (lengthType) {
+ case FixedLength: return fixedValueOrPercentage;
+ case VariableLength: return maximumLength;
+ case PercentageLength: return fixedValueOrPercentage * maximumLength / qreal(100);
+ }
+ return -1;
+ }
+
+ inline qreal rawValue() const { return fixedValueOrPercentage; }
+
+ inline bool operator==(const QTextLength &other) const
+ { return lengthType == other.lengthType
+ && qFuzzyCompare(fixedValueOrPercentage, other.fixedValueOrPercentage); }
+ inline bool operator!=(const QTextLength &other) const
+ { return lengthType != other.lengthType
+ || !qFuzzyCompare(fixedValueOrPercentage, other.fixedValueOrPercentage); }
+ operator QVariant() const;
+
+private:
+ Type lengthType;
+ qreal fixedValueOrPercentage;
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QTextLength &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QTextLength &);
+};
+
+inline QTextLength::QTextLength(Type atype, qreal avalue)
+ : lengthType(atype), fixedValueOrPercentage(avalue) {}
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QTextFormat &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QTextFormat &);
+
+class __attribute__((visibility("default"))) QTextFormat
+{
+ public: static const QMetaObject staticMetaObject; private:
+
+public:
+ enum FormatType {
+ InvalidFormat = -1,
+ BlockFormat = 1,
+ CharFormat = 2,
+ ListFormat = 3,
+ TableFormat = 4,
+ FrameFormat = 5,
+
+ UserFormat = 100
+ };
+
+ enum Property {
+ ObjectIndex = 0x0,
+
+
+ CssFloat = 0x0800,
+ LayoutDirection = 0x0801,
+
+ OutlinePen = 0x810,
+ BackgroundBrush = 0x820,
+ ForegroundBrush = 0x821,
+
+ BackgroundImageUrl = 0x823,
+
+
+ BlockAlignment = 0x1010,
+ BlockTopMargin = 0x1030,
+ BlockBottomMargin = 0x1031,
+ BlockLeftMargin = 0x1032,
+ BlockRightMargin = 0x1033,
+ TextIndent = 0x1034,
+ TabPositions = 0x1035,
+ BlockIndent = 0x1040,
+ BlockNonBreakableLines = 0x1050,
+ BlockTrailingHorizontalRulerWidth = 0x1060,
+
+
+ FirstFontProperty = 0x1FE0,
+ FontCapitalization = FirstFontProperty,
+ FontLetterSpacing = 0x1FE1,
+ FontWordSpacing = 0x1FE2,
+ FontStyleHint = 0x1FE3,
+ FontStyleStrategy = 0x1FE4,
+ FontKerning = 0x1FE5,
+ FontFamily = 0x2000,
+ FontPointSize = 0x2001,
+ FontSizeAdjustment = 0x2002,
+ FontSizeIncrement = FontSizeAdjustment,
+ FontWeight = 0x2003,
+ FontItalic = 0x2004,
+ FontUnderline = 0x2005,
+ FontOverline = 0x2006,
+ FontStrikeOut = 0x2007,
+ FontFixedPitch = 0x2008,
+ FontPixelSize = 0x2009,
+ LastFontProperty = FontPixelSize,
+
+ TextUnderlineColor = 0x2010,
+ TextVerticalAlignment = 0x2021,
+ TextOutline = 0x2022,
+ TextUnderlineStyle = 0x2023,
+ TextToolTip = 0x2024,
+
+ IsAnchor = 0x2030,
+ AnchorHref = 0x2031,
+ AnchorName = 0x2032,
+ ObjectType = 0x2f00,
+
+
+ ListStyle = 0x3000,
+ ListIndent = 0x3001,
+
+
+ FrameBorder = 0x4000,
+ FrameMargin = 0x4001,
+ FramePadding = 0x4002,
+ FrameWidth = 0x4003,
+ FrameHeight = 0x4004,
+ FrameTopMargin = 0x4005,
+ FrameBottomMargin = 0x4006,
+ FrameLeftMargin = 0x4007,
+ FrameRightMargin = 0x4008,
+ FrameBorderBrush = 0x4009,
+ FrameBorderStyle = 0x4010,
+
+ TableColumns = 0x4100,
+ TableColumnWidthConstraints = 0x4101,
+ TableCellSpacing = 0x4102,
+ TableCellPadding = 0x4103,
+ TableHeaderRowCount = 0x4104,
+
+
+ TableCellRowSpan = 0x4810,
+ TableCellColumnSpan = 0x4811,
+
+ TableCellTopPadding = 0x4812,
+ TableCellBottomPadding = 0x4813,
+ TableCellLeftPadding = 0x4814,
+ TableCellRightPadding = 0x4815,
+
+
+ ImageName = 0x5000,
+ ImageWidth = 0x5010,
+ ImageHeight = 0x5011,
+
+
+ FullWidthSelection = 0x06000,
+
+
+ PageBreakPolicy = 0x7000,
+
+
+ UserProperty = 0x100000
+ };
+
+ enum ObjectTypes {
+ NoObject,
+ ImageObject,
+ TableObject,
+ TableCellObject,
+
+ UserObject = 0x1000
+ };
+
+ enum PageBreakFlag {
+ PageBreak_Auto = 0,
+ PageBreak_AlwaysBefore = 0x001,
+ PageBreak_AlwaysAfter = 0x010
+
+ };
+ typedef QFlags<PageBreakFlag> PageBreakFlags;
+
+ QTextFormat();
+
+ explicit QTextFormat(int type);
+
+ QTextFormat(const QTextFormat &rhs);
+ QTextFormat &operator=(const QTextFormat &rhs);
+ ~QTextFormat();
+
+ void merge(const QTextFormat &other);
+
+ inline bool isValid() const { return type() != InvalidFormat; }
+
+ int type() const;
+
+ int objectIndex() const;
+ void setObjectIndex(int object);
+
+ QVariant property(int propertyId) const;
+ void setProperty(int propertyId, const QVariant &value);
+ void clearProperty(int propertyId);
+ bool hasProperty(int propertyId) const;
+
+ bool boolProperty(int propertyId) const;
+ int intProperty(int propertyId) const;
+ qreal doubleProperty(int propertyId) const;
+ QString stringProperty(int propertyId) const;
+ QColor colorProperty(int propertyId) const;
+ QPen penProperty(int propertyId) const;
+ QBrush brushProperty(int propertyId) const;
+ QTextLength lengthProperty(int propertyId) const;
+ QVector<QTextLength> lengthVectorProperty(int propertyId) const;
+
+ void setProperty(int propertyId, const QVector<QTextLength> &lengths);
+
+ QMap<int, QVariant> properties() const;
+ int propertyCount() const;
+
+ inline void setObjectType(int type);
+ inline int objectType() const
+ { return intProperty(ObjectType); }
+
+ inline bool isCharFormat() const { return type() == CharFormat; }
+ inline bool isBlockFormat() const { return type() == BlockFormat; }
+ inline bool isListFormat() const { return type() == ListFormat; }
+ inline bool isFrameFormat() const { return type() == FrameFormat; }
+ inline bool isImageFormat() const { return type() == CharFormat && objectType() == ImageObject; }
+ inline bool isTableFormat() const { return type() == FrameFormat && objectType() == TableObject; }
+ inline bool isTableCellFormat() const { return type() == CharFormat && objectType() == TableCellObject; }
+
+ QTextBlockFormat toBlockFormat() const;
+ QTextCharFormat toCharFormat() const;
+ QTextListFormat toListFormat() const;
+ QTextTableFormat toTableFormat() const;
+ QTextFrameFormat toFrameFormat() const;
+ QTextImageFormat toImageFormat() const;
+ QTextTableCellFormat toTableCellFormat() const;
+
+ bool operator==(const QTextFormat &rhs) const;
+ inline bool operator!=(const QTextFormat &rhs) const { return !operator==(rhs); }
+ operator QVariant() const;
+
+ inline void setLayoutDirection(Qt::LayoutDirection direction)
+ { setProperty(QTextFormat::LayoutDirection, direction); }
+ inline Qt::LayoutDirection layoutDirection() const
+ { return Qt::LayoutDirection(intProperty(QTextFormat::LayoutDirection)); }
+
+ inline void setBackground(const QBrush &brush)
+ { setProperty(BackgroundBrush, brush); }
+ inline QBrush background() const
+ { return brushProperty(BackgroundBrush); }
+ inline void clearBackground()
+ { clearProperty(BackgroundBrush); }
+
+ inline void setForeground(const QBrush &brush)
+ { setProperty(ForegroundBrush, brush); }
+ inline QBrush foreground() const
+ { return brushProperty(ForegroundBrush); }
+ inline void clearForeground()
+ { clearProperty(ForegroundBrush); }
+
+private:
+ QSharedDataPointer<QTextFormatPrivate> d;
+ qint32 format_type;
+
+ friend class QTextFormatCollection;
+ friend class QTextCharFormat;
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QTextFormat &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QTextFormat &);
+};
+
+inline void QTextFormat::setObjectType(int atype)
+{ setProperty(ObjectType, atype); }
+
+inline QFlags<QTextFormat::PageBreakFlags::enum_type> operator|(QTextFormat::PageBreakFlags::enum_type f1, QTextFormat::PageBreakFlags::enum_type f2) { return QFlags<QTextFormat::PageBreakFlags::enum_type>(f1) | f2; } inline QFlags<QTextFormat::PageBreakFlags::enum_type> operator|(QTextFormat::PageBreakFlags::enum_type f1, QFlags<QTextFormat::PageBreakFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QTextFormat::PageBreakFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+
+class __attribute__((visibility("default"))) QTextCharFormat : public QTextFormat
+{
+public:
+ enum VerticalAlignment {
+ AlignNormal = 0,
+ AlignSuperScript,
+ AlignSubScript,
+ AlignMiddle,
+ AlignTop,
+ AlignBottom
+ };
+ enum UnderlineStyle {
+ NoUnderline,
+ SingleUnderline,
+ DashUnderline,
+ DotLine,
+ DashDotLine,
+ DashDotDotLine,
+ WaveUnderline,
+ SpellCheckUnderline
+ };
+
+ QTextCharFormat();
+
+ bool isValid() const { return isCharFormat(); }
+ void setFont(const QFont &font);
+ QFont font() const;
+
+ inline void setFontFamily(const QString &family)
+ { setProperty(FontFamily, family); }
+ inline QString fontFamily() const
+ { return stringProperty(FontFamily); }
+
+ inline void setFontPointSize(qreal size)
+ { setProperty(FontPointSize, size); }
+ inline qreal fontPointSize() const
+ { return doubleProperty(FontPointSize); }
+
+ inline void setFontWeight(int weight)
+ { if (weight == QFont::Normal) weight = 0; setProperty(FontWeight, weight); }
+ inline int fontWeight() const
+ { int weight = intProperty(FontWeight); if (weight == 0) weight = QFont::Normal; return weight; }
+ inline void setFontItalic(bool italic)
+ { setProperty(FontItalic, italic); }
+ inline bool fontItalic() const
+ { return boolProperty(FontItalic); }
+ inline void setFontCapitalization(QFont::Capitalization capitalization)
+ { setProperty(FontCapitalization, capitalization); }
+ inline QFont::Capitalization fontCapitalization() const
+ { return static_cast<QFont::Capitalization>(intProperty(FontCapitalization)); }
+ inline void setFontLetterSpacing(qreal spacing)
+ { setProperty(FontLetterSpacing, spacing); }
+ inline qreal fontLetterSpacing() const
+ { return doubleProperty(FontLetterSpacing); }
+ inline void setFontWordSpacing(qreal spacing)
+ { setProperty(FontWordSpacing, spacing); }
+ inline qreal fontWordSpacing() const
+ { return doubleProperty(FontWordSpacing); }
+
+ inline void setFontUnderline(bool underline)
+ { setProperty(TextUnderlineStyle, underline ? SingleUnderline : NoUnderline); }
+ bool fontUnderline() const;
+
+ inline void setFontOverline(bool overline)
+ { setProperty(FontOverline, overline); }
+ inline bool fontOverline() const
+ { return boolProperty(FontOverline); }
+
+ inline void setFontStrikeOut(bool strikeOut)
+ { setProperty(FontStrikeOut, strikeOut); }
+ inline bool fontStrikeOut() const
+ { return boolProperty(FontStrikeOut); }
+
+ inline void setUnderlineColor(const QColor &color)
+ { setProperty(TextUnderlineColor, color); }
+ inline QColor underlineColor() const
+ { return colorProperty(TextUnderlineColor); }
+
+ inline void setFontFixedPitch(bool fixedPitch)
+ { setProperty(FontFixedPitch, fixedPitch); }
+ inline bool fontFixedPitch() const
+ { return boolProperty(FontFixedPitch); }
+
+ inline void setFontStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = QFont::PreferDefault)
+ { setProperty(FontStyleHint, hint); setProperty(FontStyleStrategy, strategy); }
+ inline void setFontStyleStrategy(QFont::StyleStrategy strategy)
+ { setProperty(FontStyleStrategy, strategy); }
+ QFont::StyleHint fontStyleHint() const
+ { return static_cast<QFont::StyleHint>(intProperty(FontStyleHint)); }
+ QFont::StyleStrategy fontStyleStrategy() const
+ { return static_cast<QFont::StyleStrategy>(intProperty(FontStyleStrategy)); }
+
+ inline void setFontKerning(bool enable)
+ { setProperty(FontKerning, enable); }
+ inline bool fontKerning() const
+ { return boolProperty(FontKerning); }
+
+ void setUnderlineStyle(UnderlineStyle style);
+ inline UnderlineStyle underlineStyle() const
+ { return static_cast<UnderlineStyle>(intProperty(TextUnderlineStyle)); }
+
+ inline void setVerticalAlignment(VerticalAlignment alignment)
+ { setProperty(TextVerticalAlignment, alignment); }
+ inline VerticalAlignment verticalAlignment() const
+ { return static_cast<VerticalAlignment>(intProperty(TextVerticalAlignment)); }
+
+ inline void setTextOutline(const QPen &pen)
+ { setProperty(TextOutline, pen); }
+ inline QPen textOutline() const
+ { return penProperty(TextOutline); }
+
+ inline void setToolTip(const QString &tip)
+ { setProperty(TextToolTip, tip); }
+ inline QString toolTip() const
+ { return stringProperty(TextToolTip); }
+
+ inline void setAnchor(bool anchor)
+ { setProperty(IsAnchor, anchor); }
+ inline bool isAnchor() const
+ { return boolProperty(IsAnchor); }
+
+ inline void setAnchorHref(const QString &value)
+ { setProperty(AnchorHref, value); }
+ inline QString anchorHref() const
+ { return stringProperty(AnchorHref); }
+
+ inline void setAnchorName(const QString &name)
+ { setAnchorNames(QStringList(name)); }
+ QString anchorName() const;
+
+ inline void setAnchorNames(const QStringList &names)
+ { setProperty(AnchorName, names); }
+ QStringList anchorNames() const;
+
+ inline void setTableCellRowSpan(int tableCellRowSpan);
+ inline int tableCellRowSpan() const
+ { int s = intProperty(TableCellRowSpan); if (s == 0) s = 1; return s; }
+ inline void setTableCellColumnSpan(int tableCellColumnSpan);
+ inline int tableCellColumnSpan() const
+ { int s = intProperty(TableCellColumnSpan); if (s == 0) s = 1; return s; }
+
+protected:
+ explicit QTextCharFormat(const QTextFormat &fmt);
+ friend class QTextFormat;
+};
+
+inline void QTextCharFormat::setTableCellRowSpan(int _tableCellRowSpan)
+{
+ if (_tableCellRowSpan <= 1)
+ clearProperty(TableCellRowSpan);
+ else
+ setProperty(TableCellRowSpan, _tableCellRowSpan);
+}
+
+inline void QTextCharFormat::setTableCellColumnSpan(int _tableCellColumnSpan)
+{
+ if (_tableCellColumnSpan <= 1)
+ clearProperty(TableCellColumnSpan);
+ else
+ setProperty(TableCellColumnSpan, _tableCellColumnSpan);
+}
+
+class __attribute__((visibility("default"))) QTextBlockFormat : public QTextFormat
+{
+public:
+ QTextBlockFormat();
+
+ bool isValid() const { return isBlockFormat(); }
+
+ inline void setAlignment(Qt::Alignment alignment);
+ inline Qt::Alignment alignment() const
+ { int a = intProperty(BlockAlignment); if (a == 0) a = Qt::AlignLeft; return QFlag(a); }
+
+ inline void setTopMargin(qreal margin)
+ { setProperty(BlockTopMargin, margin); }
+ inline qreal topMargin() const
+ { return doubleProperty(BlockTopMargin); }
+
+ inline void setBottomMargin(qreal margin)
+ { setProperty(BlockBottomMargin, margin); }
+ inline qreal bottomMargin() const
+ { return doubleProperty(BlockBottomMargin); }
+
+ inline void setLeftMargin(qreal margin)
+ { setProperty(BlockLeftMargin, margin); }
+ inline qreal leftMargin() const
+ { return doubleProperty(BlockLeftMargin); }
+
+ inline void setRightMargin(qreal margin)
+ { setProperty(BlockRightMargin, margin); }
+ inline qreal rightMargin() const
+ { return doubleProperty(BlockRightMargin); }
+
+ inline void setTextIndent(qreal aindent)
+ { setProperty(TextIndent, aindent); }
+ inline qreal textIndent() const
+ { return doubleProperty(TextIndent); }
+
+ inline void setIndent(int indent);
+ inline int indent() const
+ { return intProperty(BlockIndent); }
+
+ inline void setNonBreakableLines(bool b)
+ { setProperty(BlockNonBreakableLines, b); }
+ inline bool nonBreakableLines() const
+ { return boolProperty(BlockNonBreakableLines); }
+
+ inline void setPageBreakPolicy(PageBreakFlags flags)
+ { setProperty(PageBreakPolicy, int(flags)); }
+ inline PageBreakFlags pageBreakPolicy() const
+ { return PageBreakFlags(intProperty(PageBreakPolicy)); }
+
+ void setTabPositions(const QList<QTextOption::Tab> &tabs);
+ QList<QTextOption::Tab> tabPositions() const;
+
+protected:
+ explicit QTextBlockFormat(const QTextFormat &fmt);
+ friend class QTextFormat;
+};
+
+inline void QTextBlockFormat::setAlignment(Qt::Alignment aalignment)
+{ setProperty(BlockAlignment, int(aalignment)); }
+
+inline void QTextBlockFormat::setIndent(int aindent)
+{ setProperty(BlockIndent, aindent); }
+
+class __attribute__((visibility("default"))) QTextListFormat : public QTextFormat
+{
+public:
+ QTextListFormat();
+
+ bool isValid() const { return isListFormat(); }
+
+ enum Style {
+ ListDisc = -1,
+ ListCircle = -2,
+ ListSquare = -3,
+ ListDecimal = -4,
+ ListLowerAlpha = -5,
+ ListUpperAlpha = -6,
+ ListStyleUndefined = 0
+ };
+
+ inline void setStyle(Style style);
+ inline Style style() const
+ { return static_cast<Style>(intProperty(ListStyle)); }
+
+ inline void setIndent(int indent);
+ inline int indent() const
+ { return intProperty(ListIndent); }
+
+protected:
+ explicit QTextListFormat(const QTextFormat &fmt);
+ friend class QTextFormat;
+};
+
+inline void QTextListFormat::setStyle(Style astyle)
+{ setProperty(ListStyle, astyle); }
+
+inline void QTextListFormat::setIndent(int aindent)
+{ setProperty(ListIndent, aindent); }
+
+class __attribute__((visibility("default"))) QTextImageFormat : public QTextCharFormat
+{
+public:
+ QTextImageFormat();
+
+ bool isValid() const { return isImageFormat(); }
+
+ inline void setName(const QString &name);
+ inline QString name() const
+ { return stringProperty(ImageName); }
+
+ inline void setWidth(qreal width);
+ inline qreal width() const
+ { return doubleProperty(ImageWidth); }
+
+ inline void setHeight(qreal height);
+ inline qreal height() const
+ { return doubleProperty(ImageHeight); }
+
+protected:
+ explicit QTextImageFormat(const QTextFormat &format);
+ friend class QTextFormat;
+};
+
+inline void QTextImageFormat::setName(const QString &aname)
+{ setProperty(ImageName, aname); }
+
+inline void QTextImageFormat::setWidth(qreal awidth)
+{ setProperty(ImageWidth, awidth); }
+
+inline void QTextImageFormat::setHeight(qreal aheight)
+{ setProperty(ImageHeight, aheight); }
+
+class __attribute__((visibility("default"))) QTextFrameFormat : public QTextFormat
+{
+public:
+ QTextFrameFormat();
+
+ bool isValid() const { return isFrameFormat(); }
+
+ enum Position {
+ InFlow,
+ FloatLeft,
+ FloatRight
+
+
+ };
+
+ enum BorderStyle {
+ BorderStyle_None,
+ BorderStyle_Dotted,
+ BorderStyle_Dashed,
+ BorderStyle_Solid,
+ BorderStyle_Double,
+ BorderStyle_DotDash,
+ BorderStyle_DotDotDash,
+ BorderStyle_Groove,
+ BorderStyle_Ridge,
+ BorderStyle_Inset,
+ BorderStyle_Outset
+ };
+
+ inline void setPosition(Position f)
+ { setProperty(CssFloat, f); }
+ inline Position position() const
+ { return static_cast<Position>(intProperty(CssFloat)); }
+
+ inline void setBorder(qreal border);
+ inline qreal border() const
+ { return doubleProperty(FrameBorder); }
+
+ inline void setBorderBrush(const QBrush &brush)
+ { setProperty(FrameBorderBrush, brush); }
+ inline QBrush borderBrush() const
+ { return brushProperty(FrameBorderBrush); }
+
+ inline void setBorderStyle(BorderStyle style)
+ { setProperty(FrameBorderStyle, style); }
+ inline BorderStyle borderStyle() const
+ { return static_cast<BorderStyle>(intProperty(FrameBorderStyle)); }
+
+ void setMargin(qreal margin);
+ inline qreal margin() const
+ { return doubleProperty(FrameMargin); }
+
+ inline void setTopMargin(qreal margin);
+ qreal topMargin() const;
+
+ inline void setBottomMargin(qreal margin);
+ qreal bottomMargin() const;
+
+ inline void setLeftMargin(qreal margin);
+ qreal leftMargin() const;
+
+ inline void setRightMargin(qreal margin);
+ qreal rightMargin() const;
+
+ inline void setPadding(qreal padding);
+ inline qreal padding() const
+ { return doubleProperty(FramePadding); }
+
+ inline void setWidth(qreal width);
+ inline void setWidth(const QTextLength &length)
+ { setProperty(FrameWidth, length); }
+ inline QTextLength width() const
+ { return lengthProperty(FrameWidth); }
+
+ inline void setHeight(qreal height);
+ inline void setHeight(const QTextLength &height);
+ inline QTextLength height() const
+ { return lengthProperty(FrameHeight); }
+
+ inline void setPageBreakPolicy(PageBreakFlags flags)
+ { setProperty(PageBreakPolicy, int(flags)); }
+ inline PageBreakFlags pageBreakPolicy() const
+ { return PageBreakFlags(intProperty(PageBreakPolicy)); }
+
+protected:
+ explicit QTextFrameFormat(const QTextFormat &fmt);
+ friend class QTextFormat;
+};
+
+inline void QTextFrameFormat::setBorder(qreal aborder)
+{ setProperty(FrameBorder, aborder); }
+
+inline void QTextFrameFormat::setPadding(qreal apadding)
+{ setProperty(FramePadding, apadding); }
+
+inline void QTextFrameFormat::setWidth(qreal awidth)
+{ setProperty(FrameWidth, QTextLength(QTextLength::FixedLength, awidth)); }
+
+inline void QTextFrameFormat::setHeight(qreal aheight)
+{ setProperty(FrameHeight, QTextLength(QTextLength::FixedLength, aheight)); }
+inline void QTextFrameFormat::setHeight(const QTextLength &aheight)
+{ setProperty(FrameHeight, aheight); }
+
+inline void QTextFrameFormat::setTopMargin(qreal amargin)
+{ setProperty(FrameTopMargin, amargin); }
+
+inline void QTextFrameFormat::setBottomMargin(qreal amargin)
+{ setProperty(FrameBottomMargin, amargin); }
+
+inline void QTextFrameFormat::setLeftMargin(qreal amargin)
+{ setProperty(FrameLeftMargin, amargin); }
+
+inline void QTextFrameFormat::setRightMargin(qreal amargin)
+{ setProperty(FrameRightMargin, amargin); }
+
+class __attribute__((visibility("default"))) QTextTableFormat : public QTextFrameFormat
+{
+public:
+ QTextTableFormat();
+
+ inline bool isValid() const { return isTableFormat(); }
+
+ inline int columns() const
+ { int cols = intProperty(TableColumns); if (cols == 0) cols = 1; return cols; }
+ inline void setColumns(int columns);
+
+ inline void setColumnWidthConstraints(const QVector<QTextLength> &constraints)
+ { setProperty(TableColumnWidthConstraints, constraints); }
+
+ inline QVector<QTextLength> columnWidthConstraints() const
+ { return lengthVectorProperty(TableColumnWidthConstraints); }
+
+ inline void clearColumnWidthConstraints()
+ { clearProperty(TableColumnWidthConstraints); }
+
+ inline qreal cellSpacing() const
+ { return doubleProperty(TableCellSpacing); }
+ inline void setCellSpacing(qreal spacing)
+ { setProperty(TableCellSpacing, spacing); }
+
+ inline qreal cellPadding() const
+ { return doubleProperty(TableCellPadding); }
+ inline void setCellPadding(qreal padding);
+
+ inline void setAlignment(Qt::Alignment alignment);
+ inline Qt::Alignment alignment() const
+ { return QFlag(intProperty(BlockAlignment)); }
+
+ inline void setHeaderRowCount(int count)
+ { setProperty(TableHeaderRowCount, count); }
+ inline int headerRowCount() const
+ { return intProperty(TableHeaderRowCount); }
+
+protected:
+ explicit QTextTableFormat(const QTextFormat &fmt);
+ friend class QTextFormat;
+};
+
+inline void QTextTableFormat::setColumns(int acolumns)
+{
+ if (acolumns == 1)
+ acolumns = 0;
+ setProperty(TableColumns, acolumns);
+}
+
+inline void QTextTableFormat::setCellPadding(qreal apadding)
+{ setProperty(TableCellPadding, apadding); }
+
+inline void QTextTableFormat::setAlignment(Qt::Alignment aalignment)
+{ setProperty(BlockAlignment, int(aalignment)); }
+
+class __attribute__((visibility("default"))) QTextTableCellFormat : public QTextCharFormat
+{
+public:
+ QTextTableCellFormat();
+
+ inline bool isValid() const { return isTableCellFormat(); }
+
+ inline void setTopPadding(qreal padding);
+ inline qreal topPadding() const;
+
+ inline void setBottomPadding(qreal padding);
+ inline qreal bottomPadding() const;
+
+ inline void setLeftPadding(qreal padding);
+ inline qreal leftPadding() const;
+
+ inline void setRightPadding(qreal padding);
+ inline qreal rightPadding() const;
+
+ inline void setPadding(qreal padding);
+
+protected:
+ explicit QTextTableCellFormat(const QTextFormat &fmt);
+ friend class QTextFormat;
+};
+
+inline void QTextTableCellFormat::setTopPadding(qreal padding)
+{
+ setProperty(TableCellTopPadding, padding);
+}
+
+inline qreal QTextTableCellFormat::topPadding() const
+{
+ return doubleProperty(TableCellTopPadding);
+}
+
+inline void QTextTableCellFormat::setBottomPadding(qreal padding)
+{
+ setProperty(TableCellBottomPadding, padding);
+}
+
+inline qreal QTextTableCellFormat::bottomPadding() const
+{
+ return doubleProperty(TableCellBottomPadding);
+}
+
+inline void QTextTableCellFormat::setLeftPadding(qreal padding)
+{
+ setProperty(TableCellLeftPadding, padding);
+}
+
+inline qreal QTextTableCellFormat::leftPadding() const
+{
+ return doubleProperty(TableCellLeftPadding);
+}
+
+inline void QTextTableCellFormat::setRightPadding(qreal padding)
+{
+ setProperty(TableCellRightPadding, padding);
+}
+
+inline qreal QTextTableCellFormat::rightPadding() const
+{
+ return doubleProperty(TableCellRightPadding);
+}
+
+inline void QTextTableCellFormat::setPadding(qreal padding)
+{
+ setTopPadding(padding);
+ setBottomPadding(padding);
+ setLeftPadding(padding);
+ setRightPadding(padding);
+}
+
+
+
+
+
+# 1 "../../include/QtGui/qtextformat.h" 2
+# 52 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextlayout.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QTextEngine;
+class QFont;
+class QRect;
+class QRegion;
+class QTextFormat;
+class QPalette;
+class QPainter;
+
+class __attribute__((visibility("default"))) QTextInlineObject
+{
+public:
+ QTextInlineObject(int i, QTextEngine *e) : itm(i), eng(e) {}
+ inline QTextInlineObject() : itm(0), eng(0) {}
+ inline bool isValid() const { return eng; }
+
+ QRectF rect() const;
+ qreal width() const;
+ qreal ascent() const;
+ qreal descent() const;
+ qreal height() const;
+
+ Qt::LayoutDirection textDirection() const;
+
+ void setWidth(qreal w);
+ void setAscent(qreal a);
+ void setDescent(qreal d);
+
+ int textPosition() const;
+
+ int formatIndex() const;
+ QTextFormat format() const;
+
+private:
+ friend class QTextLayout;
+ int itm;
+ QTextEngine *eng;
+};
+
+class QPaintDevice;
+class QTextFormat;
+class QTextLine;
+class QTextBlock;
+class QTextOption;
+
+class __attribute__((visibility("default"))) QTextLayout
+{
+public:
+
+ QTextLayout();
+ QTextLayout(const QString& text);
+ QTextLayout(const QString& text, const QFont &font, QPaintDevice *paintdevice = 0);
+ QTextLayout(const QTextBlock &b);
+ ~QTextLayout();
+
+ void setFont(const QFont &f);
+ QFont font() const;
+
+ void setText(const QString& string);
+ QString text() const;
+
+ void setTextOption(const QTextOption &option);
+ QTextOption textOption() const;
+
+ void setPreeditArea(int position, const QString &text);
+ int preeditAreaPosition() const;
+ QString preeditAreaText() const;
+
+ struct FormatRange {
+ int start;
+ int length;
+ QTextCharFormat format;
+ };
+ void setAdditionalFormats(const QList<FormatRange> &overrides);
+ QList<FormatRange> additionalFormats() const;
+ void clearAdditionalFormats();
+
+ void setCacheEnabled(bool enable);
+ bool cacheEnabled() const;
+
+ void beginLayout();
+ void endLayout();
+ void clearLayout();
+
+ QTextLine createLine();
+
+ int lineCount() const;
+ QTextLine lineAt(int i) const;
+ QTextLine lineForTextPosition(int pos) const;
+
+ enum CursorMode {
+ SkipCharacters,
+ SkipWords
+ };
+ bool isValidCursorPosition(int pos) const;
+ int nextCursorPosition(int oldPos, CursorMode mode = SkipCharacters) const;
+ int previousCursorPosition(int oldPos, CursorMode mode = SkipCharacters) const;
+
+ void draw(QPainter *p, const QPointF &pos, const QVector<FormatRange> &selections = QVector<FormatRange>(),
+ const QRectF &clip = QRectF()) const;
+ void drawCursor(QPainter *p, const QPointF &pos, int cursorPosition) const;
+ void drawCursor(QPainter *p, const QPointF &pos, int cursorPosition, int width) const;
+
+ QPointF position() const;
+ void setPosition(const QPointF &p);
+
+ QRectF boundingRect() const;
+
+ qreal minimumWidth() const;
+ qreal maximumWidth() const;
+
+ QTextEngine *engine() const { return d; }
+ void setFlags(int flags);
+private:
+ QTextLayout(QTextEngine *e) : d(e) {}
+ QTextLayout(const QTextLayout &); QTextLayout &operator=(const QTextLayout &);
+
+ friend class QPainter;
+ friend class QPSPrinter;
+ friend class QGraphicsSimpleTextItemPrivate;
+ friend class QGraphicsSimpleTextItem;
+ friend void qt_format_text(const QFont &font, const QRectF &_r, int tf, const QTextOption *, const QString& str,
+ QRectF *brect, int tabstops, int* tabarray, int tabarraylen,
+ QPainter *painter);
+ QTextEngine *d;
+};
+
+
+class __attribute__((visibility("default"))) QTextLine
+{
+public:
+ inline QTextLine() : i(0), eng(0) {}
+ inline bool isValid() const { return eng; }
+
+ QRectF rect() const;
+ qreal x() const;
+ qreal y() const;
+ qreal width() const;
+ qreal ascent() const;
+ qreal descent() const;
+ qreal height() const;
+
+ qreal naturalTextWidth() const;
+ QRectF naturalTextRect() const;
+
+ enum Edge {
+ Leading,
+ Trailing
+ };
+ enum CursorPosition {
+ CursorBetweenCharacters,
+ CursorOnCharacter
+ };
+
+
+ qreal cursorToX(int *cursorPos, Edge edge = Leading) const;
+ inline qreal cursorToX(int cursorPos, Edge edge = Leading) const { return cursorToX(&cursorPos, edge); }
+ int xToCursor(qreal x, CursorPosition = CursorBetweenCharacters) const;
+
+ void setLineWidth(qreal width);
+ void setNumColumns(int columns);
+ void setNumColumns(int columns, qreal alignmentWidth);
+
+ void setPosition(const QPointF &pos);
+ QPointF position() const;
+
+ int textStart() const;
+ int textLength() const;
+
+ int lineNumber() const { return i; }
+
+ void draw(QPainter *p, const QPointF &point, const QTextLayout::FormatRange *selection = 0) const;
+
+private:
+ QTextLine(int line, QTextEngine *e) : i(line), eng(e) {}
+ void layout_helper(int numGlyphs);
+ friend class QTextLayout;
+ int i;
+ QTextEngine *eng;
+};
+
+
+
+
+# 1 "../../include/QtGui/qtextlayout.h" 2
+# 61 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtGui/private/qtextformat_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat_p.h"
+#define QTEXTFORMAT_P_H
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat_p.h"
+# 1 "../../include/QtGui/qtextformat.h" 1
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat_p.h" 2
+# 1 "../../include/QtCore/qvector.h" 1
+# 58 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat_p.h" 2
+# 1 "../../include/QtCore/qset.h" 1
+# 59 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextformat_p.h" 2
+
+
+
+class __attribute__((visibility("default"))) QTextFormatCollection
+{
+public:
+ QTextFormatCollection() {}
+ ~QTextFormatCollection();
+
+ QTextFormatCollection(const QTextFormatCollection &rhs);
+ QTextFormatCollection &operator=(const QTextFormatCollection &rhs);
+
+ QTextFormat objectFormat(int objectIndex) const;
+ void setObjectFormat(int objectIndex, const QTextFormat &format);
+
+ int objectFormatIndex(int objectIndex) const;
+ void setObjectFormatIndex(int objectIndex, int formatIndex);
+
+ int createObjectIndex(const QTextFormat &f);
+
+ int indexForFormat(const QTextFormat &f);
+ bool hasFormatCached(const QTextFormat &format) const;
+
+ QTextFormat format(int idx) const;
+ inline QTextBlockFormat blockFormat(int index) const
+ { return format(index).toBlockFormat(); }
+ inline QTextCharFormat charFormat(int index) const
+ { return format(index).toCharFormat(); }
+ inline QTextListFormat listFormat(int index) const
+ { return format(index).toListFormat(); }
+ inline QTextTableFormat tableFormat(int index) const
+ { return format(index).toTableFormat(); }
+ inline QTextImageFormat imageFormat(int index) const
+ { return format(index).toImageFormat(); }
+
+ inline int numFormats() const { return formats.count(); }
+
+ typedef QVector<QTextFormat> FormatVector;
+
+ FormatVector formats;
+ QVector<qint32> objFormats;
+ QSet<uint> hashes;
+
+ inline QFont defaultFont() const { return defaultFnt; }
+ void setDefaultFont(const QFont &f);
+
+private:
+ QFont defaultFnt;
+};
+
+
+# 1 "../../include/QtGui/private/qtextformat_p.h" 2
+# 62 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtGui/private/qfont_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont_p.h"
+#define QFONT_P_H
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont_p.h"
+# 1 "../../include/QtGui/qfont.h" 1
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont_p.h" 2
+# 1 "../../include/QtCore/qmap.h" 1
+# 58 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont_p.h" 2
+# 1 "../../include/QtCore/qobject.h" 1
+# 59 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont_p.h" 2
+# 1 "../../include/QtCore/private/qunicodetables_p.h" 1
+# 1 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qunicodetables_p.h" 1
+# 56 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qunicodetables_p.h"
+#define QUNICODETABLES_P_H
+
+# 1 "../../include/QtCore/qchar.h" 1
+# 59 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qunicodetables_p.h" 2
+
+
+
+namespace QUnicodeTables {
+ struct Properties {
+ ushort category : 8;
+ ushort line_break_class : 8;
+ ushort direction : 8;
+ ushort combiningClass :8;
+ ushort joining : 2;
+ signed short digitValue : 6;
+ ushort unicodeVersion : 4;
+ ushort lowerCaseSpecial : 1;
+ ushort upperCaseSpecial : 1;
+ ushort titleCaseSpecial : 1;
+ ushort caseFoldSpecial : 1;
+ signed short mirrorDiff : 16;
+ signed short lowerCaseDiff : 16;
+ signed short upperCaseDiff : 16;
+ signed short titleCaseDiff : 16;
+ signed short caseFoldDiff : 16;
+ ushort graphemeBreak : 8;
+ ushort wordBreak : 8;
+ ushort sentenceBreak : 8;
+ };
+ __attribute__((visibility("default"))) const Properties* properties(uint ucs4);
+ __attribute__((visibility("default"))) const Properties* properties(ushort ucs2);
+
+
+
+ enum Script {
+ Common,
+ Greek,
+ Cyrillic,
+ Armenian,
+ Hebrew,
+ Arabic,
+ Syriac,
+ Thaana,
+ Devanagari,
+ Bengali,
+ Gurmukhi,
+ Gujarati,
+ Oriya,
+ Tamil,
+ Telugu,
+ Kannada,
+ Malayalam,
+ Sinhala,
+ Thai,
+ Lao,
+ Tibetan,
+ Myanmar,
+ Georgian,
+ Hangul,
+ Ogham,
+ Runic,
+ Khmer,
+ Inherited,
+ ScriptCount = Inherited,
+ Latin = Common,
+ Ethiopic = Common,
+ Cherokee = Common,
+ CanadianAboriginal = Common,
+ Mongolian = Common,
+ Hiragana = Common,
+ Katakana = Common,
+ Bopomofo = Common,
+ Han = Common,
+ Yi = Common,
+ OldItalic = Common,
+ Gothic = Common,
+ Deseret = Common,
+ Tagalog = Common,
+ Hanunoo = Common,
+ Buhid = Common,
+ Tagbanwa = Common,
+ Limbu = Common,
+ TaiLe = Common,
+ LinearB = Common,
+ Ugaritic = Common,
+ Shavian = Common,
+ Osmanya = Common,
+ Cypriot = Common,
+ Braille = Common,
+ Buginese = Common,
+ Coptic = Common,
+ NewTaiLue = Common,
+ Glagolitic = Common,
+ Tifinagh = Common,
+ SylotiNagri = Common,
+ OldPersian = Common,
+ Kharoshthi = Common,
+ Balinese = Common,
+ Cuneiform = Common,
+ Phoenician = Common,
+ PhagsPa = Common,
+ Nko = Common
+ };
+ enum { ScriptSentinel = 32 };
+
+
+
+
+
+ enum LineBreakClass {
+ LineBreak_OP, LineBreak_CL, LineBreak_QU, LineBreak_GL, LineBreak_NS,
+ LineBreak_EX, LineBreak_SY, LineBreak_IS, LineBreak_PR, LineBreak_PO,
+ LineBreak_NU, LineBreak_AL, LineBreak_ID, LineBreak_IN, LineBreak_HY,
+ LineBreak_BA, LineBreak_BB, LineBreak_B2, LineBreak_ZW, LineBreak_CM,
+ LineBreak_WJ, LineBreak_H2, LineBreak_H3, LineBreak_JL, LineBreak_JV,
+ LineBreak_JT, LineBreak_SA, LineBreak_SG,
+ LineBreak_SP, LineBreak_CR, LineBreak_LF, LineBreak_BK
+ };
+
+
+ __attribute__((visibility("default"))) QUnicodeTables::LineBreakClass lineBreakClass(uint ucs4);
+ inline int lineBreakClass(const QChar &ch) {
+ return QUnicodeTables::lineBreakClass(ch.unicode());
+ }
+
+ __attribute__((visibility("default"))) int script(uint ucs4);
+ __attribute__((visibility("default"))) inline int script(const QChar &ch) {
+ return script(ch.unicode());
+ }
+
+
+ enum GraphemeBreak {
+ GraphemeBreakOther,
+ GraphemeBreakCR,
+ GraphemeBreakLF,
+ GraphemeBreakControl,
+ GraphemeBreakExtend,
+ GraphemeBreakL,
+ GraphemeBreakV,
+ GraphemeBreakT,
+ GraphemeBreakLV,
+ GraphemeBreakLVT
+ };
+
+
+ enum WordBreak {
+ WordBreakOther,
+ WordBreakFormat,
+ WordBreakKatakana,
+ WordBreakALetter,
+ WordBreakMidLetter,
+ WordBreakMidNum,
+ WordBreakNumeric,
+ WordBreakExtendNumLet
+ };
+
+
+ enum SentenceBreak {
+ SentenceBreakOther,
+ SentenceBreakSep,
+ SentenceBreakFormat,
+ SentenceBreakSp,
+ SentenceBreakLower,
+ SentenceBreakUpper,
+ SentenceBreakOLetter,
+ SentenceBreakNumeric,
+ SentenceBreakATerm,
+ SentenceBreakSTerm,
+ SentenceBreakClose
+ };
+
+
+}
+
+
+# 1 "../../include/QtCore/private/qunicodetables_p.h" 2
+# 60 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont_p.h" 2
+# 1 "../../include/QtGui/qfontdatabase.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontdatabase.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontdatabase.h"
+#define QFONTDATABASE_H
+
+# 1 "../../include/QtGui/qwindowdefs.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontdatabase.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontdatabase.h" 2
+# 1 "../../include/QtGui/qfont.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontdatabase.h" 2
+
+
+
+
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QStringList;
+template <class T> class QList;
+struct QFontDef;
+class QFontEngine;
+
+class QFontDatabasePrivate;
+
+class __attribute__((visibility("default"))) QFontDatabase
+{
+ public: static const QMetaObject staticMetaObject; private:
+
+public:
+
+
+ enum WritingSystem {
+ Any,
+
+ Latin,
+ Greek,
+ Cyrillic,
+ Armenian,
+ Hebrew,
+ Arabic,
+ Syriac,
+ Thaana,
+ Devanagari,
+ Bengali,
+ Gurmukhi,
+ Gujarati,
+ Oriya,
+ Tamil,
+ Telugu,
+ Kannada,
+ Malayalam,
+ Sinhala,
+ Thai,
+ Lao,
+ Tibetan,
+ Myanmar,
+ Georgian,
+ Khmer,
+ SimplifiedChinese,
+ TraditionalChinese,
+ Japanese,
+ Korean,
+ Vietnamese,
+
+ Symbol,
+ Other = Symbol,
+
+ Ogham,
+ Runic,
+
+ WritingSystemsCount
+ };
+
+ static QList<int> standardSizes();
+
+ QFontDatabase();
+
+ QList<WritingSystem> writingSystems() const;
+ QList<WritingSystem> writingSystems(const QString &family) const;
+
+ QStringList families(WritingSystem writingSystem = Any) const;
+ QStringList styles(const QString &family) const;
+ QList<int> pointSizes(const QString &family, const QString &style = QString());
+ QList<int> smoothSizes(const QString &family, const QString &style);
+ QString styleString(const QFont &font);
+ QString styleString(const QFontInfo &fontInfo);
+
+ QFont font(const QString &family, const QString &style, int pointSize) const;
+
+ bool isBitmapScalable(const QString &family, const QString &style = QString()) const;
+ bool isSmoothlyScalable(const QString &family, const QString &style = QString()) const;
+ bool isScalable(const QString &family, const QString &style = QString()) const;
+ bool isFixedPitch(const QString &family, const QString &style = QString()) const;
+
+ bool italic(const QString &family, const QString &style) const;
+ bool bold(const QString &family, const QString &style) const;
+ int weight(const QString &family, const QString &style) const;
+
+ static QString writingSystemName(WritingSystem writingSystem);
+ static QString writingSystemSample(WritingSystem writingSystem);
+
+ static int addApplicationFont(const QString &fileName);
+ static int addApplicationFontFromData(const QByteArray &fontData);
+ static QStringList applicationFontFamilies(int id);
+ static bool removeApplicationFont(int id);
+ static bool removeAllApplicationFonts();
+
+ static bool supportsThreadedFontRendering();
+
+private:
+ static void createDatabase();
+ static void parseFontName(const QString &name, QString &foundry, QString &family);
+
+ static QFontEngine *findFont(int script, const QFontPrivate *fp, const QFontDef &request);
+
+ static void load(const QFontPrivate *d, int script);
+
+
+
+
+ friend struct QFontDef;
+ friend class QFontPrivate;
+ friend class QFontDialog;
+ friend class QFontDialogPrivate;
+ friend class QFontEngineMultiXLFD;
+ friend class QFontEngineMultiQWS;
+
+ QFontDatabasePrivate *d;
+};
+
+
+
+
+# 1 "../../include/QtGui/qfontdatabase.h" 2
+# 61 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont_p.h" 2
+# 1 "../../include/QtGui/private/qfixed_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qfixed_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qfixed_p.h"
+#define QFIXED_P_H
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qfixed_p.h"
+# 1 "../../include/QtCore/qdebug.h" 1
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qfixed_p.h" 2
+# 1 "../../include/QtCore/qpoint.h" 1
+# 58 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qfixed_p.h" 2
+# 1 "../../include/QtCore/qsize.h" 1
+# 59 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qfixed_p.h" 2
+
+
+
+struct QFixed {
+public:
+ QFixed() : val(0) {}
+ QFixed(int i) : val(i<<6) {}
+ QFixed(long i) : val(i<<6) {}
+ QFixed &operator=(int i) { val = (i<<6); return *this; }
+ QFixed &operator=(long i) { val = (i<<6); return *this; }
+
+ static QFixed fromReal(qreal r) { QFixed f; f.val = (int)(r*qreal(64)); return f; }
+ static QFixed fromFixed(int fixed) { QFixed f; f.val = fixed; return f; }
+
+ inline int value() const { return val; }
+ inline void setValue(int value) { val = value; }
+
+ inline int toInt() const { return (((val)+32) & -64)>>6; }
+ inline qreal toReal() const { return ((qreal)val)/(qreal)64; }
+
+ inline int truncate() const { return val>>6; }
+ inline QFixed round() const { QFixed f; f.val = ((val)+32) & -64; return f; }
+ inline QFixed floor() const { QFixed f; f.val = (val) & -64; return f; }
+ inline QFixed ceil() const { QFixed f; f.val = (val+63) & -64; return f; }
+
+ inline QFixed operator+(int i) const { QFixed f; f.val = (val + (i<<6)); return f; }
+ inline QFixed operator+(uint i) const { QFixed f; f.val = (val + (i<<6)); return f; }
+ inline QFixed operator+(const QFixed &other) const { QFixed f; f.val = (val + other.val); return f; }
+ inline QFixed &operator+=(int i) { val += (i<<6); return *this; }
+ inline QFixed &operator+=(uint i) { val += (i<<6); return *this; }
+ inline QFixed &operator+=(const QFixed &other) { val += other.val; return *this; }
+ inline QFixed operator-(int i) const { QFixed f; f.val = (val - (i<<6)); return f; }
+ inline QFixed operator-(uint i) const { QFixed f; f.val = (val - (i<<6)); return f; }
+ inline QFixed operator-(const QFixed &other) const { QFixed f; f.val = (val - other.val); return f; }
+ inline QFixed &operator-=(int i) { val -= (i<<6); return *this; }
+ inline QFixed &operator-=(uint i) { val -= (i<<6); return *this; }
+ inline QFixed &operator-=(const QFixed &other) { val -= other.val; return *this; }
+ inline QFixed operator-() const { QFixed f; f.val = -val; return f; }
+
+ inline bool operator==(const QFixed &other) const { return val == other.val; }
+ inline bool operator!=(const QFixed &other) const { return val != other.val; }
+ inline bool operator<(const QFixed &other) const { return val < other.val; }
+ inline bool operator>(const QFixed &other) const { return val > other.val; }
+ inline bool operator<=(const QFixed &other) const { return val <= other.val; }
+ inline bool operator>=(const QFixed &other) const { return val >= other.val; }
+ inline bool operator!() const { return !val; }
+
+ inline QFixed &operator/=(int x) { val /= x; return *this; }
+ inline QFixed &operator/=(const QFixed &o) {
+ if (o.val == 0) {
+ val = 0x7FFFFFFFL;
+ } else {
+ bool neg = false;
+ qint64 a = val;
+ qint64 b = o.val;
+ if (a < 0) { a = -a; neg = true; }
+ if (b < 0) { b = -b; neg = !neg; }
+
+ int res = (int)(((a << 6) + (b >> 1)) / b);
+
+ val = (neg ? -res : res);
+ }
+ return *this;
+ }
+ inline QFixed operator/(int d) const { QFixed f; f.val = val/d; return f; }
+ inline QFixed operator/(QFixed b) const { QFixed f = *this; return (f /= b); }
+ inline QFixed operator>>(int d) const { QFixed f = *this; f.val >>= d; return f; }
+ inline QFixed &operator*=(int i) { val *= i; return *this; }
+ inline QFixed &operator*=(uint i) { val *= i; return *this; }
+ inline QFixed &operator*=(const QFixed &o) {
+ bool neg = false;
+ qint64 a = val;
+ qint64 b = o.val;
+ if (a < 0) { a = -a; neg = true; }
+ if (b < 0) { b = -b; neg = !neg; }
+
+ int res = (int)((a * b + 0x20L) >> 6);
+ val = neg ? -res : res;
+ return *this;
+ }
+ inline QFixed operator*(int i) const { QFixed f = *this; return (f *= i); }
+ inline QFixed operator*(uint i) const { QFixed f = *this; return (f *= i); }
+ inline QFixed operator*(const QFixed &o) const { QFixed f = *this; return (f *= o); }
+
+private:
+ QFixed(qreal i) : val((int)(i*qreal(64))) {}
+ QFixed &operator=(qreal i) { val = (int)(i*qreal(64)); return *this; }
+ inline QFixed operator+(qreal i) const { QFixed f; f.val = (val + (int)(i*qreal(64))); return f; }
+ inline QFixed &operator+=(qreal i) { val += (int)(i*64); return *this; }
+ inline QFixed operator-(qreal i) const { QFixed f; f.val = (val - (int)(i*qreal(64))); return f; }
+ inline QFixed &operator-=(qreal i) { val -= (int)(i*64); return *this; }
+ inline QFixed &operator/=(qreal r) { val = (int)(val/r); return *this; }
+ inline QFixed operator/(qreal d) const { QFixed f; f.val = (int)(val/d); return f; }
+ inline QFixed &operator*=(qreal d) { val = (int) (val*d); return *this; }
+ inline QFixed operator*(qreal d) const { QFixed f = *this; return (f *= d); }
+ int val;
+};
+template <> class QTypeInfo<QFixed> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QFixed)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QFixed"; } };
+
+#define QFIXED_MAX (INT_MAX/256)
+
+inline int qRound(const QFixed &f) { return f.toInt(); }
+inline int qFloor(const QFixed &f) { return f.floor().truncate(); }
+
+inline QFixed operator*(int i, const QFixed &d) { return d*i; }
+inline QFixed operator+(int i, const QFixed &d) { return d+i; }
+inline QFixed operator-(int i, const QFixed &d) { return -(d-i); }
+inline QFixed operator*(uint i, const QFixed &d) { return d*i; }
+inline QFixed operator+(uint i, const QFixed &d) { return d+i; }
+inline QFixed operator-(uint i, const QFixed &d) { return -(d-i); }
+
+
+inline bool operator==(const QFixed &f, int i) { return f.value() == (i<<6); }
+inline bool operator==(int i, const QFixed &f) { return f.value() == (i<<6); }
+inline bool operator!=(const QFixed &f, int i) { return f.value() != (i<<6); }
+inline bool operator!=(int i, const QFixed &f) { return f.value() != (i<<6); }
+inline bool operator<=(const QFixed &f, int i) { return f.value() <= (i<<6); }
+inline bool operator<=(int i, const QFixed &f) { return (i<<6) <= f.value(); }
+inline bool operator>=(const QFixed &f, int i) { return f.value() >= (i<<6); }
+inline bool operator>=(int i, const QFixed &f) { return (i<<6) >= f.value(); }
+inline bool operator<(const QFixed &f, int i) { return f.value() < (i<<6); }
+inline bool operator<(int i, const QFixed &f) { return (i<<6) < f.value(); }
+inline bool operator>(const QFixed &f, int i) { return f.value() > (i<<6); }
+inline bool operator>(int i, const QFixed &f) { return (i<<6) > f.value(); }
+
+inline QDebug &operator<<(QDebug &dbg, const QFixed &f)
+{ return dbg << f.toReal(); }
+
+struct QFixedPoint {
+ QFixed x;
+ QFixed y;
+ inline QFixedPoint() {}
+ inline QFixedPoint(const QFixed &_x, const QFixed &_y) : x(_x), y(_y) {}
+ QPointF toPointF() const { return QPointF(x.toReal(), y.toReal()); }
+ static QFixedPoint fromPointF(const QPointF &p) {
+ return QFixedPoint(QFixed::fromReal(p.x()), QFixed::fromReal(p.y()));
+ }
+};
+template <> class QTypeInfo<QFixedPoint> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QFixedPoint)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QFixedPoint"; } };
+
+inline QFixedPoint operator-(const QFixedPoint &p1, const QFixedPoint &p2)
+{ return QFixedPoint(p1.x - p2.x, p1.y - p2.y); }
+inline QFixedPoint operator+(const QFixedPoint &p1, const QFixedPoint &p2)
+{ return QFixedPoint(p1.x + p2.x, p1.y + p2.y); }
+
+struct QFixedSize {
+ QFixed width;
+ QFixed height;
+ QSizeF toSizeF() const { return QSizeF(width.toReal(), height.toReal()); }
+ static QFixedSize fromSizeF(const QSizeF &s) {
+ QFixedSize size;
+ size.width = QFixed::fromReal(s.width());
+ size.height = QFixed::fromReal(s.height());
+ return size;
+ }
+};
+template <> class QTypeInfo<QFixedSize> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QFixedSize)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QFixedSize"; } };
+
+
+# 1 "../../include/QtGui/private/qfixed_p.h" 2
+# 62 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfont_p.h" 2
+
+
+
+
+class QFontCache;
+class QFontEngine;
+
+struct QFontDef
+{
+ inline QFontDef()
+ : pointSize(-1.0), pixelSize(-1),
+ styleStrategy(QFont::PreferDefault), styleHint(QFont::AnyStyle),
+ weight(50), fixedPitch(false), style(QFont::StyleNormal), stretch(100),
+ ignorePitch(true)
+
+
+
+ {
+ }
+
+ QString family;
+
+
+
+
+
+ qreal pointSize;
+ int pixelSize;
+
+ uint styleStrategy : 16;
+ uint styleHint : 8;
+
+ uint weight : 7;
+ uint fixedPitch : 1;
+ uint style : 2;
+ uint stretch : 12;
+
+ uint ignorePitch : 1;
+ uint fixedPitchComputed : 1;
+ int reserved : 16;
+
+ bool exactMatch(const QFontDef &other) const;
+ bool operator==(const QFontDef &other) const
+ {
+ return pixelSize == other.pixelSize
+ && weight == other.weight
+ && style == other.style
+ && stretch == other.stretch
+ && styleHint == other.styleHint
+ && styleStrategy == other.styleStrategy
+ && ignorePitch == other.ignorePitch && fixedPitch == other.fixedPitch
+ && family == other.family
+
+
+
+ ;
+ }
+ inline bool operator<(const QFontDef &other) const
+ {
+ if (pixelSize != other.pixelSize) return pixelSize < other.pixelSize;
+ if (weight != other.weight) return weight < other.weight;
+ if (style != other.style) return style < other.style;
+ if (stretch != other.stretch) return stretch < other.stretch;
+ if (styleHint != other.styleHint) return styleHint < other.styleHint;
+ if (styleStrategy != other.styleStrategy) return styleStrategy < other.styleStrategy;
+ if (family != other.family) return family < other.family;
+
+
+
+
+
+ if (ignorePitch != other.ignorePitch) return ignorePitch < other.ignorePitch;
+ if (fixedPitch != other.fixedPitch) return fixedPitch < other.fixedPitch;
+ return false;
+ }
+};
+
+class QFontEngineData
+{
+public:
+ QFontEngineData();
+ ~QFontEngineData();
+
+ QAtomicInt ref;
+ QFontCache *fontCache;
+
+
+ QFontEngine *engines[QUnicodeTables::ScriptCount];
+
+
+
+};
+
+
+class __attribute__((visibility("default"))) QFontPrivate
+{
+public:
+
+
+
+
+ QFontPrivate();
+ QFontPrivate(const QFontPrivate &other);
+ ~QFontPrivate();
+
+ QFontEngine *engineForScript(int script) const;
+ void alterCharForCapitalization(QChar &c) const;
+
+ QAtomicInt ref;
+ QFontDef request;
+ mutable QFontEngineData *engineData;
+ int dpi;
+ int screen;
+
+
+
+
+
+ uint rawMode : 1;
+ uint underline : 1;
+ uint overline : 1;
+ uint strikeOut : 1;
+ uint kerning : 1;
+ uint capital : 3;
+ bool letterSpacingIsAbsolute : 1;
+
+ QFixed letterSpacing;
+ QFixed wordSpacing;
+
+ mutable QFontPrivate *scFont;
+ QFont smallCapsFont() const { return QFont(smallCapsFontPrivate()); }
+ QFontPrivate *smallCapsFontPrivate() const;
+
+ void resolve(uint mask, const QFontPrivate *other);
+private:
+ QFontPrivate &operator=(const QFontPrivate &) { return *this; }
+};
+
+
+class QFontCache : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+public:
+
+ static QFontCache *instance();
+ static void cleanup();
+
+ QFontCache();
+ ~QFontCache();
+
+ void clear();
+
+ void removeEngineForFont(const QByteArray &fontName);
+
+
+
+ struct Key {
+ Key() : script(0), screen(0) { }
+ Key(const QFontDef &d, int c, int s = 0)
+ : def(d), script(c), screen(s) { }
+
+ QFontDef def;
+ int script;
+ int screen;
+
+ inline bool operator<(const Key &other) const
+ {
+ if (script != other.script) return script < other.script;
+ if (screen != other.screen) return screen < other.screen;
+ return def < other.def;
+ }
+ inline bool operator==(const Key &other) const
+ { return def == other.def && script == other.script && screen == other.screen; }
+ };
+
+
+ typedef QMap<Key,QFontEngineData*> EngineDataCache;
+ EngineDataCache engineDataCache;
+
+ QFontEngineData *findEngineData(const Key &key) const;
+ void insertEngineData(const Key &key, QFontEngineData *engineData);
+
+
+ struct Engine {
+ Engine() : data(0), timestamp(0), hits(0) { }
+ Engine(QFontEngine *d) : data(d), timestamp(0), hits(0) { }
+
+ QFontEngine *data;
+ uint timestamp;
+ uint hits;
+ };
+
+ typedef QMap<Key,Engine> EngineCache;
+ EngineCache engineCache;
+
+ QFontEngine *findEngine(const Key &key);
+ void insertEngine(const Key &key, QFontEngine *engine);
+
+
+ void cleanupPrinterFonts();
+
+
+ private:
+ void increaseCost(uint cost);
+ void decreaseCost(uint cost);
+ void timerEvent(QTimerEvent *event);
+
+ static const uint min_cost;
+ uint total_cost, max_cost;
+ uint current_timestamp;
+ bool fast;
+ int timer_id;
+};
+
+
+# 1 "../../include/QtGui/private/qfont_p.h" 2
+# 63 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtCore/qvector.h" 1
+# 64 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtGui/qpaintengine.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine.h"
+#define QPAINTENGINE_H
+
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine.h" 2
+# 1 "../../include/QtCore/qobjectdefs.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine.h" 2
+# 1 "../../include/QtGui/qpainter.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h"
+#define QPAINTER_H
+
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+# 1 "../../include/QtCore/qrect.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+# 1 "../../include/QtCore/qpoint.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+# 1 "../../include/QtGui/qpixmap.h" 1
+# 49 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+# 1 "../../include/QtGui/qimage.h" 1
+# 50 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+# 1 "../../include/QtGui/qtextoption.h" 1
+# 51 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+# 1 "../../include/QtGui/qdrawutil.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qdrawutil.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qdrawutil.h"
+#define QDRAWUTIL_H
+
+# 1 "../../include/QtCore/qnamespace.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qdrawutil.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qdrawutil.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QPainter;
+
+class QColorGroup;
+
+class QPalette;
+class QPoint;
+class QColor;
+class QBrush;
+class QRect;
+class QPixmap;
+
+
+
+
+
+__attribute__((visibility("default"))) void qDrawShadeLine(QPainter *p, int x1, int y1, int x2, int y2,
+ const QPalette &pal, bool sunken = true,
+ int lineWidth = 1, int midLineWidth = 0);
+
+__attribute__((visibility("default"))) void qDrawShadeLine(QPainter *p, const QPoint &p1, const QPoint &p2,
+ const QPalette &pal, bool sunken = true,
+ int lineWidth = 1, int midLineWidth = 0);
+
+__attribute__((visibility("default"))) void qDrawShadeRect(QPainter *p, int x, int y, int w, int h,
+ const QPalette &pal, bool sunken = false,
+ int lineWidth = 1, int midLineWidth = 0,
+ const QBrush *fill = 0);
+
+__attribute__((visibility("default"))) void qDrawShadeRect(QPainter *p, const QRect &r,
+ const QPalette &pal, bool sunken = false,
+ int lineWidth = 1, int midLineWidth = 0,
+ const QBrush *fill = 0);
+
+__attribute__((visibility("default"))) void qDrawShadePanel(QPainter *p, int x, int y, int w, int h,
+ const QPalette &pal, bool sunken = false,
+ int lineWidth = 1, const QBrush *fill = 0);
+
+__attribute__((visibility("default"))) void qDrawShadePanel(QPainter *p, const QRect &r,
+ const QPalette &pal, bool sunken = false,
+ int lineWidth = 1, const QBrush *fill = 0);
+
+__attribute__((visibility("default"))) void qDrawWinButton(QPainter *p, int x, int y, int w, int h,
+ const QPalette &pal, bool sunken = false,
+ const QBrush *fill = 0);
+
+__attribute__((visibility("default"))) void qDrawWinButton(QPainter *p, const QRect &r,
+ const QPalette &pal, bool sunken = false,
+ const QBrush *fill = 0);
+
+__attribute__((visibility("default"))) void qDrawWinPanel(QPainter *p, int x, int y, int w, int h,
+ const QPalette &pal, bool sunken = false,
+ const QBrush *fill = 0);
+
+__attribute__((visibility("default"))) void qDrawWinPanel(QPainter *p, const QRect &r,
+ const QPalette &pal, bool sunken = false,
+ const QBrush *fill = 0);
+
+__attribute__((visibility("default"))) void qDrawPlainRect(QPainter *p, int x, int y, int w, int h, const QColor &,
+ int lineWidth = 1, const QBrush *fill = 0);
+
+__attribute__((visibility("default"))) void qDrawPlainRect(QPainter *p, const QRect &r, const QColor &,
+ int lineWidth = 1, const QBrush *fill = 0);
+# 136 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qdrawutil.h"
+
+
+
+# 1 "../../include/QtGui/qdrawutil.h" 2
+# 52 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+
+
+# 1 "../../include/QtGui/qpolygon.h" 1
+# 55 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+# 1 "../../include/QtGui/qpen.h" 1
+# 56 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+# 1 "../../include/QtGui/qbrush.h" 1
+# 57 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+# 1 "../../include/QtGui/qmatrix.h" 1
+# 58 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+# 1 "../../include/QtGui/qtransform.h" 1
+# 59 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+# 1 "../../include/QtGui/qfontinfo.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontinfo.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontinfo.h"
+#define QFONTINFO_H
+
+# 1 "../../include/QtGui/qfont.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontinfo.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class __attribute__((visibility("default"))) QFontInfo
+{
+public:
+ QFontInfo(const QFont &);
+ QFontInfo(const QFontInfo &);
+ ~QFontInfo();
+
+ QFontInfo &operator=(const QFontInfo &);
+
+ QString family() const;
+ int pixelSize() const;
+ int pointSize() const;
+ qreal pointSizeF() const;
+ bool italic() const;
+ QFont::Style style() const;
+ int weight() const;
+ inline bool bold() const { return weight() > QFont::Normal; }
+ bool underline() const;
+ bool overline() const;
+ bool strikeOut() const;
+ bool fixedPitch() const;
+ QFont::StyleHint styleHint() const;
+ bool rawMode() const;
+
+ bool exactMatch() const;
+
+private:
+ QFontPrivate *d;
+};
+
+
+
+
+# 1 "../../include/QtGui/qfontinfo.h" 2
+# 60 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+# 1 "../../include/QtGui/qfontmetrics.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontmetrics.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontmetrics.h"
+#define QFONTMETRICS_H
+
+# 1 "../../include/QtGui/qfont.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontmetrics.h" 2
+
+# 1 "../../include/QtCore/qrect.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontmetrics.h" 2
+
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+
+class QFontEngine;
+
+
+class QTextCodec;
+class QRect;
+
+
+class __attribute__((visibility("default"))) QFontMetrics
+{
+public:
+ QFontMetrics(const QFont &);
+ QFontMetrics(const QFont &, QPaintDevice *pd);
+ QFontMetrics(const QFontMetrics &);
+ ~QFontMetrics();
+
+ QFontMetrics &operator=(const QFontMetrics &);
+
+ int ascent() const;
+ int descent() const;
+ int height() const;
+ int leading() const;
+ int lineSpacing() const;
+ int minLeftBearing() const;
+ int minRightBearing() const;
+ int maxWidth() const;
+
+ int xHeight() const;
+ int averageCharWidth() const;
+
+ bool inFont(QChar) const;
+
+ int leftBearing(QChar) const;
+ int rightBearing(QChar) const;
+ int width(const QString &, int len = -1) const;
+
+ int width(QChar) const;
+ int charWidth(const QString &str, int pos) const;
+
+ QRect boundingRect(QChar) const;
+
+ QRect boundingRect(const QString &text) const;
+ QRect boundingRect(const QRect &r, int flags, const QString &text, int tabstops=0, int *tabarray=0) const;
+ inline QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text,
+ int tabstops=0, int *tabarray=0) const
+ { return boundingRect(QRect(x, y, w, h), flags, text, tabstops, tabarray); }
+ QSize size(int flags, const QString& str, int tabstops=0, int *tabarray=0) const;
+
+ QRect tightBoundingRect(const QString &text) const;
+
+ QString elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags = 0) const;
+
+ int underlinePos() const;
+ int overlinePos() const;
+ int strikeOutPos() const;
+ int lineWidth() const;
+
+ bool operator==(const QFontMetrics &other);
+ bool operator==(const QFontMetrics &other) const;
+ inline bool operator !=(const QFontMetrics &other) { return !operator==(other); }
+ inline bool operator !=(const QFontMetrics &other) const { return !operator==(other); }
+# 127 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontmetrics.h"
+private:
+
+
+
+ friend class QFontMetricsF;
+ friend class QStackTextEngine;
+
+ QFontPrivate *d;
+};
+
+
+class __attribute__((visibility("default"))) QFontMetricsF
+{
+public:
+ QFontMetricsF(const QFont &);
+ QFontMetricsF(const QFont &, QPaintDevice *pd);
+ QFontMetricsF(const QFontMetrics &);
+ QFontMetricsF(const QFontMetricsF &);
+ ~QFontMetricsF();
+
+ QFontMetricsF &operator=(const QFontMetricsF &);
+ QFontMetricsF &operator=(const QFontMetrics &);
+
+ qreal ascent() const;
+ qreal descent() const;
+ qreal height() const;
+ qreal leading() const;
+ qreal lineSpacing() const;
+ qreal minLeftBearing() const;
+ qreal minRightBearing() const;
+ qreal maxWidth() const;
+
+ qreal xHeight() const;
+ qreal averageCharWidth() const;
+
+ bool inFont(QChar) const;
+
+ qreal leftBearing(QChar) const;
+ qreal rightBearing(QChar) const;
+ qreal width(const QString &string) const;
+
+ qreal width(QChar) const;
+
+ QRectF boundingRect(const QString &string) const;
+ QRectF boundingRect(QChar) const;
+ QRectF boundingRect(const QRectF &r, int flags, const QString& string, int tabstops=0, int *tabarray=0) const;
+ QSizeF size(int flags, const QString& str, int tabstops=0, int *tabarray=0) const;
+
+ QRectF tightBoundingRect(const QString &text) const;
+
+ QString elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const;
+
+ qreal underlinePos() const;
+ qreal overlinePos() const;
+ qreal strikeOutPos() const;
+ qreal lineWidth() const;
+
+ bool operator==(const QFontMetricsF &other);
+ bool operator==(const QFontMetricsF &other) const;
+ inline bool operator !=(const QFontMetricsF &other) { return !operator==(other); }
+ inline bool operator !=(const QFontMetricsF &other) const { return !operator==(other); }
+
+private:
+ QFontPrivate *d;
+};
+
+
+
+
+# 1 "../../include/QtGui/qfontmetrics.h" 2
+# 61 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h" 2
+
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QBrush;
+class QFontInfo;
+class QFontMetrics;
+class QPaintDevice;
+class QPainterPath;
+class QPainterPrivate;
+class QPen;
+class QPolygon;
+class QTextItem;
+class QMatrix;
+class QTransform;
+
+class __attribute__((visibility("default"))) QPainter
+{
+ inline QPainterPrivate* d_func() { return reinterpret_cast<QPainterPrivate *>(d_ptr); } inline const QPainterPrivate* d_func() const { return reinterpret_cast<const QPainterPrivate *>(d_ptr); } friend class QPainterPrivate;
+ public: static const QMetaObject staticMetaObject; private:
+
+
+public:
+ enum RenderHint {
+ Antialiasing = 0x01,
+ TextAntialiasing = 0x02,
+ SmoothPixmapTransform = 0x04,
+ HighQualityAntialiasing = 0x08,
+ NonCosmeticDefaultPen = 0x10
+ };
+
+ typedef QFlags<RenderHint> RenderHints;
+
+ QPainter();
+ explicit QPainter(QPaintDevice *);
+ ~QPainter();
+
+ QPaintDevice *device() const;
+
+ bool begin(QPaintDevice *);
+ bool end();
+ bool isActive() const;
+
+ void initFrom(const QWidget *widget);
+
+ enum CompositionMode {
+ CompositionMode_SourceOver,
+ CompositionMode_DestinationOver,
+ CompositionMode_Clear,
+ CompositionMode_Source,
+ CompositionMode_Destination,
+ CompositionMode_SourceIn,
+ CompositionMode_DestinationIn,
+ CompositionMode_SourceOut,
+ CompositionMode_DestinationOut,
+ CompositionMode_SourceAtop,
+ CompositionMode_DestinationAtop,
+ CompositionMode_Xor,
+
+
+ CompositionMode_Plus,
+ CompositionMode_Multiply,
+ CompositionMode_Screen,
+ CompositionMode_Overlay,
+ CompositionMode_Darken,
+ CompositionMode_Lighten,
+ CompositionMode_ColorDodge,
+ CompositionMode_ColorBurn,
+ CompositionMode_HardLight,
+ CompositionMode_SoftLight,
+ CompositionMode_Difference,
+ CompositionMode_Exclusion,
+
+
+ RasterOp_SourceOrDestination,
+ RasterOp_SourceAndDestination,
+ RasterOp_SourceXorDestination,
+ RasterOp_NotSourceAndNotDestination,
+ RasterOp_NotSourceOrNotDestination,
+ RasterOp_NotSourceXorDestination,
+ RasterOp_NotSource,
+ RasterOp_NotSourceAndDestination,
+ RasterOp_SourceAndNotDestination
+ };
+ void setCompositionMode(CompositionMode mode);
+ CompositionMode compositionMode() const;
+
+ const QFont &font() const;
+ void setFont(const QFont &f);
+
+ QFontMetrics fontMetrics() const;
+ QFontInfo fontInfo() const;
+
+ void setPen(const QColor &color);
+ void setPen(const QPen &pen);
+ void setPen(Qt::PenStyle style);
+ const QPen &pen() const;
+
+ void setBrush(const QBrush &brush);
+ void setBrush(Qt::BrushStyle style);
+ const QBrush &brush() const;
+
+
+ void setBackgroundMode(Qt::BGMode mode);
+ Qt::BGMode backgroundMode() const;
+
+ QPoint brushOrigin() const;
+ inline void setBrushOrigin(int x, int y);
+ inline void setBrushOrigin(const QPoint &);
+ void setBrushOrigin(const QPointF &);
+
+ void setBackground(const QBrush &bg);
+ const QBrush &background() const;
+
+ qreal opacity() const;
+ void setOpacity(qreal opacity);
+
+
+ QRegion clipRegion() const;
+ QPainterPath clipPath() const;
+
+ void setClipRect(const QRectF &, Qt::ClipOperation op = Qt::ReplaceClip);
+ void setClipRect(const QRect &, Qt::ClipOperation op = Qt::ReplaceClip);
+ inline void setClipRect(int x, int y, int w, int h, Qt::ClipOperation op = Qt::ReplaceClip);
+
+ void setClipRegion(const QRegion &, Qt::ClipOperation op = Qt::ReplaceClip);
+
+ void setClipPath(const QPainterPath &path, Qt::ClipOperation op = Qt::ReplaceClip);
+
+ void setClipping(bool enable);
+ bool hasClipping() const;
+
+ void save();
+ void restore();
+
+
+ void setMatrix(const QMatrix &matrix, bool combine = false);
+ const QMatrix &matrix() const;
+ const QMatrix &deviceMatrix() const;
+ void resetMatrix();
+
+ void setTransform(const QTransform &transform, bool combine = false);
+ const QTransform &transform() const;
+ const QTransform &deviceTransform() const;
+ void resetTransform();
+
+ void setWorldMatrix(const QMatrix &matrix, bool combine = false);
+ const QMatrix &worldMatrix() const;
+
+ void setWorldTransform(const QTransform &matrix, bool combine = false);
+ const QTransform &worldTransform() const;
+
+ QMatrix combinedMatrix() const;
+ QTransform combinedTransform() const;
+
+ void setMatrixEnabled(bool enabled);
+ bool matrixEnabled() const;
+
+ void setWorldMatrixEnabled(bool enabled);
+ bool worldMatrixEnabled() const;
+
+ void scale(qreal sx, qreal sy);
+ void shear(qreal sh, qreal sv);
+ void rotate(qreal a);
+
+ void translate(const QPointF &offset);
+ inline void translate(const QPoint &offset);
+ inline void translate(qreal dx, qreal dy);
+
+ QRect window() const;
+ void setWindow(const QRect &window);
+ inline void setWindow(int x, int y, int w, int h);
+
+ QRect viewport() const;
+ void setViewport(const QRect &viewport);
+ inline void setViewport(int x, int y, int w, int h);
+
+ void setViewTransformEnabled(bool enable);
+ bool viewTransformEnabled() const;
+
+
+ void strokePath(const QPainterPath &path, const QPen &pen);
+ void fillPath(const QPainterPath &path, const QBrush &brush);
+ void drawPath(const QPainterPath &path);
+
+ inline void drawPoint(const QPointF &pt);
+ inline void drawPoint(const QPoint &p);
+ inline void drawPoint(int x, int y);
+
+ void drawPoints(const QPointF *points, int pointCount);
+ inline void drawPoints(const QPolygonF &points);
+ void drawPoints(const QPoint *points, int pointCount);
+ inline void drawPoints(const QPolygon &points);
+
+ inline void drawLine(const QLineF &line);
+ inline void drawLine(const QLine &line);
+ inline void drawLine(int x1, int y1, int x2, int y2);
+ inline void drawLine(const QPoint &p1, const QPoint &p2);
+ inline void drawLine(const QPointF &p1, const QPointF &p2);
+
+ void drawLines(const QLineF *lines, int lineCount);
+ inline void drawLines(const QVector<QLineF> &lines);
+ void drawLines(const QPointF *pointPairs, int lineCount);
+ inline void drawLines(const QVector<QPointF> &pointPairs);
+ void drawLines(const QLine *lines, int lineCount);
+ inline void drawLines(const QVector<QLine> &lines);
+ void drawLines(const QPoint *pointPairs, int lineCount);
+ inline void drawLines(const QVector<QPoint> &pointPairs);
+
+ inline void drawRect(const QRectF &rect);
+ inline void drawRect(int x1, int y1, int w, int h);
+ inline void drawRect(const QRect &rect);
+
+ void drawRects(const QRectF *rects, int rectCount);
+ inline void drawRects(const QVector<QRectF> &rectangles);
+ void drawRects(const QRect *rects, int rectCount);
+ inline void drawRects(const QVector<QRect> &rectangles);
+
+ void drawEllipse(const QRectF &r);
+ void drawEllipse(const QRect &r);
+ inline void drawEllipse(int x, int y, int w, int h);
+
+ inline void drawEllipse(const QPointF ¢er, qreal rx, qreal ry);
+ inline void drawEllipse(const QPoint ¢er, int rx, int ry);
+
+ void drawPolyline(const QPointF *points, int pointCount);
+ inline void drawPolyline(const QPolygonF &polyline);
+ void drawPolyline(const QPoint *points, int pointCount);
+ inline void drawPolyline(const QPolygon &polygon);
+
+ void drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill);
+ inline void drawPolygon(const QPolygonF &polygon, Qt::FillRule fillRule = Qt::OddEvenFill);
+ void drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill);
+ inline void drawPolygon(const QPolygon &polygon, Qt::FillRule fillRule = Qt::OddEvenFill);
+
+ void drawConvexPolygon(const QPointF *points, int pointCount);
+ inline void drawConvexPolygon(const QPolygonF &polygon);
+ void drawConvexPolygon(const QPoint *points, int pointCount);
+ inline void drawConvexPolygon(const QPolygon &polygon);
+
+ void drawArc(const QRectF &rect, int a, int alen);
+ inline void drawArc(const QRect &, int a, int alen);
+ inline void drawArc(int x, int y, int w, int h, int a, int alen);
+
+ void drawPie(const QRectF &rect, int a, int alen);
+ inline void drawPie(int x, int y, int w, int h, int a, int alen);
+ inline void drawPie(const QRect &, int a, int alen);
+
+ void drawChord(const QRectF &rect, int a, int alen);
+ inline void drawChord(int x, int y, int w, int h, int a, int alen);
+ inline void drawChord(const QRect &, int a, int alen);
+
+ void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode = Qt::AbsoluteSize);
+ inline void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode = Qt::AbsoluteSize);
+ inline void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode = Qt::AbsoluteSize);
+
+ void drawRoundRect(const QRectF &r, int xround = 25, int yround = 25);
+ inline void drawRoundRect(int x, int y, int w, int h, int = 25, int = 25);
+ inline void drawRoundRect(const QRect &r, int xround = 25, int yround = 25);
+
+ void drawTiledPixmap(const QRectF &rect, const QPixmap &pm, const QPointF &offset = QPointF());
+ inline void drawTiledPixmap(int x, int y, int w, int h, const QPixmap &, int sx=0, int sy=0);
+ inline void drawTiledPixmap(const QRect &, const QPixmap &, const QPoint & = QPoint());
+
+ void drawPicture(const QPointF &p, const QPicture &picture);
+ inline void drawPicture(int x, int y, const QPicture &picture);
+ inline void drawPicture(const QPoint &p, const QPicture &picture);
+
+
+ void drawPixmap(const QRectF &targetRect, const QPixmap &pixmap, const QRectF &sourceRect);
+ inline void drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect);
+ inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm,
+ int sx, int sy, int sw, int sh);
+ inline void drawPixmap(int x, int y, const QPixmap &pm,
+ int sx, int sy, int sw, int sh);
+ inline void drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr);
+ inline void drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr);
+ void drawPixmap(const QPointF &p, const QPixmap &pm);
+ inline void drawPixmap(const QPoint &p, const QPixmap &pm);
+ inline void drawPixmap(int x, int y, const QPixmap &pm);
+ inline void drawPixmap(const QRect &r, const QPixmap &pm);
+ inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm);
+
+ void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect,
+ Qt::ImageConversionFlags flags = Qt::AutoColor);
+ inline void drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect,
+ Qt::ImageConversionFlags flags = Qt::AutoColor);
+ inline void drawImage(const QPointF &p, const QImage &image, const QRectF &sr,
+ Qt::ImageConversionFlags flags = Qt::AutoColor);
+ inline void drawImage(const QPoint &p, const QImage &image, const QRect &sr,
+ Qt::ImageConversionFlags flags = Qt::AutoColor);
+ inline void drawImage(const QRectF &r, const QImage &image);
+ inline void drawImage(const QRect &r, const QImage &image);
+ void drawImage(const QPointF &p, const QImage &image);
+ inline void drawImage(const QPoint &p, const QImage &image);
+ inline void drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0,
+ int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor);
+
+ void setLayoutDirection(Qt::LayoutDirection direction);
+ Qt::LayoutDirection layoutDirection() const;
+
+ void drawText(const QPointF &p, const QString &s);
+ inline void drawText(const QPoint &p, const QString &s);
+ inline void drawText(int x, int y, const QString &s);
+
+ void drawText(const QPointF &p, const QString &str, int tf, int justificationPadding);
+
+ void drawText(const QRectF &r, int flags, const QString &text, QRectF *br=0);
+ void drawText(const QRect &r, int flags, const QString &text, QRect *br=0);
+ inline void drawText(int x, int y, int w, int h, int flags, const QString &text, QRect *br=0);
+
+ void drawText(const QRectF &r, const QString &text, const QTextOption &o = QTextOption());
+
+ QRectF boundingRect(const QRectF &rect, int flags, const QString &text);
+ QRect boundingRect(const QRect &rect, int flags, const QString &text);
+ inline QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text);
+
+ QRectF boundingRect(const QRectF &rect, const QString &text, const QTextOption &o = QTextOption());
+
+ void drawTextItem(const QPointF &p, const QTextItem &ti);
+ inline void drawTextItem(int x, int y, const QTextItem &ti);
+ inline void drawTextItem(const QPoint &p, const QTextItem &ti);
+
+ void fillRect(const QRectF &, const QBrush &);
+ inline void fillRect(int x, int y, int w, int h, const QBrush &);
+ void fillRect(const QRect &, const QBrush &);
+
+ void fillRect(const QRectF &, const QColor &color);
+ inline void fillRect(int x, int y, int w, int h, const QColor &color);
+ void fillRect(const QRect &, const QColor &color);
+
+ inline void fillRect(int x, int y, int w, int h, Qt::GlobalColor c);
+ inline void fillRect(const QRect &r, Qt::GlobalColor c);
+ inline void fillRect(const QRectF &r, Qt::GlobalColor c);
+
+ inline void fillRect(int x, int y, int w, int h, Qt::BrushStyle style);
+ inline void fillRect(const QRect &r, Qt::BrushStyle style);
+ inline void fillRect(const QRectF &r, Qt::BrushStyle style);
+
+ void eraseRect(const QRectF &);
+ inline void eraseRect(int x, int y, int w, int h);
+ inline void eraseRect(const QRect &);
+
+ void setRenderHint(RenderHint hint, bool on = true);
+ void setRenderHints(RenderHints hints, bool on = true);
+ RenderHints renderHints() const;
+ inline bool testRenderHint(RenderHint hint) const { return renderHints() & hint; }
+
+ QPaintEngine *paintEngine() const;
+
+ static void setRedirected(const QPaintDevice *device, QPaintDevice *replacement,
+ const QPoint& offset = QPoint());
+ static QPaintDevice *redirected(const QPaintDevice *device, QPoint *offset = 0);
+ static void restoreRedirected(const QPaintDevice *device);
+# 496 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpainter.h"
+private:
+ QPainter(const QPainter &); QPainter &operator=(const QPainter &);
+ friend class Q3Painter;
+
+ QPainterPrivate *d_ptr;
+
+ friend class QFontEngine;
+ friend class QFontEngineBox;
+ friend class QFontEngineFT;
+ friend class QFontEngineMac;
+ friend class QFontEngineWin;
+ friend class QFontEngineXLFD;
+ friend class QWSManager;
+ friend class QPaintEngine;
+ friend class QOpenGLPaintEngine;
+ friend class QX11PaintEngine;
+ friend class QX11PaintEnginePrivate;
+ friend class QWin32PaintEngine;
+ friend class QWin32PaintEnginePrivate;
+ friend class QRasterPaintEngine;
+ friend class QAlphaPaintEngine;
+ friend class QPreviewPaintEngine;
+};
+
+inline QFlags<QPainter::RenderHints::enum_type> operator|(QPainter::RenderHints::enum_type f1, QPainter::RenderHints::enum_type f2) { return QFlags<QPainter::RenderHints::enum_type>(f1) | f2; } inline QFlags<QPainter::RenderHints::enum_type> operator|(QPainter::RenderHints::enum_type f1, QFlags<QPainter::RenderHints::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QPainter::RenderHints::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+
+
+
+
+inline void QPainter::drawLine(const QLineF &l)
+{
+ drawLines(&l, 1);
+}
+
+inline void QPainter::drawLine(const QLine &line)
+{
+ drawLines(&line, 1);
+}
+
+inline void QPainter::drawLine(int x1, int y1, int x2, int y2)
+{
+ QLine l(x1, y1, x2, y2);
+ drawLines(&l, 1);
+}
+
+inline void QPainter::drawLine(const QPoint &p1, const QPoint &p2)
+{
+ QLine l(p1, p2);
+ drawLines(&l, 1);
+}
+
+inline void QPainter::drawLine(const QPointF &p1, const QPointF &p2)
+{
+ drawLine(QLineF(p1, p2));
+}
+
+inline void QPainter::drawLines(const QVector<QLineF> &lines)
+{
+ drawLines(lines.constData(), lines.size());
+}
+
+inline void QPainter::drawLines(const QVector<QLine> &lines)
+{
+ drawLines(lines.constData(), lines.size());
+}
+
+inline void QPainter::drawLines(const QVector<QPointF> &pointPairs)
+{
+ drawLines(pointPairs.constData(), pointPairs.size() / 2);
+}
+
+inline void QPainter::drawLines(const QVector<QPoint> &pointPairs)
+{
+ drawLines(pointPairs.constData(), pointPairs.size() / 2);
+}
+
+inline void QPainter::drawPolyline(const QPolygonF &polyline)
+{
+ drawPolyline(polyline.constData(), polyline.size());
+}
+
+inline void QPainter::drawPolyline(const QPolygon &polyline)
+{
+ drawPolyline(polyline.constData(), polyline.size());
+}
+
+inline void QPainter::drawPolygon(const QPolygonF &polygon, Qt::FillRule fillRule)
+{
+ drawPolygon(polygon.constData(), polygon.size(), fillRule);
+}
+
+inline void QPainter::drawPolygon(const QPolygon &polygon, Qt::FillRule fillRule)
+{
+ drawPolygon(polygon.constData(), polygon.size(), fillRule);
+}
+
+inline void QPainter::drawConvexPolygon(const QPolygonF &poly)
+{
+ drawConvexPolygon(poly.constData(), poly.size());
+}
+
+inline void QPainter::drawConvexPolygon(const QPolygon &poly)
+{
+ drawConvexPolygon(poly.constData(), poly.size());
+}
+
+inline void QPainter::drawRect(const QRectF &rect)
+{
+ drawRects(&rect, 1);
+}
+
+inline void QPainter::drawRect(int x, int y, int w, int h)
+{
+ QRect r(x, y, w, h);
+ drawRects(&r, 1);
+}
+
+inline void QPainter::drawRect(const QRect &r)
+{
+ drawRects(&r, 1);
+}
+
+inline void QPainter::drawRects(const QVector<QRectF> &rects)
+{
+ drawRects(rects.constData(), rects.size());
+}
+
+inline void QPainter::drawRects(const QVector<QRect> &rects)
+{
+ drawRects(rects.constData(), rects.size());
+}
+
+inline void QPainter::drawPoint(const QPointF &p)
+{
+ drawPoints(&p, 1);
+}
+
+inline void QPainter::drawPoint(int x, int y)
+{
+ QPoint p(x, y);
+ drawPoints(&p, 1);
+}
+
+inline void QPainter::drawPoint(const QPoint &p)
+{
+ drawPoints(&p, 1);
+}
+
+inline void QPainter::drawPoints(const QPolygonF &points)
+{
+ drawPoints(points.constData(), points.size());
+}
+
+inline void QPainter::drawPoints(const QPolygon &points)
+{
+ drawPoints(points.constData(), points.size());
+}
+
+inline void QPainter::drawRoundRect(int x, int y, int w, int h, int xRnd, int yRnd)
+{
+ drawRoundRect(QRectF(x, y, w, h), xRnd, yRnd);
+}
+
+inline void QPainter::drawRoundRect(const QRect &rect, int xRnd, int yRnd)
+{
+ drawRoundRect(QRectF(rect), xRnd, yRnd);
+}
+
+inline void QPainter::drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode)
+{
+ drawRoundedRect(QRectF(x, y, w, h), xRadius, yRadius, mode);
+}
+
+inline void QPainter::drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode)
+{
+ drawRoundedRect(QRectF(rect), xRadius, yRadius, mode);
+}
+
+inline void QPainter::drawEllipse(int x, int y, int w, int h)
+{
+ drawEllipse(QRect(x, y, w, h));
+}
+
+inline void QPainter::drawEllipse(const QPointF ¢er, qreal rx, qreal ry)
+{
+ drawEllipse(QRectF(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry));
+}
+
+inline void QPainter::drawEllipse(const QPoint ¢er, int rx, int ry)
+{
+ drawEllipse(QRect(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry));
+}
+
+inline void QPainter::drawArc(const QRect &r, int a, int alen)
+{
+ drawArc(QRectF(r), a, alen);
+}
+
+inline void QPainter::drawArc(int x, int y, int w, int h, int a, int alen)
+{
+ drawArc(QRectF(x, y, w, h), a, alen);
+}
+
+inline void QPainter::drawPie(const QRect &rect, int a, int alen)
+{
+ drawPie(QRectF(rect), a, alen);
+}
+
+inline void QPainter::drawPie(int x, int y, int w, int h, int a, int alen)
+{
+ drawPie(QRectF(x, y, w, h), a, alen);
+}
+
+inline void QPainter::drawChord(const QRect &rect, int a, int alen)
+{
+ drawChord(QRectF(rect), a, alen);
+}
+
+inline void QPainter::drawChord(int x, int y, int w, int h, int a, int alen)
+{
+ drawChord(QRectF(x, y, w, h), a, alen);
+}
+
+inline void QPainter::setClipRect(int x, int y, int w, int h, Qt::ClipOperation op)
+{
+ setClipRect(QRect(x, y, w, h), op);
+}
+
+inline void QPainter::eraseRect(const QRect &rect)
+{
+ eraseRect(QRectF(rect));
+}
+
+inline void QPainter::eraseRect(int x, int y, int w, int h)
+{
+ eraseRect(QRectF(x, y, w, h));
+}
+
+inline void QPainter::fillRect(int x, int y, int w, int h, const QBrush &b)
+{
+ fillRect(QRect(x, y, w, h), b);
+}
+
+inline void QPainter::fillRect(int x, int y, int w, int h, const QColor &b)
+{
+ fillRect(QRect(x, y, w, h), b);
+}
+
+inline void QPainter::fillRect(int x, int y, int w, int h, Qt::GlobalColor c)
+{
+ fillRect(QRect(x, y, w, h), QColor(c));
+}
+
+inline void QPainter::fillRect(const QRect &r, Qt::GlobalColor c)
+{
+ fillRect(r, QColor(c));
+}
+
+inline void QPainter::fillRect(const QRectF &r, Qt::GlobalColor c)
+{
+ fillRect(r, QColor(c));
+}
+
+inline void QPainter::fillRect(int x, int y, int w, int h, Qt::BrushStyle style)
+{
+ fillRect(QRectF(x, y, w, h), QBrush(style));
+}
+
+inline void QPainter::fillRect(const QRect &r, Qt::BrushStyle style)
+{
+ fillRect(QRectF(r), QBrush(style));
+}
+
+inline void QPainter::fillRect(const QRectF &r, Qt::BrushStyle style)
+{
+ fillRect(r, QBrush(style));
+}
+
+
+inline void QPainter::setBrushOrigin(int x, int y)
+{
+ setBrushOrigin(QPoint(x, y));
+}
+
+inline void QPainter::setBrushOrigin(const QPoint &p)
+{
+ setBrushOrigin(QPointF(p));
+}
+
+inline void QPainter::drawTiledPixmap(const QRect &rect, const QPixmap &pm, const QPoint &offset)
+{
+ drawTiledPixmap(QRectF(rect), pm, QPointF(offset));
+}
+
+inline void QPainter::drawTiledPixmap(int x, int y, int w, int h, const QPixmap &pm, int sx, int sy)
+{
+ drawTiledPixmap(QRectF(x, y, w, h), pm, QPointF(sx, sy));
+}
+
+inline void QPainter::drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect)
+{
+ drawPixmap(QRectF(targetRect), pixmap, QRectF(sourceRect));
+}
+
+inline void QPainter::drawPixmap(const QPoint &p, const QPixmap &pm)
+{
+ drawPixmap(QPointF(p), pm);
+}
+
+inline void QPainter::drawPixmap(const QRect &r, const QPixmap &pm)
+{
+ drawPixmap(QRectF(r), pm, QRectF());
+}
+
+inline void QPainter::drawPixmap(int x, int y, const QPixmap &pm)
+{
+ drawPixmap(QPointF(x, y), pm);
+}
+
+inline void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pm)
+{
+ drawPixmap(QRectF(x, y, w, h), pm, QRectF());
+}
+
+inline void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pm,
+ int sx, int sy, int sw, int sh)
+{
+ drawPixmap(QRectF(x, y, w, h), pm, QRectF(sx, sy, sw, sh));
+}
+
+inline void QPainter::drawPixmap(int x, int y, const QPixmap &pm,
+ int sx, int sy, int sw, int sh)
+{
+ drawPixmap(QRectF(x, y, -1, -1), pm, QRectF(sx, sy, sw, sh));
+}
+
+inline void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr)
+{
+ drawPixmap(QRectF(p.x(), p.y(), -1, -1), pm, sr);
+}
+
+inline void QPainter::drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr)
+{
+ drawPixmap(QRectF(p.x(), p.y(), -1, -1), pm, sr);
+}
+
+inline void QPainter::drawTextItem(int x, int y, const QTextItem &ti)
+{
+ drawTextItem(QPointF(x, y), ti);
+}
+
+inline void QPainter::drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect,
+ Qt::ImageConversionFlags flags)
+{
+ drawImage(QRectF(targetRect), image, QRectF(sourceRect), flags);
+}
+
+inline void QPainter::drawImage(const QPointF &p, const QImage &image, const QRectF &sr,
+ Qt::ImageConversionFlags flags)
+{
+ drawImage(QRectF(p.x(), p.y(), -1, -1), image, sr, flags);
+}
+
+inline void QPainter::drawImage(const QPoint &p, const QImage &image, const QRect &sr,
+ Qt::ImageConversionFlags flags)
+{
+ drawImage(QRect(p.x(), p.y(), -1, -1), image, sr, flags);
+}
+
+
+inline void QPainter::drawImage(const QRectF &r, const QImage &image)
+{
+ drawImage(r, image, QRect(0, 0, image.width(), image.height()));
+}
+
+inline void QPainter::drawImage(const QRect &r, const QImage &image)
+{
+ drawImage(r, image, QRectF(0, 0, image.width(), image.height()));
+}
+
+inline void QPainter::drawImage(const QPoint &p, const QImage &image)
+{
+ drawImage(QPointF(p), image);
+}
+
+inline void QPainter::drawImage(int x, int y, const QImage &image, int sx, int sy, int sw, int sh,
+ Qt::ImageConversionFlags flags)
+{
+ if (sx == 0 && sy == 0 && sw == -1 && sh == -1 && flags == Qt::AutoColor)
+ drawImage(QPointF(x, y), image);
+ else
+ drawImage(QRectF(x, y, -1, -1), image, QRectF(sx, sy, sw, sh), flags);
+}
+
+inline void QPainter::drawTextItem(const QPoint &p, const QTextItem &ti)
+{
+ drawTextItem(QPointF(p), ti);
+}
+
+inline void QPainter::drawText(const QPoint &p, const QString &s)
+{
+ drawText(QPointF(p), s);
+}
+
+inline void QPainter::drawText(int x, int y, int w, int h, int flags, const QString &str, QRect *br)
+{
+ drawText(QRect(x, y, w, h), flags, str, br);
+}
+
+inline void QPainter::drawText(int x, int y, const QString &s)
+{
+ drawText(QPointF(x, y), s);
+}
+
+inline QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &text)
+{
+ return boundingRect(QRect(x, y, w, h), flags, text);
+}
+
+inline void QPainter::translate(qreal dx, qreal dy)
+{
+ translate(QPointF(dx, dy));
+}
+
+inline void QPainter::translate(const QPoint &offset)
+{
+ translate(offset.x(), offset.y());
+}
+
+inline void QPainter::setViewport(int x, int y, int w, int h)
+{
+ setViewport(QRect(x, y, w, h));
+}
+
+inline void QPainter::setWindow(int x, int y, int w, int h)
+{
+ setWindow(QRect(x, y, w, h));
+}
+
+
+inline void QPainter::drawPicture(int x, int y, const QPicture &p)
+{
+ drawPicture(QPoint(x, y), p);
+}
+
+inline void QPainter::drawPicture(const QPoint &pt, const QPicture &p)
+{
+ drawPicture(QPointF(pt), p);
+}
+
+
+
+
+
+# 1 "../../include/QtGui/qpainter.h" 2
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QFontEngine;
+class QLineF;
+class QPaintDevice;
+class QPaintEnginePrivate;
+class QPainterPath;
+class QPointF;
+class QPolygonF;
+class QRectF;
+struct QGlyphLayout;
+class QTextItemInt;
+class QPaintEngineState;
+
+class __attribute__((visibility("default"))) QTextItem {
+public:
+ enum RenderFlag {
+ RightToLeft = 0x1,
+ Overline = 0x10,
+ Underline = 0x20,
+ StrikeOut = 0x40,
+
+ Dummy = 0xffffffff
+ };
+ typedef QFlags<RenderFlag> RenderFlags;
+ qreal descent() const;
+ qreal ascent() const;
+ qreal width() const;
+
+ RenderFlags renderFlags() const;
+ QString text() const;
+ QFont font() const;
+};
+template <> class QTypeInfo<QTextItem> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTextItem)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTextItem"; } };
+
+
+class __attribute__((visibility("default"))) QPaintEngine
+{
+ inline QPaintEnginePrivate* d_func() { return reinterpret_cast<QPaintEnginePrivate *>(d_ptr); } inline const QPaintEnginePrivate* d_func() const { return reinterpret_cast<const QPaintEnginePrivate *>(d_ptr); } friend class QPaintEnginePrivate;
+public:
+ enum PaintEngineFeature {
+ PrimitiveTransform = 0x00000001,
+ PatternTransform = 0x00000002,
+ PixmapTransform = 0x00000004,
+ PatternBrush = 0x00000008,
+ LinearGradientFill = 0x00000010,
+ RadialGradientFill = 0x00000020,
+ ConicalGradientFill = 0x00000040,
+ AlphaBlend = 0x00000080,
+ PorterDuff = 0x00000100,
+ PainterPaths = 0x00000200,
+ Antialiasing = 0x00000400,
+ BrushStroke = 0x00000800,
+ ConstantOpacity = 0x00001000,
+ MaskedBrush = 0x00002000,
+ PerspectiveTransform = 0x00004000,
+ BlendModes = 0x00008000,
+ ObjectBoundingModeGradients = 0x00010000,
+ RasterOpModes = 0x00020000,
+ PaintOutsidePaintEvent = 0x20000000,
+
+
+
+
+
+
+
+ AllFeatures = 0xffffffff
+ };
+ typedef QFlags<PaintEngineFeature> PaintEngineFeatures;
+
+ enum DirtyFlag {
+ DirtyPen = 0x0001,
+ DirtyBrush = 0x0002,
+ DirtyBrushOrigin = 0x0004,
+ DirtyFont = 0x0008,
+ DirtyBackground = 0x0010,
+ DirtyBackgroundMode = 0x0020,
+ DirtyTransform = 0x0040,
+ DirtyClipRegion = 0x0080,
+ DirtyClipPath = 0x0100,
+ DirtyHints = 0x0200,
+ DirtyCompositionMode = 0x0400,
+ DirtyClipEnabled = 0x0800,
+ DirtyOpacity = 0x1000,
+
+ AllDirty = 0xffff
+ };
+ typedef QFlags<DirtyFlag> DirtyFlags;
+
+ enum PolygonDrawMode {
+ OddEvenMode,
+ WindingMode,
+ ConvexMode,
+ PolylineMode
+ };
+
+ explicit QPaintEngine(PaintEngineFeatures features=0);
+ virtual ~QPaintEngine();
+
+ bool isActive() const { return active; }
+ void setActive(bool newState) { active = newState; }
+
+ virtual bool begin(QPaintDevice *pdev) = 0;
+ virtual bool end() = 0;
+
+ virtual void updateState(const QPaintEngineState &state) = 0;
+
+ virtual void drawRects(const QRect *rects, int rectCount);
+ virtual void drawRects(const QRectF *rects, int rectCount);
+
+ virtual void drawLines(const QLine *lines, int lineCount);
+ virtual void drawLines(const QLineF *lines, int lineCount);
+
+ virtual void drawEllipse(const QRectF &r);
+ virtual void drawEllipse(const QRect &r);
+
+ virtual void drawPath(const QPainterPath &path);
+
+ virtual void drawPoints(const QPointF *points, int pointCount);
+ virtual void drawPoints(const QPoint *points, int pointCount);
+
+ virtual void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode);
+ virtual void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode);
+
+ virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0;
+ virtual void drawTextItem(const QPointF &p, const QTextItem &textItem);
+ virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s);
+ virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr,
+ Qt::ImageConversionFlags flags = Qt::AutoColor);
+
+ void setPaintDevice(QPaintDevice *device);
+ QPaintDevice *paintDevice() const;
+
+ void setSystemClip(const QRegion &baseClip);
+ QRegion systemClip() const;
+
+ void setSystemRect(const QRect &rect);
+ QRect systemRect() const;
+
+
+
+
+
+
+ virtual QPoint coordinateOffset() const;
+
+ enum Type {
+ X11,
+ Windows,
+ QuickDraw, CoreGraphics, MacPrinter,
+ QWindowSystem,
+ PostScript,
+ OpenGL,
+ Picture,
+ SVG,
+ Raster,
+ Direct3D,
+ Pdf,
+ OpenVG,
+
+ User = 50,
+ MaxUser = 100
+ };
+ virtual Type type() const = 0;
+
+ inline void fix_neg_rect(int *x, int *y, int *w, int *h);
+
+ inline bool testDirty(DirtyFlags df);
+ inline void setDirty(DirtyFlags df);
+ inline void clearDirty(DirtyFlags df);
+
+ bool hasFeature(PaintEngineFeatures feature) const { return (gccaps & feature) != 0; }
+
+ QPainter *painter() const;
+
+ void syncState();
+ inline bool isExtended() const { return extended; }
+
+protected:
+ QPaintEngine(QPaintEnginePrivate &data, PaintEngineFeatures devcaps=0);
+
+ QPaintEngineState *state;
+ PaintEngineFeatures gccaps;
+
+ uint active : 1;
+ uint selfDestruct : 1;
+ uint extended : 1;
+
+ QPaintEnginePrivate *d_ptr;
+
+private:
+ void setAutoDestruct(bool autoDestr) { selfDestruct = autoDestr; }
+ bool autoDestruct() const { return selfDestruct; }
+ QPaintEngine(const QPaintEngine &); QPaintEngine &operator=(const QPaintEngine &);
+
+ friend class QFontEngineBox;
+ friend class QFontEngineMac;
+ friend class QFontEngineWin;
+
+
+
+
+ friend class QFontEngineQPF1;
+
+
+ friend class QFontEngineQPF;
+
+ friend class QPSPrintEngine;
+ friend class QMacPrintEngine;
+ friend class QMacPrintEnginePrivate;
+
+ friend class QtopiaPrintEngine;
+ friend class QtopiaPrintEnginePrivate;
+ friend class QProxyFontEngine;
+
+ friend class QPainter;
+ friend class QPainterPrivate;
+ friend class QWidget;
+ friend class QWidgetPrivate;
+ friend class QWin32PaintEngine;
+ friend class QWin32PaintEnginePrivate;
+ friend class QMacCGContext;
+ friend class QPreviewPaintEngine;
+};
+
+
+class __attribute__((visibility("default"))) QPaintEngineState
+{
+public:
+ QPaintEngine::DirtyFlags state() const { return dirtyFlags; }
+
+ QPen pen() const;
+ QBrush brush() const;
+ QPointF brushOrigin() const;
+ QBrush backgroundBrush() const;
+ Qt::BGMode backgroundMode() const;
+ QFont font() const;
+ QMatrix matrix() const;
+ QTransform transform() const;
+
+ Qt::ClipOperation clipOperation() const;
+ QRegion clipRegion() const;
+ QPainterPath clipPath() const;
+ bool isClipEnabled() const;
+
+ QPainter::RenderHints renderHints() const;
+ QPainter::CompositionMode compositionMode() const;
+ qreal opacity() const;
+
+ QPainter *painter() const;
+
+ bool brushNeedsResolving() const;
+ bool penNeedsResolving() const;
+
+protected:
+ friend class QPaintEngine;
+ friend class QRasterPaintEngine;
+ friend class QWidget;
+ friend class QPainter;
+ friend class QPainterPrivate;
+ friend class QMacPrintEnginePrivate;
+
+ QPaintEngine::DirtyFlags dirtyFlags;
+};
+
+
+
+
+
+inline void QPaintEngine::fix_neg_rect(int *x, int *y, int *w, int *h)
+{
+ if (*w < 0) {
+ *w = -*w;
+ *x -= *w - 1;
+ }
+ if (*h < 0) {
+ *h = -*h;
+ *y -= *h - 1;
+ }
+}
+
+inline bool QPaintEngine::testDirty(DirtyFlags df) {
+ qt_noop();
+ return ((state->dirtyFlags & df) != 0);
+}
+
+inline void QPaintEngine::setDirty(DirtyFlags df) {
+ qt_noop();
+ state->dirtyFlags |= df;
+}
+
+inline void QPaintEngine::clearDirty(DirtyFlags df)
+{
+ qt_noop();
+ state->dirtyFlags &= ~static_cast<uint>(df);
+}
+
+inline QFlags<QTextItem::RenderFlags::enum_type> operator|(QTextItem::RenderFlags::enum_type f1, QTextItem::RenderFlags::enum_type f2) { return QFlags<QTextItem::RenderFlags::enum_type>(f1) | f2; } inline QFlags<QTextItem::RenderFlags::enum_type> operator|(QTextItem::RenderFlags::enum_type f1, QFlags<QTextItem::RenderFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QTextItem::RenderFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<QPaintEngine::PaintEngineFeatures::enum_type> operator|(QPaintEngine::PaintEngineFeatures::enum_type f1, QPaintEngine::PaintEngineFeatures::enum_type f2) { return QFlags<QPaintEngine::PaintEngineFeatures::enum_type>(f1) | f2; } inline QFlags<QPaintEngine::PaintEngineFeatures::enum_type> operator|(QPaintEngine::PaintEngineFeatures::enum_type f1, QFlags<QPaintEngine::PaintEngineFeatures::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QPaintEngine::PaintEngineFeatures::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<QPaintEngine::DirtyFlags::enum_type> operator|(QPaintEngine::DirtyFlags::enum_type f1, QPaintEngine::DirtyFlags::enum_type f2) { return QFlags<QPaintEngine::DirtyFlags::enum_type>(f1) | f2; } inline QFlags<QPaintEngine::DirtyFlags::enum_type> operator|(QPaintEngine::DirtyFlags::enum_type f1, QFlags<QPaintEngine::DirtyFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QPaintEngine::DirtyFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+
+
+
+
+# 1 "../../include/QtGui/qpaintengine.h" 2
+# 65 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtGui/qtextobject.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextobject.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextobject.h"
+#define QTEXTOBJECT_H
+
+# 1 "../../include/QtCore/qobject.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextobject.h" 2
+# 1 "../../include/QtGui/qtextformat.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextobject.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QTextObjectPrivate;
+class QTextDocument;
+class QTextDocumentPrivate;
+class QTextCursor;
+class QTextBlock;
+class QTextFragment;
+class QTextLayout;
+class QTextList;
+
+class __attribute__((visibility("default"))) QTextObject : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+
+protected:
+ explicit QTextObject(QTextDocument *doc);
+ ~QTextObject();
+
+ void setFormat(const QTextFormat &format);
+
+public:
+ QTextFormat format() const;
+ int formatIndex() const;
+
+ QTextDocument *document() const;
+
+ int objectIndex() const;
+
+ QTextDocumentPrivate *docHandle() const;
+
+protected:
+ QTextObject(QTextObjectPrivate &p, QTextDocument *doc);
+
+private:
+ inline QTextObjectPrivate* d_func() { return reinterpret_cast<QTextObjectPrivate *>(d_ptr); } inline const QTextObjectPrivate* d_func() const { return reinterpret_cast<const QTextObjectPrivate *>(d_ptr); } friend class QTextObjectPrivate;
+ QTextObject(const QTextObject &); QTextObject &operator=(const QTextObject &);
+ friend class QTextDocumentPrivate;
+};
+
+class QTextBlockGroupPrivate;
+class __attribute__((visibility("default"))) QTextBlockGroup : public QTextObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+
+protected:
+ explicit QTextBlockGroup(QTextDocument *doc);
+ ~QTextBlockGroup();
+
+ virtual void blockInserted(const QTextBlock &block);
+ virtual void blockRemoved(const QTextBlock &block);
+ virtual void blockFormatChanged(const QTextBlock &block);
+
+ QList<QTextBlock> blockList() const;
+
+protected:
+ QTextBlockGroup(QTextBlockGroupPrivate &p, QTextDocument *doc);
+private:
+ inline QTextBlockGroupPrivate* d_func() { return reinterpret_cast<QTextBlockGroupPrivate *>(d_ptr); } inline const QTextBlockGroupPrivate* d_func() const { return reinterpret_cast<const QTextBlockGroupPrivate *>(d_ptr); } friend class QTextBlockGroupPrivate;
+ QTextBlockGroup(const QTextBlockGroup &); QTextBlockGroup &operator=(const QTextBlockGroup &);
+ friend class QTextDocumentPrivate;
+};
+
+class __attribute__((visibility("default"))) QTextFrameLayoutData {
+public:
+ virtual ~QTextFrameLayoutData();
+};
+
+class QTextFramePrivate;
+class __attribute__((visibility("default"))) QTextFrame : public QTextObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+
+public:
+ explicit QTextFrame(QTextDocument *doc);
+ ~QTextFrame();
+
+ inline void setFrameFormat(const QTextFrameFormat &format);
+ QTextFrameFormat frameFormat() const { return QTextObject::format().toFrameFormat(); }
+
+ QTextCursor firstCursorPosition() const;
+ QTextCursor lastCursorPosition() const;
+ int firstPosition() const;
+ int lastPosition() const;
+
+ QTextFrameLayoutData *layoutData() const;
+ void setLayoutData(QTextFrameLayoutData *data);
+
+ QList<QTextFrame *> childFrames() const;
+ QTextFrame *parentFrame() const;
+
+ class __attribute__((visibility("default"))) iterator {
+ QTextFrame *f;
+ int b;
+ int e;
+ QTextFrame *cf;
+ int cb;
+
+ friend class QTextFrame;
+ friend class QTextTableCell;
+ friend class QTextDocumentLayoutPrivate;
+ iterator(QTextFrame *frame, int block, int begin, int end);
+ public:
+ iterator();
+ iterator(const iterator &o);
+ iterator &operator=(const iterator &o);
+
+ QTextFrame *parentFrame() const { return f; }
+
+ QTextFrame *currentFrame() const;
+ QTextBlock currentBlock() const;
+
+ bool atEnd() const { return !cf && cb == e; }
+
+ inline bool operator==(const iterator &o) const { return f == o.f && cf == o.cf && cb == o.cb; }
+ inline bool operator!=(const iterator &o) const { return f != o.f || cf != o.cf || cb != o.cb; }
+ iterator &operator++();
+ inline iterator operator++(int) { iterator tmp = *this; operator++(); return tmp; }
+ iterator &operator--();
+ inline iterator operator--(int) { iterator tmp = *this; operator--(); return tmp; }
+ };
+
+ friend class iterator;
+
+ typedef iterator Iterator;
+
+ iterator begin() const;
+ iterator end() const;
+
+protected:
+ QTextFrame(QTextFramePrivate &p, QTextDocument *doc);
+private:
+ friend class QTextDocumentPrivate;
+ inline QTextFramePrivate* d_func() { return reinterpret_cast<QTextFramePrivate *>(d_ptr); } inline const QTextFramePrivate* d_func() const { return reinterpret_cast<const QTextFramePrivate *>(d_ptr); } friend class QTextFramePrivate;
+ QTextFrame(const QTextFrame &); QTextFrame &operator=(const QTextFrame &);
+};
+template <> class QTypeInfo<QTextFrame::iterator> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTextFrame::iterator)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTextFrame::iterator"; } };
+
+inline void QTextFrame::setFrameFormat(const QTextFrameFormat &aformat)
+{ QTextObject::setFormat(aformat); }
+
+class __attribute__((visibility("default"))) QTextBlockUserData {
+public:
+ virtual ~QTextBlockUserData();
+};
+
+class __attribute__((visibility("default"))) QTextBlock
+{
+ friend class QSyntaxHighlighter;
+public:
+ inline QTextBlock(QTextDocumentPrivate *priv, int b) : p(priv), n(b) {}
+ inline QTextBlock() : p(0), n(0) {}
+ inline QTextBlock(const QTextBlock &o) : p(o.p), n(o.n) {}
+ inline QTextBlock &operator=(const QTextBlock &o) { p = o.p; n = o.n; return *this; }
+
+ inline bool isValid() const { return p != 0 && n != 0; }
+
+ inline bool operator==(const QTextBlock &o) const { return p == o.p && n == o.n; }
+ inline bool operator!=(const QTextBlock &o) const { return p != o.p || n != o.n; }
+ inline bool operator<(const QTextBlock &o) const { return position() < o.position(); }
+
+ int position() const;
+ int length() const;
+ bool contains(int position) const;
+
+ QTextLayout *layout() const;
+ void clearLayout();
+ QTextBlockFormat blockFormat() const;
+ int blockFormatIndex() const;
+ QTextCharFormat charFormat() const;
+ int charFormatIndex() const;
+
+ QString text() const;
+
+ const QTextDocument *document() const;
+
+ QTextList *textList() const;
+
+ QTextBlockUserData *userData() const;
+ void setUserData(QTextBlockUserData *data);
+
+ int userState() const;
+ void setUserState(int state);
+
+ int revision() const;
+ void setRevision(int rev);
+
+ bool isVisible() const;
+ void setVisible(bool visible);
+
+ int blockNumber() const;
+ int firstLineNumber() const;
+
+ void setLineCount(int count);
+ int lineCount() const;
+
+ class __attribute__((visibility("default"))) iterator {
+ const QTextDocumentPrivate *p;
+ int b;
+ int e;
+ int n;
+ friend class QTextBlock;
+ iterator(const QTextDocumentPrivate *priv, int begin, int end, int f) : p(priv), b(begin), e(end), n(f) {}
+ public:
+ iterator() : p(0), b(0), e(0), n(0) {}
+ iterator(const iterator &o) : p(o.p), b(o.b), e(o.e), n(o.n) {}
+
+ QTextFragment fragment() const;
+
+ bool atEnd() const { return n == e; }
+
+ inline bool operator==(const iterator &o) const { return p == o.p && n == o.n; }
+ inline bool operator!=(const iterator &o) const { return p != o.p || n != o.n; }
+ iterator &operator++();
+ inline iterator operator++(int) { iterator tmp = *this; operator++(); return tmp; }
+ iterator &operator--();
+ inline iterator operator--(int) { iterator tmp = *this; operator--(); return tmp; }
+ };
+
+
+ typedef iterator Iterator;
+
+ iterator begin() const;
+ iterator end() const;
+
+ QTextBlock next() const;
+ QTextBlock previous() const;
+
+ inline QTextDocumentPrivate *docHandle() const { return p; }
+ inline int fragmentIndex() const { return n; }
+
+private:
+ QTextDocumentPrivate *p;
+ int n;
+ friend class QTextDocumentPrivate;
+ friend class QTextLayout;
+};
+
+template <> class QTypeInfo<QTextBlock> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTextBlock)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTextBlock"; } };
+template <> class QTypeInfo<QTextBlock::iterator> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTextBlock::iterator)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTextBlock::iterator"; } };
+
+
+class __attribute__((visibility("default"))) QTextFragment
+{
+public:
+ inline QTextFragment(const QTextDocumentPrivate *priv, int f, int fe) : p(priv), n(f), ne(fe) {}
+ inline QTextFragment() : p(0), n(0), ne(0) {}
+ inline QTextFragment(const QTextFragment &o) : p(o.p), n(o.n), ne(o.ne) {}
+ inline QTextFragment &operator=(const QTextFragment &o) { p = o.p; n = o.n; ne = o.ne; return *this; }
+
+ inline bool isValid() const { return p && n; }
+
+ inline bool operator==(const QTextFragment &o) const { return p == o.p && n == o.n; }
+ inline bool operator!=(const QTextFragment &o) const { return p != o.p || n != o.n; }
+ inline bool operator<(const QTextFragment &o) const { return position() < o.position(); }
+
+ int position() const;
+ int length() const;
+ bool contains(int position) const;
+
+ QTextCharFormat charFormat() const;
+ int charFormatIndex() const;
+ QString text() const;
+
+private:
+ const QTextDocumentPrivate *p;
+ int n;
+ int ne;
+};
+
+template <> class QTypeInfo<QTextFragment> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTextFragment)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTextFragment"; } };
+
+
+
+
+# 1 "../../include/QtGui/qtextobject.h" 2
+# 66 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtGui/qtextoption.h" 1
+# 67 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtCore/qset.h" 1
+# 68 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtCore/qdebug.h" 1
+# 69 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+
+# 1 "../../include/QtGui/private/qtextdocument_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h"
+#define QTEXTDOCUMENT_P_H
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h"
+# 1 "../../include/QtCore/qglobal.h" 1
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 58 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtCore/qvector.h" 1
+# 59 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtCore/qlist.h" 1
+# 60 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtCore/private/qobject_p.h" 1
+# 1 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject_p.h" 1
+# 43 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject_p.h"
+#define QOBJECT_P_H
+# 56 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject_p.h"
+# 1 "../../include/QtCore/qobject.h" 1
+# 57 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject_p.h" 2
+# 1 "../../include/QtCore/qpointer.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qpointer.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qpointer.h"
+#define QPOINTER_H
+
+# 1 "../../include/QtCore/qobject.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qpointer.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+template <class T>
+class QPointer
+{
+ QObject *o;
+public:
+ inline QPointer() : o(0) {}
+ inline QPointer(T *p) : o(p)
+ { QMetaObject::addGuard(&o); }
+ inline QPointer(const QPointer<T> &p) : o(p.o)
+ { QMetaObject::addGuard(&o); }
+ inline ~QPointer()
+ { QMetaObject::removeGuard(&o); }
+ inline QPointer<T> &operator=(const QPointer<T> &p)
+ { if (this != &p) QMetaObject::changeGuard(&o, p.o); return *this; }
+ inline QPointer<T> &operator=(T* p)
+ { if (o != p) QMetaObject::changeGuard(&o, p); return *this; }
+
+ inline bool isNull() const
+ { return !o; }
+
+ inline T* operator->() const
+ { return static_cast<T*>(const_cast<QObject*>(o)); }
+ inline T& operator*() const
+ { return *static_cast<T*>(const_cast<QObject*>(o)); }
+ inline operator T*() const
+ { return static_cast<T*>(const_cast<QObject*>(o)); }
+ inline T* data() const
+ { return static_cast<T*>(const_cast<QObject*>(o)); }
+};
+
+
+
+
+template <class T>
+inline bool operator==(const T *o, const QPointer<T> &p)
+{ return o == p.operator->(); }
+
+template<class T>
+inline bool operator==(const QPointer<T> &p, const T *o)
+{ return p.operator->() == o; }
+# 106 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qpointer.h"
+template <class T>
+inline bool operator==(T *o, const QPointer<T> &p)
+{ return o == p.operator->(); }
+
+template<class T>
+inline bool operator==(const QPointer<T> &p, T *o)
+{ return p.operator->() == o; }
+
+template<class T>
+inline bool operator==(const QPointer<T> &p1, const QPointer<T> &p2)
+{ return p1.operator->() == p2.operator->(); }
+
+
+
+
+template <class T>
+inline bool operator!=(const T *o, const QPointer<T> &p)
+{ return o != p.operator->(); }
+
+template<class T>
+inline bool operator!= (const QPointer<T> &p, const T *o)
+{ return p.operator->() != o; }
+# 141 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qpointer.h"
+template <class T>
+inline bool operator!=(T *o, const QPointer<T> &p)
+{ return o != p.operator->(); }
+
+template<class T>
+inline bool operator!= (const QPointer<T> &p, T *o)
+{ return p.operator->() != o; }
+
+template<class T>
+inline bool operator!= (const QPointer<T> &p1, const QPointer<T> &p2)
+{ return p1.operator->() != p2.operator->() ; }
+# 164 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qpointer.h"
+
+
+
+# 1 "../../include/QtCore/qpointer.h" 2
+# 58 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject_p.h" 2
+# 1 "../../include/QtCore/qcoreevent.h" 1
+# 59 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject_p.h" 2
+# 1 "../../include/QtCore/qlist.h" 1
+# 60 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject_p.h" 2
+# 1 "../../include/QtCore/qvector.h" 1
+# 61 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject_p.h" 2
+# 1 "../../include/QtCore/qreadwritelock.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qreadwritelock.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qreadwritelock.h"
+#define QREADWRITELOCK_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qreadwritelock.h" 2
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/limits.h" 1 3 4
+
+
+
+
+
+
+#define _GCC_LIMITS_H_
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/syslimits.h" 1 3 4
+
+
+
+
+
+#define _GCC_NEXT_LIMITS_H
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/limits.h" 1 3 4
+# 122 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/limits.h" 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/limits.h" 1 3 4
+# 24 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/limits.h" 3 4
+#define _LIBC_LIMITS_H_ 1
+
+
+
+
+
+
+
+#define MB_LEN_MAX 16
+# 144 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/limits.h" 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/posix1_lim.h" 1 3 4
+# 26 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/posix1_lim.h" 3 4
+#define _BITS_POSIX1_LIM_H 1
+
+
+
+
+
+#define _POSIX_AIO_LISTIO_MAX 2
+
+
+#define _POSIX_AIO_MAX 1
+
+
+#define _POSIX_ARG_MAX 4096
+
+
+
+#define _POSIX_CHILD_MAX 25
+
+
+
+
+
+#define _POSIX_DELAYTIMER_MAX 32
+
+
+
+#define _POSIX_HOST_NAME_MAX 255
+
+
+#define _POSIX_LINK_MAX 8
+
+
+#define _POSIX_LOGIN_NAME_MAX 9
+
+
+#define _POSIX_MAX_CANON 255
+
+
+
+#define _POSIX_MAX_INPUT 255
+
+
+#define _POSIX_MQ_OPEN_MAX 8
+
+
+#define _POSIX_MQ_PRIO_MAX 32
+
+
+#define _POSIX_NAME_MAX 14
+
+
+
+#define _POSIX_NGROUPS_MAX 8
+
+
+
+
+
+
+#define _POSIX_OPEN_MAX 20
+
+
+
+
+
+
+#define _POSIX_FD_SETSIZE _POSIX_OPEN_MAX
+
+
+#define _POSIX_PATH_MAX 256
+
+
+#define _POSIX_PIPE_BUF 512
+
+
+
+#define _POSIX_RE_DUP_MAX 255
+
+
+#define _POSIX_RTSIG_MAX 8
+
+
+#define _POSIX_SEM_NSEMS_MAX 256
+
+
+#define _POSIX_SEM_VALUE_MAX 32767
+
+
+#define _POSIX_SIGQUEUE_MAX 32
+
+
+#define _POSIX_SSIZE_MAX 32767
+
+
+#define _POSIX_STREAM_MAX 8
+
+
+#define _POSIX_SYMLINK_MAX 255
+
+
+
+#define _POSIX_SYMLOOP_MAX 8
+
+
+#define _POSIX_TIMER_MAX 32
+
+
+#define _POSIX_TTY_NAME_MAX 9
+
+
+#define _POSIX_TZNAME_MAX 6
+
+
+#define _POSIX_QLIMIT 1
+
+
+
+#define _POSIX_HIWAT _POSIX_PIPE_BUF
+
+
+#define _POSIX_UIO_MAXIOV 16
+
+
+#define _POSIX_CLOCKRES_MIN 20000000
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/local_lim.h" 1 3 4
+# 26 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/local_lim.h" 3 4
+#define __undef_NR_OPEN
+
+
+#define __undef_LINK_MAX
+
+
+#define __undef_OPEN_MAX
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/linux/limits.h" 1 3 4
+
+#define _LINUX_LIMITS_H
+
+#define NR_OPEN 1024
+
+#define NGROUPS_MAX 65536
+#define ARG_MAX 131072
+#define LINK_MAX 127
+#define MAX_CANON 255
+#define MAX_INPUT 255
+#define NAME_MAX 255
+#define PATH_MAX 4096
+#define PIPE_BUF 4096
+#define XATTR_NAME_MAX 255
+#define XATTR_SIZE_MAX 65536
+#define XATTR_LIST_MAX 65536
+
+#define RTSIG_MAX 32
+# 37 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/local_lim.h" 2 3 4
+
+
+
+#undef NR_OPEN
+#undef __undef_NR_OPEN
+
+
+
+#undef LINK_MAX
+#undef __undef_LINK_MAX
+
+
+
+#undef OPEN_MAX
+#undef __undef_OPEN_MAX
+
+
+
+#define _POSIX_THREAD_KEYS_MAX 128
+
+#define PTHREAD_KEYS_MAX 1024
+
+
+#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
+
+#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
+
+
+#define _POSIX_THREAD_THREADS_MAX 64
+
+
+
+#define AIO_PRIO_DELTA_MAX 20
+
+
+#define PTHREAD_STACK_MIN 16384
+
+
+#define DELAYTIMER_MAX 2147483647
+
+
+#define TTY_NAME_MAX 32
+
+
+#define LOGIN_NAME_MAX 256
+
+
+#define HOST_NAME_MAX 64
+
+
+#define MQ_PRIO_MAX 32768
+# 154 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/posix1_lim.h" 2 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_local_lim.h" 1 3 4
+# 11 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_local_lim.h" 3 4
+#define _BITS_UCLIBC_LOCAL_LIM_H 1
+# 20 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/uClibc_local_lim.h" 3 4
+#define PTHREAD_THREADS_MAX 1024
+#define TIMER_MAX 256
+# 155 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/posix1_lim.h" 2 3 4
+
+
+
+#define SSIZE_MAX LONG_MAX
+# 145 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/limits.h" 2 3 4
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/posix2_lim.h" 1 3 4
+# 24 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/posix2_lim.h" 3 4
+#define _BITS_POSIX2_LIM_H 1
+
+
+
+#define _POSIX2_BC_BASE_MAX 99
+
+
+#define _POSIX2_BC_DIM_MAX 2048
+
+
+#define _POSIX2_BC_SCALE_MAX 99
+
+
+#define _POSIX2_BC_STRING_MAX 1000
+
+
+
+#define _POSIX2_COLL_WEIGHTS_MAX 2
+
+
+
+#define _POSIX2_EXPR_NEST_MAX 32
+
+
+#define _POSIX2_LINE_MAX 2048
+
+
+
+#define _POSIX2_RE_DUP_MAX 255
+
+
+
+#define _POSIX2_CHARCLASS_NAME_MAX 14
+
+
+
+
+
+
+
+#define BC_BASE_MAX _POSIX2_BC_BASE_MAX
+
+
+#define BC_DIM_MAX _POSIX2_BC_DIM_MAX
+
+
+#define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX
+
+
+#define BC_STRING_MAX _POSIX2_BC_STRING_MAX
+
+
+#define COLL_WEIGHTS_MAX 255
+
+
+#define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX
+
+
+#define LINE_MAX _POSIX2_LINE_MAX
+
+
+#define CHARCLASS_NAME_MAX 2048
+
+
+
+#define RE_DUP_MAX (0x7fff)
+# 149 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/limits.h" 2 3 4
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/xopen_lim.h" 1 3 4
+# 31 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/xopen_lim.h" 3 4
+#define _XOPEN_LIM_H 1
+
+#define __need_IOV_MAX
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/stdio_lim.h" 1 3 4
+# 24 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/stdio_lim.h" 3 4
+#define L_tmpnam 20
+#define TMP_MAX 238328
+#define FILENAME_MAX 4095
+
+
+#define L_ctermid 9
+#define L_cuserid 9
+
+
+
+
+#undef FOPEN_MAX
+#define FOPEN_MAX 16
+
+
+
+#define IOV_MAX 1024
+# 35 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/xopen_lim.h" 2 3 4
+# 66 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/xopen_lim.h" 3 4
+#define _XOPEN_IOV_MAX _POSIX_UIO_MAXIOV
+# 76 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/xopen_lim.h" 3 4
+#define NL_ARGMAX __UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS__
+
+
+
+#define NL_LANGMAX _POSIX2_LINE_MAX
+
+
+#define NL_MSGMAX INT_MAX
+
+
+
+#define NL_NMAX INT_MAX
+
+
+#define NL_SETMAX INT_MAX
+
+
+#define NL_TEXTMAX INT_MAX
+
+
+#define NZERO 20
+# 116 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/xopen_lim.h" 3 4
+#define WORD_BIT 32
+# 136 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/xopen_lim.h" 3 4
+#define LONG_BIT 32
+# 153 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/limits.h" 2 3 4
+# 123 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/limits.h" 2 3 4
+# 8 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/syslimits.h" 2 3 4
+#undef _GCC_NEXT_LIMITS_H
+# 12 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/limits.h" 2 3 4
+
+
+#define _LIMITS_H___
+
+
+#undef CHAR_BIT
+#define CHAR_BIT __CHAR_BIT__
+
+
+
+
+
+
+
+#undef SCHAR_MIN
+#define SCHAR_MIN (-SCHAR_MAX - 1)
+#undef SCHAR_MAX
+#define SCHAR_MAX __SCHAR_MAX__
+
+
+#undef UCHAR_MAX
+
+
+
+#define UCHAR_MAX (SCHAR_MAX * 2 + 1)
+# 50 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/limits.h" 3 4
+#undef CHAR_MIN
+#define CHAR_MIN SCHAR_MIN
+#undef CHAR_MAX
+#define CHAR_MAX SCHAR_MAX
+
+
+
+#undef SHRT_MIN
+#define SHRT_MIN (-SHRT_MAX - 1)
+#undef SHRT_MAX
+#define SHRT_MAX __SHRT_MAX__
+
+
+#undef USHRT_MAX
+
+
+
+#define USHRT_MAX (SHRT_MAX * 2 + 1)
+
+
+
+#undef INT_MIN
+#define INT_MIN (-INT_MAX - 1)
+#undef INT_MAX
+#define INT_MAX __INT_MAX__
+
+
+#undef UINT_MAX
+#define UINT_MAX (INT_MAX * 2U + 1U)
+
+
+
+#undef LONG_MIN
+#define LONG_MIN (-LONG_MAX - 1L)
+#undef LONG_MAX
+#define LONG_MAX __LONG_MAX__
+
+
+#undef ULONG_MAX
+#define ULONG_MAX (LONG_MAX * 2UL + 1UL)
+# 105 "/opt/uClinux/bfin-linux-uclibc/bin/../lib/gcc/bfin-linux-uclibc/4.3.4/include-fixed/limits.h" 3 4
+#undef LONG_LONG_MIN
+#define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL)
+#undef LONG_LONG_MAX
+#define LONG_LONG_MAX __LONG_LONG_MAX__
+
+
+#undef ULONG_LONG_MAX
+#define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL)
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qreadwritelock.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+
+
+struct QReadWriteLockPrivate;
+
+class __attribute__((visibility("default"))) QReadWriteLock
+{
+public:
+ enum RecursionMode { NonRecursive, Recursive };
+
+ QReadWriteLock();
+ QReadWriteLock(RecursionMode recursionMode);
+ ~QReadWriteLock();
+
+ void lockForRead();
+ bool tryLockForRead();
+ bool tryLockForRead(int timeout);
+
+ void lockForWrite();
+ bool tryLockForWrite();
+ bool tryLockForWrite(int timeout);
+
+ void unlock();
+
+private:
+ QReadWriteLock(const QReadWriteLock &); QReadWriteLock &operator=(const QReadWriteLock &);
+ QReadWriteLockPrivate *d;
+
+ friend class QWaitCondition;
+};
+
+
+
+
+
+
+class __attribute__((visibility("default"))) QReadLocker
+{
+public:
+ inline QReadLocker(QReadWriteLock *readWriteLock);
+
+ inline ~QReadLocker()
+ { unlock(); }
+
+ inline void unlock()
+ {
+ if (q_lock) {
+ if ((q_val & quintptr(1u)) == quintptr(1u)) {
+ q_val &= ~quintptr(1u);
+ q_lock->unlock();
+ }
+ }
+ }
+
+ inline void relock()
+ {
+ if (q_lock) {
+ if ((q_val & quintptr(1u)) == quintptr(0u)) {
+ q_lock->lockForRead();
+ q_val |= quintptr(1u);
+ }
+ }
+ }
+
+ inline QReadWriteLock *readWriteLock() const
+ { return reinterpret_cast<QReadWriteLock *>(q_val & ~quintptr(1u)); }
+
+private:
+ QReadLocker(const QReadLocker &); QReadLocker &operator=(const QReadLocker &);
+ union {
+ QReadWriteLock *q_lock;
+ quintptr q_val;
+ };
+};
+
+inline QReadLocker::QReadLocker(QReadWriteLock *areadWriteLock)
+ : q_lock(areadWriteLock)
+{
+ qt_noop();
+
+ relock();
+}
+
+class __attribute__((visibility("default"))) QWriteLocker
+{
+public:
+ inline QWriteLocker(QReadWriteLock *readWriteLock);
+
+ inline ~QWriteLocker()
+ { unlock(); }
+
+ inline void unlock()
+ {
+ if (q_lock) {
+ if ((q_val & quintptr(1u)) == quintptr(1u)) {
+ q_val &= ~quintptr(1u);
+ q_lock->unlock();
+ }
+ }
+ }
+
+ inline void relock()
+ {
+ if (q_lock) {
+ if ((q_val & quintptr(1u)) == quintptr(0u)) {
+ q_lock->lockForWrite();
+ q_val |= quintptr(1u);
+ }
+ }
+ }
+
+ inline QReadWriteLock *readWriteLock() const
+ { return reinterpret_cast<QReadWriteLock *>(q_val & ~quintptr(1u)); }
+
+
+private:
+ QWriteLocker(const QWriteLocker &); QWriteLocker &operator=(const QWriteLocker &);
+ union{
+ QReadWriteLock *q_lock;
+ quintptr q_val;
+ };
+};
+
+inline QWriteLocker::QWriteLocker(QReadWriteLock *areadWriteLock)
+ : q_lock(areadWriteLock)
+{
+ qt_noop();
+
+ relock();
+}
+# 240 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/thread/qreadwritelock.h"
+
+
+
+# 1 "../../include/QtCore/qreadwritelock.h" 2
+# 62 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject_p.h" 2
+# 1 "../../include/QtCore/qvariant.h" 1
+# 63 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qobject_p.h" 2
+
+
+
+class QVariant;
+class QThreadData;
+class QObjectConnectionListVector;
+
+
+struct QSignalSpyCallbackSet
+{
+ typedef void (*BeginCallback)(QObject *caller, int method_index, void **argv);
+ typedef void (*EndCallback)(QObject *caller, int method_index);
+ BeginCallback signal_begin_callback,
+ slot_begin_callback;
+ EndCallback signal_end_callback,
+ slot_end_callback;
+};
+void __attribute__((visibility("default"))) qt_register_signal_spy_callbacks(const QSignalSpyCallbackSet &callback_set);
+
+extern QSignalSpyCallbackSet __attribute__((visibility("default"))) qt_signal_spy_callback_set;
+
+inline QObjectData::~QObjectData() {}
+
+enum { QObjectPrivateVersion = 0x040501 };
+
+class __attribute__((visibility("default"))) QObjectPrivate : public QObjectData
+{
+ inline QObject* q_func() { return static_cast<QObject *>(q_ptr); } inline const QObject* q_func() const { return static_cast<const QObject *>(q_ptr); } friend class QObject;
+
+public:
+ QObjectPrivate(int version = QObjectPrivateVersion);
+ virtual ~QObjectPrivate();
+
+
+
+
+
+
+
+ QList<QObject *> unused;
+
+
+
+ QThreadData *threadData;
+ void moveToThread_helper();
+ void setThreadData_helper(QThreadData *currentData, QThreadData *targetData);
+ void _q_reregisterTimers(void *pointer);
+
+ struct Sender
+ {
+ QObject *sender;
+ int signal;
+ int ref;
+ };
+
+
+ Sender *currentSender;
+
+ QObject *currentChildBeingDeleted;
+
+ bool isSender(const QObject *receiver, const char *signal) const;
+ QObjectList receiverList(const char *signal) const;
+ QObjectList senderList() const;
+
+ QList<QPointer<QObject> > eventFilters;
+
+ void setParent_helper(QObject *);
+
+ void deleteChildren();
+
+ static void clearGuards(QObject *);
+
+ struct ExtraData
+ {
+
+ QVector<QObjectUserData *> userData;
+
+ QList<QByteArray> propertyNames;
+ QList<QVariant> propertyValues;
+ };
+ ExtraData *extraData;
+ mutable quint32 connectedSignals;
+
+ QString objectName;
+
+
+ struct Connection
+ {
+ QObject *receiver;
+ int method;
+ uint connectionType : 3;
+ QBasicAtomicPointer<int> argumentTypes;
+ };
+ typedef QList<Connection> ConnectionList;
+
+ QObjectConnectionListVector *connectionLists;
+ void addConnection(int signal, Connection *c);
+ void removeReceiver(int signal, QObject *receiver);
+ void cleanConnectionLists();
+
+ QList<Sender> senders;
+ void refSender(QObject *sender, int signal);
+ void derefSender(QObject *sender, int signal);
+ void removeSender(QObject *sender, int signal);
+
+ static Sender *setCurrentSender(QObject *receiver,
+ Sender *sender);
+ static void resetCurrentSender(QObject *receiver,
+ Sender *currentSender,
+ Sender *previousSender);
+ static int *setDeleteWatch(QObjectPrivate *d, int *newWatch);
+ static void resetDeleteWatch(QObjectPrivate *d, int *oldWatch, int deleteWatch);
+
+ int *deleteWatch;
+
+ static QObjectPrivate *get(QObject *o) {
+ return o->d_func();
+ }
+};
+
+template <> class QTypeInfo<QObjectPrivate::Connection> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QObjectPrivate::Connection)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QObjectPrivate::Connection"; } };
+template <> class QTypeInfo<QObjectPrivate::Sender> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QObjectPrivate::Sender)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QObjectPrivate::Sender"; } };
+
+class QSemaphore;
+class __attribute__((visibility("default"))) QMetaCallEvent : public QEvent
+{
+public:
+ QMetaCallEvent(int id, const QObject *sender, int signalId,
+ int nargs = 0, int *types = 0, void **args = 0, QSemaphore *semaphore = 0);
+ ~QMetaCallEvent();
+
+ inline int id() const { return id_; }
+ inline const QObject *sender() const { return sender_; }
+ inline int signalId() const { return signalId_; }
+ inline void **args() const { return args_; }
+
+ virtual int placeMetaCall(QObject *object);
+
+private:
+ int id_;
+ const QObject *sender_;
+ int signalId_;
+ int nargs_;
+ int *types_;
+ void **args_;
+ QSemaphore *semaphore_;
+};
+
+class __attribute__((visibility("default"))) QBoolBlocker
+{
+public:
+ inline QBoolBlocker(bool &b, bool value=true):block(b), reset(b){block = value;}
+ inline ~QBoolBlocker(){block = reset; }
+private:
+ bool █
+ bool reset;
+};
+
+void __attribute__((visibility("default"))) qDeleteInEventHandler(QObject *o);
+
+
+# 1 "../../include/QtCore/private/qobject_p.h" 2
+# 61 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtGui/private/qfragmentmap_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfragmentmap_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfragmentmap_p.h"
+#define QFRAGMENTMAP_P_H
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfragmentmap_p.h"
+# 1 "../../include/QtCore/qglobal.h" 1
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfragmentmap_p.h" 2
+
+# 1 "../../include/QtCore/private/qtools_p.h" 1
+# 1 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qtools_p.h" 1
+# 43 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qtools_p.h"
+#define QTOOLS_P_H
+# 56 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qtools_p.h"
+# 1 "../../include/QtCore/qglobal.h" 1
+# 57 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qtools_p.h" 2
+
+
+
+
+int __attribute__((visibility("default"))) qAllocMore(int alloc, int extra);
+
+
+# 1 "../../include/QtCore/private/qtools_p.h" 2
+# 59 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfragmentmap_p.h" 2
+
+
+
+
+template <int N = 1>
+class QFragment
+{
+public:
+ quint32 parent;
+ quint32 left;
+ quint32 right;
+ quint32 color;
+ quint32 size_left_array[N];
+ quint32 size_array[N];
+ enum {size_array_max = N };
+};
+
+template <class Fragment>
+class QFragmentMapData
+{
+ enum Color { Red, Black };
+public:
+ QFragmentMapData();
+ ~QFragmentMapData();
+
+ void init();
+
+ class Header
+ {
+ public:
+ quint32 root;
+ quint32 tag;
+ quint32 freelist;
+ quint32 node_count;
+ quint32 allocated;
+ };
+
+
+ enum {fragmentSize = sizeof(Fragment) };
+
+
+ int length(uint field = 0) const;
+
+
+ inline Fragment *fragment(uint index) {
+ return (fragments + index);
+ }
+ inline const Fragment *fragment(uint index) const {
+ return (fragments + index);
+ }
+
+
+ inline Fragment &F(uint index) { return fragments[index] ; }
+ inline const Fragment &F(uint index) const { return fragments[index] ; }
+
+ inline bool isRoot(uint index) const {
+ return !fragment(index)->parent;
+ }
+
+ inline uint position(uint node, uint field = 0) const {
+ qt_noop();
+ const Fragment *f = fragment(node);
+ uint offset = f->size_left_array[field];
+ while (f->parent) {
+ uint p = f->parent;
+ f = fragment(p);
+ if (f->right == node)
+ offset += f->size_left_array[field] + f->size_array[field];
+ node = p;
+ }
+ return offset;
+ }
+ inline uint sizeRight(uint node, uint field = 0) const {
+ qt_noop();
+ uint sr = 0;
+ const Fragment *f = fragment(node);
+ node = f->right;
+ while (node) {
+ f = fragment(node);
+ sr += f->size_left_array[field] + f->size_array[field];
+ node = f->right;
+ }
+ return sr;
+ }
+ inline uint sizeLeft(uint node, uint field = 0) const {
+ qt_noop();
+ return fragment(node)->size_left_array[field];
+ }
+
+
+ inline uint size(uint node, uint field = 0) const {
+ qt_noop();
+ return fragment(node)->size_array[field];
+ }
+
+ inline void setSize(uint node, int new_size, uint field = 0) {
+ qt_noop();
+ Fragment *f = fragment(node);
+ int diff = new_size - f->size_array[field];
+ f->size_array[field] = new_size;
+ while (f->parent) {
+ uint p = f->parent;
+ f = fragment(p);
+ if (f->left == node)
+ f->size_left_array[field] += diff;
+ node = p;
+ }
+ }
+
+
+ uint findNode(int k, uint field = 0) const;
+
+ uint insert_single(int key, uint length);
+ uint erase_single(uint f);
+
+ uint minimum(uint n) const {
+ while (n && fragment(n)->left)
+ n = fragment(n)->left;
+ return n;
+ }
+
+ uint maximum(uint n) const {
+ while (n && fragment(n)->right)
+ n = fragment(n)->right;
+ return n;
+ }
+
+ uint next(uint n) const;
+ uint previous(uint n) const;
+
+ inline uint root() const {
+ qt_noop();
+ return head->root;
+ }
+ inline void setRoot(uint new_root) {
+ qt_noop();
+ head->root = new_root;
+ }
+
+ union {
+ Header *head;
+ Fragment *fragments;
+ };
+
+private:
+
+ void rotateLeft(uint x);
+ void rotateRight(uint x);
+ void rebalance(uint x);
+ void removeAndRebalance(uint z);
+
+ uint createFragment();
+ void freeFragment(uint f);
+
+};
+
+template <class Fragment>
+QFragmentMapData<Fragment>::QFragmentMapData()
+{
+ init();
+}
+
+template <class Fragment>
+void QFragmentMapData<Fragment>::init()
+{
+ fragments = (Fragment *)malloc(64*fragmentSize);
+ head->tag = (((quint32)'p') << 24) | (((quint32)'m') << 16) | (((quint32)'a') << 8) | 'p';
+ head->root = 0;
+ head->freelist = 1;
+ head->node_count = 0;
+ head->allocated = 64;
+
+ F(head->freelist).right = 0;
+}
+
+template <class Fragment>
+QFragmentMapData<Fragment>::~QFragmentMapData()
+{
+ free(head);
+}
+
+template <class Fragment>
+uint QFragmentMapData<Fragment>::createFragment()
+{
+ qt_noop();
+
+ uint freePos = head->freelist;
+ if (freePos == head->allocated) {
+
+ uint needed = qAllocMore((freePos+1)*fragmentSize, 0);
+ qt_noop();
+ fragments = (Fragment *)realloc(fragments, needed);
+ head->allocated = needed/fragmentSize;
+ F(freePos).right = 0;
+ }
+
+ uint nextPos = F(freePos).right;
+ if (!nextPos) {
+ nextPos = freePos+1;
+ if (nextPos < head->allocated)
+ F(nextPos).right = 0;
+ }
+
+ head->freelist = nextPos;
+
+ ++head->node_count;
+
+ return freePos;
+}
+
+template <class Fragment>
+void QFragmentMapData<Fragment>::freeFragment(uint i)
+{
+ F(i).right = head->freelist;
+ head->freelist = i;
+
+ --head->node_count;
+}
+
+
+template <class Fragment>
+uint QFragmentMapData<Fragment>::next(uint n) const {
+ qt_noop();
+ if (F(n).right) {
+ n = F(n).right;
+ while (F(n).left)
+ n = F(n).left;
+ } else {
+ uint y = F(n).parent;
+ while (F(n).parent && n == F(y).right) {
+ n = y;
+ y = F(y).parent;
+ }
+ n = y;
+ }
+ return n;
+}
+
+template <class Fragment>
+uint QFragmentMapData<Fragment>::previous(uint n) const {
+ if (!n)
+ return maximum(root());
+
+ if (F(n).left) {
+ n = F(n).left;
+ while (F(n).right)
+ n = F(n).right;
+ } else {
+ uint y = F(n).parent;
+ while (F(n).parent && n == F(y).left) {
+ n = y;
+ y = F(y).parent;
+ }
+ n = y;
+ }
+ return n;
+}
+# 325 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfragmentmap_p.h"
+template <class Fragment>
+void QFragmentMapData<Fragment>::rotateLeft(uint x)
+{
+ uint p = F(x).parent;
+ uint y = F(x).right;
+
+
+ if (y) {
+ F(x).right = F(y).left;
+ if (F(y).left)
+ F(F(y).left).parent = x;
+ F(y).left = x;
+ F(y).parent = p;
+ } else {
+ F(x).right = 0;
+ }
+ if (!p) {
+ qt_noop();
+ head->root = y;
+ }
+ else if (x == F(p).left)
+ F(p).left = y;
+ else
+ F(p).right = y;
+ F(x).parent = y;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(y).size_left_array[field] += F(x).size_left_array[field] + F(x).size_array[field];
+}
+# 362 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfragmentmap_p.h"
+template <class Fragment>
+void QFragmentMapData<Fragment>::rotateRight(uint x)
+{
+ uint y = F(x).left;
+ uint p = F(x).parent;
+
+ if (y) {
+ F(x).left = F(y).right;
+ if (F(y).right)
+ F(F(y).right).parent = x;
+ F(y).right = x;
+ F(y).parent = p;
+ } else {
+ F(x).left = 0;
+ }
+ if (!p) {
+ qt_noop();
+ head->root = y;
+ }
+ else if (x == F(p).right)
+ F(p).right = y;
+ else
+ F(p).left = y;
+ F(x).parent = y;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(x).size_left_array[field] -= F(y).size_left_array[field] + F(y).size_array[field];
+}
+
+
+template <class Fragment>
+void QFragmentMapData<Fragment>::rebalance(uint x)
+{
+ F(x).color = Red;
+
+ while (F(x).parent && F(F(x).parent).color == Red) {
+ uint p = F(x).parent;
+ uint pp = F(p).parent;
+ qt_noop();
+ if (p == F(pp).left) {
+ uint y = F(pp).right;
+ if (y && F(y).color == Red) {
+ F(p).color = Black;
+ F(y).color = Black;
+ F(pp).color = Red;
+ x = pp;
+ } else {
+ if (x == F(p).right) {
+ x = p;
+ rotateLeft(x);
+ p = F(x).parent;
+ pp = F(p).parent;
+ }
+ F(p).color = Black;
+ if (pp) {
+ F(pp).color = Red;
+ rotateRight(pp);
+ }
+ }
+ } else {
+ uint y = F(pp).left;
+ if (y && F(y).color == Red) {
+ F(p).color = Black;
+ F(y).color = Black;
+ F(pp).color = Red;
+ x = pp;
+ } else {
+ if (x == F(p).left) {
+ x = p;
+ rotateRight(x);
+ p = F(x).parent;
+ pp = F(p).parent;
+ }
+ F(p).color = Black;
+ if (pp) {
+ F(pp).color = Red;
+ rotateLeft(pp);
+ }
+ }
+ }
+ }
+ F(root()).color = Black;
+}
+
+
+template <class Fragment>
+uint QFragmentMapData<Fragment>::erase_single(uint z)
+{
+ uint w = previous(z);
+ uint y = z;
+ uint x;
+ uint p;
+
+ if (!F(y).left) {
+ x = F(y).right;
+ } else if (!F(y).right) {
+ x = F(y).left;
+ } else {
+ y = F(y).right;
+ while (F(y).left)
+ y = F(y).left;
+ x = F(y).right;
+ }
+
+ if (y != z) {
+ F(F(z).left).parent = y;
+ F(y).left = F(z).left;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(y).size_left_array[field] = F(z).size_left_array[field];
+ if (y != F(z).right) {
+# 482 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfragmentmap_p.h"
+ p = F(y).parent;
+ if (x)
+ F(x).parent = p;
+ F(p).left = x;
+ F(y).right = F(z).right;
+ F(F(z).right).parent = y;
+ uint n = p;
+ while (n != y) {
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(n).size_left_array[field] -= F(y).size_array[field];
+ n = F(n).parent;
+ }
+ } else {
+
+
+
+
+
+
+
+ p = y;
+ }
+ uint zp = F(z).parent;
+ if (!zp) {
+ qt_noop();
+ head->root = y;
+ } else if (F(zp).left == z) {
+ F(zp).left = y;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(zp).size_left_array[field] -= F(z).size_array[field];
+ } else {
+ F(zp).right = y;
+ }
+ F(y).parent = zp;
+
+ uint c = F(y).color;
+ F(y).color = F(z).color;
+ F(z).color = c;
+ y = z;
+ } else {
+
+
+
+
+
+
+
+ p = F(z).parent;
+ if (x)
+ F(x).parent = p;
+ if (!p) {
+ qt_noop();
+ head->root = x;
+ } else if (F(p).left == z) {
+ F(p).left = x;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(p).size_left_array[field] -= F(z).size_array[field];
+ } else {
+ F(p).right = x;
+ }
+ }
+ uint n = z;
+ while (F(n).parent) {
+ uint p = F(n).parent;
+ if (F(p).left == n) {
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(p).size_left_array[field] -= F(z).size_array[field];
+ }
+ n = p;
+ }
+
+ freeFragment(z);
+
+
+ if (F(y).color != Red) {
+ while (F(x).parent && (x == 0 || F(x).color == Black)) {
+ if (x == F(p).left) {
+ uint w = F(p).right;
+ if (F(w).color == Red) {
+ F(w).color = Black;
+ F(p).color = Red;
+ rotateLeft(p);
+ w = F(p).right;
+ }
+ if ((F(w).left == 0 || F(F(w).left).color == Black) &&
+ (F(w).right == 0 || F(F(w).right).color == Black)) {
+ F(w).color = Red;
+ x = p;
+ p = F(x).parent;
+ } else {
+ if (F(w).right == 0 || F(F(w).right).color == Black) {
+ if (F(w).left)
+ F(F(w).left).color = Black;
+ F(w).color = Red;
+ rotateRight(F(p).right);
+ w = F(p).right;
+ }
+ F(w).color = F(p).color;
+ F(p).color = Black;
+ if (F(w).right)
+ F(F(w).right).color = Black;
+ rotateLeft(p);
+ break;
+ }
+ } else {
+ uint w = F(p).left;
+ if (F(w).color == Red) {
+ F(w).color = Black;
+ F(p).color = Red;
+ rotateRight(p);
+ w = F(p).left;
+ }
+ if ((F(w).right == 0 || F(F(w).right).color == Black) &&
+ (F(w).left == 0 || F(F(w).left).color == Black)) {
+ F(w).color = Red;
+ x = p;
+ p = F(x).parent;
+ } else {
+ if (F(w).left == 0 || F(F(w).left).color == Black) {
+ if (F(w).right)
+ F(F(w).right).color = Black;
+ F(w).color = Red;
+ rotateLeft(F(p).left);
+ w = F(p).left;
+ }
+ F(w).color = F(p).color;
+ F(p).color = Black;
+ if (F(w).left)
+ F(F(w).left).color = Black;
+ rotateRight(p);
+ break;
+ }
+ }
+ }
+ if (x)
+ F(x).color = Black;
+ }
+
+ return w;
+}
+
+template <class Fragment>
+uint QFragmentMapData<Fragment>::findNode(int k, uint field) const
+{
+ qt_noop();
+ uint x = root();
+
+ uint s = k;
+ while (x) {
+ if (sizeLeft(x, field) <= s) {
+ if (s < sizeLeft(x, field) + size(x, field))
+ return x;
+ s -= sizeLeft(x, field) + size(x, field);
+ x = F(x).right;
+ } else {
+ x = F(x).left;
+ }
+ }
+ return 0;
+}
+
+template <class Fragment>
+uint QFragmentMapData<Fragment>::insert_single(int key, uint length)
+{
+ qt_noop();
+
+ uint z = createFragment();
+
+ F(z).left = 0;
+ F(z).right = 0;
+ F(z).size_array[0] = length;
+ for (uint field = 1; field < Fragment::size_array_max; ++field)
+ F(z).size_array[field] = 1;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(z).size_left_array[field] = 0;
+
+ uint y = 0;
+ uint x = root();
+
+ qt_noop();
+
+ uint s = key;
+ bool right = false;
+ while (x) {
+ y = x;
+ if (s <= F(x).size_left_array[0]) {
+ x = F(x).left;
+ right = false;
+ } else {
+ s -= F(x).size_left_array[0] + F(x).size_array[0];
+ x = F(x).right;
+ right = true;
+ }
+ }
+
+ F(z).parent = y;
+ if (!y) {
+ head->root = z;
+ } else if (!right) {
+ F(y).left = z;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(y).size_left_array[field] = F(z).size_array[field];
+ } else {
+ F(y).right = z;
+ }
+ while (y && F(y).parent) {
+ uint p = F(y).parent;
+ if (F(p).left == y) {
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(p).size_left_array[field] += F(z).size_array[field];
+ }
+ y = p;
+ }
+ rebalance(z);
+
+ return z;
+}
+
+
+template <class Fragment>
+int QFragmentMapData<Fragment>::length(uint field) const {
+ uint root = this->root();
+ return root ? sizeLeft(root, field) + size(root, field) + sizeRight(root, field) : 0;
+}
+
+
+template <class Fragment>
+class QFragmentMap
+{
+public:
+ class Iterator
+ {
+ public:
+ QFragmentMap *pt;
+ quint32 n;
+
+ Iterator() : pt(0), n(0) {}
+ Iterator(QFragmentMap *p, int node) : pt(p), n(node) {}
+ Iterator(const Iterator& it) : pt(it.pt), n(it.n) {}
+
+ inline bool atEnd() const { return !n; }
+
+ bool operator==(const Iterator& it) const { return pt == it.pt && n == it.n; }
+ bool operator!=(const Iterator& it) const { return pt != it.pt || n != it.n; }
+ bool operator<(const Iterator &it) const { return position() < it.position(); }
+
+ Fragment *operator*() { qt_noop(); return pt->fragment(n); }
+ const Fragment *operator*() const { qt_noop(); return pt->fragment(n); }
+ Fragment *operator->() { qt_noop(); return pt->fragment(n); }
+ const Fragment *operator->() const { qt_noop(); return pt->fragment(n); }
+
+ int position() const { qt_noop(); return pt->data.position(n); }
+ const Fragment *value() const { qt_noop(); return pt->fragment(n); }
+ Fragment *value() { qt_noop(); return pt->fragment(n); }
+
+ Iterator& operator++() {
+ n = pt->data.next(n);
+ return *this;
+ }
+ Iterator& operator--() {
+ n = pt->data.previous(n);
+ return *this;
+ }
+
+ };
+
+
+ class ConstIterator
+ {
+ public:
+ const QFragmentMap *pt;
+ quint32 n;
+
+
+
+
+ ConstIterator() : pt(0), n(0) {}
+ ConstIterator(const QFragmentMap *p, int node) : pt(p), n(node) {}
+ ConstIterator(const ConstIterator& it) : pt(it.pt), n(it.n) {}
+ ConstIterator(const Iterator& it) : pt(it.pt), n(it.n) {}
+
+ inline bool atEnd() const { return !n; }
+
+ bool operator==(const ConstIterator& it) const { return pt == it.pt && n == it.n; }
+ bool operator!=(const ConstIterator& it) const { return pt != it.pt || n != it.n; }
+ bool operator<(const ConstIterator &it) const { return position() < it.position(); }
+
+ const Fragment *operator*() const { qt_noop(); return pt->fragment(n); }
+ const Fragment *operator->() const { qt_noop(); return pt->fragment(n); }
+
+ int position() const { qt_noop(); return pt->data.position(n); }
+ int size() const { qt_noop(); return pt->data.size(n); }
+ const Fragment *value() const { qt_noop(); return pt->fragment(n); }
+
+ ConstIterator& operator++() {
+ n = pt->data.next(n);
+ return *this;
+ }
+ ConstIterator& operator--() {
+ n = pt->data.previous(n);
+ return *this;
+ }
+ };
+
+
+ QFragmentMap() {}
+ ~QFragmentMap()
+ {
+ for (Iterator it = begin(); !it.atEnd(); ++it)
+ it.value()->free();
+ }
+
+ inline void clear() {
+ for (Iterator it = begin(); !it.atEnd(); ++it)
+ it.value()->free();
+ ::free(data.head);
+ data.init();
+ }
+
+ inline Iterator begin() { return Iterator(this, data.minimum(data.root())); }
+ inline Iterator end() { return Iterator(this, 0); }
+ inline ConstIterator begin() const { return ConstIterator(this, data.minimum(data.root())); }
+ inline ConstIterator end() const { return ConstIterator(this, 0); }
+
+ inline ConstIterator last() const { return ConstIterator(this, data.maximum(data.root())); }
+
+ inline bool isEmpty() const { return data.head->node_count == 0; }
+ inline int numNodes() const { return data.head->node_count; }
+ int length(uint field = 0) const { return data.length(field); }
+
+ Iterator find(int k, uint field = 0) { return Iterator(this, data.findNode(k, field)); }
+ ConstIterator find(int k, uint field = 0) const { return ConstIterator(this, data.findNode(k, field)); }
+
+ uint findNode(int k, uint field = 0) const { return data.findNode(k, field); }
+
+ uint insert_single(int key, uint length)
+ {
+ uint f = data.insert_single(key, length);
+ if (f != 0) {
+ Fragment *frag = fragment(f);
+ qt_noop();
+ frag->initialize();
+ }
+ return f;
+ }
+ uint erase_single(uint f)
+ {
+ if (f != 0) {
+ Fragment *frag = fragment(f);
+ qt_noop();
+ frag->free();
+ }
+ return data.erase_single(f);
+ }
+
+ inline Fragment *fragment(uint index) {
+ qt_noop();
+ return data.fragment(index);
+ }
+ inline const Fragment *fragment(uint index) const {
+ qt_noop();
+ return data.fragment(index);
+ }
+ inline uint position(uint node, uint field = 0) const { return data.position(node, field); }
+ inline uint next(uint n) const { return data.next(n); }
+ inline uint previous(uint n) const { return data.previous(n); }
+ inline uint size(uint node, uint field = 0) const { return data.size(node, field); }
+ inline void setSize(uint node, int new_size, uint field = 0)
+ { data.setSize(node, new_size, field);
+ if (node != 0 && field == 0) {
+ Fragment *frag = fragment(node);
+ qt_noop();
+ frag->invalidate();
+ }
+ }
+
+ inline int firstNode() const { return data.minimum(data.root()); }
+
+private:
+ friend class Iterator;
+ friend class ConstIterator;
+
+ QFragmentMapData<Fragment> data;
+
+ QFragmentMap(const QFragmentMap& m);
+ QFragmentMap& operator= (const QFragmentMap& m);
+};
+
+
+# 1 "../../include/QtGui/private/qfragmentmap_p.h" 2
+# 62 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtGui/qtextlayout.h" 1
+# 63 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtGui/qtextoption.h" 1
+# 64 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtGui/private/qtextformat_p.h" 1
+# 65 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtGui/qtextdocument.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument.h"
+#define QTEXTDOCUMENT_H
+
+# 1 "../../include/QtCore/qobject.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument.h" 2
+# 1 "../../include/QtCore/qsize.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument.h" 2
+# 1 "../../include/QtCore/qrect.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument.h" 2
+# 1 "../../include/QtGui/qfont.h" 1
+# 49 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QTextFormatCollection;
+class QTextListFormat;
+class QRect;
+class QPainter;
+class QPrinter;
+class QAbstractTextDocumentLayout;
+class QPoint;
+class QTextCursor;
+class QTextObject;
+class QTextFormat;
+class QTextFrame;
+class QTextBlock;
+class QTextCodec;
+class QUrl;
+class QVariant;
+class QRectF;
+class QTextOption;
+
+template<typename T> class QVector;
+
+namespace Qt
+{
+ enum HitTestAccuracy { ExactHit, FuzzyHit };
+ enum WhiteSpaceMode {
+ WhiteSpaceNormal,
+ WhiteSpacePre,
+ WhiteSpaceNoWrap,
+ WhiteSpaceModeUndefined = -1
+ };
+
+ __attribute__((visibility("default"))) bool mightBeRichText(const QString&);
+ __attribute__((visibility("default"))) QString escape(const QString& plain);
+ __attribute__((visibility("default"))) QString convertFromPlainText(const QString &plain, WhiteSpaceMode mode = WhiteSpacePre);
+
+
+ __attribute__((visibility("default"))) QTextCodec *codecForHtml(const QByteArray &ba);
+
+}
+
+class __attribute__((visibility("default"))) QAbstractUndoItem
+{
+public:
+ virtual ~QAbstractUndoItem() = 0;
+ virtual void undo() = 0;
+ virtual void redo() = 0;
+};
+
+inline QAbstractUndoItem::~QAbstractUndoItem()
+{
+}
+
+class QTextDocumentPrivate;
+
+class __attribute__((visibility("default"))) QTextDocument : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+public:
+ explicit QTextDocument(QObject *parent = 0);
+ explicit QTextDocument(const QString &text, QObject *parent = 0);
+ ~QTextDocument();
+
+ QTextDocument *clone(QObject *parent = 0) const;
+
+ bool isEmpty() const;
+ virtual void clear();
+
+ void setUndoRedoEnabled(bool enable);
+ bool isUndoRedoEnabled() const;
+
+ bool isUndoAvailable() const;
+ bool isRedoAvailable() const;
+
+ int revision() const;
+
+ void setDocumentLayout(QAbstractTextDocumentLayout *layout);
+ QAbstractTextDocumentLayout *documentLayout() const;
+
+ enum MetaInformation {
+ DocumentTitle,
+ DocumentUrl
+ };
+ void setMetaInformation(MetaInformation info, const QString &);
+ QString metaInformation(MetaInformation info) const;
+
+
+ QString toHtml(const QByteArray &encoding = QByteArray()) const;
+ void setHtml(const QString &html);
+
+
+ QString toPlainText() const;
+ void setPlainText(const QString &text);
+
+ QChar characterAt(int pos) const;
+
+ enum FindFlag
+ {
+ FindBackward = 0x00001,
+ FindCaseSensitively = 0x00002,
+ FindWholeWords = 0x00004
+ };
+ typedef QFlags<FindFlag> FindFlags;
+
+ QTextCursor find(const QString &subString, int from = 0, FindFlags options = 0) const;
+ QTextCursor find(const QString &subString, const QTextCursor &from, FindFlags options = 0) const;
+
+ QTextCursor find(const QRegExp &expr, int from = 0, FindFlags options = 0) const;
+ QTextCursor find(const QRegExp &expr, const QTextCursor &from, FindFlags options = 0) const;
+
+ QTextFrame *frameAt(int pos) const;
+ QTextFrame *rootFrame() const;
+
+ QTextObject *object(int objectIndex) const;
+ QTextObject *objectForFormat(const QTextFormat &) const;
+
+ QTextBlock findBlock(int pos) const;
+ QTextBlock findBlockByNumber(int blockNumber) const;
+ QTextBlock findBlockByLineNumber(int blockNumber) const;
+ QTextBlock begin() const;
+ QTextBlock end() const;
+
+ QTextBlock firstBlock() const;
+ QTextBlock lastBlock() const;
+
+ void setPageSize(const QSizeF &size);
+ QSizeF pageSize() const;
+
+ void setDefaultFont(const QFont &font);
+ QFont defaultFont() const;
+
+ int pageCount() const;
+
+ bool isModified() const;
+
+
+ void print(QPrinter *printer) const;
+
+
+ enum ResourceType {
+ HtmlResource = 1,
+ ImageResource = 2,
+ StyleSheetResource = 3,
+
+ UserResource = 100
+ };
+
+ QVariant resource(int type, const QUrl &name) const;
+ void addResource(int type, const QUrl &name, const QVariant &resource);
+
+ QVector<QTextFormat> allFormats() const;
+
+ void markContentsDirty(int from, int length);
+
+ void setUseDesignMetrics(bool b);
+ bool useDesignMetrics() const;
+
+ void drawContents(QPainter *painter, const QRectF &rect = QRectF());
+
+ void setTextWidth(qreal width);
+ qreal textWidth() const;
+
+ qreal idealWidth() const;
+
+ qreal indentWidth() const;
+ void setIndentWidth(qreal width);
+
+ qreal documentMargin() const;
+ void setDocumentMargin(qreal margin);
+
+ void adjustSize();
+ QSizeF size() const;
+
+ int blockCount() const;
+ int lineCount() const;
+ int characterCount() const;
+
+
+ void setDefaultStyleSheet(const QString &sheet);
+ QString defaultStyleSheet() const;
+
+
+ void undo(QTextCursor *cursor);
+ void redo(QTextCursor *cursor);
+
+ int maximumBlockCount() const;
+ void setMaximumBlockCount(int maximum);
+
+ QTextOption defaultTextOption() const;
+ void setDefaultTextOption(const QTextOption &option);
+
+protected:
+ void contentsChange(int from, int charsRemoves, int charsAdded);
+ void contentsChanged();
+ void undoAvailable(bool);
+ void redoAvailable(bool);
+ void undoCommandAdded();
+ void modificationChanged(bool m);
+ void cursorPositionChanged(const QTextCursor &cursor);
+ void blockCountChanged(int newBlockCount);
+
+ void documentLayoutChanged();
+
+public :
+ void undo();
+ void redo();
+ void appendUndoItem(QAbstractUndoItem *);
+ void setModified(bool m = true);
+
+protected:
+ virtual QTextObject *createObject(const QTextFormat &f);
+ virtual QVariant loadResource(int type, const QUrl &name);
+
+ QTextDocument(QTextDocumentPrivate &dd, QObject *parent);
+public:
+ QTextDocumentPrivate *docHandle() const;
+private:
+ QTextDocument(const QTextDocument &); QTextDocument &operator=(const QTextDocument &);
+ inline QTextDocumentPrivate* d_func() { return reinterpret_cast<QTextDocumentPrivate *>(d_ptr); } inline const QTextDocumentPrivate* d_func() const { return reinterpret_cast<const QTextDocumentPrivate *>(d_ptr); } friend class QTextDocumentPrivate;
+ friend class QTextObjectPrivate;
+};
+
+inline QFlags<QTextDocument::FindFlags::enum_type> operator|(QTextDocument::FindFlags::enum_type f1, QTextDocument::FindFlags::enum_type f2) { return QFlags<QTextDocument::FindFlags::enum_type>(f1) | f2; } inline QFlags<QTextDocument::FindFlags::enum_type> operator|(QTextDocument::FindFlags::enum_type f1, QFlags<QTextDocument::FindFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QTextDocument::FindFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+
+
+
+
+# 1 "../../include/QtGui/qtextdocument.h" 2
+# 66 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtGui/qtextobject.h" 1
+# 67 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtCore/qmap.h" 1
+# 68 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtCore/qvariant.h" 1
+# 69 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtCore/qurl.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qurl.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qurl.h"
+#define QURL_H
+
+# 1 "../../include/QtCore/qbytearray.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qurl.h" 2
+# 1 "../../include/QtCore/qobjectdefs.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qurl.h" 2
+# 1 "../../include/QtCore/qpair.h" 1
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qurl.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 49 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qurl.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QUrlPrivate;
+class QDataStream;
+
+class __attribute__((visibility("default"))) QUrl
+{
+public:
+ enum ParsingMode {
+ TolerantMode,
+ StrictMode
+ };
+
+
+ enum FormattingOption {
+ None = 0x0,
+ RemoveScheme = 0x1,
+ RemovePassword = 0x2,
+ RemoveUserInfo = RemovePassword | 0x4,
+ RemovePort = 0x8,
+ RemoveAuthority = RemoveUserInfo | RemovePort | 0x10,
+ RemovePath = 0x20,
+ RemoveQuery = 0x40,
+ RemoveFragment = 0x80,
+
+ StripTrailingSlash = 0x10000
+ };
+ typedef QFlags<FormattingOption> FormattingOptions;
+
+ QUrl();
+ QUrl(const QString &url);
+ QUrl(const QString &url, ParsingMode mode);
+
+ QUrl(const QUrl ©);
+ QUrl &operator =(const QUrl ©);
+ QUrl &operator =(const QString &url);
+ ~QUrl();
+
+ void setUrl(const QString &url);
+ void setUrl(const QString &url, ParsingMode mode);
+
+ void setEncodedUrl(const QByteArray &url);
+ void setEncodedUrl(const QByteArray &url, ParsingMode mode);
+
+
+ bool isValid() const;
+
+ bool isEmpty() const;
+
+ void clear();
+
+ void setScheme(const QString &scheme);
+ QString scheme() const;
+
+ void setAuthority(const QString &authority);
+ QString authority() const;
+
+ void setUserInfo(const QString &userInfo);
+ QString userInfo() const;
+
+ void setUserName(const QString &userName);
+ QString userName() const;
+ void setEncodedUserName(const QByteArray &userName);
+ QByteArray encodedUserName() const;
+
+ void setPassword(const QString &password);
+ QString password() const;
+ void setEncodedPassword(const QByteArray &password);
+ QByteArray encodedPassword() const;
+
+ void setHost(const QString &host);
+ QString host() const;
+ void setEncodedHost(const QByteArray &host);
+ QByteArray encodedHost() const;
+
+ void setPort(int port);
+ int port() const;
+ int port(int defaultPort) const;
+
+
+ void setPath(const QString &path);
+ QString path() const;
+ void setEncodedPath(const QByteArray &path);
+ QByteArray encodedPath() const;
+
+ bool hasQuery() const;
+
+ void setEncodedQuery(const QByteArray &query);
+ QByteArray encodedQuery() const;
+
+ void setQueryDelimiters(char valueDelimiter, char pairDelimiter);
+ char queryValueDelimiter() const;
+ char queryPairDelimiter() const;
+
+ void setQueryItems(const QList<QPair<QString, QString> > &query);
+ void addQueryItem(const QString &key, const QString &value);
+ QList<QPair<QString, QString> > queryItems() const;
+ bool hasQueryItem(const QString &key) const;
+ QString queryItemValue(const QString &key) const;
+ QStringList allQueryItemValues(const QString &key) const;
+ void removeQueryItem(const QString &key);
+ void removeAllQueryItems(const QString &key);
+
+ void setEncodedQueryItems(const QList<QPair<QByteArray, QByteArray> > &query);
+ void addEncodedQueryItem(const QByteArray &key, const QByteArray &value);
+ QList<QPair<QByteArray, QByteArray> > encodedQueryItems() const;
+ bool hasEncodedQueryItem(const QByteArray &key) const;
+ QByteArray encodedQueryItemValue(const QByteArray &key) const;
+ QList<QByteArray> allEncodedQueryItemValues(const QByteArray &key) const;
+ void removeEncodedQueryItem(const QByteArray &key);
+ void removeAllEncodedQueryItems(const QByteArray &key);
+
+ void setFragment(const QString &fragment);
+ QString fragment() const;
+ void setEncodedFragment(const QByteArray &fragment);
+ QByteArray encodedFragment() const;
+ bool hasFragment() const;
+
+ QUrl resolved(const QUrl &relative) const;
+
+ bool isRelative() const;
+ bool isParentOf(const QUrl &url) const;
+
+ static QUrl fromLocalFile(const QString &localfile);
+ QString toLocalFile() const;
+
+ QString toString(FormattingOptions options = None) const;
+
+ QByteArray toEncoded(FormattingOptions options = None) const;
+ static QUrl fromEncoded(const QByteArray &url);
+ static QUrl fromEncoded(const QByteArray &url, ParsingMode mode);
+
+
+ void detach();
+ bool isDetached() const;
+
+ bool operator <(const QUrl &url) const;
+ bool operator ==(const QUrl &url) const;
+ bool operator !=(const QUrl &url) const;
+
+ static QString fromPercentEncoding(const QByteArray &);
+ static QByteArray toPercentEncoding(const QString &,
+ const QByteArray &exclude = QByteArray(),
+ const QByteArray &include = QByteArray());
+ static QString fromPunycode(const QByteArray &);
+ static QByteArray toPunycode(const QString &);
+ static QString fromAce(const QByteArray &);
+ static QByteArray toAce(const QString &);
+ static QStringList idnWhitelist();
+ static void setIdnWhitelist(const QStringList &);
+# 250 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qurl.h"
+ QString errorString() const;
+
+protected:
+
+
+
+
+private:
+ QUrlPrivate *d;
+public:
+ typedef QUrlPrivate * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+
+template <> class QTypeInfo<QUrl> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QUrl)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QUrl"; } };
+template <> inline bool qIsDetached<QUrl>(QUrl &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QUrl>(QUrl &value1, QUrl &value2) { const QUrl::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+inline QFlags<QUrl::FormattingOptions::enum_type> operator|(QUrl::FormattingOptions::enum_type f1, QUrl::FormattingOptions::enum_type f2) { return QFlags<QUrl::FormattingOptions::enum_type>(f1) | f2; } inline QFlags<QUrl::FormattingOptions::enum_type> operator|(QUrl::FormattingOptions::enum_type f1, QFlags<QUrl::FormattingOptions::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QUrl::FormattingOptions::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QUrl &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QUrl &);
+
+
+
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QUrl &);
+
+
+
+
+
+# 1 "../../include/QtCore/qurl.h" 2
+# 70 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+# 1 "../../include/QtGui/private/qcssparser_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h"
+#define QCSSPARSER_P_H
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h"
+# 1 "../../include/QtCore/QStringList" 1
+# 1 "../../include/QtCore/qstringlist.h" 1
+# 1 "../../include/QtCore/QStringList" 2
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h" 2
+# 1 "../../include/QtCore/QVector" 1
+# 1 "../../include/QtCore/qvector.h" 1
+# 1 "../../include/QtCore/QVector" 2
+# 58 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h" 2
+# 1 "../../include/QtCore/QVariant" 1
+# 1 "../../include/QtCore/qvariant.h" 1
+# 1 "../../include/QtCore/QVariant" 2
+# 59 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h" 2
+# 1 "../../include/QtCore/QPair" 1
+# 1 "../../include/QtCore/qpair.h" 1
+# 1 "../../include/QtCore/QPair" 2
+# 60 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h" 2
+# 1 "../../include/QtCore/QSize" 1
+# 1 "../../include/QtCore/qsize.h" 1
+# 1 "../../include/QtCore/QSize" 2
+# 61 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h" 2
+# 1 "../../include/QtCore/QMultiHash" 1
+# 1 "../../include/QtCore/qhash.h" 1
+# 1 "../../include/QtCore/QMultiHash" 2
+# 62 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h" 2
+# 1 "../../include/QtGui/QFont" 1
+# 1 "../../include/QtGui/qfont.h" 1
+# 1 "../../include/QtGui/QFont" 2
+# 63 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h" 2
+# 1 "../../include/QtGui/QPalette" 1
+# 1 "../../include/QtGui/qpalette.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qpalette.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qpalette.h"
+#define QPALETTE_H
+
+# 1 "../../include/QtGui/qwindowdefs.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qpalette.h" 2
+# 1 "../../include/QtGui/qcolor.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qpalette.h" 2
+# 1 "../../include/QtGui/qbrush.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qpalette.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+
+
+
+class QPalettePrivate;
+class QVariant;
+
+class __attribute__((visibility("default"))) QPalette
+{
+ public: static const QMetaObject staticMetaObject; private:
+
+public:
+ QPalette();
+ QPalette(const QColor &button);
+ QPalette(Qt::GlobalColor button);
+ QPalette(const QColor &button, const QColor &window);
+ QPalette(const QBrush &windowText, const QBrush &button, const QBrush &light,
+ const QBrush &dark, const QBrush &mid, const QBrush &text,
+ const QBrush &bright_text, const QBrush &base, const QBrush &window);
+ QPalette(const QColor &windowText, const QColor &window, const QColor &light,
+ const QColor &dark, const QColor &mid, const QColor &text, const QColor &base);
+
+
+
+ QPalette(const QPalette &palette);
+ ~QPalette();
+ QPalette &operator=(const QPalette &palette);
+ operator QVariant() const;
+
+
+ enum ColorGroup { Active, Disabled, Inactive, NColorGroups, Current, All, Normal = Active };
+ enum ColorRole { WindowText, Button, Light, Midlight, Dark, Mid,
+ Text, BrightText, ButtonText, Base, Window, Shadow,
+ Highlight, HighlightedText,
+ Link, LinkVisited,
+ AlternateBase,
+ NoRole,
+ ToolTipBase, ToolTipText,
+ NColorRoles = ToolTipText + 1,
+ Foreground = WindowText, Background = Window
+ };
+
+ inline ColorGroup currentColorGroup() const { return static_cast<ColorGroup>(current_group); }
+ inline void setCurrentColorGroup(ColorGroup cg) { current_group = cg; }
+
+ inline const QColor &color(ColorGroup cg, ColorRole cr) const
+ { return brush(cg, cr).color(); }
+ const QBrush &brush(ColorGroup cg, ColorRole cr) const;
+ inline void setColor(ColorGroup cg, ColorRole cr, const QColor &color);
+ inline void setColor(ColorRole cr, const QColor &color);
+ inline void setBrush(ColorRole cr, const QBrush &brush);
+ bool isBrushSet(ColorGroup cg, ColorRole cr) const;
+ void setBrush(ColorGroup cg, ColorRole cr, const QBrush &brush);
+ void setColorGroup(ColorGroup cr, const QBrush &windowText, const QBrush &button,
+ const QBrush &light, const QBrush &dark, const QBrush &mid,
+ const QBrush &text, const QBrush &bright_text, const QBrush &base,
+ const QBrush &window);
+ bool isEqual(ColorGroup cr1, ColorGroup cr2) const;
+
+ inline const QColor &color(ColorRole cr) const { return color(Current, cr); }
+ inline const QBrush &brush(ColorRole cr) const { return brush(Current, cr); }
+ inline const QBrush &foreground() const { return brush(WindowText); }
+ inline const QBrush &windowText() const { return brush(WindowText); }
+ inline const QBrush &button() const { return brush(Button); }
+ inline const QBrush &light() const { return brush(Light); }
+ inline const QBrush &dark() const { return brush(Dark); }
+ inline const QBrush &mid() const { return brush(Mid); }
+ inline const QBrush &text() const { return brush(Text); }
+ inline const QBrush &base() const { return brush(Base); }
+ inline const QBrush &alternateBase() const { return brush(AlternateBase); }
+ inline const QBrush &toolTipBase() const { return brush(ToolTipBase); }
+ inline const QBrush &toolTipText() const { return brush(ToolTipText); }
+ inline const QBrush &background() const { return brush(Window); }
+ inline const QBrush &window() const { return brush(Window); }
+ inline const QBrush &midlight() const { return brush(Midlight); }
+ inline const QBrush &brightText() const { return brush(BrightText); }
+ inline const QBrush &buttonText() const { return brush(ButtonText); }
+ inline const QBrush &shadow() const { return brush(Shadow); }
+ inline const QBrush &highlight() const { return brush(Highlight); }
+ inline const QBrush &highlightedText() const { return brush(HighlightedText); }
+ inline const QBrush &link() const { return brush(Link); }
+ inline const QBrush &linkVisited() const { return brush(LinkVisited); }
+# 150 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qpalette.h"
+ bool operator==(const QPalette &p) const;
+ inline bool operator!=(const QPalette &p) const { return !(operator==(p)); }
+ bool isCopyOf(const QPalette &p) const;
+
+ int serialNumber() const;
+ qint64 cacheKey() const;
+
+ QPalette resolve(const QPalette &) const;
+ inline uint resolve() const { return resolve_mask; }
+ inline void resolve(uint mask) { resolve_mask = mask; }
+
+private:
+ void setColorGroup(ColorGroup cr, const QBrush &windowText, const QBrush &button,
+ const QBrush &light, const QBrush &dark, const QBrush &mid,
+ const QBrush &text, const QBrush &bright_text,
+ const QBrush &base, const QBrush &alternate_base,
+ const QBrush &window, const QBrush &midlight,
+ const QBrush &button_text, const QBrush &shadow,
+ const QBrush &highlight, const QBrush &highlighted_text,
+ const QBrush &link, const QBrush &link_visited);
+ void setColorGroup(ColorGroup cr, const QBrush &windowText, const QBrush &button,
+ const QBrush &light, const QBrush &dark, const QBrush &mid,
+ const QBrush &text, const QBrush &bright_text,
+ const QBrush &base, const QBrush &alternate_base,
+ const QBrush &window, const QBrush &midlight,
+ const QBrush &button_text, const QBrush &shadow,
+ const QBrush &highlight, const QBrush &highlighted_text,
+ const QBrush &link, const QBrush &link_visited,
+ const QBrush &toolTipBase, const QBrush &toolTipText);
+
+
+
+
+
+ void init();
+ void detach();
+
+ QPalettePrivate *d;
+ uint current_group : 4;
+ uint resolve_mask : 28;
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &s, const QPalette &p);
+};
+
+inline void QPalette::setColor(ColorGroup acg, ColorRole acr,
+ const QColor &acolor)
+{ setBrush(acg, acr, QBrush(acolor)); }
+inline void QPalette::setColor(ColorRole acr, const QColor &acolor)
+{ setColor(All, acr, acolor); }
+inline void QPalette::setBrush(ColorRole acr, const QBrush &abrush)
+{ setBrush(All, acr, abrush); }
+# 254 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/kernel/qpalette.h"
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &ds, const QPalette &p);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &ds, QPalette &p);
+
+
+
+
+
+# 1 "../../include/QtGui/qpalette.h" 2
+# 1 "../../include/QtGui/QPalette" 2
+# 64 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h" 2
+# 1 "../../include/QtGui/QIcon" 1
+# 1 "../../include/QtGui/qicon.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qicon.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qicon.h"
+#define QICON_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qicon.h" 2
+# 1 "../../include/QtCore/qsize.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qicon.h" 2
+# 1 "../../include/QtCore/qlist.h" 1
+# 48 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qicon.h" 2
+# 1 "../../include/QtGui/qpixmap.h" 1
+# 49 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qicon.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QIconPrivate;
+class QIconEngine;
+class QIconEngineV2;
+
+class __attribute__((visibility("default"))) QIcon
+{
+public:
+ enum Mode { Normal, Disabled, Active, Selected };
+ enum State { On, Off };
+
+ QIcon();
+ QIcon(const QPixmap &pixmap);
+ QIcon(const QIcon &other);
+ explicit QIcon(const QString &fileName);
+ explicit QIcon(QIconEngine *engine);
+ explicit QIcon(QIconEngineV2 *engine);
+ ~QIcon();
+ QIcon &operator=(const QIcon &other);
+ operator QVariant() const;
+
+ QPixmap pixmap(const QSize &size, Mode mode = Normal, State state = Off) const;
+ inline QPixmap pixmap(int w, int h, Mode mode = Normal, State state = Off) const
+ { return pixmap(QSize(w, h), mode, state); }
+ inline QPixmap pixmap(int extent, Mode mode = Normal, State state = Off) const
+ { return pixmap(QSize(extent, extent), mode, state); }
+
+ QSize actualSize(const QSize &size, Mode mode = Normal, State state = Off) const;
+
+ void paint(QPainter *painter, const QRect &rect, Qt::Alignment alignment = Qt::AlignCenter, Mode mode = Normal, State state = Off) const;
+ inline void paint(QPainter *painter, int x, int y, int w, int h, Qt::Alignment alignment = Qt::AlignCenter, Mode mode = Normal, State state = Off) const
+ { paint(painter, QRect(x, y, w, h), alignment, mode, state); }
+
+ bool isNull() const;
+ bool isDetached() const;
+ void detach();
+
+ int serialNumber() const;
+ qint64 cacheKey() const;
+
+ void addPixmap(const QPixmap &pixmap, Mode mode = Normal, State state = Off);
+ void addFile(const QString &fileName, const QSize &size = QSize(), Mode mode = Normal, State state = Off);
+
+ QList<QSize> availableSizes(Mode mode = Normal, State state = Off) const;
+# 114 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qicon.h"
+
+
+private:
+ QIconPrivate *d;
+
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QIcon &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QIcon &);
+
+
+public:
+ typedef QIconPrivate * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+
+template <> inline bool qIsDetached<QIcon>(QIcon &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QIcon>(QIcon &value1, QIcon &value2) { const QIcon::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+template <> class QTypeInfo<QIcon> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QIcon)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QIcon"; } };
+
+
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QIcon &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QIcon &);
+
+
+
+
+
+
+
+
+
+# 1 "../../include/QtGui/qicon.h" 2
+# 1 "../../include/QtGui/QIcon" 2
+# 65 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h" 2
+# 1 "../../include/QtCore/QSharedData" 1
+# 1 "../../include/QtCore/qshareddata.h" 1
+# 1 "../../include/QtCore/QSharedData" 2
+# 66 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h" 2
+
+
+
+
+
+
+namespace QCss
+{
+
+enum Property {
+ UnknownProperty,
+ BackgroundColor,
+ Color,
+ Float,
+ Font,
+ FontFamily,
+ FontSize,
+ FontStyle,
+ FontWeight,
+ Margin,
+ MarginBottom,
+ MarginLeft,
+ MarginRight,
+ MarginTop,
+ QtBlockIndent,
+ QtListIndent,
+ QtParagraphType,
+ QtTableType,
+ QtUserState,
+ TextDecoration,
+ TextIndent,
+ TextUnderlineStyle,
+ VerticalAlignment,
+ Whitespace,
+ QtSelectionForeground,
+ QtSelectionBackground,
+ Border,
+ BorderLeft,
+ BorderRight,
+ BorderTop,
+ BorderBottom,
+ Padding,
+ PaddingLeft,
+ PaddingRight,
+ PaddingTop,
+ PaddingBottom,
+ PageBreakBefore,
+ PageBreakAfter,
+ QtAlternateBackground,
+ BorderLeftStyle,
+ BorderRightStyle,
+ BorderTopStyle,
+ BorderBottomStyle,
+ BorderStyles,
+ BorderLeftColor,
+ BorderRightColor,
+ BorderTopColor,
+ BorderBottomColor,
+ BorderColor,
+ BorderLeftWidth,
+ BorderRightWidth,
+ BorderTopWidth,
+ BorderBottomWidth,
+ BorderWidth,
+ BorderTopLeftRadius,
+ BorderTopRightRadius,
+ BorderBottomLeftRadius,
+ BorderBottomRightRadius,
+ BorderRadius,
+ Background,
+ BackgroundOrigin,
+ BackgroundClip,
+ BackgroundRepeat,
+ BackgroundPosition,
+ BackgroundAttachment,
+ BackgroundImage,
+ BorderImage,
+ QtSpacing,
+ Width,
+ Height,
+ MinimumWidth,
+ MinimumHeight,
+ MaximumWidth,
+ MaximumHeight,
+ QtImage,
+ Left,
+ Right,
+ Top,
+ Bottom,
+ QtOrigin,
+ QtPosition,
+ Position,
+ QtStyleFeatures,
+ QtBackgroundRole,
+ ListStyleType,
+ ListStyle,
+ QtImageAlignment,
+ TextAlignment,
+ Outline,
+ OutlineOffset,
+ OutlineWidth,
+ OutlineColor,
+ OutlineStyle,
+ OutlineRadius,
+ OutlineTopLeftRadius,
+ OutlineTopRightRadius,
+ OutlineBottomLeftRadius,
+ OutlineBottomRightRadius,
+ FontVariant,
+ TextTransform,
+ NumProperties
+};
+
+enum KnownValue {
+ UnknownValue,
+ Value_Normal,
+ Value_Pre,
+ Value_NoWrap,
+ Value_PreWrap,
+ Value_Small,
+ Value_Medium,
+ Value_Large,
+ Value_XLarge,
+ Value_XXLarge,
+ Value_Italic,
+ Value_Oblique,
+ Value_Bold,
+ Value_Underline,
+ Value_Overline,
+ Value_LineThrough,
+ Value_Sub,
+ Value_Super,
+ Value_Left,
+ Value_Right,
+ Value_Top,
+ Value_Bottom,
+ Value_Center,
+ Value_Native,
+ Value_Solid,
+ Value_Dotted,
+ Value_Dashed,
+ Value_DotDash,
+ Value_DotDotDash,
+ Value_Double,
+ Value_Groove,
+ Value_Ridge,
+ Value_Inset,
+ Value_Outset,
+ Value_Wave,
+ Value_Middle,
+ Value_Auto,
+ Value_Always,
+ Value_None,
+ Value_Transparent,
+ Value_Disc,
+ Value_Circle,
+ Value_Square,
+ Value_Decimal,
+ Value_LowerAlpha,
+ Value_UpperAlpha,
+ Value_SmallCaps,
+ Value_Uppercase,
+ Value_Lowercase,
+
+
+ Value_FirstColorRole,
+ Value_WindowText = Value_FirstColorRole,
+ Value_Button,
+ Value_Light,
+ Value_Midlight,
+ Value_Dark,
+ Value_Mid,
+ Value_Text,
+ Value_BrightText,
+ Value_ButtonText,
+ Value_Base,
+ Value_Window,
+ Value_Shadow,
+ Value_Highlight,
+ Value_HighlightedText,
+ Value_Link,
+ Value_LinkVisited,
+ Value_AlternateBase,
+ Value_LastColorRole = Value_AlternateBase,
+
+ Value_Disabled,
+ Value_Active,
+ Value_Selected,
+ Value_On,
+ Value_Off,
+
+ NumKnownValues
+};
+
+enum BorderStyle {
+ BorderStyle_Unknown,
+ BorderStyle_None,
+ BorderStyle_Dotted,
+ BorderStyle_Dashed,
+ BorderStyle_Solid,
+ BorderStyle_Double,
+ BorderStyle_DotDash,
+ BorderStyle_DotDotDash,
+ BorderStyle_Groove,
+ BorderStyle_Ridge,
+ BorderStyle_Inset,
+ BorderStyle_Outset,
+ BorderStyle_Native,
+ NumKnownBorderStyles
+};
+
+enum Edge {
+ TopEdge,
+ RightEdge,
+ BottomEdge,
+ LeftEdge,
+ NumEdges
+};
+
+enum Corner {
+ TopLeftCorner,
+ TopRightCorner,
+ BottomLeftCorner,
+ BottomRightCorner
+};
+
+enum TileMode {
+ TileMode_Unknown,
+ TileMode_Round,
+ TileMode_Stretch,
+ TileMode_Repeat,
+ NumKnownTileModes
+};
+
+enum Repeat {
+ Repeat_Unknown,
+ Repeat_None,
+ Repeat_X,
+ Repeat_Y,
+ Repeat_XY,
+ NumKnownRepeats
+};
+
+enum Origin {
+ Origin_Unknown,
+ Origin_Padding,
+ Origin_Border,
+ Origin_Content,
+ Origin_Margin,
+ NumKnownOrigins
+};
+
+enum PositionMode {
+ PositionMode_Unknown,
+ PositionMode_Static,
+ PositionMode_Relative,
+ PositionMode_Absolute,
+ PositionMode_Fixed,
+ NumKnownPositionModes
+};
+
+enum Attachment {
+ Attachment_Unknown,
+ Attachment_Fixed,
+ Attachment_Scroll,
+ NumKnownAttachments
+};
+
+enum StyleFeature {
+ StyleFeature_None = 0,
+ StyleFeature_BackgroundColor = 1,
+ StyleFeature_BackgroundGradient = 2,
+ NumKnownStyleFeatures = 4
+};
+
+struct __attribute__((visibility("default"))) Value
+{
+ enum Type {
+ Unknown,
+ Number,
+ Percentage,
+ Length,
+ String,
+ Identifier,
+ KnownIdentifier,
+ Uri,
+ Color,
+ Function,
+ TermOperatorSlash,
+ TermOperatorComma
+ };
+ inline Value() : type(Unknown) { }
+ Type type;
+ QVariant variant;
+ QString toString() const;
+};
+
+struct ColorData {
+ ColorData() : type(Invalid) {}
+ ColorData(const QColor &col) : color(col) , type(Color) {}
+ ColorData(QPalette::ColorRole r) : role(r) , type(Role) {}
+ QColor color;
+ QPalette::ColorRole role;
+ enum { Invalid, Color, Role} type;
+};
+
+struct BrushData {
+ BrushData() : type(Invalid) {}
+ BrushData(const QBrush &br) : brush(br) , type(Brush) {}
+ BrushData(QPalette::ColorRole r) : role(r) , type(Role) {}
+ QBrush brush;
+ QPalette::ColorRole role;
+ enum { Invalid, Brush, Role, DependsOnThePalette } type;
+};
+
+struct BackgroundData {
+ BrushData brush;
+ QString image;
+ Repeat repeat;
+ Qt::Alignment alignment;
+};
+
+struct LengthData {
+ qreal number;
+ enum { None, Px, Ex, Em } unit;
+};
+
+struct BorderData {
+ LengthData width;
+ BorderStyle style;
+ BrushData color;
+};
+# 406 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qcssparser_p.h"
+struct __attribute__((visibility("default"))) Declaration
+{
+ struct DeclarationData : public QSharedData
+ {
+ inline DeclarationData() : propertyId(UnknownProperty), important(false) {}
+ QString property;
+ Property propertyId;
+ QVector<Value> values;
+ QVariant parsed;
+ bool important;
+ };
+ QExplicitlySharedDataPointer<DeclarationData> d;
+ inline Declaration() : d(new DeclarationData()) {}
+ inline bool isEmpty() const { return d->property.isEmpty() && d->propertyId == UnknownProperty; }
+
+
+ QColor colorValue(const QPalette & = QPalette()) const;
+ void colorValues(QColor *c, const QPalette & = QPalette()) const;
+ QBrush brushValue(const QPalette & = QPalette()) const;
+ void brushValues(QBrush *c, const QPalette & = QPalette()) const;
+
+ BorderStyle styleValue() const;
+ void styleValues(BorderStyle *s) const;
+
+ Origin originValue() const;
+ Repeat repeatValue() const;
+ Qt::Alignment alignmentValue() const;
+ PositionMode positionValue() const;
+ Attachment attachmentValue() const;
+ int styleFeaturesValue() const;
+
+ bool intValue(int *i, const char *unit = 0) const;
+ bool realValue(qreal *r, const char *unit = 0) const;
+
+ QSize sizeValue() const;
+ QRect rectValue() const;
+ QString uriValue() const;
+ QIcon iconValue() const;
+
+ void borderImageValue(QString *image, int *cuts, TileMode *h, TileMode *v) const;
+};
+
+const quint64 PseudoClass_Unknown = static_cast<unsigned long long>(0x0000000000000000ULL);
+const quint64 PseudoClass_Enabled = static_cast<unsigned long long>(0x0000000000000001ULL);
+const quint64 PseudoClass_Disabled = static_cast<unsigned long long>(0x0000000000000002ULL);
+const quint64 PseudoClass_Pressed = static_cast<unsigned long long>(0x0000000000000004ULL);
+const quint64 PseudoClass_Focus = static_cast<unsigned long long>(0x0000000000000008ULL);
+const quint64 PseudoClass_Hover = static_cast<unsigned long long>(0x0000000000000010ULL);
+const quint64 PseudoClass_Checked = static_cast<unsigned long long>(0x0000000000000020ULL);
+const quint64 PseudoClass_Unchecked = static_cast<unsigned long long>(0x0000000000000040ULL);
+const quint64 PseudoClass_Indeterminate = static_cast<unsigned long long>(0x0000000000000080ULL);
+const quint64 PseudoClass_Unspecified = static_cast<unsigned long long>(0x0000000000000100ULL);
+const quint64 PseudoClass_Selected = static_cast<unsigned long long>(0x0000000000000200ULL);
+const quint64 PseudoClass_Horizontal = static_cast<unsigned long long>(0x0000000000000400ULL);
+const quint64 PseudoClass_Vertical = static_cast<unsigned long long>(0x0000000000000800ULL);
+const quint64 PseudoClass_Window = static_cast<unsigned long long>(0x0000000000001000ULL);
+const quint64 PseudoClass_Children = static_cast<unsigned long long>(0x0000000000002000ULL);
+const quint64 PseudoClass_Sibling = static_cast<unsigned long long>(0x0000000000004000ULL);
+const quint64 PseudoClass_Default = static_cast<unsigned long long>(0x0000000000008000ULL);
+const quint64 PseudoClass_First = static_cast<unsigned long long>(0x0000000000010000ULL);
+const quint64 PseudoClass_Last = static_cast<unsigned long long>(0x0000000000020000ULL);
+const quint64 PseudoClass_Middle = static_cast<unsigned long long>(0x0000000000040000ULL);
+const quint64 PseudoClass_OnlyOne = static_cast<unsigned long long>(0x0000000000080000ULL);
+const quint64 PseudoClass_PreviousSelected = static_cast<unsigned long long>(0x0000000000100000ULL);
+const quint64 PseudoClass_NextSelected = static_cast<unsigned long long>(0x0000000000200000ULL);
+const quint64 PseudoClass_Flat = static_cast<unsigned long long>(0x0000000000400000ULL);
+const quint64 PseudoClass_Left = static_cast<unsigned long long>(0x0000000000800000ULL);
+const quint64 PseudoClass_Right = static_cast<unsigned long long>(0x0000000001000000ULL);
+const quint64 PseudoClass_Top = static_cast<unsigned long long>(0x0000000002000000ULL);
+const quint64 PseudoClass_Bottom = static_cast<unsigned long long>(0x0000000004000000ULL);
+const quint64 PseudoClass_Exclusive = static_cast<unsigned long long>(0x0000000008000000ULL);
+const quint64 PseudoClass_NonExclusive = static_cast<unsigned long long>(0x0000000010000000ULL);
+const quint64 PseudoClass_Frameless = static_cast<unsigned long long>(0x0000000020000000ULL);
+const quint64 PseudoClass_ReadOnly = static_cast<unsigned long long>(0x0000000040000000ULL);
+const quint64 PseudoClass_Active = static_cast<unsigned long long>(0x0000000080000000ULL);
+const quint64 PseudoClass_Closable = static_cast<unsigned long long>(0x0000000100000000ULL);
+const quint64 PseudoClass_Movable = static_cast<unsigned long long>(0x0000000200000000ULL);
+const quint64 PseudoClass_Floatable = static_cast<unsigned long long>(0x0000000400000000ULL);
+const quint64 PseudoClass_Minimized = static_cast<unsigned long long>(0x0000000800000000ULL);
+const quint64 PseudoClass_Maximized = static_cast<unsigned long long>(0x0000001000000000ULL);
+const quint64 PseudoClass_On = static_cast<unsigned long long>(0x0000002000000000ULL);
+const quint64 PseudoClass_Off = static_cast<unsigned long long>(0x0000004000000000ULL);
+const quint64 PseudoClass_Editable = static_cast<unsigned long long>(0x0000008000000000ULL);
+const quint64 PseudoClass_Item = static_cast<unsigned long long>(0x0000010000000000ULL);
+const quint64 PseudoClass_Closed = static_cast<unsigned long long>(0x0000020000000000ULL);
+const quint64 PseudoClass_Open = static_cast<unsigned long long>(0x0000040000000000ULL);
+const quint64 PseudoClass_EditFocus = static_cast<unsigned long long>(0x0000080000000000ULL);
+const quint64 PseudoClass_Alternate = static_cast<unsigned long long>(0x0000100000000000ULL);
+
+const quint64 PseudoClass_Any = static_cast<unsigned long long>(0x0000ffffffffffffULL);
+const int NumPseudos = 46;
+
+struct __attribute__((visibility("default"))) Pseudo
+{
+ Pseudo() : negated(false) { }
+ quint64 type;
+ QString name;
+ QString function;
+ bool negated;
+};
+
+struct __attribute__((visibility("default"))) AttributeSelector
+{
+ enum ValueMatchType {
+ NoMatch,
+ MatchEqual,
+ MatchContains,
+ MatchBeginsWith
+ };
+ inline AttributeSelector() : valueMatchCriterium(NoMatch) {}
+
+ QString name;
+ QString value;
+ ValueMatchType valueMatchCriterium;
+};
+
+struct __attribute__((visibility("default"))) BasicSelector
+{
+ inline BasicSelector() : relationToNext(NoRelation) {}
+
+ enum Relation {
+ NoRelation,
+ MatchNextSelectorIfAncestor,
+ MatchNextSelectorIfParent,
+ MatchNextSelectorIfPreceeds
+ };
+
+ QString elementName;
+
+ QStringList ids;
+ QVector<Pseudo> pseudos;
+ QVector<AttributeSelector> attributeSelectors;
+
+ Relation relationToNext;
+};
+
+struct __attribute__((visibility("default"))) Selector
+{
+ QVector<BasicSelector> basicSelectors;
+ int specificity() const;
+ quint64 pseudoClass(quint64 *negated = 0) const;
+ QString pseudoElement() const;
+};
+
+struct StyleRule;
+struct MediaRule;
+struct PageRule;
+struct ImportRule;
+
+struct __attribute__((visibility("default"))) ValueExtractor
+{
+ ValueExtractor(const QVector<Declaration> &declarations, const QPalette & = QPalette());
+
+ bool extractFont(QFont *font, int *fontSizeAdjustment);
+ bool extractBackground(QBrush *, QString *, Repeat *, Qt::Alignment *, QCss::Origin *, QCss::Attachment *,
+ QCss::Origin *);
+ bool extractGeometry(int *w, int *h, int *minw, int *minh, int *maxw, int *maxh);
+ bool extractPosition(int *l, int *t, int *r, int *b, QCss::Origin *, Qt::Alignment *,
+ QCss::PositionMode *, Qt::Alignment *);
+ bool extractBox(int *margins, int *paddings, int *spacing = 0);
+ bool extractBorder(int *borders, QBrush *colors, BorderStyle *Styles, QSize *radii);
+ bool extractOutline(int *borders, QBrush *colors, BorderStyle *Styles, QSize *radii, int *offsets);
+ bool extractPalette(QBrush *fg, QBrush *sfg, QBrush *sbg, QBrush *abg);
+ int extractStyleFeatures();
+ bool extractImage(QIcon *icon, Qt::Alignment *a, QSize *size);
+
+ int lengthValue(const Declaration &decl);
+
+private:
+ void extractFont();
+ void borderValue(const Declaration &decl, int *width, QCss::BorderStyle *style, QBrush *color);
+ LengthData lengthValue(const Value& v);
+ void lengthValues(const Declaration &decl, int *m);
+ QSize sizeValue(const Declaration &decl);
+ void sizeValues(const Declaration &decl, QSize *radii);
+
+ QVector<Declaration> declarations;
+ QFont f;
+ int adjustment;
+ int fontExtracted;
+ QPalette pal;
+};
+
+struct __attribute__((visibility("default"))) StyleRule
+{
+ StyleRule() : order(0) { }
+ QVector<Selector> selectors;
+ QVector<Declaration> declarations;
+ int order;
+};
+
+struct __attribute__((visibility("default"))) MediaRule
+{
+ QStringList media;
+ QVector<StyleRule> styleRules;
+};
+
+struct __attribute__((visibility("default"))) PageRule
+{
+ QString selector;
+ QVector<Declaration> declarations;
+};
+
+struct __attribute__((visibility("default"))) ImportRule
+{
+ QString href;
+ QStringList media;
+};
+
+enum StyleSheetOrigin {
+ StyleSheetOrigin_Unspecified,
+ StyleSheetOrigin_UserAgent,
+ StyleSheetOrigin_User,
+ StyleSheetOrigin_Author,
+ StyleSheetOrigin_Inline
+};
+
+struct __attribute__((visibility("default"))) StyleSheet
+{
+ StyleSheet() : origin(StyleSheetOrigin_Unspecified), depth(0) { }
+ QVector<StyleRule> styleRules;
+ QVector<MediaRule> mediaRules;
+ QVector<PageRule> pageRules;
+ QVector<ImportRule> importRules;
+ StyleSheetOrigin origin;
+ int depth;
+ QMultiHash<QString, StyleRule> nameIndex;
+ QMultiHash<QString, StyleRule> idIndex;
+ void buildIndexes(Qt::CaseSensitivity nameCaseSensitivity = Qt::CaseSensitive);
+};
+
+class __attribute__((visibility("default"))) StyleSelector
+{
+public:
+ StyleSelector() : nameCaseSensitivity(Qt::CaseSensitive) {}
+ virtual ~StyleSelector();
+
+ union NodePtr {
+ void *ptr;
+ int id;
+ };
+
+ QVector<StyleRule> styleRulesForNode(NodePtr node);
+ QVector<Declaration> declarationsForNode(NodePtr node, const char *extraPseudo = 0);
+
+ virtual bool nodeNameEquals(NodePtr node, const QString& nodeName) const;
+ virtual QString attribute(NodePtr node, const QString &name) const = 0;
+ virtual bool hasAttributes(NodePtr node) const = 0;
+ virtual QStringList nodeIds(NodePtr node) const;
+ virtual QStringList nodeNames(NodePtr node) const = 0;
+ virtual bool isNullNode(NodePtr node) const = 0;
+ virtual NodePtr parentNode(NodePtr node) const = 0;
+ virtual NodePtr previousSiblingNode(NodePtr node) const = 0;
+ virtual NodePtr duplicateNode(NodePtr node) const = 0;
+ virtual void freeNode(NodePtr node) const = 0;
+
+ QVector<StyleSheet> styleSheets;
+ QString medium;
+ Qt::CaseSensitivity nameCaseSensitivity;
+private:
+ void matchRule(NodePtr node, const StyleRule &rules, StyleSheetOrigin origin,
+ int depth, QMap<uint, StyleRule> *weightedRules);
+ bool selectorMatches(const Selector &rule, NodePtr node);
+ bool basicSelectorMatches(const BasicSelector &rule, NodePtr node);
+};
+
+enum TokenType {
+ NONE,
+
+ S,
+
+ CDO,
+ CDC,
+ INCLUDES,
+ DASHMATCH,
+
+ LBRACE,
+ PLUS,
+ GREATER,
+ COMMA,
+
+ STRING,
+ INVALID,
+
+ IDENT,
+
+ HASH,
+
+ ATKEYWORD_SYM,
+
+ EXCLAMATION_SYM,
+
+ LENGTH,
+
+ PERCENTAGE,
+ NUMBER,
+
+ FUNCTION,
+
+ COLON,
+ SEMICOLON,
+ RBRACE,
+ SLASH,
+ MINUS,
+ DOT,
+ STAR,
+ LBRACKET,
+ RBRACKET,
+ EQUAL,
+ LPAREN,
+ RPAREN,
+ OR
+};
+
+struct __attribute__((visibility("default"))) Symbol
+{
+ inline Symbol() : start(0), len(-1) {}
+ TokenType token;
+ QString text;
+ int start, len;
+ QString lexem() const;
+};
+
+class Scanner
+{
+public:
+ static QString preprocess(const QString &input, bool *hasEscapeSequences = 0);
+ static void scan(const QString &preprocessedInput, QVector<Symbol> *symbols);
+ static const char *tokenName(TokenType t);
+};
+
+class __attribute__((visibility("default"))) Parser
+{
+public:
+ Parser();
+ Parser(const QString &css, bool file = false);
+
+ void init(const QString &css, bool file = false);
+ bool parse(StyleSheet *styleSheet, Qt::CaseSensitivity nameCaseSensitivity = Qt::CaseSensitive);
+ Symbol errorSymbol();
+
+ bool parseImport(ImportRule *importRule);
+ bool parseMedia(MediaRule *mediaRule);
+ bool parseMedium(QStringList *media);
+ bool parsePage(PageRule *pageRule);
+ bool parsePseudoPage(QString *selector);
+ bool parseNextOperator(Value *value);
+ bool parseCombinator(BasicSelector::Relation *relation);
+ bool parseProperty(Declaration *decl);
+ bool parseRuleset(StyleRule *styleRule);
+ bool parseSelector(Selector *sel);
+ bool parseSimpleSelector(BasicSelector *basicSel);
+ bool parseClass(QString *name);
+ bool parseElementName(QString *name);
+ bool parseAttrib(AttributeSelector *attr);
+ bool parsePseudo(Pseudo *pseudo);
+ bool parseNextDeclaration(Declaration *declaration);
+ bool parsePrio(Declaration *declaration);
+ bool parseExpr(QVector<Value> *values);
+ bool parseTerm(Value *value);
+ bool parseFunction(QString *name, QString *args);
+ bool parseHexColor(QColor *col);
+ bool testAndParseUri(QString *uri);
+
+ inline bool testRuleset() { return testSelector(); }
+ inline bool testSelector() { return testSimpleSelector(); }
+ inline bool parseNextSelector(Selector *sel) { if (!testSelector()) return recordError(); return parseSelector(sel); }
+ bool testSimpleSelector();
+ inline bool parseNextSimpleSelector(BasicSelector *basicSel) { if (!testSimpleSelector()) return recordError(); return parseSimpleSelector(basicSel); }
+ inline bool testElementName() { return test(IDENT) || test(STAR); }
+ inline bool testClass() { return test(DOT); }
+ inline bool testAttrib() { return test(LBRACKET); }
+ inline bool testPseudo() { return test(COLON); }
+ inline bool testMedium() { return test(IDENT); }
+ inline bool parseNextMedium(QStringList *media) { if (!testMedium()) return recordError(); return parseMedium(media); }
+ inline bool testPseudoPage() { return test(COLON); }
+ inline bool testImport() { return testTokenAndEndsWith(ATKEYWORD_SYM, QLatin1String("import")); }
+ inline bool testMedia() { return testTokenAndEndsWith(ATKEYWORD_SYM, QLatin1String("media")); }
+ inline bool testPage() { return testTokenAndEndsWith(ATKEYWORD_SYM, QLatin1String("page")); }
+ inline bool testCombinator() { return test(PLUS) || test(GREATER) || test(S); }
+ inline bool testProperty() { return test(IDENT); }
+ bool testTerm();
+ inline bool testExpr() { return testTerm(); }
+ inline bool parseNextExpr(QVector<Value> *values) { if (!testExpr()) return recordError(); return parseExpr(values); }
+ bool testPrio();
+ inline bool testHexColor() { return test(HASH); }
+ inline bool testFunction() { return test(FUNCTION); }
+ inline bool parseNextFunction(QString *name, QString *args) { if (!testFunction()) return recordError(); return parseFunction(name, args); }
+
+ inline bool lookupElementName() const { return lookup() == IDENT || lookup() == STAR; }
+
+ inline void skipSpace() { while (test(S)) {}; }
+
+ inline bool hasNext() const { return index < symbols.count(); }
+ inline TokenType next() { return symbols.at(index++).token; }
+ bool next(TokenType t);
+ bool test(TokenType t);
+ inline void prev() { index--; }
+ inline const Symbol &symbol() const { return symbols.at(index - 1); }
+ inline QString lexem() const { return symbol().lexem(); }
+ QString unquotedLexem() const;
+ QString lexemUntil(TokenType t);
+ bool until(TokenType target, TokenType target2 = NONE);
+ inline TokenType lookup() const {
+ return (index - 1) < symbols.count() ? symbols.at(index - 1).token : NONE;
+ }
+
+ bool testTokenAndEndsWith(TokenType t, const QLatin1String &str);
+
+ inline bool recordError() { errorIndex = index; return false; }
+
+ QVector<Symbol> symbols;
+ int index;
+ int errorIndex;
+ bool hasEscapeSequences;
+ QString sourcePath;
+};
+
+}
+
+
+
+ template <> struct QMetaTypeId< QCss::BackgroundData > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { (0) }; if (!metatype_id) metatype_id = qRegisterMetaType< QCss::BackgroundData >("QCss::BackgroundData"); return metatype_id; } };
+ template <> struct QMetaTypeId< QCss::LengthData > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { (0) }; if (!metatype_id) metatype_id = qRegisterMetaType< QCss::LengthData >("QCss::LengthData"); return metatype_id; } };
+ template <> struct QMetaTypeId< QCss::BorderData > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { (0) }; if (!metatype_id) metatype_id = qRegisterMetaType< QCss::BorderData >("QCss::BorderData"); return metatype_id; } };
+# 1 "../../include/QtGui/private/qcssparser_p.h" 2
+# 71 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextdocument_p.h" 2
+
+
+
+
+
+
+
+
+
+class QTextFormatCollection;
+class QTextFormat;
+class QTextBlockFormat;
+class QTextCursorPrivate;
+class QAbstractTextDocumentLayout;
+class QTextDocument;
+class QTextFrame;
+
+#define QTextBeginningOfFrame QChar(0xfdd0)
+#define QTextEndOfFrame QChar(0xfdd1)
+
+class QTextFragmentData : public QFragment<>
+{
+public:
+ inline void initialize() {}
+ inline void invalidate() const {}
+ inline void free() {}
+ int stringPosition;
+ int format;
+};
+
+class QTextBlockData : public QFragment<3>
+{
+public:
+ inline void initialize()
+ { layout = 0; userData = 0; userState = -1; revision = 0; hidden = 0; }
+ void invalidate() const;
+ inline void free()
+ { delete layout; layout = 0; delete userData; userData = 0; }
+
+ mutable int format;
+
+ mutable QTextLayout *layout;
+ mutable QTextBlockUserData *userData;
+ mutable int userState;
+ mutable int revision : 31;
+ mutable uint hidden : 1;
+};
+
+
+class QAbstractUndoItem;
+
+class QTextUndoCommand
+{
+public:
+ enum Command {
+ Inserted = 0,
+ Removed = 1,
+ CharFormatChanged = 2,
+ BlockFormatChanged = 3,
+ BlockInserted = 4,
+ BlockRemoved = 5,
+ BlockAdded = 6,
+ BlockDeleted = 7,
+ GroupFormatChange = 8,
+ Custom = 256
+ };
+ enum Operation {
+ KeepCursor = 0,
+ MoveCursor = 1
+ };
+ quint16 command;
+ quint8 block;
+ quint8 operation;
+ int format;
+ quint32 strPos;
+ quint32 pos;
+ union {
+ int blockFormat;
+ quint32 length;
+ QAbstractUndoItem *custom;
+ int objectIndex;
+ };
+ quint32 revision;
+
+ bool tryMerge(const QTextUndoCommand &other);
+};
+template <> class QTypeInfo<QTextUndoCommand> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTextUndoCommand)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTextUndoCommand"; } };
+
+class QTextDocumentPrivate : public QObjectPrivate
+{
+ inline QTextDocument* q_func() { return static_cast<QTextDocument *>(q_ptr); } inline const QTextDocument* q_func() const { return static_cast<const QTextDocument *>(q_ptr); } friend class QTextDocument;
+public:
+ typedef QFragmentMap<QTextFragmentData> FragmentMap;
+ typedef FragmentMap::ConstIterator FragmentIterator;
+ typedef QFragmentMap<QTextBlockData> BlockMap;
+
+ QTextDocumentPrivate();
+ ~QTextDocumentPrivate();
+
+ void init();
+ void clear();
+
+ void setLayout(QAbstractTextDocumentLayout *layout);
+
+ void insert(int pos, const QString &text, int format);
+ void insert(int pos, int strPos, int strLength, int format);
+ int insertBlock(int pos, int blockFormat, int charFormat, QTextUndoCommand::Operation = QTextUndoCommand::MoveCursor);
+ int insertBlock(const QChar &blockSeparator, int pos, int blockFormat, int charFormat,
+ QTextUndoCommand::Operation op = QTextUndoCommand::MoveCursor);
+
+ void move(int from, int to, int length, QTextUndoCommand::Operation = QTextUndoCommand::MoveCursor);
+ void remove(int pos, int length, QTextUndoCommand::Operation = QTextUndoCommand::MoveCursor);
+
+ void aboutToRemoveCell(int cursorFrom, int cursorEnd);
+
+ QTextFrame *insertFrame(int start, int end, const QTextFrameFormat &format);
+ void removeFrame(QTextFrame *frame);
+
+ enum FormatChangeMode { MergeFormat, SetFormat, SetFormatAndPreserveObjectIndices };
+
+ void setCharFormat(int pos, int length, const QTextCharFormat &newFormat, FormatChangeMode mode = SetFormat);
+ void setBlockFormat(const QTextBlock &from, const QTextBlock &to,
+ const QTextBlockFormat &newFormat, FormatChangeMode mode = SetFormat);
+
+ void emitUndoAvailable(bool available);
+ void emitRedoAvailable(bool available);
+
+ int undoRedo(bool undo);
+ inline void undo() { undoRedo(true); }
+ inline void redo() { undoRedo(false); }
+ void appendUndoItem(QAbstractUndoItem *);
+ inline void beginEditBlock() { editBlock++; }
+ void joinPreviousEditBlock();
+ void endEditBlock();
+ inline bool isInEditBlock() const { return editBlock; }
+ void enableUndoRedo(bool enable);
+ inline bool isUndoRedoEnabled() const { return undoEnabled; }
+
+ inline bool isUndoAvailable() const { return undoEnabled && undoState > 0; }
+ inline bool isRedoAvailable() const { return undoEnabled && undoState < undoStack.size(); }
+
+ inline QString buffer() const { return text; }
+ QString plainText() const;
+ inline int length() const { return fragments.length(); }
+
+ inline QTextFormatCollection *formatCollection() { return &formats; }
+ inline const QTextFormatCollection *formatCollection() const { return &formats; }
+ inline QAbstractTextDocumentLayout *layout() const { return lout; }
+
+ inline FragmentIterator find(int pos) const { return fragments.find(pos); }
+ inline FragmentIterator begin() const { return fragments.begin(); }
+ inline FragmentIterator end() const { return fragments.end(); }
+
+ inline QTextBlock blocksBegin() const { return QTextBlock(const_cast<QTextDocumentPrivate *>(this), blocks.firstNode()); }
+ inline QTextBlock blocksEnd() const { return QTextBlock(const_cast<QTextDocumentPrivate *>(this), 0); }
+ inline QTextBlock blocksFind(int pos) const { return QTextBlock(const_cast<QTextDocumentPrivate *>(this), blocks.findNode(pos)); }
+ int blockCharFormatIndex(int node) const;
+
+ inline int numBlocks() const { return blocks.numNodes(); }
+
+ const BlockMap &blockMap() const { return blocks; }
+ const FragmentMap &fragmentMap() const { return fragments; }
+ BlockMap &blockMap() { return blocks; }
+ FragmentMap &fragmentMap() { return fragments; }
+
+ static const QTextBlockData *block(const QTextBlock &it) { return it.p->blocks.fragment(it.n); }
+
+ int nextCursorPosition(int position, QTextLayout::CursorMode mode) const;
+ int previousCursorPosition(int position, QTextLayout::CursorMode mode) const;
+
+ void changeObjectFormat(QTextObject *group, int format);
+
+ void setModified(bool m);
+ inline bool isModified() const { return modified; }
+
+ inline QFont defaultFont() const { return formats.defaultFont(); }
+ inline void setDefaultFont(const QFont &f) { formats.setDefaultFont(f); }
+
+private:
+ bool split(int pos);
+ bool unite(uint f);
+ void truncateUndoStack();
+
+ void insert_string(int pos, uint strPos, uint length, int format, QTextUndoCommand::Operation op);
+ int insert_block(int pos, uint strPos, int format, int blockformat, QTextUndoCommand::Operation op, int command);
+ int remove_string(int pos, uint length, QTextUndoCommand::Operation op);
+ int remove_block(int pos, int *blockformat, int command, QTextUndoCommand::Operation op);
+
+ void insert_frame(QTextFrame *f);
+ void scan_frames(int pos, int charsRemoved, int charsAdded);
+ static void clearFrame(QTextFrame *f);
+
+ void adjustDocumentChangesAndCursors(int from, int addedOrRemoved, QTextUndoCommand::Operation op);
+
+ bool wasUndoAvailable;
+ bool wasRedoAvailable;
+
+public:
+ void documentChange(int from, int length);
+
+ inline void addCursor(QTextCursorPrivate *c) { cursors.append(c); }
+ inline void removeCursor(QTextCursorPrivate *c) { cursors.removeAll(c); changedCursors.removeAll(c); }
+
+ QTextFrame *frameAt(int pos) const;
+ QTextFrame *rootFrame() const;
+
+ QTextObject *objectForIndex(int objectIndex) const;
+ QTextObject *objectForFormat(int formatIndex) const;
+ QTextObject *objectForFormat(const QTextFormat &f) const;
+
+ QTextObject *createObject(const QTextFormat &newFormat, int objectIndex = -1);
+ void deleteObject(QTextObject *object);
+
+ QTextDocument *document() { return q_func(); }
+ const QTextDocument *document() const { return q_func(); }
+
+ bool ensureMaximumBlockCount();
+
+private:
+ QTextDocumentPrivate(const QTextDocumentPrivate& m);
+ QTextDocumentPrivate& operator= (const QTextDocumentPrivate& m);
+
+ void appendUndoItem(const QTextUndoCommand &c);
+
+ void contentsChanged();
+
+ void compressPieceTable();
+
+ QString text;
+ uint unreachableCharacterCount;
+
+ QVector<QTextUndoCommand> undoStack;
+ bool undoEnabled;
+ int undoState;
+
+ int modifiedState;
+ bool modified;
+
+ int editBlock;
+ int docChangeFrom;
+ int docChangeOldLength;
+ int docChangeLength;
+ bool framesDirty;
+
+ QTextFormatCollection formats;
+ mutable QTextFrame *rtFrame;
+ QAbstractTextDocumentLayout *lout;
+ FragmentMap fragments;
+ BlockMap blocks;
+ int initialBlockCharFormatIndex;
+
+ QList<QTextCursorPrivate*> cursors;
+ QList<QTextCursorPrivate*> changedCursors;
+ QMap<int, QTextObject *> objects;
+ QMap<QUrl, QVariant> resources;
+ QMap<QUrl, QVariant> cachedResources;
+ QString defaultStyleSheet;
+
+ int lastBlockCount;
+
+public:
+ QTextOption defaultTextOption;
+
+ QCss::StyleSheet parsedDefaultStyleSheet;
+
+ int maximumBlockCount;
+ bool needsEnsureMaximumBlockCount;
+ bool inContentsChange;
+ QSizeF pageSize;
+ QString title;
+ QString url;
+ qreal indentWidth;
+ qreal documentMargin;
+
+ void mergeCachedResources(const QTextDocumentPrivate *priv);
+
+ friend class QTextHtmlExporter;
+ friend class QTextCursor;
+};
+
+class QTextTable;
+class QTextHtmlExporter
+{
+public:
+ QTextHtmlExporter(const QTextDocument *_doc);
+
+ enum ExportMode {
+ ExportEntireDocument,
+ ExportFragment
+ };
+
+ QString toHtml(const QByteArray &encoding, ExportMode mode = ExportEntireDocument);
+
+private:
+ enum StyleMode { EmitStyleTag, OmitStyleTag };
+ enum FrameType { TextFrame, TableFrame, RootFrame };
+
+ void emitFrame(QTextFrame::Iterator frameIt);
+ void emitTextFrame(const QTextFrame *frame);
+ void emitBlock(const QTextBlock &block);
+ void emitTable(const QTextTable *table);
+ void emitFragment(const QTextFragment &fragment);
+
+ void emitBlockAttributes(const QTextBlock &block);
+ bool emitCharFormatStyle(const QTextCharFormat &format);
+ void emitTextLength(const char *attribute, const QTextLength &length);
+ void emitAlignment(Qt::Alignment alignment);
+ void emitFloatStyle(QTextFrameFormat::Position pos, StyleMode mode = EmitStyleTag);
+ void emitMargins(const QString &top, const QString &bottom, const QString &left, const QString &right);
+ void emitAttribute(const char *attribute, const QString &value);
+ void emitFrameStyle(const QTextFrameFormat &format, FrameType frameType);
+ void emitBorderStyle(QTextFrameFormat::BorderStyle style);
+ void emitPageBreakPolicy(QTextFormat::PageBreakFlags policy);
+
+ void emitFontFamily(const QString &family);
+
+ void emitBackgroundAttribute(const QTextFormat &format);
+ QString findUrlForImage(const QTextDocument *doc, qint64 cacheKey, bool isPixmap);
+
+ QString html;
+ QTextCharFormat defaultCharFormat;
+ const QTextDocument *doc;
+ bool fragmentMarkers;
+};
+
+
+# 1 "../../include/QtGui/private/qtextdocument_p.h" 2
+# 71 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+
+# 1 "../../include/QtCore/private/qharfbuzz_p.h" 1
+# 1 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qharfbuzz_p.h" 1
+# 54 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qharfbuzz_p.h"
+#define QHARFBUZZ_P_H
+
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h" 1
+# 26 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h"
+#define HARFBUZZ_SHAPER_H
+
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-global.h" 1
+# 29 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-global.h"
+#define HARFBUZZ_GLOBAL_H
+
+
+
+
+
+#define HB_BEGIN_HEADER extern "C" {
+#define HB_END_HEADER }
+
+
+
+
+
+extern "C" {
+# 52 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-global.h"
+#define HB_MAKE_TAG(_x1,_x2,_x3,_x4) ( ( (HB_UInt)_x1 << 24 ) | ( (HB_UInt)_x2 << 16 ) | ( (HB_UInt)_x3 << 8 ) | (HB_UInt)_x4 )
+
+
+
+
+
+typedef char hb_int8;
+typedef unsigned char hb_uint8;
+typedef short hb_int16;
+typedef unsigned short hb_uint16;
+typedef int hb_int32;
+typedef unsigned int hb_uint32;
+
+typedef hb_uint8 HB_Bool;
+
+typedef hb_uint8 HB_Byte;
+typedef hb_uint16 HB_UShort;
+typedef hb_uint32 HB_UInt;
+typedef hb_int8 HB_Char;
+typedef hb_int16 HB_Short;
+typedef hb_int32 HB_Int;
+
+typedef hb_uint16 HB_UChar16;
+typedef hb_uint32 HB_UChar32;
+typedef hb_uint32 HB_Glyph;
+typedef hb_int32 HB_Fixed;
+
+#define HB_FIXED_CONSTANT(v) ((v) * 64)
+#define HB_FIXED_ROUND(v) (((v)+32) & -64)
+
+typedef hb_int32 HB_16Dot16;
+
+typedef void * HB_Pointer;
+typedef hb_uint32 HB_Tag;
+
+typedef enum {
+
+ HB_Err_Ok = 0x0000,
+ HB_Err_Not_Covered = 0xFFFF,
+
+
+
+
+
+ HB_Err_Invalid_Argument = 0x1A66,
+
+
+ HB_Err_Invalid_SubTable_Format = 0x157F,
+ HB_Err_Invalid_SubTable = 0x1570,
+ HB_Err_Read_Error = 0x6EAD,
+
+
+ HB_Err_Out_Of_Memory = 0xDEAD
+} HB_Error;
+
+typedef struct {
+ HB_Fixed x;
+ HB_Fixed y;
+} HB_FixedPoint;
+
+typedef struct HB_Font_ *HB_Font;
+typedef struct HB_StreamRec_ *HB_Stream;
+typedef struct HB_FaceRec_ *HB_Face;
+
+}
+# 29 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h" 2
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-gdef.h" 1
+# 27 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-gdef.h"
+#define HARFBUZZ_GDEF_H
+
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-open.h" 1
+# 27 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-open.h"
+#define HARFBUZZ_OPEN_H
+
+
+
+extern "C" {
+
+
+#define HB_ALL_GLYPHS 0xFFFF
+
+#define HB_DEFAULT_LANGUAGE 0xFFFF
+
+#define HB_MAX_NESTING_LEVEL 100
+
+
+
+
+struct HB_LangSys_
+{
+ HB_UShort LookupOrderOffset;
+ HB_UShort ReqFeatureIndex;
+ HB_UShort FeatureCount;
+ HB_UShort* FeatureIndex;
+};
+
+typedef struct HB_LangSys_ HB_LangSys;
+
+
+struct HB_LangSysRecord_
+{
+ HB_UInt LangSysTag;
+ HB_LangSys LangSys;
+};
+
+typedef struct HB_LangSysRecord_ HB_LangSysRecord;
+
+
+struct HB_ScriptTable_
+{
+ HB_LangSys DefaultLangSys;
+ HB_UShort LangSysCount;
+ HB_LangSysRecord* LangSysRecord;
+};
+
+typedef struct HB_ScriptTable_ HB_ScriptTable;
+
+
+struct HB_ScriptRecord_
+{
+ HB_UInt ScriptTag;
+ HB_ScriptTable Script;
+};
+
+typedef struct HB_ScriptRecord_ HB_ScriptRecord;
+
+
+struct HB_ScriptList_
+{
+ HB_UShort ScriptCount;
+ HB_ScriptRecord* ScriptRecord;
+};
+
+typedef struct HB_ScriptList_ HB_ScriptList;
+
+
+
+
+struct HB_Feature_
+{
+ HB_UShort FeatureParams;
+ HB_UShort LookupListCount;
+ HB_UShort* LookupListIndex;
+};
+
+typedef struct HB_Feature_ HB_Feature;
+
+
+struct HB_FeatureRecord_
+{
+ HB_UInt FeatureTag;
+ HB_Feature Feature;
+};
+
+typedef struct HB_FeatureRecord_ HB_FeatureRecord;
+
+
+struct HB_FeatureList_
+{
+ HB_UShort FeatureCount;
+ HB_FeatureRecord* FeatureRecord;
+ HB_UShort* ApplyOrder;
+ HB_UShort ApplyCount;
+};
+
+typedef struct HB_FeatureList_ HB_FeatureList;
+
+
+
+
+typedef struct HB_SubTable_ HB_SubTable;
+
+
+struct HB_Lookup_
+{
+ HB_UShort LookupType;
+ HB_UShort LookupFlag;
+ HB_UShort SubTableCount;
+ HB_SubTable* SubTable;
+};
+
+typedef struct HB_Lookup_ HB_Lookup;
+# 145 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-open.h"
+struct HB_LookupList_
+{
+ HB_UShort LookupCount;
+ HB_Lookup* Lookup;
+ HB_UInt* Properties;
+};
+
+typedef struct HB_LookupList_ HB_LookupList;
+# 161 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-open.h"
+#define HB_LOOKUP_FLAG_RIGHT_TO_LEFT 0x0001
+#define HB_LOOKUP_FLAG_IGNORE_BASE_GLYPHS 0x0002
+#define HB_LOOKUP_FLAG_IGNORE_LIGATURES 0x0004
+#define HB_LOOKUP_FLAG_IGNORE_MARKS 0x0008
+#define HB_LOOKUP_FLAG_IGNORE_SPECIAL_MARKS 0xFF00
+
+
+struct HB_CoverageFormat1_
+{
+ HB_UShort GlyphCount;
+ HB_UShort* GlyphArray;
+};
+
+typedef struct HB_CoverageFormat1_ HB_CoverageFormat1;
+
+
+struct HB_RangeRecord_
+{
+ HB_UShort Start;
+ HB_UShort End;
+ HB_UShort StartCoverageIndex;
+
+};
+
+typedef struct HB_RangeRecord_ HB_RangeRecord;
+
+
+struct HB_CoverageFormat2_
+{
+ HB_UShort RangeCount;
+ HB_RangeRecord* RangeRecord;
+};
+
+typedef struct HB_CoverageFormat2_ HB_CoverageFormat2;
+
+
+struct HB_Coverage_
+{
+ HB_UShort CoverageFormat;
+
+ union
+ {
+ HB_CoverageFormat1 cf1;
+ HB_CoverageFormat2 cf2;
+ } cf;
+};
+
+typedef struct HB_Coverage_ HB_Coverage;
+
+
+struct HB_ClassDefFormat1_
+{
+ HB_UShort StartGlyph;
+
+ HB_UShort GlyphCount;
+ HB_UShort* ClassValueArray;
+};
+
+typedef struct HB_ClassDefFormat1_ HB_ClassDefFormat1;
+
+
+struct HB_ClassRangeRecord_
+{
+ HB_UShort Start;
+ HB_UShort End;
+ HB_UShort Class;
+};
+
+typedef struct HB_ClassRangeRecord_ HB_ClassRangeRecord;
+
+
+struct HB_ClassDefFormat2_
+{
+ HB_UShort ClassRangeCount;
+
+ HB_ClassRangeRecord* ClassRangeRecord;
+
+};
+
+typedef struct HB_ClassDefFormat2_ HB_ClassDefFormat2;
+
+
+struct HB_ClassDefinition_
+{
+ HB_Bool loaded;
+
+ HB_UShort ClassFormat;
+
+ union
+ {
+ HB_ClassDefFormat1 cd1;
+ HB_ClassDefFormat2 cd2;
+ } cd;
+};
+
+typedef struct HB_ClassDefinition_ HB_ClassDefinition;
+
+
+struct HB_Device_
+{
+ HB_UShort StartSize;
+ HB_UShort EndSize;
+ HB_UShort DeltaFormat;
+
+ HB_UShort* DeltaValue;
+};
+
+typedef struct HB_Device_ HB_Device;
+
+
+enum HB_Type_
+{
+ HB_Type_GSUB,
+ HB_Type_GPOS
+};
+
+typedef enum HB_Type_ HB_Type;
+
+
+}
+# 30 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-gdef.h" 2
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-stream.h" 1
+# 27 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-stream.h"
+#define HARFBUZZ_STREAM_H
+
+
+
+extern "C" {
+
+typedef struct HB_StreamRec_
+{
+ HB_Byte* base;
+ HB_UInt size;
+ HB_UInt pos;
+
+ HB_Byte* cursor;
+} HB_StreamRec;
+
+
+}
+# 31 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-gdef.h" 2
+
+extern "C" {
+
+
+
+#define HB_GDEF_BASE_GLYPH 0x0002
+#define HB_GDEF_LIGATURE 0x0004
+#define HB_GDEF_MARK 0x0008
+#define HB_GDEF_COMPONENT 0x0010
+
+
+typedef struct HB_AttachPoint_ HB_AttachPoint;
+
+
+struct HB_AttachList_
+{
+ HB_Bool loaded;
+
+ HB_Coverage Coverage;
+ HB_UShort GlyphCount;
+
+ HB_AttachPoint* AttachPoint;
+};
+
+typedef struct HB_AttachList_ HB_AttachList;
+
+typedef struct HB_LigGlyph_ HB_LigGlyph;
+
+struct HB_LigCaretList_
+{
+ HB_Bool loaded;
+
+ HB_Coverage Coverage;
+ HB_UShort LigGlyphCount;
+ HB_LigGlyph* LigGlyph;
+};
+
+typedef struct HB_LigCaretList_ HB_LigCaretList;
+# 92 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-gdef.h"
+struct HB_GDEFHeader_
+{
+ HB_UInt offset;
+
+ HB_16Dot16 Version;
+
+ HB_ClassDefinition GlyphClassDef;
+ HB_AttachList AttachList;
+ HB_LigCaretList LigCaretList;
+ HB_UInt MarkAttachClassDef_offset;
+ HB_ClassDefinition MarkAttachClassDef;
+
+ HB_UShort LastGlyph;
+ HB_UShort** NewGlyphClasses;
+};
+
+typedef struct HB_GDEFHeader_ HB_GDEFHeader;
+typedef struct HB_GDEFHeader_* HB_GDEF;
+
+
+HB_Error HB_New_GDEF_Table( HB_GDEFHeader** retptr );
+
+
+HB_Error HB_Load_GDEF_Table( HB_Stream stream,
+ HB_GDEFHeader** gdef );
+
+
+HB_Error HB_Done_GDEF_Table ( HB_GDEFHeader* gdef );
+
+
+HB_Error HB_GDEF_Get_Glyph_Property( HB_GDEFHeader* gdef,
+ HB_UShort glyphID,
+ HB_UShort* property );
+
+HB_Error HB_GDEF_Build_ClassDefinition( HB_GDEFHeader* gdef,
+ HB_UShort num_glyphs,
+ HB_UShort glyph_count,
+ HB_UShort* glyph_array,
+ HB_UShort* class_array );
+
+
+}
+# 30 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h" 2
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-gpos.h" 1
+# 27 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-gpos.h"
+#define HARFBUZZ_GPOS_H
+
+
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-buffer.h" 1
+# 29 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-buffer.h"
+#define HARFBUZZ_BUFFER_H
+
+
+
+extern "C" {
+
+typedef struct HB_GlyphItemRec_ {
+ HB_UInt gindex;
+ HB_UInt properties;
+ HB_UInt cluster;
+ HB_UShort component;
+ HB_UShort ligID;
+ HB_UShort gproperties;
+} HB_GlyphItemRec, *HB_GlyphItem;
+
+typedef struct HB_PositionRec_ {
+ HB_Fixed x_pos;
+ HB_Fixed y_pos;
+ HB_Fixed x_advance;
+ HB_Fixed y_advance;
+ HB_UShort back;
+
+ HB_Bool new_advance;
+
+
+
+ HB_Short cursive_chain;
+
+
+} HB_PositionRec, *HB_Position;
+
+
+typedef struct HB_BufferRec_{
+ HB_UInt allocated;
+
+ HB_UInt in_length;
+ HB_UInt out_length;
+ HB_UInt in_pos;
+ HB_UInt out_pos;
+
+ HB_Bool separate_out;
+ HB_GlyphItem in_string;
+ HB_GlyphItem out_string;
+ HB_GlyphItem alt_string;
+ HB_Position positions;
+ HB_UShort max_ligID;
+} HB_BufferRec, *HB_Buffer;
+
+HB_Error
+hb_buffer_new( HB_Buffer *buffer );
+
+void
+hb_buffer_free( HB_Buffer buffer );
+
+void
+hb_buffer_clear( HB_Buffer buffer );
+
+HB_Error
+hb_buffer_add_glyph( HB_Buffer buffer,
+ HB_UInt glyph_index,
+ HB_UInt properties,
+ HB_UInt cluster );
+
+}
+# 31 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-gpos.h" 2
+
+extern "C" {
+
+
+
+
+#define HB_GPOS_LOOKUP_SINGLE 1
+#define HB_GPOS_LOOKUP_PAIR 2
+#define HB_GPOS_LOOKUP_CURSIVE 3
+#define HB_GPOS_LOOKUP_MARKBASE 4
+#define HB_GPOS_LOOKUP_MARKLIG 5
+#define HB_GPOS_LOOKUP_MARKMARK 6
+#define HB_GPOS_LOOKUP_CONTEXT 7
+#define HB_GPOS_LOOKUP_CHAIN 8
+#define HB_GPOS_LOOKUP_EXTENSION 9
+# 58 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-gpos.h"
+typedef HB_Error (*HB_MMFunction)(HB_Font font,
+ HB_UShort metric_id,
+ HB_Fixed* metric_value,
+ void* data );
+
+
+struct HB_GPOSHeader_
+{
+ HB_16Dot16 Version;
+
+ HB_ScriptList ScriptList;
+ HB_FeatureList FeatureList;
+ HB_LookupList LookupList;
+
+ HB_GDEFHeader* gdef;
+
+
+
+
+
+ HB_MMFunction mmfunc;
+ void* data;
+};
+
+typedef struct HB_GPOSHeader_ HB_GPOSHeader;
+typedef HB_GPOSHeader* HB_GPOS;
+
+
+HB_Error HB_Load_GPOS_Table( HB_Stream stream,
+ HB_GPOSHeader** gpos,
+ HB_GDEFHeader* gdef,
+ HB_Stream gdefStream );
+
+
+HB_Error HB_Done_GPOS_Table( HB_GPOSHeader* gpos );
+
+
+HB_Error HB_GPOS_Select_Script( HB_GPOSHeader* gpos,
+ HB_UInt script_tag,
+ HB_UShort* script_index );
+
+HB_Error HB_GPOS_Select_Language( HB_GPOSHeader* gpos,
+ HB_UInt language_tag,
+ HB_UShort script_index,
+ HB_UShort* language_index,
+ HB_UShort* req_feature_index );
+
+HB_Error HB_GPOS_Select_Feature( HB_GPOSHeader* gpos,
+ HB_UInt feature_tag,
+ HB_UShort script_index,
+ HB_UShort language_index,
+ HB_UShort* feature_index );
+
+
+HB_Error HB_GPOS_Query_Scripts( HB_GPOSHeader* gpos,
+ HB_UInt** script_tag_list );
+
+HB_Error HB_GPOS_Query_Languages( HB_GPOSHeader* gpos,
+ HB_UShort script_index,
+ HB_UInt** language_tag_list );
+
+HB_Error HB_GPOS_Query_Features( HB_GPOSHeader* gpos,
+ HB_UShort script_index,
+ HB_UShort language_index,
+ HB_UInt** feature_tag_list );
+
+
+HB_Error HB_GPOS_Add_Feature( HB_GPOSHeader* gpos,
+ HB_UShort feature_index,
+ HB_UInt property );
+
+HB_Error HB_GPOS_Clear_Features( HB_GPOSHeader* gpos );
+
+
+HB_Error HB_GPOS_Register_MM_Function( HB_GPOSHeader* gpos,
+ HB_MMFunction mmfunc,
+ void* data );
+
+
+
+
+
+HB_Error HB_GPOS_Apply_String( HB_Font font,
+ HB_GPOSHeader* gpos,
+ HB_UShort load_flags,
+ HB_Buffer buffer,
+ HB_Bool dvi,
+ HB_Bool r2l );
+
+}
+# 31 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h" 2
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-gsub.h" 1
+# 27 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-gsub.h"
+#define HARFBUZZ_GSUB_H
+
+
+
+
+extern "C" {
+
+
+
+
+#define HB_GSUB_LOOKUP_SINGLE 1
+#define HB_GSUB_LOOKUP_MULTIPLE 2
+#define HB_GSUB_LOOKUP_ALTERNATE 3
+#define HB_GSUB_LOOKUP_LIGATURE 4
+#define HB_GSUB_LOOKUP_CONTEXT 5
+#define HB_GSUB_LOOKUP_CHAIN 6
+#define HB_GSUB_LOOKUP_EXTENSION 7
+#define HB_GSUB_LOOKUP_REVERSE_CHAIN 8
+# 54 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-gsub.h"
+typedef HB_UShort (*HB_AltFunction)(HB_UInt pos,
+ HB_UShort glyphID,
+ HB_UShort num_alternates,
+ HB_UShort* alternates,
+ void* data );
+
+
+struct HB_GSUBHeader_
+{
+ HB_UInt offset;
+
+ HB_16Dot16 Version;
+
+ HB_ScriptList ScriptList;
+ HB_FeatureList FeatureList;
+ HB_LookupList LookupList;
+
+ HB_GDEFHeader* gdef;
+
+
+
+
+ HB_AltFunction altfunc;
+ void* data;
+};
+
+typedef struct HB_GSUBHeader_ HB_GSUBHeader;
+typedef HB_GSUBHeader* HB_GSUB;
+
+
+HB_Error HB_Load_GSUB_Table( HB_Stream stream,
+ HB_GSUBHeader** gsub,
+ HB_GDEFHeader* gdef,
+ HB_Stream gdefStream );
+
+
+HB_Error HB_Done_GSUB_Table( HB_GSUBHeader* gsub );
+
+
+HB_Error HB_GSUB_Select_Script( HB_GSUBHeader* gsub,
+ HB_UInt script_tag,
+ HB_UShort* script_index );
+
+HB_Error HB_GSUB_Select_Language( HB_GSUBHeader* gsub,
+ HB_UInt language_tag,
+ HB_UShort script_index,
+ HB_UShort* language_index,
+ HB_UShort* req_feature_index );
+
+HB_Error HB_GSUB_Select_Feature( HB_GSUBHeader* gsub,
+ HB_UInt feature_tag,
+ HB_UShort script_index,
+ HB_UShort language_index,
+ HB_UShort* feature_index );
+
+
+HB_Error HB_GSUB_Query_Scripts( HB_GSUBHeader* gsub,
+ HB_UInt** script_tag_list );
+
+HB_Error HB_GSUB_Query_Languages( HB_GSUBHeader* gsub,
+ HB_UShort script_index,
+ HB_UInt** language_tag_list );
+
+HB_Error HB_GSUB_Query_Features( HB_GSUBHeader* gsub,
+ HB_UShort script_index,
+ HB_UShort language_index,
+ HB_UInt** feature_tag_list );
+
+
+HB_Error HB_GSUB_Add_Feature( HB_GSUBHeader* gsub,
+ HB_UShort feature_index,
+ HB_UInt property );
+
+HB_Error HB_GSUB_Clear_Features( HB_GSUBHeader* gsub );
+
+
+HB_Error HB_GSUB_Register_Alternate_Function( HB_GSUBHeader* gsub,
+ HB_AltFunction altfunc,
+ void* data );
+
+
+HB_Error HB_GSUB_Apply_String( HB_GSUBHeader* gsub,
+ HB_Buffer buffer );
+
+
+}
+# 32 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h" 2
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-external.h" 1
+# 26 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-external.h"
+#define HARFBUZZ_EXTERNAL_H
+
+
+
+extern "C" {
+# 43 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-external.h"
+typedef enum {
+ HB_LineBreak_OP, HB_LineBreak_CL, HB_LineBreak_QU, HB_LineBreak_GL, HB_LineBreak_NS,
+ HB_LineBreak_EX, HB_LineBreak_SY, HB_LineBreak_IS, HB_LineBreak_PR, HB_LineBreak_PO,
+ HB_LineBreak_NU, HB_LineBreak_AL, HB_LineBreak_ID, HB_LineBreak_IN, HB_LineBreak_HY,
+ HB_LineBreak_BA, HB_LineBreak_BB, HB_LineBreak_B2, HB_LineBreak_ZW, HB_LineBreak_CM,
+ HB_LineBreak_WJ, HB_LineBreak_H2, HB_LineBreak_H3, HB_LineBreak_JL, HB_LineBreak_JV,
+ HB_LineBreak_JT, HB_LineBreak_SA, HB_LineBreak_SG,
+ HB_LineBreak_SP, HB_LineBreak_CR, HB_LineBreak_LF, HB_LineBreak_BK
+} HB_LineBreakClass;
+
+typedef enum
+{
+ HB_NoCategory,
+
+ HB_Mark_NonSpacing,
+ HB_Mark_SpacingCombining,
+ HB_Mark_Enclosing,
+
+ HB_Number_DecimalDigit,
+ HB_Number_Letter,
+ HB_Number_Other,
+
+ HB_Separator_Space,
+ HB_Separator_Line,
+ HB_Separator_Paragraph,
+
+ HB_Other_Control,
+ HB_Other_Format,
+ HB_Other_Surrogate,
+ HB_Other_PrivateUse,
+ HB_Other_NotAssigned,
+
+ HB_Letter_Uppercase,
+ HB_Letter_Lowercase,
+ HB_Letter_Titlecase,
+ HB_Letter_Modifier,
+ HB_Letter_Other,
+
+ HB_Punctuation_Connector,
+ HB_Punctuation_Dash,
+ HB_Punctuation_Open,
+ HB_Punctuation_Close,
+ HB_Punctuation_InitialQuote,
+ HB_Punctuation_FinalQuote,
+ HB_Punctuation_Other,
+
+ HB_Symbol_Math,
+ HB_Symbol_Currency,
+ HB_Symbol_Modifier,
+ HB_Symbol_Other
+} HB_CharCategory;
+
+typedef enum
+{
+ HB_Grapheme_Other,
+ HB_Grapheme_CR,
+ HB_Grapheme_LF,
+ HB_Grapheme_Control,
+ HB_Grapheme_Extend,
+ HB_Grapheme_L,
+ HB_Grapheme_V,
+ HB_Grapheme_T,
+ HB_Grapheme_LV,
+ HB_Grapheme_LVT
+} HB_GraphemeClass;
+
+
+typedef enum
+{
+ HB_Word_Other,
+ HB_Word_Format,
+ HB_Word_Katakana,
+ HB_Word_ALetter,
+ HB_Word_MidLetter,
+ HB_Word_MidNum,
+ HB_Word_Numeric,
+ HB_Word_ExtendNumLet
+} HB_WordClass;
+
+
+typedef enum
+{
+ HB_Sentence_Other,
+ HB_Sentence_Sep,
+ HB_Sentence_Format,
+ HB_Sentence_Sp,
+ HB_Sentence_Lower,
+ HB_Sentence_Upper,
+ HB_Sentence_OLetter,
+ HB_Sentence_Numeric,
+ HB_Sentence_ATerm,
+ HB_Sentence_STerm,
+ HB_Sentence_Close
+} HB_SentenceClass;
+
+HB_GraphemeClass HB_GetGraphemeClass(HB_UChar32 ch);
+HB_WordClass HB_GetWordClass(HB_UChar32 ch);
+HB_SentenceClass HB_GetSentenceClass(HB_UChar32 ch);
+HB_LineBreakClass HB_GetLineBreakClass(HB_UChar32 ch);
+
+void HB_GetGraphemeAndLineBreakClass(HB_UChar32 ch, HB_GraphemeClass *grapheme, HB_LineBreakClass *lineBreak);
+void HB_GetUnicodeCharProperties(HB_UChar32 ch, HB_CharCategory *category, int *combiningClass);
+HB_CharCategory HB_GetUnicodeCharCategory(HB_UChar32 ch);
+int HB_GetUnicodeCharCombiningClass(HB_UChar32 ch);
+HB_UChar16 HB_GetMirroredChar(HB_UChar16 ch);
+
+void *HB_Library_Resolve(const char *library, const char *symbol);
+
+void *HB_TextCodecForMib(int mib);
+char *HB_TextCodec_ConvertFromUnicode(void *codec, const HB_UChar16 *unicode, hb_uint32 length, hb_uint32 *outputLength);
+void HB_TextCodec_FreeResult(char *);
+
+}
+# 33 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h" 2
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-stream-private.h" 1
+# 27 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-stream-private.h"
+#define HARFBUZZ_STREAM_PRIVATE_H
+
+# 1 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-impl.h" 1
+# 27 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-impl.h"
+#define HARFBUZZ_IMPL_H
+
+
+
+
+
+extern "C" {
+
+
+#define HB_INTERNAL
+# 52 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-impl.h"
+#define TTAG_GDEF HB_MAKE_TAG( 'G', 'D', 'E', 'F' )
+
+
+#define TTAG_GPOS HB_MAKE_TAG( 'G', 'P', 'O', 'S' )
+
+
+#define TTAG_GSUB HB_MAKE_TAG( 'G', 'S', 'U', 'B' )
+
+
+
+#define HB_UNUSED(arg) ((arg) = (arg))
+
+
+#define HB_LIKELY(cond) (cond)
+#define HB_UNLIKELY(cond) (cond)
+
+#define ARRAY_LEN(Array) ((int)(sizeof (Array) / sizeof (Array)[0]))
+
+
+
+#define HB_IsHighSurrogate(ucs) (((ucs) & 0xfc00) == 0xd800)
+
+
+#define HB_IsLowSurrogate(ucs) (((ucs) & 0xfc00) == 0xdc00)
+
+
+#define HB_SurrogateToUcs4(high,low) (((HB_UChar32)(high))<<10) + (low) - 0x35fdc00;
+
+
+
+
+
+
+#define ALLOC(_ptr,_size) ( (_ptr) = _hb_alloc( _size, &error ), error != 0 )
+
+
+#define REALLOC(_ptr,_newsz) ( (_ptr) = _hb_realloc( (_ptr), (_newsz), &error ), error != 0 )
+
+
+#define FREE(_ptr) do { if ( (_ptr) ) { _hb_free( _ptr ); _ptr = NULL; } } while (0)
+# 100 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-impl.h"
+#define ALLOC_ARRAY(_ptr,_count,_type) ALLOC(_ptr,(_count)*sizeof(_type))
+
+
+#define REALLOC_ARRAY(_ptr,_newcnt,_type) REALLOC(_ptr,(_newcnt)*sizeof(_type))
+
+
+#define MEM_Copy(dest,source,count) memcpy( (char*)(dest), (const char*)(source), (size_t)(count) )
+
+#define ERR(err) _hb_err (err)
+
+
+ HB_Pointer
+_hb_alloc( size_t size,
+ HB_Error *perror_ );
+
+ HB_Pointer
+_hb_realloc( HB_Pointer block,
+ size_t new_size,
+ HB_Error *perror_ );
+
+ void
+_hb_free( HB_Pointer block );
+
+
+
+ HB_Error
+_hb_err (HB_Error code);
+
+
+}
+# 30 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-stream-private.h" 2
+
+
+extern "C" {
+
+ void
+_hb_close_stream( HB_Stream stream );
+
+ HB_Int
+_hb_stream_pos( HB_Stream stream );
+
+ HB_Error
+_hb_stream_seek( HB_Stream stream,
+ HB_UInt pos );
+
+ HB_Error
+_hb_stream_frame_enter( HB_Stream stream,
+ HB_UInt size );
+
+ void
+_hb_stream_frame_exit( HB_Stream stream );
+
+
+
+#define SET_ERR(c) ( (error = (c)) != 0 )
+
+#define GOTO_Table(tag) (0)
+#define FILE_Pos() _hb_stream_pos( stream )
+#define FILE_Seek(pos) SET_ERR( _hb_stream_seek( stream, pos ) )
+#define ACCESS_Frame(size) SET_ERR( _hb_stream_frame_enter( stream, size ) )
+#define FORGET_Frame() _hb_stream_frame_exit( stream )
+
+#define GET_Byte() (*stream->cursor++)
+#define GET_Short() (stream->cursor += 2, (HB_Short)( (*(((HB_Byte*)stream->cursor)-2) << 8) | *(((HB_Byte*)stream->cursor)-1) ))
+
+
+
+#define GET_Long() (stream->cursor += 4, (HB_Int)( (*(((HB_Byte*)stream->cursor)-4) << 24) | (*(((HB_Byte*)stream->cursor)-3) << 16) | (*(((HB_Byte*)stream->cursor)-2) << 8) | *(((HB_Byte*)stream->cursor)-1) ))
+
+
+
+
+
+
+
+#define GET_Char() ((HB_Char)GET_Byte())
+#define GET_UShort() ((HB_UShort)GET_Short())
+#define GET_ULong() ((HB_UInt)GET_Long())
+#define GET_Tag4() GET_ULong()
+
+}
+# 34 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h" 2
+
+extern "C" {
+
+typedef enum {
+ HB_Script_Common,
+ HB_Script_Greek,
+ HB_Script_Cyrillic,
+ HB_Script_Armenian,
+ HB_Script_Hebrew,
+ HB_Script_Arabic,
+ HB_Script_Syriac,
+ HB_Script_Thaana,
+ HB_Script_Devanagari,
+ HB_Script_Bengali,
+ HB_Script_Gurmukhi,
+ HB_Script_Gujarati,
+ HB_Script_Oriya,
+ HB_Script_Tamil,
+ HB_Script_Telugu,
+ HB_Script_Kannada,
+ HB_Script_Malayalam,
+ HB_Script_Sinhala,
+ HB_Script_Thai,
+ HB_Script_Lao,
+ HB_Script_Tibetan,
+ HB_Script_Myanmar,
+ HB_Script_Georgian,
+ HB_Script_Hangul,
+ HB_Script_Ogham,
+ HB_Script_Runic,
+ HB_Script_Khmer,
+ HB_Script_Inherited,
+ HB_ScriptCount = HB_Script_Inherited
+# 107 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/3rdparty/harfbuzz/src/harfbuzz-shaper.h"
+} HB_Script;
+
+typedef struct
+{
+ hb_uint32 pos;
+ hb_uint32 length;
+ HB_Script script;
+ hb_uint8 bidiLevel;
+} HB_ScriptItem;
+
+typedef enum {
+ HB_NoBreak,
+ HB_SoftHyphen,
+ HB_Break,
+ HB_ForcedBreak
+} HB_LineBreakType;
+
+
+typedef struct {
+ unsigned lineBreakType :2;
+ unsigned whiteSpace :1;
+ unsigned charStop :1;
+ unsigned wordBoundary :1;
+ unsigned sentenceBoundary :1;
+ unsigned unused :2;
+} HB_CharAttributes;
+
+void HB_GetCharAttributes(const HB_UChar16 *string, hb_uint32 stringLength,
+ const HB_ScriptItem *items, hb_uint32 numItems,
+ HB_CharAttributes *attributes);
+
+
+void HB_GetWordBoundaries(const HB_UChar16 *string, hb_uint32 stringLength,
+ const HB_ScriptItem *items, hb_uint32 numItems,
+ HB_CharAttributes *attributes);
+
+
+void HB_GetSentenceBoundaries(const HB_UChar16 *string, hb_uint32 stringLength,
+ const HB_ScriptItem *items, hb_uint32 numItems,
+ HB_CharAttributes *attributes);
+
+
+typedef enum {
+ HB_LeftToRight = 0,
+ HB_RightToLeft = 1
+} HB_StringToGlyphsFlags;
+
+typedef enum {
+ HB_ShaperFlag_Default = 0,
+ HB_ShaperFlag_NoKerning = 1,
+ HB_ShaperFlag_UseDesignMetrics = 2
+} HB_ShaperFlag;
+
+
+
+
+
+
+
+typedef enum {
+ HB_NoJustification= 0,
+ HB_Arabic_Space = 1,
+ HB_Character = 2,
+ HB_Space = 4,
+ HB_Arabic_Normal = 7,
+ HB_Arabic_Waw = 8,
+ HB_Arabic_BaRa = 9,
+ HB_Arabic_Alef = 10,
+ HB_Arabic_HaaDal = 11,
+ HB_Arabic_Seen = 12,
+ HB_Arabic_Kashida = 13
+} HB_JustificationClass;
+
+
+
+
+typedef struct {
+ unsigned justification :4;
+ unsigned clusterStart :1;
+ unsigned mark :1;
+ unsigned zeroWidth :1;
+ unsigned dontPrint :1;
+ unsigned combiningClass :8;
+} HB_GlyphAttributes;
+
+typedef struct HB_FaceRec_ {
+ HB_Bool isSymbolFont;
+
+ HB_GDEF gdef;
+ HB_GSUB gsub;
+ HB_GPOS gpos;
+ HB_Bool supported_scripts[HB_ScriptCount];
+ HB_Buffer buffer;
+ HB_Script current_script;
+ int current_flags;
+ HB_Bool has_opentype_kerning;
+ HB_Bool glyphs_substituted;
+ HB_GlyphAttributes *tmpAttributes;
+ unsigned int *tmpLogClusters;
+ int length;
+ int orig_nglyphs;
+} HB_FaceRec;
+
+typedef HB_Error (*HB_GetFontTableFunc)(void *font, HB_Tag tag, HB_Byte *buffer, HB_UInt *length);
+
+HB_Face HB_NewFace(void *font, HB_GetFontTableFunc tableFunc);
+void HB_FreeFace(HB_Face face);
+
+typedef struct {
+ HB_Fixed x, y;
+ HB_Fixed width, height;
+ HB_Fixed xOffset, yOffset;
+} HB_GlyphMetrics;
+
+typedef enum {
+ HB_FontAscent
+} HB_FontMetric;
+
+typedef struct {
+ HB_Bool (*convertStringToGlyphIndices)(HB_Font font, const HB_UChar16 *string, hb_uint32 length, HB_Glyph *glyphs, hb_uint32 *numGlyphs, HB_Bool rightToLeft);
+ void (*getGlyphAdvances)(HB_Font font, const HB_Glyph *glyphs, hb_uint32 numGlyphs, HB_Fixed *advances, int flags );
+ HB_Bool (*canRender)(HB_Font font, const HB_UChar16 *string, hb_uint32 length);
+
+ HB_Error (*getPointInOutline)(HB_Font font, HB_Glyph glyph, int flags , hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints);
+ void (*getGlyphMetrics)(HB_Font font, HB_Glyph glyph, HB_GlyphMetrics *metrics);
+ HB_Fixed (*getFontMetric)(HB_Font font, HB_FontMetric metric);
+} HB_FontClass;
+
+typedef struct HB_Font_ {
+ const HB_FontClass *klass;
+
+
+ HB_UShort x_ppem, y_ppem;
+ HB_16Dot16 x_scale, y_scale;
+
+ void *userData;
+} HB_FontRec;
+
+typedef struct {
+ const HB_UChar16 *string;
+ hb_uint32 stringLength;
+ HB_ScriptItem item;
+ HB_Font font;
+ HB_Face face;
+ int shaperFlags;
+
+ HB_Bool glyphIndicesPresent;
+ hb_uint32 initialGlyphCount;
+
+ hb_uint32 num_glyphs;
+ HB_Glyph *glyphs;
+ HB_GlyphAttributes *attributes;
+ HB_Fixed *advances;
+ HB_FixedPoint *offsets;
+ unsigned short *log_clusters;
+
+
+ HB_Bool kerning_applied;
+} HB_ShaperItem;
+
+HB_Bool HB_ShapeItem(HB_ShaperItem *item);
+
+}
+# 57 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qharfbuzz_p.h" 2
+# 1 "../../include/QtCore/qglobal.h" 1
+# 58 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/tools/qharfbuzz_p.h" 2
+
+
+
+
+__attribute__((visibility("default"))) void qGetCharAttributes(const HB_UChar16 *string, hb_uint32 stringLength,
+ const HB_ScriptItem *items, hb_uint32 numItems,
+ HB_CharAttributes *attributes);
+
+__attribute__((visibility("default"))) HB_Bool qShapeItem(HB_ShaperItem *item);
+
+
+__attribute__((visibility("default"))) HB_Face qHBNewFace(void *font, HB_GetFontTableFunc tableFunc);
+__attribute__((visibility("default"))) void qHBFreeFace(HB_Face);
+
+template <> class QTypeInfo<HB_GlyphAttributes> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(HB_GlyphAttributes)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "HB_GlyphAttributes"; } };
+template <> class QTypeInfo<HB_FixedPoint> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(HB_FixedPoint)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "HB_FixedPoint"; } };
+
+
+# 1 "../../include/QtCore/private/qharfbuzz_p.h" 2
+# 73 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+# 1 "../../include/QtGui/private/qfixed_p.h" 1
+# 74 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h" 2
+
+
+
+
+
+class QFontPrivate;
+class QFontEngine;
+
+class QString;
+class QPainter;
+
+class QAbstractTextDocumentLayout;
+
+
+
+
+
+
+
+struct glyph_metrics_t
+{
+ inline glyph_metrics_t()
+ : x(100000), y(100000) {}
+ inline glyph_metrics_t(QFixed _x, QFixed _y, QFixed _width, QFixed _height, QFixed _xoff, QFixed _yoff)
+ : x(_x),
+ y(_y),
+ width(_width),
+ height(_height),
+ xoff(_xoff),
+ yoff(_yoff)
+ {}
+ QFixed x;
+ QFixed y;
+ QFixed width;
+ QFixed height;
+ QFixed xoff;
+ QFixed yoff;
+
+ glyph_metrics_t transformed(const QTransform &xform) const;
+};
+template <> class QTypeInfo<glyph_metrics_t> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(glyph_metrics_t)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "glyph_metrics_t"; } };
+
+struct QScriptAnalysis
+{
+ enum Flags {
+ None = 0,
+ Lowercase = 1,
+ Uppercase = 2,
+ SmallCaps = 3,
+ LineOrParagraphSeparator = 4,
+ Space = 5,
+ SpaceTabOrObject = Space,
+ Tab = 6,
+ TabOrObject = Tab,
+ Object = 7
+ };
+ unsigned short script : 8;
+ unsigned short bidiLevel : 6;
+ unsigned short flags : 3;
+ inline bool operator == (const QScriptAnalysis &other) const {
+ return script == other.script && bidiLevel == other.bidiLevel && flags == other.flags;
+ }
+};
+template <> class QTypeInfo<QScriptAnalysis> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QScriptAnalysis)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QScriptAnalysis"; } };
+
+struct QGlyphJustification
+{
+ inline QGlyphJustification()
+ : type(0), nKashidas(0), space_18d6(0)
+ {}
+
+ enum JustificationType {
+ JustifyNone,
+ JustifySpace,
+ JustifyKashida
+ };
+
+ uint type :2;
+ uint nKashidas : 6;
+ uint space_18d6 : 24;
+};
+template <> class QTypeInfo<QGlyphJustification> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QGlyphJustification)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QGlyphJustification"; } };
+
+struct QGlyphLayoutInstance
+{
+ QFixedPoint offset;
+ QFixedPoint advance;
+ HB_Glyph glyph;
+ QGlyphJustification justification;
+ HB_GlyphAttributes attributes;
+};
+
+struct QGlyphLayout
+{
+
+ QFixedPoint *offsets;
+ HB_Glyph *glyphs;
+ QFixed *advances_x;
+ QFixed *advances_y;
+ QGlyphJustification *justifications;
+ HB_GlyphAttributes *attributes;
+
+ int numGlyphs;
+
+ inline QGlyphLayout() : numGlyphs(0) {}
+
+ inline explicit QGlyphLayout(char *address, int totalGlyphs)
+ {
+ offsets = reinterpret_cast<QFixedPoint *>(address);
+ int offset = totalGlyphs * sizeof(HB_FixedPoint);
+ glyphs = reinterpret_cast<HB_Glyph *>(address + offset);
+ offset += totalGlyphs * sizeof(HB_Glyph);
+ advances_x = reinterpret_cast<QFixed *>(address + offset);
+ offset += totalGlyphs * sizeof(QFixed);
+ advances_y = reinterpret_cast<QFixed *>(address + offset);
+ offset += totalGlyphs * sizeof(QFixed);
+ justifications = reinterpret_cast<QGlyphJustification *>(address + offset);
+ offset += totalGlyphs * sizeof(QGlyphJustification);
+ attributes = reinterpret_cast<HB_GlyphAttributes *>(address + offset);
+ numGlyphs = totalGlyphs;
+ }
+
+ inline QGlyphLayout mid(int position, int n = -1) const {
+ QGlyphLayout copy = *this;
+ copy.glyphs += position;
+ copy.advances_x += position;
+ copy.advances_y += position;
+ copy.offsets += position;
+ copy.justifications += position;
+ copy.attributes += position;
+ if (n == -1)
+ copy.numGlyphs -= position;
+ else
+ copy.numGlyphs = n;
+ return copy;
+ }
+
+ static inline int spaceNeededForGlyphLayout(int totalGlyphs) {
+ return totalGlyphs * (sizeof(HB_Glyph) + sizeof(HB_GlyphAttributes)
+ + sizeof(QFixed) + sizeof(QFixed) + sizeof(QFixedPoint)
+ + sizeof(QGlyphJustification));
+ }
+
+ inline QFixed effectiveAdvance(int item) const
+ { return (advances_x[item] + QFixed::fromFixed(justifications[item].space_18d6)) * !attributes[item].dontPrint; }
+
+ inline QGlyphLayoutInstance instance(int position) const {
+ QGlyphLayoutInstance g;
+ g.offset.x = offsets[position].x;
+ g.offset.y = offsets[position].y;
+ g.glyph = glyphs[position];
+ g.advance.x = advances_x[position];
+ g.advance.y = advances_y[position];
+ g.justification = justifications[position];
+ g.attributes = attributes[position];
+ return g;
+ }
+
+ inline void setInstance(int position, const QGlyphLayoutInstance &g) {
+ offsets[position].x = g.offset.x;
+ offsets[position].y = g.offset.y;
+ glyphs[position] = g.glyph;
+ advances_x[position] = g.advance.x;
+ advances_y[position] = g.advance.y;
+ justifications[position] = g.justification;
+ attributes[position] = g.attributes;
+ }
+
+ inline void clear(int first = 0, int last = -1) {
+ if (last == -1)
+ last = numGlyphs;
+ if (first == 0 && last == numGlyphs
+ && reinterpret_cast<char *>(offsets + numGlyphs) == reinterpret_cast<char *>(glyphs)) {
+ memset(offsets, 0, spaceNeededForGlyphLayout(numGlyphs));
+ } else {
+ const int num = last - first;
+ memset(offsets + first, 0, num * sizeof(QFixedPoint));
+ memset(glyphs + first, 0, num * sizeof(HB_Glyph));
+ memset(advances_x + first, 0, num * sizeof(QFixed));
+ memset(advances_y + first, 0, num * sizeof(QFixed));
+ memset(justifications + first, 0, num * sizeof(QGlyphJustification));
+ memset(attributes + first, 0, num * sizeof(HB_GlyphAttributes));
+ }
+ }
+
+ inline char *data() {
+ return reinterpret_cast<char *>(offsets);
+ }
+
+ void grow(char *address, int totalGlyphs);
+};
+
+class QVarLengthGlyphLayoutArray : private QVarLengthArray<void *>, public QGlyphLayout
+{
+private:
+ typedef QVarLengthArray<void *> Array;
+public:
+ QVarLengthGlyphLayoutArray(int totalGlyphs)
+ : Array(spaceNeededForGlyphLayout(totalGlyphs) / sizeof(void *) + 1)
+ , QGlyphLayout(reinterpret_cast<char *>(Array::data()), totalGlyphs)
+ {
+ memset(Array::data(), 0, Array::size() * sizeof(void *));
+ }
+
+ void resize(int totalGlyphs)
+ {
+ Array::resize(spaceNeededForGlyphLayout(totalGlyphs) / sizeof(void *) + 1);
+
+ *((QGlyphLayout *)this) = QGlyphLayout(reinterpret_cast<char *>(Array::data()), totalGlyphs);
+ memset(Array::data(), 0, Array::size() * sizeof(void *));
+ }
+};
+
+template <int N> struct QGlyphLayoutArray : public QGlyphLayout
+{
+public:
+ QGlyphLayoutArray()
+ : QGlyphLayout(reinterpret_cast<char *>(buffer), N)
+ {
+ memset(buffer, 0, sizeof(buffer));
+ }
+
+private:
+ void *buffer[(N * (sizeof(HB_Glyph) + sizeof(HB_GlyphAttributes)
+ + sizeof(QFixed) + sizeof(QFixed) + sizeof(QFixedPoint)
+ + sizeof(QGlyphJustification)))
+ / sizeof(void *) + 1];
+};
+
+struct QScriptItem;
+
+class QTextItemInt : public QTextItem
+{
+public:
+ inline QTextItemInt()
+ : justified(false), underlineStyle(QTextCharFormat::NoUnderline), num_chars(0), chars(0),
+ logClusters(0), f(0), fontEngine(0)
+ {}
+ QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFormat &format = QTextCharFormat());
+
+
+
+ QTextItemInt midItem(QFontEngine *fontEngine, int firstGlyphIndex, int numGlyphs) const;
+
+ QFixed descent;
+ QFixed ascent;
+ QFixed width;
+
+ RenderFlags flags;
+ bool justified;
+ QTextCharFormat::UnderlineStyle underlineStyle;
+ const QTextCharFormat charFormat;
+ int num_chars;
+ const QChar *chars;
+ const unsigned short *logClusters;
+ const QFont *f;
+
+ QGlyphLayout glyphs;
+ QFontEngine *fontEngine;
+};
+
+inline bool qIsControlChar(ushort uc)
+{
+ return uc >= 0x200b && uc <= 0x206f
+ && (uc <= 0x200f
+ || (uc >= 0x2028 && uc <= 0x202f )
+ || uc >= 0x206a );
+}
+
+struct QScriptItem
+{
+ inline QScriptItem()
+ : position(0),
+ num_glyphs(0), descent(-1), ascent(-1), width(-1),
+ glyph_data_offset(0) {}
+ inline QScriptItem(int p, const QScriptAnalysis &a)
+ : position(p), analysis(a),
+ num_glyphs(0), descent(-1), ascent(-1), width(-1),
+ glyph_data_offset(0) {}
+
+ int position;
+ QScriptAnalysis analysis;
+ unsigned short num_glyphs;
+ QFixed descent;
+ QFixed ascent;
+ QFixed width;
+ int glyph_data_offset;
+ QFixed height() const { return ascent + descent + 1; }
+};
+
+
+template <> class QTypeInfo<QScriptItem> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QScriptItem)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QScriptItem"; } };
+
+typedef QVector<QScriptItem> QScriptItemArray;
+
+struct QScriptLine
+{
+
+ QScriptLine()
+ : from(0), length(0),
+ justified(0), gridfitted(0),
+ hasTrailingSpaces(0) {}
+ QFixed descent;
+ QFixed ascent;
+ QFixed x;
+ QFixed y;
+ QFixed width;
+ QFixed textWidth;
+ int from;
+ signed int length : 29;
+ mutable uint justified : 1;
+ mutable uint gridfitted : 1;
+ uint hasTrailingSpaces : 1;
+ QFixed height() const { return ascent + descent + 1; }
+ void setDefaultHeight(QTextEngine *eng);
+ void operator+=(const QScriptLine &other);
+};
+template <> class QTypeInfo<QScriptLine> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QScriptLine)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QScriptLine"; } };
+
+
+inline void QScriptLine::operator+=(const QScriptLine &other)
+{
+ descent = qMax(descent, other.descent);
+ ascent = qMax(ascent, other.ascent);
+ textWidth += other.textWidth;
+ length += other.length;
+}
+
+typedef QVector<QScriptLine> QScriptLineArray;
+
+class QFontPrivate;
+class QTextFormatCollection;
+
+class __attribute__((visibility("default"))) QTextEngine {
+public:
+ struct LayoutData {
+ LayoutData(const QString &str, void **stack_memory, int mem_size);
+ LayoutData();
+ ~LayoutData();
+ mutable QScriptItemArray items;
+ int allocated;
+ int available_glyphs;
+ void **memory;
+ unsigned short *logClustersPtr;
+ QGlyphLayout glyphLayout;
+ mutable int used;
+ uint hasBidi : 1;
+ uint inLayout : 1;
+ uint memory_on_stack : 1;
+ bool haveCharAttributes;
+ QString string;
+ void reallocate(int totalGlyphs);
+ };
+
+ QTextEngine(LayoutData *data);
+ QTextEngine();
+ QTextEngine(const QString &str, const QFont &f);
+ ~QTextEngine();
+
+ enum Mode {
+ WidthOnly = 0x07
+ };
+
+
+ enum ShaperFlag {
+ RightToLeft = 0x0001,
+ DesignMetrics = 0x0002,
+ GlyphIndicesOnly = 0x0004
+ };
+ typedef QFlags<ShaperFlag> ShaperFlags;
+
+ void invalidate();
+ void clearLineData();
+
+ void validate() const;
+ void itemize() const;
+
+ static void bidiReorder(int numRuns, const quint8 *levels, int *visualOrder);
+
+ const HB_CharAttributes *attributes() const;
+
+ void shape(int item) const;
+
+ void justify(const QScriptLine &si);
+
+ QFixed width(int charFrom, int numChars) const;
+ glyph_metrics_t boundingBox(int from, int len) const;
+ glyph_metrics_t tightBoundingBox(int from, int len) const;
+
+ int length(int item) const {
+ const QScriptItem &si = layoutData->items[item];
+ int from = si.position;
+ item++;
+ return (item < layoutData->items.size() ? layoutData->items[item].position : layoutData->string.length()) - from;
+ }
+ int length(const QScriptItem *si) const {
+ int end;
+ if (si + 1 < layoutData->items.constData()+ layoutData->items.size())
+ end = (si+1)->position;
+ else
+ end = layoutData->string.length();
+ return end - si->position;
+ }
+
+ QFontEngine *fontEngine(const QScriptItem &si, QFixed *ascent = 0, QFixed *descent = 0) const;
+ QFont font(const QScriptItem &si) const;
+ inline QFont font() const { return fnt; }
+# 490 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qtextengine_p.h"
+ inline unsigned short *logClusters(const QScriptItem *si) const
+ { return layoutData->logClustersPtr+si->position; }
+
+
+
+
+
+
+
+ inline QGlyphLayout availableGlyphs(const QScriptItem *si) const {
+ return layoutData->glyphLayout.mid(si->glyph_data_offset);
+ }
+
+
+
+
+
+
+ inline QGlyphLayout shapedGlyphs(const QScriptItem *si) const {
+ return layoutData->glyphLayout.mid(si->glyph_data_offset, si->num_glyphs);
+ }
+
+ inline void ensureSpace(int nGlyphs) const {
+ if (layoutData->glyphLayout.numGlyphs - layoutData->used < nGlyphs)
+ layoutData->reallocate((((layoutData->used + nGlyphs)*3/2 + 15) >> 4) << 4);
+ }
+
+ void freeMemory();
+
+ int findItem(int strPos) const;
+ inline QTextFormatCollection *formats() const {
+
+
+
+ return block.docHandle()->formatCollection();
+
+ }
+ QTextCharFormat format(const QScriptItem *si) const;
+ inline QAbstractTextDocumentLayout *docLayout() const {
+
+
+
+ return block.docHandle()->document()->documentLayout();
+
+ }
+ int formatIndex(const QScriptItem *si) const;
+
+
+ QFixed calculateTabWidth(int index, QFixed x) const;
+
+ mutable QScriptLineArray lines;
+
+ QString text;
+ QFont fnt;
+ QTextBlock block;
+
+ QTextOption option;
+
+ QFixed minWidth;
+ QFixed maxWidth;
+ QPointF position;
+ uint ignoreBidi : 1;
+ uint cacheGlyphs : 1;
+ uint stackEngine : 1;
+ uint forceJustification : 1;
+
+ int *underlinePositions;
+
+ mutable LayoutData *layoutData;
+
+ inline bool hasFormats() const { return (block.docHandle() || specialData); }
+
+ struct SpecialData {
+ int preeditPosition;
+ QString preeditText;
+ QList<QTextLayout::FormatRange> addFormats;
+ QVector<int> addFormatIndices;
+ QVector<int> resolvedFormatIndices;
+ };
+ SpecialData *specialData;
+
+ bool atWordSeparator(int position) const;
+ bool atSpace(int position) const;
+ void indexAdditionalFormats();
+
+ QString elidedText(Qt::TextElideMode mode, const QFixed &width, int flags = 0) const;
+
+ void shapeLine(const QScriptLine &line);
+
+private:
+ void setBoundary(int strPos) const;
+ void addRequiredBoundaries() const;
+ void shapeText(int item) const;
+ void shapeTextWithHarfbuzz(int item) const;
+
+
+
+
+
+
+ void splitItem(int item, int pos) const;
+
+ void resolveAdditionalFormats() const;
+};
+
+class QStackTextEngine : public QTextEngine {
+public:
+ enum { MemSize = 256*40/sizeof(void *) };
+ QStackTextEngine(const QString &string, const QFont &f);
+ LayoutData _layoutData;
+ void *_memory[MemSize];
+};
+
+
+inline QFlags<QTextEngine::ShaperFlags::enum_type> operator|(QTextEngine::ShaperFlags::enum_type f1, QTextEngine::ShaperFlags::enum_type f2) { return QFlags<QTextEngine::ShaperFlags::enum_type>(f1) | f2; } inline QFlags<QTextEngine::ShaperFlags::enum_type> operator|(QTextEngine::ShaperFlags::enum_type f1, QFlags<QTextEngine::ShaperFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QTextEngine::ShaperFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+
+
+# 1 "../../include/QtGui/private/qtextengine_p.h" 2
+# 60 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine_p.h" 2
+# 1 "../../include/QtGui/private/qfont_p.h" 1
+# 61 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine_p.h" 2
+# 73 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine_p.h"
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengineglyphcache_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengineglyphcache_p.h"
+#define QFONTENGINEGLYPHCACHE_P_H
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengineglyphcache_p.h"
+# 1 "../../include/QtCore/qglobal.h" 1
+# 58 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengineglyphcache_p.h" 2
+# 1 "../../include/QtCore/qatomic.h" 1
+# 59 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengineglyphcache_p.h" 2
+# 1 "../../include/QtCore/qvarlengtharray.h" 1
+# 60 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengineglyphcache_p.h" 2
+# 1 "../../include/QtGui/private/qfont_p.h" 1
+# 61 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengineglyphcache_p.h" 2
+# 73 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengineglyphcache_p.h"
+
+
+class __attribute__((visibility("default"))) QFontEngineGlyphCache
+{
+public:
+ QFontEngineGlyphCache(const QTransform &matrix) : m_transform(matrix) { }
+
+ enum Type {
+ Raster_RGBMask,
+ Raster_A8,
+ Raster_Mono
+ };
+
+ virtual ~QFontEngineGlyphCache();
+
+ QTransform m_transform;
+};
+typedef QHash<void *, QList<QFontEngineGlyphCache *> > GlyphPointerHash;
+typedef QHash<int, QList<QFontEngineGlyphCache *> > GlyphIntHash;
+
+
+# 74 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine_p.h" 2
+
+struct glyph_metrics_t;
+typedef unsigned int glyph_t;
+
+
+
+class QChar;
+class QPainterPath;
+
+class QTextEngine;
+struct QGlyphLayout;
+
+#define MAKE_TAG(ch1,ch2,ch3,ch4) ( (((quint32)(ch1)) << 24) | (((quint32)(ch2)) << 16) | (((quint32)(ch3)) << 8) | ((quint32)(ch4)) )
+
+
+
+
+
+
+
+class __attribute__((visibility("default"))) QFontEngine : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+public:
+ enum Type {
+ Box,
+ Multi,
+
+
+ XLFD,
+
+
+ Win,
+
+
+ Mac,
+
+
+ Freetype,
+ QPF1,
+ QPF2,
+ Proxy,
+ TestFontEngine = 0x1000
+ };
+
+ QFontEngine();
+ virtual ~QFontEngine();
+
+
+
+ struct Properties {
+ QByteArray postscriptName;
+ QByteArray copyright;
+ QRectF boundingBox;
+ QFixed emSquare;
+ QFixed ascent;
+ QFixed descent;
+ QFixed leading;
+ QFixed italicAngle;
+ QFixed capHeight;
+ QFixed lineWidth;
+ };
+ virtual Properties properties() const;
+ virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics);
+ QByteArray getSfntTable(uint ) const;
+ virtual bool getSfntTableData(uint , uchar * , uint * ) const { return false; }
+
+ struct FaceId {
+ FaceId() : index(0), encoding(0) {}
+ QByteArray filename;
+ int index;
+ int encoding;
+ };
+ virtual FaceId faceId() const { return FaceId(); }
+ enum SynthesizedFlags {
+ SynthesizedItalic = 0x1,
+ SynthesizedBold = 0x2,
+ SynthesizedStretch = 0x4
+ };
+ virtual int synthesized() const { return 0; }
+
+ virtual QFixed emSquareSize() const { return ascent(); }
+
+
+ virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const = 0;
+
+
+
+
+
+ virtual void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const {}
+ virtual void doKerning(QGlyphLayout *, QTextEngine::ShaperFlags) const;
+
+
+ virtual void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si) = 0;
+
+ virtual void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs,
+ QPainterPath *path, QTextItem::RenderFlags flags);
+ void getGlyphPositions(const QGlyphLayout &glyphs, const QTransform &matrix, QTextItem::RenderFlags flags,
+ QVarLengthArray<glyph_t> &glyphs_out, QVarLengthArray<QFixedPoint> &positions);
+
+ virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags);
+ void addBitmapFontToPath(qreal x, qreal y, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags);
+
+
+
+
+ virtual QImage alphaMapForGlyph(glyph_t) = 0;
+ virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
+ virtual QImage alphaRGBMapForGlyph(glyph_t, int margin, const QTransform &t);
+
+ virtual void removeGlyphFromCache(glyph_t);
+
+ virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) = 0;
+ virtual glyph_metrics_t boundingBox(glyph_t glyph) = 0;
+ virtual glyph_metrics_t boundingBox(glyph_t glyph, const QTransform &matrix);
+ glyph_metrics_t tightBoundingBox(const QGlyphLayout &glyphs);
+
+ virtual QFixed ascent() const = 0;
+ virtual QFixed descent() const = 0;
+ virtual QFixed leading() const = 0;
+ virtual QFixed xHeight() const;
+ virtual QFixed averageCharWidth() const;
+
+ virtual QFixed lineThickness() const;
+ virtual QFixed underlinePosition() const;
+
+ virtual qreal maxCharWidth() const = 0;
+ virtual qreal minLeftBearing() const { return qreal(); }
+ virtual qreal minRightBearing() const { return qreal(); }
+
+ virtual const char *name() const = 0;
+
+ virtual bool canRender(const QChar *string, int len) = 0;
+
+ virtual Type type() const = 0;
+
+ virtual int glyphCount() const;
+
+ HB_Font harfbuzzFont() const;
+ HB_Face harfbuzzFace() const;
+
+ virtual HB_Error getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints);
+
+ void setGlyphCache(void *key, QFontEngineGlyphCache *data);
+ void setGlyphCache(QFontEngineGlyphCache::Type key, QFontEngineGlyphCache *data);
+ QFontEngineGlyphCache *glyphCache(void *key, const QTransform &transform) const;
+ QFontEngineGlyphCache *glyphCache(QFontEngineGlyphCache::Type key, const QTransform &transform) const;
+
+ static const uchar *getCMap(const uchar *table, uint tableSize, bool *isSymbolFont, int *cmapSize);
+ static quint32 getTrueTypeGlyphIndex(const uchar *cmap, uint unicode);
+
+ QAtomicInt ref;
+ QFontDef fontDef;
+ uint cache_cost;
+ int cache_count;
+ uint fsType : 16;
+ bool symbol;
+ mutable HB_FontRec hbFont;
+ mutable HB_Face hbFace;
+
+ struct KernPair {
+ uint left_right;
+ QFixed adjust;
+
+ inline bool operator<(const KernPair &other) const
+ {
+ return left_right < other.left_right;
+ }
+ };
+ QVector<KernPair> kerning_pairs;
+ void loadKerningPairs(QFixed scalingFactor);
+
+
+ int glyphFormat;
+
+private:
+
+ void expireGlyphCache();
+
+ GlyphPointerHash m_glyphPointerHash;
+ GlyphIntHash m_glyphIntHash;
+ mutable QList<QFontEngineGlyphCache*> m_glyphCacheQueue;
+};
+
+inline bool operator ==(const QFontEngine::FaceId &f1, const QFontEngine::FaceId &f2)
+{
+ return (f1.index == f2.index) && (f1.encoding == f2.encoding) && (f1.filename == f2.filename);
+}
+
+inline uint qHash(const QFontEngine::FaceId &f)
+{
+ return qHash((f.index << 16) + f.encoding) + qHash(f.filename);
+}
+
+
+class QGlyph;
+
+
+
+
+
+class QFontEngineQPF1Data;
+
+class QFontEngineQPF1 : public QFontEngine
+{
+public:
+ QFontEngineQPF1(const QFontDef&, const QString &fn);
+ ~QFontEngineQPF1();
+
+ virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const;
+ virtual void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const;
+
+ virtual void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si);
+ virtual void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags);
+
+ virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs);
+ virtual glyph_metrics_t boundingBox(glyph_t glyph);
+
+ virtual QFixed ascent() const;
+ virtual QFixed descent() const;
+ virtual QFixed leading() const;
+ virtual qreal maxCharWidth() const;
+ virtual qreal minLeftBearing() const;
+ virtual qreal minRightBearing() const;
+ virtual QFixed underlinePosition() const;
+ virtual QFixed lineThickness() const;
+
+ virtual Type type() const;
+
+ virtual bool canRender(const QChar *string, int len);
+ inline const char *name() const { return 0; }
+ virtual QImage alphaMapForGlyph(glyph_t);
+
+
+ QFontEngineQPF1Data *d;
+};
+
+
+
+
+
+class QFontEngineBox : public QFontEngine
+{
+public:
+ QFontEngineBox(int size);
+ ~QFontEngineBox();
+
+ virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const;
+ virtual void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const;
+
+
+ void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si);
+
+ virtual void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags);
+
+ virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs);
+ virtual glyph_metrics_t boundingBox(glyph_t glyph);
+
+ virtual QFixed ascent() const;
+ virtual QFixed descent() const;
+ virtual QFixed leading() const;
+ virtual qreal maxCharWidth() const;
+ virtual qreal minLeftBearing() const { return 0; }
+ virtual qreal minRightBearing() const { return 0; }
+ virtual QImage alphaMapForGlyph(glyph_t);
+
+
+
+
+ virtual const char *name() const;
+
+ virtual bool canRender(const QChar *string, int len);
+
+ virtual Type type() const;
+ inline int size() const { return _size; }
+
+private:
+ friend class QFontPrivate;
+ int _size;
+};
+
+class __attribute__((visibility("default"))) QFontEngineMulti : public QFontEngine
+{
+public:
+ explicit QFontEngineMulti(int engineCount);
+ ~QFontEngineMulti();
+
+ virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs,
+ QTextEngine::ShaperFlags flags) const;
+
+ virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs);
+ virtual glyph_metrics_t boundingBox(glyph_t glyph);
+
+ virtual void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const;
+ virtual void doKerning(QGlyphLayout *, QTextEngine::ShaperFlags) const;
+ virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags);
+
+ virtual QFixed ascent() const;
+ virtual QFixed descent() const;
+ virtual QFixed leading() const;
+ virtual QFixed xHeight() const;
+ virtual QFixed averageCharWidth() const;
+ virtual QImage alphaMapForGlyph(glyph_t);
+
+ virtual QFixed lineThickness() const;
+ virtual QFixed underlinePosition() const;
+ virtual qreal maxCharWidth() const;
+ virtual qreal minLeftBearing() const;
+ virtual qreal minRightBearing() const;
+
+ virtual inline Type type() const
+ { return QFontEngine::Multi; }
+
+ virtual bool canRender(const QChar *string, int len);
+ inline virtual const char *name() const
+ { return "Multi"; }
+
+ QFontEngine *engine(int at) const;
+
+protected:
+ friend class QPSPrintEnginePrivate;
+ friend class QPSPrintEngineFontMulti;
+ virtual void loadEngine(int at) = 0;
+ QVector<QFontEngine *> engines;
+};
+# 604 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine_p.h"
+class QTestFontEngine : public QFontEngineBox
+{
+public:
+ QTestFontEngine(int size) : QFontEngineBox(size) {}
+ virtual Type type() const { return TestFontEngine; }
+};
+
+
+# 1 "../../include/QtGui/private/qfontengine_p.h" 2
+# 44 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp" 2
+
+# 1 "../../include/QtGui/qbitmap.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qbitmap.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qbitmap.h"
+#define QBITMAP_H
+
+# 1 "../../include/QtGui/qpixmap.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qbitmap.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+class QVariant;
+
+class __attribute__((visibility("default"))) QBitmap : public QPixmap
+{
+public:
+ QBitmap();
+ QBitmap(const QPixmap &);
+ QBitmap(int w, int h);
+ explicit QBitmap(const QSize &);
+ explicit QBitmap(const QString &fileName, const char *format=0);
+ ~QBitmap();
+
+ QBitmap &operator=(const QPixmap &);
+ operator QVariant() const;
+
+ inline void clear() { fill(Qt::color0); }
+
+ static QBitmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor);
+ static QBitmap fromData(const QSize &size, const uchar *bits,
+ QImage::Format monoFormat = QImage::Format_MonoLSB);
+
+ QBitmap transformed(const QMatrix &) const;
+ QBitmap transformed(const QTransform &matrix) const;
+# 85 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qbitmap.h"
+};
+template <> inline bool qIsDetached<QBitmap>(QBitmap &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QBitmap>(QBitmap &value1, QBitmap &value2) { const QBitmap::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+# 102 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/image/qbitmap.h"
+
+
+
+# 1 "../../include/QtGui/qbitmap.h" 2
+# 46 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp" 2
+# 1 "../../include/QtGui/qpainter.h" 1
+# 47 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp" 2
+# 1 "../../include/QtGui/qpainterpath.h" 1
+# 48 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp" 2
+# 1 "../../include/QtCore/qvarlengtharray.h" 1
+# 49 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp" 2
+# 1 "../../include/QtGui/private/qpdf_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h"
+#define QPDF_P_H
+# 55 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h"
+# 1 "../../include/QtGui/qmatrix.h" 1
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h" 2
+# 1 "../../include/QtCore/qvector.h" 1
+# 58 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h" 2
+# 1 "../../include/QtGui/private/qstroker_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qstroker_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qstroker_p.h"
+#define QSTROKER_P_H
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qstroker_p.h"
+# 1 "../../include/QtGui/qpainterpath.h" 1
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qstroker_p.h" 2
+# 1 "../../include/QtGui/private/qdatabuffer_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qdatabuffer_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qdatabuffer_p.h"
+#define QDATABUFFER_P_H
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qdatabuffer_p.h"
+# 1 "../../include/QtCore/qbytearray.h" 1
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qdatabuffer_p.h" 2
+
+
+
+template <typename Type> class QDataBuffer
+{
+public:
+ QDataBuffer(int res = 64)
+ {
+ capacity = res;
+ buffer = (Type*) qMalloc(capacity * sizeof(Type));
+ siz = 0;
+ }
+
+ ~QDataBuffer()
+ {
+ qFree(buffer);
+ }
+
+ inline void reset() { siz = 0; }
+
+ inline bool isEmpty() const { return siz==0; }
+
+ inline int size() const { return siz; }
+ inline Type *data() const { return buffer; }
+
+ inline Type &at(int i) { qt_noop(); return buffer[i]; }
+ inline const Type &at(int i) const { qt_noop(); return buffer[i]; }
+ inline const Type &last() const { qt_noop(); return buffer[siz-1]; }
+ inline const Type &first() const { qt_noop(); return buffer[0]; }
+
+ inline void add(const Type &t) {
+ reserve(siz + 1);
+ buffer[siz] = t;
+ ++siz;
+ }
+
+ inline void resize(int size) {
+ reserve(size);
+ siz = size;
+ }
+
+ inline void reserve(int size) {
+ if (size > capacity) {
+ while (capacity < size)
+ capacity *= 2;
+ buffer = (Type*) qRealloc(buffer, capacity * sizeof(Type));
+ }
+ }
+
+ inline void shrink(int size) {
+ capacity = size;
+ buffer = (Type*) qRealloc(buffer, capacity * sizeof(Type));
+ }
+
+ inline void swap(QDataBuffer<Type> &other) {
+ qSwap(capacity, other.capacity);
+ qSwap(siz, other.siz);
+ qSwap(buffer, other.buffer);
+ }
+
+ inline QDataBuffer &operator<<(const Type &t) { add(t); return *this; }
+
+private:
+ int capacity;
+ int siz;
+ Type *buffer;
+};
+
+
+# 1 "../../include/QtGui/private/qdatabuffer_p.h" 2
+# 58 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qstroker_p.h" 2
+# 1 "../../include/QtCore/private/qnumeric_p.h" 1
+# 1 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnumeric_p.h" 1
+# 43 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnumeric_p.h"
+#define QNUMERIC_P_H
+# 56 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnumeric_p.h"
+# 1 "../../include/QtCore/qglobal.h" 1
+# 57 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnumeric_p.h" 2
+
+
+
+
+
+static const union { unsigned char c[8]; double d; } qt_be_inf_bytes = { { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 } };
+static const union { unsigned char c[8]; double d; } qt_le_inf_bytes = { { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f } };
+static const union { unsigned char c[8]; double d; } qt_armfpa_inf_bytes = { { 0, 0, 0xf0, 0x7f, 0, 0, 0, 0 } };
+static inline double qt_inf()
+{
+
+
+
+ return (QSysInfo::ByteOrder == QSysInfo::BigEndian
+ ? qt_be_inf_bytes.d
+ : qt_le_inf_bytes.d);
+
+}
+
+
+static const union { unsigned char c[8]; double d; } qt_be_snan_bytes = { { 0x7f, 0xf8, 0, 0, 0, 0, 0, 0 } };
+static const union { unsigned char c[8]; double d; } qt_le_snan_bytes = { { 0, 0, 0, 0, 0, 0, 0xf8, 0x7f } };
+static const union { unsigned char c[8]; double d; } qt_armfpa_snan_bytes = { { 0, 0, 0xf8, 0x7f, 0, 0, 0, 0 } };
+static inline double qt_snan()
+{
+
+
+
+ return (QSysInfo::ByteOrder == QSysInfo::BigEndian
+ ? qt_be_snan_bytes.d
+ : qt_le_snan_bytes.d);
+
+}
+
+
+static const union { unsigned char c[8]; double d; } qt_be_qnan_bytes = { { 0xff, 0xf8, 0, 0, 0, 0, 0, 0 } };
+static const union { unsigned char c[8]; double d; } qt_le_qnan_bytes = { { 0, 0, 0, 0, 0, 0, 0xf8, 0xff } };
+static const union { unsigned char c[8]; double d; } qt_armfpa_qnan_bytes = { { 0, 0, 0xf8, 0xff, 0, 0, 0, 0 } };
+static inline double qt_qnan()
+{
+
+
+
+ return (QSysInfo::ByteOrder == QSysInfo::BigEndian
+ ? qt_be_qnan_bytes.d
+ : qt_le_qnan_bytes.d);
+
+}
+# 169 "../../include/QtCore/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qnumeric_p.h"
+static inline bool qt_is_inf(double d)
+{
+ uchar *ch = (uchar *)&d;
+
+
+
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ return (ch[0] & 0x7f) == 0x7f && ch[1] == 0xf0;
+ } else {
+ return (ch[7] & 0x7f) == 0x7f && ch[6] == 0xf0;
+ }
+
+}
+
+static inline bool qt_is_nan(double d)
+{
+ uchar *ch = (uchar *)&d;
+
+
+
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ return (ch[0] & 0x7f) == 0x7f && ch[1] > 0xf0;
+ } else {
+ return (ch[7] & 0x7f) == 0x7f && ch[6] > 0xf0;
+ }
+
+}
+
+static inline bool qt_is_finite(double d)
+{
+ uchar *ch = (uchar *)&d;
+
+
+
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ return (ch[0] & 0x7f) != 0x7f || (ch[1] & 0xf0) != 0xf0;
+ } else {
+ return (ch[7] & 0x7f) != 0x7f || (ch[6] & 0xf0) != 0xf0;
+ }
+
+}
+
+static inline bool qt_is_inf(float d)
+{
+ uchar *ch = (uchar *)&d;
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ return (ch[0] & 0x7f) == 0x7f && ch[1] == 0x80;
+ } else {
+ return (ch[3] & 0x7f) == 0x7f && ch[2] == 0x80;
+ }
+}
+
+static inline bool qt_is_nan(float d)
+{
+ uchar *ch = (uchar *)&d;
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ return (ch[0] & 0x7f) == 0x7f && ch[1] > 0x80;
+ } else {
+ return (ch[3] & 0x7f) == 0x7f && ch[2] > 0x80;
+ }
+}
+
+static inline bool qt_is_finite(float d)
+{
+ uchar *ch = (uchar *)&d;
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ return (ch[0] & 0x7f) != 0x7f || (ch[1] & 0x80) != 0x80;
+ } else {
+ return (ch[3] & 0x7f) != 0x7f || (ch[2] & 0x80) != 0x80;
+ }
+}
+
+
+# 1 "../../include/QtCore/private/qnumeric_p.h" 2
+# 59 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qstroker_p.h" 2
+
+
+# 100 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qstroker_p.h"
+typedef qreal qfixed;
+#define qt_real_to_fixed(real) qfixed(real)
+#define qt_fixed_to_real(fixed) fixed
+struct qfixed2d
+{
+ qfixed x;
+ qfixed y;
+
+ bool operator==(const qfixed2d &other) const { return qFuzzyCompare(x, other.x)
+ && qFuzzyCompare(y, other.y); }
+};
+
+
+#define QT_PATH_KAPPA 0.5522847498
+
+QPointF qt_curves_for_arc(const QRectF &rect, qreal startAngle, qreal sweepLength,
+ QPointF *controlPoints, int *point_count);
+
+qreal qt_t_for_arc_angle(qreal angle);
+
+typedef void (*qStrokerMoveToHook)(qfixed x, qfixed y, void *data);
+typedef void (*qStrokerLineToHook)(qfixed x, qfixed y, void *data);
+typedef void (*qStrokerCubicToHook)(qfixed c1x, qfixed c1y,
+ qfixed c2x, qfixed c2y,
+ qfixed ex, qfixed ey,
+ void *data);
+
+class __attribute__((visibility("default"))) QStrokerOps
+{
+public:
+ struct Element {
+ QPainterPath::ElementType type;
+ qfixed x;
+ qfixed y;
+
+ inline bool isMoveTo() const { return type == QPainterPath::MoveToElement; }
+ inline bool isLineTo() const { return type == QPainterPath::LineToElement; }
+ inline bool isCurveTo() const { return type == QPainterPath::CurveToElement; }
+
+ operator qfixed2d () { qfixed2d pt = { x, y }; return pt; }
+ };
+
+ QStrokerOps();
+ virtual ~QStrokerOps();
+
+ void setMoveToHook(qStrokerMoveToHook moveToHook) { m_moveTo = moveToHook; }
+ void setLineToHook(qStrokerLineToHook lineToHook) { m_lineTo = lineToHook; }
+ void setCubicToHook(qStrokerCubicToHook cubicToHook) { m_cubicTo = cubicToHook; }
+
+ virtual void begin(void *customData);
+ virtual void end();
+
+ inline void moveTo(qfixed x, qfixed y);
+ inline void lineTo(qfixed x, qfixed y);
+ inline void cubicTo(qfixed x1, qfixed y1, qfixed x2, qfixed y2, qfixed ex, qfixed ey);
+
+ void strokePath(const QPainterPath &path, void *data, const QTransform &matrix);
+ void strokePolygon(const QPointF *points, int pointCount, bool implicit_close,
+ void *data, const QTransform &matrix);
+ void strokeEllipse(const QRectF &ellipse, void *data, const QTransform &matrix);
+
+ QRectF clipRect() const { return m_clip_rect; }
+ void setClipRect(const QRectF &clip) { m_clip_rect = clip; }
+
+protected:
+ inline void emitMoveTo(qfixed x, qfixed y);
+ inline void emitLineTo(qfixed x, qfixed y);
+ inline void emitCubicTo(qfixed c1x, qfixed c1y, qfixed c2x, qfixed c2y, qfixed ex, qfixed ey);
+
+ virtual void processCurrentSubpath() = 0;
+ QDataBuffer<Element> m_elements;
+
+ QRectF m_clip_rect;
+
+private:
+ void *m_customData;
+ qStrokerMoveToHook m_moveTo;
+ qStrokerLineToHook m_lineTo;
+ qStrokerCubicToHook m_cubicTo;
+
+};
+
+class __attribute__((visibility("default"))) QStroker : public QStrokerOps
+{
+public:
+
+ enum LineJoinMode {
+ FlatJoin,
+ SquareJoin,
+ MiterJoin,
+ RoundJoin,
+ RoundCap,
+ SvgMiterJoin
+ };
+
+ QStroker();
+ ~QStroker();
+
+ void setStrokeWidth(qfixed width) { m_strokeWidth = width; }
+ qfixed strokeWidth() const { return m_strokeWidth; }
+
+ void setCapStyle(Qt::PenCapStyle capStyle) { m_capStyle = joinModeForCap(capStyle); }
+ Qt::PenCapStyle capStyle() const { return capForJoinMode(m_capStyle); }
+ LineJoinMode capStyleMode() const { return m_capStyle; }
+
+ void setJoinStyle(Qt::PenJoinStyle style) { m_joinStyle = joinModeForJoin(style); }
+ Qt::PenJoinStyle joinStyle() const { return joinForJoinMode(m_joinStyle); }
+ LineJoinMode joinStyleMode() const { return m_joinStyle; }
+
+ void setMiterLimit(qfixed length) { m_miterLimit = length; }
+ qfixed miterLimit() const { return m_miterLimit; }
+
+ void setCurveThreshold(qfixed threshold) { m_curveThreshold = threshold; }
+ qfixed curveThreshold() const { return m_curveThreshold; }
+
+ void joinPoints(qfixed x, qfixed y, const QLineF &nextLine, LineJoinMode join);
+ inline void emitMoveTo(qfixed x, qfixed y);
+ inline void emitLineTo(qfixed x, qfixed y);
+ inline void emitCubicTo(qfixed c1x, qfixed c1y, qfixed c2x, qfixed c2y, qfixed ex, qfixed ey);
+
+protected:
+ static Qt::PenCapStyle capForJoinMode(LineJoinMode mode);
+ static LineJoinMode joinModeForCap(Qt::PenCapStyle);
+
+ static Qt::PenJoinStyle joinForJoinMode(LineJoinMode mode);
+ static LineJoinMode joinModeForJoin(Qt::PenJoinStyle joinStyle);
+
+ virtual void processCurrentSubpath();
+
+ qfixed m_strokeWidth;
+ qfixed m_miterLimit;
+ qfixed m_curveThreshold;
+
+ LineJoinMode m_capStyle;
+ LineJoinMode m_joinStyle;
+
+ qfixed m_back1X;
+ qfixed m_back1Y;
+
+ qfixed m_back2X;
+ qfixed m_back2Y;
+};
+
+class __attribute__((visibility("default"))) QDashStroker : public QStrokerOps
+{
+public:
+ QDashStroker(QStroker *stroker);
+
+ QStroker *stroker() const { return m_stroker; }
+
+ static QVector<qfixed> patternForStyle(Qt::PenStyle style);
+
+ void setDashPattern(const QVector<qfixed> &dashPattern) { m_dashPattern = dashPattern; }
+ QVector<qfixed> dashPattern() const { return m_dashPattern; }
+
+ void setDashOffset(qreal offset) { m_dashOffset = offset; }
+ qreal dashOffset() const { return m_dashOffset; }
+
+ virtual void begin(void *data);
+ virtual void end();
+
+protected:
+ virtual void processCurrentSubpath();
+
+ QStroker *m_stroker;
+ QVector<qfixed> m_dashPattern;
+ qreal m_dashOffset;
+};
+
+
+
+
+
+
+inline void QStrokerOps::emitMoveTo(qfixed x, qfixed y)
+{
+ qt_noop();
+ m_moveTo(x, y, m_customData);
+}
+
+inline void QStrokerOps::emitLineTo(qfixed x, qfixed y)
+{
+ qt_noop();
+ m_lineTo(x, y, m_customData);
+}
+
+inline void QStrokerOps::emitCubicTo(qfixed c1x, qfixed c1y, qfixed c2x, qfixed c2y, qfixed ex, qfixed ey)
+{
+ qt_noop();
+ m_cubicTo(c1x, c1y, c2x, c2y, ex, ey, m_customData);
+}
+
+inline void QStrokerOps::moveTo(qfixed x, qfixed y)
+{
+ if (m_elements.size()>1)
+ processCurrentSubpath();
+ m_elements.reset();
+ Element e = { QPainterPath::MoveToElement, x, y };
+ m_elements.add(e);
+}
+
+inline void QStrokerOps::lineTo(qfixed x, qfixed y)
+{
+ Element e = { QPainterPath::LineToElement, x, y };
+ m_elements.add(e);
+}
+
+inline void QStrokerOps::cubicTo(qfixed x1, qfixed y1, qfixed x2, qfixed y2, qfixed ex, qfixed ey)
+{
+ Element c1 = { QPainterPath::CurveToElement, x1, y1 };
+ Element c2 = { QPainterPath::CurveToDataElement, x2, y2 };
+ Element e = { QPainterPath::CurveToDataElement, ex, ey };
+ m_elements.add(c1);
+ m_elements.add(c2);
+ m_elements.add(e);
+}
+
+
+
+
+inline void QStroker::emitMoveTo(qfixed x, qfixed y)
+{
+ m_back2X = m_back1X;
+ m_back2Y = m_back1Y;
+ m_back1X = x;
+ m_back1Y = y;
+ QStrokerOps::emitMoveTo(x, y);
+}
+
+inline void QStroker::emitLineTo(qfixed x, qfixed y)
+{
+ m_back2X = m_back1X;
+ m_back2Y = m_back1Y;
+ m_back1X = x;
+ m_back1Y = y;
+ QStrokerOps::emitLineTo(x, y);
+}
+
+inline void QStroker::emitCubicTo(qfixed c1x, qfixed c1y,
+ qfixed c2x, qfixed c2y,
+ qfixed ex, qfixed ey)
+{
+ if (c2x == ex && c2y == ey) {
+ if (c1x == ex && c1y == ey) {
+ m_back2X = m_back1X;
+ m_back2Y = m_back1Y;
+ } else {
+ m_back2X = c1x;
+ m_back2Y = c1y;
+ }
+ } else {
+ m_back2X = c2x;
+ m_back2Y = c2y;
+ }
+ m_back1X = ex;
+ m_back1Y = ey;
+ QStrokerOps::emitCubicTo(c1x, c1y, c2x, c2y, ex, ey);
+}
+
+
+
+
+inline void QDashStroker::begin(void *data)
+{
+ qt_noop();
+ m_stroker->begin(data);
+ QStrokerOps::begin(data);
+}
+
+inline void QDashStroker::end()
+{
+ qt_noop();
+ QStrokerOps::end();
+ m_stroker->end();
+}
+
+
+# 1 "../../include/QtGui/private/qstroker_p.h" 2
+# 59 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h" 2
+# 1 "../../include/QtGui/private/qfontengine_p.h" 1
+# 60 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h" 2
+# 1 "../../include/QtGui/qprinter.h" 1
+# 1 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qprinter.h" 1
+# 43 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qprinter.h"
+#define QPRINTER_H
+
+# 1 "../../include/QtGui/qpaintdevice.h" 1
+# 46 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qprinter.h" 2
+# 1 "../../include/QtCore/qstring.h" 1
+# 47 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qprinter.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+
+
+
+
+
+
+class QPrinterPrivate;
+class QPaintEngine;
+class QPrintEngine;
+class QPrinterInfo;
+
+class __attribute__((visibility("default"))) QPrinter : public QPaintDevice
+{
+ inline QPrinterPrivate* d_func() { return reinterpret_cast<QPrinterPrivate *>(d_ptr); } inline const QPrinterPrivate* d_func() const { return reinterpret_cast<const QPrinterPrivate *>(d_ptr); } friend class QPrinterPrivate;
+public:
+ enum PrinterMode { ScreenResolution, PrinterResolution, HighResolution };
+
+ explicit QPrinter(PrinterMode mode = ScreenResolution);
+ explicit QPrinter(const QPrinterInfo& printer, PrinterMode mode = ScreenResolution);
+ ~QPrinter();
+
+ int devType() const;
+
+ enum Orientation { Portrait, Landscape };
+
+
+ enum PageSize { A4, B5, Letter, Legal, Executive,
+ A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1,
+ B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E,
+ DLE, Folio, Ledger, Tabloid, Custom, NPageSize = Custom, NPaperSize = Custom };
+ typedef PageSize PaperSize;
+# 96 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qprinter.h"
+ enum PageOrder { FirstPageFirst,
+ LastPageFirst };
+
+ enum ColorMode { GrayScale,
+ Color };
+
+ enum PaperSource { OnlyOne,
+ Lower,
+ Middle,
+ Manual,
+ Envelope,
+ EnvelopeManual,
+ Auto,
+ Tractor,
+ SmallFormat,
+ LargeFormat,
+ LargeCapacity,
+ Cassette,
+ FormSource,
+ MaxPageSource
+ };
+
+ enum PrinterState { Idle,
+ Active,
+ Aborted,
+ Error };
+
+ enum OutputFormat { NativeFormat, PdfFormat, PostScriptFormat };
+
+
+ enum PrintRange { AllPages, Selection, PageRange };
+
+ enum Unit {
+ Millimeter,
+ Point,
+ Inch,
+ Pica,
+ Didot,
+ Cicero,
+ DevicePixel
+ };
+
+ enum DuplexMode {
+ DuplexNone = 0,
+ DuplexAuto,
+ DuplexLongSide,
+ DuplexShortSide
+ };
+
+
+
+
+
+ void setOutputFormat(OutputFormat format);
+ OutputFormat outputFormat() const;
+
+ void setPrinterName(const QString &);
+ QString printerName() const;
+
+ bool isValid() const;
+
+ void setOutputFileName(const QString &);
+ QString outputFileName()const;
+
+ void setPrintProgram(const QString &);
+ QString printProgram() const;
+
+ void setDocName(const QString &);
+ QString docName() const;
+
+ void setCreator(const QString &);
+ QString creator() const;
+
+ void setOrientation(Orientation);
+ Orientation orientation() const;
+
+ void setPageSize(PageSize);
+ PageSize pageSize() const;
+
+ void setPaperSize(PaperSize);
+ PaperSize paperSize() const;
+
+ void setPaperSize(const QSizeF &paperSize, Unit unit);
+ QSizeF paperSize(Unit unit) const;
+
+ void setPageOrder(PageOrder);
+ PageOrder pageOrder() const;
+
+ void setResolution(int);
+ int resolution() const;
+
+ void setColorMode(ColorMode);
+ ColorMode colorMode() const;
+
+ void setCollateCopies(bool collate);
+ bool collateCopies() const;
+
+ void setFullPage(bool);
+ bool fullPage() const;
+
+ void setNumCopies(int);
+ int numCopies() const;
+
+ void setPaperSource(PaperSource);
+ PaperSource paperSource() const;
+
+ void setDuplex(DuplexMode duplex);
+ DuplexMode duplex() const;
+
+ QList<int> supportedResolutions() const;
+
+
+
+
+
+ void setFontEmbeddingEnabled(bool enable);
+ bool fontEmbeddingEnabled() const;
+
+ void setDoubleSidedPrinting(bool enable);
+ bool doubleSidedPrinting() const;
+
+
+
+
+
+
+ QRect paperRect() const;
+ QRect pageRect() const;
+ QRectF paperRect(Unit) const;
+ QRectF pageRect(Unit) const;
+
+
+ QString printerSelectionOption() const;
+ void setPrinterSelectionOption(const QString &);
+
+
+ bool newPage();
+ bool abort();
+
+ PrinterState printerState() const;
+
+ QPaintEngine *paintEngine() const;
+ QPrintEngine *printEngine() const;
+
+
+
+
+
+
+ void setFromTo(int fromPage, int toPage);
+ int fromPage() const;
+ int toPage() const;
+
+ void setPrintRange(PrintRange range);
+ PrintRange printRange() const;
+
+ void setPageMargins(qreal left, qreal top, qreal right, qreal bottom, Unit unit);
+ void getPageMargins(qreal *left, qreal *top, qreal *right, qreal *bottom, Unit unit) const;
+# 282 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qprinter.h"
+protected:
+ int metric(PaintDeviceMetric) const;
+ void setEngines(QPrintEngine *printEngine, QPaintEngine *paintEngine);
+
+private:
+ void init(PrinterMode mode);
+
+ QPrinter(const QPrinter &); QPrinter &operator=(const QPrinter &);
+
+ QPrinterPrivate *d_ptr;
+
+ friend class QPrintDialogPrivate;
+ friend class QAbstractPrintDialog;
+ friend class QAbstractPrintDialogPrivate;
+ friend class QPrintPreviewWidgetPrivate;
+ friend class QTextDocument;
+ friend class QPageSetupWidget;
+};
+# 326 "../../include/QtGui/../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qprinter.h"
+
+
+
+# 1 "../../include/QtGui/qprinter.h" 2
+# 61 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h" 2
+# 1 "../../include/QtGui/private/qfontsubset_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontsubset_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontsubset_p.h"
+#define QFONTSUBSET_P_H
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontsubset_p.h"
+# 1 "../../include/QtGui/private/qfontengine_p.h" 1
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontsubset_p.h" 2
+
+
+
+
+
+class QFontSubset
+{
+public:
+ QFontSubset(QFontEngine *fe, int obj_id = 0)
+ : object_id(obj_id), noEmbed(false), fontEngine(fe), downloaded_glyphs(0), standard_font(false)
+ { fontEngine->ref.ref(); addGlyph(0); }
+ ~QFontSubset() {
+ if (!fontEngine->ref.deref())
+ delete fontEngine;
+ }
+
+ QByteArray toTruetype() const;
+ QByteArray toType1() const;
+ QByteArray type1AddedGlyphs() const;
+ QByteArray widthArray() const;
+ QByteArray createToUnicodeMap() const;
+ QVector<int> getReverseMap() const;
+ QByteArray glyphName(unsigned int glyph, const QVector<int> reverseMap) const;
+
+ static QByteArray glyphName(unsigned short unicode, bool symbol);
+
+ int addGlyph(int index);
+ const int object_id;
+ bool noEmbed;
+ QFontEngine *fontEngine;
+ QList<int> glyph_indices;
+ mutable int downloaded_glyphs;
+ mutable bool standard_font;
+ int nGlyphs() const { return glyph_indices.size(); }
+ mutable QFixed emSquare;
+ mutable QVector<QFixed> widths;
+};
+
+
+# 1 "../../include/QtGui/private/qfontsubset_p.h" 2
+# 62 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h" 2
+# 1 "../../include/QtGui/private/qpaintengine_alpha_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine_alpha_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine_alpha_p.h"
+#define QPAINTENGINE_ALPHA_P_H
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine_alpha_p.h"
+# 1 "../../include/QtGui/private/qpaintengine_p.h" 1
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine_p.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine_p.h"
+#define QPAINTENGINE_P_H
+# 56 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine_p.h"
+# 1 "../../include/QtGui/qpainter.h" 1
+# 57 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine_p.h" 2
+# 1 "../../include/QtGui/qpaintengine.h" 1
+# 58 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine_p.h" 2
+# 1 "../../include/QtGui/qregion.h" 1
+# 59 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine_p.h" 2
+# 1 "../../include/QtCore/private/qobject_p.h" 1
+# 60 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine_p.h" 2
+
+
+
+class QPaintDevice;
+
+class QPaintEnginePrivate
+{
+ inline QPaintEngine* q_func() { return static_cast<QPaintEngine *>(q_ptr); } inline const QPaintEngine* q_func() const { return static_cast<const QPaintEngine *>(q_ptr); } friend class QPaintEngine;
+public:
+ QPaintEnginePrivate() : pdev(0), q_ptr(0), currentClipWidget(0), hasSystemTransform(0),
+ hasSystemViewport(0) {}
+ virtual ~QPaintEnginePrivate() { }
+ QPaintDevice *pdev;
+ QPaintEngine *q_ptr;
+ QRegion systemClip;
+ QRegion systemViewport;
+ QTransform systemTransform;
+ QWidget *currentClipWidget;
+ uint hasSystemTransform : 1;
+ uint hasSystemViewport : 1;
+
+ inline void transformSystemClip()
+ {
+ if (systemClip.isEmpty())
+ return;
+
+ if (systemTransform.type() <= QTransform::TxTranslate)
+ systemClip.translate(qRound(systemTransform.dx()), qRound(systemTransform.dy()));
+ else
+ systemClip = systemTransform.map(systemClip);
+
+
+ if (hasSystemViewport) {
+ systemClip &= systemViewport;
+ if (systemClip.isEmpty()) {
+
+ systemClip = QRect(systemViewport.boundingRect().topLeft(), QSize(1, 1));
+ }
+ }
+ }
+
+ inline void setSystemTransform(const QTransform &xform)
+ {
+ systemTransform = xform;
+ if ((hasSystemTransform = !xform.isIdentity()))
+ transformSystemClip();
+ systemStateChanged();
+ }
+
+ inline void setSystemViewport(const QRegion ®ion)
+ {
+ systemViewport = region;
+ hasSystemViewport = !systemViewport.isEmpty();
+ }
+
+ virtual void systemStateChanged() { }
+
+ void drawBoxTextItem(const QPointF &p, const QTextItemInt &ti);
+
+private:
+ QRect systemRect;
+};
+
+
+# 1 "../../include/QtGui/private/qpaintengine_p.h" 2
+# 58 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpaintengine_alpha_p.h" 2
+
+
+
+class QAlphaPaintEnginePrivate;
+
+class QAlphaPaintEngine : public QPaintEngine
+{
+ inline QAlphaPaintEnginePrivate* d_func() { return reinterpret_cast<QAlphaPaintEnginePrivate *>(d_ptr); } inline const QAlphaPaintEnginePrivate* d_func() const { return reinterpret_cast<const QAlphaPaintEnginePrivate *>(d_ptr); } friend class QAlphaPaintEnginePrivate;
+public:
+ ~QAlphaPaintEngine();
+
+ virtual bool begin(QPaintDevice *pdev);
+ virtual bool end();
+
+ virtual void updateState(const QPaintEngineState &state);
+
+ virtual void drawPath(const QPainterPath &path);
+
+ virtual void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode);
+
+ virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr);
+ virtual void drawImage(const QRectF &r, const QImage &image, const QRectF &sr);
+ virtual void drawTextItem(const QPointF &p, const QTextItem &textItem);
+ virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s);
+
+protected:
+ QAlphaPaintEngine(QAlphaPaintEnginePrivate &data, PaintEngineFeatures devcaps = 0);
+ QRegion alphaClipping() const;
+ bool continueCall() const;
+ void flushAndInit(bool init = true);
+ void cleanUp();
+};
+
+class QAlphaPaintEnginePrivate : public QPaintEnginePrivate
+{
+ inline QAlphaPaintEngine* q_func() { return static_cast<QAlphaPaintEngine *>(q_ptr); } inline const QAlphaPaintEngine* q_func() const { return static_cast<const QAlphaPaintEngine *>(q_ptr); } friend class QAlphaPaintEngine;
+public:
+ QAlphaPaintEnginePrivate();
+ ~QAlphaPaintEnginePrivate();
+
+ int m_pass;
+ QPicture *m_pic;
+ QPaintEngine *m_picengine;
+ QPainter *m_picpainter;
+
+ QPaintEngine::PaintEngineFeatures m_savedcaps;
+ QPaintDevice *m_pdev;
+
+ QRegion m_alphargn;
+ QRegion m_cliprgn;
+
+ bool m_hasalpha;
+ bool m_alphaPen;
+ bool m_alphaBrush;
+ bool m_alphaOpacity;
+ bool m_advancedPen;
+ bool m_advancedBrush;
+ bool m_complexTransform;
+ bool m_emulateProjectiveTransforms;
+ bool m_continueCall;
+
+ QTransform m_transform;
+ QPen m_pen;
+
+ void addAlphaRect(const QRectF &rect);
+ QRectF addPenWidth(const QPainterPath &path);
+ void drawAlphaImage(const QRectF &rect);
+ QRect toRect(const QRectF &rect) const;
+ bool fullyContained(const QRectF &rect) const;
+
+ void resetState(QPainter *p);
+};
+
+
+# 1 "../../include/QtGui/private/qpaintengine_alpha_p.h" 2
+# 63 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h" 2
+# 1 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qprintengine.h" 1
+# 43 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qprintengine.h"
+#define QPRINTENGINE_H
+
+# 1 "../../include/QtCore/qvariant.h" 1
+# 46 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qprintengine.h" 2
+# 1 "../../include/QtGui/qprinter.h" 1
+# 47 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qprintengine.h" 2
+
+
+
+
+
+typedef QtValidLicenseForGuiModule QtGuiModule;
+
+
+
+class __attribute__((visibility("default"))) QPrintEngine
+{
+public:
+ virtual ~QPrintEngine() {}
+ enum PrintEnginePropertyKey {
+ PPK_CollateCopies,
+ PPK_ColorMode,
+ PPK_Creator,
+ PPK_DocumentName,
+ PPK_FullPage,
+ PPK_NumberOfCopies,
+ PPK_Orientation,
+ PPK_OutputFileName,
+ PPK_PageOrder,
+ PPK_PageRect,
+ PPK_PageSize,
+ PPK_PaperRect,
+ PPK_PaperSource,
+ PPK_PrinterName,
+ PPK_PrinterProgram,
+ PPK_Resolution,
+ PPK_SelectionOption,
+ PPK_SupportedResolutions,
+
+ PPK_WindowsPageSize,
+ PPK_FontEmbedding,
+ PPK_SuppressSystemPrintStatus,
+
+ PPK_Duplex,
+
+ PPK_PaperSources,
+ PPK_CustomPaperSize,
+ PPK_PageMargins,
+ PPK_PaperSize = PPK_PageSize,
+
+ PPK_CustomBase = 0xff00
+ };
+
+ virtual void setProperty(PrintEnginePropertyKey key, const QVariant &value) = 0;
+ virtual QVariant property(PrintEnginePropertyKey key) const = 0;
+
+ virtual bool newPage() = 0;
+ virtual bool abort() = 0;
+
+ virtual int metric(QPaintDevice::PaintDeviceMetric) const = 0;
+
+ virtual QPrinter::PrinterState printerState() const = 0;
+
+
+
+
+
+
+};
+
+
+
+
+
+
+# 64 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h" 2
+# 1 "../../include/QtCore/qbuffer.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qbuffer.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qbuffer.h"
+#define QBUFFER_H
+
+# 1 "../../include/QtCore/qiodevice.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qbuffer.h" 2
+# 1 "../../include/QtCore/qbytearray.h" 1
+# 47 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/io/qbuffer.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+class QObject;
+class QBufferPrivate;
+
+class __attribute__((visibility("default"))) QBuffer : public QIODevice
+{
+
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+
+
+public:
+
+ explicit QBuffer(QObject *parent = 0);
+ QBuffer(QByteArray *buf, QObject *parent = 0);
+
+
+
+
+ ~QBuffer();
+
+ QByteArray &buffer();
+ const QByteArray &buffer() const;
+ void setBuffer(QByteArray *a);
+
+ void setData(const QByteArray &data);
+ inline void setData(const char *data, int len);
+ const QByteArray &data() const;
+
+ bool open(OpenMode openMode);
+
+ void close();
+ qint64 size() const;
+ qint64 pos() const;
+ bool seek(qint64 off);
+ bool atEnd() const;
+ bool canReadLine() const;
+
+protected:
+
+ void connectNotify(const char*);
+ void disconnectNotify(const char*);
+
+ qint64 readData(char *data, qint64 maxlen);
+ qint64 writeData(const char *data, qint64 len);
+
+private:
+ inline QBufferPrivate* d_func() { return reinterpret_cast<QBufferPrivate *>(d_ptr); } inline const QBufferPrivate* d_func() const { return reinterpret_cast<const QBufferPrivate *>(d_ptr); } friend class QBufferPrivate;
+ QBuffer(const QBuffer &); QBuffer &operator=(const QBuffer &);
+
+
+};
+
+inline void QBuffer::setData(const char *adata, int alen)
+{ setData(QByteArray(adata, alen)); }
+
+
+
+
+# 1 "../../include/QtCore/qbuffer.h" 2
+# 65 "../../include/QtGui/private/../../../../qt-embedded-linux-opensource-src-4.5.1/src/gui/painting/qpdf_p.h" 2
+
+
+
+
+
+#define PPK_CupsOptions QPrintEngine::PrintEnginePropertyKey(0xfe00)
+#define PPK_CupsPageRect QPrintEngine::PrintEnginePropertyKey(0xfe01)
+#define PPK_CupsPaperRect QPrintEngine::PrintEnginePropertyKey(0xfe02)
+#define PPK_CupsStringPageSize QPrintEngine::PrintEnginePropertyKey(0xfe03)
+
+const char *qt_real_to_string(qreal val, char *buf);
+const char *qt_int_to_string(int val, char *buf);
+
+namespace QPdf {
+
+ class ByteStream
+ {
+ public:
+
+
+
+
+ explicit ByteStream(bool fileBacking = false);
+ explicit ByteStream(QByteArray *ba, bool fileBacking = false);
+ ~ByteStream();
+ ByteStream &operator <<(char chr);
+ ByteStream &operator <<(const char *str);
+ ByteStream &operator <<(const QByteArray &str);
+ ByteStream &operator <<(const ByteStream &src);
+ ByteStream &operator <<(qreal val);
+ ByteStream &operator <<(int val);
+ ByteStream &operator <<(const QPointF &p);
+
+ QIODevice *stream();
+ void clear();
+
+ static inline int maxMemorySize() { return 100000000; }
+ static inline int chunkSize() { return 10000000; }
+
+ protected:
+ void constructor_helper(QIODevice *dev);
+ void constructor_helper(QByteArray *ba);
+
+ private:
+ void prepareBuffer();
+
+ private:
+ QIODevice *dev;
+ QByteArray ba;
+ bool fileBackingEnabled;
+ bool fileBackingActive;
+ bool handleDirty;
+ };
+
+ enum PathFlags {
+ ClipPath,
+ FillPath,
+ StrokePath,
+ FillAndStrokePath
+ };
+ QByteArray generatePath(const QPainterPath &path, const QTransform &matrix, PathFlags flags);
+ QByteArray generateMatrix(const QTransform &matrix);
+ QByteArray generateDashes(const QPen &pen);
+ QByteArray patternForBrush(const QBrush &b);
+
+
+
+
+ struct Stroker {
+ Stroker();
+ void setPen(const QPen &pen);
+ void strokePath(const QPainterPath &path);
+ ByteStream *stream;
+ bool first;
+ QTransform matrix;
+ bool cosmeticPen;
+ private:
+ QStroker basicStroker;
+ QDashStroker dashStroker;
+ QStrokerOps *stroker;
+ };
+
+ QByteArray ascii85Encode(const QByteArray &input);
+
+ const char *toHex(ushort u, char *buffer);
+ const char *toHex(uchar u, char *buffer);
+
+
+ struct PaperSize {
+ int width, height;
+ };
+ PaperSize paperSize(QPrinter::PaperSize paperSize);
+ const char *paperSizeToString(QPrinter::PaperSize paperSize);
+
+
+ QByteArray stripSpecialCharacters(const QByteArray &string);
+};
+
+
+class QPdfPage : public QPdf::ByteStream
+{
+public:
+ QPdfPage();
+
+ QVector<uint> images;
+ QVector<uint> graphicStates;
+ QVector<uint> patterns;
+ QVector<uint> fonts;
+ QVector<uint> annotations;
+
+ void streamImage(int w, int h, int object);
+
+ QSize pageSize;
+private:
+};
+
+
+class QPdfBaseEnginePrivate;
+
+class QPdfBaseEngine : public QAlphaPaintEngine, public QPrintEngine
+{
+ inline QPdfBaseEnginePrivate* d_func() { return reinterpret_cast<QPdfBaseEnginePrivate *>(d_ptr); } inline const QPdfBaseEnginePrivate* d_func() const { return reinterpret_cast<const QPdfBaseEnginePrivate *>(d_ptr); } friend class QPdfBaseEnginePrivate;
+public:
+ QPdfBaseEngine(QPdfBaseEnginePrivate &d, PaintEngineFeatures f);
+ ~QPdfBaseEngine() {}
+
+
+ bool begin(QPaintDevice *pdev);
+ bool end();
+
+ void drawPoints(const QPointF *points, int pointCount);
+ void drawLines(const QLineF *lines, int lineCount);
+ void drawRects(const QRectF *rects, int rectCount);
+ void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode);
+ void drawPath (const QPainterPath & path);
+
+ void drawTextItem(const QPointF &p, const QTextItem &textItem);
+
+ void updateState(const QPaintEngineState &state);
+
+ int metric(QPaintDevice::PaintDeviceMetric metricType) const;
+
+
+
+ bool newPage();
+ void setProperty(PrintEnginePropertyKey key, const QVariant &value);
+ QVariant property(PrintEnginePropertyKey key) const;
+
+ void setPen();
+ virtual void setBrush() = 0;
+ void setupGraphicsState(QPaintEngine::DirtyFlags flags);
+
+private:
+ void updateClipPath(const QPainterPath & path, Qt::ClipOperation op);
+
+ friend int qt_printerRealNumCopies(QPaintEngine *);
+};
+
+class QPdfBaseEnginePrivate : public QAlphaPaintEnginePrivate
+{
+ inline QPdfBaseEngine* q_func() { return static_cast<QPdfBaseEngine *>(q_ptr); } inline const QPdfBaseEngine* q_func() const { return static_cast<const QPdfBaseEngine *>(q_ptr); } friend class QPdfBaseEngine;
+public:
+ QPdfBaseEnginePrivate(QPrinter::PrinterMode m);
+ ~QPdfBaseEnginePrivate();
+
+ bool openPrintDevice();
+ void closePrintDevice();
+
+
+ virtual void drawTextItem(const QPointF &p, const QTextItemInt &ti);
+ inline uint requestObject() { return currentObject++; }
+
+ QRect paperRect() const;
+ QRect pageRect() const;
+
+ bool postscript;
+ int currentObject;
+
+ QPdfPage* currentPage;
+ QPdf::Stroker stroker;
+
+ QPointF brushOrigin;
+ QBrush brush;
+ QPen pen;
+ QList<QPainterPath> clips;
+ bool clipEnabled;
+ bool allClipped;
+ bool hasPen;
+ bool hasBrush;
+ bool simplePen;
+ qreal opacity;
+ bool useAlphaEngine;
+
+ QHash<QFontEngine::FaceId, QFontSubset *> fonts;
+
+ QPaintDevice *pdev;
+
+
+ QIODevice *outDevice;
+ int fd;
+
+
+ QString outputFileName;
+ QString printerName;
+ QString printProgram;
+ QString selectionOption;
+ QString title;
+ QString creator;
+ QPrinter::DuplexMode duplex;
+ bool collate;
+ bool fullPage;
+ bool embedFonts;
+ int copies;
+ int resolution;
+ QPrinter::PageOrder pageOrder;
+ QPrinter::Orientation orientation;
+ QPrinter::PaperSize paperSize;
+ QPrinter::ColorMode colorMode;
+ QPrinter::PaperSource paperSource;
+
+ QStringList cupsOptions;
+ QRect cupsPaperRect;
+ QRect cupsPageRect;
+ QString cupsStringPageSize;
+ QSizeF customPaperSize;
+ bool hasCustomPageMargins;
+ qreal leftMargin, topMargin, rightMargin, bottomMargin;
+
+
+
+
+};
+
+
+# 1 "../../include/QtGui/private/qpdf_p.h" 2
+# 50 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp" 2
+# 1 "../../include/QtCore/qmath.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmath.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmath.h"
+#define QMATH_H
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 1 3 4
+# 26 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+#define _MATH_H 1
+
+
+
+extern "C" {
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/huge_val.h" 1 3 4
+# 30 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/huge_val.h" 3 4
+#define HUGE_VAL (__builtin_huge_val())
+# 35 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 2 3 4
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/huge_valf.h" 1 3 4
+# 29 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/huge_valf.h" 3 4
+#define HUGE_VALF (__builtin_huge_valf())
+# 37 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 2 3 4
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/huge_vall.h" 1 3 4
+# 26 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/huge_vall.h" 3 4
+#define HUGE_VALL (__builtin_huge_vall())
+# 38 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 2 3 4
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/inf.h" 1 3 4
+# 27 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/inf.h" 3 4
+#define INFINITY (__builtin_inff())
+# 41 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 2 3 4
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/nan.h" 1 3 4
+# 29 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/nan.h" 3 4
+#define NAN (__builtin_nanf (""))
+# 44 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 2 3 4
+
+
+
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/mathdef.h" 1 3 4
+# 24 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/mathdef.h" 3 4
+#define _MATH_H_MATHDEF 1
+
+
+
+typedef double float_t;
+
+typedef double double_t;
+
+
+
+#define FP_ILOGB0 (-2147483647)
+#define FP_ILOGBNAN 2147483647
+
+
+
+
+
+
+#define __NO_LONG_DOUBLE_MATH 1
+# 48 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 2 3 4
+
+
+
+
+
+
+#define __MATHCALL(function,suffix,args) __MATHDECL (_Mdouble_,function,suffix, args)
+
+#define __MATHDECL(type,function,suffix,args) __MATHDECL_1(type, function,suffix, args); __MATHDECL_1(type, __CONCAT(__,function),suffix, args)
+
+
+#define __MATHCALLX(function,suffix,args,attrib) __MATHDECLX (_Mdouble_,function,suffix, args, attrib)
+
+#define __MATHDECLX(type,function,suffix,args,attrib) __MATHDECL_1(type, function,suffix, args) __attribute__ (attrib); __MATHDECL_1(type, __CONCAT(__,function),suffix, args) __attribute__ (attrib)
+
+
+#define __MATHDECL_1(type,function,suffix,args) extern type __MATH_PRECNAME(function,suffix) args __THROW
+
+
+#define _Mdouble_ double
+#define __MATH_PRECNAME(name,r) __CONCAT(name,r)
+#define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_STD
+#define _Mdouble_END_NAMESPACE __END_NAMESPACE_STD
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/mathcalls.h" 3 4
+
+
+extern double acos (double __x) throw (); extern double __acos (double __x) throw ();
+
+extern double asin (double __x) throw (); extern double __asin (double __x) throw ();
+
+extern double atan (double __x) throw (); extern double __atan (double __x) throw ();
+
+extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw ();
+
+
+extern double cos (double __x) throw (); extern double __cos (double __x) throw ();
+
+extern double sin (double __x) throw (); extern double __sin (double __x) throw ();
+
+extern double tan (double __x) throw (); extern double __tan (double __x) throw ();
+
+
+
+
+extern double cosh (double __x) throw (); extern double __cosh (double __x) throw ();
+
+extern double sinh (double __x) throw (); extern double __sinh (double __x) throw ();
+
+extern double tanh (double __x) throw (); extern double __tanh (double __x) throw ();
+
+# 87 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/mathcalls.h" 3 4
+
+
+extern double acosh (double __x) throw (); extern double __acosh (double __x) throw ();
+
+extern double asinh (double __x) throw (); extern double __asinh (double __x) throw ();
+
+extern double atanh (double __x) throw (); extern double __atanh (double __x) throw ();
+
+
+
+
+
+
+
+extern double exp (double __x) throw (); extern double __exp (double __x) throw ();
+
+
+extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw ();
+
+
+extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw ();
+
+
+extern double log (double __x) throw (); extern double __log (double __x) throw ();
+
+
+extern double log10 (double __x) throw (); extern double __log10 (double __x) throw ();
+
+
+extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw ();
+
+# 127 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/mathcalls.h" 3 4
+
+
+extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw ();
+
+
+extern double log1p (double __x) throw (); extern double __log1p (double __x) throw ();
+
+
+extern double logb (double __x) throw (); extern double __logb (double __x) throw ();
+
+
+
+
+
+
+extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw ();
+
+
+extern double log2 (double __x) throw (); extern double __log2 (double __x) throw ();
+
+
+
+
+
+
+
+
+extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw ();
+
+
+extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw ();
+
+
+
+
+
+extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw ();
+
+
+
+
+
+
+extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw ();
+
+
+
+
+
+
+
+
+extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__));
+
+
+extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__));
+
+
+extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__));
+
+
+extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw ();
+
+
+
+
+extern int __isinf (double __value) throw () __attribute__ ((__const__));
+
+
+extern int __finite (double __value) throw () __attribute__ ((__const__));
+
+
+
+
+
+extern int isinf (double __value) throw () __attribute__ ((__const__));
+
+
+extern int finite (double __value) throw () __attribute__ ((__const__));
+
+
+extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw ();
+
+
+
+extern double significand (double __x) throw (); extern double __significand (double __x) throw ();
+
+
+
+
+
+extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__));
+
+
+
+
+
+
+extern double nan (__const char *__tagb) throw () __attribute__ ((__const__)); extern double __nan (__const char *__tagb) throw () __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnan (double __value) throw () __attribute__ ((__const__));
+
+
+
+extern int isnan (double __value) throw () __attribute__ ((__const__));
+
+
+extern double j0 (double) throw (); extern double __j0 (double) throw ();
+extern double j1 (double) throw (); extern double __j1 (double) throw ();
+extern double jn (int, double) throw (); extern double __jn (int, double) throw ();
+extern double y0 (double) throw (); extern double __y0 (double) throw ();
+extern double y1 (double) throw (); extern double __y1 (double) throw ();
+extern double yn (int, double) throw (); extern double __yn (int, double) throw ();
+
+
+
+
+
+
+extern double erf (double) throw (); extern double __erf (double) throw ();
+extern double erfc (double) throw (); extern double __erfc (double) throw ();
+extern double lgamma (double) throw (); extern double __lgamma (double) throw ();
+
+
+
+
+
+
+extern double tgamma (double) throw (); extern double __tgamma (double) throw ();
+
+
+
+
+
+extern double gamma (double) throw (); extern double __gamma (double) throw ();
+
+
+
+
+
+
+extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw ();
+
+
+
+
+
+
+
+extern double rint (double __x) throw (); extern double __rint (double __x) throw ();
+
+
+extern double nextafter (double __x, double __y) throw () __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) throw () __attribute__ ((__const__));
+
+extern double nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) throw () __attribute__ ((__const__));
+
+
+
+extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw ();
+
+
+
+extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw ();
+
+
+
+extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw ();
+
+
+
+
+extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw ();
+
+
+
+extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw ();
+
+
+
+extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__));
+
+
+
+extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__));
+
+
+
+
+extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw ();
+
+
+
+
+
+
+extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw ();
+extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw ();
+
+
+
+extern long int lround (double __x) throw (); extern long int __lround (double __x) throw ();
+extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw ();
+
+
+
+extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw ();
+
+
+extern double fmax (double __x, double __y) throw (); extern double __fmax (double __x, double __y) throw ();
+
+
+extern double fmin (double __x, double __y) throw (); extern double __fmin (double __x, double __y) throw ();
+
+
+
+extern int __fpclassify (double __value) throw ()
+ __attribute__ ((__const__));
+
+
+extern int __signbit (double __value) throw ()
+ __attribute__ ((__const__));
+
+
+
+extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw ();
+
+
+
+
+
+
+
+
+extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw ();
+# 72 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 2 3 4
+#undef _Mdouble_
+#undef _Mdouble_BEGIN_NAMESPACE
+#undef _Mdouble_END_NAMESPACE
+#undef __MATH_PRECNAME
+# 84 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+#define _Mfloat_ float
+
+#define _Mdouble_ _Mfloat_
+
+#define __MATH_PRECNAME(name,r) name ##f ##r
+
+
+
+#define _Mdouble_BEGIN_NAMESPACE __BEGIN_NAMESPACE_C99
+#define _Mdouble_END_NAMESPACE __END_NAMESPACE_C99
+# 1 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/mathcalls.h" 3 4
+
+
+extern float acosf (float __x) throw (); extern float __acosf (float __x) throw ();
+
+extern float asinf (float __x) throw (); extern float __asinf (float __x) throw ();
+
+extern float atanf (float __x) throw (); extern float __atanf (float __x) throw ();
+
+extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw ();
+
+
+extern float cosf (float __x) throw (); extern float __cosf (float __x) throw ();
+
+extern float sinf (float __x) throw (); extern float __sinf (float __x) throw ();
+
+extern float tanf (float __x) throw (); extern float __tanf (float __x) throw ();
+
+
+
+
+extern float coshf (float __x) throw (); extern float __coshf (float __x) throw ();
+
+extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw ();
+
+extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw ();
+
+# 87 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/mathcalls.h" 3 4
+
+
+extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw ();
+
+extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw ();
+
+extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw ();
+
+
+
+
+
+
+
+extern float expf (float __x) throw (); extern float __expf (float __x) throw ();
+
+
+extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw ();
+
+
+extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw ();
+
+
+extern float logf (float __x) throw (); extern float __logf (float __x) throw ();
+
+
+extern float log10f (float __x) throw (); extern float __log10f (float __x) throw ();
+
+
+extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw ();
+
+# 127 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/bits/mathcalls.h" 3 4
+
+
+extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw ();
+
+
+extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw ();
+
+
+extern float logbf (float __x) throw (); extern float __logbf (float __x) throw ();
+
+
+
+
+
+
+extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw ();
+
+
+extern float log2f (float __x) throw (); extern float __log2f (float __x) throw ();
+
+
+
+
+
+
+
+
+extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw ();
+
+
+extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw ();
+
+
+
+
+
+extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw ();
+
+
+
+
+
+
+extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw ();
+
+
+
+
+
+
+
+
+extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__));
+
+
+extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__));
+
+
+extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__));
+
+
+extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw ();
+
+
+
+
+extern int __isinff (float __value) throw () __attribute__ ((__const__));
+
+
+extern int __finitef (float __value) throw () __attribute__ ((__const__));
+
+
+
+
+
+extern int isinff (float __value) throw () __attribute__ ((__const__));
+
+
+extern int finitef (float __value) throw () __attribute__ ((__const__));
+
+
+extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw ();
+
+
+
+extern float significandf (float __x) throw (); extern float __significandf (float __x) throw ();
+
+
+
+
+
+extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__));
+
+
+
+
+
+
+extern float nanf (__const char *__tagb) throw () __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) throw () __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnanf (float __value) throw () __attribute__ ((__const__));
+
+
+
+extern int isnanf (float __value) throw () __attribute__ ((__const__));
+
+
+extern float j0f (float) throw (); extern float __j0f (float) throw ();
+extern float j1f (float) throw (); extern float __j1f (float) throw ();
+extern float jnf (int, float) throw (); extern float __jnf (int, float) throw ();
+extern float y0f (float) throw (); extern float __y0f (float) throw ();
+extern float y1f (float) throw (); extern float __y1f (float) throw ();
+extern float ynf (int, float) throw (); extern float __ynf (int, float) throw ();
+
+
+
+
+
+
+extern float erff (float) throw (); extern float __erff (float) throw ();
+extern float erfcf (float) throw (); extern float __erfcf (float) throw ();
+extern float lgammaf (float) throw (); extern float __lgammaf (float) throw ();
+
+
+
+
+
+
+extern float tgammaf (float) throw (); extern float __tgammaf (float) throw ();
+
+
+
+
+
+extern float gammaf (float) throw (); extern float __gammaf (float) throw ();
+
+
+
+
+
+
+extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw ();
+
+
+
+
+
+
+
+extern float rintf (float __x) throw (); extern float __rintf (float __x) throw ();
+
+
+extern float nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) throw () __attribute__ ((__const__));
+
+extern float nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__));
+
+
+
+extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw ();
+
+
+
+extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw ();
+
+
+
+extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw ();
+
+
+
+
+extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw ();
+
+
+
+extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw ();
+
+
+
+extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__));
+
+
+
+extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__));
+
+
+
+
+extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw ();
+
+
+
+
+
+
+extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw ();
+extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw ();
+
+
+
+extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw ();
+extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw ();
+
+
+
+extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw ();
+
+
+extern float fmaxf (float __x, float __y) throw (); extern float __fmaxf (float __x, float __y) throw ();
+
+
+extern float fminf (float __x, float __y) throw (); extern float __fminf (float __x, float __y) throw ();
+
+
+
+extern int __fpclassifyf (float __value) throw ()
+ __attribute__ ((__const__));
+
+
+extern int __signbitf (float __value) throw ()
+ __attribute__ ((__const__));
+
+
+
+extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw ();
+
+
+
+
+
+
+
+
+extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw ();
+# 95 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 2 3 4
+#undef _Mdouble_
+#undef _Mdouble_BEGIN_NAMESPACE
+#undef _Mdouble_END_NAMESPACE
+#undef __MATH_PRECNAME
+# 150 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+#undef __MATHDECL_1
+#undef __MATHDECL
+#undef __MATHCALL
+
+
+
+
+extern int signgam;
+# 198 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+enum
+ {
+ FP_NAN,
+#define FP_NAN FP_NAN
+ FP_INFINITE,
+#define FP_INFINITE FP_INFINITE
+ FP_ZERO,
+#define FP_ZERO FP_ZERO
+ FP_SUBNORMAL,
+#define FP_SUBNORMAL FP_SUBNORMAL
+ FP_NORMAL
+#define FP_NORMAL FP_NORMAL
+ };
+
+
+
+#define fpclassify(x) (sizeof (x) == sizeof (float) ? __fpclassifyf (x) : __fpclassify (x))
+# 226 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+#define signbit(x) (sizeof (x) == sizeof (float) ? __signbitf (x) : __signbit (x))
+# 238 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+#define isfinite(x) (sizeof (x) == sizeof (float) ? __finitef (x) : __finite (x))
+# 249 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+#define isnormal(x) (fpclassify (x) == FP_NORMAL)
+
+
+
+
+#define isnan(x) (sizeof (x) == sizeof (float) ? __isnanf (x) : __isnan (x))
+# 266 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+#define isinf(x) (sizeof (x) == sizeof (float) ? __isinff (x) : __isinf (x))
+# 277 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+#define MATH_ERRNO 1
+#define MATH_ERREXCEPT 2
+
+
+
+
+
+typedef enum
+{
+ _IEEE_ = -1,
+ _SVID_,
+ _XOPEN_,
+ _POSIX_,
+ _ISOC_
+} _LIB_VERSION_TYPE;
+
+
+
+
+extern _LIB_VERSION_TYPE _LIB_VERSION;
+# 307 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+struct __exception
+
+
+
+ {
+ int type;
+ char *name;
+ double arg1;
+ double arg2;
+ double retval;
+ };
+
+
+extern int matherr (struct __exception *__exc) throw ();
+
+
+
+
+#define X_TLOSS 1.41484755040568800000e+16
+
+
+#define DOMAIN 1
+#define SING 2
+#define OVERFLOW 3
+#define UNDERFLOW 4
+#define TLOSS 5
+#define PLOSS 6
+
+
+#define HUGE 3.40282347e+38F
+# 350 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+#define M_E 2.7182818284590452354
+#define M_LOG2E 1.4426950408889634074
+#define M_LOG10E 0.43429448190325182765
+#define M_LN2 0.69314718055994530942
+#define M_LN10 2.30258509299404568402
+#define M_PI 3.14159265358979323846
+#define M_PI_2 1.57079632679489661923
+#define M_PI_4 0.78539816339744830962
+#define M_1_PI 0.31830988618379067154
+#define M_2_PI 0.63661977236758134308
+#define M_2_SQRTPI 1.12837916709551257390
+#define M_SQRT2 1.41421356237309504880
+#define M_SQRT1_2 0.70710678118654752440
+
+
+
+
+
+
+#define M_El 2.7182818284590452353602874713526625L
+#define M_LOG2El 1.4426950408889634073599246810018921L
+#define M_LOG10El 0.4342944819032518276511289189166051L
+#define M_LN2l 0.6931471805599453094172321214581766L
+#define M_LN10l 2.3025850929940456840179914546843642L
+#define M_PIl 3.1415926535897932384626433832795029L
+#define M_PI_2l 1.5707963267948966192313216916397514L
+#define M_PI_4l 0.7853981633974483096156608458198757L
+#define M_1_PIl 0.3183098861837906715377675267450287L
+#define M_2_PIl 0.6366197723675813430755350534900574L
+#define M_2_SQRTPIl 1.1283791670955125738961589031215452L
+#define M_SQRT2l 1.4142135623730950488016887242096981L
+#define M_SQRT1_2l 0.7071067811865475244008443621048490L
+# 399 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+#define isgreater(x,y) __builtin_isgreater(x, y)
+#define isgreaterequal(x,y) __builtin_isgreaterequal(x, y)
+#define isless(x,y) __builtin_isless(x, y)
+#define islessequal(x,y) __builtin_islessequal(x, y)
+#define islessgreater(x,y) __builtin_islessgreater(x, y)
+#define isunordered(u,v) __builtin_isunordered(u, v)
+# 465 "/opt/uClinux/bfin-linux-uclibc/bin/../bfin-linux-uclibc/runtime/usr/include/math.h" 3 4
+}
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmath.h" 2
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 48 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/kernel/qmath.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+inline int qCeil(qreal v)
+{
+
+ if (sizeof(qreal) == sizeof(float))
+ return int(ceilf(v));
+ else
+
+ return int(ceil(v));
+}
+
+inline int qFloor(qreal v)
+{
+
+ if (sizeof(qreal) == sizeof(float))
+ return int(floorf(v));
+ else
+
+ return int(floor(v));
+}
+
+inline qreal qSin(qreal v)
+{
+
+ if (sizeof(qreal) == sizeof(float))
+ return sinf(v);
+ else
+
+ return sin(v);
+}
+
+inline qreal qCos(qreal v)
+{
+
+ if (sizeof(qreal) == sizeof(float))
+ return cosf(v);
+ else
+
+ return cos(v);
+}
+
+inline qreal qAcos(qreal v)
+{
+
+ if (sizeof(qreal) == sizeof(float))
+ return acosf(v);
+ else
+
+ return acos(v);
+}
+
+inline qreal qSqrt(qreal v)
+{
+
+ if (sizeof(qreal) == sizeof(float))
+ return sqrtf(v);
+ else
+
+ return sqrt(v);
+}
+
+inline qreal qLn(qreal v)
+{
+
+ if (sizeof(qreal) == sizeof(float))
+ return logf(v);
+ else
+
+ return log(v);
+}
+
+inline qreal qPow(qreal x, qreal y)
+{
+
+ if (sizeof(qreal) == sizeof(float))
+ return powf(x, y);
+ else
+
+ return pow(x, y);
+}
+
+
+
+
+# 1 "../../include/QtCore/qmath.h" 2
+# 51 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp" 2
+# 1 "../../include/QtCore/qendian.h" 1
+# 1 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qendian.h" 1
+# 43 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qendian.h"
+#define QENDIAN_H
+
+# 1 "../../include/QtCore/qglobal.h" 1
+# 46 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qendian.h" 2
+
+
+
+
+
+typedef QtValidLicenseForCoreModule QtCoreModule;
+
+
+
+
+inline void qbswap_helper(const uchar *src, uchar *dest, int size)
+{
+ for (int i = 0; i < size ; ++i) dest[i] = src[size - 1 - i];
+}
+
+
+
+
+
+
+
+template <typename T> inline void qbswap(const T src, uchar *dest)
+{
+ qbswap_helper(reinterpret_cast<const uchar *>(&src), dest, sizeof(T));
+}
+
+
+
+template <typename T> inline void qToUnaligned(const T src, uchar *dest)
+{
+ qMemCopy(dest, &src, sizeof(T));
+}
+# 127 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qendian.h"
+template <typename T> inline T qFromLittleEndian(const uchar *src);
+template <> inline quint64 qFromLittleEndian<quint64>(const uchar *src)
+{
+ return 0
+ | src[0]
+ | src[1] * static_cast<unsigned long long>(0x0000000000000100ULL)
+ | src[2] * static_cast<unsigned long long>(0x0000000000010000ULL)
+ | src[3] * static_cast<unsigned long long>(0x0000000001000000ULL)
+ | src[4] * static_cast<unsigned long long>(0x0000000100000000ULL)
+ | src[5] * static_cast<unsigned long long>(0x0000010000000000ULL)
+ | src[6] * static_cast<unsigned long long>(0x0001000000000000ULL)
+ | src[7] * static_cast<unsigned long long>(0x0100000000000000ULL);
+}
+
+template <> inline quint32 qFromLittleEndian<quint32>(const uchar *src)
+{
+ return 0
+ | src[0]
+ | src[1] * quint32(0x00000100)
+ | src[2] * quint32(0x00010000)
+ | src[3] * quint32(0x01000000);
+}
+
+template <> inline quint16 qFromLittleEndian<quint16>(const uchar *src)
+{
+ return 0
+ | src[0]
+ | src[1] * 0x0100;
+}
+
+
+template <> inline qint64 qFromLittleEndian<qint64>(const uchar *src)
+{ return static_cast<qint64>(qFromLittleEndian<quint64>(src)); }
+
+template <> inline qint32 qFromLittleEndian<qint32>(const uchar *src)
+{ return static_cast<qint32>(qFromLittleEndian<quint32>(src)); }
+
+template <> inline qint16 qFromLittleEndian<qint16>(const uchar *src)
+{ return static_cast<qint16>(qFromLittleEndian<quint16>(src)); }
+# 216 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qendian.h"
+template <class T> inline T qFromBigEndian(const uchar *src);
+template<>
+inline quint64 qFromBigEndian<quint64>(const uchar *src)
+{
+ return 0
+ | src[7]
+ | src[6] * static_cast<unsigned long long>(0x0000000000000100ULL)
+ | src[5] * static_cast<unsigned long long>(0x0000000000010000ULL)
+ | src[4] * static_cast<unsigned long long>(0x0000000001000000ULL)
+ | src[3] * static_cast<unsigned long long>(0x0000000100000000ULL)
+ | src[2] * static_cast<unsigned long long>(0x0000010000000000ULL)
+ | src[1] * static_cast<unsigned long long>(0x0001000000000000ULL)
+ | src[0] * static_cast<unsigned long long>(0x0100000000000000ULL);
+}
+
+template<>
+inline quint32 qFromBigEndian<quint32>(const uchar *src)
+{
+ return 0
+ | src[3]
+ | src[2] * quint32(0x00000100)
+ | src[1] * quint32(0x00010000)
+ | src[0] * quint32(0x01000000);
+}
+
+template<>
+inline quint16 qFromBigEndian<quint16>(const uchar *src)
+{
+ return 0
+ | src[1]
+ | src[0] * quint16(0x0100);
+}
+
+
+
+template <> inline qint64 qFromBigEndian<qint64>(const uchar *src)
+{ return static_cast<qint64>(qFromBigEndian<quint64>(src)); }
+
+template <> inline qint32 qFromBigEndian<qint32>(const uchar *src)
+{ return static_cast<qint32>(qFromBigEndian<quint32>(src)); }
+
+template <> inline qint16 qFromBigEndian<qint16>(const uchar *src)
+{ return static_cast<qint16>(qFromBigEndian<quint16>(src)); }
+
+
+
+
+
+
+
+template <typename T> T qbswap(T source);
+template <> inline quint64 qbswap<quint64>(quint64 source)
+{
+ return 0
+ | ((source & static_cast<unsigned long long>(0x00000000000000ffULL)) << 56)
+ | ((source & static_cast<unsigned long long>(0x000000000000ff00ULL)) << 40)
+ | ((source & static_cast<unsigned long long>(0x0000000000ff0000ULL)) << 24)
+ | ((source & static_cast<unsigned long long>(0x00000000ff000000ULL)) << 8)
+ | ((source & static_cast<unsigned long long>(0x000000ff00000000ULL)) >> 8)
+ | ((source & static_cast<unsigned long long>(0x0000ff0000000000ULL)) >> 24)
+ | ((source & static_cast<unsigned long long>(0x00ff000000000000ULL)) >> 40)
+ | ((source & static_cast<unsigned long long>(0xff00000000000000ULL)) >> 56);
+}
+
+template <> inline quint32 qbswap<quint32>(quint32 source)
+{
+ return 0
+ | ((source & 0x000000ff) << 24)
+ | ((source & 0x0000ff00) << 8)
+ | ((source & 0x00ff0000) >> 8)
+ | ((source & 0xff000000) >> 24);
+}
+
+template <> inline quint16 qbswap<quint16>(quint16 source)
+{
+ return 0
+ | ((source & 0x00ff) << 8)
+ | ((source & 0xff00) >> 8);
+}
+
+
+template <> inline qint64 qbswap<qint64>(qint64 source)
+{
+ return qbswap<quint64>(quint64(source));
+}
+
+template <> inline qint32 qbswap<qint32>(qint32 source)
+{
+ return qbswap<quint32>(quint32(source));
+}
+
+template <> inline qint16 qbswap<qint16>(qint16 source)
+{
+ return qbswap<quint16>(quint16(source));
+}
+# 328 "../../include/QtCore/../../../qt-embedded-linux-opensource-src-4.5.1/src/corelib/global/qendian.h"
+template <typename T> inline T qToBigEndian(T source)
+{ return qbswap<T>(source); }
+template <typename T> inline T qFromBigEndian(T source)
+{ return qbswap<T>(source); }
+template <typename T> inline T qToLittleEndian(T source)
+{ return source; }
+template <typename T> inline T qFromLittleEndian(T source)
+{ return source; }
+template <typename T> inline void qToBigEndian(T src, uchar *dest)
+{ qbswap<T>(src, dest); }
+template <typename T> inline void qToLittleEndian(T src, uchar *dest)
+{ qToUnaligned<T>(src, dest); }
+
+
+
+
+
+
+# 1 "../../include/QtCore/qendian.h" 2
+# 52 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp" 2
+# 1 "../../include/QtCore/private/qharfbuzz_p.h" 1
+# 53 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp" 2
+
+
+
+static inline bool qtransform_equals_no_translate(const QTransform &a, const QTransform &b)
+{
+ if (a.type() <= QTransform::TxTranslate && b.type() <= QTransform::TxTranslate) {
+ return true;
+ } else {
+
+
+ qt_noop();
+ qt_noop();
+
+ return a.m11() == b.m11()
+ && a.m12() == b.m12()
+ && a.m21() == b.m21()
+ && a.m22() == b.m22();
+ }
+}
+
+
+
+QFontEngineGlyphCache::~QFontEngineGlyphCache()
+{
+}
+
+
+
+static HB_Bool hb_stringToGlyphs(HB_Font font, const HB_UChar16 *string, hb_uint32 length, HB_Glyph *glyphs, hb_uint32 *numGlyphs, HB_Bool rightToLeft)
+{
+ QFontEngine *fe = (QFontEngine *)font->userData;
+
+ QVarLengthGlyphLayoutArray qglyphs(*numGlyphs);
+
+ QTextEngine::ShaperFlags shaperFlags(QTextEngine::GlyphIndicesOnly);
+ if (rightToLeft)
+ shaperFlags |= QTextEngine::RightToLeft;
+
+ int nGlyphs = *numGlyphs;
+ bool result = fe->stringToCMap(reinterpret_cast<const QChar *>(string), length, &qglyphs, &nGlyphs, shaperFlags);
+ *numGlyphs = nGlyphs;
+ if (!result)
+ return false;
+
+ for (hb_uint32 i = 0; i < *numGlyphs; ++i)
+ glyphs[i] = qglyphs.glyphs[i];
+
+ return true;
+}
+
+static void hb_getAdvances(HB_Font font, const HB_Glyph *glyphs, hb_uint32 numGlyphs, HB_Fixed *advances, int flags)
+{
+ QFontEngine *fe = (QFontEngine *)font->userData;
+
+ QVarLengthGlyphLayoutArray qglyphs(numGlyphs);
+
+ for (hb_uint32 i = 0; i < numGlyphs; ++i)
+ qglyphs.glyphs[i] = glyphs[i];
+
+ fe->recalcAdvances(&qglyphs, flags & HB_ShaperFlag_UseDesignMetrics ? QFlags<QTextEngine::ShaperFlag>(QTextEngine::DesignMetrics) : QFlags<QTextEngine::ShaperFlag>(0));
+
+ for (hb_uint32 i = 0; i < numGlyphs; ++i)
+ advances[i] = qglyphs.advances_x[i].value();
+}
+
+static HB_Bool hb_canRender(HB_Font font, const HB_UChar16 *string, hb_uint32 length)
+{
+ QFontEngine *fe = (QFontEngine *)font->userData;
+ return fe->canRender(reinterpret_cast<const QChar *>(string), length);
+}
+
+static void hb_getGlyphMetrics(HB_Font font, HB_Glyph glyph, HB_GlyphMetrics *metrics)
+{
+ QFontEngine *fe = (QFontEngine *)font->userData;
+ glyph_metrics_t m = fe->boundingBox(glyph);
+ metrics->x = m.x.value();
+ metrics->y = m.y.value();
+ metrics->width = m.width.value();
+ metrics->height = m.height.value();
+ metrics->xOffset = m.xoff.value();
+ metrics->yOffset = m.yoff.value();
+}
+
+static HB_Fixed hb_getFontMetric(HB_Font font, HB_FontMetric metric)
+{
+ if (metric == HB_FontAscent) {
+ QFontEngine *fe = (QFontEngine *)font->userData;
+ return fe->ascent().value();
+ }
+ return 0;
+}
+
+HB_Error QFontEngine::getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints)
+{
+ (void)glyph;
+ (void)flags;
+ (void)point;
+ (void)xpos;
+ (void)ypos;
+ (void)nPoints;
+ return HB_Err_Not_Covered;
+}
+
+static HB_Error hb_getPointInOutline(HB_Font font, HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints)
+{
+ QFontEngine *fe = (QFontEngine *)font->userData;
+ return fe->getPointInOutline(glyph, flags, point, xpos, ypos, nPoints);
+}
+
+static const HB_FontClass hb_fontClass = {
+ hb_stringToGlyphs, hb_getAdvances, hb_canRender, hb_getPointInOutline,
+ hb_getGlyphMetrics, hb_getFontMetric
+};
+
+static HB_Error hb_getSFntTable(void *font, HB_Tag tableTag, HB_Byte *buffer, HB_UInt *length)
+{
+ QFontEngine *fe = (QFontEngine *)font;
+ if (!fe->getSfntTableData(tableTag, buffer, length))
+ return HB_Err_Invalid_Argument;
+ return HB_Err_Ok;
+}
+
+
+
+QFontEngine::QFontEngine()
+ : QObject()
+{
+ ref = 0;
+ cache_count = 0;
+ fsType = 0;
+ symbol = false;
+ memset(&hbFont, 0, sizeof(hbFont));
+ hbFont.klass = &hb_fontClass;
+ hbFont.userData = this;
+
+ hbFace = 0;
+ glyphFormat = -1;
+}
+
+QFontEngine::~QFontEngine()
+{
+ for (GlyphPointerHash::iterator it = m_glyphPointerHash.begin(), end = m_glyphPointerHash.end();
+ it != end; ++it) {
+ for (QList<QFontEngineGlyphCache*>::iterator it2 = it.value().begin(), end2 = it.value().end();
+ it2 != end2; ++it2)
+ delete *it2;
+ }
+ m_glyphPointerHash.clear();
+ for (GlyphIntHash::iterator it = m_glyphIntHash.begin(), end = m_glyphIntHash.end();
+ it != end; ++it) {
+ for (QList<QFontEngineGlyphCache*>::iterator it2 = it.value().begin(), end2 = it.value().end();
+ it2 != end2; ++it2)
+ delete *it2;
+ }
+ m_glyphIntHash.clear();
+ qHBFreeFace(hbFace);
+}
+
+QFixed QFontEngine::lineThickness() const
+{
+
+ int score = fontDef.weight * fontDef.pixelSize;
+ int lw = score / 700;
+
+
+ if (lw < 2 && score >= 1050) lw = 2;
+ if (lw == 0) lw = 1;
+
+ return lw;
+}
+
+QFixed QFontEngine::underlinePosition() const
+{
+ return ((lineThickness() * 2) + 3) / 6;
+}
+
+HB_Font QFontEngine::harfbuzzFont() const
+{
+ if (!hbFont.x_ppem) {
+ QFixed emSquare = emSquareSize();
+ hbFont.x_ppem = fontDef.pixelSize;
+ hbFont.y_ppem = fontDef.pixelSize * fontDef.stretch / 100;
+ hbFont.x_scale = (QFixed(hbFont.x_ppem * (1 << 16)) / emSquare).value();
+ hbFont.y_scale = (QFixed(hbFont.y_ppem * (1 << 16)) / emSquare).value();
+ }
+ return &hbFont;
+}
+
+HB_Face QFontEngine::harfbuzzFace() const
+{
+ if (!hbFace)
+ hbFace = qHBNewFace(const_cast<QFontEngine *>(this), hb_getSFntTable);
+ return hbFace;
+}
+
+glyph_metrics_t QFontEngine::boundingBox(glyph_t glyph, const QTransform &matrix)
+{
+ glyph_metrics_t metrics = boundingBox(glyph);
+
+ if (matrix.type() > QTransform::TxTranslate) {
+ return metrics.transformed(matrix);
+ }
+ return metrics;
+}
+
+QFixed QFontEngine::xHeight() const
+{
+ QGlyphLayoutArray<8> glyphs;
+ int nglyphs = 7;
+ QChar x((ushort)'x');
+ stringToCMap(&x, 1, &glyphs, &nglyphs, QTextEngine::GlyphIndicesOnly);
+
+ glyph_metrics_t bb = const_cast<QFontEngine *>(this)->boundingBox(glyphs.glyphs[0]);
+ return bb.height;
+}
+
+QFixed QFontEngine::averageCharWidth() const
+{
+ QGlyphLayoutArray<8> glyphs;
+ int nglyphs = 7;
+ QChar x((ushort)'x');
+ stringToCMap(&x, 1, &glyphs, &nglyphs, QTextEngine::GlyphIndicesOnly);
+
+ glyph_metrics_t bb = const_cast<QFontEngine *>(this)->boundingBox(glyphs.glyphs[0]);
+ return bb.xoff;
+}
+
+
+void QFontEngine::getGlyphPositions(const QGlyphLayout &glyphs, const QTransform &matrix, QTextItem::RenderFlags flags,
+ QVarLengthArray<glyph_t> &glyphs_out, QVarLengthArray<QFixedPoint> &positions)
+{
+ QFixed xpos;
+ QFixed ypos;
+
+ const bool transform = matrix.m11() != 1.
+ || matrix.m12() != 0.
+ || matrix.m21() != 0.
+ || matrix.m22() != 1.;
+ if (!transform) {
+ xpos = QFixed::fromReal(matrix.dx());
+ ypos = QFixed::fromReal(matrix.dy());
+ }
+
+ int current = 0;
+ if (flags & QTextItem::RightToLeft) {
+ int i = glyphs.numGlyphs;
+ int totalKashidas = 0;
+ while(i--) {
+ xpos += glyphs.advances_x[i] + QFixed::fromFixed(glyphs.justifications[i].space_18d6);
+ ypos += glyphs.advances_y[i];
+ totalKashidas += glyphs.justifications[i].nKashidas;
+ }
+ positions.resize(glyphs.numGlyphs+totalKashidas);
+ glyphs_out.resize(glyphs.numGlyphs+totalKashidas);
+
+ i = 0;
+ while(i < glyphs.numGlyphs) {
+ if (glyphs.attributes[i].dontPrint) {
+ ++i;
+ continue;
+ }
+ xpos -= glyphs.advances_x[i];
+ ypos -= glyphs.advances_y[i];
+
+ QFixed gpos_x = xpos + glyphs.offsets[i].x;
+ QFixed gpos_y = ypos + glyphs.offsets[i].y;
+ if (transform) {
+ QPointF gpos(gpos_x.toReal(), gpos_y.toReal());
+ gpos = gpos * matrix;
+ gpos_x = QFixed::fromReal(gpos.x());
+ gpos_y = QFixed::fromReal(gpos.y());
+ }
+ positions[current].x = gpos_x;
+ positions[current].y = gpos_y;
+ glyphs_out[current] = glyphs.glyphs[i];
+ ++current;
+ if (glyphs.justifications[i].nKashidas) {
+ QChar ch(0x640);
+ QGlyphLayoutArray<8> g;
+ int nglyphs = 7;
+ stringToCMap(&ch, 1, &g, &nglyphs, 0);
+ for (uint k = 0; k < glyphs.justifications[i].nKashidas; ++k) {
+ xpos -= g.advances_x[0];
+ ypos -= g.advances_y[0];
+
+ QFixed gpos_x = xpos + glyphs.offsets[i].x;
+ QFixed gpos_y = ypos + glyphs.offsets[i].y;
+ if (transform) {
+ QPointF gpos(gpos_x.toReal(), gpos_y.toReal());
+ gpos = gpos * matrix;
+ gpos_x = QFixed::fromReal(gpos.x());
+ gpos_y = QFixed::fromReal(gpos.y());
+ }
+ positions[current].x = gpos_x;
+ positions[current].y = gpos_y;
+ glyphs_out[current] = g.glyphs[0];
+ ++current;
+ }
+ } else {
+ xpos -= QFixed::fromFixed(glyphs.justifications[i].space_18d6);
+ }
+ ++i;
+ }
+ } else {
+ positions.resize(glyphs.numGlyphs);
+ glyphs_out.resize(glyphs.numGlyphs);
+ int i = 0;
+ if (!transform) {
+ while (i < glyphs.numGlyphs) {
+ if (!glyphs.attributes[i].dontPrint) {
+ positions[current].x = xpos + glyphs.offsets[i].x;
+ positions[current].y = ypos + glyphs.offsets[i].y;
+ glyphs_out[current] = glyphs.glyphs[i];
+ xpos += glyphs.advances_x[i] + QFixed::fromFixed(glyphs.justifications[i].space_18d6);
+ ypos += glyphs.advances_y[i];
+ ++current;
+ }
+ ++i;
+ }
+ } else {
+ positions.resize(glyphs.numGlyphs);
+ glyphs_out.resize(glyphs.numGlyphs);
+ int i = 0;
+ while (i < glyphs.numGlyphs) {
+ if (!glyphs.attributes[i].dontPrint) {
+ QFixed gpos_x = xpos + glyphs.offsets[i].x;
+ QFixed gpos_y = ypos + glyphs.offsets[i].y;
+ QPointF gpos(gpos_x.toReal(), gpos_y.toReal());
+ gpos = gpos * matrix;
+ positions[current].x = QFixed::fromReal(gpos.x());
+ positions[current].y = QFixed::fromReal(gpos.y());
+ glyphs_out[current] = glyphs.glyphs[i];
+ xpos += glyphs.advances_x[i] + QFixed::fromFixed(glyphs.justifications[i].space_18d6);
+ ypos += glyphs.advances_y[i];
+ ++current;
+ }
+ ++i;
+ }
+ }
+ }
+ positions.resize(current);
+ glyphs_out.resize(current);
+ qt_noop();
+}
+
+
+glyph_metrics_t QFontEngine::tightBoundingBox(const QGlyphLayout &glyphs)
+{
+ glyph_metrics_t overall;
+
+ QFixed ymax = 0;
+ QFixed xmax = 0;
+ for (int i = 0; i < glyphs.numGlyphs; i++) {
+ glyph_metrics_t bb = boundingBox(glyphs.glyphs[i]);
+ QFixed x = overall.xoff + glyphs.offsets[i].x + bb.x;
+ QFixed y = overall.yoff + glyphs.offsets[i].y + bb.y;
+ overall.x = qMin(overall.x, x);
+ overall.y = qMin(overall.y, y);
+ xmax = qMax(xmax, x + bb.width);
+ ymax = qMax(ymax, y + bb.height);
+ overall.xoff += bb.xoff;
+ overall.yoff += bb.yoff;
+ }
+ overall.height = qMax(overall.height, ymax - overall.y);
+ overall.width = xmax - overall.x;
+
+ return overall;
+}
+
+
+void QFontEngine::addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path,
+ QTextItem::RenderFlags flags)
+{
+ if (!glyphs.numGlyphs)
+ return;
+
+ QVarLengthArray<QFixedPoint> positions;
+ QVarLengthArray<glyph_t> positioned_glyphs;
+ QTransform matrix;
+ matrix.translate(x, y);
+ getGlyphPositions(glyphs, matrix, flags, positioned_glyphs, positions);
+ addGlyphsToPath(positioned_glyphs.data(), positions.data(), positioned_glyphs.size(), path, flags);
+}
+
+#define GRID(x,y) grid[(y)*(w+1) + (x)]
+#define SET(x,y) (*(image_data + (y)*bpl + ((x) >> 3)) & (0x80 >> ((x) & 7)))
+
+enum { EdgeRight = 0x1,
+ EdgeDown = 0x2,
+ EdgeLeft = 0x4,
+ EdgeUp = 0x8
+};
+
+static void collectSingleContour(qreal x0, qreal y0, uint *grid, int x, int y, int w, int h, QPainterPath *path)
+{
+ (void)h;;
+
+ path->moveTo(x + x0, y + y0);
+ while (grid[(y)*(w+1) + (x)]) {
+ if (grid[(y)*(w+1) + (x)] & EdgeRight) {
+ while (grid[(y)*(w+1) + (x)] & EdgeRight) {
+ grid[(y)*(w+1) + (x)] &= ~EdgeRight;
+ ++x;
+ }
+ qt_noop();
+ path->lineTo(x + x0, y + y0);
+ continue;
+ }
+ if (grid[(y)*(w+1) + (x)] & EdgeDown) {
+ while (grid[(y)*(w+1) + (x)] & EdgeDown) {
+ grid[(y)*(w+1) + (x)] &= ~EdgeDown;
+ ++y;
+ }
+ qt_noop();
+ path->lineTo(x + x0, y + y0);
+ continue;
+ }
+ if (grid[(y)*(w+1) + (x)] & EdgeLeft) {
+ while (grid[(y)*(w+1) + (x)] & EdgeLeft) {
+ grid[(y)*(w+1) + (x)] &= ~EdgeLeft;
+ --x;
+ }
+ qt_noop();
+ path->lineTo(x + x0, y + y0);
+ continue;
+ }
+ if (grid[(y)*(w+1) + (x)] & EdgeUp) {
+ while (grid[(y)*(w+1) + (x)] & EdgeUp) {
+ grid[(y)*(w+1) + (x)] &= ~EdgeUp;
+ --y;
+ }
+ qt_noop();
+ path->lineTo(x + x0, y + y0);
+ continue;
+ }
+ }
+ path->closeSubpath();
+}
+
+void qt_addBitmapToPath(qreal x0, qreal y0, const uchar *image_data, int bpl, int w, int h, QPainterPath *path)
+{
+ uint *grid = new uint[(w+1)*(h+1)];
+
+ for (int y = 0; y <= h; ++y) {
+ for (int x = 0; x <= w; ++x) {
+ bool topLeft = (x == 0)|(y == 0) ? false : (*(image_data + (y - 1)*bpl + ((x - 1) >> 3)) & (0x80 >> ((x - 1) & 7)));
+ bool topRight = (x == w)|(y == 0) ? false : (*(image_data + (y - 1)*bpl + ((x) >> 3)) & (0x80 >> ((x) & 7)));
+ bool bottomLeft = (x == 0)|(y == h) ? false : (*(image_data + (y)*bpl + ((x - 1) >> 3)) & (0x80 >> ((x - 1) & 7)));
+ bool bottomRight = (x == w)|(y == h) ? false : (*(image_data + (y)*bpl + ((x) >> 3)) & (0x80 >> ((x) & 7)));
+
+ grid[(y)*(w+1) + (x)] = 0;
+ if ((!topRight) & bottomRight)
+ grid[(y)*(w+1) + (x)] |= EdgeRight;
+ if ((!bottomRight) & bottomLeft)
+ grid[(y)*(w+1) + (x)] |= EdgeDown;
+ if ((!bottomLeft) & topLeft)
+ grid[(y)*(w+1) + (x)] |= EdgeLeft;
+ if ((!topLeft) & topRight)
+ grid[(y)*(w+1) + (x)] |= EdgeUp;
+ }
+ }
+
+
+ for (int y = 0; y < h; ++y) {
+ for (int x = 0; x < w; ++x) {
+ if (!grid[(y)*(w+1) + (x)])
+ continue;
+
+ collectSingleContour(x0, y0, grid, x, y, w, h, path);
+ }
+ }
+ delete [] grid;
+}
+
+#undef GRID
+#undef SET
+
+
+void QFontEngine::addBitmapFontToPath(qreal x, qreal y, const QGlyphLayout &glyphs,
+ QPainterPath *path, QTextItem::RenderFlags flags)
+{
+
+ (void)flags;;
+ QFixed advanceX = QFixed::fromReal(x);
+ QFixed advanceY = QFixed::fromReal(y);
+ for (int i=0; i < glyphs.numGlyphs; ++i) {
+ glyph_metrics_t metrics = boundingBox(glyphs.glyphs[i]);
+ if (metrics.width.value() == 0 || metrics.height.value() == 0) {
+ advanceX += glyphs.advances_x[i];
+ advanceY += glyphs.advances_y[i];
+ continue;
+ }
+ const QImage alphaMask = alphaMapForGlyph(glyphs.glyphs[i]);
+
+ const int w = alphaMask.width();
+ const int h = alphaMask.height();
+ const int srcBpl = alphaMask.bytesPerLine();
+ QImage bitmap;
+ if (alphaMask.depth() == 1) {
+ bitmap = alphaMask;
+ } else {
+ bitmap = QImage(w, h, QImage::Format_Mono);
+ const uchar *imageData = alphaMask.bits();
+ const int destBpl = bitmap.bytesPerLine();
+ uchar *bitmapData = bitmap.bits();
+
+ for (int yi = 0; yi < h; ++yi) {
+ const uchar *src = imageData + yi*srcBpl;
+ uchar *dst = bitmapData + yi*destBpl;
+ for (int xi = 0; xi < w; ++xi) {
+ const int byte = xi / 8;
+ const int bit = xi % 8;
+ if (bit == 0)
+ dst[byte] = 0;
+ if (src[xi])
+ dst[byte] |= 128 >> bit;
+ }
+ }
+ }
+ const uchar *bitmap_data = bitmap.bits();
+ QFixedPoint offset = glyphs.offsets[i];
+ advanceX += offset.x;
+ advanceY += offset.y;
+ qt_addBitmapToPath((advanceX + metrics.x).toReal(), (advanceY + metrics.y).toReal(), bitmap_data, bitmap.bytesPerLine(), w, h, path);
+ advanceX += glyphs.advances_x[i];
+ advanceY += glyphs.advances_y[i];
+ }
+}
+
+void QFontEngine::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nGlyphs,
+ QPainterPath *path, QTextItem::RenderFlags flags)
+{
+ qreal x = positions[0].x.toReal();
+ qreal y = positions[0].y.toReal();
+ QVarLengthGlyphLayoutArray g(nGlyphs);
+
+ for (int i = 0; i < nGlyphs; ++i) {
+ g.glyphs[i] = glyphs[i];
+ if (i < nGlyphs - 1) {
+ g.advances_x[i] = positions[i+1].x - positions[i].x;
+ g.advances_y[i] = positions[i+1].y - positions[i].y;
+ } else {
+ g.advances_x[i] = QFixed::fromReal(maxCharWidth());
+ g.advances_y[i] = 0;
+ }
+ }
+
+ addBitmapFontToPath(x, y, g, path, flags);
+}
+
+QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &t)
+{
+ QImage i = alphaMapForGlyph(glyph);
+ if (t.type() > QTransform::TxTranslate)
+ i = i.transformed(t);
+ qt_noop();
+ return i;
+}
+
+QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, int , const QTransform &t)
+{
+ QImage alphaMask = alphaMapForGlyph(glyph, t);
+ QImage rgbMask(alphaMask.width(), alphaMask.height(), QImage::Format_RGB32);
+
+ for (int y=0; y<alphaMask.height(); ++y) {
+ uint *dst = (uint *) rgbMask.scanLine(y);
+ uchar *src = (uchar *) alphaMask.scanLine(y);
+ for (int x=0; x<alphaMask.width(); ++x)
+ dst[x] = qRgb(src[x], src[x], src[x]);
+ }
+
+ return rgbMask;
+}
+
+
+void QFontEngine::removeGlyphFromCache(glyph_t)
+{
+}
+
+QFontEngine::Properties QFontEngine::properties() const
+{
+ Properties p;
+
+ QByteArray psname = QPdf::stripSpecialCharacters(fontDef.family.toUtf8());
+
+
+
+ psname += '-';
+ psname += QByteArray::number(fontDef.style);
+ psname += '-';
+ psname += QByteArray::number(fontDef.weight);
+
+ p.postscriptName = psname;
+ p.ascent = ascent();
+ p.descent = descent();
+ p.leading = leading();
+ p.emSquare = p.ascent;
+ p.boundingBox = QRectF(0, -p.ascent.toReal(), maxCharWidth(), (p.ascent + p.descent).toReal());
+ p.italicAngle = 0;
+ p.capHeight = p.ascent;
+ p.lineWidth = lineThickness();
+ return p;
+}
+
+void QFontEngine::getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics)
+{
+ *metrics = boundingBox(glyph);
+ QFixedPoint p;
+ p.x = 0;
+ p.y = 0;
+ addGlyphsToPath(&glyph, &p, 1, path, QFlag(0));
+}
+
+QByteArray QFontEngine::getSfntTable(uint tag) const
+{
+ QByteArray table;
+ uint len = 0;
+ if (!getSfntTableData(tag, 0, &len))
+ return table;
+ if (!len)
+ return table;
+ table.resize(len);
+ if (!getSfntTableData(tag, reinterpret_cast<uchar *>(table.data()), &len))
+ return QByteArray();
+ return table;
+}
+
+void QFontEngine::expireGlyphCache()
+{
+ if (m_glyphCacheQueue.count() > 10) {
+ QFontEngineGlyphCache *old = m_glyphCacheQueue.takeFirst();
+
+ for (GlyphPointerHash::iterator i = m_glyphPointerHash.begin(); i != m_glyphPointerHash.end(); ++i) {
+ QList<QFontEngineGlyphCache *> list = i.value();
+ if (list.removeAll(old)) {
+ if (list.isEmpty())
+ m_glyphPointerHash.remove(i.key());
+ else
+ m_glyphPointerHash.insert(i.key(), list);
+ break;
+ }
+ }
+ for (GlyphIntHash::iterator i = m_glyphIntHash.begin(); i != m_glyphIntHash.end(); ++i) {
+ QList<QFontEngineGlyphCache *> list = i.value();
+ if (list.removeAll(old)) {
+ if (list.isEmpty())
+ m_glyphIntHash.remove(i.key());
+ else
+ m_glyphIntHash.insert(i.key(), list);
+ break;
+ }
+ }
+ delete old;
+ }
+}
+
+void QFontEngine::setGlyphCache(void *key, QFontEngineGlyphCache *data)
+{
+ qt_noop();
+ QList<QFontEngineGlyphCache*> items = m_glyphPointerHash.value(key);
+
+ for (QList<QFontEngineGlyphCache*>::iterator it = items.begin(), end = items.end(); it != end; ++it) {
+ QFontEngineGlyphCache *c = *it;
+ if (qtransform_equals_no_translate(c->m_transform, data->m_transform)) {
+ if (c == data)
+ return;
+ items.removeAll(c);
+ delete c;
+ break;
+ }
+ }
+ items.append(data);
+ m_glyphPointerHash.insert(key, items);
+
+ m_glyphCacheQueue.append(data);
+ expireGlyphCache();
+}
+
+void QFontEngine::setGlyphCache(QFontEngineGlyphCache::Type key, QFontEngineGlyphCache *data)
+{
+ qt_noop();
+ QList<QFontEngineGlyphCache*> items = m_glyphIntHash.value(key);
+
+ for (QList<QFontEngineGlyphCache*>::iterator it = items.begin(), end = items.end(); it != end; ++it) {
+ QFontEngineGlyphCache *c = *it;
+ if (qtransform_equals_no_translate(c->m_transform, data->m_transform)) {
+ if (c == data)
+ return;
+ items.removeAll(c);
+ delete c;
+ break;
+ }
+ }
+ items.append(data);
+ m_glyphIntHash.insert(key, items);
+
+ m_glyphCacheQueue.append(data);
+ expireGlyphCache();
+}
+
+QFontEngineGlyphCache *QFontEngine::glyphCache(void *key, const QTransform &transform) const
+{
+ QList<QFontEngineGlyphCache*> items = m_glyphPointerHash.value(key);
+
+ for (QList<QFontEngineGlyphCache*>::iterator it = items.begin(), end = items.end(); it != end; ++it) {
+ QFontEngineGlyphCache *c = *it;
+ if (qtransform_equals_no_translate(c->m_transform, transform)) {
+ m_glyphCacheQueue.removeAll(c);
+ m_glyphCacheQueue.append(c);
+ return c;
+ }
+ }
+ return 0;
+}
+
+QFontEngineGlyphCache *QFontEngine::glyphCache(QFontEngineGlyphCache::Type key, const QTransform &transform) const
+{
+ QList<QFontEngineGlyphCache*> items = m_glyphIntHash.value(key);
+
+ for (QList<QFontEngineGlyphCache*>::iterator it = items.begin(), end = items.end(); it != end; ++it) {
+ QFontEngineGlyphCache *c = *it;
+ if (qtransform_equals_no_translate(c->m_transform, transform)) {
+ m_glyphCacheQueue.removeAll(c);
+ m_glyphCacheQueue.append(c);
+ return c;
+ }
+ }
+ return 0;
+}
+
+
+static inline QFixed kerning(int left, int right, const QFontEngine::KernPair *pairs, int numPairs)
+{
+ uint left_right = (left << 16) + right;
+
+ left = 0, right = numPairs - 1;
+ while (left <= right) {
+ int middle = left + ( ( right - left ) >> 1 );
+
+ if(pairs[middle].left_right == left_right)
+ return pairs[middle].adjust;
+
+ if (pairs[middle].left_right < left_right)
+ left = middle + 1;
+ else
+ right = middle - 1;
+ }
+ return 0;
+}
+
+void QFontEngine::doKerning(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const
+{
+ int numPairs = kerning_pairs.size();
+ if(!numPairs)
+ return;
+
+ const KernPair *pairs = kerning_pairs.constData();
+
+ if(flags & QTextEngine::DesignMetrics) {
+ for(int i = 0; i < glyphs->numGlyphs - 1; ++i)
+ glyphs->advances_x[i] += kerning(glyphs->glyphs[i], glyphs->glyphs[i+1] , pairs, numPairs);
+ } else {
+ for(int i = 0; i < glyphs->numGlyphs - 1; ++i)
+ glyphs->advances_x[i] += qRound(kerning(glyphs->glyphs[i], glyphs->glyphs[i+1] , pairs, numPairs));
+ }
+}
+
+void QFontEngine::loadKerningPairs(QFixed scalingFactor)
+{
+ kerning_pairs.clear();
+
+ QByteArray tab = getSfntTable(( (((quint32)('k')) << 24) | (((quint32)('e')) << 16) | (((quint32)('r')) << 8) | ((quint32)('n')) ));
+ if (tab.isEmpty())
+ return;
+
+ const uchar *table = reinterpret_cast<const uchar *>(tab.constData());
+
+ unsigned short version = qFromBigEndian<quint16>(table);
+ if (version != 0) {
+
+ return;
+ }
+
+ unsigned short numTables = qFromBigEndian<quint16>(table + 2);
+ {
+ int offset = 4;
+ for(int i = 0; i < numTables; ++i) {
+ if (offset + 6 > tab.size()) {
+
+ goto end;
+ }
+ const uchar *header = table + offset;
+
+ ushort version = qFromBigEndian<quint16>(header);
+ ushort length = qFromBigEndian<quint16>(header+2);
+ ushort coverage = qFromBigEndian<quint16>(header+4);
+
+ if(version == 0 && coverage == 0x0001) {
+ if (offset + length > tab.size()) {
+
+ goto end;
+ }
+ const uchar *data = table + offset + 6;
+
+ ushort nPairs = qFromBigEndian<quint16>(data);
+ if(nPairs * 6 + 8 > length - 6) {
+
+
+ goto end;
+ }
+
+ int off = 8;
+ for(int i = 0; i < nPairs; ++i) {
+ QFontEngine::KernPair p;
+ p.left_right = (((uint)qFromBigEndian<quint16>(data+off)) << 16) + qFromBigEndian<quint16>(data+off+2);
+ p.adjust = QFixed(((int)(short)qFromBigEndian<quint16>(data+off+4))) / scalingFactor;
+ kerning_pairs.append(p);
+ off += 6;
+ }
+ }
+ offset += length;
+ }
+ }
+end:
+ qSort(kerning_pairs);
+
+
+}
+
+
+
+
+
+
+
+int QFontEngine::glyphCount() const
+{
+ QByteArray maxpTable = getSfntTable(( (((quint32)('m')) << 24) | (((quint32)('a')) << 16) | (((quint32)('x')) << 8) | ((quint32)('p')) ));
+ if (maxpTable.size() < 6)
+ return 0;
+ return qFromBigEndian<quint16>(reinterpret_cast<const uchar *>(maxpTable.constData() + 4));
+}
+
+const uchar *QFontEngine::getCMap(const uchar *table, uint tableSize, bool *isSymbolFont, int *cmapSize)
+{
+ const uchar *header = table;
+ if (tableSize < 4)
+ return 0;
+
+ const uchar *endPtr = table + tableSize;
+
+
+ if (qFromBigEndian<quint16>(header) != 0)
+ return 0;
+
+ unsigned short numTables = qFromBigEndian<quint16>(header + 2);
+ const uchar *maps = table + 4;
+ if (maps + 8 * numTables > endPtr)
+ return 0;
+
+ int tableToUse = -1;
+ int score = 0;
+ for (int n = 0; n < numTables; ++n) {
+ const quint16 platformId = qFromBigEndian<quint16>(maps + 8 * n);
+ const quint16 platformSpecificId = qFromBigEndian<quint16>(maps + 8 * n + 2);
+ switch (platformId) {
+ case 0:
+ if (score < 4 &&
+ (platformSpecificId == 0 ||
+ platformSpecificId == 2 ||
+ platformSpecificId == 3)) {
+ tableToUse = n;
+ score = 4;
+ } else if (score < 3 && platformSpecificId == 1) {
+ tableToUse = n;
+ score = 3;
+ }
+ break;
+ case 1:
+ if (score < 2 && platformSpecificId == 0) {
+ tableToUse = n;
+ score = 2;
+ }
+ break;
+ case 3:
+ switch (platformSpecificId) {
+ case 0:
+ if (score < 1) {
+ tableToUse = n;
+ score = 1;
+ }
+ break;
+ case 1:
+ if (score < 5) {
+ tableToUse = n;
+ score = 5;
+ }
+ break;
+ case 0xa:
+ if (score < 6) {
+ tableToUse = n;
+ score = 6;
+ }
+ break;
+ default:
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ if(tableToUse < 0)
+ return 0;
+ *isSymbolFont = (score == 1);
+
+ unsigned int unicode_table = qFromBigEndian<quint32>(maps + 8*tableToUse + 4);
+
+ if (!unicode_table || unicode_table + 8 > tableSize)
+ return 0;
+
+
+ header = table + unicode_table;
+
+ unsigned short format = qFromBigEndian<quint16>(header);
+ unsigned int length;
+ if(format < 8)
+ length = qFromBigEndian<quint16>(header + 2);
+ else
+ length = qFromBigEndian<quint32>(header + 4);
+
+ if (table + unicode_table + length > endPtr)
+ return 0;
+ *cmapSize = length;
+ return table + unicode_table;
+}
+
+quint32 QFontEngine::getTrueTypeGlyphIndex(const uchar *cmap, uint unicode)
+{
+ unsigned short format = qFromBigEndian<quint16>(cmap);
+ if (format == 0) {
+ if (unicode < 256)
+ return (int) *(cmap+6+unicode);
+ } else if (format == 4) {
+
+
+
+
+
+ if(unicode >= 0xffff)
+ return 0;
+ quint16 segCountX2 = qFromBigEndian<quint16>(cmap + 6);
+ const unsigned char *ends = cmap + 14;
+ quint16 endIndex = 0;
+ int i = 0;
+ for (; i < segCountX2/2 && (endIndex = qFromBigEndian<quint16>(ends + 2*i)) < unicode; i++) {}
+
+ const unsigned char *idx = ends + segCountX2 + 2 + 2*i;
+ quint16 startIndex = qFromBigEndian<quint16>(idx);
+
+ if (startIndex > unicode)
+ return 0;
+
+ idx += segCountX2;
+ qint16 idDelta = (qint16)qFromBigEndian<quint16>(idx);
+ idx += segCountX2;
+ quint16 idRangeoffset_t = (quint16)qFromBigEndian<quint16>(idx);
+
+ quint16 glyphIndex;
+ if (idRangeoffset_t) {
+ quint16 id = qFromBigEndian<quint16>(idRangeoffset_t + 2*(unicode - startIndex) + idx);
+ if (id)
+ glyphIndex = (idDelta + id) % 0x10000;
+ else
+ glyphIndex = 0;
+ } else {
+ glyphIndex = (idDelta + unicode) % 0x10000;
+ }
+ return glyphIndex;
+ } else if (format == 6) {
+ quint16 tableSize = qFromBigEndian<quint16>(cmap + 2);
+
+ quint16 firstCode6 = qFromBigEndian<quint16>(cmap + 6);
+ if (unicode < firstCode6)
+ return 0;
+
+ quint16 entryCount6 = qFromBigEndian<quint16>(cmap + 8);
+ if (entryCount6 * 2 + 10 > tableSize)
+ return 0;
+
+ quint16 sentinel6 = firstCode6 + entryCount6;
+ if (unicode >= sentinel6)
+ return 0;
+
+ quint16 entryIndex6 = unicode - firstCode6;
+ return qFromBigEndian<quint16>(cmap + 10 + (entryIndex6 * 2));
+ } else if (format == 12) {
+ quint32 nGroups = qFromBigEndian<quint32>(cmap + 12);
+
+ cmap += 16;
+
+ int left = 0, right = nGroups - 1;
+ while (left <= right) {
+ int middle = left + ( ( right - left ) >> 1 );
+
+ quint32 startCharCode = qFromBigEndian<quint32>(cmap + 12*middle);
+ if(unicode < startCharCode)
+ right = middle - 1;
+ else {
+ quint32 endCharCode = qFromBigEndian<quint32>(cmap + 12*middle + 4);
+ if(unicode <= endCharCode)
+ return qFromBigEndian<quint32>(cmap + 12*middle + 8) + unicode - startCharCode;
+ left = middle + 1;
+ }
+ }
+ } else {
+ qDebug("cmap table of format %d not implemented", format);
+ }
+
+ return 0;
+}
+
+
+
+
+
+QFontEngineBox::QFontEngineBox(int size)
+ : _size(size)
+{
+ cache_cost = sizeof(QFontEngineBox);
+}
+
+QFontEngineBox::~QFontEngineBox()
+{
+}
+
+bool QFontEngineBox::stringToCMap(const QChar *, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags) const
+{
+ if (*nglyphs < len) {
+ *nglyphs = len;
+ return false;
+ }
+
+ for (int i = 0; i < len; i++) {
+ glyphs->glyphs[i] = 0;
+ glyphs->advances_x[i] = _size;
+ glyphs->advances_y[i] = 0;
+ }
+
+ *nglyphs = len;
+ glyphs->numGlyphs = len;
+ return true;
+}
+
+void QFontEngineBox::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags) const
+{
+ for (int i = 0; i < glyphs->numGlyphs; i++) {
+ glyphs->advances_x[i] = _size;
+ glyphs->advances_y[i] = 0;
+ }
+}
+
+void QFontEngineBox::addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags)
+{
+ if (!glyphs.numGlyphs)
+ return;
+
+ QVarLengthArray<QFixedPoint> positions;
+ QVarLengthArray<glyph_t> positioned_glyphs;
+ QTransform matrix;
+ matrix.translate(x, y - _size);
+ getGlyphPositions(glyphs, matrix, flags, positioned_glyphs, positions);
+
+ QSize s(_size - 3, _size - 3);
+ for (int k = 0; k < positions.size(); k++)
+ path->addRect(QRectF(positions[k].toPointF(), s));
+}
+
+glyph_metrics_t QFontEngineBox::boundingBox(const QGlyphLayout &glyphs)
+{
+ glyph_metrics_t overall;
+ overall.width = _size*glyphs.numGlyphs;
+ overall.height = _size;
+ overall.xoff = overall.width;
+ return overall;
+}
+
+
+void QFontEngineBox::draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &ti)
+{
+ if (!ti.glyphs.numGlyphs)
+ return;
+
+
+ QSize s(_size - 3, _size - 3);
+
+ QVarLengthArray<QFixedPoint> positions;
+ QVarLengthArray<glyph_t> glyphs;
+ QTransform matrix;
+ matrix.translate(x, y - _size);
+ ti.fontEngine->getGlyphPositions(ti.glyphs, matrix, ti.flags, glyphs, positions);
+ if (glyphs.size() == 0)
+ return;
+
+
+ QPainter *painter = p->painter();
+ painter->save();
+ painter->setBrush(Qt::NoBrush);
+ QPen pen = painter->pen();
+ pen.setWidthF(lineThickness().toReal());
+ painter->setPen(pen);
+ for (int k = 0; k < positions.size(); k++)
+ painter->drawRect(QRectF(positions[k].toPointF(), s));
+ painter->restore();
+}
+
+
+glyph_metrics_t QFontEngineBox::boundingBox(glyph_t)
+{
+ return glyph_metrics_t(0, -_size, _size, _size, _size, 0);
+}
+
+
+
+QFixed QFontEngineBox::ascent() const
+{
+ return _size;
+}
+
+QFixed QFontEngineBox::descent() const
+{
+ return 0;
+}
+
+QFixed QFontEngineBox::leading() const
+{
+ QFixed l = _size * QFixed::fromReal(qreal(0.15));
+ return l.ceil();
+}
+
+qreal QFontEngineBox::maxCharWidth() const
+{
+ return _size;
+}
+# 1204 "/home/test/work/cruise/checkouts/uclinux-dist/lib/qt-embedded/qt-embedded-linux-opensource-src-4.5.1/src/gui/text/qfontengine.cpp"
+const char *QFontEngineBox::name() const
+{
+ return "null";
+}
+
+bool QFontEngineBox::canRender(const QChar *, int)
+{
+ return true;
+}
+
+QFontEngine::Type QFontEngineBox::type() const
+{
+ return Box;
+}
+
+QImage QFontEngineBox::alphaMapForGlyph(glyph_t)
+{
+ QImage image(_size, _size, QImage::Format_Indexed8);
+ QVector<QRgb> colors(256);
+ for (int i=0; i<256; ++i)
+ colors[i] = qRgba(0, 0, 0, i);
+ image.setColorTable(colors);
+ image.fill(0);
+
+
+ for (int i=2; i <= _size-3; ++i) {
+ image.setPixel(i, 2, 255);
+ image.setPixel(i, _size-3, 255);
+ image.setPixel(2, i, 255);
+ image.setPixel(_size-3, i, 255);
+ }
+ return image;
+}
+
+
+
+
+
+static inline uchar highByte(glyph_t glyph)
+{ return glyph >> 24; }
+
+
+static inline glyph_t stripped(glyph_t glyph)
+{ return glyph & 0x00ffffff; }
+
+QFontEngineMulti::QFontEngineMulti(int engineCount)
+{
+ engines.fill(0, engineCount);
+ cache_cost = 0;
+}
+
+QFontEngineMulti::~QFontEngineMulti()
+{
+ for (int i = 0; i < engines.size(); ++i) {
+ QFontEngine *fontEngine = engines.at(i);
+ if (fontEngine) {
+ fontEngine->ref.deref();
+ if (fontEngine->cache_count == 0 && fontEngine->ref == 0)
+ delete fontEngine;
+ }
+ }
+}
+
+bool QFontEngineMulti::stringToCMap(const QChar *str, int len,
+ QGlyphLayout *glyphs, int *nglyphs,
+ QTextEngine::ShaperFlags flags) const
+{
+ int ng = *nglyphs;
+ if (!engine(0)->stringToCMap(str, len, glyphs, &ng, flags))
+ return false;
+
+ int glyph_pos = 0;
+ for (int i = 0; i < len; ++i) {
+ bool surrogate = (str[i].unicode() >= 0xd800 && str[i].unicode() < 0xdc00 && i < len-1
+ && str[i+1].unicode() >= 0xdc00 && str[i+1].unicode() < 0xe000);
+ if (glyphs->glyphs[glyph_pos] == 0) {
+
+ QGlyphLayoutInstance tmp = glyphs->instance(glyph_pos);
+ for (int x = 1; x < engines.size(); ++x) {
+ QFontEngine *engine = engines.at(x);
+ if (!engine) {
+ const_cast<QFontEngineMulti *>(this)->loadEngine(x);
+ engine = engines.at(x);
+ }
+ qt_noop();
+ if (engine->type() == Box)
+ continue;
+ glyphs->advances_x[glyph_pos] = glyphs->advances_y[glyph_pos] = 0;
+ glyphs->offsets[glyph_pos] = QFixedPoint();
+ int num = 2;
+ QGlyphLayout offs = glyphs->mid(glyph_pos, num);
+ engine->stringToCMap(str + i, surrogate ? 2 : 1, &offs, &num, flags);
+ qt_noop();
+ if (glyphs->glyphs[glyph_pos]) {
+
+ glyphs->glyphs[glyph_pos] |= (x << 24);
+ break;
+ }
+ }
+
+ if (!glyphs->glyphs[glyph_pos]) {
+ glyphs->setInstance(glyph_pos, tmp);
+ }
+ }
+ if (surrogate)
+ ++i;
+ ++glyph_pos;
+ }
+
+ *nglyphs = ng;
+ glyphs->numGlyphs = ng;
+ return true;
+}
+
+glyph_metrics_t QFontEngineMulti::boundingBox(const QGlyphLayout &glyphs)
+{
+ if (glyphs.numGlyphs <= 0)
+ return glyph_metrics_t();
+
+ glyph_metrics_t overall;
+
+ int which = highByte(glyphs.glyphs[0]);
+ int start = 0;
+ int end, i;
+ for (end = 0; end < glyphs.numGlyphs; ++end) {
+ const int e = highByte(glyphs.glyphs[end]);
+ if (e == which)
+ continue;
+
+
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = stripped(glyphs.glyphs[i]);
+
+
+ const glyph_metrics_t gm = engine(which)->boundingBox(glyphs.mid(start, end - start));
+
+ overall.x = qMin(overall.x, gm.x);
+ overall.y = qMin(overall.y, gm.y);
+ overall.width = overall.xoff + gm.width;
+ overall.height = qMax(overall.height + overall.y, gm.height + gm.y) -
+ qMin(overall.y, gm.y);
+ overall.xoff += gm.xoff;
+ overall.yoff += gm.yoff;
+
+
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = hi | glyphs.glyphs[i];
+
+
+ start = end;
+ which = e;
+ }
+
+
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = stripped(glyphs.glyphs[i]);
+
+
+ const glyph_metrics_t gm = engine(which)->boundingBox(glyphs.mid(start, end - start));
+
+ overall.x = qMin(overall.x, gm.x);
+ overall.y = qMin(overall.y, gm.y);
+ overall.width = overall.xoff + gm.width;
+ overall.height = qMax(overall.height + overall.y, gm.height + gm.y) -
+ qMin(overall.y, gm.y);
+ overall.xoff += gm.xoff;
+ overall.yoff += gm.yoff;
+
+
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = hi | glyphs.glyphs[i];
+
+ return overall;
+}
+
+void QFontEngineMulti::addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs,
+ QPainterPath *path, QTextItem::RenderFlags flags)
+{
+ if (glyphs.numGlyphs <= 0)
+ return;
+
+ int which = highByte(glyphs.glyphs[0]);
+ int start = 0;
+ int end, i;
+ if (flags & QTextItem::RightToLeft) {
+ for (int gl = 0; gl < glyphs.numGlyphs; gl++) {
+ x += glyphs.advances_x[gl].toReal();
+ y += glyphs.advances_y[gl].toReal();
+ }
+ }
+ for (end = 0; end < glyphs.numGlyphs; ++end) {
+ const int e = highByte(glyphs.glyphs[end]);
+ if (e == which)
+ continue;
+
+ if (flags & QTextItem::RightToLeft) {
+ for (i = start; i < end; ++i) {
+ x -= glyphs.advances_x[i].toReal();
+ y -= glyphs.advances_y[i].toReal();
+ }
+ }
+
+
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = stripped(glyphs.glyphs[i]);
+ engine(which)->addOutlineToPath(x, y, glyphs.mid(start, end - start), path, flags);
+
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = hi | glyphs.glyphs[i];
+
+ if (!(flags & QTextItem::RightToLeft)) {
+ for (i = start; i < end; ++i) {
+ x += glyphs.advances_x[i].toReal();
+ y += glyphs.advances_y[i].toReal();
+ }
+ }
+
+
+ start = end;
+ which = e;
+ }
+
+ if (flags & QTextItem::RightToLeft) {
+ for (i = start; i < end; ++i) {
+ x -= glyphs.advances_x[i].toReal();
+ y -= glyphs.advances_y[i].toReal();
+ }
+ }
+
+
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = stripped(glyphs.glyphs[i]);
+
+ engine(which)->addOutlineToPath(x, y, glyphs.mid(start, end - start), path, flags);
+
+
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = hi | glyphs.glyphs[i];
+}
+
+void QFontEngineMulti::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const
+{
+ if (glyphs->numGlyphs <= 0)
+ return;
+
+ int which = highByte(glyphs->glyphs[0]);
+ int start = 0;
+ int end, i;
+ for (end = 0; end < glyphs->numGlyphs; ++end) {
+ const int e = highByte(glyphs->glyphs[end]);
+ if (e == which)
+ continue;
+
+
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = stripped(glyphs->glyphs[i]);
+
+ QGlyphLayout offs = glyphs->mid(start, end - start);
+ engine(which)->recalcAdvances(&offs, flags);
+
+
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = hi | glyphs->glyphs[i];
+
+
+ start = end;
+ which = e;
+ }
+
+
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = stripped(glyphs->glyphs[i]);
+
+ QGlyphLayout offs = glyphs->mid(start, end - start);
+ engine(which)->recalcAdvances(&offs, flags);
+
+
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = hi | glyphs->glyphs[i];
+}
+
+void QFontEngineMulti::doKerning(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const
+{
+ if (glyphs->numGlyphs <= 0)
+ return;
+
+ int which = highByte(glyphs->glyphs[0]);
+ int start = 0;
+ int end, i;
+ for (end = 0; end < glyphs->numGlyphs; ++end) {
+ const int e = highByte(glyphs->glyphs[end]);
+ if (e == which)
+ continue;
+
+
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = stripped(glyphs->glyphs[i]);
+
+ QGlyphLayout offs = glyphs->mid(start, end - start);
+ engine(which)->doKerning(&offs, flags);
+
+
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = hi | glyphs->glyphs[i];
+
+
+ start = end;
+ which = e;
+ }
+
+
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = stripped(glyphs->glyphs[i]);
+
+ QGlyphLayout offs = glyphs->mid(start, end - start);
+ engine(which)->doKerning(&offs, flags);
+
+
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = hi | glyphs->glyphs[i];
+}
+
+glyph_metrics_t QFontEngineMulti::boundingBox(glyph_t glyph)
+{
+ const int which = highByte(glyph);
+ qt_noop();
+ return engine(which)->boundingBox(stripped(glyph));
+}
+
+QFixed QFontEngineMulti::ascent() const
+{ return engine(0)->ascent(); }
+
+QFixed QFontEngineMulti::descent() const
+{ return engine(0)->descent(); }
+
+QFixed QFontEngineMulti::leading() const
+{
+ return engine(0)->leading();
+}
+
+QFixed QFontEngineMulti::xHeight() const
+{
+ return engine(0)->xHeight();
+}
+
+QFixed QFontEngineMulti::averageCharWidth() const
+{
+ return engine(0)->averageCharWidth();
+}
+
+QFixed QFontEngineMulti::lineThickness() const
+{
+ return engine(0)->lineThickness();
+}
+
+QFixed QFontEngineMulti::underlinePosition() const
+{
+ return engine(0)->underlinePosition();
+}
+
+qreal QFontEngineMulti::maxCharWidth() const
+{
+ return engine(0)->maxCharWidth();
+}
+
+qreal QFontEngineMulti::minLeftBearing() const
+{
+ return engine(0)->minLeftBearing();
+}
+
+qreal QFontEngineMulti::minRightBearing() const
+{
+ return engine(0)->minRightBearing();
+}
+
+bool QFontEngineMulti::canRender(const QChar *string, int len)
+{
+ if (engine(0)->canRender(string, len))
+ return true;
+
+ QVarLengthGlyphLayoutArray glyphs(len);
+ int nglyphs = len;
+ if (stringToCMap(string, len, &glyphs, &nglyphs, QTextEngine::GlyphIndicesOnly) == false) {
+ glyphs.resize(nglyphs);
+ stringToCMap(string, len, &glyphs, &nglyphs, QTextEngine::GlyphIndicesOnly);
+ }
+
+ bool allExist = true;
+ for (int i = 0; i < nglyphs; i++) {
+ if (!glyphs.glyphs[i]) {
+ allExist = false;
+ break;
+ }
+ }
+
+ return allExist;
+}
+
+QFontEngine *QFontEngineMulti::engine(int at) const
+{
+ qt_noop();
+ return engines.at(at);
+}
+
+QImage QFontEngineMulti::alphaMapForGlyph(glyph_t)
+{
+ qt_noop();
+ return QImage();
+}
+
+
+
--- /dev/null
+typedef long int ptrdiff_t;
+typedef long unsigned int size_t;
+typedef signed char qint8;
+typedef unsigned char quint8;
+typedef short qint16;
+typedef unsigned short quint16;
+typedef int qint32;
+typedef unsigned int quint32;
+typedef long long qint64;
+typedef unsigned long long quint64;
+typedef qint64 qlonglong;
+typedef quint64 qulonglong;
+template <int> class QUintForSize { private: typedef void Type; };
+template <> class QUintForSize<4> { public: typedef quint32 Type; };
+template <> class QUintForSize<8> { public: typedef quint64 Type; };
+template <typename T> class QUintForType : public QUintForSize<sizeof(T)> { };
+typedef QUintForType<void *>::Type quintptr;
+template <int> class QIntForSize { private: typedef void Type; };
+template <> class QIntForSize<4> { public: typedef qint32 Type; };
+template <> class QIntForSize<8> { public: typedef qint64 Type; };
+template <typename T> class QIntForType : public QIntForSize<sizeof(T)> { };
+typedef QIntForType<void *>::Type qptrdiff;
+typedef unsigned char uchar;
+typedef unsigned short ushort;
+typedef unsigned int uint;
+typedef unsigned long ulong;
+typedef int QNoImplicitBoolCast;
+typedef double qreal;
+template <typename T>
+inline T qAbs(const T &t) { return t >= 0 ? t : -t; }
+inline int qRound(qreal d)
+{ return d >= 0.0 ? int(d + 0.5) : int(d - int(d-1) + 0.5) + int(d-1); }
+inline qint64 qRound64(qreal d)
+{ return d >= 0.0 ? qint64(d + 0.5) : qint64(d - qint64(d-1) + 0.5) + qint64(d-1); }
+template <typename T>
+inline const T &qMin(const T &a, const T &b) { if (a < b) return a; return b; }
+template <typename T>
+inline const T &qMax(const T &a, const T &b) { if (a < b) return b; return a; }
+template <typename T>
+inline const T &qBound(const T &min, const T &val, const T &max)
+{ return qMax(min, qMin(max, val)); }
+class QDataStream;
+class QString;
+class __attribute__((visibility("default"))) QSysInfo {
+public:
+ enum Sizes {
+ WordSize = (sizeof(void *)<<3)
+ };
+ enum Endian {
+ BigEndian,
+ LittleEndian
+ , ByteOrder = LittleEndian
+ };
+};
+__attribute__((visibility("default"))) const char *qVersion();
+__attribute__((visibility("default"))) bool qSharedBuild();
+__attribute__((visibility("default"))) void qDebug(const char *, ...)
+ __attribute__ ((format (printf, 1, 2)))
+;
+__attribute__((visibility("default"))) void qWarning(const char *, ...)
+ __attribute__ ((format (printf, 1, 2)))
+;
+class QString;
+__attribute__((visibility("default"))) QString qt_error_string(int errorCode = -1);
+__attribute__((visibility("default"))) void qCritical(const char *, ...)
+ __attribute__ ((format (printf, 1, 2)))
+;
+__attribute__((visibility("default"))) void qFatal(const char *, ...)
+ __attribute__ ((format (printf, 1, 2)))
+;
+__attribute__((visibility("default"))) void qErrnoWarning(int code, const char *msg, ...);
+__attribute__((visibility("default"))) void qErrnoWarning(const char *msg, ...);
+class QDebug;
+class QNoDebug;
+__attribute__((visibility("default"))) inline QDebug qDebug();
+__attribute__((visibility("default"))) inline QDebug qWarning();
+__attribute__((visibility("default"))) inline QDebug qCritical();
+inline void qt_noop() {}
+__attribute__((visibility("default"))) void qt_assert(const char *assertion, const char *file, int line);
+__attribute__((visibility("default"))) void qt_assert_x(const char *where, const char *what, const char *file, int line);
+__attribute__((visibility("default"))) void qt_check_pointer(const char *, int);
+enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg = QtCriticalMsg };
+__attribute__((visibility("default"))) void qt_message_output(QtMsgType, const char *buf);
+typedef void (*QtMsgHandler)(QtMsgType, const char *);
+__attribute__((visibility("default"))) QtMsgHandler qInstallMsgHandler(QtMsgHandler);
+template <typename T> class QBasicAtomicPointer;
+template <typename T>
+class QGlobalStatic
+{
+public:
+ QBasicAtomicPointer<T> pointer;
+ bool destroyed;
+};
+template <typename T>
+class QGlobalStaticDeleter
+{
+public:
+ QGlobalStatic<T> &globalStatic;
+ QGlobalStaticDeleter(QGlobalStatic<T> &_globalStatic)
+ : globalStatic(_globalStatic)
+ { }
+ inline ~QGlobalStaticDeleter()
+ {
+ delete globalStatic.pointer;
+ globalStatic.pointer = 0;
+ globalStatic.destroyed = true;
+ }
+};
+class QBool
+{
+ bool b;
+public:
+ inline explicit QBool(bool B) : b(B) {}
+ inline operator const void *() const
+ { return b ? static_cast<const void *>(this) : static_cast<const void *>(0); }
+};
+inline bool operator==(QBool b1, bool b2) { return !b1 == !b2; }
+inline bool operator==(bool b1, QBool b2) { return !b1 == !b2; }
+inline bool operator==(QBool b1, QBool b2) { return !b1 == !b2; }
+inline bool operator!=(QBool b1, bool b2) { return !b1 != !b2; }
+inline bool operator!=(bool b1, QBool b2) { return !b1 != !b2; }
+inline bool operator!=(QBool b1, QBool b2) { return !b1 != !b2; }
+static inline bool qFuzzyCompare(double p1, double p2)
+{
+ return (qAbs(p1 - p2) <= 0.000000000001 * qMin(qAbs(p1), qAbs(p2)));
+}
+static inline bool qFuzzyCompare(float p1, float p2)
+{
+ return (qAbs(p1 - p2) <= 0.00001f * qMin(qAbs(p1), qAbs(p2)));
+}
+static inline bool qIsNull(double d)
+{
+ union U {
+ double d;
+ quint64 u;
+ };
+ U val;
+ val.d = d;
+ return val.u == quint64(0);
+}
+static inline bool qIsNull(float f)
+{
+ union U {
+ float f;
+ quint32 u;
+ };
+ U val;
+ val.f = f;
+ return val.u == 0u;
+}
+template <typename T> inline bool qIsDetached(T &) { return true; }
+template <typename T>
+class QTypeInfo
+{
+public:
+ enum {
+ isPointer = false,
+ isComplex = true,
+ isStatic = true,
+ isLarge = (sizeof(T)>sizeof(void*)),
+ isDummy = false
+ };
+};
+template <typename T>
+class QTypeInfo<T*>
+{
+public:
+ enum {
+ isPointer = true,
+ isComplex = false,
+ isStatic = false,
+ isLarge = false,
+ isDummy = false
+ };
+};
+enum {
+ Q_COMPLEX_TYPE = 0,
+ Q_PRIMITIVE_TYPE = 0x1,
+ Q_STATIC_TYPE = 0,
+ Q_MOVABLE_TYPE = 0x2,
+ Q_DUMMY_TYPE = 0x4
+};
+template <> class QTypeInfo<bool> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(bool)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "bool"; } };
+template <> class QTypeInfo<char> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(char)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "char"; } };
+template <> class QTypeInfo<signed char> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(signed char)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "signed char"; } };
+template <> class QTypeInfo<uchar> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(uchar)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "uchar"; } };
+template <> class QTypeInfo<short> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(short)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "short"; } };
+template <> class QTypeInfo<ushort> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(ushort)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "ushort"; } };
+template <> class QTypeInfo<int> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(int)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "int"; } };
+template <> class QTypeInfo<uint> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(uint)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "uint"; } };
+template <> class QTypeInfo<long> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(long)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "long"; } };
+template <> class QTypeInfo<ulong> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(ulong)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "ulong"; } };
+template <> class QTypeInfo<qint64> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(qint64)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "qint64"; } };
+template <> class QTypeInfo<quint64> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(quint64)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "quint64"; } };
+template <> class QTypeInfo<float> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(float)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "float"; } };
+template <> class QTypeInfo<double> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(double)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "double"; } };
+template <> class QTypeInfo<long double> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(long double)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "long double"; } };
+__attribute__((visibility("default"))) void *qMalloc(size_t size);
+__attribute__((visibility("default"))) void qFree(void *ptr);
+__attribute__((visibility("default"))) void *qRealloc(void *ptr, size_t size);
+__attribute__((visibility("default"))) void *qMemCopy(void *dest, const void *src, size_t n);
+__attribute__((visibility("default"))) void *qMemSet(void *dest, int c, size_t n);
+class __attribute__((visibility("default"))) QFlag
+{
+ int i;
+public:
+ inline QFlag(int i);
+ inline operator int() const { return i; }
+};
+inline QFlag::QFlag(int ai) : i(ai) {}
+class __attribute__((visibility("default"))) QIncompatibleFlag
+{
+ int i;
+public:
+ inline explicit QIncompatibleFlag(int i);
+ inline operator int() const { return i; }
+};
+inline QIncompatibleFlag::QIncompatibleFlag(int ai) : i(ai) {}
+template<typename Enum>
+class QFlags
+{
+ typedef void **Zero;
+ int i;
+public:
+ typedef Enum enum_type;
+ inline QFlags(const QFlags &f) : i(f.i) {}
+ inline QFlags(Enum f) : i(f) {}
+ inline QFlags(Zero = 0) : i(0) {}
+ inline QFlags(QFlag f) : i(f) {}
+ inline QFlags &operator=(const QFlags &f) { i = f.i; return *this; }
+ inline QFlags &operator&=(int mask) { i &= mask; return *this; }
+ inline QFlags &operator&=(uint mask) { i &= mask; return *this; }
+ inline QFlags &operator|=(QFlags f) { i |= f.i; return *this; }
+ inline QFlags &operator|=(Enum f) { i |= f; return *this; }
+ inline QFlags &operator^=(QFlags f) { i ^= f.i; return *this; }
+ inline QFlags &operator^=(Enum f) { i ^= f; return *this; }
+ inline operator int() const { return i; }
+ inline QFlags operator|(QFlags f) const { QFlags g; g.i = i | f.i; return g; }
+ inline QFlags operator|(Enum f) const { QFlags g; g.i = i | f; return g; }
+ inline QFlags operator^(QFlags f) const { QFlags g; g.i = i ^ f.i; return g; }
+ inline QFlags operator^(Enum f) const { QFlags g; g.i = i ^ f; return g; }
+ inline QFlags operator&(int mask) const { QFlags g; g.i = i & mask; return g; }
+ inline QFlags operator&(uint mask) const { QFlags g; g.i = i & mask; return g; }
+ inline QFlags operator&(Enum f) const { QFlags g; g.i = i & f; return g; }
+ inline QFlags operator~() const { QFlags g; g.i = ~i; return g; }
+ inline bool operator!() const { return !i; }
+ inline bool testFlag(Enum f) const { return (i & f) == f; }
+};
+template <typename T>
+class QForeachContainer {
+public:
+ inline QForeachContainer(const T& t) : c(t), brk(0), i(c.begin()), e(c.end()) { }
+ const T c;
+ int brk;
+ typename T::const_iterator i, e;
+};
+class QByteArray;
+__attribute__((visibility("default"))) QByteArray qgetenv(const char *varName);
+__attribute__((visibility("default"))) bool qputenv(const char *varName, const QByteArray& value);
+inline int qIntCast(double f) { return int(f); }
+inline int qIntCast(float f) { return int(f); }
+__attribute__((visibility("default"))) void qsrand(uint seed);
+__attribute__((visibility("default"))) int qrand();
+enum QtValidLicenseForCoreModule { LicensedCore = true };
+enum QtValidLicenseForGuiModule { LicensedGui = true };
+enum QtValidLicenseForNetworkModule { LicensedNetwork = true };
+enum QtValidLicenseForOpenGLModule { LicensedOpenGL = true };
+enum QtValidLicenseForSqlModule { LicensedSql = true };
+enum QtValidLicenseForXmlModule { LicensedXml = true };
+enum QtValidLicenseForXmlPatternsModule { LicensedXmlPatterns = true };
+enum QtValidLicenseForHelpModule { LicensedHelp = true };
+enum QtValidLicenseForScriptModule { LicensedScript = true };
+enum QtValidLicenseForScriptToolsModule { LicensedScriptTools = true };
+enum QtValidLicenseForQt3SupportLightModule { LicensedQt3SupportLight = true };
+enum QtValidLicenseForQt3SupportModule { LicensedQt3Support = true };
+enum QtValidLicenseForSvgModule { LicensedSvg = true };
+enum QtValidLicenseForTestModule { LicensedTest = true };
+enum QtValidLicenseForDBusModule { LicensedDBus = true };
+typedef QtValidLicenseForCoreModule QtCoreModule;
+namespace QAlgorithmsPrivate {
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ void qSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan);
+template <typename RandomAccessIterator, typename T>
+inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy);
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ void qStableSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan);
+template <typename RandomAccessIterator, typename T>
+inline void qStableSortHelper(RandomAccessIterator, RandomAccessIterator, const T &);
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qLowerBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan);
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qUpperBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan);
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qBinaryFindHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan);
+}
+template <typename InputIterator, typename OutputIterator>
+inline OutputIterator qCopy(InputIterator begin, InputIterator end, OutputIterator dest)
+{
+ while (begin != end)
+ *dest++ = *begin++;
+ return dest;
+}
+template <typename BiIterator1, typename BiIterator2>
+inline BiIterator2 qCopyBackward(BiIterator1 begin, BiIterator1 end, BiIterator2 dest)
+{
+ while (begin != end)
+ *--dest = *--end;
+ return dest;
+}
+template <typename InputIterator1, typename InputIterator2>
+inline bool qEqual(InputIterator1 first1, InputIterator1 last1, InputIterator2 first2)
+{
+ for (; first1 != last1; ++first1, ++first2)
+ if (!(*first1 == *first2))
+ return false;
+ return true;
+}
+template <typename ForwardIterator, typename T>
+inline void qFill(ForwardIterator first, ForwardIterator last, const T &val)
+{
+ for (; first != last; ++first)
+ *first = val;
+}
+template <typename Container, typename T>
+inline void qFill(Container &container, const T &val)
+{
+ qFill(container.begin(), container.end(), val);
+}
+template <typename InputIterator, typename T>
+inline InputIterator qFind(InputIterator first, InputIterator last, const T &val)
+{
+ while (first != last && !(*first == val))
+ ++first;
+ return first;
+}
+template <typename Container, typename T>
+inline typename Container::const_iterator qFind(const Container &container, const T &val)
+{
+ return qFind(container.constBegin(), container.constEnd(), val);
+}
+template <typename InputIterator, typename T, typename Size>
+inline void qCount(InputIterator first, InputIterator last, const T &value, Size &n)
+{
+ for (; first != last; ++first)
+ if (*first == value)
+ ++n;
+}
+template <typename Container, typename T, typename Size>
+inline void qCount(const Container &container, const T &value, Size &n)
+{
+ qCount(container.constBegin(), container.constEnd(), value, n);
+}
+template <typename T>
+inline void qSwap(T &value1, T &value2)
+{
+ T t = value1;
+ value1 = value2;
+ value2 = t;
+}
+template <typename T>
+class qLess
+{
+public:
+ inline bool operator()(const T &t1, const T &t2) const
+ {
+ return (t1 < t2);
+ }
+};
+template <typename T>
+class qGreater
+{
+public:
+ inline bool operator()(const T &t1, const T &t2) const
+ {
+ return (t2 < t1);
+ }
+};
+template <typename RandomAccessIterator>
+inline void qSort(RandomAccessIterator start, RandomAccessIterator end)
+{
+ if (start != end)
+ QAlgorithmsPrivate::qSortHelper(start, end, *start);
+}
+template <typename RandomAccessIterator, typename LessThan>
+inline void qSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan)
+{
+ if (start != end)
+ QAlgorithmsPrivate::qSortHelper(start, end, *start, lessThan);
+}
+template<typename Container>
+inline void qSort(Container &c)
+{
+ if (!c.empty())
+ QAlgorithmsPrivate::qSortHelper(c.begin(), c.end(), *c.begin());
+}
+template <typename RandomAccessIterator>
+inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end)
+{
+ if (start != end)
+ QAlgorithmsPrivate::qStableSortHelper(start, end, *start);
+}
+template <typename RandomAccessIterator, typename LessThan>
+inline void qStableSort(RandomAccessIterator start, RandomAccessIterator end, LessThan lessThan)
+{
+ if (start != end)
+ QAlgorithmsPrivate::qStableSortHelper(start, end, *start, lessThan);
+}
+template<typename Container>
+inline void qStableSort(Container &c)
+{
+ if (!c.empty())
+ QAlgorithmsPrivate::qStableSortHelper(c.begin(), c.end(), *c.begin());
+}
+template <typename RandomAccessIterator, typename T>
+ RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value)
+{
+ RandomAccessIterator middle;
+ int n = end - begin;
+ int half;
+ while (n > 0) {
+ half = n >> 1;
+ middle = begin + half;
+ if (*middle < value) {
+ begin = middle + 1;
+ n -= half + 1;
+ } else {
+ n = half;
+ }
+ }
+ return begin;
+}
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qLowerBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
+{
+ return QAlgorithmsPrivate::qLowerBoundHelper(begin, end, value, lessThan);
+}
+template <typename Container, typename T>
+ typename Container::const_iterator qLowerBound(const Container &container, const T &value)
+{
+ return QAlgorithmsPrivate::qLowerBoundHelper(container.constBegin(), container.constEnd(), value, qLess<T>());
+}
+template <typename RandomAccessIterator, typename T>
+ RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value)
+{
+ RandomAccessIterator middle;
+ int n = end - begin;
+ int half;
+ while (n > 0) {
+ half = n >> 1;
+ middle = begin + half;
+ if (value < *middle) {
+ n = half;
+ } else {
+ begin = middle + 1;
+ n -= half + 1;
+ }
+ }
+ return begin;
+}
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qUpperBound(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
+{
+ return QAlgorithmsPrivate::qUpperBoundHelper(begin, end, value, lessThan);
+}
+template <typename Container, typename T>
+ typename Container::const_iterator qUpperBound(const Container &container, const T &value)
+{
+ return QAlgorithmsPrivate::qUpperBoundHelper(container.constBegin(), container.constEnd(), value, qLess<T>());
+}
+template <typename RandomAccessIterator, typename T>
+ RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value)
+{
+ qint64 l = 0;
+ qint64 r = end - begin - 1;
+ if (r < 0)
+ return end;
+ qint64 i = (l + r + 1) / 2;
+ while (r != l) {
+ if (value < begin[i])
+ r = i - 1;
+ else
+ l = i;
+ i = (l + r + 1) / 2;
+ }
+ if (begin[i] < value || value < begin[i])
+ return end;
+ else
+ return begin + i;
+}
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qBinaryFind(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
+{
+ return QAlgorithmsPrivate::qBinaryFindHelper(begin, end, value, lessThan);
+}
+template <typename Container, typename T>
+ typename Container::const_iterator qBinaryFind(const Container &container, const T &value)
+{
+ return QAlgorithmsPrivate::qBinaryFindHelper(container.constBegin(), container.constEnd(), value, qLess<T>());
+}
+template <typename ForwardIterator>
+ void qDeleteAll(ForwardIterator begin, ForwardIterator end)
+{
+ while (begin != end) {
+ delete *begin;
+ ++begin;
+ }
+}
+template <typename Container>
+inline void qDeleteAll(const Container &c)
+{
+ qDeleteAll(c.begin(), c.end());
+}
+namespace QAlgorithmsPrivate {
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ void qSortHelper(RandomAccessIterator start, RandomAccessIterator end, const T &t, LessThan lessThan)
+{
+top:
+ int span = end - start;
+ if (span < 2)
+ return;
+ --end;
+ RandomAccessIterator low = start, high = end - 1;
+ RandomAccessIterator pivot = start + span / 2;
+ if (lessThan(*end, *start))
+ qSwap(*end, *start);
+ if (span == 2)
+ return;
+ if (lessThan(*pivot, *start))
+ qSwap(*pivot, *start);
+ if (lessThan(*end, *pivot))
+ qSwap(*end, *pivot);
+ if (span == 3)
+ return;
+ qSwap(*pivot, *end);
+ while (low < high) {
+ while (low < high && lessThan(*low, *end))
+ ++low;
+ while (high > low && lessThan(*end, *high))
+ --high;
+ if (low < high) {
+ qSwap(*low, *high);
+ ++low;
+ --high;
+ } else {
+ break;
+ }
+ }
+ if (lessThan(*low, *end))
+ ++low;
+ qSwap(*end, *low);
+ qSortHelper(start, low, t, lessThan);
+ start = low + 1;
+ ++end;
+ goto top;
+}
+template <typename RandomAccessIterator, typename T>
+inline void qSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy)
+{
+ qSortHelper(begin, end, dummy, qLess<T>());
+}
+template <typename RandomAccessIterator>
+ void qReverse(RandomAccessIterator begin, RandomAccessIterator end)
+{
+ --end;
+ while (begin < end)
+ qSwap(*begin++, *end--);
+}
+template <typename RandomAccessIterator>
+ void qRotate(RandomAccessIterator begin, RandomAccessIterator middle, RandomAccessIterator end)
+{
+ qReverse(begin, middle);
+ qReverse(middle, end);
+ qReverse(begin, end);
+}
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ void qMerge(RandomAccessIterator begin, RandomAccessIterator pivot, RandomAccessIterator end, T &t, LessThan lessThan)
+{
+ const int len1 = pivot - begin;
+ const int len2 = end - pivot;
+ if (len1 == 0 || len2 == 0)
+ return;
+ if (len1 + len2 == 2) {
+ if (lessThan(*(begin + 1), *(begin)))
+ qSwap(*begin, *(begin + 1));
+ return;
+ }
+ RandomAccessIterator firstCut;
+ RandomAccessIterator secondCut;
+ int len2Half;
+ if (len1 > len2) {
+ const int len1Half = len1 / 2;
+ firstCut = begin + len1Half;
+ secondCut = qLowerBound(pivot, end, *firstCut, lessThan);
+ len2Half = secondCut - pivot;
+ } else {
+ len2Half = len2 / 2;
+ secondCut = pivot + len2Half;
+ firstCut = qUpperBound(begin, pivot, *secondCut, lessThan);
+ }
+ qRotate(firstCut, pivot, secondCut);
+ const RandomAccessIterator newPivot = firstCut + len2Half;
+ qMerge(begin, firstCut, newPivot, t, lessThan);
+ qMerge(newPivot, secondCut, end, t, lessThan);
+}
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ void qStableSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &t, LessThan lessThan)
+{
+ const int span = end - begin;
+ if (span < 2)
+ return;
+ const RandomAccessIterator middle = begin + span / 2;
+ qStableSortHelper(begin, middle, t, lessThan);
+ qStableSortHelper(middle, end, t, lessThan);
+ qMerge(begin, middle, end, t, lessThan);
+}
+template <typename RandomAccessIterator, typename T>
+inline void qStableSortHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &dummy)
+{
+ qStableSortHelper(begin, end, dummy, qLess<T>());
+}
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qLowerBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
+{
+ RandomAccessIterator middle;
+ int n = end - begin;
+ int half;
+ while (n > 0) {
+ half = n >> 1;
+ middle = begin + half;
+ if (lessThan(*middle, value)) {
+ begin = middle + 1;
+ n -= half + 1;
+ } else {
+ n = half;
+ }
+ }
+ return begin;
+}
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qUpperBoundHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
+{
+ RandomAccessIterator middle;
+ int n = end - begin;
+ int half;
+ while (n > 0) {
+ half = n >> 1;
+ middle = begin + half;
+ if (lessThan(value, *middle)) {
+ n = half;
+ } else {
+ begin = middle + 1;
+ n -= half + 1;
+ }
+ }
+ return begin;
+}
+template <typename RandomAccessIterator, typename T, typename LessThan>
+ RandomAccessIterator qBinaryFindHelper(RandomAccessIterator begin, RandomAccessIterator end, const T &value, LessThan lessThan)
+{
+ qint64 l = 0;
+ qint64 r = end - begin - 1;
+ if (r < 0)
+ return end;
+ qint64 i = (l + r + 1) / 2;
+ while (r != l) {
+ if (lessThan(value, begin[i]))
+ r = i - 1;
+ else
+ l = i;
+ i = (l + r + 1) / 2;
+ }
+ if (lessThan(begin[i], value) || lessThan(value, begin[i]))
+ return end;
+ else
+ return begin + i;
+}
+}
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class __attribute__((visibility("default"))) QBasicAtomicInt
+{
+public:
+ volatile int _q_value;
+ inline bool operator==(int value) const
+ {
+ return _q_value == value;
+ }
+ inline bool operator!=(int value) const
+ {
+ return _q_value != value;
+ }
+ inline bool operator!() const
+ {
+ return _q_value == 0;
+ }
+ inline operator int() const
+ {
+ return _q_value;
+ }
+ inline QBasicAtomicInt &operator=(int value)
+ {
+ _q_value = value;
+ return *this;
+ }
+ static bool isReferenceCountingNative();
+ static bool isReferenceCountingWaitFree();
+ bool ref();
+ bool deref();
+ static bool isTestAndSetNative();
+ static bool isTestAndSetWaitFree();
+ bool testAndSetRelaxed(int expectedValue, int newValue);
+ bool testAndSetAcquire(int expectedValue, int newValue);
+ bool testAndSetRelease(int expectedValue, int newValue);
+ bool testAndSetOrdered(int expectedValue, int newValue);
+ static bool isFetchAndStoreNative();
+ static bool isFetchAndStoreWaitFree();
+ int fetchAndStoreRelaxed(int newValue);
+ int fetchAndStoreAcquire(int newValue);
+ int fetchAndStoreRelease(int newValue);
+ int fetchAndStoreOrdered(int newValue);
+ static bool isFetchAndAddNative();
+ static bool isFetchAndAddWaitFree();
+ int fetchAndAddRelaxed(int valueToAdd);
+ int fetchAndAddAcquire(int valueToAdd);
+ int fetchAndAddRelease(int valueToAdd);
+ int fetchAndAddOrdered(int valueToAdd);
+};
+template <typename T>
+class QBasicAtomicPointer
+{
+public:
+ T * volatile _q_value;
+ inline bool operator==(T *value) const
+ {
+ return _q_value == value;
+ }
+ inline bool operator!=(T *value) const
+ {
+ return !operator==(value);
+ }
+ inline bool operator!() const
+ {
+ return operator==(0);
+ }
+ inline operator T *() const
+ {
+ return _q_value;
+ }
+ inline T *operator->() const
+ {
+ return _q_value;
+ }
+ inline QBasicAtomicPointer<T> &operator=(T *value)
+ {
+ _q_value = value;
+ return *this;
+ }
+ static bool isTestAndSetNative();
+ static bool isTestAndSetWaitFree();
+ bool testAndSetRelaxed(T *expectedValue, T *newValue);
+ bool testAndSetAcquire(T *expectedValue, T *newValue);
+ bool testAndSetRelease(T *expectedValue, T *newValue);
+ bool testAndSetOrdered(T *expectedValue, T *newValue);
+ static bool isFetchAndStoreNative();
+ static bool isFetchAndStoreWaitFree();
+ T *fetchAndStoreRelaxed(T *newValue);
+ T *fetchAndStoreAcquire(T *newValue);
+ T *fetchAndStoreRelease(T *newValue);
+ T *fetchAndStoreOrdered(T *newValue);
+ static bool isFetchAndAddNative();
+ static bool isFetchAndAddWaitFree();
+ T *fetchAndAddRelaxed(qptrdiff valueToAdd);
+ T *fetchAndAddAcquire(qptrdiff valueToAdd);
+ T *fetchAndAddRelease(qptrdiff valueToAdd);
+ T *fetchAndAddOrdered(qptrdiff valueToAdd);
+};
+inline bool QBasicAtomicInt::isReferenceCountingNative()
+{ return false; }
+inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
+{ return false; }
+inline bool QBasicAtomicInt::isTestAndSetNative()
+{ return false; }
+inline bool QBasicAtomicInt::isTestAndSetWaitFree()
+{ return false; }
+inline bool QBasicAtomicInt::isFetchAndStoreNative()
+{ return false; }
+inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
+{ return false; }
+inline bool QBasicAtomicInt::isFetchAndAddNative()
+{ return false; }
+inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
+{ return false; }
+template <typename T>
+inline bool QBasicAtomicPointer<T>::isTestAndSetNative()
+{ return false; }
+template <typename T>
+inline bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
+{ return false; }
+template <typename T>
+inline bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
+{ return false; }
+template <typename T>
+inline bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
+{ return false; }
+template <typename T>
+inline bool QBasicAtomicPointer<T>::isFetchAndAddNative()
+{ return false; }
+template <typename T>
+inline bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
+{ return false; }
+__attribute__((visibility("default"))) bool QBasicAtomicInt_testAndSetOrdered(volatile int *, int, int);
+__attribute__((visibility("default"))) int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *, int);
+__attribute__((visibility("default"))) int QBasicAtomicInt_fetchAndAddOrdered(volatile int *, int);
+__attribute__((visibility("default"))) bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *, void *, void *);
+__attribute__((visibility("default"))) void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *, void *);
+__attribute__((visibility("default"))) void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *, qptrdiff);
+inline bool QBasicAtomicInt::ref()
+{
+ return QBasicAtomicInt_fetchAndAddOrdered(&_q_value, 1) != -1;
+}
+inline bool QBasicAtomicInt::deref()
+{
+ return QBasicAtomicInt_fetchAndAddOrdered(&_q_value, -1) != 1;
+}
+inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
+{
+ return QBasicAtomicInt_testAndSetOrdered(&_q_value, expectedValue, newValue);
+}
+inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
+{
+ return testAndSetOrdered(expectedValue, newValue);
+}
+inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
+{
+ return testAndSetOrdered(expectedValue, newValue);
+}
+inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
+{
+ return testAndSetOrdered(expectedValue, newValue);
+}
+inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
+{
+ return QBasicAtomicInt_fetchAndStoreOrdered(&_q_value, newValue);
+}
+inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
+{
+ return fetchAndStoreOrdered(newValue);
+}
+inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
+{
+ return fetchAndStoreOrdered(newValue);
+}
+inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
+{
+ return fetchAndStoreOrdered(newValue);
+}
+inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
+{
+ return QBasicAtomicInt_fetchAndAddOrdered(&_q_value, valueToAdd);
+}
+inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
+{
+ return fetchAndAddOrdered(valueToAdd);
+}
+inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
+{
+ return fetchAndAddOrdered(valueToAdd);
+}
+inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
+{
+ return fetchAndAddOrdered(valueToAdd);
+}
+template <typename T>
+inline bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
+{
+ union { T * volatile * typed; void * volatile * voidp; } pointer;
+ pointer.typed = &_q_value;
+ return QBasicAtomicPointer_testAndSetOrdered(pointer.voidp, expectedValue, newValue);
+}
+template <typename T>
+inline bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
+{
+ return testAndSetOrdered(expectedValue, newValue);
+}
+template <typename T>
+inline bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
+{
+ return testAndSetOrdered(expectedValue, newValue);
+}
+template <typename T>
+inline bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
+{
+ return testAndSetOrdered(expectedValue, newValue);
+}
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
+{
+ union { T * volatile * typed; void * volatile * voidp; } pointer;
+ union { T *typed; void *voidp; } returnValue;
+ pointer.typed = &_q_value;
+ returnValue.voidp = QBasicAtomicPointer_fetchAndStoreOrdered(pointer.voidp, newValue);
+ return returnValue.typed;
+}
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
+{
+ return fetchAndStoreOrdered(newValue);
+}
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
+{
+ return fetchAndStoreOrdered(newValue);
+}
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
+{
+ return fetchAndStoreOrdered(newValue);
+}
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
+{
+ union { T * volatile *typed; void * volatile *voidp; } pointer;
+ union { T *typed; void *voidp; } returnValue;
+ pointer.typed = &_q_value;
+ returnValue.voidp = QBasicAtomicPointer_fetchAndAddOrdered(pointer.voidp, valueToAdd * sizeof(T));
+ return returnValue.typed;
+}
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
+{
+ return fetchAndAddOrdered(valueToAdd);
+}
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
+{
+ return fetchAndAddOrdered(valueToAdd);
+}
+template <typename T>
+inline T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
+{
+ return fetchAndAddOrdered(valueToAdd);
+}
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class __attribute__((visibility("default"))) QAtomicInt : public QBasicAtomicInt
+{
+public:
+ inline QAtomicInt(int value = 0)
+ {
+ _q_value = value;
+ }
+ inline QAtomicInt(const QAtomicInt &other)
+ {
+ _q_value = other._q_value;
+ }
+ inline QAtomicInt &operator=(int value)
+ {
+ (void) QBasicAtomicInt::operator=(value);
+ return *this;
+ }
+ inline QAtomicInt &operator=(const QAtomicInt &other)
+ {
+ (void) QBasicAtomicInt::operator=(other);
+ return *this;
+ }
+};
+template <typename T>
+class QAtomicPointer : public QBasicAtomicPointer<T>
+{
+public:
+ inline QAtomicPointer(T *value = 0)
+ {
+ QBasicAtomicPointer<T>::_q_value = value;
+ }
+ inline QAtomicPointer(const QAtomicPointer<T> &other)
+ {
+ QBasicAtomicPointer<T>::_q_value = other._q_value;
+ }
+ inline QAtomicPointer<T> &operator=(T *value)
+ {
+ (void) QBasicAtomicPointer<T>::operator=(value);
+ return *this;
+ }
+ inline QAtomicPointer<T> &operator=(const QAtomicPointer<T> &other)
+ {
+ (void) QBasicAtomicPointer<T>::operator=(other);
+ return *this;
+ }
+};
+template <typename T>
+inline void qAtomicAssign(T *&d, T *x)
+{
+ if (d == x)
+ return;
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+}
+template <typename T>
+inline void qAtomicDetach(T *&d)
+{
+ if (d->ref == 1)
+ return;
+ T *x = d;
+ d = new T(*d);
+ if (!x->ref.deref())
+ delete x;
+}
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QString;
+struct QLatin1Char
+{
+public:
+ inline explicit QLatin1Char(char c) : ch(c) {}
+ inline char toLatin1() const { return ch; }
+ inline ushort unicode() const { return ushort(uchar(ch)); }
+private:
+ char ch;
+};
+class __attribute__((visibility("default"))) QChar {
+public:
+ QChar();
+ __attribute__ ((__deprecated__)) QChar(char c);
+ __attribute__ ((__deprecated__)) QChar(uchar c);
+ QChar(QLatin1Char ch);
+ QChar(uchar c, uchar r);
+ inline QChar(ushort rc) : ucs(rc){}
+ QChar(short rc);
+ QChar(uint rc);
+ QChar(int rc);
+ enum SpecialCharacter {
+ Null = 0x0000,
+ Nbsp = 0x00a0,
+ ReplacementCharacter = 0xfffd,
+ ObjectReplacementCharacter = 0xfffc,
+ ByteOrderMark = 0xfeff,
+ ByteOrderSwapped = 0xfffe,
+ ParagraphSeparator = 0x2029,
+ LineSeparator = 0x2028
+ };
+ QChar(SpecialCharacter sc);
+ enum Category
+ {
+ NoCategory,
+ Mark_NonSpacing,
+ Mark_SpacingCombining,
+ Mark_Enclosing,
+ Number_DecimalDigit,
+ Number_Letter,
+ Number_Other,
+ Separator_Space,
+ Separator_Line,
+ Separator_Paragraph,
+ Other_Control,
+ Other_Format,
+ Other_Surrogate,
+ Other_PrivateUse,
+ Other_NotAssigned,
+ Letter_Uppercase,
+ Letter_Lowercase,
+ Letter_Titlecase,
+ Letter_Modifier,
+ Letter_Other,
+ Punctuation_Connector,
+ Punctuation_Dash,
+ Punctuation_Open,
+ Punctuation_Close,
+ Punctuation_InitialQuote,
+ Punctuation_FinalQuote,
+ Punctuation_Other,
+ Symbol_Math,
+ Symbol_Currency,
+ Symbol_Modifier,
+ Symbol_Other,
+ Punctuation_Dask = Punctuation_Dash
+ };
+ enum Direction
+ {
+ DirL, DirR, DirEN, DirES, DirET, DirAN, DirCS, DirB, DirS, DirWS, DirON,
+ DirLRE, DirLRO, DirAL, DirRLE, DirRLO, DirPDF, DirNSM, DirBN
+ };
+ enum Decomposition
+ {
+ NoDecomposition,
+ Canonical,
+ Font,
+ NoBreak,
+ Initial,
+ Medial,
+ Final,
+ Isolated,
+ Circle,
+ Super,
+ Sub,
+ Vertical,
+ Wide,
+ Narrow,
+ Small,
+ Square,
+ Compat,
+ Fraction
+ };
+ enum Joining
+ {
+ OtherJoining, Dual, Right, Center
+ };
+ enum CombiningClass
+ {
+ Combining_BelowLeftAttached = 200,
+ Combining_BelowAttached = 202,
+ Combining_BelowRightAttached = 204,
+ Combining_LeftAttached = 208,
+ Combining_RightAttached = 210,
+ Combining_AboveLeftAttached = 212,
+ Combining_AboveAttached = 214,
+ Combining_AboveRightAttached = 216,
+ Combining_BelowLeft = 218,
+ Combining_Below = 220,
+ Combining_BelowRight = 222,
+ Combining_Left = 224,
+ Combining_Right = 226,
+ Combining_AboveLeft = 228,
+ Combining_Above = 230,
+ Combining_AboveRight = 232,
+ Combining_DoubleBelow = 233,
+ Combining_DoubleAbove = 234,
+ Combining_IotaSubscript = 240
+ };
+ enum UnicodeVersion {
+ Unicode_Unassigned,
+ Unicode_1_1,
+ Unicode_2_0,
+ Unicode_2_1_2,
+ Unicode_3_0,
+ Unicode_3_1,
+ Unicode_3_2,
+ Unicode_4_0,
+ Unicode_4_1,
+ Unicode_5_0
+ };
+ Category category() const;
+ Direction direction() const;
+ Joining joining() const;
+ bool hasMirrored() const;
+ unsigned char combiningClass() const;
+ QChar mirroredChar() const;
+ QString decomposition() const;
+ Decomposition decompositionTag() const;
+ int digitValue() const;
+ QChar toLower() const;
+ QChar toUpper() const;
+ QChar toTitleCase() const;
+ QChar toCaseFolded() const;
+ UnicodeVersion unicodeVersion() const;
+ char toAscii() const;
+ inline char toLatin1() const;
+ inline ushort unicode() const { return ucs; }
+ inline ushort &unicode() { return const_cast<ushort&>(ucs); }
+ static QChar fromAscii(char c);
+ static QChar fromLatin1(char c);
+ inline bool isNull() const { return ucs == 0; }
+ bool isPrint() const;
+ bool isPunct() const;
+ bool isSpace() const;
+ bool isMark() const;
+ bool isLetter() const;
+ bool isNumber() const;
+ bool isLetterOrNumber() const;
+ bool isDigit() const;
+ bool isSymbol() const;
+ inline bool isLower() const { return category() == Letter_Lowercase; }
+ inline bool isUpper() const { return category() == Letter_Uppercase; }
+ inline bool isTitleCase() const { return category() == Letter_Titlecase; }
+ inline bool isHighSurrogate() const {
+ return ((ucs & 0xfc00) == 0xd800);
+ }
+ inline bool isLowSurrogate() const {
+ return ((ucs & 0xfc00) == 0xdc00);
+ }
+ inline uchar cell() const { return uchar(ucs & 0xff); }
+ inline uchar row() const { return uchar((ucs>>8)&0xff); }
+ inline void setCell(uchar cell);
+ inline void setRow(uchar row);
+ static inline uint surrogateToUcs4(ushort high, ushort low) {
+ return (uint(high)<<10) + low - 0x35fdc00;
+ }
+ static inline uint surrogateToUcs4(QChar high, QChar low) {
+ return (uint(high.ucs)<<10) + low.ucs - 0x35fdc00;
+ }
+ static inline ushort highSurrogate(uint ucs4) {
+ return (ucs4>>10) + 0xd7c0;
+ }
+ static inline ushort lowSurrogate(uint ucs4) {
+ return ucs4%0x400 + 0xdc00;
+ }
+ static Category category(uint ucs4);
+ static Category category(ushort ucs2);
+ static Direction direction(uint ucs4);
+ static Direction direction(ushort ucs2);
+ static Joining joining(uint ucs4);
+ static Joining joining(ushort ucs2);
+ static unsigned char combiningClass(uint ucs4);
+ static unsigned char combiningClass(ushort ucs2);
+ static uint mirroredChar(uint ucs4);
+ static ushort mirroredChar(ushort ucs2);
+ static Decomposition decompositionTag(uint ucs4);
+ static int digitValue(uint ucs4);
+ static int digitValue(ushort ucs2);
+ static uint toLower(uint ucs4);
+ static ushort toLower(ushort ucs2);
+ static uint toUpper(uint ucs4);
+ static ushort toUpper(ushort ucs2);
+ static uint toTitleCase(uint ucs4);
+ static ushort toTitleCase(ushort ucs2);
+ static uint toCaseFolded(uint ucs4);
+ static ushort toCaseFolded(ushort ucs2);
+ static UnicodeVersion unicodeVersion(uint ucs4);
+ static UnicodeVersion unicodeVersion(ushort ucs2);
+ static QString decomposition(uint ucs4);
+private:
+ ushort ucs;
+}
+ ;
+template <> class QTypeInfo<QChar> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QChar)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QChar"; } };
+inline QChar::QChar() : ucs(0) {}
+inline char QChar::toLatin1() const { return ucs > 0xff ? '\0' : char(ucs); }
+inline QChar QChar::fromLatin1(char c) { return QChar(ushort(uchar(c))); }
+inline QChar::QChar(uchar c, uchar r) : ucs((r << 8) | c){}
+inline QChar::QChar(short rc) : ucs(ushort(rc)){}
+inline QChar::QChar(uint rc) : ucs(ushort(rc & 0xffff)){}
+inline QChar::QChar(int rc) : ucs(ushort(rc & 0xffff)){}
+inline QChar::QChar(SpecialCharacter s) : ucs(ushort(s)) {}
+inline QChar::QChar(QLatin1Char ch) : ucs(ch.unicode()) {}
+inline void QChar::setCell(uchar acell)
+{ ucs = (ucs & 0xff00) + acell; }
+inline void QChar::setRow(uchar arow)
+{ ucs = (ushort(arow)<<8) + (ucs&0xff); }
+inline bool operator==(QChar c1, QChar c2) { return c1.unicode() == c2.unicode(); }
+inline bool operator!=(QChar c1, QChar c2) { return c1.unicode() != c2.unicode(); }
+inline bool operator<=(QChar c1, QChar c2) { return c1.unicode() <= c2.unicode(); }
+inline bool operator>=(QChar c1, QChar c2) { return c1.unicode() >= c2.unicode(); }
+inline bool operator<(QChar c1, QChar c2) { return c1.unicode() < c2.unicode(); }
+inline bool operator>(QChar c1, QChar c2) { return c1.unicode() > c2.unicode(); }
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QChar &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QChar &);
+namespace std {
+ struct bidirectional_iterator_tag;
+ struct random_access_iterator_tag;
+}
+typedef QtValidLicenseForCoreModule QtCoreModule;
+namespace std __attribute__ ((__visibility__ ("default"))) {
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ using ::ptrdiff_t;
+ using ::size_t;
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ struct input_iterator_tag {};
+ struct output_iterator_tag {};
+ struct forward_iterator_tag : public input_iterator_tag {};
+ struct bidirectional_iterator_tag : public forward_iterator_tag {};
+ struct random_access_iterator_tag : public bidirectional_iterator_tag {};
+ template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,
+ typename _Pointer = _Tp*, typename _Reference = _Tp&>
+ struct iterator
+ {
+ typedef _Category iterator_category;
+ typedef _Tp value_type;
+ typedef _Distance difference_type;
+ typedef _Pointer pointer;
+ typedef _Reference reference;
+ };
+ template<typename _Iterator>
+ struct iterator_traits
+ {
+ typedef typename _Iterator::iterator_category iterator_category;
+ typedef typename _Iterator::value_type value_type;
+ typedef typename _Iterator::difference_type difference_type;
+ typedef typename _Iterator::pointer pointer;
+ typedef typename _Iterator::reference reference;
+ };
+ template<typename _Tp>
+ struct iterator_traits<_Tp*>
+ {
+ typedef random_access_iterator_tag iterator_category;
+ typedef _Tp value_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Tp* pointer;
+ typedef _Tp& reference;
+ };
+ template<typename _Tp>
+ struct iterator_traits<const _Tp*>
+ {
+ typedef random_access_iterator_tag iterator_category;
+ typedef _Tp value_type;
+ typedef ptrdiff_t difference_type;
+ typedef const _Tp* pointer;
+ typedef const _Tp& reference;
+ };
+ template<typename _Iter>
+ inline typename iterator_traits<_Iter>::iterator_category
+ __iterator_category(const _Iter&)
+ { return typename iterator_traits<_Iter>::iterator_category(); }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _InputIterator>
+ inline typename iterator_traits<_InputIterator>::difference_type
+ __distance(_InputIterator __first, _InputIterator __last,
+ input_iterator_tag)
+ {
+ typename iterator_traits<_InputIterator>::difference_type __n = 0;
+ while (__first != __last)
+ {
+ ++__first;
+ ++__n;
+ }
+ return __n;
+ }
+ template<typename _RandomAccessIterator>
+ inline typename iterator_traits<_RandomAccessIterator>::difference_type
+ __distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
+ random_access_iterator_tag)
+ {
+ return __last - __first;
+ }
+ template<typename _InputIterator>
+ inline typename iterator_traits<_InputIterator>::difference_type
+ distance(_InputIterator __first, _InputIterator __last)
+ {
+ return std::__distance(__first, __last,
+ std::__iterator_category(__first));
+ }
+ template<typename _InputIterator, typename _Distance>
+ inline void
+ __advance(_InputIterator& __i, _Distance __n, input_iterator_tag)
+ {
+ while (__n--)
+ ++__i;
+ }
+ template<typename _BidirectionalIterator, typename _Distance>
+ inline void
+ __advance(_BidirectionalIterator& __i, _Distance __n,
+ bidirectional_iterator_tag)
+ {
+ if (__n > 0)
+ while (__n--)
+ ++__i;
+ else
+ while (__n++)
+ --__i;
+ }
+ template<typename _RandomAccessIterator, typename _Distance>
+ inline void
+ __advance(_RandomAccessIterator& __i, _Distance __n,
+ random_access_iterator_tag)
+ {
+ __i += __n;
+ }
+ template<typename _InputIterator, typename _Distance>
+ inline void
+ advance(_InputIterator& __i, _Distance __n)
+ {
+ typename iterator_traits<_InputIterator>::difference_type __d = __n;
+ std::__advance(__i, __d, std::__iterator_category(__i));
+ }
+}
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Iterator, typename _Container>
+ class __normal_iterator;
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ struct __true_type { };
+ struct __false_type { };
+ template<bool>
+ struct __truth_type
+ { typedef __false_type __type; };
+ template<>
+ struct __truth_type<true>
+ { typedef __true_type __type; };
+ template<class _Sp, class _Tp>
+ struct __traitor
+ {
+ enum { __value = bool(_Sp::__value) || bool(_Tp::__value) };
+ typedef typename __truth_type<__value>::__type __type;
+ };
+ template<class _Sp, class _Tp>
+ struct __traitand
+ {
+ enum { __value = bool(_Sp::__value) && bool(_Tp::__value) };
+ typedef typename __truth_type<__value>::__type __type;
+ };
+ template<typename, typename>
+ struct __are_same
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+ template<typename _Tp>
+ struct __are_same<_Tp, _Tp>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<typename _Tp>
+ struct __is_void
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+ template<>
+ struct __is_void<void>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<typename _Tp>
+ struct __is_integer
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+ template<>
+ struct __is_integer<bool>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_integer<char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_integer<signed char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_integer<unsigned char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_integer<short>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_integer<unsigned short>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_integer<int>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_integer<unsigned int>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_integer<long>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_integer<unsigned long>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_integer<long long>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_integer<unsigned long long>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<typename _Tp>
+ struct __is_floating
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+ template<>
+ struct __is_floating<float>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_floating<double>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_floating<long double>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<typename _Tp>
+ struct __is_pointer
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+ template<typename _Tp>
+ struct __is_pointer<_Tp*>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<typename _Tp>
+ struct __is_normal_iterator
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+ template<typename _Iterator, typename _Container>
+ struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator,
+ _Container> >
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<typename _Tp>
+ struct __is_arithmetic
+ : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >
+ { };
+ template<typename _Tp>
+ struct __is_fundamental
+ : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> >
+ { };
+ template<typename _Tp>
+ struct __is_scalar
+ : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> >
+ { };
+ template<typename _Tp>
+ struct __is_char
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+ template<>
+ struct __is_char<char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<typename _Tp>
+ struct __is_byte
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+ template<>
+ struct __is_byte<char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_byte<signed char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<>
+ struct __is_byte<unsigned char>
+ {
+ enum { __value = 1 };
+ typedef __true_type __type;
+ };
+ template<typename _Tp>
+ struct __is_move_iterator
+ {
+ enum { __value = 0 };
+ typedef __false_type __type;
+ };
+}
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+ template<bool, typename>
+ struct __enable_if
+ { };
+ template<typename _Tp>
+ struct __enable_if<true, _Tp>
+ { typedef _Tp __type; };
+ template<bool _Cond, typename _Iftrue, typename _Iffalse>
+ struct __conditional_type
+ { typedef _Iftrue __type; };
+ template<typename _Iftrue, typename _Iffalse>
+ struct __conditional_type<false, _Iftrue, _Iffalse>
+ { typedef _Iffalse __type; };
+ template<typename _Tp>
+ struct __add_unsigned
+ {
+ private:
+ typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
+ public:
+ typedef typename __if_type::__type __type;
+ };
+ template<>
+ struct __add_unsigned<char>
+ { typedef unsigned char __type; };
+ template<>
+ struct __add_unsigned<signed char>
+ { typedef unsigned char __type; };
+ template<>
+ struct __add_unsigned<short>
+ { typedef unsigned short __type; };
+ template<>
+ struct __add_unsigned<int>
+ { typedef unsigned int __type; };
+ template<>
+ struct __add_unsigned<long>
+ { typedef unsigned long __type; };
+ template<>
+ struct __add_unsigned<long long>
+ { typedef unsigned long long __type; };
+ template<>
+ struct __add_unsigned<bool>;
+ template<>
+ struct __add_unsigned<wchar_t>;
+ template<typename _Tp>
+ struct __remove_unsigned
+ {
+ private:
+ typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
+ public:
+ typedef typename __if_type::__type __type;
+ };
+ template<>
+ struct __remove_unsigned<char>
+ { typedef signed char __type; };
+ template<>
+ struct __remove_unsigned<unsigned char>
+ { typedef signed char __type; };
+ template<>
+ struct __remove_unsigned<unsigned short>
+ { typedef short __type; };
+ template<>
+ struct __remove_unsigned<unsigned int>
+ { typedef int __type; };
+ template<>
+ struct __remove_unsigned<unsigned long>
+ { typedef long __type; };
+ template<>
+ struct __remove_unsigned<unsigned long long>
+ { typedef long long __type; };
+ template<>
+ struct __remove_unsigned<bool>;
+ template<>
+ struct __remove_unsigned<wchar_t>;
+ template<typename _Type>
+ inline bool
+ __is_null_pointer(_Type* __ptr)
+ { return __ptr == 0; }
+ template<typename _Type>
+ inline bool
+ __is_null_pointer(_Type)
+ { return false; }
+ template<typename _Tp, bool = std::__is_integer<_Tp>::__value>
+ struct __promote
+ { typedef double __type; };
+ template<typename _Tp>
+ struct __promote<_Tp, false>
+ { typedef _Tp __type; };
+ template<typename _Tp, typename _Up>
+ struct __promote_2
+ {
+ private:
+ typedef typename __promote<_Tp>::__type __type1;
+ typedef typename __promote<_Up>::__type __type2;
+ public:
+ typedef __typeof__(__type1() + __type2()) __type;
+ };
+ template<typename _Tp, typename _Up, typename _Vp>
+ struct __promote_3
+ {
+ private:
+ typedef typename __promote<_Tp>::__type __type1;
+ typedef typename __promote<_Up>::__type __type2;
+ typedef typename __promote<_Vp>::__type __type3;
+ public:
+ typedef __typeof__(__type1() + __type2() + __type3()) __type;
+ };
+ template<typename _Tp, typename _Up, typename _Vp, typename _Wp>
+ struct __promote_4
+ {
+ private:
+ typedef typename __promote<_Tp>::__type __type1;
+ typedef typename __promote<_Up>::__type __type2;
+ typedef typename __promote<_Vp>::__type __type3;
+ typedef typename __promote<_Wp>::__type __type4;
+ public:
+ typedef __typeof__(__type1() + __type2() + __type3() + __type4()) __type;
+ };
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Tp>
+ inline void
+ swap(_Tp& __a, _Tp& __b)
+ {
+ _Tp __tmp = (__a);
+ __a = (__b);
+ __b = (__tmp);
+ }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Iterator>
+ class reverse_iterator
+ : public iterator<typename iterator_traits<_Iterator>::iterator_category,
+ typename iterator_traits<_Iterator>::value_type,
+ typename iterator_traits<_Iterator>::difference_type,
+ typename iterator_traits<_Iterator>::pointer,
+ typename iterator_traits<_Iterator>::reference>
+ {
+ protected:
+ _Iterator current;
+ public:
+ typedef _Iterator iterator_type;
+ typedef typename iterator_traits<_Iterator>::difference_type
+ difference_type;
+ typedef typename iterator_traits<_Iterator>::reference reference;
+ typedef typename iterator_traits<_Iterator>::pointer pointer;
+ public:
+ reverse_iterator() : current() { }
+ explicit
+ reverse_iterator(iterator_type __x) : current(__x) { }
+ reverse_iterator(const reverse_iterator& __x)
+ : current(__x.current) { }
+ template<typename _Iter>
+ reverse_iterator(const reverse_iterator<_Iter>& __x)
+ : current(__x.base()) { }
+ iterator_type
+ base() const
+ { return current; }
+ reference
+ operator*() const
+ {
+ _Iterator __tmp = current;
+ return *--__tmp;
+ }
+ pointer
+ operator->() const
+ { return &(operator*()); }
+ reverse_iterator&
+ operator++()
+ {
+ --current;
+ return *this;
+ }
+ reverse_iterator
+ operator++(int)
+ {
+ reverse_iterator __tmp = *this;
+ --current;
+ return __tmp;
+ }
+ reverse_iterator&
+ operator--()
+ {
+ ++current;
+ return *this;
+ }
+ reverse_iterator
+ operator--(int)
+ {
+ reverse_iterator __tmp = *this;
+ ++current;
+ return __tmp;
+ }
+ reverse_iterator
+ operator+(difference_type __n) const
+ { return reverse_iterator(current - __n); }
+ reverse_iterator&
+ operator+=(difference_type __n)
+ {
+ current -= __n;
+ return *this;
+ }
+ reverse_iterator
+ operator-(difference_type __n) const
+ { return reverse_iterator(current + __n); }
+ reverse_iterator&
+ operator-=(difference_type __n)
+ {
+ current += __n;
+ return *this;
+ }
+ reference
+ operator[](difference_type __n) const
+ { return *(*this + __n); }
+ };
+ template<typename _Iterator>
+ inline bool
+ operator==(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return __x.base() == __y.base(); }
+ template<typename _Iterator>
+ inline bool
+ operator<(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return __y.base() < __x.base(); }
+ template<typename _Iterator>
+ inline bool
+ operator!=(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return !(__x == __y); }
+ template<typename _Iterator>
+ inline bool
+ operator>(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return __y < __x; }
+ template<typename _Iterator>
+ inline bool
+ operator<=(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return !(__y < __x); }
+ template<typename _Iterator>
+ inline bool
+ operator>=(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return !(__x < __y); }
+ template<typename _Iterator>
+ inline typename reverse_iterator<_Iterator>::difference_type
+ operator-(const reverse_iterator<_Iterator>& __x,
+ const reverse_iterator<_Iterator>& __y)
+ { return __y.base() - __x.base(); }
+ template<typename _Iterator>
+ inline reverse_iterator<_Iterator>
+ operator+(typename reverse_iterator<_Iterator>::difference_type __n,
+ const reverse_iterator<_Iterator>& __x)
+ { return reverse_iterator<_Iterator>(__x.base() - __n); }
+ template<typename _IteratorL, typename _IteratorR>
+ inline bool
+ operator==(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return __x.base() == __y.base(); }
+ template<typename _IteratorL, typename _IteratorR>
+ inline bool
+ operator<(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return __y.base() < __x.base(); }
+ template<typename _IteratorL, typename _IteratorR>
+ inline bool
+ operator!=(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return !(__x == __y); }
+ template<typename _IteratorL, typename _IteratorR>
+ inline bool
+ operator>(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return __y < __x; }
+ template<typename _IteratorL, typename _IteratorR>
+ inline bool
+ operator<=(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return !(__y < __x); }
+ template<typename _IteratorL, typename _IteratorR>
+ inline bool
+ operator>=(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return !(__x < __y); }
+ template<typename _IteratorL, typename _IteratorR>
+ inline typename reverse_iterator<_IteratorL>::difference_type
+ operator-(const reverse_iterator<_IteratorL>& __x,
+ const reverse_iterator<_IteratorR>& __y)
+ { return __y.base() - __x.base(); }
+ template<typename _Container>
+ class back_insert_iterator
+ : public iterator<output_iterator_tag, void, void, void, void>
+ {
+ protected:
+ _Container* container;
+ public:
+ typedef _Container container_type;
+ explicit
+ back_insert_iterator(_Container& __x) : container(&__x) { }
+ back_insert_iterator&
+ operator=(typename _Container::const_reference __value)
+ {
+ container->push_back(__value);
+ return *this;
+ }
+ back_insert_iterator&
+ operator*()
+ { return *this; }
+ back_insert_iterator&
+ operator++()
+ { return *this; }
+ back_insert_iterator
+ operator++(int)
+ { return *this; }
+ };
+ template<typename _Container>
+ inline back_insert_iterator<_Container>
+ back_inserter(_Container& __x)
+ { return back_insert_iterator<_Container>(__x); }
+ template<typename _Container>
+ class front_insert_iterator
+ : public iterator<output_iterator_tag, void, void, void, void>
+ {
+ protected:
+ _Container* container;
+ public:
+ typedef _Container container_type;
+ explicit front_insert_iterator(_Container& __x) : container(&__x) { }
+ front_insert_iterator&
+ operator=(typename _Container::const_reference __value)
+ {
+ container->push_front(__value);
+ return *this;
+ }
+ front_insert_iterator&
+ operator*()
+ { return *this; }
+ front_insert_iterator&
+ operator++()
+ { return *this; }
+ front_insert_iterator
+ operator++(int)
+ { return *this; }
+ };
+ template<typename _Container>
+ inline front_insert_iterator<_Container>
+ front_inserter(_Container& __x)
+ { return front_insert_iterator<_Container>(__x); }
+ template<typename _Container>
+ class insert_iterator
+ : public iterator<output_iterator_tag, void, void, void, void>
+ {
+ protected:
+ _Container* container;
+ typename _Container::iterator iter;
+ public:
+ typedef _Container container_type;
+ insert_iterator(_Container& __x, typename _Container::iterator __i)
+ : container(&__x), iter(__i) {}
+ insert_iterator&
+ operator=(typename _Container::const_reference __value)
+ {
+ iter = container->insert(iter, __value);
+ ++iter;
+ return *this;
+ }
+ insert_iterator&
+ operator*()
+ { return *this; }
+ insert_iterator&
+ operator++()
+ { return *this; }
+ insert_iterator&
+ operator++(int)
+ { return *this; }
+ };
+ template<typename _Container, typename _Iterator>
+ inline insert_iterator<_Container>
+ inserter(_Container& __x, _Iterator __i)
+ {
+ return insert_iterator<_Container>(__x,
+ typename _Container::iterator(__i));
+ }
+}
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+ using std::iterator_traits;
+ using std::iterator;
+ template<typename _Iterator, typename _Container>
+ class __normal_iterator
+ {
+ protected:
+ _Iterator _M_current;
+ public:
+ typedef _Iterator iterator_type;
+ typedef typename iterator_traits<_Iterator>::iterator_category
+ iterator_category;
+ typedef typename iterator_traits<_Iterator>::value_type value_type;
+ typedef typename iterator_traits<_Iterator>::difference_type
+ difference_type;
+ typedef typename iterator_traits<_Iterator>::reference reference;
+ typedef typename iterator_traits<_Iterator>::pointer pointer;
+ __normal_iterator() : _M_current(_Iterator()) { }
+ explicit
+ __normal_iterator(const _Iterator& __i) : _M_current(__i) { }
+ template<typename _Iter>
+ __normal_iterator(const __normal_iterator<_Iter,
+ typename __enable_if<
+ (std::__are_same<_Iter, typename _Container::pointer>::__value),
+ _Container>::__type>& __i)
+ : _M_current(__i.base()) { }
+ reference
+ operator*() const
+ { return *_M_current; }
+ pointer
+ operator->() const
+ { return _M_current; }
+ __normal_iterator&
+ operator++()
+ {
+ ++_M_current;
+ return *this;
+ }
+ __normal_iterator
+ operator++(int)
+ { return __normal_iterator(_M_current++); }
+ __normal_iterator&
+ operator--()
+ {
+ --_M_current;
+ return *this;
+ }
+ __normal_iterator
+ operator--(int)
+ { return __normal_iterator(_M_current--); }
+ reference
+ operator[](const difference_type& __n) const
+ { return _M_current[__n]; }
+ __normal_iterator&
+ operator+=(const difference_type& __n)
+ { _M_current += __n; return *this; }
+ __normal_iterator
+ operator+(const difference_type& __n) const
+ { return __normal_iterator(_M_current + __n); }
+ __normal_iterator&
+ operator-=(const difference_type& __n)
+ { _M_current -= __n; return *this; }
+ __normal_iterator
+ operator-(const difference_type& __n) const
+ { return __normal_iterator(_M_current - __n); }
+ const _Iterator&
+ base() const
+ { return _M_current; }
+ };
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline bool
+ operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() == __rhs.base(); }
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator==(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() == __rhs.base(); }
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline bool
+ operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() != __rhs.base(); }
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() != __rhs.base(); }
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline bool
+ operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() < __rhs.base(); }
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator<(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() < __rhs.base(); }
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline bool
+ operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() > __rhs.base(); }
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator>(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() > __rhs.base(); }
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline bool
+ operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() <= __rhs.base(); }
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator<=(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() <= __rhs.base(); }
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline bool
+ operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() >= __rhs.base(); }
+ template<typename _Iterator, typename _Container>
+ inline bool
+ operator>=(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() >= __rhs.base(); }
+ template<typename _IteratorL, typename _IteratorR, typename _Container>
+ inline typename __normal_iterator<_IteratorL, _Container>::difference_type
+ operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,
+ const __normal_iterator<_IteratorR, _Container>& __rhs)
+ { return __lhs.base() - __rhs.base(); }
+ template<typename _Iterator, typename _Container>
+ inline typename __normal_iterator<_Iterator, _Container>::difference_type
+ operator-(const __normal_iterator<_Iterator, _Container>& __lhs,
+ const __normal_iterator<_Iterator, _Container>& __rhs)
+ { return __lhs.base() - __rhs.base(); }
+ template<typename _Iterator, typename _Container>
+ inline __normal_iterator<_Iterator, _Container>
+ operator+(typename __normal_iterator<_Iterator, _Container>::difference_type
+ __n, const __normal_iterator<_Iterator, _Container>& __i)
+ { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Alloc>
+ class allocator;
+ template<class _CharT>
+ struct char_traits;
+ template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ typename _Alloc = allocator<_CharT> >
+ class basic_string;
+ template<> struct char_traits<char>;
+ typedef basic_string<char> string;
+}
+extern "C"
+{
+ typedef struct
+ {
+ int __fill[6];
+ } mbstate_t;
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ using ::mbstate_t;
+}
+typedef signed char int8_t;
+typedef short int int16_t;
+typedef int int32_t;
+__extension__
+typedef long long int int64_t;
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned int uint32_t;
+__extension__
+typedef unsigned long long int uint64_t;
+typedef signed char int_least8_t;
+typedef short int int_least16_t;
+typedef int int_least32_t;
+__extension__
+typedef long long int int_least64_t;
+typedef unsigned char uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int uint_least32_t;
+__extension__
+typedef unsigned long long int uint_least64_t;
+typedef signed char int_fast8_t;
+typedef int int_fast16_t;
+typedef int int_fast32_t;
+__extension__
+typedef long long int int_fast64_t;
+typedef unsigned char uint_fast8_t;
+typedef unsigned int uint_fast16_t;
+typedef unsigned int uint_fast32_t;
+__extension__
+typedef unsigned long long int uint_fast64_t;
+typedef int intptr_t;
+typedef unsigned int uintptr_t;
+__extension__
+typedef long long int intmax_t;
+__extension__
+typedef unsigned long long int uintmax_t;
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ typedef int64_t streamoff;
+ typedef ptrdiff_t streamsize;
+ template<typename _StateT>
+ class fpos
+ {
+ private:
+ streamoff _M_off;
+ _StateT _M_state;
+ public:
+ fpos()
+ : _M_off(0), _M_state() { }
+ fpos(streamoff __off)
+ : _M_off(__off), _M_state() { }
+ operator streamoff() const { return _M_off; }
+ void
+ state(_StateT __st)
+ { _M_state = __st; }
+ _StateT
+ state() const
+ { return _M_state; }
+ fpos&
+ operator+=(streamoff __off)
+ {
+ _M_off += __off;
+ return *this;
+ }
+ fpos&
+ operator-=(streamoff __off)
+ {
+ _M_off -= __off;
+ return *this;
+ }
+ fpos
+ operator+(streamoff __off) const
+ {
+ fpos __pos(*this);
+ __pos += __off;
+ return __pos;
+ }
+ fpos
+ operator-(streamoff __off) const
+ {
+ fpos __pos(*this);
+ __pos -= __off;
+ return __pos;
+ }
+ streamoff
+ operator-(const fpos& __other) const
+ { return _M_off - __other._M_off; }
+ };
+ template<typename _StateT>
+ inline bool
+ operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
+ { return streamoff(__lhs) == streamoff(__rhs); }
+ template<typename _StateT>
+ inline bool
+ operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)
+ { return streamoff(__lhs) != streamoff(__rhs); }
+ typedef fpos<mbstate_t> streampos;
+ typedef fpos<mbstate_t> wstreampos;
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_ios;
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_streambuf;
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_istream;
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_ostream;
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_iostream;
+ template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ typename _Alloc = allocator<_CharT> >
+ class basic_stringbuf;
+ template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ typename _Alloc = allocator<_CharT> >
+ class basic_istringstream;
+ template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ typename _Alloc = allocator<_CharT> >
+ class basic_ostringstream;
+ template<typename _CharT, typename _Traits = char_traits<_CharT>,
+ typename _Alloc = allocator<_CharT> >
+ class basic_stringstream;
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_filebuf;
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_ifstream;
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_ofstream;
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class basic_fstream;
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class istreambuf_iterator;
+ template<typename _CharT, typename _Traits = char_traits<_CharT> >
+ class ostreambuf_iterator;
+ class ios_base;
+ typedef basic_ios<char> ios;
+ typedef basic_streambuf<char> streambuf;
+ typedef basic_istream<char> istream;
+ typedef basic_ostream<char> ostream;
+ typedef basic_iostream<char> iostream;
+ typedef basic_stringbuf<char> stringbuf;
+ typedef basic_istringstream<char> istringstream;
+ typedef basic_ostringstream<char> ostringstream;
+ typedef basic_stringstream<char> stringstream;
+ typedef basic_filebuf<char> filebuf;
+ typedef basic_ifstream<char> ifstream;
+ typedef basic_ofstream<char> ofstream;
+ typedef basic_fstream<char> fstream;
+}
+extern "C++" {
+namespace std
+{
+ class exception
+ {
+ public:
+ exception() throw() { }
+ virtual ~exception() throw();
+ virtual const char* what() const throw();
+ };
+ class bad_exception : public exception
+ {
+ public:
+ bad_exception() throw() { }
+ virtual ~bad_exception() throw();
+ virtual const char* what() const throw();
+ };
+ typedef void (*terminate_handler) ();
+ typedef void (*unexpected_handler) ();
+ terminate_handler set_terminate(terminate_handler) throw();
+ void terminate() __attribute__ ((__noreturn__));
+ unexpected_handler set_unexpected(unexpected_handler) throw();
+ void unexpected() __attribute__ ((__noreturn__));
+ bool uncaught_exception() throw();
+}
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+ void __verbose_terminate_handler ();
+}
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ void
+ __throw_bad_exception(void) __attribute__((__noreturn__));
+ void
+ __throw_bad_alloc(void) __attribute__((__noreturn__));
+ void
+ __throw_bad_cast(void) __attribute__((__noreturn__));
+ void
+ __throw_bad_typeid(void) __attribute__((__noreturn__));
+ void
+ __throw_logic_error(const char*) __attribute__((__noreturn__));
+ void
+ __throw_domain_error(const char*) __attribute__((__noreturn__));
+ void
+ __throw_invalid_argument(const char*) __attribute__((__noreturn__));
+ void
+ __throw_length_error(const char*) __attribute__((__noreturn__));
+ void
+ __throw_out_of_range(const char*) __attribute__((__noreturn__));
+ void
+ __throw_runtime_error(const char*) __attribute__((__noreturn__));
+ void
+ __throw_range_error(const char*) __attribute__((__noreturn__));
+ void
+ __throw_overflow_error(const char*) __attribute__((__noreturn__));
+ void
+ __throw_underflow_error(const char*) __attribute__((__noreturn__));
+ void
+ __throw_ios_failure(const char*) __attribute__((__noreturn__));
+}
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Value>
+ struct __numeric_traits_integer
+ {
+ static const _Value __min = (((_Value)(-1) < 0) ? (_Value)1 << (sizeof(_Value) * 8 - ((_Value)(-1) < 0)) : (_Value)0);
+ static const _Value __max = (((_Value)(-1) < 0) ? (((((_Value)1 << ((sizeof(_Value) * 8 - ((_Value)(-1) < 0)) - 1)) - 1) << 1) + 1) : ~(_Value)0);
+ static const bool __is_signed = ((_Value)(-1) < 0);
+ static const int __digits = (sizeof(_Value) * 8 - ((_Value)(-1) < 0));
+ };
+ template<typename _Value>
+ const _Value __numeric_traits_integer<_Value>::__min;
+ template<typename _Value>
+ const _Value __numeric_traits_integer<_Value>::__max;
+ template<typename _Value>
+ const bool __numeric_traits_integer<_Value>::__is_signed;
+ template<typename _Value>
+ const int __numeric_traits_integer<_Value>::__digits;
+ template<typename _Value>
+ struct __numeric_traits_floating
+ {
+ static const int __max_digits10 = (2 + (std::__are_same<_Value, float>::__value ? 24 : std::__are_same<_Value, double>::__value ? 53 : 53) * 3010 / 10000);
+ static const bool __is_signed = true;
+ static const int __digits10 = (std::__are_same<_Value, float>::__value ? 6 : std::__are_same<_Value, double>::__value ? 15 : 15);
+ static const int __max_exponent10 = (std::__are_same<_Value, float>::__value ? 38 : std::__are_same<_Value, double>::__value ? 308 : 308);
+ };
+ template<typename _Value>
+ const int __numeric_traits_floating<_Value>::__max_digits10;
+ template<typename _Value>
+ const bool __numeric_traits_floating<_Value>::__is_signed;
+ template<typename _Value>
+ const int __numeric_traits_floating<_Value>::__digits10;
+ template<typename _Value>
+ const int __numeric_traits_floating<_Value>::__max_exponent10;
+ template<typename _Value>
+ struct __numeric_traits
+ : public __conditional_type<std::__is_integer<_Value>::__value,
+ __numeric_traits_integer<_Value>,
+ __numeric_traits_floating<_Value> >::__type
+ { };
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<class _T1, class _T2>
+ struct pair
+ {
+ typedef _T1 first_type;
+ typedef _T2 second_type;
+ _T1 first;
+ _T2 second;
+ pair()
+ : first(), second() { }
+ pair(const _T1& __a, const _T2& __b)
+ : first(__a), second(__b) { }
+ template<class _U1, class _U2>
+ pair(const pair<_U1, _U2>& __p)
+ : first(__p.first),
+ second(__p.second) { }
+ };
+ template<class _T1, class _T2>
+ inline bool
+ operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+ { return __x.first == __y.first && __x.second == __y.second; }
+ template<class _T1, class _T2>
+ inline bool
+ operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+ { return __x.first < __y.first
+ || (!(__y.first < __x.first) && __x.second < __y.second); }
+ template<class _T1, class _T2>
+ inline bool
+ operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+ { return !(__x == __y); }
+ template<class _T1, class _T2>
+ inline bool
+ operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+ { return __y < __x; }
+ template<class _T1, class _T2>
+ inline bool
+ operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+ { return !(__y < __x); }
+ template<class _T1, class _T2>
+ inline bool
+ operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)
+ { return !(__x < __y); }
+ template<class _T1, class _T2>
+ inline pair<_T1, _T2>
+ make_pair(_T1 __x, _T2 __y)
+ { return pair<_T1, _T2>(__x, __y); }
+}
+namespace std
+{
+ namespace __debug { }
+}
+namespace __gnu_debug
+{
+ using namespace std::__debug;
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<bool _BoolType>
+ struct __iter_swap
+ {
+ template<typename _ForwardIterator1, typename _ForwardIterator2>
+ static void
+ iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
+ {
+ typedef typename iterator_traits<_ForwardIterator1>::value_type
+ _ValueType1;
+ _ValueType1 __tmp = (*__a);
+ *__a = (*__b);
+ *__b = (__tmp);
+ }
+ };
+ template<>
+ struct __iter_swap<true>
+ {
+ template<typename _ForwardIterator1, typename _ForwardIterator2>
+ static void
+ iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
+ {
+ swap(*__a, *__b);
+ }
+ };
+ template<typename _ForwardIterator1, typename _ForwardIterator2>
+ inline void
+ iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
+ {
+ typedef typename iterator_traits<_ForwardIterator1>::value_type
+ _ValueType1;
+ typedef typename iterator_traits<_ForwardIterator2>::value_type
+ _ValueType2;
+ typedef typename iterator_traits<_ForwardIterator1>::reference
+ _ReferenceType1;
+ typedef typename iterator_traits<_ForwardIterator2>::reference
+ _ReferenceType2;
+ std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value
+ && __are_same<_ValueType1&, _ReferenceType1>::__value
+ && __are_same<_ValueType2&, _ReferenceType2>::__value>::
+ iter_swap(__a, __b);
+ }
+ template<typename _ForwardIterator1, typename _ForwardIterator2>
+ _ForwardIterator2
+ swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1,
+ _ForwardIterator2 __first2)
+ {
+ ;
+ for (; __first1 != __last1; ++__first1, ++__first2)
+ std::iter_swap(__first1, __first2);
+ return __first2;
+ }
+ template<typename _Tp>
+ inline const _Tp&
+ min(const _Tp& __a, const _Tp& __b)
+ {
+ if (__b < __a)
+ return __b;
+ return __a;
+ }
+ template<typename _Tp>
+ inline const _Tp&
+ max(const _Tp& __a, const _Tp& __b)
+ {
+ if (__a < __b)
+ return __b;
+ return __a;
+ }
+ template<typename _Tp, typename _Compare>
+ inline const _Tp&
+ min(const _Tp& __a, const _Tp& __b, _Compare __comp)
+ {
+ if (__comp(__b, __a))
+ return __b;
+ return __a;
+ }
+ template<typename _Tp, typename _Compare>
+ inline const _Tp&
+ max(const _Tp& __a, const _Tp& __b, _Compare __comp)
+ {
+ if (__comp(__a, __b))
+ return __b;
+ return __a;
+ }
+ template<typename _Iterator,
+ bool _IsNormal = __is_normal_iterator<_Iterator>::__value>
+ struct __niter_base
+ {
+ static _Iterator
+ __b(_Iterator __it)
+ { return __it; }
+ };
+ template<typename _Iterator>
+ struct __niter_base<_Iterator, true>
+ {
+ static typename _Iterator::iterator_type
+ __b(_Iterator __it)
+ { return __it.base(); }
+ };
+ template<typename _Iterator,
+ bool _IsMove = __is_move_iterator<_Iterator>::__value>
+ struct __miter_base
+ {
+ static _Iterator
+ __b(_Iterator __it)
+ { return __it; }
+ };
+ template<typename _Iterator>
+ struct __miter_base<_Iterator, true>
+ {
+ static typename _Iterator::iterator_type
+ __b(_Iterator __it)
+ { return __it.base(); }
+ };
+ template<bool, bool, typename>
+ struct __copy_move
+ {
+ template<typename _II, typename _OI>
+ static _OI
+ __copy_m(_II __first, _II __last, _OI __result)
+ {
+ for (; __first != __last; ++__result, ++__first)
+ *__result = *__first;
+ return __result;
+ }
+ };
+ template<>
+ struct __copy_move<false, false, random_access_iterator_tag>
+ {
+ template<typename _II, typename _OI>
+ static _OI
+ __copy_m(_II __first, _II __last, _OI __result)
+ {
+ typedef typename iterator_traits<_II>::difference_type _Distance;
+ for(_Distance __n = __last - __first; __n > 0; --__n)
+ {
+ *__result = *__first;
+ ++__first;
+ ++__result;
+ }
+ return __result;
+ }
+ };
+ template<bool _IsMove>
+ struct __copy_move<_IsMove, true, random_access_iterator_tag>
+ {
+ template<typename _Tp>
+ static _Tp*
+ __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result)
+ {
+ __builtin_memmove(__result, __first,
+ sizeof(_Tp) * (__last - __first));
+ return __result + (__last - __first);
+ }
+ };
+ template<bool _IsMove, typename _II, typename _OI>
+ inline _OI
+ __copy_move_a(_II __first, _II __last, _OI __result)
+ {
+ typedef typename iterator_traits<_II>::value_type _ValueTypeI;
+ typedef typename iterator_traits<_OI>::value_type _ValueTypeO;
+ typedef typename iterator_traits<_II>::iterator_category _Category;
+ const bool __simple = (__is_pod(_ValueTypeI)
+ && __is_pointer<_II>::__value
+ && __is_pointer<_OI>::__value
+ && __are_same<_ValueTypeI, _ValueTypeO>::__value);
+ return std::__copy_move<_IsMove, __simple,
+ _Category>::__copy_m(__first, __last, __result);
+ }
+ template<typename _CharT>
+ struct char_traits;
+ template<typename _CharT, typename _Traits>
+ class istreambuf_iterator;
+ template<typename _CharT, typename _Traits>
+ class ostreambuf_iterator;
+ template<bool _IsMove, typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
+ __copy_move_a2(_CharT*, _CharT*,
+ ostreambuf_iterator<_CharT, char_traits<_CharT> >);
+ template<bool _IsMove, typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type
+ __copy_move_a2(const _CharT*, const _CharT*,
+ ostreambuf_iterator<_CharT, char_traits<_CharT> >);
+ template<bool _IsMove, typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ _CharT*>::__type
+ __copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >,
+ istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*);
+ template<bool _IsMove, typename _II, typename _OI>
+ inline _OI
+ __copy_move_a2(_II __first, _II __last, _OI __result)
+ {
+ return _OI(std::__copy_move_a<_IsMove>
+ (std::__niter_base<_II>::__b(__first),
+ std::__niter_base<_II>::__b(__last),
+ std::__niter_base<_OI>::__b(__result)));
+ }
+ template<typename _II, typename _OI>
+ inline _OI
+ copy(_II __first, _II __last, _OI __result)
+ {
+ ;
+ return (std::__copy_move_a2<__is_move_iterator<_II>::__value>
+ (std::__miter_base<_II>::__b(__first),
+ std::__miter_base<_II>::__b(__last), __result));
+ }
+ template<bool, bool, typename>
+ struct __copy_move_backward
+ {
+ template<typename _BI1, typename _BI2>
+ static _BI2
+ __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
+ {
+ while (__first != __last)
+ *--__result = *--__last;
+ return __result;
+ }
+ };
+ template<>
+ struct __copy_move_backward<false, false, random_access_iterator_tag>
+ {
+ template<typename _BI1, typename _BI2>
+ static _BI2
+ __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result)
+ {
+ typename iterator_traits<_BI1>::difference_type __n;
+ for (__n = __last - __first; __n > 0; --__n)
+ *--__result = *--__last;
+ return __result;
+ }
+ };
+ template<bool _IsMove>
+ struct __copy_move_backward<_IsMove, true, random_access_iterator_tag>
+ {
+ template<typename _Tp>
+ static _Tp*
+ __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result)
+ {
+ const ptrdiff_t _Num = __last - __first;
+ __builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num);
+ return __result - _Num;
+ }
+ };
+ template<bool _IsMove, typename _BI1, typename _BI2>
+ inline _BI2
+ __copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result)
+ {
+ typedef typename iterator_traits<_BI1>::value_type _ValueType1;
+ typedef typename iterator_traits<_BI2>::value_type _ValueType2;
+ typedef typename iterator_traits<_BI1>::iterator_category _Category;
+ const bool __simple = (__is_pod(_ValueType1)
+ && __is_pointer<_BI1>::__value
+ && __is_pointer<_BI2>::__value
+ && __are_same<_ValueType1, _ValueType2>::__value);
+ return std::__copy_move_backward<_IsMove, __simple,
+ _Category>::__copy_move_b(__first,
+ __last,
+ __result);
+ }
+ template<bool _IsMove, typename _BI1, typename _BI2>
+ inline _BI2
+ __copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result)
+ {
+ return _BI2(std::__copy_move_backward_a<_IsMove>
+ (std::__niter_base<_BI1>::__b(__first),
+ std::__niter_base<_BI1>::__b(__last),
+ std::__niter_base<_BI2>::__b(__result)));
+ }
+ template<typename _BI1, typename _BI2>
+ inline _BI2
+ copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)
+ {
+ ;
+ return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value>
+ (std::__miter_base<_BI1>::__b(__first),
+ std::__miter_base<_BI1>::__b(__last), __result));
+ }
+ template<typename _ForwardIterator, typename _Tp>
+ inline typename
+ __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type
+ __fill_a(_ForwardIterator __first, _ForwardIterator __last,
+ const _Tp& __value)
+ {
+ for (; __first != __last; ++__first)
+ *__first = __value;
+ }
+ template<typename _ForwardIterator, typename _Tp>
+ inline typename
+ __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type
+ __fill_a(_ForwardIterator __first, _ForwardIterator __last,
+ const _Tp& __value)
+ {
+ const _Tp __tmp = __value;
+ for (; __first != __last; ++__first)
+ *__first = __tmp;
+ }
+ template<typename _Tp>
+ inline typename
+ __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type
+ __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c)
+ {
+ const _Tp __tmp = __c;
+ __builtin_memset(__first, static_cast<unsigned char>(__tmp),
+ __last - __first);
+ }
+ template<typename _ForwardIterator, typename _Tp>
+ inline void
+ fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value)
+ {
+ ;
+ std::__fill_a(std::__niter_base<_ForwardIterator>::__b(__first),
+ std::__niter_base<_ForwardIterator>::__b(__last), __value);
+ }
+ template<typename _OutputIterator, typename _Size, typename _Tp>
+ inline typename
+ __gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type
+ __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
+ {
+ for (; __n > 0; --__n, ++__first)
+ *__first = __value;
+ return __first;
+ }
+ template<typename _OutputIterator, typename _Size, typename _Tp>
+ inline typename
+ __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type
+ __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
+ {
+ const _Tp __tmp = __value;
+ for (; __n > 0; --__n, ++__first)
+ *__first = __tmp;
+ return __first;
+ }
+ template<typename _Size, typename _Tp>
+ inline typename
+ __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type
+ __fill_n_a(_Tp* __first, _Size __n, const _Tp& __c)
+ {
+ std::__fill_a(__first, __first + __n, __c);
+ return __first + __n;
+ }
+ template<typename _OI, typename _Size, typename _Tp>
+ inline _OI
+ fill_n(_OI __first, _Size __n, const _Tp& __value)
+ {
+ return _OI(std::__fill_n_a(std::__niter_base<_OI>::__b(__first),
+ __n, __value));
+ }
+ template<bool _BoolType>
+ struct __equal
+ {
+ template<typename _II1, typename _II2>
+ static bool
+ equal(_II1 __first1, _II1 __last1, _II2 __first2)
+ {
+ for (; __first1 != __last1; ++__first1, ++__first2)
+ if (!(*__first1 == *__first2))
+ return false;
+ return true;
+ }
+ };
+ template<>
+ struct __equal<true>
+ {
+ template<typename _Tp>
+ static bool
+ equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2)
+ {
+ return !__builtin_memcmp(__first1, __first2, sizeof(_Tp)
+ * (__last1 - __first1));
+ }
+ };
+ template<typename _II1, typename _II2>
+ inline bool
+ __equal_aux(_II1 __first1, _II1 __last1, _II2 __first2)
+ {
+ typedef typename iterator_traits<_II1>::value_type _ValueType1;
+ typedef typename iterator_traits<_II2>::value_type _ValueType2;
+ const bool __simple = (__is_integer<_ValueType1>::__value
+ && __is_pointer<_II1>::__value
+ && __is_pointer<_II2>::__value
+ && __are_same<_ValueType1, _ValueType2>::__value);
+ return std::__equal<__simple>::equal(__first1, __last1, __first2);
+ }
+ template<typename, typename>
+ struct __lc_rai
+ {
+ template<typename _II1, typename _II2>
+ static _II1
+ __newlast1(_II1, _II1 __last1, _II2, _II2)
+ { return __last1; }
+ template<typename _II>
+ static bool
+ __cnd2(_II __first, _II __last)
+ { return __first != __last; }
+ };
+ template<>
+ struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag>
+ {
+ template<typename _RAI1, typename _RAI2>
+ static _RAI1
+ __newlast1(_RAI1 __first1, _RAI1 __last1,
+ _RAI2 __first2, _RAI2 __last2)
+ {
+ const typename iterator_traits<_RAI1>::difference_type
+ __diff1 = __last1 - __first1;
+ const typename iterator_traits<_RAI2>::difference_type
+ __diff2 = __last2 - __first2;
+ return __diff2 < __diff1 ? __first1 + __diff2 : __last1;
+ }
+ template<typename _RAI>
+ static bool
+ __cnd2(_RAI, _RAI)
+ { return true; }
+ };
+ template<bool _BoolType>
+ struct __lexicographical_compare
+ {
+ template<typename _II1, typename _II2>
+ static bool __lc(_II1, _II1, _II2, _II2);
+ };
+ template<bool _BoolType>
+ template<typename _II1, typename _II2>
+ bool
+ __lexicographical_compare<_BoolType>::
+ __lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2)
+ {
+ typedef typename iterator_traits<_II1>::iterator_category _Category1;
+ typedef typename iterator_traits<_II2>::iterator_category _Category2;
+ typedef std::__lc_rai<_Category1, _Category2> __rai_type;
+ __last1 = __rai_type::__newlast1(__first1, __last1,
+ __first2, __last2);
+ for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
+ ++__first1, ++__first2)
+ {
+ if (*__first1 < *__first2)
+ return true;
+ if (*__first2 < *__first1)
+ return false;
+ }
+ return __first1 == __last1 && __first2 != __last2;
+ }
+ template<>
+ struct __lexicographical_compare<true>
+ {
+ template<typename _Tp, typename _Up>
+ static bool
+ __lc(const _Tp* __first1, const _Tp* __last1,
+ const _Up* __first2, const _Up* __last2)
+ {
+ const size_t __len1 = __last1 - __first1;
+ const size_t __len2 = __last2 - __first2;
+ const int __result = __builtin_memcmp(__first1, __first2,
+ std::min(__len1, __len2));
+ return __result != 0 ? __result < 0 : __len1 < __len2;
+ }
+ };
+ template<typename _II1, typename _II2>
+ inline bool
+ __lexicographical_compare_aux(_II1 __first1, _II1 __last1,
+ _II2 __first2, _II2 __last2)
+ {
+ typedef typename iterator_traits<_II1>::value_type _ValueType1;
+ typedef typename iterator_traits<_II2>::value_type _ValueType2;
+ const bool __simple =
+ (__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value
+ && !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed
+ && !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed
+ && __is_pointer<_II1>::__value
+ && __is_pointer<_II2>::__value);
+ return std::__lexicographical_compare<__simple>::__lc(__first1, __last1,
+ __first2, __last2);
+ }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _II1, typename _II2>
+ inline bool
+ equal(_II1 __first1, _II1 __last1, _II2 __first2)
+ {
+ ;
+ return std::__equal_aux(std::__niter_base<_II1>::__b(__first1),
+ std::__niter_base<_II1>::__b(__last1),
+ std::__niter_base<_II2>::__b(__first2));
+ }
+ template<typename _IIter1, typename _IIter2, typename _BinaryPredicate>
+ inline bool
+ equal(_IIter1 __first1, _IIter1 __last1,
+ _IIter2 __first2, _BinaryPredicate __binary_pred)
+ {
+ ;
+ for (; __first1 != __last1; ++__first1, ++__first2)
+ if (!bool(__binary_pred(*__first1, *__first2)))
+ return false;
+ return true;
+ }
+ template<typename _II1, typename _II2>
+ inline bool
+ lexicographical_compare(_II1 __first1, _II1 __last1,
+ _II2 __first2, _II2 __last2)
+ {
+ typedef typename iterator_traits<_II1>::value_type _ValueType1;
+ typedef typename iterator_traits<_II2>::value_type _ValueType2;
+ ;
+ ;
+ return std::__lexicographical_compare_aux
+ (std::__niter_base<_II1>::__b(__first1),
+ std::__niter_base<_II1>::__b(__last1),
+ std::__niter_base<_II2>::__b(__first2),
+ std::__niter_base<_II2>::__b(__last2));
+ }
+ template<typename _II1, typename _II2, typename _Compare>
+ bool
+ lexicographical_compare(_II1 __first1, _II1 __last1,
+ _II2 __first2, _II2 __last2, _Compare __comp)
+ {
+ typedef typename iterator_traits<_II1>::iterator_category _Category1;
+ typedef typename iterator_traits<_II2>::iterator_category _Category2;
+ typedef std::__lc_rai<_Category1, _Category2> __rai_type;
+ ;
+ ;
+ __last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2);
+ for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2);
+ ++__first1, ++__first2)
+ {
+ if (__comp(*__first1, *__first2))
+ return true;
+ if (__comp(*__first2, *__first1))
+ return false;
+ }
+ return __first1 == __last1 && __first2 != __last2;
+ }
+ template<typename _InputIterator1, typename _InputIterator2>
+ pair<_InputIterator1, _InputIterator2>
+ mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
+ _InputIterator2 __first2)
+ {
+ ;
+ while (__first1 != __last1 && *__first1 == *__first2)
+ {
+ ++__first1;
+ ++__first2;
+ }
+ return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
+ }
+ template<typename _InputIterator1, typename _InputIterator2,
+ typename _BinaryPredicate>
+ pair<_InputIterator1, _InputIterator2>
+ mismatch(_InputIterator1 __first1, _InputIterator1 __last1,
+ _InputIterator2 __first2, _BinaryPredicate __binary_pred)
+ {
+ ;
+ while (__first1 != __last1 && bool(__binary_pred(*__first1, *__first2)))
+ {
+ ++__first1;
+ ++__first2;
+ }
+ return pair<_InputIterator1, _InputIterator2>(__first1, __first2);
+ }
+}
+extern "C" {
+typedef unsigned short __kernel_dev_t;
+typedef unsigned long __kernel_ino_t;
+typedef unsigned short __kernel_mode_t;
+typedef unsigned short __kernel_nlink_t;
+typedef long __kernel_off_t;
+typedef int __kernel_pid_t;
+typedef unsigned int __kernel_ipc_pid_t;
+typedef unsigned int __kernel_uid_t;
+typedef unsigned int __kernel_gid_t;
+typedef unsigned int __kernel_size_t;
+typedef int __kernel_ssize_t;
+typedef int __kernel_ptrdiff_t;
+typedef long __kernel_time_t;
+typedef long __kernel_suseconds_t;
+typedef long __kernel_clock_t;
+typedef int __kernel_daddr_t;
+typedef char * __kernel_caddr_t;
+typedef unsigned short __kernel_uid16_t;
+typedef unsigned short __kernel_gid16_t;
+typedef unsigned int __kernel_uid32_t;
+typedef unsigned int __kernel_gid32_t;
+typedef unsigned short __kernel_old_uid_t;
+typedef unsigned short __kernel_old_gid_t;
+typedef long long __kernel_loff_t;
+typedef __kernel_dev_t __kernel_old_dev_t;
+typedef struct {
+ int __val[2];
+} __kernel_fsid_t;
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+__extension__ typedef signed long long int __int64_t;
+__extension__ typedef unsigned long long int __uint64_t;
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
+__extension__ typedef __u_quad_t __dev_t;
+__extension__ typedef unsigned int __uid_t;
+__extension__ typedef unsigned int __gid_t;
+__extension__ typedef unsigned long int __ino_t;
+__extension__ typedef __u_quad_t __ino64_t;
+__extension__ typedef unsigned int __mode_t;
+__extension__ typedef unsigned int __nlink_t;
+__extension__ typedef long int __off_t;
+__extension__ typedef __quad_t __off64_t;
+__extension__ typedef int __pid_t;
+__extension__ typedef struct { int __val[2]; } __fsid_t;
+__extension__ typedef long int __clock_t;
+__extension__ typedef unsigned long int __rlim_t;
+__extension__ typedef __u_quad_t __rlim64_t;
+__extension__ typedef unsigned int __id_t;
+__extension__ typedef long int __time_t;
+__extension__ typedef unsigned int __useconds_t;
+__extension__ typedef long int __suseconds_t;
+__extension__ typedef int __daddr_t;
+__extension__ typedef long int __swblk_t;
+__extension__ typedef int __key_t;
+__extension__ typedef int __clockid_t;
+__extension__ typedef void * __timer_t;
+__extension__ typedef long int __blksize_t;
+__extension__ typedef long int __blkcnt_t;
+__extension__ typedef __quad_t __blkcnt64_t;
+__extension__ typedef unsigned long int __fsblkcnt_t;
+__extension__ typedef __u_quad_t __fsblkcnt64_t;
+__extension__ typedef unsigned long int __fsfilcnt_t;
+__extension__ typedef __u_quad_t __fsfilcnt64_t;
+__extension__ typedef long int __ssize_t;
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+__extension__ typedef int __intptr_t;
+__extension__ typedef unsigned int __socklen_t;
+typedef __kernel_ipc_pid_t __ipc_pid_t;
+struct __sched_param
+ {
+ int __sched_priority;
+ };
+struct _pthread_fastlock
+{
+ long int __status;
+ int __spinlock;
+};
+typedef struct _pthread_descr_struct *_pthread_descr;
+typedef struct __pthread_attr_s
+{
+ int __detachstate;
+ int __schedpolicy;
+ struct __sched_param __schedparam;
+ int __inheritsched;
+ int __scope;
+ size_t __guardsize;
+ int __stackaddr_set;
+ void *__stackaddr;
+ size_t __stacksize;
+} pthread_attr_t;
+typedef struct
+{
+ struct _pthread_fastlock __c_lock;
+ _pthread_descr __c_waiting;
+} pthread_cond_t;
+typedef struct
+{
+ int __dummy;
+} pthread_condattr_t;
+typedef unsigned int pthread_key_t;
+typedef struct
+{
+ int __m_reserved;
+ int __m_count;
+ _pthread_descr __m_owner;
+ int __m_kind;
+ struct _pthread_fastlock __m_lock;
+} pthread_mutex_t;
+typedef struct
+{
+ int __mutexkind;
+} pthread_mutexattr_t;
+typedef int pthread_once_t;
+typedef struct _pthread_rwlock_t
+{
+ struct _pthread_fastlock __rw_lock;
+ int __rw_readers;
+ _pthread_descr __rw_writer;
+ _pthread_descr __rw_read_waiting;
+ _pthread_descr __rw_write_waiting;
+ int __rw_kind;
+ int __rw_pshared;
+} pthread_rwlock_t;
+typedef struct
+{
+ int __lockkind;
+ int __pshared;
+} pthread_rwlockattr_t;
+typedef volatile int pthread_spinlock_t;
+typedef struct {
+ struct _pthread_fastlock __ba_lock;
+ int __ba_required;
+ int __ba_present;
+ _pthread_descr __ba_waiting;
+} pthread_barrier_t;
+typedef struct {
+ int __pshared;
+} pthread_barrierattr_t;
+typedef unsigned long int pthread_t;
+typedef struct __STDIO_FILE_STRUCT FILE;
+typedef struct __STDIO_FILE_STRUCT __FILE;
+struct timespec
+ {
+ __time_t tv_sec;
+ long int tv_nsec;
+ };
+struct sched_param
+ {
+ int __sched_priority;
+ };
+extern "C" {
+extern int clone (int (*__fn) (void *__arg), void *__child_stack,
+ int __flags, void *__arg, ...) throw ();
+}
+typedef unsigned long int __cpu_mask;
+typedef struct
+{
+ __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))];
+} cpu_set_t;
+extern "C" {
+extern int sched_setparam (__pid_t __pid, __const struct sched_param *__param)
+ throw ();
+extern int sched_getparam (__pid_t __pid, struct sched_param *__param) throw ();
+extern int sched_setscheduler (__pid_t __pid, int __policy,
+ __const struct sched_param *__param) throw ();
+extern int sched_getscheduler (__pid_t __pid) throw ();
+extern int sched_yield (void) throw ();
+extern int sched_get_priority_max (int __algorithm) throw ();
+extern int sched_get_priority_min (int __algorithm) throw ();
+extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) throw ();
+extern int sched_setaffinity (__pid_t __pid, size_t __cpusetsize,
+ __const cpu_set_t *__cpuset) throw ();
+extern int sched_getaffinity (__pid_t __pid, size_t __cpusetsize,
+ cpu_set_t *__cpuset) throw ();
+}
+extern "C" {
+typedef __clock_t clock_t;
+typedef __time_t time_t;
+typedef __clockid_t clockid_t;
+typedef __timer_t timer_t;
+struct tm
+{
+ int tm_sec;
+ int tm_min;
+ int tm_hour;
+ int tm_mday;
+ int tm_mon;
+ int tm_year;
+ int tm_wday;
+ int tm_yday;
+ int tm_isdst;
+ long int tm_gmtoff;
+ __const char *tm_zone;
+};
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+struct sigevent;
+typedef __pid_t pid_t;
+extern clock_t clock (void) throw ();
+extern time_t time (time_t *__timer) throw ();
+extern double difftime (time_t __time1, time_t __time0)
+ throw () __attribute__ ((__const__));
+extern time_t mktime (struct tm *__tp) throw ();
+extern size_t strftime (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format,
+ __const struct tm *__restrict __tp) throw ();
+extern char *strptime (__const char *__restrict __s,
+ __const char *__restrict __fmt, struct tm *__tp)
+ throw ();
+extern struct tm *gmtime (__const time_t *__timer) throw ();
+extern struct tm *localtime (__const time_t *__timer) throw ();
+extern struct tm *gmtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) throw ();
+extern struct tm *localtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) throw ();
+extern char *asctime (__const struct tm *__tp) throw ();
+extern char *ctime (__const time_t *__timer) throw ();
+extern char *asctime_r (__const struct tm *__restrict __tp,
+ char *__restrict __buf) throw ();
+extern char *ctime_r (__const time_t *__restrict __timer,
+ char *__restrict __buf) throw ();
+extern char *tzname[2];
+extern void tzset (void) throw ();
+extern int daylight;
+extern long int timezone;
+extern int stime (__const time_t *__when) throw ();
+extern time_t timegm (struct tm *__tp) throw ();
+extern time_t timelocal (struct tm *__tp) throw ();
+extern int dysize (int __year) throw () __attribute__ ((__const__));
+extern int nanosleep (__const struct timespec *__requested_time,
+ struct timespec *__remaining);
+extern int clock_getres (clockid_t __clock_id, struct timespec *__res) throw ();
+extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) throw ();
+extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
+ throw ();
+extern int timer_create (clockid_t __clock_id,
+ struct sigevent *__restrict __evp,
+ timer_t *__restrict __timerid) throw ();
+extern int timer_delete (timer_t __timerid) throw ();
+extern int timer_settime (timer_t __timerid, int __flags,
+ __const struct itimerspec *__restrict __value,
+ struct itimerspec *__restrict __ovalue) throw ();
+extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
+ throw ();
+extern int timer_getoverrun (timer_t __timerid) throw ();
+}
+extern "C" {
+typedef int __sig_atomic_t;
+typedef struct
+ {
+ unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+ } __sigset_t;
+typedef __sigset_t sigset_t;
+}
+extern "C" {
+enum
+{
+ PTHREAD_CREATE_JOINABLE,
+ PTHREAD_CREATE_DETACHED
+};
+enum
+{
+ PTHREAD_INHERIT_SCHED,
+ PTHREAD_EXPLICIT_SCHED
+};
+enum
+{
+ PTHREAD_SCOPE_SYSTEM,
+ PTHREAD_SCOPE_PROCESS
+};
+enum
+{
+ PTHREAD_MUTEX_ADAPTIVE_NP,
+ PTHREAD_MUTEX_RECURSIVE_NP,
+ PTHREAD_MUTEX_ERRORCHECK_NP,
+ PTHREAD_MUTEX_TIMED_NP
+ ,
+ PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_ADAPTIVE_NP,
+ PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
+ PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
+ PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
+ , PTHREAD_MUTEX_FAST_NP = PTHREAD_MUTEX_ADAPTIVE_NP
+};
+enum
+{
+ PTHREAD_PROCESS_PRIVATE,
+ PTHREAD_PROCESS_SHARED
+};
+enum
+{
+ PTHREAD_RWLOCK_PREFER_READER_NP,
+ PTHREAD_RWLOCK_PREFER_WRITER_NP,
+ PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP,
+ PTHREAD_RWLOCK_DEFAULT_NP = PTHREAD_RWLOCK_PREFER_WRITER_NP
+};
+struct _pthread_cleanup_buffer
+{
+ void (*__routine) (void *);
+ void *__arg;
+ int __canceltype;
+ struct _pthread_cleanup_buffer *__prev;
+};
+enum
+{
+ PTHREAD_CANCEL_ENABLE,
+ PTHREAD_CANCEL_DISABLE
+};
+enum
+{
+ PTHREAD_CANCEL_DEFERRED,
+ PTHREAD_CANCEL_ASYNCHRONOUS
+};
+extern int pthread_create (pthread_t *__restrict __threadp,
+ __const pthread_attr_t *__restrict __attr,
+ void *(*__start_routine) (void *),
+ void *__restrict __arg) throw ();
+extern pthread_t pthread_self (void) throw ();
+extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ();
+extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));
+extern int pthread_join (pthread_t __th, void **__thread_return);
+extern int pthread_detach (pthread_t __th) throw ();
+extern int pthread_attr_init (pthread_attr_t *__attr) throw ();
+extern int pthread_attr_destroy (pthread_attr_t *__attr) throw ();
+extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,
+ int __detachstate) throw ();
+extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,
+ int *__detachstate) throw ();
+extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,
+ __const struct sched_param *__restrict
+ __param) throw ();
+extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict
+ __attr,
+ struct sched_param *__restrict __param)
+ throw ();
+extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)
+ throw ();
+extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict
+ __attr, int *__restrict __policy)
+ throw ();
+extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,
+ int __inherit) throw ();
+extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict
+ __attr, int *__restrict __inherit)
+ throw ();
+extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)
+ throw ();
+extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,
+ int *__restrict __scope) throw ();
+extern int pthread_attr_setguardsize (pthread_attr_t *__attr,
+ size_t __guardsize) throw ();
+extern int pthread_attr_getguardsize (__const pthread_attr_t *__restrict
+ __attr, size_t *__restrict __guardsize)
+ throw ();
+extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,
+ void *__stackaddr) throw ();
+extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict
+ __attr, void **__restrict __stackaddr)
+ throw ();
+extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,
+ size_t __stacksize) throw ();
+extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,
+ void **__restrict __stackaddr,
+ size_t *__restrict __stacksize) throw ();
+extern int pthread_attr_setstacksize (pthread_attr_t *__attr,
+ size_t __stacksize) throw ();
+extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict
+ __attr, size_t *__restrict __stacksize)
+ throw ();
+extern int pthread_setschedparam (pthread_t __target_thread, int __policy,
+ __const struct sched_param *__param)
+ throw ();
+extern int pthread_getschedparam (pthread_t __target_thread,
+ int *__restrict __policy,
+ struct sched_param *__restrict __param)
+ throw ();
+extern int pthread_getconcurrency (void) throw ();
+extern int pthread_setconcurrency (int __level) throw ();
+extern int pthread_mutex_init (pthread_mutex_t *__restrict __mutex,
+ __const pthread_mutexattr_t *__restrict
+ __mutex_attr) throw ();
+extern int pthread_mutex_destroy (pthread_mutex_t *__mutex) throw ();
+extern int pthread_mutex_trylock (pthread_mutex_t *__mutex) throw ();
+extern int pthread_mutex_lock (pthread_mutex_t *__mutex) throw ();
+extern int pthread_mutex_timedlock (pthread_mutex_t *__restrict __mutex,
+ __const struct timespec *__restrict
+ __abstime) throw ();
+extern int pthread_mutex_unlock (pthread_mutex_t *__mutex) throw ();
+extern int pthread_mutexattr_init (pthread_mutexattr_t *__attr) throw ();
+extern int pthread_mutexattr_destroy (pthread_mutexattr_t *__attr) throw ();
+extern int pthread_mutexattr_getpshared (__const pthread_mutexattr_t *
+ __restrict __attr,
+ int *__restrict __pshared) throw ();
+extern int pthread_mutexattr_setpshared (pthread_mutexattr_t *__attr,
+ int __pshared) throw ();
+extern int pthread_mutexattr_settype (pthread_mutexattr_t *__attr, int __kind)
+ throw ();
+extern int pthread_mutexattr_gettype (__const pthread_mutexattr_t *__restrict
+ __attr, int *__restrict __kind) throw ();
+extern int pthread_cond_init (pthread_cond_t *__restrict __cond,
+ __const pthread_condattr_t *__restrict
+ __cond_attr) throw ();
+extern int pthread_cond_destroy (pthread_cond_t *__cond) throw ();
+extern int pthread_cond_signal (pthread_cond_t *__cond) throw ();
+extern int pthread_cond_broadcast (pthread_cond_t *__cond) throw ();
+extern int pthread_cond_wait (pthread_cond_t *__restrict __cond,
+ pthread_mutex_t *__restrict __mutex);
+extern int pthread_cond_timedwait (pthread_cond_t *__restrict __cond,
+ pthread_mutex_t *__restrict __mutex,
+ __const struct timespec *__restrict
+ __abstime);
+extern int pthread_condattr_init (pthread_condattr_t *__attr) throw ();
+extern int pthread_condattr_destroy (pthread_condattr_t *__attr) throw ();
+extern int pthread_condattr_getpshared (__const pthread_condattr_t *
+ __restrict __attr,
+ int *__restrict __pshared) throw ();
+extern int pthread_condattr_setpshared (pthread_condattr_t *__attr,
+ int __pshared) throw ();
+extern int pthread_rwlock_init (pthread_rwlock_t *__restrict __rwlock,
+ __const pthread_rwlockattr_t *__restrict
+ __attr) throw ();
+extern int pthread_rwlock_destroy (pthread_rwlock_t *__rwlock) throw ();
+extern int pthread_rwlock_rdlock (pthread_rwlock_t *__rwlock) throw ();
+extern int pthread_rwlock_tryrdlock (pthread_rwlock_t *__rwlock) throw ();
+extern int pthread_rwlock_timedrdlock (pthread_rwlock_t *__restrict __rwlock,
+ __const struct timespec *__restrict
+ __abstime) throw ();
+extern int pthread_rwlock_wrlock (pthread_rwlock_t *__rwlock) throw ();
+extern int pthread_rwlock_trywrlock (pthread_rwlock_t *__rwlock) throw ();
+extern int pthread_rwlock_timedwrlock (pthread_rwlock_t *__restrict __rwlock,
+ __const struct timespec *__restrict
+ __abstime) throw ();
+extern int pthread_rwlock_unlock (pthread_rwlock_t *__rwlock) throw ();
+extern int pthread_rwlockattr_init (pthread_rwlockattr_t *__attr) throw ();
+extern int pthread_rwlockattr_destroy (pthread_rwlockattr_t *__attr) throw ();
+extern int pthread_rwlockattr_getpshared (__const pthread_rwlockattr_t *
+ __restrict __attr,
+ int *__restrict __pshared) throw ();
+extern int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *__attr,
+ int __pshared) throw ();
+extern int pthread_rwlockattr_getkind_np (__const pthread_rwlockattr_t *__attr,
+ int *__pref) throw ();
+extern int pthread_rwlockattr_setkind_np (pthread_rwlockattr_t *__attr,
+ int __pref) throw ();
+extern int pthread_key_create (pthread_key_t *__key,
+ void (*__destr_function) (void *)) throw ();
+extern int pthread_key_delete (pthread_key_t __key) throw ();
+extern int pthread_setspecific (pthread_key_t __key,
+ __const void *__pointer) throw ();
+extern void *pthread_getspecific (pthread_key_t __key) throw ();
+extern int pthread_once (pthread_once_t *__once_control,
+ void (*__init_routine) (void));
+extern int pthread_setcancelstate (int __state, int *__oldstate);
+extern int pthread_setcanceltype (int __type, int *__oldtype);
+extern int pthread_cancel (pthread_t __cancelthread);
+extern void pthread_testcancel (void);
+extern void _pthread_cleanup_push (struct _pthread_cleanup_buffer *__buffer,
+ void (*__routine) (void *),
+ void *__arg) throw ();
+extern void _pthread_cleanup_pop (struct _pthread_cleanup_buffer *__buffer,
+ int __execute) throw ();
+extern void _pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *__buffer,
+ void (*__routine) (void *),
+ void *__arg) throw ();
+extern void __pthread_cleanup_push_defer (struct _pthread_cleanup_buffer *__buffer,
+ void (*__routine) (void *),
+ void *__arg) throw ();
+extern void _pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *__buffer,
+ int __execute) throw ();
+extern void __pthread_cleanup_pop_restore (struct _pthread_cleanup_buffer *__buffer,
+ int __execute) throw ();
+extern int pthread_sigmask (int __how,
+ __const __sigset_t *__restrict __newmask,
+ __sigset_t *__restrict __oldmask)throw ();
+extern int pthread_kill (pthread_t __threadid, int __signo) throw ();
+extern int pthread_atfork (void (*__prepare) (void),
+ void (*__parent) (void),
+ void (*__child) (void)) throw ();
+extern void pthread_kill_other_threads_np (void) throw ();
+}
+typedef struct {
+ __off_t __pos;
+} __STDIO_fpos_t;
+typedef struct {
+ __off64_t __pos;
+} __STDIO_fpos64_t;
+typedef __off64_t __offmax_t;
+struct __STDIO_FILE_STRUCT {
+ unsigned short __modeflags;
+ unsigned char __ungot[2];
+ int __filedes;
+ unsigned char *__bufstart;
+ unsigned char *__bufend;
+ unsigned char *__bufpos;
+ unsigned char *__bufread;
+ unsigned char *__bufgetc_u;
+ unsigned char *__bufputc_u;
+ struct __STDIO_FILE_STRUCT *__nextopen;
+ int __user_locking;
+ pthread_mutex_t __lock;
+};
+extern int __fgetc_unlocked(FILE *__stream);
+extern int __fputc_unlocked(int __c, FILE *__stream);
+extern FILE *__stdin;
+extern FILE *__stdout;
+typedef __builtin_va_list __gnuc_va_list;
+typedef __STDIO_fpos_t fpos_t;
+typedef __STDIO_fpos64_t fpos64_t;
+extern FILE *stdin;
+extern FILE *stdout;
+extern FILE *stderr;
+extern int remove (__const char *__filename) throw ();
+extern int rename (__const char *__old, __const char *__new) throw ();
+extern FILE *tmpfile (void) ;
+extern FILE *tmpfile64 (void) ;
+extern char *tmpnam (char *__s) throw () ;
+extern char *tmpnam_r (char *__s) throw () ;
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+ throw () __attribute__ ((__malloc__)) ;
+extern int fclose (FILE *__stream);
+extern int fflush (FILE *__stream);
+extern int fflush_unlocked (FILE *__stream);
+extern int fcloseall (void);
+extern FILE *fopen (__const char *__restrict __filename,
+ __const char *__restrict __modes) ;
+extern FILE *freopen (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) ;
+extern FILE *fopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes) ;
+extern FILE *freopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) ;
+extern FILE *fdopen (int __fd, __const char *__modes) throw () ;
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw ();
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+ int __modes, size_t __n) throw ();
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+ size_t __size) throw ();
+extern void setlinebuf (FILE *__stream) throw ();
+extern int fprintf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...);
+extern int printf (__const char *__restrict __format, ...);
+extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) throw ();
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg);
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg) throw ();
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...)
+ throw () __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ throw () __attribute__ ((__format__ (__printf__, 3, 0)));
+extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
+ __gnuc_va_list __arg)
+ throw () __attribute__ ((__format__ (__printf__, 2, 0))) ;
+extern int asprintf (char **__restrict __ptr,
+ __const char *__restrict __fmt, ...)
+ throw () __attribute__ ((__format__ (__printf__, 2, 3))) ;
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) ;
+extern int scanf (__const char *__restrict __format, ...) ;
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) throw ();
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 2, 0))) ;
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 1, 0))) ;
+extern int vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ throw () __attribute__ ((__format__ (__scanf__, 2, 0)));
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+extern int getchar (void);
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+extern int fgetc_unlocked (FILE *__stream);
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+extern int putchar (int __c);
+extern int fputc_unlocked (int __c, FILE *__stream);
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+extern int getw (FILE *__stream);
+extern int putw (int __w, FILE *__stream);
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+ ;
+extern char *gets (char *__s) ;
+extern char *fgets_unlocked (char *__restrict __s, int __n,
+ FILE *__restrict __stream) ;
+extern __ssize_t getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+extern __ssize_t getline (char **__restrict __lineptr,
+ size_t *__restrict __n,
+ FILE *__restrict __stream) ;
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+extern int puts (__const char *__s);
+extern int ungetc (int __c, FILE *__stream);
+extern size_t fread (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __s) ;
+extern int fputs_unlocked (__const char *__restrict __s,
+ FILE *__restrict __stream);
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern int fseek (FILE *__stream, long int __off, int __whence);
+extern long int ftell (FILE *__stream) ;
+extern void rewind (FILE *__stream);
+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
+extern __off_t ftello (FILE *__stream) ;
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
+extern __off64_t ftello64 (FILE *__stream) ;
+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
+extern void clearerr (FILE *__stream) throw ();
+extern int feof (FILE *__stream) throw () ;
+extern int ferror (FILE *__stream) throw () ;
+extern void clearerr_unlocked (FILE *__stream) throw ();
+extern int feof_unlocked (FILE *__stream) throw () ;
+extern int ferror_unlocked (FILE *__stream) throw () ;
+extern void perror (__const char *__s);
+extern int fileno (FILE *__stream) throw () ;
+extern int fileno_unlocked (FILE *__stream) throw () ;
+extern FILE *popen (__const char *__command, __const char *__modes) ;
+extern int pclose (FILE *__stream);
+extern char *ctermid (char *__s) throw ();
+extern char *cuserid (char *__s);
+extern void flockfile (FILE *__stream) throw ();
+extern int ftrylockfile (FILE *__stream) throw () ;
+extern void funlockfile (FILE *__stream) throw ();
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ using ::FILE;
+ using ::fpos_t;
+ using ::clearerr;
+ using ::fclose;
+ using ::feof;
+ using ::ferror;
+ using ::fflush;
+ using ::fgetc;
+ using ::fgetpos;
+ using ::fgets;
+ using ::fopen;
+ using ::fprintf;
+ using ::fputc;
+ using ::fputs;
+ using ::fread;
+ using ::freopen;
+ using ::fscanf;
+ using ::fseek;
+ using ::fsetpos;
+ using ::ftell;
+ using ::fwrite;
+ using ::getc;
+ using ::getchar;
+ using ::gets;
+ using ::perror;
+ using ::printf;
+ using ::putc;
+ using ::putchar;
+ using ::puts;
+ using ::remove;
+ using ::rename;
+ using ::rewind;
+ using ::scanf;
+ using ::setbuf;
+ using ::setvbuf;
+ using ::sprintf;
+ using ::sscanf;
+ using ::tmpfile;
+ using ::tmpnam;
+ using ::ungetc;
+ using ::vfprintf;
+ using ::vprintf;
+ using ::vsprintf;
+}
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT>
+ struct _Char_types
+ {
+ typedef unsigned long int_type;
+ typedef std::streampos pos_type;
+ typedef std::streamoff off_type;
+ typedef std::mbstate_t state_type;
+ };
+ template<typename _CharT>
+ struct char_traits
+ {
+ typedef _CharT char_type;
+ typedef typename _Char_types<_CharT>::int_type int_type;
+ typedef typename _Char_types<_CharT>::pos_type pos_type;
+ typedef typename _Char_types<_CharT>::off_type off_type;
+ typedef typename _Char_types<_CharT>::state_type state_type;
+ static void
+ assign(char_type& __c1, const char_type& __c2)
+ { __c1 = __c2; }
+ static bool
+ eq(const char_type& __c1, const char_type& __c2)
+ { return __c1 == __c2; }
+ static bool
+ lt(const char_type& __c1, const char_type& __c2)
+ { return __c1 < __c2; }
+ static int
+ compare(const char_type* __s1, const char_type* __s2, std::size_t __n);
+ static std::size_t
+ length(const char_type* __s);
+ static const char_type*
+ find(const char_type* __s, std::size_t __n, const char_type& __a);
+ static char_type*
+ move(char_type* __s1, const char_type* __s2, std::size_t __n);
+ static char_type*
+ copy(char_type* __s1, const char_type* __s2, std::size_t __n);
+ static char_type*
+ assign(char_type* __s, std::size_t __n, char_type __a);
+ static char_type
+ to_char_type(const int_type& __c)
+ { return static_cast<char_type>(__c); }
+ static int_type
+ to_int_type(const char_type& __c)
+ { return static_cast<int_type>(__c); }
+ static bool
+ eq_int_type(const int_type& __c1, const int_type& __c2)
+ { return __c1 == __c2; }
+ static int_type
+ eof()
+ { return static_cast<int_type>((-1)); }
+ static int_type
+ not_eof(const int_type& __c)
+ { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }
+ };
+ template<typename _CharT>
+ int
+ char_traits<_CharT>::
+ compare(const char_type* __s1, const char_type* __s2, std::size_t __n)
+ {
+ for (std::size_t __i = 0; __i < __n; ++__i)
+ if (lt(__s1[__i], __s2[__i]))
+ return -1;
+ else if (lt(__s2[__i], __s1[__i]))
+ return 1;
+ return 0;
+ }
+ template<typename _CharT>
+ std::size_t
+ char_traits<_CharT>::
+ length(const char_type* __p)
+ {
+ std::size_t __i = 0;
+ while (!eq(__p[__i], char_type()))
+ ++__i;
+ return __i;
+ }
+ template<typename _CharT>
+ const typename char_traits<_CharT>::char_type*
+ char_traits<_CharT>::
+ find(const char_type* __s, std::size_t __n, const char_type& __a)
+ {
+ for (std::size_t __i = 0; __i < __n; ++__i)
+ if (eq(__s[__i], __a))
+ return __s + __i;
+ return 0;
+ }
+ template<typename _CharT>
+ typename char_traits<_CharT>::char_type*
+ char_traits<_CharT>::
+ move(char_type* __s1, const char_type* __s2, std::size_t __n)
+ {
+ return static_cast<_CharT*>(__builtin_memmove(__s1, __s2,
+ __n * sizeof(char_type)));
+ }
+ template<typename _CharT>
+ typename char_traits<_CharT>::char_type*
+ char_traits<_CharT>::
+ copy(char_type* __s1, const char_type* __s2, std::size_t __n)
+ {
+ std::copy(__s2, __s2 + __n, __s1);
+ return __s1;
+ }
+ template<typename _CharT>
+ typename char_traits<_CharT>::char_type*
+ char_traits<_CharT>::
+ assign(char_type* __s, std::size_t __n, char_type __a)
+ {
+ std::fill_n(__s, __n, __a);
+ return __s;
+ }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<class _CharT>
+ struct char_traits : public __gnu_cxx::char_traits<_CharT>
+ { };
+ template<>
+ struct char_traits<char>
+ {
+ typedef char char_type;
+ typedef int int_type;
+ typedef streampos pos_type;
+ typedef streamoff off_type;
+ typedef mbstate_t state_type;
+ static void
+ assign(char_type& __c1, const char_type& __c2)
+ { __c1 = __c2; }
+ static bool
+ eq(const char_type& __c1, const char_type& __c2)
+ { return __c1 == __c2; }
+ static bool
+ lt(const char_type& __c1, const char_type& __c2)
+ { return __c1 < __c2; }
+ static int
+ compare(const char_type* __s1, const char_type* __s2, size_t __n)
+ { return __builtin_memcmp(__s1, __s2, __n); }
+ static size_t
+ length(const char_type* __s)
+ { return __builtin_strlen(__s); }
+ static const char_type*
+ find(const char_type* __s, size_t __n, const char_type& __a)
+ { return static_cast<const char_type*>(__builtin_memchr(__s, __a, __n)); }
+ static char_type*
+ move(char_type* __s1, const char_type* __s2, size_t __n)
+ { return static_cast<char_type*>(__builtin_memmove(__s1, __s2, __n)); }
+ static char_type*
+ copy(char_type* __s1, const char_type* __s2, size_t __n)
+ { return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); }
+ static char_type*
+ assign(char_type* __s, size_t __n, char_type __a)
+ { return static_cast<char_type*>(__builtin_memset(__s, __a, __n)); }
+ static char_type
+ to_char_type(const int_type& __c)
+ { return static_cast<char_type>(__c); }
+ static int_type
+ to_int_type(const char_type& __c)
+ { return static_cast<int_type>(static_cast<unsigned char>(__c)); }
+ static bool
+ eq_int_type(const int_type& __c1, const int_type& __c2)
+ { return __c1 == __c2; }
+ static int_type
+ eof() { return static_cast<int_type>((-1)); }
+ static int_type
+ not_eof(const int_type& __c)
+ { return (__c == eof()) ? 0 : __c; }
+ };
+}
+extern "C" {
+struct lconv
+{
+ char *decimal_point;
+ char *thousands_sep;
+ char *grouping;
+ char *int_curr_symbol;
+ char *currency_symbol;
+ char *mon_decimal_point;
+ char *mon_thousands_sep;
+ char *mon_grouping;
+ char *positive_sign;
+ char *negative_sign;
+ char int_frac_digits;
+ char frac_digits;
+ char p_cs_precedes;
+ char p_sep_by_space;
+ char n_cs_precedes;
+ char n_sep_by_space;
+ char p_sign_posn;
+ char n_sign_posn;
+ char int_p_cs_precedes;
+ char int_p_sep_by_space;
+ char int_n_cs_precedes;
+ char int_n_sep_by_space;
+ char int_p_sign_posn;
+ char int_n_sign_posn;
+};
+extern char *setlocale (int __category, __const char *__locale) throw ();
+extern struct lconv *localeconv (void) throw ();
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ using ::lconv;
+ using ::setlocale;
+ using ::localeconv;
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ typedef int* __c_locale;
+ inline int
+ __convert_from_v(const __c_locale&, char* __out,
+ const int __size __attribute__((__unused__)),
+ const char* __fmt, ...)
+ {
+ char* __old = std::setlocale(1, __null);
+ char* __sav = __null;
+ if (__builtin_strcmp(__old, "C"))
+ {
+ const size_t __len = __builtin_strlen(__old) + 1;
+ __sav = new char[__len];
+ __builtin_memcpy(__sav, __old, __len);
+ std::setlocale(1, "C");
+ }
+ __builtin_va_list __args;
+ __builtin_va_start(__args, __fmt);
+ const int __ret = __builtin_vsprintf(__out, __fmt, __args);
+ __builtin_va_end(__args);
+ if (__sav)
+ {
+ std::setlocale(1, __sav);
+ delete [] __sav;
+ }
+ return __ret;
+ }
+}
+extern "C" {
+enum
+{
+ _ISupper = (1 << (0)),
+ _ISlower = (1 << (1)),
+ _ISalpha = (1 << (2)),
+ _ISdigit = (1 << (3)),
+ _ISxdigit = (1 << (4)),
+ _ISspace = (1 << (5)),
+ _ISprint = (1 << (6)),
+ _ISgraph = (1 << (7)),
+ _ISblank = (1 << (8)),
+ _IScntrl = (1 << (9)),
+ _ISpunct = (1 << (10)),
+ _ISalnum = (1 << (11))
+};
+typedef __uint16_t __ctype_mask_t;
+typedef __int16_t __ctype_touplow_t;
+extern const __ctype_mask_t *__C_ctype_b;
+extern const __ctype_touplow_t *__C_ctype_toupper;
+extern const __ctype_touplow_t *__C_ctype_tolower;
+extern const __ctype_mask_t *__ctype_b;
+extern const __ctype_touplow_t *__ctype_toupper;
+extern const __ctype_touplow_t *__ctype_tolower;
+extern int isalnum (int) throw ();
+extern int isalpha (int) throw ();
+extern int iscntrl (int) throw ();
+extern int isdigit (int) throw ();
+extern int islower (int) throw ();
+extern int isgraph (int) throw ();
+extern int isprint (int) throw ();
+extern int ispunct (int) throw ();
+extern int isspace (int) throw ();
+extern int isupper (int) throw ();
+extern int isxdigit (int) throw ();
+extern int tolower (int __c) throw ();
+extern int toupper (int __c) throw ();
+extern int isblank (int) throw ();
+extern int isctype (int __c, int __mask) throw ();
+extern int isascii (int __c) throw ();
+extern int toascii (int __c) throw ();
+extern int _toupper (int) throw ();
+extern int _tolower (int) throw ();
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ using ::isalnum;
+ using ::isalpha;
+ using ::iscntrl;
+ using ::isdigit;
+ using ::isgraph;
+ using ::islower;
+ using ::isprint;
+ using ::ispunct;
+ using ::isspace;
+ using ::isupper;
+ using ::isxdigit;
+ using ::tolower;
+ using ::toupper;
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ class locale;
+ template<typename _Facet>
+ bool
+ has_facet(const locale&) throw();
+ template<typename _Facet>
+ const _Facet&
+ use_facet(const locale&);
+ template<typename _CharT>
+ bool
+ isspace(_CharT, const locale&);
+ template<typename _CharT>
+ bool
+ isprint(_CharT, const locale&);
+ template<typename _CharT>
+ bool
+ iscntrl(_CharT, const locale&);
+ template<typename _CharT>
+ bool
+ isupper(_CharT, const locale&);
+ template<typename _CharT>
+ bool
+ islower(_CharT, const locale&);
+ template<typename _CharT>
+ bool
+ isalpha(_CharT, const locale&);
+ template<typename _CharT>
+ bool
+ isdigit(_CharT, const locale&);
+ template<typename _CharT>
+ bool
+ ispunct(_CharT, const locale&);
+ template<typename _CharT>
+ bool
+ isxdigit(_CharT, const locale&);
+ template<typename _CharT>
+ bool
+ isalnum(_CharT, const locale&);
+ template<typename _CharT>
+ bool
+ isgraph(_CharT, const locale&);
+ template<typename _CharT>
+ _CharT
+ toupper(_CharT, const locale&);
+ template<typename _CharT>
+ _CharT
+ tolower(_CharT, const locale&);
+ class ctype_base;
+ template<typename _CharT>
+ class ctype;
+ template<> class ctype<char>;
+ template<typename _CharT>
+ class ctype_byname;
+ class codecvt_base;
+ template<typename _InternT, typename _ExternT, typename _StateT>
+ class codecvt;
+ template<> class codecvt<char, char, mbstate_t>;
+ template<typename _InternT, typename _ExternT, typename _StateT>
+ class codecvt_byname;
+ template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
+ class num_get;
+ template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+ class num_put;
+ template<typename _CharT> class numpunct;
+ template<typename _CharT> class numpunct_byname;
+ template<typename _CharT>
+ class collate;
+ template<typename _CharT> class
+ collate_byname;
+ class time_base;
+ template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
+ class time_get;
+ template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
+ class time_get_byname;
+ template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+ class time_put;
+ template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+ class time_put_byname;
+ class money_base;
+ template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
+ class money_get;
+ template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
+ class money_put;
+ template<typename _CharT, bool _Intl = false>
+ class moneypunct;
+ template<typename _CharT, bool _Intl = false>
+ class moneypunct_byname;
+ class messages_base;
+ template<typename _CharT>
+ class messages;
+ template<typename _CharT>
+ class messages_byname;
+}
+extern "C" {
+typedef __ssize_t ssize_t;
+typedef __gid_t gid_t;
+typedef __uid_t uid_t;
+typedef __off_t off_t;
+typedef __off64_t off64_t;
+typedef __useconds_t useconds_t;
+typedef __socklen_t socklen_t;
+extern int access (__const char *__name, int __type) throw () __attribute__ ((__nonnull__ (1)));
+extern __off_t lseek (int __fd, __off_t __offset, int __whence) throw ();
+extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
+ throw ();
+extern int close (int __fd);
+extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;
+extern ssize_t write (int __fd, __const void *__buf, size_t __n) ;
+extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
+ __off_t __offset) ;
+extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,
+ __off_t __offset) ;
+extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
+ __off64_t __offset) ;
+extern ssize_t pwrite64 (int __fd, __const void *__buf, size_t __n,
+ __off64_t __offset) ;
+extern int pipe (int __pipedes[2]) throw () ;
+extern unsigned int alarm (unsigned int __seconds) throw ();
+extern unsigned int sleep (unsigned int __seconds);
+extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
+ throw ();
+extern int usleep (__useconds_t __useconds);
+extern int pause (void);
+extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern int fchown (int __fd, __uid_t __owner, __gid_t __group) throw () ;
+extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern int chdir (__const char *__path) throw () __attribute__ ((__nonnull__ (1))) ;
+extern int fchdir (int __fd) throw () ;
+extern char *getcwd (char *__buf, size_t __size) throw () ;
+extern char *get_current_dir_name (void) throw ();
+extern int dup (int __fd) throw () ;
+extern int dup2 (int __fd, int __fd2) throw ();
+extern char **__environ;
+extern char **environ;
+extern int execve (__const char *__path, char *__const __argv[],
+ char *__const __envp[]) throw () __attribute__ ((__nonnull__ (1)));
+extern int execv (__const char *__path, char *__const __argv[])
+ throw () __attribute__ ((__nonnull__ (1)));
+extern int execle (__const char *__path, __const char *__arg, ...)
+ throw () __attribute__ ((__nonnull__ (1)));
+extern int execl (__const char *__path, __const char *__arg, ...)
+ throw () __attribute__ ((__nonnull__ (1)));
+extern int execvp (__const char *__file, char *__const __argv[])
+ throw () __attribute__ ((__nonnull__ (1)));
+extern int execlp (__const char *__file, __const char *__arg, ...)
+ throw () __attribute__ ((__nonnull__ (1)));
+extern int nice (int __inc) throw () ;
+extern void _exit (int __status) __attribute__ ((__noreturn__));
+enum
+ {
+ _PC_LINK_MAX,
+ _PC_MAX_CANON,
+ _PC_MAX_INPUT,
+ _PC_NAME_MAX,
+ _PC_PATH_MAX,
+ _PC_PIPE_BUF,
+ _PC_CHOWN_RESTRICTED,
+ _PC_NO_TRUNC,
+ _PC_VDISABLE,
+ _PC_SYNC_IO,
+ _PC_ASYNC_IO,
+ _PC_PRIO_IO,
+ _PC_SOCK_MAXBUF,
+ _PC_FILESIZEBITS,
+ _PC_REC_INCR_XFER_SIZE,
+ _PC_REC_MAX_XFER_SIZE,
+ _PC_REC_MIN_XFER_SIZE,
+ _PC_REC_XFER_ALIGN,
+ _PC_ALLOC_SIZE_MIN,
+ _PC_SYMLINK_MAX,
+ _PC_2_SYMLINKS
+ };
+enum
+ {
+ _SC_ARG_MAX,
+ _SC_CHILD_MAX,
+ _SC_CLK_TCK,
+ _SC_NGROUPS_MAX,
+ _SC_OPEN_MAX,
+ _SC_STREAM_MAX,
+ _SC_TZNAME_MAX,
+ _SC_JOB_CONTROL,
+ _SC_SAVED_IDS,
+ _SC_REALTIME_SIGNALS,
+ _SC_PRIORITY_SCHEDULING,
+ _SC_TIMERS,
+ _SC_ASYNCHRONOUS_IO,
+ _SC_PRIORITIZED_IO,
+ _SC_SYNCHRONIZED_IO,
+ _SC_FSYNC,
+ _SC_MAPPED_FILES,
+ _SC_MEMLOCK,
+ _SC_MEMLOCK_RANGE,
+ _SC_MEMORY_PROTECTION,
+ _SC_MESSAGE_PASSING,
+ _SC_SEMAPHORES,
+ _SC_SHARED_MEMORY_OBJECTS,
+ _SC_AIO_LISTIO_MAX,
+ _SC_AIO_MAX,
+ _SC_AIO_PRIO_DELTA_MAX,
+ _SC_DELAYTIMER_MAX,
+ _SC_MQ_OPEN_MAX,
+ _SC_MQ_PRIO_MAX,
+ _SC_VERSION,
+ _SC_PAGESIZE,
+ _SC_RTSIG_MAX,
+ _SC_SEM_NSEMS_MAX,
+ _SC_SEM_VALUE_MAX,
+ _SC_SIGQUEUE_MAX,
+ _SC_TIMER_MAX,
+ _SC_BC_BASE_MAX,
+ _SC_BC_DIM_MAX,
+ _SC_BC_SCALE_MAX,
+ _SC_BC_STRING_MAX,
+ _SC_COLL_WEIGHTS_MAX,
+ _SC_EQUIV_CLASS_MAX,
+ _SC_EXPR_NEST_MAX,
+ _SC_LINE_MAX,
+ _SC_RE_DUP_MAX,
+ _SC_CHARCLASS_NAME_MAX,
+ _SC_2_VERSION,
+ _SC_2_C_BIND,
+ _SC_2_C_DEV,
+ _SC_2_FORT_DEV,
+ _SC_2_FORT_RUN,
+ _SC_2_SW_DEV,
+ _SC_2_LOCALEDEF,
+ _SC_PII,
+ _SC_PII_XTI,
+ _SC_PII_SOCKET,
+ _SC_PII_INTERNET,
+ _SC_PII_OSI,
+ _SC_POLL,
+ _SC_SELECT,
+ _SC_UIO_MAXIOV,
+ _SC_IOV_MAX = _SC_UIO_MAXIOV,
+ _SC_PII_INTERNET_STREAM,
+ _SC_PII_INTERNET_DGRAM,
+ _SC_PII_OSI_COTS,
+ _SC_PII_OSI_CLTS,
+ _SC_PII_OSI_M,
+ _SC_T_IOV_MAX,
+ _SC_THREADS,
+ _SC_THREAD_SAFE_FUNCTIONS,
+ _SC_GETGR_R_SIZE_MAX,
+ _SC_GETPW_R_SIZE_MAX,
+ _SC_LOGIN_NAME_MAX,
+ _SC_TTY_NAME_MAX,
+ _SC_THREAD_DESTRUCTOR_ITERATIONS,
+ _SC_THREAD_KEYS_MAX,
+ _SC_THREAD_STACK_MIN,
+ _SC_THREAD_THREADS_MAX,
+ _SC_THREAD_ATTR_STACKADDR,
+ _SC_THREAD_ATTR_STACKSIZE,
+ _SC_THREAD_PRIORITY_SCHEDULING,
+ _SC_THREAD_PRIO_INHERIT,
+ _SC_THREAD_PRIO_PROTECT,
+ _SC_THREAD_PROCESS_SHARED,
+ _SC_NPROCESSORS_CONF,
+ _SC_NPROCESSORS_ONLN,
+ _SC_PHYS_PAGES,
+ _SC_AVPHYS_PAGES,
+ _SC_ATEXIT_MAX,
+ _SC_PASS_MAX,
+ _SC_XOPEN_VERSION,
+ _SC_XOPEN_XCU_VERSION,
+ _SC_XOPEN_UNIX,
+ _SC_XOPEN_CRYPT,
+ _SC_XOPEN_ENH_I18N,
+ _SC_XOPEN_SHM,
+ _SC_2_CHAR_TERM,
+ _SC_2_C_VERSION,
+ _SC_2_UPE,
+ _SC_XOPEN_XPG2,
+ _SC_XOPEN_XPG3,
+ _SC_XOPEN_XPG4,
+ _SC_CHAR_BIT,
+ _SC_CHAR_MAX,
+ _SC_CHAR_MIN,
+ _SC_INT_MAX,
+ _SC_INT_MIN,
+ _SC_LONG_BIT,
+ _SC_WORD_BIT,
+ _SC_MB_LEN_MAX,
+ _SC_NZERO,
+ _SC_SSIZE_MAX,
+ _SC_SCHAR_MAX,
+ _SC_SCHAR_MIN,
+ _SC_SHRT_MAX,
+ _SC_SHRT_MIN,
+ _SC_UCHAR_MAX,
+ _SC_UINT_MAX,
+ _SC_ULONG_MAX,
+ _SC_USHRT_MAX,
+ _SC_NL_ARGMAX,
+ _SC_NL_LANGMAX,
+ _SC_NL_MSGMAX,
+ _SC_NL_NMAX,
+ _SC_NL_SETMAX,
+ _SC_NL_TEXTMAX,
+ _SC_XBS5_ILP32_OFF32,
+ _SC_XBS5_ILP32_OFFBIG,
+ _SC_XBS5_LP64_OFF64,
+ _SC_XBS5_LPBIG_OFFBIG,
+ _SC_XOPEN_LEGACY,
+ _SC_XOPEN_REALTIME,
+ _SC_XOPEN_REALTIME_THREADS,
+ _SC_ADVISORY_INFO,
+ _SC_BARRIERS,
+ _SC_BASE,
+ _SC_C_LANG_SUPPORT,
+ _SC_C_LANG_SUPPORT_R,
+ _SC_CLOCK_SELECTION,
+ _SC_CPUTIME,
+ _SC_THREAD_CPUTIME,
+ _SC_DEVICE_IO,
+ _SC_DEVICE_SPECIFIC,
+ _SC_DEVICE_SPECIFIC_R,
+ _SC_FD_MGMT,
+ _SC_FIFO,
+ _SC_PIPE,
+ _SC_FILE_ATTRIBUTES,
+ _SC_FILE_LOCKING,
+ _SC_FILE_SYSTEM,
+ _SC_MONOTONIC_CLOCK,
+ _SC_MULTI_PROCESS,
+ _SC_SINGLE_PROCESS,
+ _SC_NETWORKING,
+ _SC_READER_WRITER_LOCKS,
+ _SC_SPIN_LOCKS,
+ _SC_REGEXP,
+ _SC_REGEX_VERSION,
+ _SC_SHELL,
+ _SC_SIGNALS,
+ _SC_SPAWN,
+ _SC_SPORADIC_SERVER,
+ _SC_THREAD_SPORADIC_SERVER,
+ _SC_SYSTEM_DATABASE,
+ _SC_SYSTEM_DATABASE_R,
+ _SC_TIMEOUTS,
+ _SC_TYPED_MEMORY_OBJECTS,
+ _SC_USER_GROUPS,
+ _SC_USER_GROUPS_R,
+ _SC_2_PBS,
+ _SC_2_PBS_ACCOUNTING,
+ _SC_2_PBS_LOCATE,
+ _SC_2_PBS_MESSAGE,
+ _SC_2_PBS_TRACK,
+ _SC_SYMLOOP_MAX,
+ _SC_STREAMS,
+ _SC_2_PBS_CHECKPOINT,
+ _SC_V6_ILP32_OFF32,
+ _SC_V6_ILP32_OFFBIG,
+ _SC_V6_LP64_OFF64,
+ _SC_V6_LPBIG_OFFBIG,
+ _SC_HOST_NAME_MAX,
+ _SC_TRACE,
+ _SC_TRACE_EVENT_FILTER,
+ _SC_TRACE_INHERIT,
+ _SC_TRACE_LOG,
+ _SC_LEVEL1_ICACHE_SIZE,
+ _SC_LEVEL1_ICACHE_ASSOC,
+ _SC_LEVEL1_ICACHE_LINESIZE,
+ _SC_LEVEL1_DCACHE_SIZE,
+ _SC_LEVEL1_DCACHE_ASSOC,
+ _SC_LEVEL1_DCACHE_LINESIZE,
+ _SC_LEVEL2_CACHE_SIZE,
+ _SC_LEVEL2_CACHE_ASSOC,
+ _SC_LEVEL2_CACHE_LINESIZE,
+ _SC_LEVEL3_CACHE_SIZE,
+ _SC_LEVEL3_CACHE_ASSOC,
+ _SC_LEVEL3_CACHE_LINESIZE,
+ _SC_LEVEL4_CACHE_SIZE,
+ _SC_LEVEL4_CACHE_ASSOC,
+ _SC_LEVEL4_CACHE_LINESIZE,
+ _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
+ _SC_RAW_SOCKETS
+ };
+enum
+ {
+ _CS_PATH,
+ _CS_V6_WIDTH_RESTRICTED_ENVS,
+ _CS_LFS_CFLAGS = 1000,
+ _CS_LFS_LDFLAGS,
+ _CS_LFS_LIBS,
+ _CS_LFS_LINTFLAGS,
+ _CS_LFS64_CFLAGS,
+ _CS_LFS64_LDFLAGS,
+ _CS_LFS64_LIBS,
+ _CS_LFS64_LINTFLAGS,
+ _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
+ _CS_XBS5_ILP32_OFF32_LDFLAGS,
+ _CS_XBS5_ILP32_OFF32_LIBS,
+ _CS_XBS5_ILP32_OFF32_LINTFLAGS,
+ _CS_XBS5_ILP32_OFFBIG_CFLAGS,
+ _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
+ _CS_XBS5_ILP32_OFFBIG_LIBS,
+ _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
+ _CS_XBS5_LP64_OFF64_CFLAGS,
+ _CS_XBS5_LP64_OFF64_LDFLAGS,
+ _CS_XBS5_LP64_OFF64_LIBS,
+ _CS_XBS5_LP64_OFF64_LINTFLAGS,
+ _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
+ _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
+ _CS_XBS5_LPBIG_OFFBIG_LIBS,
+ _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
+ _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
+ _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
+ _CS_POSIX_V6_ILP32_OFF32_LIBS,
+ _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
+ _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
+ _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
+ _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
+ _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
+ _CS_POSIX_V6_LP64_OFF64_CFLAGS,
+ _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
+ _CS_POSIX_V6_LP64_OFF64_LIBS,
+ _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
+ _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
+ _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
+ _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
+ _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS
+ };
+extern long int pathconf (__const char *__path, int __name)
+ throw () __attribute__ ((__nonnull__ (1)));
+extern long int fpathconf (int __fd, int __name) throw ();
+extern long int sysconf (int __name) throw ();
+extern size_t confstr (int __name, char *__buf, size_t __len) throw ();
+extern __pid_t getpid (void) throw ();
+extern __pid_t getppid (void) throw ();
+extern __pid_t getpgrp (void) throw ();
+extern __pid_t __getpgid (__pid_t __pid) throw ();
+extern __pid_t getpgid (__pid_t __pid) throw ();
+extern int setpgid (__pid_t __pid, __pid_t __pgid) throw ();
+extern int setpgrp (void) throw ();
+extern __pid_t setsid (void) throw ();
+extern __pid_t getsid (__pid_t __pid) throw ();
+extern __uid_t getuid (void) throw ();
+extern __uid_t geteuid (void) throw ();
+extern __gid_t getgid (void) throw ();
+extern __gid_t getegid (void) throw ();
+extern int getgroups (int __size, __gid_t __list[]) throw () ;
+extern int setuid (__uid_t __uid) throw ();
+extern int setreuid (__uid_t __ruid, __uid_t __euid) throw ();
+extern int seteuid (__uid_t __uid) throw ();
+extern int setgid (__gid_t __gid) throw ();
+extern int setregid (__gid_t __rgid, __gid_t __egid) throw ();
+extern int setegid (__gid_t __gid) throw ();
+extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid)
+ throw ();
+extern int getresgid (__gid_t *__rgid, __gid_t *__egid, __gid_t *__sgid)
+ throw ();
+extern int setresuid (__uid_t __ruid, __uid_t __euid, __uid_t __suid)
+ throw ();
+extern int setresgid (__gid_t __rgid, __gid_t __egid, __gid_t __sgid)
+ throw ();
+extern __pid_t vfork (void) throw ();
+extern char *ttyname (int __fd) throw ();
+extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
+ throw () __attribute__ ((__nonnull__ (2))) ;
+extern int isatty (int __fd) throw ();
+extern int link (__const char *__from, __const char *__to)
+ throw () __attribute__ ((__nonnull__ (1, 2))) ;
+extern int symlink (__const char *__from, __const char *__to)
+ throw () __attribute__ ((__nonnull__ (1, 2))) ;
+extern ssize_t readlink (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ throw () __attribute__ ((__nonnull__ (1, 2))) ;
+extern int unlink (__const char *__name) throw () __attribute__ ((__nonnull__ (1)));
+extern int rmdir (__const char *__path) throw () __attribute__ ((__nonnull__ (1)));
+extern __pid_t tcgetpgrp (int __fd) throw ();
+extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) throw ();
+extern char *getlogin (void);
+extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));
+extern "C" {
+extern char *optarg;
+extern int optind;
+extern int opterr;
+extern int optopt;
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ throw ();
+}
+extern int gethostname (char *__name, size_t __len) throw () __attribute__ ((__nonnull__ (1)));
+extern int sethostname (__const char *__name, size_t __len)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern int sethostid (long int __id) throw () ;
+extern int getdomainname (char *__name, size_t __len)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern int setdomainname (__const char *__name, size_t __len)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern int vhangup (void) throw ();
+extern int acct (__const char *__name) throw ();
+extern char *getusershell (void) throw ();
+extern void endusershell (void) throw ();
+extern void setusershell (void) throw ();
+extern int daemon (int __nochdir, int __noclose) throw () ;
+extern int chroot (__const char *__path) throw () __attribute__ ((__nonnull__ (1))) ;
+extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1)));
+extern int fsync (int __fd);
+extern long int gethostid (void);
+extern void sync (void) throw ();
+extern int getpagesize (void) throw () __attribute__ ((__const__));
+extern int getdtablesize (void) throw ();
+extern int truncate (__const char *__file, __off_t __length)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern int truncate64 (__const char *__file, __off64_t __length)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern int ftruncate (int __fd, __off_t __length) throw () ;
+extern int ftruncate64 (int __fd, __off64_t __length) throw () ;
+extern int brk (void *__addr) throw () ;
+extern void *sbrk (intptr_t __delta) throw ();
+extern long int syscall (long int __sysno, ...) throw ();
+extern int lockf (int __fd, int __cmd, __off_t __len) ;
+extern int lockf64 (int __fd, int __cmd, __off64_t __len) ;
+extern int fdatasync (int __fildes) throw ();
+extern char *crypt (__const char *__key, __const char *__salt)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern void encrypt (char *__block, int __edflag) throw () __attribute__ ((__nonnull__ (1)));
+extern void swab (__const void *__restrict __from, void *__restrict __to,
+ ssize_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
+extern char *ctermid (char *__s) throw ();
+}
+typedef pthread_key_t __gthread_key_t;
+typedef pthread_once_t __gthread_once_t;
+typedef pthread_mutex_t __gthread_mutex_t;
+typedef pthread_mutex_t __gthread_recursive_mutex_t;
+typedef pthread_cond_t __gthread_cond_t;
+static __typeof(pthread_once) __gthrw_pthread_once __attribute__ ((__weakref__("pthread_once")));
+static __typeof(pthread_getspecific) __gthrw_pthread_getspecific __attribute__ ((__weakref__("pthread_getspecific")));
+static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific")));
+static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create")));
+static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel")));
+static __typeof(pthread_mutex_lock) __gthrw_pthread_mutex_lock __attribute__ ((__weakref__("pthread_mutex_lock")));
+static __typeof(pthread_mutex_trylock) __gthrw_pthread_mutex_trylock __attribute__ ((__weakref__("pthread_mutex_trylock")));
+static __typeof(pthread_mutex_unlock) __gthrw_pthread_mutex_unlock __attribute__ ((__weakref__("pthread_mutex_unlock")));
+static __typeof(pthread_mutex_init) __gthrw_pthread_mutex_init __attribute__ ((__weakref__("pthread_mutex_init")));
+static __typeof(pthread_cond_broadcast) __gthrw_pthread_cond_broadcast __attribute__ ((__weakref__("pthread_cond_broadcast")));
+static __typeof(pthread_cond_wait) __gthrw_pthread_cond_wait __attribute__ ((__weakref__("pthread_cond_wait")));
+static __typeof(pthread_key_create) __gthrw_pthread_key_create __attribute__ ((__weakref__("pthread_key_create")));
+static __typeof(pthread_key_delete) __gthrw_pthread_key_delete __attribute__ ((__weakref__("pthread_key_delete")));
+static __typeof(pthread_mutexattr_init) __gthrw_pthread_mutexattr_init __attribute__ ((__weakref__("pthread_mutexattr_init")));
+static __typeof(pthread_mutexattr_settype) __gthrw_pthread_mutexattr_settype __attribute__ ((__weakref__("pthread_mutexattr_settype")));
+static __typeof(pthread_mutexattr_destroy) __gthrw_pthread_mutexattr_destroy __attribute__ ((__weakref__("pthread_mutexattr_destroy")));
+static inline int
+__gthread_active_p (void)
+{
+ static void *const __gthread_active_ptr
+ = __extension__ (void *) &__gthrw_pthread_cancel;
+ return __gthread_active_ptr != 0;
+}
+static inline int
+__gthread_once (__gthread_once_t *once, void (*func) (void))
+{
+ if (__gthread_active_p ())
+ return __gthrw_pthread_once (once, func);
+ else
+ return -1;
+}
+static inline int
+__gthread_key_create (__gthread_key_t *key, void (*dtor) (void *))
+{
+ return __gthrw_pthread_key_create (key, dtor);
+}
+static inline int
+__gthread_key_delete (__gthread_key_t key)
+{
+ return __gthrw_pthread_key_delete (key);
+}
+static inline void *
+__gthread_getspecific (__gthread_key_t key)
+{
+ return __gthrw_pthread_getspecific (key);
+}
+static inline int
+__gthread_setspecific (__gthread_key_t key, const void *ptr)
+{
+ return __gthrw_pthread_setspecific (key, ptr);
+}
+static inline int
+__gthread_mutex_lock (__gthread_mutex_t *mutex)
+{
+ if (__gthread_active_p ())
+ return __gthrw_pthread_mutex_lock (mutex);
+ else
+ return 0;
+}
+static inline int
+__gthread_mutex_trylock (__gthread_mutex_t *mutex)
+{
+ if (__gthread_active_p ())
+ return __gthrw_pthread_mutex_trylock (mutex);
+ else
+ return 0;
+}
+static inline int
+__gthread_mutex_unlock (__gthread_mutex_t *mutex)
+{
+ if (__gthread_active_p ())
+ return __gthrw_pthread_mutex_unlock (mutex);
+ else
+ return 0;
+}
+static inline int
+__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex)
+{
+ return __gthread_mutex_lock (mutex);
+}
+static inline int
+__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex)
+{
+ return __gthread_mutex_trylock (mutex);
+}
+static inline int
+__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex)
+{
+ return __gthread_mutex_unlock (mutex);
+}
+static inline int
+__gthread_cond_broadcast (__gthread_cond_t *cond)
+{
+ return __gthrw_pthread_cond_broadcast (cond);
+}
+static inline int
+__gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex)
+{
+ return __gthrw_pthread_cond_wait (cond, mutex);
+}
+static inline int
+__gthread_cond_wait_recursive (__gthread_cond_t *cond,
+ __gthread_recursive_mutex_t *mutex)
+{
+ return __gthread_cond_wait (cond, mutex);
+}
+typedef int _Atomic_word;
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+ static inline _Atomic_word
+ __exchange_and_add(volatile _Atomic_word* __mem, int __val)
+ { return __sync_fetch_and_add(__mem, __val); }
+ static inline void
+ __atomic_add(volatile _Atomic_word* __mem, int __val)
+ { __sync_fetch_and_add(__mem, __val); }
+ static inline _Atomic_word
+ __exchange_and_add_single(_Atomic_word* __mem, int __val)
+ {
+ _Atomic_word __result = *__mem;
+ *__mem += __val;
+ return __result;
+ }
+ static inline void
+ __atomic_add_single(_Atomic_word* __mem, int __val)
+ { *__mem += __val; }
+ static inline _Atomic_word
+ __attribute__ ((__unused__))
+ __exchange_and_add_dispatch(_Atomic_word* __mem, int __val)
+ {
+ if (__gthread_active_p())
+ return __exchange_and_add(__mem, __val);
+ else
+ return __exchange_and_add_single(__mem, __val);
+ }
+ static inline void
+ __attribute__ ((__unused__))
+ __atomic_add_dispatch(_Atomic_word* __mem, int __val)
+ {
+ if (__gthread_active_p())
+ __atomic_add(__mem, __val);
+ else
+ __atomic_add_single(__mem, __val);
+ }
+}
+extern "C++" {
+namespace std
+{
+ class bad_alloc : public exception
+ {
+ public:
+ bad_alloc() throw() { }
+ virtual ~bad_alloc() throw();
+ virtual const char* what() const throw();
+ };
+ struct nothrow_t { };
+ extern const nothrow_t nothrow;
+ typedef void (*new_handler)();
+ new_handler set_new_handler(new_handler) throw();
+}
+void* operator new(std::size_t) throw (std::bad_alloc);
+void* operator new[](std::size_t) throw (std::bad_alloc);
+void operator delete(void*) throw();
+void operator delete[](void*) throw();
+void* operator new(std::size_t, const std::nothrow_t&) throw();
+void* operator new[](std::size_t, const std::nothrow_t&) throw();
+void operator delete(void*, const std::nothrow_t&) throw();
+void operator delete[](void*, const std::nothrow_t&) throw();
+inline void* operator new(std::size_t, void* __p) throw() { return __p; }
+inline void* operator new[](std::size_t, void* __p) throw() { return __p; }
+inline void operator delete (void*, void*) throw() { }
+inline void operator delete[](void*, void*) throw() { }
+}
+namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {
+ using std::size_t;
+ using std::ptrdiff_t;
+ template<typename _Tp>
+ class new_allocator
+ {
+ public:
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Tp* pointer;
+ typedef const _Tp* const_pointer;
+ typedef _Tp& reference;
+ typedef const _Tp& const_reference;
+ typedef _Tp value_type;
+ template<typename _Tp1>
+ struct rebind
+ { typedef new_allocator<_Tp1> other; };
+ new_allocator() throw() { }
+ new_allocator(const new_allocator&) throw() { }
+ template<typename _Tp1>
+ new_allocator(const new_allocator<_Tp1>&) throw() { }
+ ~new_allocator() throw() { }
+ pointer
+ address(reference __x) const { return &__x; }
+ const_pointer
+ address(const_reference __x) const { return &__x; }
+ pointer
+ allocate(size_type __n, const void* = 0)
+ {
+ if (__builtin_expect(__n > this->max_size(), false))
+ std::__throw_bad_alloc();
+ return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
+ }
+ void
+ deallocate(pointer __p, size_type)
+ { ::operator delete(__p); }
+ size_type
+ max_size() const throw()
+ { return size_t(-1) / sizeof(_Tp); }
+ void
+ construct(pointer __p, const _Tp& __val)
+ { ::new((void *)__p) _Tp(__val); }
+ void
+ destroy(pointer __p) { __p->~_Tp(); }
+ };
+ template<typename _Tp>
+ inline bool
+ operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
+ { return true; }
+ template<typename _Tp>
+ inline bool
+ operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
+ { return false; }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Tp>
+ class allocator;
+ template<>
+ class allocator<void>
+ {
+ public:
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef void* pointer;
+ typedef const void* const_pointer;
+ typedef void value_type;
+ template<typename _Tp1>
+ struct rebind
+ { typedef allocator<_Tp1> other; };
+ };
+ template<typename _Tp>
+ class allocator: public __gnu_cxx::new_allocator<_Tp>
+ {
+ public:
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Tp* pointer;
+ typedef const _Tp* const_pointer;
+ typedef _Tp& reference;
+ typedef const _Tp& const_reference;
+ typedef _Tp value_type;
+ template<typename _Tp1>
+ struct rebind
+ { typedef allocator<_Tp1> other; };
+ allocator() throw() { }
+ allocator(const allocator& __a) throw()
+ : __gnu_cxx::new_allocator<_Tp>(__a) { }
+ template<typename _Tp1>
+ allocator(const allocator<_Tp1>&) throw() { }
+ ~allocator() throw() { }
+ };
+ template<typename _T1, typename _T2>
+ inline bool
+ operator==(const allocator<_T1>&, const allocator<_T2>&)
+ { return true; }
+ template<typename _Tp>
+ inline bool
+ operator==(const allocator<_Tp>&, const allocator<_Tp>&)
+ { return true; }
+ template<typename _T1, typename _T2>
+ inline bool
+ operator!=(const allocator<_T1>&, const allocator<_T2>&)
+ { return false; }
+ template<typename _Tp>
+ inline bool
+ operator!=(const allocator<_Tp>&, const allocator<_Tp>&)
+ { return false; }
+ extern template class allocator<char>;
+ extern template class allocator<wchar_t>;
+ template<typename _Alloc, bool = __is_empty(_Alloc)>
+ struct __alloc_swap
+ { static void _S_do_it(_Alloc&, _Alloc&) { } };
+ template<typename _Alloc>
+ struct __alloc_swap<_Alloc, false>
+ {
+ static void
+ _S_do_it(_Alloc& __one, _Alloc& __two)
+ {
+ if (__one != __two)
+ swap(__one, __two);
+ }
+ };
+ template<typename _Alloc, bool = __is_empty(_Alloc)>
+ struct __alloc_neq
+ {
+ static bool
+ _S_do_it(const _Alloc&, const _Alloc&)
+ { return false; }
+ };
+ template<typename _Alloc>
+ struct __alloc_neq<_Alloc, false>
+ {
+ static bool
+ _S_do_it(const _Alloc& __one, const _Alloc& __two)
+ { return __one != __two; }
+ };
+}
+namespace __cxxabiv1
+{
+ class __forced_unwind
+ {
+ virtual ~__forced_unwind() throw();
+ virtual void __pure_dummy() = 0;
+ };
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT, typename _Traits>
+ inline void
+ __ostream_write(basic_ostream<_CharT, _Traits>& __out,
+ const _CharT* __s, streamsize __n)
+ {
+ typedef basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+ const streamsize __put = __out.rdbuf()->sputn(__s, __n);
+ if (__put != __n)
+ __out.setstate(__ios_base::badbit);
+ }
+ template<typename _CharT, typename _Traits>
+ inline void
+ __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n)
+ {
+ typedef basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+ const _CharT __c = __out.fill();
+ for (; __n > 0; --__n)
+ {
+ const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c);
+ if (_Traits::eq_int_type(__put, _Traits::eof()))
+ {
+ __out.setstate(__ios_base::badbit);
+ break;
+ }
+ }
+ }
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ __ostream_insert(basic_ostream<_CharT, _Traits>& __out,
+ const _CharT* __s, streamsize __n)
+ {
+ typedef basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef typename __ostream_type::ios_base __ios_base;
+ typename __ostream_type::sentry __cerb(__out);
+ if (__cerb)
+ {
+ try
+ {
+ const streamsize __w = __out.width();
+ if (__w > __n)
+ {
+ const bool __left = ((__out.flags()
+ & __ios_base::adjustfield)
+ == __ios_base::left);
+ if (!__left)
+ __ostream_fill(__out, __w - __n);
+ if (__out.good())
+ __ostream_write(__out, __s, __n);
+ if (__left && __out.good())
+ __ostream_fill(__out, __w - __n);
+ }
+ else
+ __ostream_write(__out, __s, __n);
+ __out.width(0);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ __out._M_setstate(__ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { __out._M_setstate(__ios_base::badbit); }
+ }
+ return __out;
+ }
+ extern template ostream& __ostream_insert(ostream&, const char*, streamsize);
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Arg, typename _Result>
+ struct unary_function
+ {
+ typedef _Arg argument_type;
+ typedef _Result result_type;
+ };
+ template<typename _Arg1, typename _Arg2, typename _Result>
+ struct binary_function
+ {
+ typedef _Arg1 first_argument_type;
+ typedef _Arg2 second_argument_type;
+ typedef _Result result_type;
+ };
+ template<typename _Tp>
+ struct plus : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x + __y; }
+ };
+ template<typename _Tp>
+ struct minus : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x - __y; }
+ };
+ template<typename _Tp>
+ struct multiplies : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x * __y; }
+ };
+ template<typename _Tp>
+ struct divides : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x / __y; }
+ };
+ template<typename _Tp>
+ struct modulus : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x % __y; }
+ };
+ template<typename _Tp>
+ struct negate : public unary_function<_Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x) const
+ { return -__x; }
+ };
+ template<typename _Tp>
+ struct equal_to : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x == __y; }
+ };
+ template<typename _Tp>
+ struct not_equal_to : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x != __y; }
+ };
+ template<typename _Tp>
+ struct greater : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x > __y; }
+ };
+ template<typename _Tp>
+ struct less : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x < __y; }
+ };
+ template<typename _Tp>
+ struct greater_equal : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x >= __y; }
+ };
+ template<typename _Tp>
+ struct less_equal : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x <= __y; }
+ };
+ template<typename _Tp>
+ struct logical_and : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x && __y; }
+ };
+ template<typename _Tp>
+ struct logical_or : public binary_function<_Tp, _Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x || __y; }
+ };
+ template<typename _Tp>
+ struct logical_not : public unary_function<_Tp, bool>
+ {
+ bool
+ operator()(const _Tp& __x) const
+ { return !__x; }
+ };
+ template<typename _Tp>
+ struct bit_and : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x & __y; }
+ };
+ template<typename _Tp>
+ struct bit_or : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x | __y; }
+ };
+ template<typename _Tp>
+ struct bit_xor : public binary_function<_Tp, _Tp, _Tp>
+ {
+ _Tp
+ operator()(const _Tp& __x, const _Tp& __y) const
+ { return __x ^ __y; }
+ };
+ template<typename _Predicate>
+ class unary_negate
+ : public unary_function<typename _Predicate::argument_type, bool>
+ {
+ protected:
+ _Predicate _M_pred;
+ public:
+ explicit
+ unary_negate(const _Predicate& __x) : _M_pred(__x) { }
+ bool
+ operator()(const typename _Predicate::argument_type& __x) const
+ { return !_M_pred(__x); }
+ };
+ template<typename _Predicate>
+ inline unary_negate<_Predicate>
+ not1(const _Predicate& __pred)
+ { return unary_negate<_Predicate>(__pred); }
+ template<typename _Predicate>
+ class binary_negate
+ : public binary_function<typename _Predicate::first_argument_type,
+ typename _Predicate::second_argument_type, bool>
+ {
+ protected:
+ _Predicate _M_pred;
+ public:
+ explicit
+ binary_negate(const _Predicate& __x) : _M_pred(__x) { }
+ bool
+ operator()(const typename _Predicate::first_argument_type& __x,
+ const typename _Predicate::second_argument_type& __y) const
+ { return !_M_pred(__x, __y); }
+ };
+ template<typename _Predicate>
+ inline binary_negate<_Predicate>
+ not2(const _Predicate& __pred)
+ { return binary_negate<_Predicate>(__pred); }
+ template<typename _Arg, typename _Result>
+ class pointer_to_unary_function : public unary_function<_Arg, _Result>
+ {
+ protected:
+ _Result (*_M_ptr)(_Arg);
+ public:
+ pointer_to_unary_function() { }
+ explicit
+ pointer_to_unary_function(_Result (*__x)(_Arg))
+ : _M_ptr(__x) { }
+ _Result
+ operator()(_Arg __x) const
+ { return _M_ptr(__x); }
+ };
+ template<typename _Arg, typename _Result>
+ inline pointer_to_unary_function<_Arg, _Result>
+ ptr_fun(_Result (*__x)(_Arg))
+ { return pointer_to_unary_function<_Arg, _Result>(__x); }
+ template<typename _Arg1, typename _Arg2, typename _Result>
+ class pointer_to_binary_function
+ : public binary_function<_Arg1, _Arg2, _Result>
+ {
+ protected:
+ _Result (*_M_ptr)(_Arg1, _Arg2);
+ public:
+ pointer_to_binary_function() { }
+ explicit
+ pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2))
+ : _M_ptr(__x) { }
+ _Result
+ operator()(_Arg1 __x, _Arg2 __y) const
+ { return _M_ptr(__x, __y); }
+ };
+ template<typename _Arg1, typename _Arg2, typename _Result>
+ inline pointer_to_binary_function<_Arg1, _Arg2, _Result>
+ ptr_fun(_Result (*__x)(_Arg1, _Arg2))
+ { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); }
+ template<typename _Tp>
+ struct _Identity : public unary_function<_Tp,_Tp>
+ {
+ _Tp&
+ operator()(_Tp& __x) const
+ { return __x; }
+ const _Tp&
+ operator()(const _Tp& __x) const
+ { return __x; }
+ };
+ template<typename _Pair>
+ struct _Select1st : public unary_function<_Pair,
+ typename _Pair::first_type>
+ {
+ typename _Pair::first_type&
+ operator()(_Pair& __x) const
+ { return __x.first; }
+ const typename _Pair::first_type&
+ operator()(const _Pair& __x) const
+ { return __x.first; }
+ };
+ template<typename _Pair>
+ struct _Select2nd : public unary_function<_Pair,
+ typename _Pair::second_type>
+ {
+ typename _Pair::second_type&
+ operator()(_Pair& __x) const
+ { return __x.second; }
+ const typename _Pair::second_type&
+ operator()(const _Pair& __x) const
+ { return __x.second; }
+ };
+ template<typename _Ret, typename _Tp>
+ class mem_fun_t : public unary_function<_Tp*, _Ret>
+ {
+ public:
+ explicit
+ mem_fun_t(_Ret (_Tp::*__pf)())
+ : _M_f(__pf) { }
+ _Ret
+ operator()(_Tp* __p) const
+ { return (__p->*_M_f)(); }
+ private:
+ _Ret (_Tp::*_M_f)();
+ };
+ template<typename _Ret, typename _Tp>
+ class const_mem_fun_t : public unary_function<const _Tp*, _Ret>
+ {
+ public:
+ explicit
+ const_mem_fun_t(_Ret (_Tp::*__pf)() const)
+ : _M_f(__pf) { }
+ _Ret
+ operator()(const _Tp* __p) const
+ { return (__p->*_M_f)(); }
+ private:
+ _Ret (_Tp::*_M_f)() const;
+ };
+ template<typename _Ret, typename _Tp>
+ class mem_fun_ref_t : public unary_function<_Tp, _Ret>
+ {
+ public:
+ explicit
+ mem_fun_ref_t(_Ret (_Tp::*__pf)())
+ : _M_f(__pf) { }
+ _Ret
+ operator()(_Tp& __r) const
+ { return (__r.*_M_f)(); }
+ private:
+ _Ret (_Tp::*_M_f)();
+ };
+ template<typename _Ret, typename _Tp>
+ class const_mem_fun_ref_t : public unary_function<_Tp, _Ret>
+ {
+ public:
+ explicit
+ const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const)
+ : _M_f(__pf) { }
+ _Ret
+ operator()(const _Tp& __r) const
+ { return (__r.*_M_f)(); }
+ private:
+ _Ret (_Tp::*_M_f)() const;
+ };
+ template<typename _Ret, typename _Tp, typename _Arg>
+ class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret>
+ {
+ public:
+ explicit
+ mem_fun1_t(_Ret (_Tp::*__pf)(_Arg))
+ : _M_f(__pf) { }
+ _Ret
+ operator()(_Tp* __p, _Arg __x) const
+ { return (__p->*_M_f)(__x); }
+ private:
+ _Ret (_Tp::*_M_f)(_Arg);
+ };
+ template<typename _Ret, typename _Tp, typename _Arg>
+ class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret>
+ {
+ public:
+ explicit
+ const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const)
+ : _M_f(__pf) { }
+ _Ret
+ operator()(const _Tp* __p, _Arg __x) const
+ { return (__p->*_M_f)(__x); }
+ private:
+ _Ret (_Tp::*_M_f)(_Arg) const;
+ };
+ template<typename _Ret, typename _Tp, typename _Arg>
+ class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
+ {
+ public:
+ explicit
+ mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg))
+ : _M_f(__pf) { }
+ _Ret
+ operator()(_Tp& __r, _Arg __x) const
+ { return (__r.*_M_f)(__x); }
+ private:
+ _Ret (_Tp::*_M_f)(_Arg);
+ };
+ template<typename _Ret, typename _Tp, typename _Arg>
+ class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>
+ {
+ public:
+ explicit
+ const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const)
+ : _M_f(__pf) { }
+ _Ret
+ operator()(const _Tp& __r, _Arg __x) const
+ { return (__r.*_M_f)(__x); }
+ private:
+ _Ret (_Tp::*_M_f)(_Arg) const;
+ };
+ template<typename _Ret, typename _Tp>
+ inline mem_fun_t<_Ret, _Tp>
+ mem_fun(_Ret (_Tp::*__f)())
+ { return mem_fun_t<_Ret, _Tp>(__f); }
+ template<typename _Ret, typename _Tp>
+ inline const_mem_fun_t<_Ret, _Tp>
+ mem_fun(_Ret (_Tp::*__f)() const)
+ { return const_mem_fun_t<_Ret, _Tp>(__f); }
+ template<typename _Ret, typename _Tp>
+ inline mem_fun_ref_t<_Ret, _Tp>
+ mem_fun_ref(_Ret (_Tp::*__f)())
+ { return mem_fun_ref_t<_Ret, _Tp>(__f); }
+ template<typename _Ret, typename _Tp>
+ inline const_mem_fun_ref_t<_Ret, _Tp>
+ mem_fun_ref(_Ret (_Tp::*__f)() const)
+ { return const_mem_fun_ref_t<_Ret, _Tp>(__f); }
+ template<typename _Ret, typename _Tp, typename _Arg>
+ inline mem_fun1_t<_Ret, _Tp, _Arg>
+ mem_fun(_Ret (_Tp::*__f)(_Arg))
+ { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
+ template<typename _Ret, typename _Tp, typename _Arg>
+ inline const_mem_fun1_t<_Ret, _Tp, _Arg>
+ mem_fun(_Ret (_Tp::*__f)(_Arg) const)
+ { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
+ template<typename _Ret, typename _Tp, typename _Arg>
+ inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
+ mem_fun_ref(_Ret (_Tp::*__f)(_Arg))
+ { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
+ template<typename _Ret, typename _Tp, typename _Arg>
+ inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
+ mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const)
+ { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Operation>
+ class binder1st
+ : public unary_function<typename _Operation::second_argument_type,
+ typename _Operation::result_type>
+ {
+ protected:
+ _Operation op;
+ typename _Operation::first_argument_type value;
+ public:
+ binder1st(const _Operation& __x,
+ const typename _Operation::first_argument_type& __y)
+ : op(__x), value(__y) { }
+ typename _Operation::result_type
+ operator()(const typename _Operation::second_argument_type& __x) const
+ { return op(value, __x); }
+ typename _Operation::result_type
+ operator()(typename _Operation::second_argument_type& __x) const
+ { return op(value, __x); }
+ } ;
+ template<typename _Operation, typename _Tp>
+ inline binder1st<_Operation>
+ bind1st(const _Operation& __fn, const _Tp& __x)
+ {
+ typedef typename _Operation::first_argument_type _Arg1_type;
+ return binder1st<_Operation>(__fn, _Arg1_type(__x));
+ }
+ template<typename _Operation>
+ class binder2nd
+ : public unary_function<typename _Operation::first_argument_type,
+ typename _Operation::result_type>
+ {
+ protected:
+ _Operation op;
+ typename _Operation::second_argument_type value;
+ public:
+ binder2nd(const _Operation& __x,
+ const typename _Operation::second_argument_type& __y)
+ : op(__x), value(__y) { }
+ typename _Operation::result_type
+ operator()(const typename _Operation::first_argument_type& __x) const
+ { return op(__x, value); }
+ typename _Operation::result_type
+ operator()(typename _Operation::first_argument_type& __x) const
+ { return op(__x, value); }
+ } ;
+ template<typename _Operation, typename _Tp>
+ inline binder2nd<_Operation>
+ bind2nd(const _Operation& __fn, const _Tp& __x)
+ {
+ typedef typename _Operation::second_argument_type _Arg2_type;
+ return binder2nd<_Operation>(__fn, _Arg2_type(__x));
+ }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ class basic_string
+ {
+ typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
+ public:
+ typedef _Traits traits_type;
+ typedef typename _Traits::char_type value_type;
+ typedef _Alloc allocator_type;
+ typedef typename _CharT_alloc_type::size_type size_type;
+ typedef typename _CharT_alloc_type::difference_type difference_type;
+ typedef typename _CharT_alloc_type::reference reference;
+ typedef typename _CharT_alloc_type::const_reference const_reference;
+ typedef typename _CharT_alloc_type::pointer pointer;
+ typedef typename _CharT_alloc_type::const_pointer const_pointer;
+ typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator;
+ typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>
+ const_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ private:
+ struct _Rep_base
+ {
+ size_type _M_length;
+ size_type _M_capacity;
+ _Atomic_word _M_refcount;
+ };
+ struct _Rep : _Rep_base
+ {
+ typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc;
+ static const size_type _S_max_size;
+ static const _CharT _S_terminal;
+ static size_type _S_empty_rep_storage[];
+ static _Rep&
+ _S_empty_rep()
+ {
+ void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage);
+ return *reinterpret_cast<_Rep*>(__p);
+ }
+ bool
+ _M_is_leaked() const
+ { return this->_M_refcount < 0; }
+ bool
+ _M_is_shared() const
+ { return this->_M_refcount > 0; }
+ void
+ _M_set_leaked()
+ { this->_M_refcount = -1; }
+ void
+ _M_set_sharable()
+ { this->_M_refcount = 0; }
+ void
+ _M_set_length_and_sharable(size_type __n)
+ {
+ this->_M_set_sharable();
+ this->_M_length = __n;
+ traits_type::assign(this->_M_refdata()[__n], _S_terminal);
+ }
+ _CharT*
+ _M_refdata() throw()
+ { return reinterpret_cast<_CharT*>(this + 1); }
+ _CharT*
+ _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)
+ {
+ return (!_M_is_leaked() && __alloc1 == __alloc2)
+ ? _M_refcopy() : _M_clone(__alloc1);
+ }
+ static _Rep*
+ _S_create(size_type, size_type, const _Alloc&);
+ void
+ _M_dispose(const _Alloc& __a)
+ {
+ if (__builtin_expect(this != &_S_empty_rep(), false))
+ if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount,
+ -1) <= 0)
+ _M_destroy(__a);
+ }
+ void
+ _M_destroy(const _Alloc&) throw();
+ _CharT*
+ _M_refcopy() throw()
+ {
+ if (__builtin_expect(this != &_S_empty_rep(), false))
+ __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1);
+ return _M_refdata();
+ }
+ _CharT*
+ _M_clone(const _Alloc&, size_type __res = 0);
+ };
+ struct _Alloc_hider : _Alloc
+ {
+ _Alloc_hider(_CharT* __dat, const _Alloc& __a)
+ : _Alloc(__a), _M_p(__dat) { }
+ _CharT* _M_p;
+ };
+ public:
+ static const size_type npos = static_cast<size_type>(-1);
+ private:
+ mutable _Alloc_hider _M_dataplus;
+ _CharT*
+ _M_data() const
+ { return _M_dataplus._M_p; }
+ _CharT*
+ _M_data(_CharT* __p)
+ { return (_M_dataplus._M_p = __p); }
+ _Rep*
+ _M_rep() const
+ { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }
+ iterator
+ _M_ibegin() const
+ { return iterator(_M_data()); }
+ iterator
+ _M_iend() const
+ { return iterator(_M_data() + this->size()); }
+ void
+ _M_leak()
+ {
+ if (!_M_rep()->_M_is_leaked())
+ _M_leak_hard();
+ }
+ size_type
+ _M_check(size_type __pos, const char* __s) const
+ {
+ if (__pos > this->size())
+ __throw_out_of_range((__s));
+ return __pos;
+ }
+ void
+ _M_check_length(size_type __n1, size_type __n2, const char* __s) const
+ {
+ if (this->max_size() - (this->size() - __n1) < __n2)
+ __throw_length_error((__s));
+ }
+ size_type
+ _M_limit(size_type __pos, size_type __off) const
+ {
+ const bool __testoff = __off < this->size() - __pos;
+ return __testoff ? __off : this->size() - __pos;
+ }
+ bool
+ _M_disjunct(const _CharT* __s) const
+ {
+ return (less<const _CharT*>()(__s, _M_data())
+ || less<const _CharT*>()(_M_data() + this->size(), __s));
+ }
+ static void
+ _M_copy(_CharT* __d, const _CharT* __s, size_type __n)
+ {
+ if (__n == 1)
+ traits_type::assign(*__d, *__s);
+ else
+ traits_type::copy(__d, __s, __n);
+ }
+ static void
+ _M_move(_CharT* __d, const _CharT* __s, size_type __n)
+ {
+ if (__n == 1)
+ traits_type::assign(*__d, *__s);
+ else
+ traits_type::move(__d, __s, __n);
+ }
+ static void
+ _M_assign(_CharT* __d, size_type __n, _CharT __c)
+ {
+ if (__n == 1)
+ traits_type::assign(*__d, __c);
+ else
+ traits_type::assign(__d, __n, __c);
+ }
+ template<class _Iterator>
+ static void
+ _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
+ {
+ for (; __k1 != __k2; ++__k1, ++__p)
+ traits_type::assign(*__p, *__k1);
+ }
+ static void
+ _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2)
+ { _S_copy_chars(__p, __k1.base(), __k2.base()); }
+ static void
+ _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)
+ { _S_copy_chars(__p, __k1.base(), __k2.base()); }
+ static void
+ _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
+ { _M_copy(__p, __k1, __k2 - __k1); }
+ static void
+ _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
+ { _M_copy(__p, __k1, __k2 - __k1); }
+ static int
+ _S_compare(size_type __n1, size_type __n2)
+ {
+ const difference_type __d = difference_type(__n1 - __n2);
+ if (__d > __gnu_cxx::__numeric_traits<int>::__max)
+ return __gnu_cxx::__numeric_traits<int>::__max;
+ else if (__d < __gnu_cxx::__numeric_traits<int>::__min)
+ return __gnu_cxx::__numeric_traits<int>::__min;
+ else
+ return int(__d);
+ }
+ void
+ _M_mutate(size_type __pos, size_type __len1, size_type __len2);
+ void
+ _M_leak_hard();
+ static _Rep&
+ _S_empty_rep()
+ { return _Rep::_S_empty_rep(); }
+ public:
+ inline
+ basic_string();
+ explicit
+ basic_string(const _Alloc& __a);
+ basic_string(const basic_string& __str);
+ basic_string(const basic_string& __str, size_type __pos,
+ size_type __n = npos);
+ basic_string(const basic_string& __str, size_type __pos,
+ size_type __n, const _Alloc& __a);
+ basic_string(const _CharT* __s, size_type __n,
+ const _Alloc& __a = _Alloc());
+ basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());
+ basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc());
+ template<class _InputIterator>
+ basic_string(_InputIterator __beg, _InputIterator __end,
+ const _Alloc& __a = _Alloc());
+ ~basic_string()
+ { _M_rep()->_M_dispose(this->get_allocator()); }
+ basic_string&
+ operator=(const basic_string& __str)
+ { return this->assign(__str); }
+ basic_string&
+ operator=(const _CharT* __s)
+ { return this->assign(__s); }
+ basic_string&
+ operator=(_CharT __c)
+ {
+ this->assign(1, __c);
+ return *this;
+ }
+ iterator
+ begin()
+ {
+ _M_leak();
+ return iterator(_M_data());
+ }
+ const_iterator
+ begin() const
+ { return const_iterator(_M_data()); }
+ iterator
+ end()
+ {
+ _M_leak();
+ return iterator(_M_data() + this->size());
+ }
+ const_iterator
+ end() const
+ { return const_iterator(_M_data() + this->size()); }
+ reverse_iterator
+ rbegin()
+ { return reverse_iterator(this->end()); }
+ const_reverse_iterator
+ rbegin() const
+ { return const_reverse_iterator(this->end()); }
+ reverse_iterator
+ rend()
+ { return reverse_iterator(this->begin()); }
+ const_reverse_iterator
+ rend() const
+ { return const_reverse_iterator(this->begin()); }
+ public:
+ size_type
+ size() const
+ { return _M_rep()->_M_length; }
+ size_type
+ length() const
+ { return _M_rep()->_M_length; }
+ size_type
+ max_size() const
+ { return _Rep::_S_max_size; }
+ void
+ resize(size_type __n, _CharT __c);
+ void
+ resize(size_type __n)
+ { this->resize(__n, _CharT()); }
+ size_type
+ capacity() const
+ { return _M_rep()->_M_capacity; }
+ void
+ reserve(size_type __res_arg = 0);
+ void
+ clear()
+ { _M_mutate(0, this->size(), 0); }
+ bool
+ empty() const
+ { return this->size() == 0; }
+ const_reference
+ operator[] (size_type __pos) const
+ {
+ ;
+ return _M_data()[__pos];
+ }
+ reference
+ operator[](size_type __pos)
+ {
+ ;
+ ;
+ _M_leak();
+ return _M_data()[__pos];
+ }
+ const_reference
+ at(size_type __n) const
+ {
+ if (__n >= this->size())
+ __throw_out_of_range(("basic_string::at"));
+ return _M_data()[__n];
+ }
+ reference
+ at(size_type __n)
+ {
+ if (__n >= size())
+ __throw_out_of_range(("basic_string::at"));
+ _M_leak();
+ return _M_data()[__n];
+ }
+ basic_string&
+ operator+=(const basic_string& __str)
+ { return this->append(__str); }
+ basic_string&
+ operator+=(const _CharT* __s)
+ { return this->append(__s); }
+ basic_string&
+ operator+=(_CharT __c)
+ {
+ this->push_back(__c);
+ return *this;
+ }
+ basic_string&
+ append(const basic_string& __str);
+ basic_string&
+ append(const basic_string& __str, size_type __pos, size_type __n);
+ basic_string&
+ append(const _CharT* __s, size_type __n);
+ basic_string&
+ append(const _CharT* __s)
+ {
+ ;
+ return this->append(__s, traits_type::length(__s));
+ }
+ basic_string&
+ append(size_type __n, _CharT __c);
+ template<class _InputIterator>
+ basic_string&
+ append(_InputIterator __first, _InputIterator __last)
+ { return this->replace(_M_iend(), _M_iend(), __first, __last); }
+ void
+ push_back(_CharT __c)
+ {
+ const size_type __len = 1 + this->size();
+ if (__len > this->capacity() || _M_rep()->_M_is_shared())
+ this->reserve(__len);
+ traits_type::assign(_M_data()[this->size()], __c);
+ _M_rep()->_M_set_length_and_sharable(__len);
+ }
+ basic_string&
+ assign(const basic_string& __str);
+ basic_string&
+ assign(const basic_string& __str, size_type __pos, size_type __n)
+ { return this->assign(__str._M_data()
+ + __str._M_check(__pos, "basic_string::assign"),
+ __str._M_limit(__pos, __n)); }
+ basic_string&
+ assign(const _CharT* __s, size_type __n);
+ basic_string&
+ assign(const _CharT* __s)
+ {
+ ;
+ return this->assign(__s, traits_type::length(__s));
+ }
+ basic_string&
+ assign(size_type __n, _CharT __c)
+ { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
+ template<class _InputIterator>
+ basic_string&
+ assign(_InputIterator __first, _InputIterator __last)
+ { return this->replace(_M_ibegin(), _M_iend(), __first, __last); }
+ void
+ insert(iterator __p, size_type __n, _CharT __c)
+ { this->replace(__p, __p, __n, __c); }
+ template<class _InputIterator>
+ void
+ insert(iterator __p, _InputIterator __beg, _InputIterator __end)
+ { this->replace(__p, __p, __beg, __end); }
+ basic_string&
+ insert(size_type __pos1, const basic_string& __str)
+ { return this->insert(__pos1, __str, size_type(0), __str.size()); }
+ basic_string&
+ insert(size_type __pos1, const basic_string& __str,
+ size_type __pos2, size_type __n)
+ { return this->insert(__pos1, __str._M_data()
+ + __str._M_check(__pos2, "basic_string::insert"),
+ __str._M_limit(__pos2, __n)); }
+ basic_string&
+ insert(size_type __pos, const _CharT* __s, size_type __n);
+ basic_string&
+ insert(size_type __pos, const _CharT* __s)
+ {
+ ;
+ return this->insert(__pos, __s, traits_type::length(__s));
+ }
+ basic_string&
+ insert(size_type __pos, size_type __n, _CharT __c)
+ { return _M_replace_aux(_M_check(__pos, "basic_string::insert"),
+ size_type(0), __n, __c); }
+ iterator
+ insert(iterator __p, _CharT __c)
+ {
+ ;
+ const size_type __pos = __p - _M_ibegin();
+ _M_replace_aux(__pos, size_type(0), size_type(1), __c);
+ _M_rep()->_M_set_leaked();
+ return iterator(_M_data() + __pos);
+ }
+ basic_string&
+ erase(size_type __pos = 0, size_type __n = npos)
+ {
+ _M_mutate(_M_check(__pos, "basic_string::erase"),
+ _M_limit(__pos, __n), size_type(0));
+ return *this;
+ }
+ iterator
+ erase(iterator __position)
+ {
+ ;
+ const size_type __pos = __position - _M_ibegin();
+ _M_mutate(__pos, size_type(1), size_type(0));
+ _M_rep()->_M_set_leaked();
+ return iterator(_M_data() + __pos);
+ }
+ iterator
+ erase(iterator __first, iterator __last)
+ {
+ ;
+ const size_type __pos = __first - _M_ibegin();
+ _M_mutate(__pos, __last - __first, size_type(0));
+ _M_rep()->_M_set_leaked();
+ return iterator(_M_data() + __pos);
+ }
+ basic_string&
+ replace(size_type __pos, size_type __n, const basic_string& __str)
+ { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
+ basic_string&
+ replace(size_type __pos1, size_type __n1, const basic_string& __str,
+ size_type __pos2, size_type __n2)
+ { return this->replace(__pos1, __n1, __str._M_data()
+ + __str._M_check(__pos2, "basic_string::replace"),
+ __str._M_limit(__pos2, __n2)); }
+ basic_string&
+ replace(size_type __pos, size_type __n1, const _CharT* __s,
+ size_type __n2);
+ basic_string&
+ replace(size_type __pos, size_type __n1, const _CharT* __s)
+ {
+ ;
+ return this->replace(__pos, __n1, __s, traits_type::length(__s));
+ }
+ basic_string&
+ replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
+ { return _M_replace_aux(_M_check(__pos, "basic_string::replace"),
+ _M_limit(__pos, __n1), __n2, __c); }
+ basic_string&
+ replace(iterator __i1, iterator __i2, const basic_string& __str)
+ { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
+ basic_string&
+ replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
+ {
+ ;
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
+ }
+ basic_string&
+ replace(iterator __i1, iterator __i2, const _CharT* __s)
+ {
+ ;
+ return this->replace(__i1, __i2, __s, traits_type::length(__s));
+ }
+ basic_string&
+ replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
+ {
+ ;
+ return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);
+ }
+ template<class _InputIterator>
+ basic_string&
+ replace(iterator __i1, iterator __i2,
+ _InputIterator __k1, _InputIterator __k2)
+ {
+ ;
+ ;
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
+ }
+ basic_string&
+ replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
+ {
+ ;
+ ;
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+ __k1, __k2 - __k1);
+ }
+ basic_string&
+ replace(iterator __i1, iterator __i2,
+ const _CharT* __k1, const _CharT* __k2)
+ {
+ ;
+ ;
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+ __k1, __k2 - __k1);
+ }
+ basic_string&
+ replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
+ {
+ ;
+ ;
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+ __k1.base(), __k2 - __k1);
+ }
+ basic_string&
+ replace(iterator __i1, iterator __i2,
+ const_iterator __k1, const_iterator __k2)
+ {
+ ;
+ ;
+ return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
+ __k1.base(), __k2 - __k1);
+ }
+ private:
+ template<class _Integer>
+ basic_string&
+ _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,
+ _Integer __val, __true_type)
+ { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }
+ template<class _InputIterator>
+ basic_string&
+ _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
+ _InputIterator __k2, __false_type);
+ basic_string&
+ _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
+ _CharT __c);
+ basic_string&
+ _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
+ size_type __n2);
+ template<class _InIterator>
+ static _CharT*
+ _S_construct_aux(_InIterator __beg, _InIterator __end,
+ const _Alloc& __a, __false_type)
+ {
+ typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
+ return _S_construct(__beg, __end, __a, _Tag());
+ }
+ template<class _Integer>
+ static _CharT*
+ _S_construct_aux(_Integer __beg, _Integer __end,
+ const _Alloc& __a, __true_type)
+ { return _S_construct(static_cast<size_type>(__beg), __end, __a); }
+ template<class _InIterator>
+ static _CharT*
+ _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)
+ {
+ typedef typename std::__is_integer<_InIterator>::__type _Integral;
+ return _S_construct_aux(__beg, __end, __a, _Integral());
+ }
+ template<class _InIterator>
+ static _CharT*
+ _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
+ input_iterator_tag);
+ template<class _FwdIterator>
+ static _CharT*
+ _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,
+ forward_iterator_tag);
+ static _CharT*
+ _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
+ public:
+ size_type
+ copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
+ void
+ swap(basic_string& __s);
+ const _CharT*
+ c_str() const
+ { return _M_data(); }
+ const _CharT*
+ data() const
+ { return _M_data(); }
+ allocator_type
+ get_allocator() const
+ { return _M_dataplus; }
+ size_type
+ find(const _CharT* __s, size_type __pos, size_type __n) const;
+ size_type
+ find(const basic_string& __str, size_type __pos = 0) const
+ { return this->find(__str.data(), __pos, __str.size()); }
+ size_type
+ find(const _CharT* __s, size_type __pos = 0) const
+ {
+ ;
+ return this->find(__s, __pos, traits_type::length(__s));
+ }
+ size_type
+ find(_CharT __c, size_type __pos = 0) const;
+ size_type
+ rfind(const basic_string& __str, size_type __pos = npos) const
+ { return this->rfind(__str.data(), __pos, __str.size()); }
+ size_type
+ rfind(const _CharT* __s, size_type __pos, size_type __n) const;
+ size_type
+ rfind(const _CharT* __s, size_type __pos = npos) const
+ {
+ ;
+ return this->rfind(__s, __pos, traits_type::length(__s));
+ }
+ size_type
+ rfind(_CharT __c, size_type __pos = npos) const;
+ size_type
+ find_first_of(const basic_string& __str, size_type __pos = 0) const
+ { return this->find_first_of(__str.data(), __pos, __str.size()); }
+ size_type
+ find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
+ size_type
+ find_first_of(const _CharT* __s, size_type __pos = 0) const
+ {
+ ;
+ return this->find_first_of(__s, __pos, traits_type::length(__s));
+ }
+ size_type
+ find_first_of(_CharT __c, size_type __pos = 0) const
+ { return this->find(__c, __pos); }
+ size_type
+ find_last_of(const basic_string& __str, size_type __pos = npos) const
+ { return this->find_last_of(__str.data(), __pos, __str.size()); }
+ size_type
+ find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
+ size_type
+ find_last_of(const _CharT* __s, size_type __pos = npos) const
+ {
+ ;
+ return this->find_last_of(__s, __pos, traits_type::length(__s));
+ }
+ size_type
+ find_last_of(_CharT __c, size_type __pos = npos) const
+ { return this->rfind(__c, __pos); }
+ size_type
+ find_first_not_of(const basic_string& __str, size_type __pos = 0) const
+ { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
+ size_type
+ find_first_not_of(const _CharT* __s, size_type __pos,
+ size_type __n) const;
+ size_type
+ find_first_not_of(const _CharT* __s, size_type __pos = 0) const
+ {
+ ;
+ return this->find_first_not_of(__s, __pos, traits_type::length(__s));
+ }
+ size_type
+ find_first_not_of(_CharT __c, size_type __pos = 0) const;
+ size_type
+ find_last_not_of(const basic_string& __str, size_type __pos = npos) const
+ { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
+ size_type
+ find_last_not_of(const _CharT* __s, size_type __pos,
+ size_type __n) const;
+ size_type
+ find_last_not_of(const _CharT* __s, size_type __pos = npos) const
+ {
+ ;
+ return this->find_last_not_of(__s, __pos, traits_type::length(__s));
+ }
+ size_type
+ find_last_not_of(_CharT __c, size_type __pos = npos) const;
+ basic_string
+ substr(size_type __pos = 0, size_type __n = npos) const
+ { return basic_string(*this,
+ _M_check(__pos, "basic_string::substr"), __n); }
+ int
+ compare(const basic_string& __str) const
+ {
+ const size_type __size = this->size();
+ const size_type __osize = __str.size();
+ const size_type __len = std::min(__size, __osize);
+ int __r = traits_type::compare(_M_data(), __str.data(), __len);
+ if (!__r)
+ __r = _S_compare(__size, __osize);
+ return __r;
+ }
+ int
+ compare(size_type __pos, size_type __n, const basic_string& __str) const;
+ int
+ compare(size_type __pos1, size_type __n1, const basic_string& __str,
+ size_type __pos2, size_type __n2) const;
+ int
+ compare(const _CharT* __s) const;
+ int
+ compare(size_type __pos, size_type __n1, const _CharT* __s) const;
+ int
+ compare(size_type __pos, size_type __n1, const _CharT* __s,
+ size_type __n2) const;
+ };
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline basic_string<_CharT, _Traits, _Alloc>::
+ basic_string()
+ : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>
+ operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ {
+ basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
+ __str.append(__rhs);
+ return __str;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT,_Traits,_Alloc>
+ operator+(const _CharT* __lhs,
+ const basic_string<_CharT,_Traits,_Alloc>& __rhs);
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT,_Traits,_Alloc>
+ operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline basic_string<_CharT, _Traits, _Alloc>
+ operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ {
+ basic_string<_CharT, _Traits, _Alloc> __str(__lhs);
+ __str.append(__rhs);
+ return __str;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline basic_string<_CharT, _Traits, _Alloc>
+ operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)
+ {
+ typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
+ typedef typename __string_type::size_type __size_type;
+ __string_type __str(__lhs);
+ __str.append(__size_type(1), __rhs);
+ return __str;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __lhs.compare(__rhs) == 0; }
+ template<typename _CharT>
+ inline
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type
+ operator==(const basic_string<_CharT>& __lhs,
+ const basic_string<_CharT>& __rhs)
+ { return (__lhs.size() == __rhs.size()
+ && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(),
+ __lhs.size())); }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator==(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __rhs.compare(__lhs) == 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ { return __lhs.compare(__rhs) == 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return !(__lhs == __rhs); }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator!=(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return !(__lhs == __rhs); }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator!=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ { return !(__lhs == __rhs); }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __lhs.compare(__rhs) < 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ { return __lhs.compare(__rhs) < 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator<(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __rhs.compare(__lhs) > 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __lhs.compare(__rhs) > 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator>(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ { return __lhs.compare(__rhs) > 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator>(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __rhs.compare(__lhs) < 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __lhs.compare(__rhs) <= 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator<=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ { return __lhs.compare(__rhs) <= 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator<=(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __rhs.compare(__lhs) >= 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __lhs.compare(__rhs) >= 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator>=(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ const _CharT* __rhs)
+ { return __lhs.compare(__rhs) >= 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline bool
+ operator>=(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { return __rhs.compare(__lhs) <= 0; }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline void
+ swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,
+ basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ { __lhs.swap(__rhs); }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_istream<_CharT, _Traits>&
+ operator>>(basic_istream<_CharT, _Traits>& __is,
+ basic_string<_CharT, _Traits, _Alloc>& __str);
+ template<>
+ basic_istream<char>&
+ operator>>(basic_istream<char>& __is, basic_string<char>& __str);
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline basic_ostream<_CharT, _Traits>&
+ operator<<(basic_ostream<_CharT, _Traits>& __os,
+ const basic_string<_CharT, _Traits, _Alloc>& __str)
+ {
+ return __ostream_insert(__os, __str.data(), __str.size());
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_istream<_CharT, _Traits>&
+ getline(basic_istream<_CharT, _Traits>& __is,
+ basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim);
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ inline basic_istream<_CharT, _Traits>&
+ getline(basic_istream<_CharT, _Traits>& __is,
+ basic_string<_CharT, _Traits, _Alloc>& __str)
+ { return getline(__is, __str, __is.widen('\n')); }
+ template<>
+ basic_istream<char>&
+ getline(basic_istream<char>& __in, basic_string<char>& __str,
+ char __delim);
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ const typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4;
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ const _CharT
+ basic_string<_CharT, _Traits, _Alloc>::
+ _Rep::_S_terminal = _CharT();
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ const typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::npos;
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[
+ (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) /
+ sizeof(size_type)];
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ template<typename _InIterator>
+ _CharT*
+ basic_string<_CharT, _Traits, _Alloc>::
+ _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
+ input_iterator_tag)
+ {
+ if (__beg == __end && __a == _Alloc())
+ return _S_empty_rep()._M_refdata();
+ _CharT __buf[128];
+ size_type __len = 0;
+ while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT))
+ {
+ __buf[__len++] = *__beg;
+ ++__beg;
+ }
+ _Rep* __r = _Rep::_S_create(__len, size_type(0), __a);
+ _M_copy(__r->_M_refdata(), __buf, __len);
+ try
+ {
+ while (__beg != __end)
+ {
+ if (__len == __r->_M_capacity)
+ {
+ _Rep* __another = _Rep::_S_create(__len + 1, __len, __a);
+ _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len);
+ __r->_M_destroy(__a);
+ __r = __another;
+ }
+ __r->_M_refdata()[__len++] = *__beg;
+ ++__beg;
+ }
+ }
+ catch(...)
+ {
+ __r->_M_destroy(__a);
+ throw;
+ }
+ __r->_M_set_length_and_sharable(__len);
+ return __r->_M_refdata();
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ template <typename _InIterator>
+ _CharT*
+ basic_string<_CharT, _Traits, _Alloc>::
+ _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
+ forward_iterator_tag)
+ {
+ if (__beg == __end && __a == _Alloc())
+ return _S_empty_rep()._M_refdata();
+ if (__builtin_expect(__gnu_cxx::__is_null_pointer(__beg)
+ && __beg != __end, 0))
+ __throw_logic_error(("basic_string::_S_construct NULL not valid"));
+ const size_type __dnew = static_cast<size_type>(std::distance(__beg,
+ __end));
+ _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a);
+ try
+ { _S_copy_chars(__r->_M_refdata(), __beg, __end); }
+ catch(...)
+ {
+ __r->_M_destroy(__a);
+ throw;
+ }
+ __r->_M_set_length_and_sharable(__dnew);
+ return __r->_M_refdata();
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ _CharT*
+ basic_string<_CharT, _Traits, _Alloc>::
+ _S_construct(size_type __n, _CharT __c, const _Alloc& __a)
+ {
+ if (__n == 0 && __a == _Alloc())
+ return _S_empty_rep()._M_refdata();
+ _Rep* __r = _Rep::_S_create(__n, size_type(0), __a);
+ if (__n)
+ _M_assign(__r->_M_refdata(), __n, __c);
+ __r->_M_set_length_and_sharable(__n);
+ return __r->_M_refdata();
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(const basic_string& __str)
+ : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()),
+ __str.get_allocator()),
+ __str.get_allocator())
+ { }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(const _Alloc& __a)
+ : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a)
+ { }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(const basic_string& __str, size_type __pos, size_type __n)
+ : _M_dataplus(_S_construct(__str._M_data()
+ + __str._M_check(__pos,
+ "basic_string::basic_string"),
+ __str._M_data() + __str._M_limit(__pos, __n)
+ + __pos, _Alloc()), _Alloc())
+ { }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(const basic_string& __str, size_type __pos,
+ size_type __n, const _Alloc& __a)
+ : _M_dataplus(_S_construct(__str._M_data()
+ + __str._M_check(__pos,
+ "basic_string::basic_string"),
+ __str._M_data() + __str._M_limit(__pos, __n)
+ + __pos, __a), __a)
+ { }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(const _CharT* __s, size_type __n, const _Alloc& __a)
+ : _M_dataplus(_S_construct(__s, __s + __n, __a), __a)
+ { }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(const _CharT* __s, const _Alloc& __a)
+ : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) :
+ __s + npos, __a), __a)
+ { }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(size_type __n, _CharT __c, const _Alloc& __a)
+ : _M_dataplus(_S_construct(__n, __c, __a), __a)
+ { }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ template<typename _InputIterator>
+ basic_string<_CharT, _Traits, _Alloc>::
+ basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a)
+ : _M_dataplus(_S_construct(__beg, __end, __a), __a)
+ { }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ assign(const basic_string& __str)
+ {
+ if (_M_rep() != __str._M_rep())
+ {
+ const allocator_type __a = this->get_allocator();
+ _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator());
+ _M_rep()->_M_dispose(__a);
+ _M_data(__tmp);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ assign(const _CharT* __s, size_type __n)
+ {
+ ;
+ _M_check_length(this->size(), __n, "basic_string::assign");
+ if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
+ return _M_replace_safe(size_type(0), this->size(), __s, __n);
+ else
+ {
+ const size_type __pos = __s - _M_data();
+ if (__pos >= __n)
+ _M_copy(_M_data(), __s, __n);
+ else if (__pos)
+ _M_move(_M_data(), __s, __n);
+ _M_rep()->_M_set_length_and_sharable(__n);
+ return *this;
+ }
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ append(size_type __n, _CharT __c)
+ {
+ if (__n)
+ {
+ _M_check_length(size_type(0), __n, "basic_string::append");
+ const size_type __len = __n + this->size();
+ if (__len > this->capacity() || _M_rep()->_M_is_shared())
+ this->reserve(__len);
+ _M_assign(_M_data() + this->size(), __n, __c);
+ _M_rep()->_M_set_length_and_sharable(__len);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ append(const _CharT* __s, size_type __n)
+ {
+ ;
+ if (__n)
+ {
+ _M_check_length(size_type(0), __n, "basic_string::append");
+ const size_type __len = __n + this->size();
+ if (__len > this->capacity() || _M_rep()->_M_is_shared())
+ {
+ if (_M_disjunct(__s))
+ this->reserve(__len);
+ else
+ {
+ const size_type __off = __s - _M_data();
+ this->reserve(__len);
+ __s = _M_data() + __off;
+ }
+ }
+ _M_copy(_M_data() + this->size(), __s, __n);
+ _M_rep()->_M_set_length_and_sharable(__len);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ append(const basic_string& __str)
+ {
+ const size_type __size = __str.size();
+ if (__size)
+ {
+ const size_type __len = __size + this->size();
+ if (__len > this->capacity() || _M_rep()->_M_is_shared())
+ this->reserve(__len);
+ _M_copy(_M_data() + this->size(), __str._M_data(), __size);
+ _M_rep()->_M_set_length_and_sharable(__len);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ append(const basic_string& __str, size_type __pos, size_type __n)
+ {
+ __str._M_check(__pos, "basic_string::append");
+ __n = __str._M_limit(__pos, __n);
+ if (__n)
+ {
+ const size_type __len = __n + this->size();
+ if (__len > this->capacity() || _M_rep()->_M_is_shared())
+ this->reserve(__len);
+ _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n);
+ _M_rep()->_M_set_length_and_sharable(__len);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ insert(size_type __pos, const _CharT* __s, size_type __n)
+ {
+ ;
+ _M_check(__pos, "basic_string::insert");
+ _M_check_length(size_type(0), __n, "basic_string::insert");
+ if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
+ return _M_replace_safe(__pos, size_type(0), __s, __n);
+ else
+ {
+ const size_type __off = __s - _M_data();
+ _M_mutate(__pos, 0, __n);
+ __s = _M_data() + __off;
+ _CharT* __p = _M_data() + __pos;
+ if (__s + __n <= __p)
+ _M_copy(__p, __s, __n);
+ else if (__s >= __p)
+ _M_copy(__p, __s + __n, __n);
+ else
+ {
+ const size_type __nleft = __p - __s;
+ _M_copy(__p, __s, __nleft);
+ _M_copy(__p + __nleft, __p + __n, __n - __nleft);
+ }
+ return *this;
+ }
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ replace(size_type __pos, size_type __n1, const _CharT* __s,
+ size_type __n2)
+ {
+ ;
+ _M_check(__pos, "basic_string::replace");
+ __n1 = _M_limit(__pos, __n1);
+ _M_check_length(__n1, __n2, "basic_string::replace");
+ bool __left;
+ if (_M_disjunct(__s) || _M_rep()->_M_is_shared())
+ return _M_replace_safe(__pos, __n1, __s, __n2);
+ else if ((__left = __s + __n2 <= _M_data() + __pos)
+ || _M_data() + __pos + __n1 <= __s)
+ {
+ size_type __off = __s - _M_data();
+ __left ? __off : (__off += __n2 - __n1);
+ _M_mutate(__pos, __n1, __n2);
+ _M_copy(_M_data() + __pos, _M_data() + __off, __n2);
+ return *this;
+ }
+ else
+ {
+ const basic_string __tmp(__s, __n2);
+ return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2);
+ }
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ void
+ basic_string<_CharT, _Traits, _Alloc>::_Rep::
+ _M_destroy(const _Alloc& __a) throw ()
+ {
+ const size_type __size = sizeof(_Rep_base) +
+ (this->_M_capacity + 1) * sizeof(_CharT);
+ _Raw_bytes_alloc(__a).deallocate(reinterpret_cast<char*>(this), __size);
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ void
+ basic_string<_CharT, _Traits, _Alloc>::
+ _M_leak_hard()
+ {
+ if (_M_rep() == &_S_empty_rep())
+ return;
+ if (_M_rep()->_M_is_shared())
+ _M_mutate(0, 0, 0);
+ _M_rep()->_M_set_leaked();
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ void
+ basic_string<_CharT, _Traits, _Alloc>::
+ _M_mutate(size_type __pos, size_type __len1, size_type __len2)
+ {
+ const size_type __old_size = this->size();
+ const size_type __new_size = __old_size + __len2 - __len1;
+ const size_type __how_much = __old_size - __pos - __len1;
+ if (__new_size > this->capacity() || _M_rep()->_M_is_shared())
+ {
+ const allocator_type __a = get_allocator();
+ _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a);
+ if (__pos)
+ _M_copy(__r->_M_refdata(), _M_data(), __pos);
+ if (__how_much)
+ _M_copy(__r->_M_refdata() + __pos + __len2,
+ _M_data() + __pos + __len1, __how_much);
+ _M_rep()->_M_dispose(__a);
+ _M_data(__r->_M_refdata());
+ }
+ else if (__how_much && __len1 != __len2)
+ {
+ _M_move(_M_data() + __pos + __len2,
+ _M_data() + __pos + __len1, __how_much);
+ }
+ _M_rep()->_M_set_length_and_sharable(__new_size);
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ void
+ basic_string<_CharT, _Traits, _Alloc>::
+ reserve(size_type __res)
+ {
+ if (__res != this->capacity() || _M_rep()->_M_is_shared())
+ {
+ if (__res < this->size())
+ __res = this->size();
+ const allocator_type __a = get_allocator();
+ _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size());
+ _M_rep()->_M_dispose(__a);
+ _M_data(__tmp);
+ }
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ void
+ basic_string<_CharT, _Traits, _Alloc>::
+ swap(basic_string& __s)
+ {
+ if (_M_rep()->_M_is_leaked())
+ _M_rep()->_M_set_sharable();
+ if (__s._M_rep()->_M_is_leaked())
+ __s._M_rep()->_M_set_sharable();
+ if (this->get_allocator() == __s.get_allocator())
+ {
+ _CharT* __tmp = _M_data();
+ _M_data(__s._M_data());
+ __s._M_data(__tmp);
+ }
+ else
+ {
+ const basic_string __tmp1(_M_ibegin(), _M_iend(),
+ __s.get_allocator());
+ const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(),
+ this->get_allocator());
+ *this = __tmp2;
+ __s = __tmp1;
+ }
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::_Rep*
+ basic_string<_CharT, _Traits, _Alloc>::_Rep::
+ _S_create(size_type __capacity, size_type __old_capacity,
+ const _Alloc& __alloc)
+ {
+ if (__capacity > _S_max_size)
+ __throw_length_error(("basic_string::_S_create"));
+ const size_type __pagesize = 4096;
+ const size_type __malloc_header_size = 4 * sizeof(void*);
+ if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
+ __capacity = 2 * __old_capacity;
+ size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
+ const size_type __adj_size = __size + __malloc_header_size;
+ if (__adj_size > __pagesize && __capacity > __old_capacity)
+ {
+ const size_type __extra = __pagesize - __adj_size % __pagesize;
+ __capacity += __extra / sizeof(_CharT);
+ if (__capacity > _S_max_size)
+ __capacity = _S_max_size;
+ __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);
+ }
+ void* __place = _Raw_bytes_alloc(__alloc).allocate(__size);
+ _Rep *__p = new (__place) _Rep;
+ __p->_M_capacity = __capacity;
+ __p->_M_set_sharable();
+ return __p;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ _CharT*
+ basic_string<_CharT, _Traits, _Alloc>::_Rep::
+ _M_clone(const _Alloc& __alloc, size_type __res)
+ {
+ const size_type __requested_cap = this->_M_length + __res;
+ _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity,
+ __alloc);
+ if (this->_M_length)
+ _M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length);
+ __r->_M_set_length_and_sharable(this->_M_length);
+ return __r->_M_refdata();
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ void
+ basic_string<_CharT, _Traits, _Alloc>::
+ resize(size_type __n, _CharT __c)
+ {
+ const size_type __size = this->size();
+ _M_check_length(__size, __n, "basic_string::resize");
+ if (__size < __n)
+ this->append(__n - __size, __c);
+ else if (__n < __size)
+ this->erase(__n);
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ template<typename _InputIterator>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
+ _InputIterator __k2, __false_type)
+ {
+ const basic_string __s(__k1, __k2);
+ const size_type __n1 = __i2 - __i1;
+ _M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch");
+ return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(),
+ __s.size());
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
+ _CharT __c)
+ {
+ _M_check_length(__n1, __n2, "basic_string::_M_replace_aux");
+ _M_mutate(__pos1, __n1, __n2);
+ if (__n2)
+ _M_assign(_M_data() + __pos1, __n2, __c);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>&
+ basic_string<_CharT, _Traits, _Alloc>::
+ _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,
+ size_type __n2)
+ {
+ _M_mutate(__pos1, __n1, __n2);
+ if (__n2)
+ _M_copy(_M_data() + __pos1, __s, __n2);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>
+ operator+(const _CharT* __lhs,
+ const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ {
+ ;
+ typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
+ typedef typename __string_type::size_type __size_type;
+ const __size_type __len = _Traits::length(__lhs);
+ __string_type __str;
+ __str.reserve(__len + __rhs.size());
+ __str.append(__lhs, __len);
+ __str.append(__rhs);
+ return __str;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_string<_CharT, _Traits, _Alloc>
+ operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs)
+ {
+ typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
+ typedef typename __string_type::size_type __size_type;
+ __string_type __str;
+ const __size_type __len = __rhs.size();
+ __str.reserve(__len + 1);
+ __str.append(__size_type(1), __lhs);
+ __str.append(__rhs);
+ return __str;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ copy(_CharT* __s, size_type __n, size_type __pos) const
+ {
+ _M_check(__pos, "basic_string::copy");
+ __n = _M_limit(__pos, __n);
+ ;
+ if (__n)
+ _M_copy(__s, _M_data() + __pos, __n);
+ return __n;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find(const _CharT* __s, size_type __pos, size_type __n) const
+ {
+ ;
+ const size_type __size = this->size();
+ const _CharT* __data = _M_data();
+ if (__n == 0)
+ return __pos <= __size ? __pos : npos;
+ if (__n <= __size)
+ {
+ for (; __pos <= __size - __n; ++__pos)
+ if (traits_type::eq(__data[__pos], __s[0])
+ && traits_type::compare(__data + __pos + 1,
+ __s + 1, __n - 1) == 0)
+ return __pos;
+ }
+ return npos;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find(_CharT __c, size_type __pos) const
+ {
+ size_type __ret = npos;
+ const size_type __size = this->size();
+ if (__pos < __size)
+ {
+ const _CharT* __data = _M_data();
+ const size_type __n = __size - __pos;
+ const _CharT* __p = traits_type::find(__data + __pos, __n, __c);
+ if (__p)
+ __ret = __p - __data;
+ }
+ return __ret;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ rfind(const _CharT* __s, size_type __pos, size_type __n) const
+ {
+ ;
+ const size_type __size = this->size();
+ if (__n <= __size)
+ {
+ __pos = std::min(size_type(__size - __n), __pos);
+ const _CharT* __data = _M_data();
+ do
+ {
+ if (traits_type::compare(__data + __pos, __s, __n) == 0)
+ return __pos;
+ }
+ while (__pos-- > 0);
+ }
+ return npos;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ rfind(_CharT __c, size_type __pos) const
+ {
+ size_type __size = this->size();
+ if (__size)
+ {
+ if (--__size > __pos)
+ __size = __pos;
+ for (++__size; __size-- > 0; )
+ if (traits_type::eq(_M_data()[__size], __c))
+ return __size;
+ }
+ return npos;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
+ {
+ ;
+ for (; __n && __pos < this->size(); ++__pos)
+ {
+ const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]);
+ if (__p)
+ return __pos;
+ }
+ return npos;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
+ {
+ ;
+ size_type __size = this->size();
+ if (__size && __n)
+ {
+ if (--__size > __pos)
+ __size = __pos;
+ do
+ {
+ if (traits_type::find(__s, __n, _M_data()[__size]))
+ return __size;
+ }
+ while (__size-- != 0);
+ }
+ return npos;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
+ {
+ ;
+ for (; __pos < this->size(); ++__pos)
+ if (!traits_type::find(__s, __n, _M_data()[__pos]))
+ return __pos;
+ return npos;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find_first_not_of(_CharT __c, size_type __pos) const
+ {
+ for (; __pos < this->size(); ++__pos)
+ if (!traits_type::eq(_M_data()[__pos], __c))
+ return __pos;
+ return npos;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
+ {
+ ;
+ size_type __size = this->size();
+ if (__size)
+ {
+ if (--__size > __pos)
+ __size = __pos;
+ do
+ {
+ if (!traits_type::find(__s, __n, _M_data()[__size]))
+ return __size;
+ }
+ while (__size--);
+ }
+ return npos;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ typename basic_string<_CharT, _Traits, _Alloc>::size_type
+ basic_string<_CharT, _Traits, _Alloc>::
+ find_last_not_of(_CharT __c, size_type __pos) const
+ {
+ size_type __size = this->size();
+ if (__size)
+ {
+ if (--__size > __pos)
+ __size = __pos;
+ do
+ {
+ if (!traits_type::eq(_M_data()[__size], __c))
+ return __size;
+ }
+ while (__size--);
+ }
+ return npos;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ int
+ basic_string<_CharT, _Traits, _Alloc>::
+ compare(size_type __pos, size_type __n, const basic_string& __str) const
+ {
+ _M_check(__pos, "basic_string::compare");
+ __n = _M_limit(__pos, __n);
+ const size_type __osize = __str.size();
+ const size_type __len = std::min(__n, __osize);
+ int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len);
+ if (!__r)
+ __r = _S_compare(__n, __osize);
+ return __r;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ int
+ basic_string<_CharT, _Traits, _Alloc>::
+ compare(size_type __pos1, size_type __n1, const basic_string& __str,
+ size_type __pos2, size_type __n2) const
+ {
+ _M_check(__pos1, "basic_string::compare");
+ __str._M_check(__pos2, "basic_string::compare");
+ __n1 = _M_limit(__pos1, __n1);
+ __n2 = __str._M_limit(__pos2, __n2);
+ const size_type __len = std::min(__n1, __n2);
+ int __r = traits_type::compare(_M_data() + __pos1,
+ __str.data() + __pos2, __len);
+ if (!__r)
+ __r = _S_compare(__n1, __n2);
+ return __r;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ int
+ basic_string<_CharT, _Traits, _Alloc>::
+ compare(const _CharT* __s) const
+ {
+ ;
+ const size_type __size = this->size();
+ const size_type __osize = traits_type::length(__s);
+ const size_type __len = std::min(__size, __osize);
+ int __r = traits_type::compare(_M_data(), __s, __len);
+ if (!__r)
+ __r = _S_compare(__size, __osize);
+ return __r;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ int
+ basic_string <_CharT, _Traits, _Alloc>::
+ compare(size_type __pos, size_type __n1, const _CharT* __s) const
+ {
+ ;
+ _M_check(__pos, "basic_string::compare");
+ __n1 = _M_limit(__pos, __n1);
+ const size_type __osize = traits_type::length(__s);
+ const size_type __len = std::min(__n1, __osize);
+ int __r = traits_type::compare(_M_data() + __pos, __s, __len);
+ if (!__r)
+ __r = _S_compare(__n1, __osize);
+ return __r;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ int
+ basic_string <_CharT, _Traits, _Alloc>::
+ compare(size_type __pos, size_type __n1, const _CharT* __s,
+ size_type __n2) const
+ {
+ ;
+ _M_check(__pos, "basic_string::compare");
+ __n1 = _M_limit(__pos, __n1);
+ const size_type __len = std::min(__n1, __n2);
+ int __r = traits_type::compare(_M_data() + __pos, __s, __len);
+ if (!__r)
+ __r = _S_compare(__n1, __n2);
+ return __r;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_istream<_CharT, _Traits>&
+ operator>>(basic_istream<_CharT, _Traits>& __in,
+ basic_string<_CharT, _Traits, _Alloc>& __str)
+ {
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
+ typedef typename __istream_type::ios_base __ios_base;
+ typedef typename __istream_type::int_type __int_type;
+ typedef typename __string_type::size_type __size_type;
+ typedef ctype<_CharT> __ctype_type;
+ typedef typename __ctype_type::ctype_base __ctype_base;
+ __size_type __extracted = 0;
+ typename __ios_base::iostate __err = __ios_base::goodbit;
+ typename __istream_type::sentry __cerb(__in, false);
+ if (__cerb)
+ {
+ try
+ {
+ __str.erase();
+ _CharT __buf[128];
+ __size_type __len = 0;
+ const streamsize __w = __in.width();
+ const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)
+ : __str.max_size();
+ const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
+ const __int_type __eof = _Traits::eof();
+ __int_type __c = __in.rdbuf()->sgetc();
+ while (__extracted < __n
+ && !_Traits::eq_int_type(__c, __eof)
+ && !__ct.is(__ctype_base::space,
+ _Traits::to_char_type(__c)))
+ {
+ if (__len == sizeof(__buf) / sizeof(_CharT))
+ {
+ __str.append(__buf, sizeof(__buf) / sizeof(_CharT));
+ __len = 0;
+ }
+ __buf[__len++] = _Traits::to_char_type(__c);
+ ++__extracted;
+ __c = __in.rdbuf()->snextc();
+ }
+ __str.append(__buf, __len);
+ if (_Traits::eq_int_type(__c, __eof))
+ __err |= __ios_base::eofbit;
+ __in.width(0);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ __in._M_setstate(__ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ {
+ __in._M_setstate(__ios_base::badbit);
+ }
+ }
+ if (!__extracted)
+ __err |= __ios_base::failbit;
+ if (__err)
+ __in.setstate(__err);
+ return __in;
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ basic_istream<_CharT, _Traits>&
+ getline(basic_istream<_CharT, _Traits>& __in,
+ basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim)
+ {
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef basic_string<_CharT, _Traits, _Alloc> __string_type;
+ typedef typename __istream_type::ios_base __ios_base;
+ typedef typename __istream_type::int_type __int_type;
+ typedef typename __string_type::size_type __size_type;
+ __size_type __extracted = 0;
+ const __size_type __n = __str.max_size();
+ typename __ios_base::iostate __err = __ios_base::goodbit;
+ typename __istream_type::sentry __cerb(__in, true);
+ if (__cerb)
+ {
+ try
+ {
+ __str.erase();
+ const __int_type __idelim = _Traits::to_int_type(__delim);
+ const __int_type __eof = _Traits::eof();
+ __int_type __c = __in.rdbuf()->sgetc();
+ while (__extracted < __n
+ && !_Traits::eq_int_type(__c, __eof)
+ && !_Traits::eq_int_type(__c, __idelim))
+ {
+ __str += _Traits::to_char_type(__c);
+ ++__extracted;
+ __c = __in.rdbuf()->snextc();
+ }
+ if (_Traits::eq_int_type(__c, __eof))
+ __err |= __ios_base::eofbit;
+ else if (_Traits::eq_int_type(__c, __idelim))
+ {
+ ++__extracted;
+ __in.rdbuf()->sbumpc();
+ }
+ else
+ __err |= __ios_base::failbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ __in._M_setstate(__ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ {
+ __in._M_setstate(__ios_base::badbit);
+ }
+ }
+ if (!__extracted)
+ __err |= __ios_base::failbit;
+ if (__err)
+ __in.setstate(__err);
+ return __in;
+ }
+ extern template class basic_string<char>;
+ extern template
+ basic_istream<char>&
+ operator>>(basic_istream<char>&, string&);
+ extern template
+ basic_ostream<char>&
+ operator<<(basic_ostream<char>&, const string&);
+ extern template
+ basic_istream<char>&
+ getline(basic_istream<char>&, string&, char);
+ extern template
+ basic_istream<char>&
+ getline(basic_istream<char>&, string&);
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ class locale
+ {
+ public:
+ typedef int category;
+ class facet;
+ class id;
+ class _Impl;
+ friend class facet;
+ friend class _Impl;
+ template<typename _Facet>
+ friend bool
+ has_facet(const locale&) throw();
+ template<typename _Facet>
+ friend const _Facet&
+ use_facet(const locale&);
+ template<typename _Cache>
+ friend struct __use_cache;
+ static const category none = 0;
+ static const category ctype = 1L << 0;
+ static const category numeric = 1L << 1;
+ static const category collate = 1L << 2;
+ static const category time = 1L << 3;
+ static const category monetary = 1L << 4;
+ static const category messages = 1L << 5;
+ static const category all = (ctype | numeric | collate |
+ time | monetary | messages);
+ locale() throw();
+ locale(const locale& __other) throw();
+ explicit
+ locale(const char* __s);
+ locale(const locale& __base, const char* __s, category __cat);
+ locale(const locale& __base, const locale& __add, category __cat);
+ template<typename _Facet>
+ locale(const locale& __other, _Facet* __f);
+ ~locale() throw();
+ const locale&
+ operator=(const locale& __other) throw();
+ template<typename _Facet>
+ locale
+ combine(const locale& __other) const;
+ string
+ name() const;
+ bool
+ operator==(const locale& __other) const throw ();
+ bool
+ operator!=(const locale& __other) const throw ()
+ { return !(this->operator==(__other)); }
+ template<typename _Char, typename _Traits, typename _Alloc>
+ bool
+ operator()(const basic_string<_Char, _Traits, _Alloc>& __s1,
+ const basic_string<_Char, _Traits, _Alloc>& __s2) const;
+ static locale
+ global(const locale&);
+ static const locale&
+ classic();
+ private:
+ _Impl* _M_impl;
+ static _Impl* _S_classic;
+ static _Impl* _S_global;
+ static const char* const* const _S_categories;
+ enum { _S_categories_size = 6 + 0 };
+ static __gthread_once_t _S_once;
+ explicit
+ locale(_Impl*) throw();
+ static void
+ _S_initialize();
+ static void
+ _S_initialize_once();
+ static category
+ _S_normalize_category(category);
+ void
+ _M_coalesce(const locale& __base, const locale& __add, category __cat);
+ };
+ class locale::facet
+ {
+ private:
+ friend class locale;
+ friend class locale::_Impl;
+ mutable _Atomic_word _M_refcount;
+ static __c_locale _S_c_locale;
+ static const char _S_c_name[2];
+ static __gthread_once_t _S_once;
+ static void
+ _S_initialize_once();
+ protected:
+ explicit
+ facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0)
+ { }
+ virtual
+ ~facet();
+ static void
+ _S_create_c_locale(__c_locale& __cloc, const char* __s,
+ __c_locale __old = 0);
+ static __c_locale
+ _S_clone_c_locale(__c_locale& __cloc);
+ static void
+ _S_destroy_c_locale(__c_locale& __cloc);
+ static __c_locale
+ _S_get_c_locale();
+ static const char*
+ _S_get_c_name();
+ private:
+ void
+ _M_add_reference() const throw()
+ { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
+ void
+ _M_remove_reference() const throw()
+ {
+ if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
+ {
+ try
+ { delete this; }
+ catch(...)
+ { }
+ }
+ }
+ facet(const facet&);
+ facet&
+ operator=(const facet&);
+ };
+ class locale::id
+ {
+ private:
+ friend class locale;
+ friend class locale::_Impl;
+ template<typename _Facet>
+ friend const _Facet&
+ use_facet(const locale&);
+ template<typename _Facet>
+ friend bool
+ has_facet(const locale&) throw ();
+ mutable size_t _M_index;
+ static _Atomic_word _S_refcount;
+ void
+ operator=(const id&);
+ id(const id&);
+ public:
+ id() { }
+ size_t
+ _M_id() const;
+ };
+ class locale::_Impl
+ {
+ public:
+ friend class locale;
+ friend class locale::facet;
+ template<typename _Facet>
+ friend bool
+ has_facet(const locale&) throw();
+ template<typename _Facet>
+ friend const _Facet&
+ use_facet(const locale&);
+ template<typename _Cache>
+ friend struct __use_cache;
+ private:
+ _Atomic_word _M_refcount;
+ const facet** _M_facets;
+ size_t _M_facets_size;
+ const facet** _M_caches;
+ char** _M_names;
+ static const locale::id* const _S_id_ctype[];
+ static const locale::id* const _S_id_numeric[];
+ static const locale::id* const _S_id_collate[];
+ static const locale::id* const _S_id_time[];
+ static const locale::id* const _S_id_monetary[];
+ static const locale::id* const _S_id_messages[];
+ static const locale::id* const* const _S_facet_categories[];
+ void
+ _M_add_reference() throw()
+ { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
+ void
+ _M_remove_reference() throw()
+ {
+ if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
+ {
+ try
+ { delete this; }
+ catch(...)
+ { }
+ }
+ }
+ _Impl(const _Impl&, size_t);
+ _Impl(const char*, size_t);
+ _Impl(size_t) throw();
+ ~_Impl() throw();
+ _Impl(const _Impl&);
+ void
+ operator=(const _Impl&);
+ bool
+ _M_check_same_name()
+ {
+ bool __ret = true;
+ if (_M_names[1])
+ for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)
+ __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0;
+ return __ret;
+ }
+ void
+ _M_replace_categories(const _Impl*, category);
+ void
+ _M_replace_category(const _Impl*, const locale::id* const*);
+ void
+ _M_replace_facet(const _Impl*, const locale::id*);
+ void
+ _M_install_facet(const locale::id*, const facet*);
+ template<typename _Facet>
+ void
+ _M_init_facet(_Facet* __facet)
+ { _M_install_facet(&_Facet::id, __facet); }
+ void
+ _M_install_cache(const facet*, size_t);
+ };
+ template<typename _Facet>
+ bool
+ has_facet(const locale& __loc) throw();
+ template<typename _Facet>
+ const _Facet&
+ use_facet(const locale& __loc);
+ template<typename _CharT>
+ class collate : public locale::facet
+ {
+ public:
+ typedef _CharT char_type;
+ typedef basic_string<_CharT> string_type;
+ protected:
+ __c_locale _M_c_locale_collate;
+ public:
+ static locale::id id;
+ explicit
+ collate(size_t __refs = 0)
+ : facet(__refs), _M_c_locale_collate(_S_get_c_locale())
+ { }
+ explicit
+ collate(__c_locale __cloc, size_t __refs = 0)
+ : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc))
+ { }
+ int
+ compare(const _CharT* __lo1, const _CharT* __hi1,
+ const _CharT* __lo2, const _CharT* __hi2) const
+ { return this->do_compare(__lo1, __hi1, __lo2, __hi2); }
+ string_type
+ transform(const _CharT* __lo, const _CharT* __hi) const
+ { return this->do_transform(__lo, __hi); }
+ long
+ hash(const _CharT* __lo, const _CharT* __hi) const
+ { return this->do_hash(__lo, __hi); }
+ int
+ _M_compare(const _CharT*, const _CharT*) const;
+ size_t
+ _M_transform(_CharT*, const _CharT*, size_t) const;
+ protected:
+ virtual
+ ~collate()
+ { _S_destroy_c_locale(_M_c_locale_collate); }
+ virtual int
+ do_compare(const _CharT* __lo1, const _CharT* __hi1,
+ const _CharT* __lo2, const _CharT* __hi2) const;
+ virtual string_type
+ do_transform(const _CharT* __lo, const _CharT* __hi) const;
+ virtual long
+ do_hash(const _CharT* __lo, const _CharT* __hi) const;
+ };
+ template<typename _CharT>
+ locale::id collate<_CharT>::id;
+ template<>
+ int
+ collate<char>::_M_compare(const char*, const char*) const;
+ template<>
+ size_t
+ collate<char>::_M_transform(char*, const char*, size_t) const;
+ template<typename _CharT>
+ class collate_byname : public collate<_CharT>
+ {
+ public:
+ typedef _CharT char_type;
+ typedef basic_string<_CharT> string_type;
+ explicit
+ collate_byname(const char* __s, size_t __refs = 0)
+ : collate<_CharT>(__refs)
+ {
+ if (__builtin_strcmp(__s, "C") != 0
+ && __builtin_strcmp(__s, "POSIX") != 0)
+ {
+ this->_S_destroy_c_locale(this->_M_c_locale_collate);
+ this->_S_create_c_locale(this->_M_c_locale_collate, __s);
+ }
+ }
+ protected:
+ virtual
+ ~collate_byname() { }
+ };
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Facet>
+ locale::
+ locale(const locale& __other, _Facet* __f)
+ {
+ _M_impl = new _Impl(*__other._M_impl, 1);
+ try
+ { _M_impl->_M_install_facet(&_Facet::id, __f); }
+ catch(...)
+ {
+ _M_impl->_M_remove_reference();
+ throw;
+ }
+ delete [] _M_impl->_M_names[0];
+ _M_impl->_M_names[0] = 0;
+ }
+ template<typename _Facet>
+ locale
+ locale::
+ combine(const locale& __other) const
+ {
+ _Impl* __tmp = new _Impl(*_M_impl, 1);
+ try
+ {
+ __tmp->_M_replace_facet(__other._M_impl, &_Facet::id);
+ }
+ catch(...)
+ {
+ __tmp->_M_remove_reference();
+ throw;
+ }
+ return locale(__tmp);
+ }
+ template<typename _CharT, typename _Traits, typename _Alloc>
+ bool
+ locale::
+ operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1,
+ const basic_string<_CharT, _Traits, _Alloc>& __s2) const
+ {
+ typedef std::collate<_CharT> __collate_type;
+ const __collate_type& __collate = use_facet<__collate_type>(*this);
+ return (__collate.compare(__s1.data(), __s1.data() + __s1.length(),
+ __s2.data(), __s2.data() + __s2.length()) < 0);
+ }
+ template<typename _Facet>
+ bool
+ has_facet(const locale& __loc) throw()
+ {
+ const size_t __i = _Facet::id._M_id();
+ const locale::facet** __facets = __loc._M_impl->_M_facets;
+ return (__i < __loc._M_impl->_M_facets_size
+ && dynamic_cast<const _Facet*>(__facets[__i]));
+ }
+ template<typename _Facet>
+ const _Facet&
+ use_facet(const locale& __loc)
+ {
+ const size_t __i = _Facet::id._M_id();
+ const locale::facet** __facets = __loc._M_impl->_M_facets;
+ if (__i >= __loc._M_impl->_M_facets_size || !__facets[__i])
+ __throw_bad_cast();
+ return dynamic_cast<const _Facet&>(*__facets[__i]);
+ }
+ template<typename _CharT>
+ int
+ collate<_CharT>::_M_compare(const _CharT*, const _CharT*) const
+ { return 0; }
+ template<typename _CharT>
+ size_t
+ collate<_CharT>::_M_transform(_CharT*, const _CharT*, size_t) const
+ { return 0; }
+ template<typename _CharT>
+ int
+ collate<_CharT>::
+ do_compare(const _CharT* __lo1, const _CharT* __hi1,
+ const _CharT* __lo2, const _CharT* __hi2) const
+ {
+ const string_type __one(__lo1, __hi1);
+ const string_type __two(__lo2, __hi2);
+ const _CharT* __p = __one.c_str();
+ const _CharT* __pend = __one.data() + __one.length();
+ const _CharT* __q = __two.c_str();
+ const _CharT* __qend = __two.data() + __two.length();
+ for (;;)
+ {
+ const int __res = _M_compare(__p, __q);
+ if (__res)
+ return __res;
+ __p += char_traits<_CharT>::length(__p);
+ __q += char_traits<_CharT>::length(__q);
+ if (__p == __pend && __q == __qend)
+ return 0;
+ else if (__p == __pend)
+ return -1;
+ else if (__q == __qend)
+ return 1;
+ __p++;
+ __q++;
+ }
+ }
+ template<typename _CharT>
+ typename collate<_CharT>::string_type
+ collate<_CharT>::
+ do_transform(const _CharT* __lo, const _CharT* __hi) const
+ {
+ string_type __ret;
+ const string_type __str(__lo, __hi);
+ const _CharT* __p = __str.c_str();
+ const _CharT* __pend = __str.data() + __str.length();
+ size_t __len = (__hi - __lo) * 2;
+ _CharT* __c = new _CharT[__len];
+ try
+ {
+ for (;;)
+ {
+ size_t __res = _M_transform(__c, __p, __len);
+ if (__res >= __len)
+ {
+ __len = __res + 1;
+ delete [] __c, __c = 0;
+ __c = new _CharT[__len];
+ __res = _M_transform(__c, __p, __len);
+ }
+ __ret.append(__c, __res);
+ __p += char_traits<_CharT>::length(__p);
+ if (__p == __pend)
+ break;
+ __p++;
+ __ret.push_back(_CharT());
+ }
+ }
+ catch(...)
+ {
+ delete [] __c;
+ throw;
+ }
+ delete [] __c;
+ return __ret;
+ }
+ template<typename _CharT>
+ long
+ collate<_CharT>::
+ do_hash(const _CharT* __lo, const _CharT* __hi) const
+ {
+ unsigned long __val = 0;
+ for (; __lo < __hi; ++__lo)
+ __val =
+ *__lo + ((__val << 7)
+ | (__val >> (__gnu_cxx::__numeric_traits<unsigned long>::
+ __digits - 7)));
+ return static_cast<long>(__val);
+ }
+ extern template class collate<char>;
+ extern template class collate_byname<char>;
+ extern template
+ const collate<char>&
+ use_facet<collate<char> >(const locale&);
+ extern template
+ bool
+ has_facet<collate<char> >(const locale&);
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ enum _Ios_Fmtflags
+ {
+ _S_boolalpha = 1L << 0,
+ _S_dec = 1L << 1,
+ _S_fixed = 1L << 2,
+ _S_hex = 1L << 3,
+ _S_internal = 1L << 4,
+ _S_left = 1L << 5,
+ _S_oct = 1L << 6,
+ _S_right = 1L << 7,
+ _S_scientific = 1L << 8,
+ _S_showbase = 1L << 9,
+ _S_showpoint = 1L << 10,
+ _S_showpos = 1L << 11,
+ _S_skipws = 1L << 12,
+ _S_unitbuf = 1L << 13,
+ _S_uppercase = 1L << 14,
+ _S_adjustfield = _S_left | _S_right | _S_internal,
+ _S_basefield = _S_dec | _S_oct | _S_hex,
+ _S_floatfield = _S_scientific | _S_fixed,
+ _S_ios_fmtflags_end = 1L << 16
+ };
+ inline _Ios_Fmtflags
+ operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
+ { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); }
+ inline _Ios_Fmtflags
+ operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
+ { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); }
+ inline _Ios_Fmtflags
+ operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b)
+ { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); }
+ inline _Ios_Fmtflags&
+ operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
+ { return __a = __a | __b; }
+ inline _Ios_Fmtflags&
+ operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
+ { return __a = __a & __b; }
+ inline _Ios_Fmtflags&
+ operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)
+ { return __a = __a ^ __b; }
+ inline _Ios_Fmtflags
+ operator~(_Ios_Fmtflags __a)
+ { return _Ios_Fmtflags(~static_cast<int>(__a)); }
+ enum _Ios_Openmode
+ {
+ _S_app = 1L << 0,
+ _S_ate = 1L << 1,
+ _S_bin = 1L << 2,
+ _S_in = 1L << 3,
+ _S_out = 1L << 4,
+ _S_trunc = 1L << 5,
+ _S_ios_openmode_end = 1L << 16
+ };
+ inline _Ios_Openmode
+ operator&(_Ios_Openmode __a, _Ios_Openmode __b)
+ { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); }
+ inline _Ios_Openmode
+ operator|(_Ios_Openmode __a, _Ios_Openmode __b)
+ { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); }
+ inline _Ios_Openmode
+ operator^(_Ios_Openmode __a, _Ios_Openmode __b)
+ { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); }
+ inline _Ios_Openmode&
+ operator|=(_Ios_Openmode& __a, _Ios_Openmode __b)
+ { return __a = __a | __b; }
+ inline _Ios_Openmode&
+ operator&=(_Ios_Openmode& __a, _Ios_Openmode __b)
+ { return __a = __a & __b; }
+ inline _Ios_Openmode&
+ operator^=(_Ios_Openmode& __a, _Ios_Openmode __b)
+ { return __a = __a ^ __b; }
+ inline _Ios_Openmode
+ operator~(_Ios_Openmode __a)
+ { return _Ios_Openmode(~static_cast<int>(__a)); }
+ enum _Ios_Iostate
+ {
+ _S_goodbit = 0,
+ _S_badbit = 1L << 0,
+ _S_eofbit = 1L << 1,
+ _S_failbit = 1L << 2,
+ _S_ios_iostate_end = 1L << 16
+ };
+ inline _Ios_Iostate
+ operator&(_Ios_Iostate __a, _Ios_Iostate __b)
+ { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); }
+ inline _Ios_Iostate
+ operator|(_Ios_Iostate __a, _Ios_Iostate __b)
+ { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); }
+ inline _Ios_Iostate
+ operator^(_Ios_Iostate __a, _Ios_Iostate __b)
+ { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); }
+ inline _Ios_Iostate&
+ operator|=(_Ios_Iostate& __a, _Ios_Iostate __b)
+ { return __a = __a | __b; }
+ inline _Ios_Iostate&
+ operator&=(_Ios_Iostate& __a, _Ios_Iostate __b)
+ { return __a = __a & __b; }
+ inline _Ios_Iostate&
+ operator^=(_Ios_Iostate& __a, _Ios_Iostate __b)
+ { return __a = __a ^ __b; }
+ inline _Ios_Iostate
+ operator~(_Ios_Iostate __a)
+ { return _Ios_Iostate(~static_cast<int>(__a)); }
+ enum _Ios_Seekdir
+ {
+ _S_beg = 0,
+ _S_cur = 1,
+ _S_end = 2,
+ _S_ios_seekdir_end = 1L << 16
+ };
+ class ios_base
+ {
+ public:
+ class failure : public exception
+ {
+ public:
+ explicit
+ failure(const string& __str) throw();
+ virtual
+ ~failure() throw();
+ virtual const char*
+ what() const throw();
+ private:
+ string _M_msg;
+ };
+ typedef _Ios_Fmtflags fmtflags;
+ static const fmtflags boolalpha = _S_boolalpha;
+ static const fmtflags dec = _S_dec;
+ static const fmtflags fixed = _S_fixed;
+ static const fmtflags hex = _S_hex;
+ static const fmtflags internal = _S_internal;
+ static const fmtflags left = _S_left;
+ static const fmtflags oct = _S_oct;
+ static const fmtflags right = _S_right;
+ static const fmtflags scientific = _S_scientific;
+ static const fmtflags showbase = _S_showbase;
+ static const fmtflags showpoint = _S_showpoint;
+ static const fmtflags showpos = _S_showpos;
+ static const fmtflags skipws = _S_skipws;
+ static const fmtflags unitbuf = _S_unitbuf;
+ static const fmtflags uppercase = _S_uppercase;
+ static const fmtflags adjustfield = _S_adjustfield;
+ static const fmtflags basefield = _S_basefield;
+ static const fmtflags floatfield = _S_floatfield;
+ typedef _Ios_Iostate iostate;
+ static const iostate badbit = _S_badbit;
+ static const iostate eofbit = _S_eofbit;
+ static const iostate failbit = _S_failbit;
+ static const iostate goodbit = _S_goodbit;
+ typedef _Ios_Openmode openmode;
+ static const openmode app = _S_app;
+ static const openmode ate = _S_ate;
+ static const openmode binary = _S_bin;
+ static const openmode in = _S_in;
+ static const openmode out = _S_out;
+ static const openmode trunc = _S_trunc;
+ typedef _Ios_Seekdir seekdir;
+ static const seekdir beg = _S_beg;
+ static const seekdir cur = _S_cur;
+ static const seekdir end = _S_end;
+ typedef int io_state;
+ typedef int open_mode;
+ typedef int seek_dir;
+ typedef std::streampos streampos;
+ typedef std::streamoff streamoff;
+ enum event
+ {
+ erase_event,
+ imbue_event,
+ copyfmt_event
+ };
+ typedef void (*event_callback) (event, ios_base&, int);
+ void
+ register_callback(event_callback __fn, int __index);
+ protected:
+ streamsize _M_precision;
+ streamsize _M_width;
+ fmtflags _M_flags;
+ iostate _M_exception;
+ iostate _M_streambuf_state;
+ struct _Callback_list
+ {
+ _Callback_list* _M_next;
+ ios_base::event_callback _M_fn;
+ int _M_index;
+ _Atomic_word _M_refcount;
+ _Callback_list(ios_base::event_callback __fn, int __index,
+ _Callback_list* __cb)
+ : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { }
+ void
+ _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
+ int
+ _M_remove_reference()
+ { return __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); }
+ };
+ _Callback_list* _M_callbacks;
+ void
+ _M_call_callbacks(event __ev) throw();
+ void
+ _M_dispose_callbacks(void);
+ struct _Words
+ {
+ void* _M_pword;
+ long _M_iword;
+ _Words() : _M_pword(0), _M_iword(0) { }
+ };
+ _Words _M_word_zero;
+ enum { _S_local_word_size = 8 };
+ _Words _M_local_word[_S_local_word_size];
+ int _M_word_size;
+ _Words* _M_word;
+ _Words&
+ _M_grow_words(int __index, bool __iword);
+ locale _M_ios_locale;
+ void
+ _M_init();
+ public:
+ class Init
+ {
+ friend class ios_base;
+ public:
+ Init();
+ ~Init();
+ private:
+ static _Atomic_word _S_refcount;
+ static bool _S_synced_with_stdio;
+ };
+ fmtflags
+ flags() const
+ { return _M_flags; }
+ fmtflags
+ flags(fmtflags __fmtfl)
+ {
+ fmtflags __old = _M_flags;
+ _M_flags = __fmtfl;
+ return __old;
+ }
+ fmtflags
+ setf(fmtflags __fmtfl)
+ {
+ fmtflags __old = _M_flags;
+ _M_flags |= __fmtfl;
+ return __old;
+ }
+ fmtflags
+ setf(fmtflags __fmtfl, fmtflags __mask)
+ {
+ fmtflags __old = _M_flags;
+ _M_flags &= ~__mask;
+ _M_flags |= (__fmtfl & __mask);
+ return __old;
+ }
+ void
+ unsetf(fmtflags __mask)
+ { _M_flags &= ~__mask; }
+ streamsize
+ precision() const
+ { return _M_precision; }
+ streamsize
+ precision(streamsize __prec)
+ {
+ streamsize __old = _M_precision;
+ _M_precision = __prec;
+ return __old;
+ }
+ streamsize
+ width() const
+ { return _M_width; }
+ streamsize
+ width(streamsize __wide)
+ {
+ streamsize __old = _M_width;
+ _M_width = __wide;
+ return __old;
+ }
+ static bool
+ sync_with_stdio(bool __sync = true);
+ locale
+ imbue(const locale& __loc);
+ locale
+ getloc() const
+ { return _M_ios_locale; }
+ const locale&
+ _M_getloc() const
+ { return _M_ios_locale; }
+ static int
+ xalloc() throw();
+ long&
+ iword(int __ix)
+ {
+ _Words& __word = (__ix < _M_word_size)
+ ? _M_word[__ix] : _M_grow_words(__ix, true);
+ return __word._M_iword;
+ }
+ void*&
+ pword(int __ix)
+ {
+ _Words& __word = (__ix < _M_word_size)
+ ? _M_word[__ix] : _M_grow_words(__ix, false);
+ return __word._M_pword;
+ }
+ virtual ~ios_base();
+ protected:
+ ios_base();
+ private:
+ ios_base(const ios_base&);
+ ios_base&
+ operator=(const ios_base&);
+ };
+ inline ios_base&
+ boolalpha(ios_base& __base)
+ {
+ __base.setf(ios_base::boolalpha);
+ return __base;
+ }
+ inline ios_base&
+ noboolalpha(ios_base& __base)
+ {
+ __base.unsetf(ios_base::boolalpha);
+ return __base;
+ }
+ inline ios_base&
+ showbase(ios_base& __base)
+ {
+ __base.setf(ios_base::showbase);
+ return __base;
+ }
+ inline ios_base&
+ noshowbase(ios_base& __base)
+ {
+ __base.unsetf(ios_base::showbase);
+ return __base;
+ }
+ inline ios_base&
+ showpoint(ios_base& __base)
+ {
+ __base.setf(ios_base::showpoint);
+ return __base;
+ }
+ inline ios_base&
+ noshowpoint(ios_base& __base)
+ {
+ __base.unsetf(ios_base::showpoint);
+ return __base;
+ }
+ inline ios_base&
+ showpos(ios_base& __base)
+ {
+ __base.setf(ios_base::showpos);
+ return __base;
+ }
+ inline ios_base&
+ noshowpos(ios_base& __base)
+ {
+ __base.unsetf(ios_base::showpos);
+ return __base;
+ }
+ inline ios_base&
+ skipws(ios_base& __base)
+ {
+ __base.setf(ios_base::skipws);
+ return __base;
+ }
+ inline ios_base&
+ noskipws(ios_base& __base)
+ {
+ __base.unsetf(ios_base::skipws);
+ return __base;
+ }
+ inline ios_base&
+ uppercase(ios_base& __base)
+ {
+ __base.setf(ios_base::uppercase);
+ return __base;
+ }
+ inline ios_base&
+ nouppercase(ios_base& __base)
+ {
+ __base.unsetf(ios_base::uppercase);
+ return __base;
+ }
+ inline ios_base&
+ unitbuf(ios_base& __base)
+ {
+ __base.setf(ios_base::unitbuf);
+ return __base;
+ }
+ inline ios_base&
+ nounitbuf(ios_base& __base)
+ {
+ __base.unsetf(ios_base::unitbuf);
+ return __base;
+ }
+ inline ios_base&
+ internal(ios_base& __base)
+ {
+ __base.setf(ios_base::internal, ios_base::adjustfield);
+ return __base;
+ }
+ inline ios_base&
+ left(ios_base& __base)
+ {
+ __base.setf(ios_base::left, ios_base::adjustfield);
+ return __base;
+ }
+ inline ios_base&
+ right(ios_base& __base)
+ {
+ __base.setf(ios_base::right, ios_base::adjustfield);
+ return __base;
+ }
+ inline ios_base&
+ dec(ios_base& __base)
+ {
+ __base.setf(ios_base::dec, ios_base::basefield);
+ return __base;
+ }
+ inline ios_base&
+ hex(ios_base& __base)
+ {
+ __base.setf(ios_base::hex, ios_base::basefield);
+ return __base;
+ }
+ inline ios_base&
+ oct(ios_base& __base)
+ {
+ __base.setf(ios_base::oct, ios_base::basefield);
+ return __base;
+ }
+ inline ios_base&
+ fixed(ios_base& __base)
+ {
+ __base.setf(ios_base::fixed, ios_base::floatfield);
+ return __base;
+ }
+ inline ios_base&
+ scientific(ios_base& __base)
+ {
+ __base.setf(ios_base::scientific, ios_base::floatfield);
+ return __base;
+ }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT, typename _Traits>
+ streamsize
+ __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*,
+ basic_streambuf<_CharT, _Traits>*, bool&);
+ template<typename _CharT, typename _Traits>
+ class basic_streambuf
+ {
+ public:
+ typedef _CharT char_type;
+ typedef _Traits traits_type;
+ typedef typename traits_type::int_type int_type;
+ typedef typename traits_type::pos_type pos_type;
+ typedef typename traits_type::off_type off_type;
+ typedef basic_streambuf<char_type, traits_type> __streambuf_type;
+ friend class basic_ios<char_type, traits_type>;
+ friend class basic_istream<char_type, traits_type>;
+ friend class basic_ostream<char_type, traits_type>;
+ friend class istreambuf_iterator<char_type, traits_type>;
+ friend class ostreambuf_iterator<char_type, traits_type>;
+ friend streamsize
+ __copy_streambufs_eof<>(__streambuf_type*, __streambuf_type*, bool&);
+ template<bool _IsMove, typename _CharT2>
+ friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+ _CharT2*>::__type
+ __copy_move_a2(istreambuf_iterator<_CharT2>,
+ istreambuf_iterator<_CharT2>, _CharT2*);
+ template<typename _CharT2>
+ friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+ istreambuf_iterator<_CharT2> >::__type
+ find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
+ const _CharT2&);
+ template<typename _CharT2, typename _Traits2>
+ friend basic_istream<_CharT2, _Traits2>&
+ operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*);
+ template<typename _CharT2, typename _Traits2, typename _Alloc>
+ friend basic_istream<_CharT2, _Traits2>&
+ operator>>(basic_istream<_CharT2, _Traits2>&,
+ basic_string<_CharT2, _Traits2, _Alloc>&);
+ template<typename _CharT2, typename _Traits2, typename _Alloc>
+ friend basic_istream<_CharT2, _Traits2>&
+ getline(basic_istream<_CharT2, _Traits2>&,
+ basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2);
+ protected:
+ char_type* _M_in_beg;
+ char_type* _M_in_cur;
+ char_type* _M_in_end;
+ char_type* _M_out_beg;
+ char_type* _M_out_cur;
+ char_type* _M_out_end;
+ locale _M_buf_locale;
+ public:
+ virtual
+ ~basic_streambuf()
+ { }
+ locale
+ pubimbue(const locale &__loc)
+ {
+ locale __tmp(this->getloc());
+ this->imbue(__loc);
+ _M_buf_locale = __loc;
+ return __tmp;
+ }
+ locale
+ getloc() const
+ { return _M_buf_locale; }
+ __streambuf_type*
+ pubsetbuf(char_type* __s, streamsize __n)
+ { return this->setbuf(__s, __n); }
+ pos_type
+ pubseekoff(off_type __off, ios_base::seekdir __way,
+ ios_base::openmode __mode = ios_base::in | ios_base::out)
+ { return this->seekoff(__off, __way, __mode); }
+ pos_type
+ pubseekpos(pos_type __sp,
+ ios_base::openmode __mode = ios_base::in | ios_base::out)
+ { return this->seekpos(__sp, __mode); }
+ int
+ pubsync() { return this->sync(); }
+ streamsize
+ in_avail()
+ {
+ const streamsize __ret = this->egptr() - this->gptr();
+ return __ret ? __ret : this->showmanyc();
+ }
+ int_type
+ snextc()
+ {
+ int_type __ret = traits_type::eof();
+ if (__builtin_expect(!traits_type::eq_int_type(this->sbumpc(),
+ __ret), true))
+ __ret = this->sgetc();
+ return __ret;
+ }
+ int_type
+ sbumpc()
+ {
+ int_type __ret;
+ if (__builtin_expect(this->gptr() < this->egptr(), true))
+ {
+ __ret = traits_type::to_int_type(*this->gptr());
+ this->gbump(1);
+ }
+ else
+ __ret = this->uflow();
+ return __ret;
+ }
+ int_type
+ sgetc()
+ {
+ int_type __ret;
+ if (__builtin_expect(this->gptr() < this->egptr(), true))
+ __ret = traits_type::to_int_type(*this->gptr());
+ else
+ __ret = this->underflow();
+ return __ret;
+ }
+ streamsize
+ sgetn(char_type* __s, streamsize __n)
+ { return this->xsgetn(__s, __n); }
+ int_type
+ sputbackc(char_type __c)
+ {
+ int_type __ret;
+ const bool __testpos = this->eback() < this->gptr();
+ if (__builtin_expect(!__testpos ||
+ !traits_type::eq(__c, this->gptr()[-1]), false))
+ __ret = this->pbackfail(traits_type::to_int_type(__c));
+ else
+ {
+ this->gbump(-1);
+ __ret = traits_type::to_int_type(*this->gptr());
+ }
+ return __ret;
+ }
+ int_type
+ sungetc()
+ {
+ int_type __ret;
+ if (__builtin_expect(this->eback() < this->gptr(), true))
+ {
+ this->gbump(-1);
+ __ret = traits_type::to_int_type(*this->gptr());
+ }
+ else
+ __ret = this->pbackfail();
+ return __ret;
+ }
+ int_type
+ sputc(char_type __c)
+ {
+ int_type __ret;
+ if (__builtin_expect(this->pptr() < this->epptr(), true))
+ {
+ *this->pptr() = __c;
+ this->pbump(1);
+ __ret = traits_type::to_int_type(__c);
+ }
+ else
+ __ret = this->overflow(traits_type::to_int_type(__c));
+ return __ret;
+ }
+ streamsize
+ sputn(const char_type* __s, streamsize __n)
+ { return this->xsputn(__s, __n); }
+ protected:
+ basic_streambuf()
+ : _M_in_beg(0), _M_in_cur(0), _M_in_end(0),
+ _M_out_beg(0), _M_out_cur(0), _M_out_end(0),
+ _M_buf_locale(locale())
+ { }
+ char_type*
+ eback() const { return _M_in_beg; }
+ char_type*
+ gptr() const { return _M_in_cur; }
+ char_type*
+ egptr() const { return _M_in_end; }
+ void
+ gbump(int __n) { _M_in_cur += __n; }
+ void
+ setg(char_type* __gbeg, char_type* __gnext, char_type* __gend)
+ {
+ _M_in_beg = __gbeg;
+ _M_in_cur = __gnext;
+ _M_in_end = __gend;
+ }
+ char_type*
+ pbase() const { return _M_out_beg; }
+ char_type*
+ pptr() const { return _M_out_cur; }
+ char_type*
+ epptr() const { return _M_out_end; }
+ void
+ pbump(int __n) { _M_out_cur += __n; }
+ void
+ setp(char_type* __pbeg, char_type* __pend)
+ {
+ _M_out_beg = _M_out_cur = __pbeg;
+ _M_out_end = __pend;
+ }
+ virtual void
+ imbue(const locale&)
+ { }
+ virtual basic_streambuf<char_type,_Traits>*
+ setbuf(char_type*, streamsize)
+ { return this; }
+ virtual pos_type
+ seekoff(off_type, ios_base::seekdir,
+ ios_base::openmode = ios_base::in | ios_base::out)
+ { return pos_type(off_type(-1)); }
+ virtual pos_type
+ seekpos(pos_type,
+ ios_base::openmode = ios_base::in | ios_base::out)
+ { return pos_type(off_type(-1)); }
+ virtual int
+ sync() { return 0; }
+ virtual streamsize
+ showmanyc() { return 0; }
+ virtual streamsize
+ xsgetn(char_type* __s, streamsize __n);
+ virtual int_type
+ underflow()
+ { return traits_type::eof(); }
+ virtual int_type
+ uflow()
+ {
+ int_type __ret = traits_type::eof();
+ const bool __testeof = traits_type::eq_int_type(this->underflow(),
+ __ret);
+ if (!__testeof)
+ {
+ __ret = traits_type::to_int_type(*this->gptr());
+ this->gbump(1);
+ }
+ return __ret;
+ }
+ virtual int_type
+ pbackfail(int_type = traits_type::eof())
+ { return traits_type::eof(); }
+ virtual streamsize
+ xsputn(const char_type* __s, streamsize __n);
+ virtual int_type
+ overflow(int_type = traits_type::eof())
+ { return traits_type::eof(); }
+ public:
+ void
+ stossc()
+ {
+ if (this->gptr() < this->egptr())
+ this->gbump(1);
+ else
+ this->uflow();
+ }
+ private:
+ basic_streambuf(const __streambuf_type& __sb)
+ : _M_in_beg(__sb._M_in_beg), _M_in_cur(__sb._M_in_cur),
+ _M_in_end(__sb._M_in_end), _M_out_beg(__sb._M_out_beg),
+ _M_out_cur(__sb._M_out_cur), _M_out_end(__sb._M_out_cur),
+ _M_buf_locale(__sb._M_buf_locale)
+ { }
+ __streambuf_type&
+ operator=(const __streambuf_type&) { return *this; };
+ };
+ template<>
+ streamsize
+ __copy_streambufs_eof(basic_streambuf<char>* __sbin,
+ basic_streambuf<char>* __sbout, bool& __ineof);
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT, typename _Traits>
+ streamsize
+ basic_streambuf<_CharT, _Traits>::
+ xsgetn(char_type* __s, streamsize __n)
+ {
+ streamsize __ret = 0;
+ while (__ret < __n)
+ {
+ const streamsize __buf_len = this->egptr() - this->gptr();
+ if (__buf_len)
+ {
+ const streamsize __remaining = __n - __ret;
+ const streamsize __len = std::min(__buf_len, __remaining);
+ traits_type::copy(__s, this->gptr(), __len);
+ __ret += __len;
+ __s += __len;
+ this->gbump(__len);
+ }
+ if (__ret < __n)
+ {
+ const int_type __c = this->uflow();
+ if (!traits_type::eq_int_type(__c, traits_type::eof()))
+ {
+ traits_type::assign(*__s++, traits_type::to_char_type(__c));
+ ++__ret;
+ }
+ else
+ break;
+ }
+ }
+ return __ret;
+ }
+ template<typename _CharT, typename _Traits>
+ streamsize
+ basic_streambuf<_CharT, _Traits>::
+ xsputn(const char_type* __s, streamsize __n)
+ {
+ streamsize __ret = 0;
+ while (__ret < __n)
+ {
+ const streamsize __buf_len = this->epptr() - this->pptr();
+ if (__buf_len)
+ {
+ const streamsize __remaining = __n - __ret;
+ const streamsize __len = std::min(__buf_len, __remaining);
+ traits_type::copy(this->pptr(), __s, __len);
+ __ret += __len;
+ __s += __len;
+ this->pbump(__len);
+ }
+ if (__ret < __n)
+ {
+ int_type __c = this->overflow(traits_type::to_int_type(*__s));
+ if (!traits_type::eq_int_type(__c, traits_type::eof()))
+ {
+ ++__ret;
+ ++__s;
+ }
+ else
+ break;
+ }
+ }
+ return __ret;
+ }
+ template<typename _CharT, typename _Traits>
+ streamsize
+ __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>* __sbin,
+ basic_streambuf<_CharT, _Traits>* __sbout,
+ bool& __ineof)
+ {
+ streamsize __ret = 0;
+ __ineof = true;
+ typename _Traits::int_type __c = __sbin->sgetc();
+ while (!_Traits::eq_int_type(__c, _Traits::eof()))
+ {
+ __c = __sbout->sputc(_Traits::to_char_type(__c));
+ if (_Traits::eq_int_type(__c, _Traits::eof()))
+ {
+ __ineof = false;
+ break;
+ }
+ ++__ret;
+ __c = __sbin->snextc();
+ }
+ return __ret;
+ }
+ template<typename _CharT, typename _Traits>
+ inline streamsize
+ __copy_streambufs(basic_streambuf<_CharT, _Traits>* __sbin,
+ basic_streambuf<_CharT, _Traits>* __sbout)
+ {
+ bool __ineof;
+ return __copy_streambufs_eof(__sbin, __sbout, __ineof);
+ }
+ extern template class basic_streambuf<char>;
+ extern template
+ streamsize
+ __copy_streambufs(basic_streambuf<char>*,
+ basic_streambuf<char>*);
+ extern template
+ streamsize
+ __copy_streambufs_eof(basic_streambuf<char>*,
+ basic_streambuf<char>*, bool&);
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ struct ctype_base
+ {
+ typedef const __ctype_touplow_t* __to_type;
+ typedef __ctype_mask_t mask;
+ static const mask upper = _ISupper;
+ static const mask lower = _ISlower;
+ static const mask alpha = _ISalpha;
+ static const mask digit = _ISdigit;
+ static const mask xdigit = _ISxdigit;
+ static const mask space = _ISspace;
+ static const mask print = _ISprint;
+ static const mask graph = _ISalpha | _ISdigit | _ISpunct;
+ static const mask cntrl = _IScntrl;
+ static const mask punct = _ISpunct;
+ static const mask alnum = _ISalpha | _ISdigit;
+ };
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT, typename _Traits>
+ class istreambuf_iterator
+ : public iterator<input_iterator_tag, _CharT, typename _Traits::off_type,
+ _CharT*, _CharT&>
+ {
+ public:
+ typedef _CharT char_type;
+ typedef _Traits traits_type;
+ typedef typename _Traits::int_type int_type;
+ typedef basic_streambuf<_CharT, _Traits> streambuf_type;
+ typedef basic_istream<_CharT, _Traits> istream_type;
+ template<typename _CharT2>
+ friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+ ostreambuf_iterator<_CharT2> >::__type
+ copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
+ ostreambuf_iterator<_CharT2>);
+ template<bool _IsMove, typename _CharT2>
+ friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+ _CharT2*>::__type
+ __copy_move_a2(istreambuf_iterator<_CharT2>,
+ istreambuf_iterator<_CharT2>, _CharT2*);
+ template<typename _CharT2>
+ friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+ istreambuf_iterator<_CharT2> >::__type
+ find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
+ const _CharT2&);
+ private:
+ mutable streambuf_type* _M_sbuf;
+ mutable int_type _M_c;
+ public:
+ istreambuf_iterator() throw()
+ : _M_sbuf(0), _M_c(traits_type::eof()) { }
+ istreambuf_iterator(istream_type& __s) throw()
+ : _M_sbuf(__s.rdbuf()), _M_c(traits_type::eof()) { }
+ istreambuf_iterator(streambuf_type* __s) throw()
+ : _M_sbuf(__s), _M_c(traits_type::eof()) { }
+ char_type
+ operator*() const
+ {
+ return traits_type::to_char_type(_M_get());
+ }
+ istreambuf_iterator&
+ operator++()
+ {
+ ;
+ if (_M_sbuf)
+ {
+ _M_sbuf->sbumpc();
+ _M_c = traits_type::eof();
+ }
+ return *this;
+ }
+ istreambuf_iterator
+ operator++(int)
+ {
+ ;
+ istreambuf_iterator __old = *this;
+ if (_M_sbuf)
+ {
+ __old._M_c = _M_sbuf->sbumpc();
+ _M_c = traits_type::eof();
+ }
+ return __old;
+ }
+ bool
+ equal(const istreambuf_iterator& __b) const
+ { return _M_at_eof() == __b._M_at_eof(); }
+ private:
+ int_type
+ _M_get() const
+ {
+ const int_type __eof = traits_type::eof();
+ int_type __ret = __eof;
+ if (_M_sbuf)
+ {
+ if (!traits_type::eq_int_type(_M_c, __eof))
+ __ret = _M_c;
+ else if (!traits_type::eq_int_type((__ret = _M_sbuf->sgetc()),
+ __eof))
+ _M_c = __ret;
+ else
+ _M_sbuf = 0;
+ }
+ return __ret;
+ }
+ bool
+ _M_at_eof() const
+ {
+ const int_type __eof = traits_type::eof();
+ return traits_type::eq_int_type(_M_get(), __eof);
+ }
+ };
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator==(const istreambuf_iterator<_CharT, _Traits>& __a,
+ const istreambuf_iterator<_CharT, _Traits>& __b)
+ { return __a.equal(__b); }
+ template<typename _CharT, typename _Traits>
+ inline bool
+ operator!=(const istreambuf_iterator<_CharT, _Traits>& __a,
+ const istreambuf_iterator<_CharT, _Traits>& __b)
+ { return !__a.equal(__b); }
+ template<typename _CharT, typename _Traits>
+ class ostreambuf_iterator
+ : public iterator<output_iterator_tag, void, void, void, void>
+ {
+ public:
+ typedef _CharT char_type;
+ typedef _Traits traits_type;
+ typedef basic_streambuf<_CharT, _Traits> streambuf_type;
+ typedef basic_ostream<_CharT, _Traits> ostream_type;
+ template<typename _CharT2>
+ friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,
+ ostreambuf_iterator<_CharT2> >::__type
+ copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,
+ ostreambuf_iterator<_CharT2>);
+ private:
+ streambuf_type* _M_sbuf;
+ bool _M_failed;
+ public:
+ ostreambuf_iterator(ostream_type& __s) throw ()
+ : _M_sbuf(__s.rdbuf()), _M_failed(!_M_sbuf) { }
+ ostreambuf_iterator(streambuf_type* __s) throw ()
+ : _M_sbuf(__s), _M_failed(!_M_sbuf) { }
+ ostreambuf_iterator&
+ operator=(_CharT __c)
+ {
+ if (!_M_failed &&
+ _Traits::eq_int_type(_M_sbuf->sputc(__c), _Traits::eof()))
+ _M_failed = true;
+ return *this;
+ }
+ ostreambuf_iterator&
+ operator*()
+ { return *this; }
+ ostreambuf_iterator&
+ operator++(int)
+ { return *this; }
+ ostreambuf_iterator&
+ operator++()
+ { return *this; }
+ bool
+ failed() const throw()
+ { return _M_failed; }
+ ostreambuf_iterator&
+ _M_put(const _CharT* __ws, streamsize __len)
+ {
+ if (__builtin_expect(!_M_failed, true)
+ && __builtin_expect(this->_M_sbuf->sputn(__ws, __len) != __len,
+ false))
+ _M_failed = true;
+ return *this;
+ }
+ };
+ template<typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ ostreambuf_iterator<_CharT> >::__type
+ copy(istreambuf_iterator<_CharT> __first,
+ istreambuf_iterator<_CharT> __last,
+ ostreambuf_iterator<_CharT> __result)
+ {
+ if (__first._M_sbuf && !__last._M_sbuf && !__result._M_failed)
+ {
+ bool __ineof;
+ __copy_streambufs_eof(__first._M_sbuf, __result._M_sbuf, __ineof);
+ if (!__ineof)
+ __result._M_failed = true;
+ }
+ return __result;
+ }
+ template<bool _IsMove, typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ ostreambuf_iterator<_CharT> >::__type
+ __copy_move_a2(_CharT* __first, _CharT* __last,
+ ostreambuf_iterator<_CharT> __result)
+ {
+ const streamsize __num = __last - __first;
+ if (__num > 0)
+ __result._M_put(__first, __num);
+ return __result;
+ }
+ template<bool _IsMove, typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ ostreambuf_iterator<_CharT> >::__type
+ __copy_move_a2(const _CharT* __first, const _CharT* __last,
+ ostreambuf_iterator<_CharT> __result)
+ {
+ const streamsize __num = __last - __first;
+ if (__num > 0)
+ __result._M_put(__first, __num);
+ return __result;
+ }
+ template<bool _IsMove, typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ _CharT*>::__type
+ __copy_move_a2(istreambuf_iterator<_CharT> __first,
+ istreambuf_iterator<_CharT> __last, _CharT* __result)
+ {
+ typedef istreambuf_iterator<_CharT> __is_iterator_type;
+ typedef typename __is_iterator_type::traits_type traits_type;
+ typedef typename __is_iterator_type::streambuf_type streambuf_type;
+ typedef typename traits_type::int_type int_type;
+ if (__first._M_sbuf && !__last._M_sbuf)
+ {
+ streambuf_type* __sb = __first._M_sbuf;
+ int_type __c = __sb->sgetc();
+ while (!traits_type::eq_int_type(__c, traits_type::eof()))
+ {
+ const streamsize __n = __sb->egptr() - __sb->gptr();
+ if (__n > 1)
+ {
+ traits_type::copy(__result, __sb->gptr(), __n);
+ __sb->gbump(__n);
+ __result += __n;
+ __c = __sb->underflow();
+ }
+ else
+ {
+ *__result++ = traits_type::to_char_type(__c);
+ __c = __sb->snextc();
+ }
+ }
+ }
+ return __result;
+ }
+ template<typename _CharT>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+ istreambuf_iterator<_CharT> >::__type
+ find(istreambuf_iterator<_CharT> __first,
+ istreambuf_iterator<_CharT> __last, const _CharT& __val)
+ {
+ typedef istreambuf_iterator<_CharT> __is_iterator_type;
+ typedef typename __is_iterator_type::traits_type traits_type;
+ typedef typename __is_iterator_type::streambuf_type streambuf_type;
+ typedef typename traits_type::int_type int_type;
+ if (__first._M_sbuf && !__last._M_sbuf)
+ {
+ const int_type __ival = traits_type::to_int_type(__val);
+ streambuf_type* __sb = __first._M_sbuf;
+ int_type __c = __sb->sgetc();
+ while (!traits_type::eq_int_type(__c, traits_type::eof())
+ && !traits_type::eq_int_type(__c, __ival))
+ {
+ streamsize __n = __sb->egptr() - __sb->gptr();
+ if (__n > 1)
+ {
+ const _CharT* __p = traits_type::find(__sb->gptr(),
+ __n, __val);
+ if (__p)
+ __n = __p - __sb->gptr();
+ __sb->gbump(__n);
+ __c = __sb->sgetc();
+ }
+ else
+ __c = __sb->snextc();
+ }
+ if (!traits_type::eq_int_type(__c, traits_type::eof()))
+ __first._M_c = __c;
+ else
+ __first._M_sbuf = 0;
+ }
+ return __first;
+ }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Tv>
+ void
+ __convert_to_v(const char* __in, _Tv& __out, ios_base::iostate& __err,
+ const __c_locale& __cloc);
+ template<>
+ void
+ __convert_to_v(const char*, float&, ios_base::iostate&,
+ const __c_locale&);
+ template<>
+ void
+ __convert_to_v(const char*, double&, ios_base::iostate&,
+ const __c_locale&);
+ template<>
+ void
+ __convert_to_v(const char*, long double&, ios_base::iostate&,
+ const __c_locale&);
+ template<typename _CharT, typename _Traits>
+ struct __pad
+ {
+ static void
+ _S_pad(ios_base& __io, _CharT __fill, _CharT* __news,
+ const _CharT* __olds, const streamsize __newlen,
+ const streamsize __oldlen);
+ };
+ template<typename _CharT>
+ _CharT*
+ __add_grouping(_CharT* __s, _CharT __sep,
+ const char* __gbeg, size_t __gsize,
+ const _CharT* __first, const _CharT* __last);
+ template<typename _CharT>
+ inline
+ ostreambuf_iterator<_CharT>
+ __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len)
+ {
+ __s._M_put(__ws, __len);
+ return __s;
+ }
+ template<typename _CharT, typename _OutIter>
+ inline
+ _OutIter
+ __write(_OutIter __s, const _CharT* __ws, int __len)
+ {
+ for (int __j = 0; __j < __len; __j++, ++__s)
+ *__s = __ws[__j];
+ return __s;
+ }
+ template<typename _CharT>
+ class __ctype_abstract_base : public locale::facet, public ctype_base
+ {
+ public:
+ typedef _CharT char_type;
+ bool
+ is(mask __m, char_type __c) const
+ { return this->do_is(__m, __c); }
+ const char_type*
+ is(const char_type *__lo, const char_type *__hi, mask *__vec) const
+ { return this->do_is(__lo, __hi, __vec); }
+ const char_type*
+ scan_is(mask __m, const char_type* __lo, const char_type* __hi) const
+ { return this->do_scan_is(__m, __lo, __hi); }
+ const char_type*
+ scan_not(mask __m, const char_type* __lo, const char_type* __hi) const
+ { return this->do_scan_not(__m, __lo, __hi); }
+ char_type
+ toupper(char_type __c) const
+ { return this->do_toupper(__c); }
+ const char_type*
+ toupper(char_type *__lo, const char_type* __hi) const
+ { return this->do_toupper(__lo, __hi); }
+ char_type
+ tolower(char_type __c) const
+ { return this->do_tolower(__c); }
+ const char_type*
+ tolower(char_type* __lo, const char_type* __hi) const
+ { return this->do_tolower(__lo, __hi); }
+ char_type
+ widen(char __c) const
+ { return this->do_widen(__c); }
+ const char*
+ widen(const char* __lo, const char* __hi, char_type* __to) const
+ { return this->do_widen(__lo, __hi, __to); }
+ char
+ narrow(char_type __c, char __dfault) const
+ { return this->do_narrow(__c, __dfault); }
+ const char_type*
+ narrow(const char_type* __lo, const char_type* __hi,
+ char __dfault, char *__to) const
+ { return this->do_narrow(__lo, __hi, __dfault, __to); }
+ protected:
+ explicit
+ __ctype_abstract_base(size_t __refs = 0): facet(__refs) { }
+ virtual
+ ~__ctype_abstract_base() { }
+ virtual bool
+ do_is(mask __m, char_type __c) const = 0;
+ virtual const char_type*
+ do_is(const char_type* __lo, const char_type* __hi,
+ mask* __vec) const = 0;
+ virtual const char_type*
+ do_scan_is(mask __m, const char_type* __lo,
+ const char_type* __hi) const = 0;
+ virtual const char_type*
+ do_scan_not(mask __m, const char_type* __lo,
+ const char_type* __hi) const = 0;
+ virtual char_type
+ do_toupper(char_type) const = 0;
+ virtual const char_type*
+ do_toupper(char_type* __lo, const char_type* __hi) const = 0;
+ virtual char_type
+ do_tolower(char_type) const = 0;
+ virtual const char_type*
+ do_tolower(char_type* __lo, const char_type* __hi) const = 0;
+ virtual char_type
+ do_widen(char) const = 0;
+ virtual const char*
+ do_widen(const char* __lo, const char* __hi,
+ char_type* __dest) const = 0;
+ virtual char
+ do_narrow(char_type, char __dfault) const = 0;
+ virtual const char_type*
+ do_narrow(const char_type* __lo, const char_type* __hi,
+ char __dfault, char* __dest) const = 0;
+ };
+ template<typename _CharT>
+ class ctype : public __ctype_abstract_base<_CharT>
+ {
+ public:
+ typedef _CharT char_type;
+ typedef typename __ctype_abstract_base<_CharT>::mask mask;
+ static locale::id id;
+ explicit
+ ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { }
+ protected:
+ virtual
+ ~ctype();
+ virtual bool
+ do_is(mask __m, char_type __c) const;
+ virtual const char_type*
+ do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;
+ virtual const char_type*
+ do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;
+ virtual const char_type*
+ do_scan_not(mask __m, const char_type* __lo,
+ const char_type* __hi) const;
+ virtual char_type
+ do_toupper(char_type __c) const;
+ virtual const char_type*
+ do_toupper(char_type* __lo, const char_type* __hi) const;
+ virtual char_type
+ do_tolower(char_type __c) const;
+ virtual const char_type*
+ do_tolower(char_type* __lo, const char_type* __hi) const;
+ virtual char_type
+ do_widen(char __c) const;
+ virtual const char*
+ do_widen(const char* __lo, const char* __hi, char_type* __dest) const;
+ virtual char
+ do_narrow(char_type, char __dfault) const;
+ virtual const char_type*
+ do_narrow(const char_type* __lo, const char_type* __hi,
+ char __dfault, char* __dest) const;
+ };
+ template<typename _CharT>
+ locale::id ctype<_CharT>::id;
+ template<>
+ class ctype<char> : public locale::facet, public ctype_base
+ {
+ public:
+ typedef char char_type;
+ protected:
+ __c_locale _M_c_locale_ctype;
+ bool _M_del;
+ __to_type _M_toupper;
+ __to_type _M_tolower;
+ const mask* _M_table;
+ mutable char _M_widen_ok;
+ mutable char _M_widen[1 + static_cast<unsigned char>(-1)];
+ mutable char _M_narrow[1 + static_cast<unsigned char>(-1)];
+ mutable char _M_narrow_ok;
+ public:
+ static locale::id id;
+ static const size_t table_size = 1 + static_cast<unsigned char>(-1);
+ explicit
+ ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0);
+ explicit
+ ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false,
+ size_t __refs = 0);
+ inline bool
+ is(mask __m, char __c) const;
+ inline const char*
+ is(const char* __lo, const char* __hi, mask* __vec) const;
+ inline const char*
+ scan_is(mask __m, const char* __lo, const char* __hi) const;
+ inline const char*
+ scan_not(mask __m, const char* __lo, const char* __hi) const;
+ char_type
+ toupper(char_type __c) const
+ { return this->do_toupper(__c); }
+ const char_type*
+ toupper(char_type *__lo, const char_type* __hi) const
+ { return this->do_toupper(__lo, __hi); }
+ char_type
+ tolower(char_type __c) const
+ { return this->do_tolower(__c); }
+ const char_type*
+ tolower(char_type* __lo, const char_type* __hi) const
+ { return this->do_tolower(__lo, __hi); }
+ char_type
+ widen(char __c) const
+ {
+ if (_M_widen_ok)
+ return _M_widen[static_cast<unsigned char>(__c)];
+ this->_M_widen_init();
+ return this->do_widen(__c);
+ }
+ const char*
+ widen(const char* __lo, const char* __hi, char_type* __to) const
+ {
+ if (_M_widen_ok == 1)
+ {
+ __builtin_memcpy(__to, __lo, __hi - __lo);
+ return __hi;
+ }
+ if (!_M_widen_ok)
+ _M_widen_init();
+ return this->do_widen(__lo, __hi, __to);
+ }
+ char
+ narrow(char_type __c, char __dfault) const
+ {
+ if (_M_narrow[static_cast<unsigned char>(__c)])
+ return _M_narrow[static_cast<unsigned char>(__c)];
+ const char __t = do_narrow(__c, __dfault);
+ if (__t != __dfault)
+ _M_narrow[static_cast<unsigned char>(__c)] = __t;
+ return __t;
+ }
+ const char_type*
+ narrow(const char_type* __lo, const char_type* __hi,
+ char __dfault, char *__to) const
+ {
+ if (__builtin_expect(_M_narrow_ok == 1, true))
+ {
+ __builtin_memcpy(__to, __lo, __hi - __lo);
+ return __hi;
+ }
+ if (!_M_narrow_ok)
+ _M_narrow_init();
+ return this->do_narrow(__lo, __hi, __dfault, __to);
+ }
+ const mask*
+ table() const throw()
+ { return _M_table; }
+ static const mask*
+ classic_table() throw();
+ protected:
+ virtual
+ ~ctype();
+ virtual char_type
+ do_toupper(char_type) const;
+ virtual const char_type*
+ do_toupper(char_type* __lo, const char_type* __hi) const;
+ virtual char_type
+ do_tolower(char_type) const;
+ virtual const char_type*
+ do_tolower(char_type* __lo, const char_type* __hi) const;
+ virtual char_type
+ do_widen(char __c) const
+ { return __c; }
+ virtual const char*
+ do_widen(const char* __lo, const char* __hi, char_type* __dest) const
+ {
+ __builtin_memcpy(__dest, __lo, __hi - __lo);
+ return __hi;
+ }
+ virtual char
+ do_narrow(char_type __c, char) const
+ { return __c; }
+ virtual const char_type*
+ do_narrow(const char_type* __lo, const char_type* __hi,
+ char, char* __dest) const
+ {
+ __builtin_memcpy(__dest, __lo, __hi - __lo);
+ return __hi;
+ }
+ private:
+ void _M_widen_init() const
+ {
+ char __tmp[sizeof(_M_widen)];
+ for (size_t __i = 0; __i < sizeof(_M_widen); ++__i)
+ __tmp[__i] = __i;
+ do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen);
+ _M_widen_ok = 1;
+ if (__builtin_memcmp(__tmp, _M_widen, sizeof(_M_widen)))
+ _M_widen_ok = 2;
+ }
+ void _M_narrow_init() const
+ {
+ char __tmp[sizeof(_M_narrow)];
+ for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i)
+ __tmp[__i] = __i;
+ do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow);
+ _M_narrow_ok = 1;
+ if (__builtin_memcmp(__tmp, _M_narrow, sizeof(_M_narrow)))
+ _M_narrow_ok = 2;
+ else
+ {
+ char __c;
+ do_narrow(__tmp, __tmp + 1, 1, &__c);
+ if (__c == 1)
+ _M_narrow_ok = 2;
+ }
+ }
+ };
+ template<>
+ const ctype<char>&
+ use_facet<ctype<char> >(const locale& __loc);
+ template<typename _CharT>
+ class ctype_byname : public ctype<_CharT>
+ {
+ public:
+ typedef typename ctype<_CharT>::mask mask;
+ explicit
+ ctype_byname(const char* __s, size_t __refs = 0);
+ protected:
+ virtual
+ ~ctype_byname() { };
+ };
+ template<>
+ class ctype_byname<char> : public ctype<char>
+ {
+ public:
+ explicit
+ ctype_byname(const char* __s, size_t __refs = 0);
+ protected:
+ virtual
+ ~ctype_byname();
+ };
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ bool
+ ctype<char>::
+ is(mask __m, char __c) const
+ { return _M_table[static_cast<unsigned char>(__c)] & __m; }
+ const char*
+ ctype<char>::
+ is(const char* __low, const char* __high, mask* __vec) const
+ {
+ while (__low < __high)
+ *__vec++ = _M_table[static_cast<unsigned char>(*__low++)];
+ return __high;
+ }
+ const char*
+ ctype<char>::
+ scan_is(mask __m, const char* __low, const char* __high) const
+ {
+ while (__low < __high
+ && !(_M_table[static_cast<unsigned char>(*__low)] & __m))
+ ++__low;
+ return __low;
+ }
+ const char*
+ ctype<char>::
+ scan_not(mask __m, const char* __low, const char* __high) const
+ {
+ while (__low < __high
+ && (_M_table[static_cast<unsigned char>(*__low)] & __m) != 0)
+ ++__low;
+ return __low;
+ }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ class __num_base
+ {
+ public:
+ enum
+ {
+ _S_ominus,
+ _S_oplus,
+ _S_ox,
+ _S_oX,
+ _S_odigits,
+ _S_odigits_end = _S_odigits + 16,
+ _S_oudigits = _S_odigits_end,
+ _S_oudigits_end = _S_oudigits + 16,
+ _S_oe = _S_odigits + 14,
+ _S_oE = _S_oudigits + 14,
+ _S_oend = _S_oudigits_end
+ };
+ static const char* _S_atoms_out;
+ static const char* _S_atoms_in;
+ enum
+ {
+ _S_iminus,
+ _S_iplus,
+ _S_ix,
+ _S_iX,
+ _S_izero,
+ _S_ie = _S_izero + 14,
+ _S_iE = _S_izero + 20,
+ _S_iend = 26
+ };
+ static void
+ _S_format_float(const ios_base& __io, char* __fptr, char __mod);
+ };
+ template<typename _CharT>
+ struct __numpunct_cache : public locale::facet
+ {
+ const char* _M_grouping;
+ size_t _M_grouping_size;
+ bool _M_use_grouping;
+ const _CharT* _M_truename;
+ size_t _M_truename_size;
+ const _CharT* _M_falsename;
+ size_t _M_falsename_size;
+ _CharT _M_decimal_point;
+ _CharT _M_thousands_sep;
+ _CharT _M_atoms_out[__num_base::_S_oend];
+ _CharT _M_atoms_in[__num_base::_S_iend];
+ bool _M_allocated;
+ __numpunct_cache(size_t __refs = 0) : facet(__refs),
+ _M_grouping(__null), _M_grouping_size(0), _M_use_grouping(false),
+ _M_truename(__null), _M_truename_size(0), _M_falsename(__null),
+ _M_falsename_size(0), _M_decimal_point(_CharT()),
+ _M_thousands_sep(_CharT()), _M_allocated(false)
+ { }
+ ~__numpunct_cache();
+ void
+ _M_cache(const locale& __loc);
+ private:
+ __numpunct_cache&
+ operator=(const __numpunct_cache&);
+ explicit
+ __numpunct_cache(const __numpunct_cache&);
+ };
+ template<typename _CharT>
+ __numpunct_cache<_CharT>::~__numpunct_cache()
+ {
+ if (_M_allocated)
+ {
+ delete [] _M_grouping;
+ delete [] _M_truename;
+ delete [] _M_falsename;
+ }
+ }
+ template<typename _CharT>
+ class numpunct : public locale::facet
+ {
+ public:
+ typedef _CharT char_type;
+ typedef basic_string<_CharT> string_type;
+ typedef __numpunct_cache<_CharT> __cache_type;
+ protected:
+ __cache_type* _M_data;
+ public:
+ static locale::id id;
+ explicit
+ numpunct(size_t __refs = 0) : facet(__refs), _M_data(__null)
+ { _M_initialize_numpunct(); }
+ explicit
+ numpunct(__cache_type* __cache, size_t __refs = 0)
+ : facet(__refs), _M_data(__cache)
+ { _M_initialize_numpunct(); }
+ explicit
+ numpunct(__c_locale __cloc, size_t __refs = 0)
+ : facet(__refs), _M_data(__null)
+ { _M_initialize_numpunct(__cloc); }
+ char_type
+ decimal_point() const
+ { return this->do_decimal_point(); }
+ char_type
+ thousands_sep() const
+ { return this->do_thousands_sep(); }
+ string
+ grouping() const
+ { return this->do_grouping(); }
+ string_type
+ truename() const
+ { return this->do_truename(); }
+ string_type
+ falsename() const
+ { return this->do_falsename(); }
+ protected:
+ virtual
+ ~numpunct();
+ virtual char_type
+ do_decimal_point() const
+ { return _M_data->_M_decimal_point; }
+ virtual char_type
+ do_thousands_sep() const
+ { return _M_data->_M_thousands_sep; }
+ virtual string
+ do_grouping() const
+ { return _M_data->_M_grouping; }
+ virtual string_type
+ do_truename() const
+ { return _M_data->_M_truename; }
+ virtual string_type
+ do_falsename() const
+ { return _M_data->_M_falsename; }
+ void
+ _M_initialize_numpunct(__c_locale __cloc = __null);
+ };
+ template<typename _CharT>
+ locale::id numpunct<_CharT>::id;
+ template<>
+ numpunct<char>::~numpunct();
+ template<>
+ void
+ numpunct<char>::_M_initialize_numpunct(__c_locale __cloc);
+ template<typename _CharT>
+ class numpunct_byname : public numpunct<_CharT>
+ {
+ public:
+ typedef _CharT char_type;
+ typedef basic_string<_CharT> string_type;
+ explicit
+ numpunct_byname(const char* __s, size_t __refs = 0)
+ : numpunct<_CharT>(__refs)
+ {
+ if (__builtin_strcmp(__s, "C") != 0
+ && __builtin_strcmp(__s, "POSIX") != 0)
+ {
+ __c_locale __tmp;
+ this->_S_create_c_locale(__tmp, __s);
+ this->_M_initialize_numpunct(__tmp);
+ this->_S_destroy_c_locale(__tmp);
+ }
+ }
+ protected:
+ virtual
+ ~numpunct_byname() { }
+ };
+ template<typename _CharT, typename _InIter>
+ class num_get : public locale::facet
+ {
+ public:
+ typedef _CharT char_type;
+ typedef _InIter iter_type;
+ static locale::id id;
+ explicit
+ num_get(size_t __refs = 0) : facet(__refs) { }
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, bool& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, long& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned short& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned int& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned long& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, long long& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned long long& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, float& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, double& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, long double& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+ iter_type
+ get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, void*& __v) const
+ { return this->do_get(__in, __end, __io, __err, __v); }
+ protected:
+ virtual ~num_get() { }
+ iter_type
+ _M_extract_float(iter_type, iter_type, ios_base&, ios_base::iostate&,
+ string& __xtrc) const;
+ template<typename _ValueT>
+ iter_type
+ _M_extract_int(iter_type, iter_type, ios_base&, ios_base::iostate&,
+ _ValueT& __v) const;
+ template<typename _CharT2>
+ typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, int>::__type
+ _M_find(const _CharT2*, size_t __len, _CharT2 __c) const
+ {
+ int __ret = -1;
+ if (__len <= 10)
+ {
+ if (__c >= _CharT2('0') && __c < _CharT2(_CharT2('0') + __len))
+ __ret = __c - _CharT2('0');
+ }
+ else
+ {
+ if (__c >= _CharT2('0') && __c <= _CharT2('9'))
+ __ret = __c - _CharT2('0');
+ else if (__c >= _CharT2('a') && __c <= _CharT2('f'))
+ __ret = 10 + (__c - _CharT2('a'));
+ else if (__c >= _CharT2('A') && __c <= _CharT2('F'))
+ __ret = 10 + (__c - _CharT2('A'));
+ }
+ return __ret;
+ }
+ template<typename _CharT2>
+ typename __gnu_cxx::__enable_if<!__is_char<_CharT2>::__value,
+ int>::__type
+ _M_find(const _CharT2* __zero, size_t __len, _CharT2 __c) const
+ {
+ int __ret = -1;
+ const char_type* __q = char_traits<_CharT2>::find(__zero, __len, __c);
+ if (__q)
+ {
+ __ret = __q - __zero;
+ if (__ret > 15)
+ __ret -= 6;
+ }
+ return __ret;
+ }
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, bool&) const;
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate&, long&) const;
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ unsigned short&) const;
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ unsigned int&) const;
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ unsigned long&) const;
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ long long&) const;
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ unsigned long long&) const;
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ float&) const;
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ double&) const;
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ long double&) const;
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ void*&) const;
+ };
+ template<typename _CharT, typename _InIter>
+ locale::id num_get<_CharT, _InIter>::id;
+ template<typename _CharT, typename _OutIter>
+ class num_put : public locale::facet
+ {
+ public:
+ typedef _CharT char_type;
+ typedef _OutIter iter_type;
+ static locale::id id;
+ explicit
+ num_put(size_t __refs = 0) : facet(__refs) { }
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill, bool __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill, long __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill,
+ unsigned long __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill, long long __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill,
+ unsigned long long __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill, double __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill,
+ long double __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+ iter_type
+ put(iter_type __s, ios_base& __f, char_type __fill,
+ const void* __v) const
+ { return this->do_put(__s, __f, __fill, __v); }
+ protected:
+ template<typename _ValueT>
+ iter_type
+ _M_insert_float(iter_type, ios_base& __io, char_type __fill,
+ char __mod, _ValueT __v) const;
+ void
+ _M_group_float(const char* __grouping, size_t __grouping_size,
+ char_type __sep, const char_type* __p, char_type* __new,
+ char_type* __cs, int& __len) const;
+ template<typename _ValueT>
+ iter_type
+ _M_insert_int(iter_type, ios_base& __io, char_type __fill,
+ _ValueT __v) const;
+ void
+ _M_group_int(const char* __grouping, size_t __grouping_size,
+ char_type __sep, ios_base& __io, char_type* __new,
+ char_type* __cs, int& __len) const;
+ void
+ _M_pad(char_type __fill, streamsize __w, ios_base& __io,
+ char_type* __new, const char_type* __cs, int& __len) const;
+ virtual
+ ~num_put() { };
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, bool __v) const;
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, long __v) const;
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, unsigned long) const;
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, long long __v) const;
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, unsigned long long) const;
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, double __v) const;
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, const void* __v) const;
+ };
+ template <typename _CharT, typename _OutIter>
+ locale::id num_put<_CharT, _OutIter>::id;
+ template<typename _CharT>
+ inline bool
+ isspace(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::space, __c); }
+ template<typename _CharT>
+ inline bool
+ isprint(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::print, __c); }
+ template<typename _CharT>
+ inline bool
+ iscntrl(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::cntrl, __c); }
+ template<typename _CharT>
+ inline bool
+ isupper(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::upper, __c); }
+ template<typename _CharT>
+ inline bool
+ islower(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::lower, __c); }
+ template<typename _CharT>
+ inline bool
+ isalpha(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alpha, __c); }
+ template<typename _CharT>
+ inline bool
+ isdigit(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::digit, __c); }
+ template<typename _CharT>
+ inline bool
+ ispunct(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::punct, __c); }
+ template<typename _CharT>
+ inline bool
+ isxdigit(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::xdigit, __c); }
+ template<typename _CharT>
+ inline bool
+ isalnum(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::alnum, __c); }
+ template<typename _CharT>
+ inline bool
+ isgraph(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).is(ctype_base::graph, __c); }
+ template<typename _CharT>
+ inline _CharT
+ toupper(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).toupper(__c); }
+ template<typename _CharT>
+ inline _CharT
+ tolower(_CharT __c, const locale& __loc)
+ { return use_facet<ctype<_CharT> >(__loc).tolower(__c); }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Facet>
+ struct __use_cache
+ {
+ const _Facet*
+ operator() (const locale& __loc) const;
+ };
+ template<typename _CharT>
+ struct __use_cache<__numpunct_cache<_CharT> >
+ {
+ const __numpunct_cache<_CharT>*
+ operator() (const locale& __loc) const
+ {
+ const size_t __i = numpunct<_CharT>::id._M_id();
+ const locale::facet** __caches = __loc._M_impl->_M_caches;
+ if (!__caches[__i])
+ {
+ __numpunct_cache<_CharT>* __tmp = __null;
+ try
+ {
+ __tmp = new __numpunct_cache<_CharT>;
+ __tmp->_M_cache(__loc);
+ }
+ catch(...)
+ {
+ delete __tmp;
+ throw;
+ }
+ __loc._M_impl->_M_install_cache(__tmp, __i);
+ }
+ return static_cast<const __numpunct_cache<_CharT>*>(__caches[__i]);
+ }
+ };
+ template<typename _CharT>
+ void
+ __numpunct_cache<_CharT>::_M_cache(const locale& __loc)
+ {
+ _M_allocated = true;
+ const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
+ _M_grouping_size = __np.grouping().size();
+ char* __grouping = new char[_M_grouping_size];
+ __np.grouping().copy(__grouping, _M_grouping_size);
+ _M_grouping = __grouping;
+ _M_use_grouping = (_M_grouping_size
+ && static_cast<signed char>(__np.grouping()[0]) > 0);
+ _M_truename_size = __np.truename().size();
+ _CharT* __truename = new _CharT[_M_truename_size];
+ __np.truename().copy(__truename, _M_truename_size);
+ _M_truename = __truename;
+ _M_falsename_size = __np.falsename().size();
+ _CharT* __falsename = new _CharT[_M_falsename_size];
+ __np.falsename().copy(__falsename, _M_falsename_size);
+ _M_falsename = __falsename;
+ _M_decimal_point = __np.decimal_point();
+ _M_thousands_sep = __np.thousands_sep();
+ const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__loc);
+ __ct.widen(__num_base::_S_atoms_out,
+ __num_base::_S_atoms_out + __num_base::_S_oend, _M_atoms_out);
+ __ct.widen(__num_base::_S_atoms_in,
+ __num_base::_S_atoms_in + __num_base::_S_iend, _M_atoms_in);
+ }
+ bool
+ __verify_grouping(const char* __grouping, size_t __grouping_size,
+ const string& __grouping_tmp);
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ _M_extract_float(_InIter __beg, _InIter __end, ios_base& __io,
+ ios_base::iostate& __err, string& __xtrc) const
+ {
+ typedef char_traits<_CharT> __traits_type;
+ typedef __numpunct_cache<_CharT> __cache_type;
+ __use_cache<__cache_type> __uc;
+ const locale& __loc = __io._M_getloc();
+ const __cache_type* __lc = __uc(__loc);
+ const _CharT* __lit = __lc->_M_atoms_in;
+ char_type __c = char_type();
+ bool __testeof = __beg == __end;
+ if (!__testeof)
+ {
+ __c = *__beg;
+ const bool __plus = __c == __lit[__num_base::_S_iplus];
+ if ((__plus || __c == __lit[__num_base::_S_iminus])
+ && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+ && !(__c == __lc->_M_decimal_point))
+ {
+ __xtrc += __plus ? '+' : '-';
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+ }
+ bool __found_mantissa = false;
+ int __sep_pos = 0;
+ while (!__testeof)
+ {
+ if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+ || __c == __lc->_M_decimal_point)
+ break;
+ else if (__c == __lit[__num_base::_S_izero])
+ {
+ if (!__found_mantissa)
+ {
+ __xtrc += '0';
+ __found_mantissa = true;
+ }
+ ++__sep_pos;
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+ else
+ break;
+ }
+ bool __found_dec = false;
+ bool __found_sci = false;
+ string __found_grouping;
+ if (__lc->_M_use_grouping)
+ __found_grouping.reserve(32);
+ const char_type* __lit_zero = __lit + __num_base::_S_izero;
+ if (!__lc->_M_allocated)
+ while (!__testeof)
+ {
+ const int __digit = _M_find(__lit_zero, 10, __c);
+ if (__digit != -1)
+ {
+ __xtrc += '0' + __digit;
+ __found_mantissa = true;
+ }
+ else if (__c == __lc->_M_decimal_point
+ && !__found_dec && !__found_sci)
+ {
+ __xtrc += '.';
+ __found_dec = true;
+ }
+ else if ((__c == __lit[__num_base::_S_ie]
+ || __c == __lit[__num_base::_S_iE])
+ && !__found_sci && __found_mantissa)
+ {
+ __xtrc += 'e';
+ __found_sci = true;
+ if (++__beg != __end)
+ {
+ __c = *__beg;
+ const bool __plus = __c == __lit[__num_base::_S_iplus];
+ if (__plus || __c == __lit[__num_base::_S_iminus])
+ __xtrc += __plus ? '+' : '-';
+ else
+ continue;
+ }
+ else
+ {
+ __testeof = true;
+ break;
+ }
+ }
+ else
+ break;
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+ else
+ while (!__testeof)
+ {
+ if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+ {
+ if (!__found_dec && !__found_sci)
+ {
+ if (__sep_pos)
+ {
+ __found_grouping += static_cast<char>(__sep_pos);
+ __sep_pos = 0;
+ }
+ else
+ {
+ __xtrc.clear();
+ break;
+ }
+ }
+ else
+ break;
+ }
+ else if (__c == __lc->_M_decimal_point)
+ {
+ if (!__found_dec && !__found_sci)
+ {
+ if (__found_grouping.size())
+ __found_grouping += static_cast<char>(__sep_pos);
+ __xtrc += '.';
+ __found_dec = true;
+ }
+ else
+ break;
+ }
+ else
+ {
+ const char_type* __q =
+ __traits_type::find(__lit_zero, 10, __c);
+ if (__q)
+ {
+ __xtrc += '0' + (__q - __lit_zero);
+ __found_mantissa = true;
+ ++__sep_pos;
+ }
+ else if ((__c == __lit[__num_base::_S_ie]
+ || __c == __lit[__num_base::_S_iE])
+ && !__found_sci && __found_mantissa)
+ {
+ if (__found_grouping.size() && !__found_dec)
+ __found_grouping += static_cast<char>(__sep_pos);
+ __xtrc += 'e';
+ __found_sci = true;
+ if (++__beg != __end)
+ {
+ __c = *__beg;
+ const bool __plus = __c == __lit[__num_base::_S_iplus];
+ if ((__plus || __c == __lit[__num_base::_S_iminus])
+ && !(__lc->_M_use_grouping
+ && __c == __lc->_M_thousands_sep)
+ && !(__c == __lc->_M_decimal_point))
+ __xtrc += __plus ? '+' : '-';
+ else
+ continue;
+ }
+ else
+ {
+ __testeof = true;
+ break;
+ }
+ }
+ else
+ break;
+ }
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+ if (__found_grouping.size())
+ {
+ if (!__found_dec && !__found_sci)
+ __found_grouping += static_cast<char>(__sep_pos);
+ if (!std::__verify_grouping(__lc->_M_grouping,
+ __lc->_M_grouping_size,
+ __found_grouping))
+ __err |= ios_base::failbit;
+ }
+ if (__testeof)
+ __err |= ios_base::eofbit;
+ return __beg;
+ }
+ template<typename _CharT, typename _InIter>
+ template<typename _ValueT>
+ _InIter
+ num_get<_CharT, _InIter>::
+ _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io,
+ ios_base::iostate& __err, _ValueT& __v) const
+ {
+ typedef char_traits<_CharT> __traits_type;
+ using __gnu_cxx::__add_unsigned;
+ typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
+ typedef __numpunct_cache<_CharT> __cache_type;
+ __use_cache<__cache_type> __uc;
+ const locale& __loc = __io._M_getloc();
+ const __cache_type* __lc = __uc(__loc);
+ const _CharT* __lit = __lc->_M_atoms_in;
+ char_type __c = char_type();
+ const ios_base::fmtflags __basefield = __io.flags()
+ & ios_base::basefield;
+ const bool __oct = __basefield == ios_base::oct;
+ int __base = __oct ? 8 : (__basefield == ios_base::hex ? 16 : 10);
+ bool __testeof = __beg == __end;
+ bool __negative = false;
+ if (!__testeof)
+ {
+ __c = *__beg;
+ if (__gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
+ __negative = __c == __lit[__num_base::_S_iminus];
+ if ((__negative || __c == __lit[__num_base::_S_iplus])
+ && !(__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+ && !(__c == __lc->_M_decimal_point))
+ {
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+ }
+ bool __found_zero = false;
+ int __sep_pos = 0;
+ while (!__testeof)
+ {
+ if ((__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+ || __c == __lc->_M_decimal_point)
+ break;
+ else if (__c == __lit[__num_base::_S_izero]
+ && (!__found_zero || __base == 10))
+ {
+ __found_zero = true;
+ ++__sep_pos;
+ if (__basefield == 0)
+ __base = 8;
+ if (__base == 8)
+ __sep_pos = 0;
+ }
+ else if (__found_zero
+ && (__c == __lit[__num_base::_S_ix]
+ || __c == __lit[__num_base::_S_iX]))
+ {
+ if (__basefield == 0)
+ __base = 16;
+ if (__base == 16)
+ {
+ __found_zero = false;
+ __sep_pos = 0;
+ }
+ else
+ break;
+ }
+ else
+ break;
+ if (++__beg != __end)
+ {
+ __c = *__beg;
+ if (!__found_zero)
+ break;
+ }
+ else
+ __testeof = true;
+ }
+ const size_t __len = (__base == 16 ? __num_base::_S_iend
+ - __num_base::_S_izero : __base);
+ string __found_grouping;
+ if (__lc->_M_use_grouping)
+ __found_grouping.reserve(32);
+ bool __testfail = false;
+ const __unsigned_type __max = __negative
+ ? -__gnu_cxx::__numeric_traits<_ValueT>::__min
+ : __gnu_cxx::__numeric_traits<_ValueT>::__max;
+ const __unsigned_type __smax = __max / __base;
+ __unsigned_type __result = 0;
+ int __digit = 0;
+ const char_type* __lit_zero = __lit + __num_base::_S_izero;
+ if (!__lc->_M_allocated)
+ while (!__testeof)
+ {
+ __digit = _M_find(__lit_zero, __len, __c);
+ if (__digit == -1)
+ break;
+ if (__result > __smax)
+ __testfail = true;
+ else
+ {
+ __result *= __base;
+ __testfail |= __result > __max - __digit;
+ __result += __digit;
+ ++__sep_pos;
+ }
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+ else
+ while (!__testeof)
+ {
+ if (__lc->_M_use_grouping && __c == __lc->_M_thousands_sep)
+ {
+ if (__sep_pos)
+ {
+ __found_grouping += static_cast<char>(__sep_pos);
+ __sep_pos = 0;
+ }
+ else
+ {
+ __testfail = true;
+ break;
+ }
+ }
+ else if (__c == __lc->_M_decimal_point)
+ break;
+ else
+ {
+ const char_type* __q =
+ __traits_type::find(__lit_zero, __len, __c);
+ if (!__q)
+ break;
+ __digit = __q - __lit_zero;
+ if (__digit > 15)
+ __digit -= 6;
+ if (__result > __smax)
+ __testfail = true;
+ else
+ {
+ __result *= __base;
+ __testfail |= __result > __max - __digit;
+ __result += __digit;
+ ++__sep_pos;
+ }
+ }
+ if (++__beg != __end)
+ __c = *__beg;
+ else
+ __testeof = true;
+ }
+ if (__found_grouping.size())
+ {
+ __found_grouping += static_cast<char>(__sep_pos);
+ if (!std::__verify_grouping(__lc->_M_grouping,
+ __lc->_M_grouping_size,
+ __found_grouping))
+ __err |= ios_base::failbit;
+ }
+ if (!__testfail && (__sep_pos || __found_zero
+ || __found_grouping.size()))
+ __v = __negative ? -__result : __result;
+ else
+ __err |= ios_base::failbit;
+ if (__testeof)
+ __err |= ios_base::eofbit;
+ return __beg;
+ }
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, bool& __v) const
+ {
+ if (!(__io.flags() & ios_base::boolalpha))
+ {
+ long __l = -1;
+ __beg = _M_extract_int(__beg, __end, __io, __err, __l);
+ if (__l == 0 || __l == 1)
+ __v = bool(__l);
+ else
+ __err |= ios_base::failbit;
+ }
+ else
+ {
+ typedef __numpunct_cache<_CharT> __cache_type;
+ __use_cache<__cache_type> __uc;
+ const locale& __loc = __io._M_getloc();
+ const __cache_type* __lc = __uc(__loc);
+ bool __testf = true;
+ bool __testt = true;
+ size_t __n;
+ bool __testeof = __beg == __end;
+ for (__n = 0; !__testeof; ++__n)
+ {
+ const char_type __c = *__beg;
+ if (__testf)
+ {
+ if (__n < __lc->_M_falsename_size)
+ __testf = __c == __lc->_M_falsename[__n];
+ else
+ break;
+ }
+ if (__testt)
+ {
+ if (__n < __lc->_M_truename_size)
+ __testt = __c == __lc->_M_truename[__n];
+ else
+ break;
+ }
+ if (!__testf && !__testt)
+ break;
+ if (++__beg == __end)
+ __testeof = true;
+ }
+ if (__testf && __n == __lc->_M_falsename_size)
+ __v = false;
+ else if (__testt && __n == __lc->_M_truename_size)
+ __v = true;
+ else
+ __err |= ios_base::failbit;
+ if (__testeof)
+ __err |= ios_base::eofbit;
+ }
+ return __beg;
+ }
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, long& __v) const
+ { return _M_extract_int(__beg, __end, __io, __err, __v); }
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned short& __v) const
+ { return _M_extract_int(__beg, __end, __io, __err, __v); }
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned int& __v) const
+ { return _M_extract_int(__beg, __end, __io, __err, __v); }
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned long& __v) const
+ { return _M_extract_int(__beg, __end, __io, __err, __v); }
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, long long& __v) const
+ { return _M_extract_int(__beg, __end, __io, __err, __v); }
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, unsigned long long& __v) const
+ { return _M_extract_int(__beg, __end, __io, __err, __v); }
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, float& __v) const
+ {
+ string __xtrc;
+ __xtrc.reserve(32);
+ __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
+ std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
+ return __beg;
+ }
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, double& __v) const
+ {
+ string __xtrc;
+ __xtrc.reserve(32);
+ __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
+ std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
+ return __beg;
+ }
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, long double& __v) const
+ {
+ string __xtrc;
+ __xtrc.reserve(32);
+ __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
+ std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
+ return __beg;
+ }
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, void*& __v) const
+ {
+ typedef ios_base::fmtflags fmtflags;
+ const fmtflags __fmt = __io.flags();
+ __io.flags((__fmt & ~ios_base::basefield) | ios_base::hex);
+ typedef __gnu_cxx::__conditional_type<(sizeof(void*)
+ <= sizeof(unsigned long)),
+ unsigned long, unsigned long long>::__type _UIntPtrType;
+ _UIntPtrType __ul;
+ __beg = _M_extract_int(__beg, __end, __io, __err, __ul);
+ __io.flags(__fmt);
+ if (!(__err & ios_base::failbit))
+ __v = reinterpret_cast<void*>(__ul);
+ return __beg;
+ }
+ template<typename _CharT, typename _OutIter>
+ void
+ num_put<_CharT, _OutIter>::
+ _M_pad(_CharT __fill, streamsize __w, ios_base& __io,
+ _CharT* __new, const _CharT* __cs, int& __len) const
+ {
+ __pad<_CharT, char_traits<_CharT> >::_S_pad(__io, __fill, __new,
+ __cs, __w, __len);
+ __len = static_cast<int>(__w);
+ }
+ template<typename _CharT, typename _ValueT>
+ int
+ __int_to_char(_CharT* __bufend, _ValueT __v, const _CharT* __lit,
+ ios_base::fmtflags __flags, bool __dec)
+ {
+ _CharT* __buf = __bufend;
+ if (__builtin_expect(__dec, true))
+ {
+ do
+ {
+ *--__buf = __lit[(__v % 10) + __num_base::_S_odigits];
+ __v /= 10;
+ }
+ while (__v != 0);
+ }
+ else if ((__flags & ios_base::basefield) == ios_base::oct)
+ {
+ do
+ {
+ *--__buf = __lit[(__v & 0x7) + __num_base::_S_odigits];
+ __v >>= 3;
+ }
+ while (__v != 0);
+ }
+ else
+ {
+ const bool __uppercase = __flags & ios_base::uppercase;
+ const int __case_offset = __uppercase ? __num_base::_S_oudigits
+ : __num_base::_S_odigits;
+ do
+ {
+ *--__buf = __lit[(__v & 0xf) + __case_offset];
+ __v >>= 4;
+ }
+ while (__v != 0);
+ }
+ return __bufend - __buf;
+ }
+ template<typename _CharT, typename _OutIter>
+ void
+ num_put<_CharT, _OutIter>::
+ _M_group_int(const char* __grouping, size_t __grouping_size, _CharT __sep,
+ ios_base&, _CharT* __new, _CharT* __cs, int& __len) const
+ {
+ _CharT* __p = std::__add_grouping(__new, __sep, __grouping,
+ __grouping_size, __cs, __cs + __len);
+ __len = __p - __new;
+ }
+ template<typename _CharT, typename _OutIter>
+ template<typename _ValueT>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ _M_insert_int(_OutIter __s, ios_base& __io, _CharT __fill,
+ _ValueT __v) const
+ {
+ using __gnu_cxx::__add_unsigned;
+ typedef typename __add_unsigned<_ValueT>::__type __unsigned_type;
+ typedef __numpunct_cache<_CharT> __cache_type;
+ __use_cache<__cache_type> __uc;
+ const locale& __loc = __io._M_getloc();
+ const __cache_type* __lc = __uc(__loc);
+ const _CharT* __lit = __lc->_M_atoms_out;
+ const ios_base::fmtflags __flags = __io.flags();
+ const int __ilen = 5 * sizeof(_ValueT);
+ _CharT* __cs = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * __ilen));
+ const ios_base::fmtflags __basefield = __flags & ios_base::basefield;
+ const bool __dec = (__basefield != ios_base::oct
+ && __basefield != ios_base::hex);
+ const __unsigned_type __u = ((__v > 0 || !__dec)
+ ? __unsigned_type(__v)
+ : -__unsigned_type(__v));
+ int __len = __int_to_char(__cs + __ilen, __u, __lit, __flags, __dec);
+ __cs += __ilen - __len;
+ if (__lc->_M_use_grouping)
+ {
+ _CharT* __cs2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * (__len + 1)
+ * 2));
+ _M_group_int(__lc->_M_grouping, __lc->_M_grouping_size,
+ __lc->_M_thousands_sep, __io, __cs2 + 2, __cs, __len);
+ __cs = __cs2 + 2;
+ }
+ if (__builtin_expect(__dec, true))
+ {
+ if (__v >= 0)
+ {
+ if (bool(__flags & ios_base::showpos)
+ && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed)
+ *--__cs = __lit[__num_base::_S_oplus], ++__len;
+ }
+ else
+ *--__cs = __lit[__num_base::_S_ominus], ++__len;
+ }
+ else if (bool(__flags & ios_base::showbase) && __v)
+ {
+ if (__basefield == ios_base::oct)
+ *--__cs = __lit[__num_base::_S_odigits], ++__len;
+ else
+ {
+ const bool __uppercase = __flags & ios_base::uppercase;
+ *--__cs = __lit[__num_base::_S_ox + __uppercase];
+ *--__cs = __lit[__num_base::_S_odigits];
+ __len += 2;
+ }
+ }
+ const streamsize __w = __io.width();
+ if (__w > static_cast<streamsize>(__len))
+ {
+ _CharT* __cs3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * __w));
+ _M_pad(__fill, __w, __io, __cs3, __cs, __len);
+ __cs = __cs3;
+ }
+ __io.width(0);
+ return std::__write(__s, __cs, __len);
+ }
+ template<typename _CharT, typename _OutIter>
+ void
+ num_put<_CharT, _OutIter>::
+ _M_group_float(const char* __grouping, size_t __grouping_size,
+ _CharT __sep, const _CharT* __p, _CharT* __new,
+ _CharT* __cs, int& __len) const
+ {
+ const int __declen = __p ? __p - __cs : __len;
+ _CharT* __p2 = std::__add_grouping(__new, __sep, __grouping,
+ __grouping_size,
+ __cs, __cs + __declen);
+ int __newlen = __p2 - __new;
+ if (__p)
+ {
+ char_traits<_CharT>::copy(__p2, __p, __len - __declen);
+ __newlen += __len - __declen;
+ }
+ __len = __newlen;
+ }
+ template<typename _CharT, typename _OutIter>
+ template<typename _ValueT>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ _M_insert_float(_OutIter __s, ios_base& __io, _CharT __fill, char __mod,
+ _ValueT __v) const
+ {
+ typedef __numpunct_cache<_CharT> __cache_type;
+ __use_cache<__cache_type> __uc;
+ const locale& __loc = __io._M_getloc();
+ const __cache_type* __lc = __uc(__loc);
+ const streamsize __prec = __io.precision() < 0 ? 6 : __io.precision();
+ const int __max_digits =
+ __gnu_cxx::__numeric_traits<_ValueT>::__digits10;
+ int __len;
+ char __fbuf[16];
+ __num_base::_S_format_float(__io, __fbuf, __mod);
+ const bool __fixed = __io.flags() & ios_base::fixed;
+ const int __max_exp =
+ __gnu_cxx::__numeric_traits<_ValueT>::__max_exponent10;
+ const int __cs_size = __fixed ? __max_exp + __prec + 4
+ : __max_digits * 2 + __prec;
+ char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
+ __len = std::__convert_from_v(_S_get_c_locale(), __cs, 0, __fbuf,
+ __prec, __v);
+ const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+ _CharT* __ws = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * __len));
+ __ctype.widen(__cs, __cs + __len, __ws);
+ _CharT* __wp = 0;
+ const char* __p = char_traits<char>::find(__cs, __len, '.');
+ if (__p)
+ {
+ __wp = __ws + (__p - __cs);
+ *__wp = __lc->_M_decimal_point;
+ }
+ if (__lc->_M_use_grouping
+ && (__wp || __len < 3 || (__cs[1] <= '9' && __cs[2] <= '9'
+ && __cs[1] >= '0' && __cs[2] >= '0')))
+ {
+ _CharT* __ws2 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * __len * 2));
+ streamsize __off = 0;
+ if (__cs[0] == '-' || __cs[0] == '+')
+ {
+ __off = 1;
+ __ws2[0] = __ws[0];
+ __len -= 1;
+ }
+ _M_group_float(__lc->_M_grouping, __lc->_M_grouping_size,
+ __lc->_M_thousands_sep, __wp, __ws2 + __off,
+ __ws + __off, __len);
+ __len += __off;
+ __ws = __ws2;
+ }
+ const streamsize __w = __io.width();
+ if (__w > static_cast<streamsize>(__len))
+ {
+ _CharT* __ws3 = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * __w));
+ _M_pad(__fill, __w, __io, __ws3, __ws, __len);
+ __ws = __ws3;
+ }
+ __io.width(0);
+ return std::__write(__s, __ws, __len);
+ }
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill, bool __v) const
+ {
+ const ios_base::fmtflags __flags = __io.flags();
+ if ((__flags & ios_base::boolalpha) == 0)
+ {
+ const long __l = __v;
+ __s = _M_insert_int(__s, __io, __fill, __l);
+ }
+ else
+ {
+ typedef __numpunct_cache<_CharT> __cache_type;
+ __use_cache<__cache_type> __uc;
+ const locale& __loc = __io._M_getloc();
+ const __cache_type* __lc = __uc(__loc);
+ const _CharT* __name = __v ? __lc->_M_truename
+ : __lc->_M_falsename;
+ int __len = __v ? __lc->_M_truename_size
+ : __lc->_M_falsename_size;
+ const streamsize __w = __io.width();
+ if (__w > static_cast<streamsize>(__len))
+ {
+ _CharT* __cs
+ = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
+ * __w));
+ _M_pad(__fill, __w, __io, __cs, __name, __len);
+ __name = __cs;
+ }
+ __io.width(0);
+ __s = std::__write(__s, __name, __len);
+ }
+ return __s;
+ }
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill, long __v) const
+ { return _M_insert_int(__s, __io, __fill, __v); }
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill,
+ unsigned long __v) const
+ { return _M_insert_int(__s, __io, __fill, __v); }
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill, long long __v) const
+ { return _M_insert_int(__s, __io, __fill, __v); }
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill,
+ unsigned long long __v) const
+ { return _M_insert_int(__s, __io, __fill, __v); }
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
+ { return _M_insert_float(__s, __io, __fill, char(), __v); }
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill,
+ long double __v) const
+ { return _M_insert_float(__s, __io, __fill, 'L', __v); }
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ do_put(iter_type __s, ios_base& __io, char_type __fill,
+ const void* __v) const
+ {
+ const ios_base::fmtflags __flags = __io.flags();
+ const ios_base::fmtflags __fmt = ~(ios_base::basefield
+ | ios_base::uppercase
+ | ios_base::internal);
+ __io.flags((__flags & __fmt) | (ios_base::hex | ios_base::showbase));
+ typedef __gnu_cxx::__conditional_type<(sizeof(const void*)
+ <= sizeof(unsigned long)),
+ unsigned long, unsigned long long>::__type _UIntPtrType;
+ __s = _M_insert_int(__s, __io, __fill,
+ reinterpret_cast<_UIntPtrType>(__v));
+ __io.flags(__flags);
+ return __s;
+ }
+ template<typename _CharT, typename _Traits>
+ void
+ __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill,
+ _CharT* __news, const _CharT* __olds,
+ const streamsize __newlen,
+ const streamsize __oldlen)
+ {
+ const size_t __plen = static_cast<size_t>(__newlen - __oldlen);
+ const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield;
+ if (__adjust == ios_base::left)
+ {
+ _Traits::copy(__news, __olds, __oldlen);
+ _Traits::assign(__news + __oldlen, __plen, __fill);
+ return;
+ }
+ size_t __mod = 0;
+ if (__adjust == ios_base::internal)
+ {
+ const locale& __loc = __io._M_getloc();
+ const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
+ if (__ctype.widen('-') == __olds[0]
+ || __ctype.widen('+') == __olds[0])
+ {
+ __news[0] = __olds[0];
+ __mod = 1;
+ ++__news;
+ }
+ else if (__ctype.widen('0') == __olds[0]
+ && __oldlen > 1
+ && (__ctype.widen('x') == __olds[1]
+ || __ctype.widen('X') == __olds[1]))
+ {
+ __news[0] = __olds[0];
+ __news[1] = __olds[1];
+ __mod = 2;
+ __news += 2;
+ }
+ }
+ _Traits::assign(__news, __plen, __fill);
+ _Traits::copy(__news + __plen, __olds + __mod, __oldlen - __mod);
+ }
+ template<typename _CharT>
+ _CharT*
+ __add_grouping(_CharT* __s, _CharT __sep,
+ const char* __gbeg, size_t __gsize,
+ const _CharT* __first, const _CharT* __last)
+ {
+ size_t __idx = 0;
+ size_t __ctr = 0;
+ while (__last - __first > __gbeg[__idx]
+ && static_cast<signed char>(__gbeg[__idx]) > 0)
+ {
+ __last -= __gbeg[__idx];
+ __idx < __gsize - 1 ? ++__idx : ++__ctr;
+ }
+ while (__first != __last)
+ *__s++ = *__first++;
+ while (__ctr--)
+ {
+ *__s++ = __sep;
+ for (char __i = __gbeg[__idx]; __i > 0; --__i)
+ *__s++ = *__first++;
+ }
+ while (__idx--)
+ {
+ *__s++ = __sep;
+ for (char __i = __gbeg[__idx]; __i > 0; --__i)
+ *__s++ = *__first++;
+ }
+ return __s;
+ }
+ extern template class numpunct<char>;
+ extern template class numpunct_byname<char>;
+ extern template class num_get<char>;
+ extern template class num_put<char>;
+ extern template class ctype_byname<char>;
+ extern template
+ const numpunct<char>&
+ use_facet<numpunct<char> >(const locale&);
+ extern template
+ const num_put<char>&
+ use_facet<num_put<char> >(const locale&);
+ extern template
+ const num_get<char>&
+ use_facet<num_get<char> >(const locale&);
+ extern template
+ bool
+ has_facet<ctype<char> >(const locale&);
+ extern template
+ bool
+ has_facet<numpunct<char> >(const locale&);
+ extern template
+ bool
+ has_facet<num_put<char> >(const locale&);
+ extern template
+ bool
+ has_facet<num_get<char> >(const locale&);
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Facet>
+ inline const _Facet&
+ __check_facet(const _Facet* __f)
+ {
+ if (!__f)
+ __throw_bad_cast();
+ return *__f;
+ }
+ template<typename _CharT, typename _Traits>
+ class basic_ios : public ios_base
+ {
+ public:
+ typedef _CharT char_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+ typedef _Traits traits_type;
+ typedef ctype<_CharT> __ctype_type;
+ typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
+ __num_put_type;
+ typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
+ __num_get_type;
+ protected:
+ basic_ostream<_CharT, _Traits>* _M_tie;
+ mutable char_type _M_fill;
+ mutable bool _M_fill_init;
+ basic_streambuf<_CharT, _Traits>* _M_streambuf;
+ const __ctype_type* _M_ctype;
+ const __num_put_type* _M_num_put;
+ const __num_get_type* _M_num_get;
+ public:
+ operator void*() const
+ { return this->fail() ? 0 : const_cast<basic_ios*>(this); }
+ bool
+ operator!() const
+ { return this->fail(); }
+ iostate
+ rdstate() const
+ { return _M_streambuf_state; }
+ void
+ clear(iostate __state = goodbit);
+ void
+ setstate(iostate __state)
+ { this->clear(this->rdstate() | __state); }
+ void
+ _M_setstate(iostate __state)
+ {
+ _M_streambuf_state |= __state;
+ if (this->exceptions() & __state)
+ throw;
+ }
+ bool
+ good() const
+ { return this->rdstate() == 0; }
+ bool
+ eof() const
+ { return (this->rdstate() & eofbit) != 0; }
+ bool
+ fail() const
+ { return (this->rdstate() & (badbit | failbit)) != 0; }
+ bool
+ bad() const
+ { return (this->rdstate() & badbit) != 0; }
+ iostate
+ exceptions() const
+ { return _M_exception; }
+ void
+ exceptions(iostate __except)
+ {
+ _M_exception = __except;
+ this->clear(_M_streambuf_state);
+ }
+ explicit
+ basic_ios(basic_streambuf<_CharT, _Traits>* __sb)
+ : ios_base(), _M_tie(0), _M_fill(), _M_fill_init(false), _M_streambuf(0),
+ _M_ctype(0), _M_num_put(0), _M_num_get(0)
+ { this->init(__sb); }
+ virtual
+ ~basic_ios() { }
+ basic_ostream<_CharT, _Traits>*
+ tie() const
+ { return _M_tie; }
+ basic_ostream<_CharT, _Traits>*
+ tie(basic_ostream<_CharT, _Traits>* __tiestr)
+ {
+ basic_ostream<_CharT, _Traits>* __old = _M_tie;
+ _M_tie = __tiestr;
+ return __old;
+ }
+ basic_streambuf<_CharT, _Traits>*
+ rdbuf() const
+ { return _M_streambuf; }
+ basic_streambuf<_CharT, _Traits>*
+ rdbuf(basic_streambuf<_CharT, _Traits>* __sb);
+ basic_ios&
+ copyfmt(const basic_ios& __rhs);
+ char_type
+ fill() const
+ {
+ if (!_M_fill_init)
+ {
+ _M_fill = this->widen(' ');
+ _M_fill_init = true;
+ }
+ return _M_fill;
+ }
+ char_type
+ fill(char_type __ch)
+ {
+ char_type __old = this->fill();
+ _M_fill = __ch;
+ return __old;
+ }
+ locale
+ imbue(const locale& __loc);
+ char
+ narrow(char_type __c, char __dfault) const
+ { return __check_facet(_M_ctype).narrow(__c, __dfault); }
+ char_type
+ widen(char __c) const
+ { return __check_facet(_M_ctype).widen(__c); }
+ protected:
+ basic_ios()
+ : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false),
+ _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)
+ { }
+ void
+ init(basic_streambuf<_CharT, _Traits>* __sb);
+ void
+ _M_cache_locale(const locale& __loc);
+ };
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT, typename _Traits>
+ void
+ basic_ios<_CharT, _Traits>::clear(iostate __state)
+ {
+ if (this->rdbuf())
+ _M_streambuf_state = __state;
+ else
+ _M_streambuf_state = __state | badbit;
+ if (this->exceptions() & this->rdstate())
+ __throw_ios_failure(("basic_ios::clear"));
+ }
+ template<typename _CharT, typename _Traits>
+ basic_streambuf<_CharT, _Traits>*
+ basic_ios<_CharT, _Traits>::rdbuf(basic_streambuf<_CharT, _Traits>* __sb)
+ {
+ basic_streambuf<_CharT, _Traits>* __old = _M_streambuf;
+ _M_streambuf = __sb;
+ this->clear();
+ return __old;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_ios<_CharT, _Traits>&
+ basic_ios<_CharT, _Traits>::copyfmt(const basic_ios& __rhs)
+ {
+ if (this != &__rhs)
+ {
+ _Words* __words = (__rhs._M_word_size <= _S_local_word_size) ?
+ _M_local_word : new _Words[__rhs._M_word_size];
+ _Callback_list* __cb = __rhs._M_callbacks;
+ if (__cb)
+ __cb->_M_add_reference();
+ _M_call_callbacks(erase_event);
+ if (_M_word != _M_local_word)
+ {
+ delete [] _M_word;
+ _M_word = 0;
+ }
+ _M_dispose_callbacks();
+ _M_callbacks = __cb;
+ for (int __i = 0; __i < __rhs._M_word_size; ++__i)
+ __words[__i] = __rhs._M_word[__i];
+ _M_word = __words;
+ _M_word_size = __rhs._M_word_size;
+ this->flags(__rhs.flags());
+ this->width(__rhs.width());
+ this->precision(__rhs.precision());
+ this->tie(__rhs.tie());
+ this->fill(__rhs.fill());
+ _M_ios_locale = __rhs.getloc();
+ _M_cache_locale(_M_ios_locale);
+ _M_call_callbacks(copyfmt_event);
+ this->exceptions(__rhs.exceptions());
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ locale
+ basic_ios<_CharT, _Traits>::imbue(const locale& __loc)
+ {
+ locale __old(this->getloc());
+ ios_base::imbue(__loc);
+ _M_cache_locale(__loc);
+ if (this->rdbuf() != 0)
+ this->rdbuf()->pubimbue(__loc);
+ return __old;
+ }
+ template<typename _CharT, typename _Traits>
+ void
+ basic_ios<_CharT, _Traits>::init(basic_streambuf<_CharT, _Traits>* __sb)
+ {
+ ios_base::_M_init();
+ _M_cache_locale(_M_ios_locale);
+ _M_fill = _CharT();
+ _M_fill_init = false;
+ _M_tie = 0;
+ _M_exception = goodbit;
+ _M_streambuf = __sb;
+ _M_streambuf_state = __sb ? goodbit : badbit;
+ }
+ template<typename _CharT, typename _Traits>
+ void
+ basic_ios<_CharT, _Traits>::_M_cache_locale(const locale& __loc)
+ {
+ if (__builtin_expect(has_facet<__ctype_type>(__loc), true))
+ _M_ctype = &use_facet<__ctype_type>(__loc);
+ else
+ _M_ctype = 0;
+ if (__builtin_expect(has_facet<__num_put_type>(__loc), true))
+ _M_num_put = &use_facet<__num_put_type>(__loc);
+ else
+ _M_num_put = 0;
+ if (__builtin_expect(has_facet<__num_get_type>(__loc), true))
+ _M_num_get = &use_facet<__num_get_type>(__loc);
+ else
+ _M_num_get = 0;
+ }
+ extern template class basic_ios<char>;
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT, typename _Traits>
+ class basic_ostream : virtual public basic_ios<_CharT, _Traits>
+ {
+ public:
+ typedef _CharT char_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+ typedef _Traits traits_type;
+ typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
+ typedef basic_ios<_CharT, _Traits> __ios_type;
+ typedef basic_ostream<_CharT, _Traits> __ostream_type;
+ typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >
+ __num_put_type;
+ typedef ctype<_CharT> __ctype_type;
+ explicit
+ basic_ostream(__streambuf_type* __sb)
+ { this->init(__sb); }
+ virtual
+ ~basic_ostream() { }
+ class sentry;
+ friend class sentry;
+ __ostream_type&
+ operator<<(__ostream_type& (*__pf)(__ostream_type&))
+ {
+ return __pf(*this);
+ }
+ __ostream_type&
+ operator<<(__ios_type& (*__pf)(__ios_type&))
+ {
+ __pf(*this);
+ return *this;
+ }
+ __ostream_type&
+ operator<<(ios_base& (*__pf) (ios_base&))
+ {
+ __pf(*this);
+ return *this;
+ }
+ __ostream_type&
+ operator<<(long __n)
+ { return _M_insert(__n); }
+ __ostream_type&
+ operator<<(unsigned long __n)
+ { return _M_insert(__n); }
+ __ostream_type&
+ operator<<(bool __n)
+ { return _M_insert(__n); }
+ __ostream_type&
+ operator<<(short __n);
+ __ostream_type&
+ operator<<(unsigned short __n)
+ {
+ return _M_insert(static_cast<unsigned long>(__n));
+ }
+ __ostream_type&
+ operator<<(int __n);
+ __ostream_type&
+ operator<<(unsigned int __n)
+ {
+ return _M_insert(static_cast<unsigned long>(__n));
+ }
+ __ostream_type&
+ operator<<(long long __n)
+ { return _M_insert(__n); }
+ __ostream_type&
+ operator<<(unsigned long long __n)
+ { return _M_insert(__n); }
+ __ostream_type&
+ operator<<(double __f)
+ { return _M_insert(__f); }
+ __ostream_type&
+ operator<<(float __f)
+ {
+ return _M_insert(static_cast<double>(__f));
+ }
+ __ostream_type&
+ operator<<(long double __f)
+ { return _M_insert(__f); }
+ __ostream_type&
+ operator<<(const void* __p)
+ { return _M_insert(__p); }
+ __ostream_type&
+ operator<<(__streambuf_type* __sb);
+ __ostream_type&
+ put(char_type __c);
+ void
+ _M_write(const char_type* __s, streamsize __n)
+ {
+ const streamsize __put = this->rdbuf()->sputn(__s, __n);
+ if (__put != __n)
+ this->setstate(ios_base::badbit);
+ }
+ __ostream_type&
+ write(const char_type* __s, streamsize __n);
+ __ostream_type&
+ flush();
+ pos_type
+ tellp();
+ __ostream_type&
+ seekp(pos_type);
+ __ostream_type&
+ seekp(off_type, ios_base::seekdir);
+ protected:
+ basic_ostream()
+ { this->init(0); }
+ template<typename _ValueT>
+ __ostream_type&
+ _M_insert(_ValueT __v);
+ };
+ template <typename _CharT, typename _Traits>
+ class basic_ostream<_CharT, _Traits>::sentry
+ {
+ bool _M_ok;
+ basic_ostream<_CharT, _Traits>& _M_os;
+ public:
+ explicit
+ sentry(basic_ostream<_CharT, _Traits>& __os);
+ ~sentry()
+ {
+ if (bool(_M_os.flags() & ios_base::unitbuf) && !uncaught_exception())
+ {
+ if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1)
+ _M_os.setstate(ios_base::badbit);
+ }
+ }
+ operator bool() const
+ { return _M_ok; }
+ };
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
+ { return __ostream_insert(__out, &__c, 1); }
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
+ { return (__out << __out.widen(__c)); }
+ template <class _Traits>
+ inline basic_ostream<char, _Traits>&
+ operator<<(basic_ostream<char, _Traits>& __out, char __c)
+ { return __ostream_insert(__out, &__c, 1); }
+ template<class _Traits>
+ inline basic_ostream<char, _Traits>&
+ operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
+ { return (__out << static_cast<char>(__c)); }
+ template<class _Traits>
+ inline basic_ostream<char, _Traits>&
+ operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
+ { return (__out << static_cast<char>(__c)); }
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
+ {
+ if (!__s)
+ __out.setstate(ios_base::badbit);
+ else
+ __ostream_insert(__out, __s,
+ static_cast<streamsize>(_Traits::length(__s)));
+ return __out;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits> &
+ operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s);
+ template<class _Traits>
+ inline basic_ostream<char, _Traits>&
+ operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
+ {
+ if (!__s)
+ __out.setstate(ios_base::badbit);
+ else
+ __ostream_insert(__out, __s,
+ static_cast<streamsize>(_Traits::length(__s)));
+ return __out;
+ }
+ template<class _Traits>
+ inline basic_ostream<char, _Traits>&
+ operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
+ { return (__out << reinterpret_cast<const char*>(__s)); }
+ template<class _Traits>
+ inline basic_ostream<char, _Traits> &
+ operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
+ { return (__out << reinterpret_cast<const char*>(__s)); }
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ endl(basic_ostream<_CharT, _Traits>& __os)
+ { return flush(__os.put(__os.widen('\n'))); }
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ ends(basic_ostream<_CharT, _Traits>& __os)
+ { return __os.put(_CharT()); }
+ template<typename _CharT, typename _Traits>
+ inline basic_ostream<_CharT, _Traits>&
+ flush(basic_ostream<_CharT, _Traits>& __os)
+ { return __os.flush(); }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>::sentry::
+ sentry(basic_ostream<_CharT, _Traits>& __os)
+ : _M_ok(false), _M_os(__os)
+ {
+ if (__os.tie() && __os.good())
+ __os.tie()->flush();
+ if (__os.good())
+ _M_ok = true;
+ else
+ __os.setstate(ios_base::failbit);
+ }
+ template<typename _CharT, typename _Traits>
+ template<typename _ValueT>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ _M_insert(_ValueT __v)
+ {
+ sentry __cerb(*this);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const __num_put_type& __np = __check_facet(this->_M_num_put);
+ if (__np.put(*this, *this, this->fill(), __v).failed())
+ __err |= ios_base::badbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ operator<<(short __n)
+ {
+ const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
+ if (__fmt == ios_base::oct || __fmt == ios_base::hex)
+ return _M_insert(static_cast<long>(static_cast<unsigned short>(__n)));
+ else
+ return _M_insert(static_cast<long>(__n));
+ }
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ operator<<(int __n)
+ {
+ const ios_base::fmtflags __fmt = this->flags() & ios_base::basefield;
+ if (__fmt == ios_base::oct || __fmt == ios_base::hex)
+ return _M_insert(static_cast<long>(static_cast<unsigned int>(__n)));
+ else
+ return _M_insert(static_cast<long>(__n));
+ }
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ operator<<(__streambuf_type* __sbin)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this);
+ if (__cerb && __sbin)
+ {
+ try
+ {
+ if (!__copy_streambufs(__sbin, this->rdbuf()))
+ __err |= ios_base::failbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::failbit); }
+ }
+ else if (!__sbin)
+ __err |= ios_base::badbit;
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ put(char_type __c)
+ {
+ sentry __cerb(*this);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const int_type __put = this->rdbuf()->sputc(__c);
+ if (traits_type::eq_int_type(__put, traits_type::eof()))
+ __err |= ios_base::badbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ write(const _CharT* __s, streamsize __n)
+ {
+ sentry __cerb(*this);
+ if (__cerb)
+ {
+ try
+ { _M_write(__s, __n); }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ flush()
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ if (this->rdbuf() && this->rdbuf()->pubsync() == -1)
+ __err |= ios_base::badbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ typename basic_ostream<_CharT, _Traits>::pos_type
+ basic_ostream<_CharT, _Traits>::
+ tellp()
+ {
+ pos_type __ret = pos_type(-1);
+ try
+ {
+ if (!this->fail())
+ __ret = this->rdbuf()->pubseekoff(0, ios_base::cur, ios_base::out);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ return __ret;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ seekp(pos_type __pos)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ if (!this->fail())
+ {
+ const pos_type __p = this->rdbuf()->pubseekpos(__pos,
+ ios_base::out);
+ if (__p == pos_type(off_type(-1)))
+ __err |= ios_base::failbit;
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ basic_ostream<_CharT, _Traits>::
+ seekp(off_type __off, ios_base::seekdir __dir)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ if (!this->fail())
+ {
+ const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
+ ios_base::out);
+ if (__p == pos_type(off_type(-1)))
+ __err |= ios_base::failbit;
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_ostream<_CharT, _Traits>&
+ operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
+ {
+ if (!__s)
+ __out.setstate(ios_base::badbit);
+ else
+ {
+ const size_t __clen = char_traits<char>::length(__s);
+ try
+ {
+ struct __ptr_guard
+ {
+ _CharT *__p;
+ __ptr_guard (_CharT *__ip): __p(__ip) { }
+ ~__ptr_guard() { delete[] __p; }
+ _CharT* __get() { return __p; }
+ } __pg (new _CharT[__clen]);
+ _CharT *__ws = __pg.__get();
+ for (size_t __i = 0; __i < __clen; ++__i)
+ __ws[__i] = __out.widen(__s[__i]);
+ __ostream_insert(__out, __ws, __clen);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ __out._M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { __out._M_setstate(ios_base::badbit); }
+ }
+ return __out;
+ }
+ extern template class basic_ostream<char>;
+ extern template ostream& endl(ostream&);
+ extern template ostream& ends(ostream&);
+ extern template ostream& flush(ostream&);
+ extern template ostream& operator<<(ostream&, char);
+ extern template ostream& operator<<(ostream&, unsigned char);
+ extern template ostream& operator<<(ostream&, signed char);
+ extern template ostream& operator<<(ostream&, const char*);
+ extern template ostream& operator<<(ostream&, const unsigned char*);
+ extern template ostream& operator<<(ostream&, const signed char*);
+ extern template ostream& ostream::_M_insert(long);
+ extern template ostream& ostream::_M_insert(unsigned long);
+ extern template ostream& ostream::_M_insert(bool);
+ extern template ostream& ostream::_M_insert(long long);
+ extern template ostream& ostream::_M_insert(unsigned long long);
+ extern template ostream& ostream::_M_insert(double);
+ extern template ostream& ostream::_M_insert(long double);
+ extern template ostream& ostream::_M_insert(const void*);
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT, typename _Traits>
+ class basic_istream : virtual public basic_ios<_CharT, _Traits>
+ {
+ public:
+ typedef _CharT char_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+ typedef _Traits traits_type;
+ typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
+ typedef basic_ios<_CharT, _Traits> __ios_type;
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >
+ __num_get_type;
+ typedef ctype<_CharT> __ctype_type;
+ protected:
+ streamsize _M_gcount;
+ public:
+ explicit
+ basic_istream(__streambuf_type* __sb)
+ : _M_gcount(streamsize(0))
+ { this->init(__sb); }
+ virtual
+ ~basic_istream()
+ { _M_gcount = streamsize(0); }
+ class sentry;
+ friend class sentry;
+ __istream_type&
+ operator>>(__istream_type& (*__pf)(__istream_type&))
+ { return __pf(*this); }
+ __istream_type&
+ operator>>(__ios_type& (*__pf)(__ios_type&))
+ {
+ __pf(*this);
+ return *this;
+ }
+ __istream_type&
+ operator>>(ios_base& (*__pf)(ios_base&))
+ {
+ __pf(*this);
+ return *this;
+ }
+ __istream_type&
+ operator>>(bool& __n)
+ { return _M_extract(__n); }
+ __istream_type&
+ operator>>(short& __n);
+ __istream_type&
+ operator>>(unsigned short& __n)
+ { return _M_extract(__n); }
+ __istream_type&
+ operator>>(int& __n);
+ __istream_type&
+ operator>>(unsigned int& __n)
+ { return _M_extract(__n); }
+ __istream_type&
+ operator>>(long& __n)
+ { return _M_extract(__n); }
+ __istream_type&
+ operator>>(unsigned long& __n)
+ { return _M_extract(__n); }
+ __istream_type&
+ operator>>(long long& __n)
+ { return _M_extract(__n); }
+ __istream_type&
+ operator>>(unsigned long long& __n)
+ { return _M_extract(__n); }
+ __istream_type&
+ operator>>(float& __f)
+ { return _M_extract(__f); }
+ __istream_type&
+ operator>>(double& __f)
+ { return _M_extract(__f); }
+ __istream_type&
+ operator>>(long double& __f)
+ { return _M_extract(__f); }
+ __istream_type&
+ operator>>(void*& __p)
+ { return _M_extract(__p); }
+ __istream_type&
+ operator>>(__streambuf_type* __sb);
+ streamsize
+ gcount() const
+ { return _M_gcount; }
+ int_type
+ get();
+ __istream_type&
+ get(char_type& __c);
+ __istream_type&
+ get(char_type* __s, streamsize __n, char_type __delim);
+ __istream_type&
+ get(char_type* __s, streamsize __n)
+ { return this->get(__s, __n, this->widen('\n')); }
+ __istream_type&
+ get(__streambuf_type& __sb, char_type __delim);
+ __istream_type&
+ get(__streambuf_type& __sb)
+ { return this->get(__sb, this->widen('\n')); }
+ __istream_type&
+ getline(char_type* __s, streamsize __n, char_type __delim);
+ __istream_type&
+ getline(char_type* __s, streamsize __n)
+ { return this->getline(__s, __n, this->widen('\n')); }
+ __istream_type&
+ ignore();
+ __istream_type&
+ ignore(streamsize __n);
+ __istream_type&
+ ignore(streamsize __n, int_type __delim);
+ int_type
+ peek();
+ __istream_type&
+ read(char_type* __s, streamsize __n);
+ streamsize
+ readsome(char_type* __s, streamsize __n);
+ __istream_type&
+ putback(char_type __c);
+ __istream_type&
+ unget();
+ int
+ sync();
+ pos_type
+ tellg();
+ __istream_type&
+ seekg(pos_type);
+ __istream_type&
+ seekg(off_type, ios_base::seekdir);
+ protected:
+ basic_istream()
+ : _M_gcount(streamsize(0))
+ { this->init(0); }
+ template<typename _ValueT>
+ __istream_type&
+ _M_extract(_ValueT& __v);
+ };
+ template<>
+ basic_istream<char>&
+ basic_istream<char>::
+ getline(char_type* __s, streamsize __n, char_type __delim);
+ template<>
+ basic_istream<char>&
+ basic_istream<char>::
+ ignore(streamsize __n);
+ template<>
+ basic_istream<char>&
+ basic_istream<char>::
+ ignore(streamsize __n, int_type __delim);
+ template<typename _CharT, typename _Traits>
+ class basic_istream<_CharT, _Traits>::sentry
+ {
+ public:
+ typedef _Traits traits_type;
+ typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::__ctype_type __ctype_type;
+ typedef typename _Traits::int_type __int_type;
+ explicit
+ sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false);
+ operator bool() const
+ { return _M_ok; }
+ private:
+ bool _M_ok;
+ };
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c);
+ template<class _Traits>
+ inline basic_istream<char, _Traits>&
+ operator>>(basic_istream<char, _Traits>& __in, unsigned char& __c)
+ { return (__in >> reinterpret_cast<char&>(__c)); }
+ template<class _Traits>
+ inline basic_istream<char, _Traits>&
+ operator>>(basic_istream<char, _Traits>& __in, signed char& __c)
+ { return (__in >> reinterpret_cast<char&>(__c)); }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s);
+ template<>
+ basic_istream<char>&
+ operator>>(basic_istream<char>& __in, char* __s);
+ template<class _Traits>
+ inline basic_istream<char, _Traits>&
+ operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)
+ { return (__in >> reinterpret_cast<char*>(__s)); }
+ template<class _Traits>
+ inline basic_istream<char, _Traits>&
+ operator>>(basic_istream<char, _Traits>& __in, signed char* __s)
+ { return (__in >> reinterpret_cast<char*>(__s)); }
+ template<typename _CharT, typename _Traits>
+ class basic_iostream
+ : public basic_istream<_CharT, _Traits>,
+ public basic_ostream<_CharT, _Traits>
+ {
+ public:
+ typedef _CharT char_type;
+ typedef typename _Traits::int_type int_type;
+ typedef typename _Traits::pos_type pos_type;
+ typedef typename _Traits::off_type off_type;
+ typedef _Traits traits_type;
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef basic_ostream<_CharT, _Traits> __ostream_type;
+ explicit
+ basic_iostream(basic_streambuf<_CharT, _Traits>* __sb)
+ : __istream_type(__sb), __ostream_type(__sb) { }
+ virtual
+ ~basic_iostream() { }
+ protected:
+ basic_iostream()
+ : __istream_type(), __ostream_type() { }
+ };
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ ws(basic_istream<_CharT, _Traits>& __is);
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>::sentry::
+ sentry(basic_istream<_CharT, _Traits>& __in, bool __noskip) : _M_ok(false)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ if (__in.good())
+ {
+ if (__in.tie())
+ __in.tie()->flush();
+ if (!__noskip && bool(__in.flags() & ios_base::skipws))
+ {
+ const __int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = __in.rdbuf();
+ __int_type __c = __sb->sgetc();
+ const __ctype_type& __ct = __check_facet(__in._M_ctype);
+ while (!traits_type::eq_int_type(__c, __eof)
+ && __ct.is(ctype_base::space,
+ traits_type::to_char_type(__c)))
+ __c = __sb->snextc();
+ if (traits_type::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ }
+ }
+ if (__in.good() && __err == ios_base::goodbit)
+ _M_ok = true;
+ else
+ {
+ __err |= ios_base::failbit;
+ __in.setstate(__err);
+ }
+ }
+ template<typename _CharT, typename _Traits>
+ template<typename _ValueT>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ _M_extract(_ValueT& __v)
+ {
+ sentry __cerb(*this, false);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const __num_get_type& __ng = __check_facet(this->_M_num_get);
+ __ng.get(*this, 0, *this, __err, __v);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ operator>>(short& __n)
+ {
+ long __l;
+ _M_extract(__l);
+ if (!this->fail())
+ {
+ if (__gnu_cxx::__numeric_traits<short>::__min <= __l
+ && __l <= __gnu_cxx::__numeric_traits<short>::__max)
+ __n = short(__l);
+ else
+ this->setstate(ios_base::failbit);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ operator>>(int& __n)
+ {
+ long __l;
+ _M_extract(__l);
+ if (!this->fail())
+ {
+ if (__gnu_cxx::__numeric_traits<int>::__min <= __l
+ && __l <= __gnu_cxx::__numeric_traits<int>::__max)
+ __n = int(__l);
+ else
+ this->setstate(ios_base::failbit);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ operator>>(__streambuf_type* __sbout)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this, false);
+ if (__cerb && __sbout)
+ {
+ try
+ {
+ bool __ineof;
+ if (!__copy_streambufs_eof(this->rdbuf(), __sbout, __ineof))
+ __err |= ios_base::failbit;
+ if (__ineof)
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::failbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::failbit); }
+ }
+ else if (!__sbout)
+ __err |= ios_base::failbit;
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ typename basic_istream<_CharT, _Traits>::int_type
+ basic_istream<_CharT, _Traits>::
+ get(void)
+ {
+ const int_type __eof = traits_type::eof();
+ int_type __c = __eof;
+ _M_gcount = 0;
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ try
+ {
+ __c = this->rdbuf()->sbumpc();
+ if (!traits_type::eq_int_type(__c, __eof))
+ _M_gcount = 1;
+ else
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ }
+ if (!_M_gcount)
+ __err |= ios_base::failbit;
+ if (__err)
+ this->setstate(__err);
+ return __c;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ get(char_type& __c)
+ {
+ _M_gcount = 0;
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ try
+ {
+ const int_type __cb = this->rdbuf()->sbumpc();
+ if (!traits_type::eq_int_type(__cb, traits_type::eof()))
+ {
+ _M_gcount = 1;
+ __c = traits_type::to_char_type(__cb);
+ }
+ else
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ }
+ if (!_M_gcount)
+ __err |= ios_base::failbit;
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ get(char_type* __s, streamsize __n, char_type __delim)
+ {
+ _M_gcount = 0;
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ try
+ {
+ const int_type __idelim = traits_type::to_int_type(__delim);
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ int_type __c = __sb->sgetc();
+ while (_M_gcount + 1 < __n
+ && !traits_type::eq_int_type(__c, __eof)
+ && !traits_type::eq_int_type(__c, __idelim))
+ {
+ *__s++ = traits_type::to_char_type(__c);
+ ++_M_gcount;
+ __c = __sb->snextc();
+ }
+ if (traits_type::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ }
+ if (__n > 0)
+ *__s = char_type();
+ if (!_M_gcount)
+ __err |= ios_base::failbit;
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ get(__streambuf_type& __sb, char_type __delim)
+ {
+ _M_gcount = 0;
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ try
+ {
+ const int_type __idelim = traits_type::to_int_type(__delim);
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __this_sb = this->rdbuf();
+ int_type __c = __this_sb->sgetc();
+ char_type __c2 = traits_type::to_char_type(__c);
+ while (!traits_type::eq_int_type(__c, __eof)
+ && !traits_type::eq_int_type(__c, __idelim)
+ && !traits_type::eq_int_type(__sb.sputc(__c2), __eof))
+ {
+ ++_M_gcount;
+ __c = __this_sb->snextc();
+ __c2 = traits_type::to_char_type(__c);
+ }
+ if (traits_type::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ }
+ if (!_M_gcount)
+ __err |= ios_base::failbit;
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ getline(char_type* __s, streamsize __n, char_type __delim)
+ {
+ _M_gcount = 0;
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ try
+ {
+ const int_type __idelim = traits_type::to_int_type(__delim);
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ int_type __c = __sb->sgetc();
+ while (_M_gcount + 1 < __n
+ && !traits_type::eq_int_type(__c, __eof)
+ && !traits_type::eq_int_type(__c, __idelim))
+ {
+ *__s++ = traits_type::to_char_type(__c);
+ __c = __sb->snextc();
+ ++_M_gcount;
+ }
+ if (traits_type::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ else
+ {
+ if (traits_type::eq_int_type(__c, __idelim))
+ {
+ __sb->sbumpc();
+ ++_M_gcount;
+ }
+ else
+ __err |= ios_base::failbit;
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ }
+ if (__n > 0)
+ *__s = char_type();
+ if (!_M_gcount)
+ __err |= ios_base::failbit;
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ ignore(void)
+ {
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ if (traits_type::eq_int_type(__sb->sbumpc(), __eof))
+ __err |= ios_base::eofbit;
+ else
+ _M_gcount = 1;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ ignore(streamsize __n)
+ {
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb && __n > 0)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ int_type __c = __sb->sgetc();
+ bool __large_ignore = false;
+ while (true)
+ {
+ while (_M_gcount < __n
+ && !traits_type::eq_int_type(__c, __eof))
+ {
+ ++_M_gcount;
+ __c = __sb->snextc();
+ }
+ if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
+ && !traits_type::eq_int_type(__c, __eof))
+ {
+ _M_gcount =
+ __gnu_cxx::__numeric_traits<streamsize>::__min;
+ __large_ignore = true;
+ }
+ else
+ break;
+ }
+ if (__large_ignore)
+ _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
+ if (traits_type::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ ignore(streamsize __n, int_type __delim)
+ {
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb && __n > 0)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ int_type __c = __sb->sgetc();
+ bool __large_ignore = false;
+ while (true)
+ {
+ while (_M_gcount < __n
+ && !traits_type::eq_int_type(__c, __eof)
+ && !traits_type::eq_int_type(__c, __delim))
+ {
+ ++_M_gcount;
+ __c = __sb->snextc();
+ }
+ if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
+ && !traits_type::eq_int_type(__c, __eof)
+ && !traits_type::eq_int_type(__c, __delim))
+ {
+ _M_gcount =
+ __gnu_cxx::__numeric_traits<streamsize>::__min;
+ __large_ignore = true;
+ }
+ else
+ break;
+ }
+ if (__large_ignore)
+ _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
+ if (traits_type::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ else if (traits_type::eq_int_type(__c, __delim))
+ {
+ if (_M_gcount
+ < __gnu_cxx::__numeric_traits<streamsize>::__max)
+ ++_M_gcount;
+ __sb->sbumpc();
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ typename basic_istream<_CharT, _Traits>::int_type
+ basic_istream<_CharT, _Traits>::
+ peek(void)
+ {
+ int_type __c = traits_type::eof();
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ __c = this->rdbuf()->sgetc();
+ if (traits_type::eq_int_type(__c, traits_type::eof()))
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return __c;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ read(char_type* __s, streamsize __n)
+ {
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ _M_gcount = this->rdbuf()->sgetn(__s, __n);
+ if (_M_gcount != __n)
+ __err |= (ios_base::eofbit | ios_base::failbit);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ streamsize
+ basic_istream<_CharT, _Traits>::
+ readsome(char_type* __s, streamsize __n)
+ {
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const streamsize __num = this->rdbuf()->in_avail();
+ if (__num > 0)
+ _M_gcount = this->rdbuf()->sgetn(__s, std::min(__num, __n));
+ else if (__num == -1)
+ __err |= ios_base::eofbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return _M_gcount;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ putback(char_type __c)
+ {
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ if (!__sb
+ || traits_type::eq_int_type(__sb->sputbackc(__c), __eof))
+ __err |= ios_base::badbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ unget(void)
+ {
+ _M_gcount = 0;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const int_type __eof = traits_type::eof();
+ __streambuf_type* __sb = this->rdbuf();
+ if (!__sb
+ || traits_type::eq_int_type(__sb->sungetc(), __eof))
+ __err |= ios_base::badbit;
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ int
+ basic_istream<_CharT, _Traits>::
+ sync(void)
+ {
+ int __ret = -1;
+ sentry __cerb(*this, true);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ __streambuf_type* __sb = this->rdbuf();
+ if (__sb)
+ {
+ if (__sb->pubsync() == -1)
+ __err |= ios_base::badbit;
+ else
+ __ret = 0;
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ }
+ return __ret;
+ }
+ template<typename _CharT, typename _Traits>
+ typename basic_istream<_CharT, _Traits>::pos_type
+ basic_istream<_CharT, _Traits>::
+ tellg(void)
+ {
+ pos_type __ret = pos_type(-1);
+ try
+ {
+ if (!this->fail())
+ __ret = this->rdbuf()->pubseekoff(0, ios_base::cur,
+ ios_base::in);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ return __ret;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ seekg(pos_type __pos)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ if (!this->fail())
+ {
+ const pos_type __p = this->rdbuf()->pubseekpos(__pos,
+ ios_base::in);
+ if (__p == pos_type(off_type(-1)))
+ __err |= ios_base::failbit;
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ basic_istream<_CharT, _Traits>::
+ seekg(off_type __off, ios_base::seekdir __dir)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ if (!this->fail())
+ {
+ const pos_type __p = this->rdbuf()->pubseekoff(__off, __dir,
+ ios_base::in);
+ if (__p == pos_type(off_type(-1)))
+ __err |= ios_base::failbit;
+ }
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ this->_M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { this->_M_setstate(ios_base::badbit); }
+ if (__err)
+ this->setstate(__err);
+ return *this;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ operator>>(basic_istream<_CharT, _Traits>& __in, _CharT& __c)
+ {
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef typename __istream_type::int_type __int_type;
+ typename __istream_type::sentry __cerb(__in, false);
+ if (__cerb)
+ {
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ try
+ {
+ const __int_type __cb = __in.rdbuf()->sbumpc();
+ if (!_Traits::eq_int_type(__cb, _Traits::eof()))
+ __c = _Traits::to_char_type(__cb);
+ else
+ __err |= (ios_base::eofbit | ios_base::failbit);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ __in._M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { __in._M_setstate(ios_base::badbit); }
+ if (__err)
+ __in.setstate(__err);
+ }
+ return __in;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s)
+ {
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
+ typedef typename _Traits::int_type int_type;
+ typedef _CharT char_type;
+ typedef ctype<_CharT> __ctype_type;
+ streamsize __extracted = 0;
+ ios_base::iostate __err = ios_base::iostate(ios_base::goodbit);
+ typename __istream_type::sentry __cerb(__in, false);
+ if (__cerb)
+ {
+ try
+ {
+ streamsize __num = __in.width();
+ if (__num <= 0)
+ __num = __gnu_cxx::__numeric_traits<streamsize>::__max;
+ const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
+ const int_type __eof = _Traits::eof();
+ __streambuf_type* __sb = __in.rdbuf();
+ int_type __c = __sb->sgetc();
+ while (__extracted < __num - 1
+ && !_Traits::eq_int_type(__c, __eof)
+ && !__ct.is(ctype_base::space,
+ _Traits::to_char_type(__c)))
+ {
+ *__s++ = _Traits::to_char_type(__c);
+ ++__extracted;
+ __c = __sb->snextc();
+ }
+ if (_Traits::eq_int_type(__c, __eof))
+ __err |= ios_base::eofbit;
+ *__s = char_type();
+ __in.width(0);
+ }
+ catch(__cxxabiv1::__forced_unwind&)
+ {
+ __in._M_setstate(ios_base::badbit);
+ throw;
+ }
+ catch(...)
+ { __in._M_setstate(ios_base::badbit); }
+ }
+ if (!__extracted)
+ __err |= ios_base::failbit;
+ if (__err)
+ __in.setstate(__err);
+ return __in;
+ }
+ template<typename _CharT, typename _Traits>
+ basic_istream<_CharT, _Traits>&
+ ws(basic_istream<_CharT, _Traits>& __in)
+ {
+ typedef basic_istream<_CharT, _Traits> __istream_type;
+ typedef basic_streambuf<_CharT, _Traits> __streambuf_type;
+ typedef typename __istream_type::int_type __int_type;
+ typedef ctype<_CharT> __ctype_type;
+ const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
+ const __int_type __eof = _Traits::eof();
+ __streambuf_type* __sb = __in.rdbuf();
+ __int_type __c = __sb->sgetc();
+ while (!_Traits::eq_int_type(__c, __eof)
+ && __ct.is(ctype_base::space, _Traits::to_char_type(__c)))
+ __c = __sb->snextc();
+ if (_Traits::eq_int_type(__c, __eof))
+ __in.setstate(ios_base::eofbit);
+ return __in;
+ }
+ extern template class basic_istream<char>;
+ extern template istream& ws(istream&);
+ extern template istream& operator>>(istream&, char&);
+ extern template istream& operator>>(istream&, char*);
+ extern template istream& operator>>(istream&, unsigned char&);
+ extern template istream& operator>>(istream&, signed char&);
+ extern template istream& operator>>(istream&, unsigned char*);
+ extern template istream& operator>>(istream&, signed char*);
+ extern template istream& istream::_M_extract(unsigned short&);
+ extern template istream& istream::_M_extract(unsigned int&);
+ extern template istream& istream::_M_extract(long&);
+ extern template istream& istream::_M_extract(unsigned long&);
+ extern template istream& istream::_M_extract(bool&);
+ extern template istream& istream::_M_extract(long long&);
+ extern template istream& istream::_M_extract(unsigned long long&);
+ extern template istream& istream::_M_extract(float&);
+ extern template istream& istream::_M_extract(double&);
+ extern template istream& istream::_M_extract(long double&);
+ extern template istream& istream::_M_extract(void*&);
+ extern template class basic_iostream<char>;
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Tp, typename _CharT = char,
+ typename _Traits = char_traits<_CharT>, typename _Dist = ptrdiff_t>
+ class istream_iterator
+ : public iterator<input_iterator_tag, _Tp, _Dist, const _Tp*, const _Tp&>
+ {
+ public:
+ typedef _CharT char_type;
+ typedef _Traits traits_type;
+ typedef basic_istream<_CharT, _Traits> istream_type;
+ private:
+ istream_type* _M_stream;
+ _Tp _M_value;
+ bool _M_ok;
+ public:
+ istream_iterator()
+ : _M_stream(0), _M_value(), _M_ok(false) {}
+ istream_iterator(istream_type& __s)
+ : _M_stream(&__s)
+ { _M_read(); }
+ istream_iterator(const istream_iterator& __obj)
+ : _M_stream(__obj._M_stream), _M_value(__obj._M_value),
+ _M_ok(__obj._M_ok)
+ { }
+ const _Tp&
+ operator*() const
+ {
+ ;
+ return _M_value;
+ }
+ const _Tp*
+ operator->() const { return &(operator*()); }
+ istream_iterator&
+ operator++()
+ {
+ ;
+ _M_read();
+ return *this;
+ }
+ istream_iterator
+ operator++(int)
+ {
+ ;
+ istream_iterator __tmp = *this;
+ _M_read();
+ return __tmp;
+ }
+ bool
+ _M_equal(const istream_iterator& __x) const
+ { return (_M_ok == __x._M_ok) && (!_M_ok || _M_stream == __x._M_stream); }
+ private:
+ void
+ _M_read()
+ {
+ _M_ok = (_M_stream && *_M_stream) ? true : false;
+ if (_M_ok)
+ {
+ *_M_stream >> _M_value;
+ _M_ok = *_M_stream ? true : false;
+ }
+ }
+ };
+ template<typename _Tp, typename _CharT, typename _Traits, typename _Dist>
+ inline bool
+ operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
+ const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y)
+ { return __x._M_equal(__y); }
+ template <class _Tp, class _CharT, class _Traits, class _Dist>
+ inline bool
+ operator!=(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x,
+ const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __y)
+ { return !__x._M_equal(__y); }
+ template<typename _Tp, typename _CharT = char,
+ typename _Traits = char_traits<_CharT> >
+ class ostream_iterator
+ : public iterator<output_iterator_tag, void, void, void, void>
+ {
+ public:
+ typedef _CharT char_type;
+ typedef _Traits traits_type;
+ typedef basic_ostream<_CharT, _Traits> ostream_type;
+ private:
+ ostream_type* _M_stream;
+ const _CharT* _M_string;
+ public:
+ ostream_iterator(ostream_type& __s) : _M_stream(&__s), _M_string(0) {}
+ ostream_iterator(ostream_type& __s, const _CharT* __c)
+ : _M_stream(&__s), _M_string(__c) { }
+ ostream_iterator(const ostream_iterator& __obj)
+ : _M_stream(__obj._M_stream), _M_string(__obj._M_string) { }
+ ostream_iterator&
+ operator=(const _Tp& __value)
+ {
+ ;
+ *_M_stream << __value;
+ if (_M_string) *_M_stream << _M_string;
+ return *this;
+ }
+ ostream_iterator&
+ operator*()
+ { return *this; }
+ ostream_iterator&
+ operator++()
+ { return *this; }
+ ostream_iterator&
+ operator++(int)
+ { return *this; }
+ };
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ struct _List_node_base
+ {
+ _List_node_base* _M_next;
+ _List_node_base* _M_prev;
+ static void
+ swap(_List_node_base& __x, _List_node_base& __y);
+ void
+ transfer(_List_node_base * const __first,
+ _List_node_base * const __last);
+ void
+ reverse();
+ void
+ hook(_List_node_base * const __position);
+ void
+ unhook();
+ };
+ template<typename _Tp>
+ struct _List_node : public _List_node_base
+ {
+ _Tp _M_data;
+ };
+ template<typename _Tp>
+ struct _List_iterator
+ {
+ typedef _List_iterator<_Tp> _Self;
+ typedef _List_node<_Tp> _Node;
+ typedef ptrdiff_t difference_type;
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef _Tp value_type;
+ typedef _Tp* pointer;
+ typedef _Tp& reference;
+ _List_iterator()
+ : _M_node() { }
+ explicit
+ _List_iterator(_List_node_base* __x)
+ : _M_node(__x) { }
+ reference
+ operator*() const
+ { return static_cast<_Node*>(_M_node)->_M_data; }
+ pointer
+ operator->() const
+ { return &static_cast<_Node*>(_M_node)->_M_data; }
+ _Self&
+ operator++()
+ {
+ _M_node = _M_node->_M_next;
+ return *this;
+ }
+ _Self
+ operator++(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _M_node->_M_next;
+ return __tmp;
+ }
+ _Self&
+ operator--()
+ {
+ _M_node = _M_node->_M_prev;
+ return *this;
+ }
+ _Self
+ operator--(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _M_node->_M_prev;
+ return __tmp;
+ }
+ bool
+ operator==(const _Self& __x) const
+ { return _M_node == __x._M_node; }
+ bool
+ operator!=(const _Self& __x) const
+ { return _M_node != __x._M_node; }
+ _List_node_base* _M_node;
+ };
+ template<typename _Tp>
+ struct _List_const_iterator
+ {
+ typedef _List_const_iterator<_Tp> _Self;
+ typedef const _List_node<_Tp> _Node;
+ typedef _List_iterator<_Tp> iterator;
+ typedef ptrdiff_t difference_type;
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef _Tp value_type;
+ typedef const _Tp* pointer;
+ typedef const _Tp& reference;
+ _List_const_iterator()
+ : _M_node() { }
+ explicit
+ _List_const_iterator(const _List_node_base* __x)
+ : _M_node(__x) { }
+ _List_const_iterator(const iterator& __x)
+ : _M_node(__x._M_node) { }
+ reference
+ operator*() const
+ { return static_cast<_Node*>(_M_node)->_M_data; }
+ pointer
+ operator->() const
+ { return &static_cast<_Node*>(_M_node)->_M_data; }
+ _Self&
+ operator++()
+ {
+ _M_node = _M_node->_M_next;
+ return *this;
+ }
+ _Self
+ operator++(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _M_node->_M_next;
+ return __tmp;
+ }
+ _Self&
+ operator--()
+ {
+ _M_node = _M_node->_M_prev;
+ return *this;
+ }
+ _Self
+ operator--(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _M_node->_M_prev;
+ return __tmp;
+ }
+ bool
+ operator==(const _Self& __x) const
+ { return _M_node == __x._M_node; }
+ bool
+ operator!=(const _Self& __x) const
+ { return _M_node != __x._M_node; }
+ const _List_node_base* _M_node;
+ };
+ template<typename _Val>
+ inline bool
+ operator==(const _List_iterator<_Val>& __x,
+ const _List_const_iterator<_Val>& __y)
+ { return __x._M_node == __y._M_node; }
+ template<typename _Val>
+ inline bool
+ operator!=(const _List_iterator<_Val>& __x,
+ const _List_const_iterator<_Val>& __y)
+ { return __x._M_node != __y._M_node; }
+ template<typename _Tp, typename _Alloc>
+ class _List_base
+ {
+ protected:
+ typedef typename _Alloc::template rebind<_List_node<_Tp> >::other
+ _Node_alloc_type;
+ typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
+ struct _List_impl
+ : public _Node_alloc_type
+ {
+ _List_node_base _M_node;
+ _List_impl()
+ : _Node_alloc_type(), _M_node()
+ { }
+ _List_impl(const _Node_alloc_type& __a)
+ : _Node_alloc_type(__a), _M_node()
+ { }
+ };
+ _List_impl _M_impl;
+ _List_node<_Tp>*
+ _M_get_node()
+ { return _M_impl._Node_alloc_type::allocate(1); }
+ void
+ _M_put_node(_List_node<_Tp>* __p)
+ { _M_impl._Node_alloc_type::deallocate(__p, 1); }
+ public:
+ typedef _Alloc allocator_type;
+ _Node_alloc_type&
+ _M_get_Node_allocator()
+ { return *static_cast<_Node_alloc_type*>(&this->_M_impl); }
+ const _Node_alloc_type&
+ _M_get_Node_allocator() const
+ { return *static_cast<const _Node_alloc_type*>(&this->_M_impl); }
+ _Tp_alloc_type
+ _M_get_Tp_allocator() const
+ { return _Tp_alloc_type(_M_get_Node_allocator()); }
+ allocator_type
+ get_allocator() const
+ { return allocator_type(_M_get_Node_allocator()); }
+ _List_base()
+ : _M_impl()
+ { _M_init(); }
+ _List_base(const allocator_type& __a)
+ : _M_impl(__a)
+ { _M_init(); }
+ ~_List_base()
+ { _M_clear(); }
+ void
+ _M_clear();
+ void
+ _M_init()
+ {
+ this->_M_impl._M_node._M_next = &this->_M_impl._M_node;
+ this->_M_impl._M_node._M_prev = &this->_M_impl._M_node;
+ }
+ };
+ template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
+ class list : protected _List_base<_Tp, _Alloc>
+ {
+ typedef typename _Alloc::value_type _Alloc_value_type;
+ typedef _List_base<_Tp, _Alloc> _Base;
+ typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
+ public:
+ typedef _Tp value_type;
+ typedef typename _Tp_alloc_type::pointer pointer;
+ typedef typename _Tp_alloc_type::const_pointer const_pointer;
+ typedef typename _Tp_alloc_type::reference reference;
+ typedef typename _Tp_alloc_type::const_reference const_reference;
+ typedef _List_iterator<_Tp> iterator;
+ typedef _List_const_iterator<_Tp> const_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Alloc allocator_type;
+ protected:
+ typedef _List_node<_Tp> _Node;
+ using _Base::_M_impl;
+ using _Base::_M_put_node;
+ using _Base::_M_get_node;
+ using _Base::_M_get_Tp_allocator;
+ using _Base::_M_get_Node_allocator;
+ _Node*
+ _M_create_node(const value_type& __x)
+ {
+ _Node* __p = this->_M_get_node();
+ try
+ {
+ _M_get_Tp_allocator().construct(&__p->_M_data, __x);
+ }
+ catch(...)
+ {
+ _M_put_node(__p);
+ throw;
+ }
+ return __p;
+ }
+ public:
+ list()
+ : _Base() { }
+ explicit
+ list(const allocator_type& __a)
+ : _Base(__a) { }
+ explicit
+ list(size_type __n, const value_type& __value = value_type(),
+ const allocator_type& __a = allocator_type())
+ : _Base(__a)
+ { _M_fill_initialize(__n, __value); }
+ list(const list& __x)
+ : _Base(__x._M_get_Node_allocator())
+ { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); }
+ template<typename _InputIterator>
+ list(_InputIterator __first, _InputIterator __last,
+ const allocator_type& __a = allocator_type())
+ : _Base(__a)
+ {
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_initialize_dispatch(__first, __last, _Integral());
+ }
+ list&
+ operator=(const list& __x);
+ void
+ assign(size_type __n, const value_type& __val)
+ { _M_fill_assign(__n, __val); }
+ template<typename _InputIterator>
+ void
+ assign(_InputIterator __first, _InputIterator __last)
+ {
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_assign_dispatch(__first, __last, _Integral());
+ }
+ allocator_type
+ get_allocator() const
+ { return _Base::get_allocator(); }
+ iterator
+ begin()
+ { return iterator(this->_M_impl._M_node._M_next); }
+ const_iterator
+ begin() const
+ { return const_iterator(this->_M_impl._M_node._M_next); }
+ iterator
+ end()
+ { return iterator(&this->_M_impl._M_node); }
+ const_iterator
+ end() const
+ { return const_iterator(&this->_M_impl._M_node); }
+ reverse_iterator
+ rbegin()
+ { return reverse_iterator(end()); }
+ const_reverse_iterator
+ rbegin() const
+ { return const_reverse_iterator(end()); }
+ reverse_iterator
+ rend()
+ { return reverse_iterator(begin()); }
+ const_reverse_iterator
+ rend() const
+ { return const_reverse_iterator(begin()); }
+ bool
+ empty() const
+ { return this->_M_impl._M_node._M_next == &this->_M_impl._M_node; }
+ size_type
+ size() const
+ { return std::distance(begin(), end()); }
+ size_type
+ max_size() const
+ { return _M_get_Tp_allocator().max_size(); }
+ void
+ resize(size_type __new_size, value_type __x = value_type());
+ reference
+ front()
+ { return *begin(); }
+ const_reference
+ front() const
+ { return *begin(); }
+ reference
+ back()
+ {
+ iterator __tmp = end();
+ --__tmp;
+ return *__tmp;
+ }
+ const_reference
+ back() const
+ {
+ const_iterator __tmp = end();
+ --__tmp;
+ return *__tmp;
+ }
+ void
+ push_front(const value_type& __x)
+ { this->_M_insert(begin(), __x); }
+ void
+ pop_front()
+ { this->_M_erase(begin()); }
+ void
+ push_back(const value_type& __x)
+ { this->_M_insert(end(), __x); }
+ void
+ pop_back()
+ { this->_M_erase(iterator(this->_M_impl._M_node._M_prev)); }
+ iterator
+ insert(iterator __position, const value_type& __x);
+ void
+ insert(iterator __position, size_type __n, const value_type& __x)
+ {
+ list __tmp(__n, __x, _M_get_Node_allocator());
+ splice(__position, __tmp);
+ }
+ template<typename _InputIterator>
+ void
+ insert(iterator __position, _InputIterator __first,
+ _InputIterator __last)
+ {
+ list __tmp(__first, __last, _M_get_Node_allocator());
+ splice(__position, __tmp);
+ }
+ iterator
+ erase(iterator __position);
+ iterator
+ erase(iterator __first, iterator __last)
+ {
+ while (__first != __last)
+ __first = erase(__first);
+ return __last;
+ }
+ void
+ swap(list& __x)
+ {
+ _List_node_base::swap(this->_M_impl._M_node, __x._M_impl._M_node);
+ std::__alloc_swap<typename _Base::_Node_alloc_type>::
+ _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator());
+ }
+ void
+ clear()
+ {
+ _Base::_M_clear();
+ _Base::_M_init();
+ }
+ void
+ splice(iterator __position, list& __x)
+ {
+ if (!__x.empty())
+ {
+ _M_check_equal_allocators(__x);
+ this->_M_transfer(__position, __x.begin(), __x.end());
+ }
+ }
+ void
+ splice(iterator __position, list& __x, iterator __i)
+ {
+ iterator __j = __i;
+ ++__j;
+ if (__position == __i || __position == __j)
+ return;
+ if (this != &__x)
+ _M_check_equal_allocators(__x);
+ this->_M_transfer(__position, __i, __j);
+ }
+ void
+ splice(iterator __position, list& __x, iterator __first,
+ iterator __last)
+ {
+ if (__first != __last)
+ {
+ if (this != &__x)
+ _M_check_equal_allocators(__x);
+ this->_M_transfer(__position, __first, __last);
+ }
+ }
+ void
+ remove(const _Tp& __value);
+ template<typename _Predicate>
+ void
+ remove_if(_Predicate);
+ void
+ unique();
+ template<typename _BinaryPredicate>
+ void
+ unique(_BinaryPredicate);
+ void
+ merge(list& __x);
+ template<typename _StrictWeakOrdering>
+ void
+ merge(list&, _StrictWeakOrdering);
+ void
+ reverse()
+ { this->_M_impl._M_node.reverse(); }
+ void
+ sort();
+ template<typename _StrictWeakOrdering>
+ void
+ sort(_StrictWeakOrdering);
+ protected:
+ template<typename _Integer>
+ void
+ _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
+ { _M_fill_initialize(static_cast<size_type>(__n), __x); }
+ template<typename _InputIterator>
+ void
+ _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
+ __false_type)
+ {
+ for (; __first != __last; ++__first)
+ push_back(*__first);
+ }
+ void
+ _M_fill_initialize(size_type __n, const value_type& __x)
+ {
+ for (; __n > 0; --__n)
+ push_back(__x);
+ }
+ template<typename _Integer>
+ void
+ _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
+ { _M_fill_assign(__n, __val); }
+ template<typename _InputIterator>
+ void
+ _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
+ __false_type);
+ void
+ _M_fill_assign(size_type __n, const value_type& __val);
+ void
+ _M_transfer(iterator __position, iterator __first, iterator __last)
+ { __position._M_node->transfer(__first._M_node, __last._M_node); }
+ void
+ _M_insert(iterator __position, const value_type& __x)
+ {
+ _Node* __tmp = _M_create_node(__x);
+ __tmp->hook(__position._M_node);
+ }
+ void
+ _M_erase(iterator __position)
+ {
+ __position._M_node->unhook();
+ _Node* __n = static_cast<_Node*>(__position._M_node);
+ _M_get_Tp_allocator().destroy(&__n->_M_data);
+ _M_put_node(__n);
+ }
+ void
+ _M_check_equal_allocators(list& __x)
+ {
+ if (std::__alloc_neq<typename _Base::_Node_alloc_type>::
+ _S_do_it(_M_get_Node_allocator(), __x._M_get_Node_allocator()))
+ __throw_runtime_error(("list::_M_check_equal_allocators"));
+ }
+ };
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+ {
+ typedef typename list<_Tp, _Alloc>::const_iterator const_iterator;
+ const_iterator __end1 = __x.end();
+ const_iterator __end2 = __y.end();
+ const_iterator __i1 = __x.begin();
+ const_iterator __i2 = __y.begin();
+ while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2)
+ {
+ ++__i1;
+ ++__i2;
+ }
+ return __i1 == __end1 && __i2 == __end2;
+ }
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator<(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+ { return std::lexicographical_compare(__x.begin(), __x.end(),
+ __y.begin(), __y.end()); }
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator!=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+ { return !(__x == __y); }
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator>(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+ { return __y < __x; }
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator<=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+ { return !(__y < __x); }
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator>=(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y)
+ { return !(__x < __y); }
+ template<typename _Tp, typename _Alloc>
+ inline void
+ swap(list<_Tp, _Alloc>& __x, list<_Tp, _Alloc>& __y)
+ { __x.swap(__y); }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Tp, typename _Alloc>
+ void
+ _List_base<_Tp, _Alloc>::
+ _M_clear()
+ {
+ typedef _List_node<_Tp> _Node;
+ _Node* __cur = static_cast<_Node*>(this->_M_impl._M_node._M_next);
+ while (__cur != &this->_M_impl._M_node)
+ {
+ _Node* __tmp = __cur;
+ __cur = static_cast<_Node*>(__cur->_M_next);
+ _M_get_Tp_allocator().destroy(&__tmp->_M_data);
+ _M_put_node(__tmp);
+ }
+ }
+ template<typename _Tp, typename _Alloc>
+ typename list<_Tp, _Alloc>::iterator
+ list<_Tp, _Alloc>::
+ insert(iterator __position, const value_type& __x)
+ {
+ _Node* __tmp = _M_create_node(__x);
+ __tmp->hook(__position._M_node);
+ return iterator(__tmp);
+ }
+ template<typename _Tp, typename _Alloc>
+ typename list<_Tp, _Alloc>::iterator
+ list<_Tp, _Alloc>::
+ erase(iterator __position)
+ {
+ iterator __ret = iterator(__position._M_node->_M_next);
+ _M_erase(__position);
+ return __ret;
+ }
+ template<typename _Tp, typename _Alloc>
+ void
+ list<_Tp, _Alloc>::
+ resize(size_type __new_size, value_type __x)
+ {
+ iterator __i = begin();
+ size_type __len = 0;
+ for (; __i != end() && __len < __new_size; ++__i, ++__len)
+ ;
+ if (__len == __new_size)
+ erase(__i, end());
+ else
+ insert(end(), __new_size - __len, __x);
+ }
+ template<typename _Tp, typename _Alloc>
+ list<_Tp, _Alloc>&
+ list<_Tp, _Alloc>::
+ operator=(const list& __x)
+ {
+ if (this != &__x)
+ {
+ iterator __first1 = begin();
+ iterator __last1 = end();
+ const_iterator __first2 = __x.begin();
+ const_iterator __last2 = __x.end();
+ for (; __first1 != __last1 && __first2 != __last2;
+ ++__first1, ++__first2)
+ *__first1 = *__first2;
+ if (__first2 == __last2)
+ erase(__first1, __last1);
+ else
+ insert(__last1, __first2, __last2);
+ }
+ return *this;
+ }
+ template<typename _Tp, typename _Alloc>
+ void
+ list<_Tp, _Alloc>::
+ _M_fill_assign(size_type __n, const value_type& __val)
+ {
+ iterator __i = begin();
+ for (; __i != end() && __n > 0; ++__i, --__n)
+ *__i = __val;
+ if (__n > 0)
+ insert(end(), __n, __val);
+ else
+ erase(__i, end());
+ }
+ template<typename _Tp, typename _Alloc>
+ template <typename _InputIterator>
+ void
+ list<_Tp, _Alloc>::
+ _M_assign_dispatch(_InputIterator __first2, _InputIterator __last2,
+ __false_type)
+ {
+ iterator __first1 = begin();
+ iterator __last1 = end();
+ for (; __first1 != __last1 && __first2 != __last2;
+ ++__first1, ++__first2)
+ *__first1 = *__first2;
+ if (__first2 == __last2)
+ erase(__first1, __last1);
+ else
+ insert(__last1, __first2, __last2);
+ }
+ template<typename _Tp, typename _Alloc>
+ void
+ list<_Tp, _Alloc>::
+ remove(const value_type& __value)
+ {
+ iterator __first = begin();
+ iterator __last = end();
+ iterator __extra = __last;
+ while (__first != __last)
+ {
+ iterator __next = __first;
+ ++__next;
+ if (*__first == __value)
+ {
+ if (&*__first != &__value)
+ _M_erase(__first);
+ else
+ __extra = __first;
+ }
+ __first = __next;
+ }
+ if (__extra != __last)
+ _M_erase(__extra);
+ }
+ template<typename _Tp, typename _Alloc>
+ void
+ list<_Tp, _Alloc>::
+ unique()
+ {
+ iterator __first = begin();
+ iterator __last = end();
+ if (__first == __last)
+ return;
+ iterator __next = __first;
+ while (++__next != __last)
+ {
+ if (*__first == *__next)
+ _M_erase(__next);
+ else
+ __first = __next;
+ __next = __first;
+ }
+ }
+ template<typename _Tp, typename _Alloc>
+ void
+ list<_Tp, _Alloc>::
+ merge(list& __x)
+ {
+ if (this != &__x)
+ {
+ _M_check_equal_allocators(__x);
+ iterator __first1 = begin();
+ iterator __last1 = end();
+ iterator __first2 = __x.begin();
+ iterator __last2 = __x.end();
+ while (__first1 != __last1 && __first2 != __last2)
+ if (*__first2 < *__first1)
+ {
+ iterator __next = __first2;
+ _M_transfer(__first1, __first2, ++__next);
+ __first2 = __next;
+ }
+ else
+ ++__first1;
+ if (__first2 != __last2)
+ _M_transfer(__last1, __first2, __last2);
+ }
+ }
+ template<typename _Tp, typename _Alloc>
+ template <typename _StrictWeakOrdering>
+ void
+ list<_Tp, _Alloc>::
+ merge(list& __x, _StrictWeakOrdering __comp)
+ {
+ if (this != &__x)
+ {
+ _M_check_equal_allocators(__x);
+ iterator __first1 = begin();
+ iterator __last1 = end();
+ iterator __first2 = __x.begin();
+ iterator __last2 = __x.end();
+ while (__first1 != __last1 && __first2 != __last2)
+ if (__comp(*__first2, *__first1))
+ {
+ iterator __next = __first2;
+ _M_transfer(__first1, __first2, ++__next);
+ __first2 = __next;
+ }
+ else
+ ++__first1;
+ if (__first2 != __last2)
+ _M_transfer(__last1, __first2, __last2);
+ }
+ }
+ template<typename _Tp, typename _Alloc>
+ void
+ list<_Tp, _Alloc>::
+ sort()
+ {
+ if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node
+ && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node)
+ {
+ list __carry;
+ list __tmp[64];
+ list * __fill = &__tmp[0];
+ list * __counter;
+ do
+ {
+ __carry.splice(__carry.begin(), *this, begin());
+ for(__counter = &__tmp[0];
+ __counter != __fill && !__counter->empty();
+ ++__counter)
+ {
+ __counter->merge(__carry);
+ __carry.swap(*__counter);
+ }
+ __carry.swap(*__counter);
+ if (__counter == __fill)
+ ++__fill;
+ }
+ while ( !empty() );
+ for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
+ __counter->merge(*(__counter - 1));
+ swap( *(__fill - 1) );
+ }
+ }
+ template<typename _Tp, typename _Alloc>
+ template <typename _Predicate>
+ void
+ list<_Tp, _Alloc>::
+ remove_if(_Predicate __pred)
+ {
+ iterator __first = begin();
+ iterator __last = end();
+ while (__first != __last)
+ {
+ iterator __next = __first;
+ ++__next;
+ if (__pred(*__first))
+ _M_erase(__first);
+ __first = __next;
+ }
+ }
+ template<typename _Tp, typename _Alloc>
+ template <typename _BinaryPredicate>
+ void
+ list<_Tp, _Alloc>::
+ unique(_BinaryPredicate __binary_pred)
+ {
+ iterator __first = begin();
+ iterator __last = end();
+ if (__first == __last)
+ return;
+ iterator __next = __first;
+ while (++__next != __last)
+ {
+ if (__binary_pred(*__first, *__next))
+ _M_erase(__next);
+ else
+ __first = __next;
+ __next = __first;
+ }
+ }
+ template<typename _Tp, typename _Alloc>
+ template <typename _StrictWeakOrdering>
+ void
+ list<_Tp, _Alloc>::
+ sort(_StrictWeakOrdering __comp)
+ {
+ if (this->_M_impl._M_node._M_next != &this->_M_impl._M_node
+ && this->_M_impl._M_node._M_next->_M_next != &this->_M_impl._M_node)
+ {
+ list __carry;
+ list __tmp[64];
+ list * __fill = &__tmp[0];
+ list * __counter;
+ do
+ {
+ __carry.splice(__carry.begin(), *this, begin());
+ for(__counter = &__tmp[0];
+ __counter != __fill && !__counter->empty();
+ ++__counter)
+ {
+ __counter->merge(__carry, __comp);
+ __carry.swap(*__counter);
+ }
+ __carry.swap(*__counter);
+ if (__counter == __fill)
+ ++__fill;
+ }
+ while ( !empty() );
+ for (__counter = &__tmp[1]; __counter != __fill; ++__counter)
+ __counter->merge(*(__counter - 1), __comp);
+ swap(*(__fill - 1));
+ }
+ }
+}
+typedef QtValidLicenseForCoreModule QtCoreModule;
+template <typename T> class QVector;
+template <typename T> class QSet;
+struct __attribute__((visibility("default"))) QListData {
+ struct Data {
+ QBasicAtomicInt ref;
+ int alloc, begin, end;
+ uint sharable : 1;
+ void *array[1];
+ };
+ enum { DataHeaderSize = sizeof(Data) - sizeof(void *) };
+ Data *detach();
+ Data *detach2();
+ void realloc(int alloc);
+ static Data shared_null;
+ Data *d;
+ void **erase(void **xi);
+ void **append();
+ void **append(const QListData &l);
+ void **prepend();
+ void **insert(int i);
+ void remove(int i);
+ void remove(int i, int n);
+ void move(int from, int to);
+ inline int size() const { return d->end - d->begin; }
+ inline bool isEmpty() const { return d->end == d->begin; }
+ inline void **at(int i) const { return d->array + d->begin + i; }
+ inline void **begin() const { return d->array + d->begin; }
+ inline void **end() const { return d->array + d->end; }
+};
+template <typename T>
+class QList
+{
+ struct Node { void *v;
+ inline T &t()
+ { return *reinterpret_cast<T*>(QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic
+ ? v : this); }
+ };
+ union { QListData p; QListData::Data *d; };
+public:
+ inline QList() : d(&QListData::shared_null) { d->ref.ref(); }
+ inline QList(const QList<T> &l) : d(l.d) { d->ref.ref(); if (!d->sharable) detach_helper(); }
+ ~QList();
+ QList<T> &operator=(const QList<T> &l);
+ bool operator==(const QList<T> &l) const;
+ inline bool operator!=(const QList<T> &l) const { return !(*this == l); }
+ inline int size() const { return p.size(); }
+ inline void detach() { if (d->ref != 1) detach_helper(); }
+ inline bool isDetached() const { return d->ref == 1; }
+ inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; }
+ inline bool isEmpty() const { return p.isEmpty(); }
+ void clear();
+ const T &at(int i) const;
+ const T &operator[](int i) const;
+ T &operator[](int i);
+ void append(const T &t);
+ void append(const QList<T> &t);
+ void prepend(const T &t);
+ void insert(int i, const T &t);
+ void replace(int i, const T &t);
+ void removeAt(int i);
+ int removeAll(const T &t);
+ bool removeOne(const T &t);
+ T takeAt(int i);
+ T takeFirst();
+ T takeLast();
+ void move(int from, int to);
+ void swap(int i, int j);
+ int indexOf(const T &t, int from = 0) const;
+ int lastIndexOf(const T &t, int from = -1) const;
+ QBool contains(const T &t) const;
+ int count(const T &t) const;
+ class const_iterator;
+ class iterator {
+ public:
+ Node *i;
+ typedef std::random_access_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef T *pointer;
+ typedef T &reference;
+ inline iterator() : i(0) {}
+ inline iterator(Node *n) : i(n) {}
+ inline iterator(const iterator &o): i(o.i){}
+ inline T &operator*() const { return i->t(); }
+ inline T *operator->() const { return &i->t(); }
+ inline T &operator[](int j) const { return i[j].t(); }
+ inline bool operator==(const iterator &o) const { return i == o.i; }
+ inline bool operator!=(const iterator &o) const { return i != o.i; }
+ inline bool operator<(const iterator& other) const { return i < other.i; }
+ inline bool operator<=(const iterator& other) const { return i <= other.i; }
+ inline bool operator>(const iterator& other) const { return i > other.i; }
+ inline bool operator>=(const iterator& other) const { return i >= other.i; }
+ inline bool operator==(const const_iterator &o) const
+ { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const
+ { return i != o.i; }
+ inline bool operator<(const const_iterator& other) const
+ { return i < other.i; }
+ inline bool operator<=(const const_iterator& other) const
+ { return i <= other.i; }
+ inline bool operator>(const const_iterator& other) const
+ { return i > other.i; }
+ inline bool operator>=(const const_iterator& other) const
+ { return i >= other.i; }
+ inline iterator &operator++() { ++i; return *this; }
+ inline iterator operator++(int) { Node *n = i; ++i; return n; }
+ inline iterator &operator--() { i--; return *this; }
+ inline iterator operator--(int) { Node *n = i; i--; return n; }
+ inline iterator &operator+=(int j) { i+=j; return *this; }
+ inline iterator &operator-=(int j) { i-=j; return *this; }
+ inline iterator operator+(int j) const { return iterator(i+j); }
+ inline iterator operator-(int j) const { return iterator(i-j); }
+ inline int operator-(iterator j) const { return i - j.i; }
+ };
+ friend class iterator;
+ class const_iterator {
+ public:
+ Node *i;
+ typedef std::random_access_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef const T *pointer;
+ typedef const T &reference;
+ inline const_iterator() : i(0) {}
+ inline const_iterator(Node *n) : i(n) {}
+ inline const_iterator(const const_iterator &o): i(o.i) {}
+ inline const_iterator(const iterator &o): i(o.i) {}
+ inline const T &operator*() const { return i->t(); }
+ inline const T *operator->() const { return &i->t(); }
+ inline const T &operator[](int j) const { return i[j].t(); }
+ inline bool operator==(const const_iterator &o) const { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const { return i != o.i; }
+ inline bool operator<(const const_iterator& other) const { return i < other.i; }
+ inline bool operator<=(const const_iterator& other) const { return i <= other.i; }
+ inline bool operator>(const const_iterator& other) const { return i > other.i; }
+ inline bool operator>=(const const_iterator& other) const { return i >= other.i; }
+ inline const_iterator &operator++() { ++i; return *this; }
+ inline const_iterator operator++(int) { Node *n = i; ++i; return n; }
+ inline const_iterator &operator--() { i--; return *this; }
+ inline const_iterator operator--(int) { Node *n = i; i--; return n; }
+ inline const_iterator &operator+=(int j) { i+=j; return *this; }
+ inline const_iterator &operator-=(int j) { i-=j; return *this; }
+ inline const_iterator operator+(int j) const { return const_iterator(i+j); }
+ inline const_iterator operator-(int j) const { return const_iterator(i-j); }
+ inline int operator-(const_iterator j) const { return i - j.i; }
+ };
+ friend class const_iterator;
+ inline iterator begin() { detach(); return reinterpret_cast<Node *>(p.begin()); }
+ inline const_iterator begin() const { return reinterpret_cast<Node *>(p.begin()); }
+ inline const_iterator constBegin() const { return reinterpret_cast<Node *>(p.begin()); }
+ inline iterator end() { detach(); return reinterpret_cast<Node *>(p.end()); }
+ inline const_iterator end() const { return reinterpret_cast<Node *>(p.end()); }
+ inline const_iterator constEnd() const { return reinterpret_cast<Node *>(p.end()); }
+ iterator insert(iterator before, const T &t);
+ iterator erase(iterator pos);
+ iterator erase(iterator first, iterator last);
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ inline int count() const { return p.size(); }
+ inline int length() const { return p.size(); }
+ inline T& first() { qt_noop(); return *begin(); }
+ inline const T& first() const { qt_noop(); return *begin(); }
+ T& last() { qt_noop(); return *(--end()); }
+ const T& last() const { qt_noop(); return *(--end()); }
+ inline void removeFirst() { qt_noop(); erase(begin()); }
+ inline void removeLast() { qt_noop(); erase(--end()); }
+ inline bool startsWith(const T &t) const { return !isEmpty() && first() == t; }
+ inline bool endsWith(const T &t) const { return !isEmpty() && last() == t; }
+ QList<T> mid(int pos, int length = -1) const;
+ T value(int i) const;
+ T value(int i, const T &defaultValue) const;
+ inline void push_back(const T &t) { append(t); }
+ inline void push_front(const T &t) { prepend(t); }
+ inline T& front() { return first(); }
+ inline const T& front() const { return first(); }
+ inline T& back() { return last(); }
+ inline const T& back() const { return last(); }
+ inline void pop_front() { removeFirst(); }
+ inline void pop_back() { removeLast(); }
+ inline bool empty() const { return isEmpty(); }
+ typedef int size_type;
+ typedef T value_type;
+ typedef value_type *pointer;
+ typedef const value_type *const_pointer;
+ typedef value_type &reference;
+ typedef const value_type &const_reference;
+ typedef ptrdiff_t difference_type;
+ QList<T> &operator+=(const QList<T> &l);
+ inline QList<T> operator+(const QList<T> &l) const
+ { QList n = *this; n += l; return n; }
+ inline QList<T> &operator+=(const T &t)
+ { append(t); return *this; }
+ inline QList<T> &operator<< (const T &t)
+ { append(t); return *this; }
+ inline QList<T> &operator<<(const QList<T> &l)
+ { *this += l; return *this; }
+ QVector<T> toVector() const;
+ QSet<T> toSet() const;
+ static QList<T> fromVector(const QVector<T> &vector);
+ static QList<T> fromSet(const QSet<T> &set);
+ static inline QList<T> fromStdList(const std::list<T> &list)
+ { QList<T> tmp; qCopy(list.begin(), list.end(), std::back_inserter(tmp)); return tmp; }
+ inline std::list<T> toStdList() const
+ { std::list<T> tmp; qCopy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; }
+private:
+ void detach_helper();
+ void free(QListData::Data *d);
+ void node_construct(Node *n, const T &t);
+ void node_destruct(Node *n);
+ void node_copy(Node *from, Node *to, Node *src);
+ void node_destruct(Node *from, Node *to);
+};
+template <typename T>
+inline void QList<T>::node_construct(Node *n, const T &t)
+{
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) n->v = new T(t);
+ else if (QTypeInfo<T>::isComplex) new (n) T(t);
+ else *reinterpret_cast<T*>(n) = t;
+}
+template <typename T>
+inline void QList<T>::node_destruct(Node *n)
+{
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) delete reinterpret_cast<T*>(n->v);
+ else if (QTypeInfo<T>::isComplex) reinterpret_cast<T*>(n)->~T();
+}
+template <typename T>
+inline void QList<T>::node_copy(Node *from, Node *to, Node *src)
+{
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic)
+ while(from != to)
+ (from++)->v = new T(*reinterpret_cast<T*>((src++)->v));
+ else if (QTypeInfo<T>::isComplex)
+ while(from != to)
+ new (from++) T(*reinterpret_cast<T*>(src++));
+}
+template <typename T>
+inline void QList<T>::node_destruct(Node *from, Node *to)
+{
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic)
+ while(from != to) --to, delete reinterpret_cast<T*>(to->v);
+ else if (QTypeInfo<T>::isComplex)
+ while (from != to) --to, reinterpret_cast<T*>(to)->~T();
+}
+template <typename T>
+inline QList<T> &QList<T>::operator=(const QList<T> &l)
+{
+ if (d != l.d) {
+ l.d->ref.ref();
+ if (!d->ref.deref())
+ free(d);
+ d = l.d;
+ if (!d->sharable)
+ detach_helper();
+ }
+ return *this;
+}
+template <typename T>
+inline typename QList<T>::iterator QList<T>::insert(iterator before, const T &t)
+{ Node *n = reinterpret_cast<Node *>(p.insert(before.i-reinterpret_cast<Node *>(p.begin())));
+ node_construct(n,t); return n; }
+template <typename T>
+inline typename QList<T>::iterator QList<T>::erase(iterator it)
+{ node_destruct(it.i);
+ return reinterpret_cast<Node *>(p.erase(reinterpret_cast<void**>(it.i))); }
+template <typename T>
+inline const T &QList<T>::at(int i) const
+{ qt_noop();
+ return reinterpret_cast<Node *>(p.at(i))->t(); }
+template <typename T>
+inline const T &QList<T>::operator[](int i) const
+{ qt_noop();
+ return reinterpret_cast<Node *>(p.at(i))->t(); }
+template <typename T>
+inline T &QList<T>::operator[](int i)
+{ qt_noop();
+ detach(); return reinterpret_cast<Node *>(p.at(i))->t(); }
+template <typename T>
+inline void QList<T>::removeAt(int i)
+{ if(i >= 0 && i < p.size()) { detach();
+ node_destruct(reinterpret_cast<Node *>(p.at(i))); p.remove(i); } }
+template <typename T>
+inline T QList<T>::takeAt(int i)
+{ qt_noop();
+ detach(); Node *n = reinterpret_cast<Node *>(p.at(i)); T t = n->t(); node_destruct(n);
+ p.remove(i); return t; }
+template <typename T>
+inline T QList<T>::takeFirst()
+{ T t = first(); removeFirst(); return t; }
+template <typename T>
+inline T QList<T>::takeLast()
+{ T t = last(); removeLast(); return t; }
+template <typename T>
+ void QList<T>::append(const T &t)
+{
+ detach();
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
+ node_construct(reinterpret_cast<Node *>(p.append()), t);
+ } else {
+ const T cpy(t);
+ node_construct(reinterpret_cast<Node *>(p.append()), cpy);
+ }
+}
+template <typename T>
+inline void QList<T>::prepend(const T &t)
+{
+ detach();
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
+ node_construct(reinterpret_cast<Node *>(p.prepend()), t);
+ } else {
+ const T cpy(t);
+ node_construct(reinterpret_cast<Node *>(p.prepend()), cpy);
+ }
+}
+template <typename T>
+inline void QList<T>::insert(int i, const T &t)
+{
+ detach();
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
+ node_construct(reinterpret_cast<Node *>(p.insert(i)), t);
+ } else {
+ const T cpy(t);
+ node_construct(reinterpret_cast<Node *>(p.insert(i)), cpy);
+ }
+}
+template <typename T>
+inline void QList<T>::replace(int i, const T &t)
+{
+ qt_noop();
+ detach();
+ if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic) {
+ reinterpret_cast<Node *>(p.at(i))->t() = t;
+ } else {
+ const T cpy(t);
+ reinterpret_cast<Node *>(p.at(i))->t() = cpy;
+ }
+}
+template <typename T>
+inline void QList<T>::swap(int i, int j)
+{
+ qt_noop();
+ detach();
+ void *t = d->array[d->begin + i];
+ d->array[d->begin + i] = d->array[d->begin + j];
+ d->array[d->begin + j] = t;
+}
+template <typename T>
+inline void QList<T>::move(int from, int to)
+{
+ qt_noop();
+ detach();
+ p.move(from, to);
+}
+template<typename T>
+ QList<T> QList<T>::mid(int pos, int alength) const
+{
+ if (alength < 0)
+ alength = size() - pos;
+ if (pos == 0 && alength == size())
+ return *this;
+ QList<T> cpy;
+ if (pos + alength > size())
+ alength = size() - pos;
+ for (int i = pos; i < pos + alength; ++i)
+ cpy += at(i);
+ return cpy;
+}
+template<typename T>
+ T QList<T>::value(int i) const
+{
+ if (i < 0 || i >= p.size()) {
+ return T();
+ }
+ return reinterpret_cast<Node *>(p.at(i))->t();
+}
+template<typename T>
+ T QList<T>::value(int i, const T& defaultValue) const
+{
+ return ((i < 0 || i >= p.size()) ? defaultValue : reinterpret_cast<Node *>(p.at(i))->t());
+}
+template <typename T>
+ void QList<T>::detach_helper()
+{
+ Node *n = reinterpret_cast<Node *>(p.begin());
+ QListData::Data *x = p.detach2();
+ node_copy(reinterpret_cast<Node *>(p.begin()), reinterpret_cast<Node *>(p.end()), n);
+ if (!x->ref.deref())
+ free(x);
+}
+template <typename T>
+ QList<T>::~QList()
+{
+ if (d && !d->ref.deref())
+ free(d);
+}
+template <typename T>
+ bool QList<T>::operator==(const QList<T> &l) const
+{
+ if (p.size() != l.p.size())
+ return false;
+ if (d == l.d)
+ return true;
+ Node *i = reinterpret_cast<Node *>(p.end());
+ Node *b = reinterpret_cast<Node *>(p.begin());
+ Node *li = reinterpret_cast<Node *>(l.p.end());
+ while (i != b) {
+ --i; --li;
+ if (!(i->t() == li->t()))
+ return false;
+ }
+ return true;
+}
+template <typename T>
+ void QList<T>::free(QListData::Data *data)
+{
+ node_destruct(reinterpret_cast<Node *>(data->array + data->begin),
+ reinterpret_cast<Node *>(data->array + data->end));
+ if (data->ref == 0)
+ qFree(data);
+}
+template <typename T>
+ void QList<T>::clear()
+{
+ *this = QList<T>();
+}
+template <typename T>
+ int QList<T>::removeAll(const T &_t)
+{
+ detach();
+ const T t = _t;
+ int removedCount=0, i=0;
+ Node *n;
+ while (i < p.size())
+ if ((n = reinterpret_cast<Node *>(p.at(i)))->t() == t) {
+ node_destruct(n);
+ p.remove(i);
+ ++removedCount;
+ } else {
+ ++i;
+ }
+ return removedCount;
+}
+template <typename T>
+ bool QList<T>::removeOne(const T &_t)
+{
+ detach();
+ int index = indexOf(_t);
+ if (index != -1) {
+ removeAt(index);
+ return true;
+ }
+ return false;
+}
+template <typename T>
+ typename QList<T>::iterator QList<T>::erase(typename QList<T>::iterator afirst,
+ typename QList<T>::iterator alast)
+{
+ for (Node *n = afirst.i; n < alast.i; ++n)
+ node_destruct(n);
+ int idx = afirst - begin();
+ p.remove(idx, alast - afirst);
+ return begin() + idx;
+}
+template <typename T>
+ QList<T> &QList<T>::operator+=(const QList<T> &l)
+{
+ detach();
+ Node *n = reinterpret_cast<Node *>(p.append(l.p));
+ node_copy(n, reinterpret_cast<Node *>(p.end()), reinterpret_cast<Node *>(l.p.begin()));
+ return *this;
+}
+template <typename T>
+inline void QList<T>::append(const QList<T> &t)
+{
+ *this += t;
+}
+template <typename T>
+ int QList<T>::indexOf(const T &t, int from) const
+{
+ if (from < 0)
+ from = qMax(from + p.size(), 0);
+ if (from < p.size()) {
+ Node *n = reinterpret_cast<Node *>(p.at(from -1));
+ Node *e = reinterpret_cast<Node *>(p.end());
+ while (++n != e)
+ if (n->t() == t)
+ return n - reinterpret_cast<Node *>(p.begin());
+ }
+ return -1;
+}
+template <typename T>
+ int QList<T>::lastIndexOf(const T &t, int from) const
+{
+ if (from < 0)
+ from += p.size();
+ else if (from >= p.size())
+ from = p.size()-1;
+ if (from >= 0) {
+ Node *b = reinterpret_cast<Node *>(p.begin());
+ Node *n = reinterpret_cast<Node *>(p.at(from + 1));
+ while (n-- != b) {
+ if (n->t() == t)
+ return n - b;
+ }
+ }
+ return -1;
+}
+template <typename T>
+ QBool QList<T>::contains(const T &t) const
+{
+ Node *b = reinterpret_cast<Node *>(p.begin());
+ Node *i = reinterpret_cast<Node *>(p.end());
+ while (i-- != b)
+ if (i->t() == t)
+ return QBool(true);
+ return QBool(false);
+}
+template <typename T>
+ int QList<T>::count(const T &t) const
+{
+ int c = 0;
+ Node *b = reinterpret_cast<Node *>(p.begin());
+ Node *i = reinterpret_cast<Node *>(p.end());
+ while (i-- != b)
+ if (i->t() == t)
+ ++c;
+ return c;
+}
+template <class T> class QListIterator { typedef typename QList<T>::const_iterator const_iterator; QList<T> c; const_iterator i; public: inline QListIterator(const QList<T> &container) : c(container), i(c.constBegin()) {} inline QListIterator &operator=(const QList<T> &container) { c = container; i = c.constBegin(); return *this; } inline void toFront() { i = c.constBegin(); } inline void toBack() { i = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline const T &next() { return *i++; } inline const T &peekNext() const { return *i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline const T &previous() { return *--i; } inline const T &peekPrevious() const { const_iterator p = i; return *--p; } inline bool findNext(const T &t) { while (i != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(--i) == t) return true; return false; } };
+template <class T> class QMutableListIterator { typedef typename QList<T>::iterator iterator; typedef typename QList<T>::const_iterator const_iterator; QList<T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableListIterator(QList<T> &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableListIterator() { c->setSharable(true); } inline QMutableListIterator &operator=(QList<T> &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = i; } inline bool hasNext() const { return c->constEnd() != const_iterator(i); } inline T &next() { n = i++; return *n; } inline T &peekNext() const { return *i; } inline bool hasPrevious() const { return c->constBegin() != const_iterator(i); } inline T &previous() { n = --i; return *n; } inline T &peekPrevious() const { iterator p = i; return *--p; } inline void remove() { if (c->constEnd() != const_iterator(n)) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) const { if (c->constEnd() != const_iterator(n)) *n = t; } inline T &value() { qt_noop(); return *n; } inline const T &value() const { qt_noop(); return *n; } inline void insert(const T &t) { n = i = c->insert(i, t); ++i; } inline bool findNext(const T &t) { while (c->constEnd() != const_iterator(n = i)) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (c->constBegin() != const_iterator(i)) if (*(n = --i) == t) return true; n = c->end(); return false; } };
+typedef QtValidLicenseForCoreModule QtCoreModule;
+namespace
+Qt {
+ enum GlobalColor {
+ color0,
+ color1,
+ black,
+ white,
+ darkGray,
+ gray,
+ lightGray,
+ red,
+ green,
+ blue,
+ cyan,
+ magenta,
+ yellow,
+ darkRed,
+ darkGreen,
+ darkBlue,
+ darkCyan,
+ darkMagenta,
+ darkYellow,
+ transparent
+ };
+ enum KeyboardModifier {
+ NoModifier = 0x00000000,
+ ShiftModifier = 0x02000000,
+ ControlModifier = 0x04000000,
+ AltModifier = 0x08000000,
+ MetaModifier = 0x10000000,
+ KeypadModifier = 0x20000000,
+ GroupSwitchModifier = 0x40000000,
+ KeyboardModifierMask = 0xfe000000
+ };
+ typedef QFlags<KeyboardModifier> KeyboardModifiers;
+ enum Modifier {
+ META = Qt::MetaModifier,
+ SHIFT = Qt::ShiftModifier,
+ CTRL = Qt::ControlModifier,
+ ALT = Qt::AltModifier,
+ MODIFIER_MASK = KeyboardModifierMask,
+ UNICODE_ACCEL = 0x00000000
+ };
+ enum MouseButton {
+ NoButton = 0x00000000,
+ LeftButton = 0x00000001,
+ RightButton = 0x00000002,
+ MidButton = 0x00000004,
+ XButton1 = 0x00000008,
+ XButton2 = 0x00000010,
+ MouseButtonMask = 0x000000ff
+ };
+ typedef QFlags<MouseButton> MouseButtons;
+ enum Orientation {
+ Horizontal = 0x1,
+ Vertical = 0x2
+ };
+ typedef QFlags<Orientation> Orientations;
+ enum FocusPolicy {
+ NoFocus = 0,
+ TabFocus = 0x1,
+ ClickFocus = 0x2,
+ StrongFocus = TabFocus | ClickFocus | 0x8,
+ WheelFocus = StrongFocus | 0x4
+ };
+ enum SortOrder {
+ AscendingOrder,
+ DescendingOrder
+ };
+ enum AlignmentFlag {
+ AlignLeft = 0x0001,
+ AlignLeading = AlignLeft,
+ AlignRight = 0x0002,
+ AlignTrailing = AlignRight,
+ AlignHCenter = 0x0004,
+ AlignJustify = 0x0008,
+ AlignAbsolute = 0x0010,
+ AlignHorizontal_Mask = AlignLeft | AlignRight | AlignHCenter | AlignJustify | AlignAbsolute,
+ AlignTop = 0x0020,
+ AlignBottom = 0x0040,
+ AlignVCenter = 0x0080,
+ AlignVertical_Mask = AlignTop | AlignBottom | AlignVCenter,
+ AlignCenter = AlignVCenter | AlignHCenter
+ };
+ typedef QFlags<AlignmentFlag> Alignment;
+ enum TextFlag {
+ TextSingleLine = 0x0100,
+ TextDontClip = 0x0200,
+ TextExpandTabs = 0x0400,
+ TextShowMnemonic = 0x0800,
+ TextWordWrap = 0x1000,
+ TextWrapAnywhere = 0x2000,
+ TextDontPrint = 0x4000,
+ TextIncludeTrailingSpaces = 0x08000000,
+ TextHideMnemonic = 0x8000,
+ TextJustificationForced = 0x10000,
+ TextForceLeftToRight = 0x20000,
+ TextForceRightToLeft = 0x40000
+ };
+ enum TextElideMode {
+ ElideLeft,
+ ElideRight,
+ ElideMiddle,
+ ElideNone
+ };
+ enum WindowType {
+ Widget = 0x00000000,
+ Window = 0x00000001,
+ Dialog = 0x00000002 | Window,
+ Sheet = 0x00000004 | Window,
+ Drawer = 0x00000006 | Window,
+ Popup = 0x00000008 | Window,
+ Tool = 0x0000000a | Window,
+ ToolTip = 0x0000000c | Window,
+ SplashScreen = 0x0000000e | Window,
+ Desktop = 0x00000010 | Window,
+ SubWindow = 0x00000012,
+ WindowType_Mask = 0x000000ff,
+ MSWindowsFixedSizeDialogHint = 0x00000100,
+ MSWindowsOwnDC = 0x00000200,
+ X11BypassWindowManagerHint = 0x00000400,
+ FramelessWindowHint = 0x00000800,
+ WindowTitleHint = 0x00001000,
+ WindowSystemMenuHint = 0x00002000,
+ WindowMinimizeButtonHint = 0x00004000,
+ WindowMaximizeButtonHint = 0x00008000,
+ WindowMinMaxButtonsHint = WindowMinimizeButtonHint | WindowMaximizeButtonHint,
+ WindowContextHelpButtonHint = 0x00010000,
+ WindowShadeButtonHint = 0x00020000,
+ WindowStaysOnTopHint = 0x00040000,
+ CustomizeWindowHint = 0x02000000,
+ WindowStaysOnBottomHint = 0x04000000,
+ WindowCloseButtonHint = 0x08000000,
+ MacWindowToolBarButtonHint = 0x10000000,
+ BypassGraphicsProxyWidget = 0x20000000,
+ WindowOkButtonHint = 0x00080000,
+ WindowCancelButtonHint = 0x00100000
+ };
+ typedef QFlags<WindowType> WindowFlags;
+ enum WindowState {
+ WindowNoState = 0x00000000,
+ WindowMinimized = 0x00000001,
+ WindowMaximized = 0x00000002,
+ WindowFullScreen = 0x00000004,
+ WindowActive = 0x00000008
+ };
+ typedef QFlags<WindowState> WindowStates;
+ enum WidgetAttribute {
+ WA_Disabled = 0,
+ WA_UnderMouse = 1,
+ WA_MouseTracking = 2,
+ WA_ContentsPropagated = 3,
+ WA_OpaquePaintEvent = 4,
+ WA_NoBackground = WA_OpaquePaintEvent,
+ WA_StaticContents = 5,
+ WA_LaidOut = 7,
+ WA_PaintOnScreen = 8,
+ WA_NoSystemBackground = 9,
+ WA_UpdatesDisabled = 10,
+ WA_Mapped = 11,
+ WA_MacNoClickThrough = 12,
+ WA_PaintOutsidePaintEvent = 13,
+ WA_InputMethodEnabled = 14,
+ WA_WState_Visible = 15,
+ WA_WState_Hidden = 16,
+ WA_ForceDisabled = 32,
+ WA_KeyCompression = 33,
+ WA_PendingMoveEvent = 34,
+ WA_PendingResizeEvent = 35,
+ WA_SetPalette = 36,
+ WA_SetFont = 37,
+ WA_SetCursor = 38,
+ WA_NoChildEventsFromChildren = 39,
+ WA_WindowModified = 41,
+ WA_Resized = 42,
+ WA_Moved = 43,
+ WA_PendingUpdate = 44,
+ WA_InvalidSize = 45,
+ WA_MacBrushedMetal = 46,
+ WA_MacMetalStyle = WA_MacBrushedMetal,
+ WA_CustomWhatsThis = 47,
+ WA_LayoutOnEntireRect = 48,
+ WA_OutsideWSRange = 49,
+ WA_GrabbedShortcut = 50,
+ WA_TransparentForMouseEvents = 51,
+ WA_PaintUnclipped = 52,
+ WA_SetWindowIcon = 53,
+ WA_NoMouseReplay = 54,
+ WA_DeleteOnClose = 55,
+ WA_RightToLeft = 56,
+ WA_SetLayoutDirection = 57,
+ WA_NoChildEventsForParent = 58,
+ WA_ForceUpdatesDisabled = 59,
+ WA_WState_Created = 60,
+ WA_WState_CompressKeys = 61,
+ WA_WState_InPaintEvent = 62,
+ WA_WState_Reparented = 63,
+ WA_WState_ConfigPending = 64,
+ WA_WState_Polished = 66,
+ WA_WState_DND = 67,
+ WA_WState_OwnSizePolicy = 68,
+ WA_WState_ExplicitShowHide = 69,
+ WA_ShowModal = 70,
+ WA_MouseNoMask = 71,
+ WA_GroupLeader = 72,
+ WA_NoMousePropagation = 73,
+ WA_Hover = 74,
+ WA_InputMethodTransparent = 75,
+ WA_QuitOnClose = 76,
+ WA_KeyboardFocusChange = 77,
+ WA_AcceptDrops = 78,
+ WA_DropSiteRegistered = 79,
+ WA_ForceAcceptDrops = WA_DropSiteRegistered,
+ WA_WindowPropagation = 80,
+ WA_NoX11EventCompression = 81,
+ WA_TintedBackground = 82,
+ WA_X11OpenGLOverlay = 83,
+ WA_AlwaysShowToolTips = 84,
+ WA_MacOpaqueSizeGrip = 85,
+ WA_SetStyle = 86,
+ WA_SetLocale = 87,
+ WA_MacShowFocusRect = 88,
+ WA_MacNormalSize = 89,
+ WA_MacSmallSize = 90,
+ WA_MacMiniSize = 91,
+ WA_LayoutUsesWidgetRect = 92,
+ WA_StyledBackground = 93,
+ WA_MSWindowsUseDirect3D = 94,
+ WA_CanHostQMdiSubWindowTitleBar = 95,
+ WA_MacAlwaysShowToolWindow = 96,
+ WA_StyleSheet = 97,
+ WA_ShowWithoutActivating = 98,
+ WA_X11BypassTransientForHint = 99,
+ WA_NativeWindow = 100,
+ WA_DontCreateNativeAncestors = 101,
+ WA_MacVariableSize = 102,
+ WA_DontShowOnScreen = 103,
+ WA_X11NetWmWindowTypeDesktop = 104,
+ WA_X11NetWmWindowTypeDock = 105,
+ WA_X11NetWmWindowTypeToolBar = 106,
+ WA_X11NetWmWindowTypeMenu = 107,
+ WA_X11NetWmWindowTypeUtility = 108,
+ WA_X11NetWmWindowTypeSplash = 109,
+ WA_X11NetWmWindowTypeDialog = 110,
+ WA_X11NetWmWindowTypeDropDownMenu = 111,
+ WA_X11NetWmWindowTypePopupMenu = 112,
+ WA_X11NetWmWindowTypeToolTip = 113,
+ WA_X11NetWmWindowTypeNotification = 114,
+ WA_X11NetWmWindowTypeCombo = 115,
+ WA_X11NetWmWindowTypeDND = 116,
+ WA_MacFrameworkScaled = 117,
+ WA_SetWindowModality = 118,
+ WA_WState_WindowOpacitySet = 119,
+ WA_TranslucentBackground = 120,
+ WA_AttributeCount
+ };
+ enum ApplicationAttribute
+ {
+ AA_ImmediateWidgetCreation = 0,
+ AA_MSWindowsUseDirect3DByDefault = 1,
+ AA_DontShowIconsInMenus = 2,
+ AA_NativeWindows = 3,
+ AA_DontCreateNativeWidgetSiblings = 4,
+ AA_MacPluginApplication = 5,
+ AA_AttributeCount
+ };
+ enum ImageConversionFlag {
+ ColorMode_Mask = 0x00000003,
+ AutoColor = 0x00000000,
+ ColorOnly = 0x00000003,
+ MonoOnly = 0x00000002,
+ AlphaDither_Mask = 0x0000000c,
+ ThresholdAlphaDither = 0x00000000,
+ OrderedAlphaDither = 0x00000004,
+ DiffuseAlphaDither = 0x00000008,
+ NoAlpha = 0x0000000c,
+ Dither_Mask = 0x00000030,
+ DiffuseDither = 0x00000000,
+ OrderedDither = 0x00000010,
+ ThresholdDither = 0x00000020,
+ DitherMode_Mask = 0x000000c0,
+ AutoDither = 0x00000000,
+ PreferDither = 0x00000040,
+ AvoidDither = 0x00000080,
+ NoOpaqueDetection = 0x00000100
+ };
+ typedef QFlags<ImageConversionFlag> ImageConversionFlags;
+ enum BGMode {
+ TransparentMode,
+ OpaqueMode
+ };
+ enum Key {
+ Key_Escape = 0x01000000,
+ Key_Tab = 0x01000001,
+ Key_Backtab = 0x01000002,
+ Key_Backspace = 0x01000003,
+ Key_Return = 0x01000004,
+ Key_Enter = 0x01000005,
+ Key_Insert = 0x01000006,
+ Key_Delete = 0x01000007,
+ Key_Pause = 0x01000008,
+ Key_Print = 0x01000009,
+ Key_SysReq = 0x0100000a,
+ Key_Clear = 0x0100000b,
+ Key_Home = 0x01000010,
+ Key_End = 0x01000011,
+ Key_Left = 0x01000012,
+ Key_Up = 0x01000013,
+ Key_Right = 0x01000014,
+ Key_Down = 0x01000015,
+ Key_PageUp = 0x01000016,
+ Key_PageDown = 0x01000017,
+ Key_Shift = 0x01000020,
+ Key_Control = 0x01000021,
+ Key_Meta = 0x01000022,
+ Key_Alt = 0x01000023,
+ Key_CapsLock = 0x01000024,
+ Key_NumLock = 0x01000025,
+ Key_ScrollLock = 0x01000026,
+ Key_F1 = 0x01000030,
+ Key_F2 = 0x01000031,
+ Key_F3 = 0x01000032,
+ Key_F4 = 0x01000033,
+ Key_F5 = 0x01000034,
+ Key_F6 = 0x01000035,
+ Key_F7 = 0x01000036,
+ Key_F8 = 0x01000037,
+ Key_F9 = 0x01000038,
+ Key_F10 = 0x01000039,
+ Key_F11 = 0x0100003a,
+ Key_F12 = 0x0100003b,
+ Key_F13 = 0x0100003c,
+ Key_F14 = 0x0100003d,
+ Key_F15 = 0x0100003e,
+ Key_F16 = 0x0100003f,
+ Key_F17 = 0x01000040,
+ Key_F18 = 0x01000041,
+ Key_F19 = 0x01000042,
+ Key_F20 = 0x01000043,
+ Key_F21 = 0x01000044,
+ Key_F22 = 0x01000045,
+ Key_F23 = 0x01000046,
+ Key_F24 = 0x01000047,
+ Key_F25 = 0x01000048,
+ Key_F26 = 0x01000049,
+ Key_F27 = 0x0100004a,
+ Key_F28 = 0x0100004b,
+ Key_F29 = 0x0100004c,
+ Key_F30 = 0x0100004d,
+ Key_F31 = 0x0100004e,
+ Key_F32 = 0x0100004f,
+ Key_F33 = 0x01000050,
+ Key_F34 = 0x01000051,
+ Key_F35 = 0x01000052,
+ Key_Super_L = 0x01000053,
+ Key_Super_R = 0x01000054,
+ Key_Menu = 0x01000055,
+ Key_Hyper_L = 0x01000056,
+ Key_Hyper_R = 0x01000057,
+ Key_Help = 0x01000058,
+ Key_Direction_L = 0x01000059,
+ Key_Direction_R = 0x01000060,
+ Key_Space = 0x20,
+ Key_Any = Key_Space,
+ Key_Exclam = 0x21,
+ Key_QuoteDbl = 0x22,
+ Key_NumberSign = 0x23,
+ Key_Dollar = 0x24,
+ Key_Percent = 0x25,
+ Key_Ampersand = 0x26,
+ Key_Apostrophe = 0x27,
+ Key_ParenLeft = 0x28,
+ Key_ParenRight = 0x29,
+ Key_Asterisk = 0x2a,
+ Key_Plus = 0x2b,
+ Key_Comma = 0x2c,
+ Key_Minus = 0x2d,
+ Key_Period = 0x2e,
+ Key_Slash = 0x2f,
+ Key_0 = 0x30,
+ Key_1 = 0x31,
+ Key_2 = 0x32,
+ Key_3 = 0x33,
+ Key_4 = 0x34,
+ Key_5 = 0x35,
+ Key_6 = 0x36,
+ Key_7 = 0x37,
+ Key_8 = 0x38,
+ Key_9 = 0x39,
+ Key_Colon = 0x3a,
+ Key_Semicolon = 0x3b,
+ Key_Less = 0x3c,
+ Key_Equal = 0x3d,
+ Key_Greater = 0x3e,
+ Key_Question = 0x3f,
+ Key_At = 0x40,
+ Key_A = 0x41,
+ Key_B = 0x42,
+ Key_C = 0x43,
+ Key_D = 0x44,
+ Key_E = 0x45,
+ Key_F = 0x46,
+ Key_G = 0x47,
+ Key_H = 0x48,
+ Key_I = 0x49,
+ Key_J = 0x4a,
+ Key_K = 0x4b,
+ Key_L = 0x4c,
+ Key_M = 0x4d,
+ Key_N = 0x4e,
+ Key_O = 0x4f,
+ Key_P = 0x50,
+ Key_Q = 0x51,
+ Key_R = 0x52,
+ Key_S = 0x53,
+ Key_T = 0x54,
+ Key_U = 0x55,
+ Key_V = 0x56,
+ Key_W = 0x57,
+ Key_X = 0x58,
+ Key_Y = 0x59,
+ Key_Z = 0x5a,
+ Key_BracketLeft = 0x5b,
+ Key_Backslash = 0x5c,
+ Key_BracketRight = 0x5d,
+ Key_AsciiCircum = 0x5e,
+ Key_Underscore = 0x5f,
+ Key_QuoteLeft = 0x60,
+ Key_BraceLeft = 0x7b,
+ Key_Bar = 0x7c,
+ Key_BraceRight = 0x7d,
+ Key_AsciiTilde = 0x7e,
+ Key_nobreakspace = 0x0a0,
+ Key_exclamdown = 0x0a1,
+ Key_cent = 0x0a2,
+ Key_sterling = 0x0a3,
+ Key_currency = 0x0a4,
+ Key_yen = 0x0a5,
+ Key_brokenbar = 0x0a6,
+ Key_section = 0x0a7,
+ Key_diaeresis = 0x0a8,
+ Key_copyright = 0x0a9,
+ Key_ordfeminine = 0x0aa,
+ Key_guillemotleft = 0x0ab,
+ Key_notsign = 0x0ac,
+ Key_hyphen = 0x0ad,
+ Key_registered = 0x0ae,
+ Key_macron = 0x0af,
+ Key_degree = 0x0b0,
+ Key_plusminus = 0x0b1,
+ Key_twosuperior = 0x0b2,
+ Key_threesuperior = 0x0b3,
+ Key_acute = 0x0b4,
+ Key_mu = 0x0b5,
+ Key_paragraph = 0x0b6,
+ Key_periodcentered = 0x0b7,
+ Key_cedilla = 0x0b8,
+ Key_onesuperior = 0x0b9,
+ Key_masculine = 0x0ba,
+ Key_guillemotright = 0x0bb,
+ Key_onequarter = 0x0bc,
+ Key_onehalf = 0x0bd,
+ Key_threequarters = 0x0be,
+ Key_questiondown = 0x0bf,
+ Key_Agrave = 0x0c0,
+ Key_Aacute = 0x0c1,
+ Key_Acircumflex = 0x0c2,
+ Key_Atilde = 0x0c3,
+ Key_Adiaeresis = 0x0c4,
+ Key_Aring = 0x0c5,
+ Key_AE = 0x0c6,
+ Key_Ccedilla = 0x0c7,
+ Key_Egrave = 0x0c8,
+ Key_Eacute = 0x0c9,
+ Key_Ecircumflex = 0x0ca,
+ Key_Ediaeresis = 0x0cb,
+ Key_Igrave = 0x0cc,
+ Key_Iacute = 0x0cd,
+ Key_Icircumflex = 0x0ce,
+ Key_Idiaeresis = 0x0cf,
+ Key_ETH = 0x0d0,
+ Key_Ntilde = 0x0d1,
+ Key_Ograve = 0x0d2,
+ Key_Oacute = 0x0d3,
+ Key_Ocircumflex = 0x0d4,
+ Key_Otilde = 0x0d5,
+ Key_Odiaeresis = 0x0d6,
+ Key_multiply = 0x0d7,
+ Key_Ooblique = 0x0d8,
+ Key_Ugrave = 0x0d9,
+ Key_Uacute = 0x0da,
+ Key_Ucircumflex = 0x0db,
+ Key_Udiaeresis = 0x0dc,
+ Key_Yacute = 0x0dd,
+ Key_THORN = 0x0de,
+ Key_ssharp = 0x0df,
+ Key_division = 0x0f7,
+ Key_ydiaeresis = 0x0ff,
+ Key_AltGr = 0x01001103,
+ Key_Multi_key = 0x01001120,
+ Key_Codeinput = 0x01001137,
+ Key_SingleCandidate = 0x0100113c,
+ Key_MultipleCandidate = 0x0100113d,
+ Key_PreviousCandidate = 0x0100113e,
+ Key_Mode_switch = 0x0100117e,
+ Key_Kanji = 0x01001121,
+ Key_Muhenkan = 0x01001122,
+ Key_Henkan = 0x01001123,
+ Key_Romaji = 0x01001124,
+ Key_Hiragana = 0x01001125,
+ Key_Katakana = 0x01001126,
+ Key_Hiragana_Katakana = 0x01001127,
+ Key_Zenkaku = 0x01001128,
+ Key_Hankaku = 0x01001129,
+ Key_Zenkaku_Hankaku = 0x0100112a,
+ Key_Touroku = 0x0100112b,
+ Key_Massyo = 0x0100112c,
+ Key_Kana_Lock = 0x0100112d,
+ Key_Kana_Shift = 0x0100112e,
+ Key_Eisu_Shift = 0x0100112f,
+ Key_Eisu_toggle = 0x01001130,
+ Key_Hangul = 0x01001131,
+ Key_Hangul_Start = 0x01001132,
+ Key_Hangul_End = 0x01001133,
+ Key_Hangul_Hanja = 0x01001134,
+ Key_Hangul_Jamo = 0x01001135,
+ Key_Hangul_Romaja = 0x01001136,
+ Key_Hangul_Jeonja = 0x01001138,
+ Key_Hangul_Banja = 0x01001139,
+ Key_Hangul_PreHanja = 0x0100113a,
+ Key_Hangul_PostHanja = 0x0100113b,
+ Key_Hangul_Special = 0x0100113f,
+ Key_Dead_Grave = 0x01001250,
+ Key_Dead_Acute = 0x01001251,
+ Key_Dead_Circumflex = 0x01001252,
+ Key_Dead_Tilde = 0x01001253,
+ Key_Dead_Macron = 0x01001254,
+ Key_Dead_Breve = 0x01001255,
+ Key_Dead_Abovedot = 0x01001256,
+ Key_Dead_Diaeresis = 0x01001257,
+ Key_Dead_Abovering = 0x01001258,
+ Key_Dead_Doubleacute = 0x01001259,
+ Key_Dead_Caron = 0x0100125a,
+ Key_Dead_Cedilla = 0x0100125b,
+ Key_Dead_Ogonek = 0x0100125c,
+ Key_Dead_Iota = 0x0100125d,
+ Key_Dead_Voiced_Sound = 0x0100125e,
+ Key_Dead_Semivoiced_Sound = 0x0100125f,
+ Key_Dead_Belowdot = 0x01001260,
+ Key_Dead_Hook = 0x01001261,
+ Key_Dead_Horn = 0x01001262,
+ Key_Back = 0x01000061,
+ Key_Forward = 0x01000062,
+ Key_Stop = 0x01000063,
+ Key_Refresh = 0x01000064,
+ Key_VolumeDown = 0x01000070,
+ Key_VolumeMute = 0x01000071,
+ Key_VolumeUp = 0x01000072,
+ Key_BassBoost = 0x01000073,
+ Key_BassUp = 0x01000074,
+ Key_BassDown = 0x01000075,
+ Key_TrebleUp = 0x01000076,
+ Key_TrebleDown = 0x01000077,
+ Key_MediaPlay = 0x01000080,
+ Key_MediaStop = 0x01000081,
+ Key_MediaPrevious = 0x01000082,
+ Key_MediaNext = 0x01000083,
+ Key_MediaRecord = 0x01000084,
+ Key_HomePage = 0x01000090,
+ Key_Favorites = 0x01000091,
+ Key_Search = 0x01000092,
+ Key_Standby = 0x01000093,
+ Key_OpenUrl = 0x01000094,
+ Key_LaunchMail = 0x010000a0,
+ Key_LaunchMedia = 0x010000a1,
+ Key_Launch0 = 0x010000a2,
+ Key_Launch1 = 0x010000a3,
+ Key_Launch2 = 0x010000a4,
+ Key_Launch3 = 0x010000a5,
+ Key_Launch4 = 0x010000a6,
+ Key_Launch5 = 0x010000a7,
+ Key_Launch6 = 0x010000a8,
+ Key_Launch7 = 0x010000a9,
+ Key_Launch8 = 0x010000aa,
+ Key_Launch9 = 0x010000ab,
+ Key_LaunchA = 0x010000ac,
+ Key_LaunchB = 0x010000ad,
+ Key_LaunchC = 0x010000ae,
+ Key_LaunchD = 0x010000af,
+ Key_LaunchE = 0x010000b0,
+ Key_LaunchF = 0x010000b1,
+ Key_MediaLast = 0x0100ffff,
+ Key_Select = 0x01010000,
+ Key_Yes = 0x01010001,
+ Key_No = 0x01010002,
+ Key_Cancel = 0x01020001,
+ Key_Printer = 0x01020002,
+ Key_Execute = 0x01020003,
+ Key_Sleep = 0x01020004,
+ Key_Play = 0x01020005,
+ Key_Zoom = 0x01020006,
+ Key_Context1 = 0x01100000,
+ Key_Context2 = 0x01100001,
+ Key_Context3 = 0x01100002,
+ Key_Context4 = 0x01100003,
+ Key_Call = 0x01100004,
+ Key_Hangup = 0x01100005,
+ Key_Flip = 0x01100006,
+ Key_unknown = 0x01ffffff
+ };
+ enum ArrowType {
+ NoArrow,
+ UpArrow,
+ DownArrow,
+ LeftArrow,
+ RightArrow
+ };
+ enum PenStyle {
+ NoPen,
+ SolidLine,
+ DashLine,
+ DotLine,
+ DashDotLine,
+ DashDotDotLine,
+ CustomDashLine
+ , MPenStyle = 0x0f
+ };
+ enum PenCapStyle {
+ FlatCap = 0x00,
+ SquareCap = 0x10,
+ RoundCap = 0x20,
+ MPenCapStyle = 0x30
+ };
+ enum PenJoinStyle {
+ MiterJoin = 0x00,
+ BevelJoin = 0x40,
+ RoundJoin = 0x80,
+ SvgMiterJoin = 0x100,
+ MPenJoinStyle = 0x1c0
+ };
+ enum BrushStyle {
+ NoBrush,
+ SolidPattern,
+ Dense1Pattern,
+ Dense2Pattern,
+ Dense3Pattern,
+ Dense4Pattern,
+ Dense5Pattern,
+ Dense6Pattern,
+ Dense7Pattern,
+ HorPattern,
+ VerPattern,
+ CrossPattern,
+ BDiagPattern,
+ FDiagPattern,
+ DiagCrossPattern,
+ LinearGradientPattern,
+ RadialGradientPattern,
+ ConicalGradientPattern,
+ TexturePattern = 24
+ };
+ enum SizeMode {
+ AbsoluteSize,
+ RelativeSize
+ };
+ enum UIEffect {
+ UI_General,
+ UI_AnimateMenu,
+ UI_FadeMenu,
+ UI_AnimateCombo,
+ UI_AnimateTooltip,
+ UI_FadeTooltip,
+ UI_AnimateToolBox
+ };
+ enum CursorShape {
+ ArrowCursor,
+ UpArrowCursor,
+ CrossCursor,
+ WaitCursor,
+ IBeamCursor,
+ SizeVerCursor,
+ SizeHorCursor,
+ SizeBDiagCursor,
+ SizeFDiagCursor,
+ SizeAllCursor,
+ BlankCursor,
+ SplitVCursor,
+ SplitHCursor,
+ PointingHandCursor,
+ ForbiddenCursor,
+ WhatsThisCursor,
+ BusyCursor,
+ OpenHandCursor,
+ ClosedHandCursor,
+ LastCursor = ClosedHandCursor,
+ BitmapCursor = 24,
+ CustomCursor = 25
+ };
+ enum TextFormat {
+ PlainText,
+ RichText,
+ AutoText,
+ LogText
+ };
+ enum AspectRatioMode {
+ IgnoreAspectRatio,
+ KeepAspectRatio,
+ KeepAspectRatioByExpanding
+ };
+ enum AnchorAttribute {
+ AnchorName,
+ AnchorHref
+ };
+ enum DockWidgetArea {
+ LeftDockWidgetArea = 0x1,
+ RightDockWidgetArea = 0x2,
+ TopDockWidgetArea = 0x4,
+ BottomDockWidgetArea = 0x8,
+ DockWidgetArea_Mask = 0xf,
+ AllDockWidgetAreas = DockWidgetArea_Mask,
+ NoDockWidgetArea = 0
+ };
+ enum DockWidgetAreaSizes {
+ NDockWidgetAreas = 4
+ };
+ typedef QFlags<DockWidgetArea> DockWidgetAreas;
+ enum ToolBarArea {
+ LeftToolBarArea = 0x1,
+ RightToolBarArea = 0x2,
+ TopToolBarArea = 0x4,
+ BottomToolBarArea = 0x8,
+ ToolBarArea_Mask = 0xf,
+ AllToolBarAreas = ToolBarArea_Mask,
+ NoToolBarArea = 0
+ };
+ enum ToolBarAreaSizes {
+ NToolBarAreas = 4
+ };
+ typedef QFlags<ToolBarArea> ToolBarAreas;
+ enum DateFormat {
+ TextDate,
+ ISODate,
+ SystemLocaleDate,
+ LocalDate = SystemLocaleDate,
+ LocaleDate,
+ SystemLocaleShortDate,
+ SystemLocaleLongDate,
+ DefaultLocaleShortDate,
+ DefaultLocaleLongDate
+ };
+ enum TimeSpec {
+ LocalTime,
+ UTC,
+ OffsetFromUTC
+ };
+ enum DayOfWeek {
+ Monday = 1,
+ Tuesday = 2,
+ Wednesday = 3,
+ Thursday = 4,
+ Friday = 5,
+ Saturday = 6,
+ Sunday = 7
+ };
+ enum ScrollBarPolicy {
+ ScrollBarAsNeeded,
+ ScrollBarAlwaysOff,
+ ScrollBarAlwaysOn
+ };
+ enum CaseSensitivity {
+ CaseInsensitive,
+ CaseSensitive
+ };
+ enum Corner {
+ TopLeftCorner = 0x00000,
+ TopRightCorner = 0x00001,
+ BottomLeftCorner = 0x00002,
+ BottomRightCorner = 0x00003
+ };
+ enum ConnectionType {
+ AutoConnection,
+ DirectConnection,
+ QueuedConnection,
+ AutoCompatConnection,
+ BlockingQueuedConnection
+ };
+ enum ShortcutContext {
+ WidgetShortcut,
+ WindowShortcut,
+ ApplicationShortcut,
+ WidgetWithChildrenShortcut
+ };
+ enum FillRule {
+ OddEvenFill,
+ WindingFill
+ };
+ enum MaskMode {
+ MaskInColor,
+ MaskOutColor
+ };
+ enum ClipOperation {
+ NoClip,
+ ReplaceClip,
+ IntersectClip,
+ UniteClip
+ };
+ enum ItemSelectionMode {
+ ContainsItemShape = 0x0,
+ IntersectsItemShape = 0x1,
+ ContainsItemBoundingRect = 0x2,
+ IntersectsItemBoundingRect = 0x3
+ };
+ enum TransformationMode {
+ FastTransformation,
+ SmoothTransformation
+ };
+ enum Axis {
+ XAxis,
+ YAxis,
+ ZAxis
+ };
+ enum FocusReason {
+ MouseFocusReason,
+ TabFocusReason,
+ BacktabFocusReason,
+ ActiveWindowFocusReason,
+ PopupFocusReason,
+ ShortcutFocusReason,
+ MenuBarFocusReason,
+ OtherFocusReason,
+ NoFocusReason
+ };
+ enum ContextMenuPolicy {
+ NoContextMenu,
+ DefaultContextMenu,
+ ActionsContextMenu,
+ CustomContextMenu,
+ PreventContextMenu
+ };
+ enum InputMethodQuery {
+ ImMicroFocus,
+ ImFont,
+ ImCursorPosition,
+ ImSurroundingText,
+ ImCurrentSelection
+ };
+ enum ToolButtonStyle {
+ ToolButtonIconOnly,
+ ToolButtonTextOnly,
+ ToolButtonTextBesideIcon,
+ ToolButtonTextUnderIcon
+ };
+ enum LayoutDirection {
+ LeftToRight,
+ RightToLeft
+ };
+ enum DropAction {
+ CopyAction = 0x1,
+ MoveAction = 0x2,
+ LinkAction = 0x4,
+ ActionMask = 0xff,
+ TargetMoveAction = 0x8002,
+ IgnoreAction = 0x0
+ };
+ typedef QFlags<DropAction> DropActions;
+ enum CheckState {
+ Unchecked,
+ PartiallyChecked,
+ Checked
+ };
+ enum ItemDataRole {
+ DisplayRole = 0,
+ DecorationRole = 1,
+ EditRole = 2,
+ ToolTipRole = 3,
+ StatusTipRole = 4,
+ WhatsThisRole = 5,
+ FontRole = 6,
+ TextAlignmentRole = 7,
+ BackgroundColorRole = 8,
+ BackgroundRole = 8,
+ TextColorRole = 9,
+ ForegroundRole = 9,
+ CheckStateRole = 10,
+ AccessibleTextRole = 11,
+ AccessibleDescriptionRole = 12,
+ SizeHintRole = 13,
+ DisplayPropertyRole = 27,
+ DecorationPropertyRole = 28,
+ ToolTipPropertyRole = 29,
+ StatusTipPropertyRole = 30,
+ WhatsThisPropertyRole = 31,
+ UserRole = 32
+ };
+ enum ItemFlag {
+ NoItemFlags = 0,
+ ItemIsSelectable = 1,
+ ItemIsEditable = 2,
+ ItemIsDragEnabled = 4,
+ ItemIsDropEnabled = 8,
+ ItemIsUserCheckable = 16,
+ ItemIsEnabled = 32,
+ ItemIsTristate = 64
+ };
+ typedef QFlags<ItemFlag> ItemFlags;
+ enum MatchFlag {
+ MatchExactly = 0,
+ MatchContains = 1,
+ MatchStartsWith = 2,
+ MatchEndsWith = 3,
+ MatchRegExp = 4,
+ MatchWildcard = 5,
+ MatchFixedString = 8,
+ MatchCaseSensitive = 16,
+ MatchWrap = 32,
+ MatchRecursive = 64
+ };
+ typedef QFlags<MatchFlag> MatchFlags;
+ typedef void * HANDLE;
+ typedef WindowFlags WFlags;
+ enum WindowModality {
+ NonModal,
+ WindowModal,
+ ApplicationModal
+ };
+ enum TextInteractionFlag {
+ NoTextInteraction = 0,
+ TextSelectableByMouse = 1,
+ TextSelectableByKeyboard = 2,
+ LinksAccessibleByMouse = 4,
+ LinksAccessibleByKeyboard = 8,
+ TextEditable = 16,
+ TextEditorInteraction = TextSelectableByMouse | TextSelectableByKeyboard | TextEditable,
+ TextBrowserInteraction = TextSelectableByMouse | LinksAccessibleByMouse | LinksAccessibleByKeyboard
+ };
+ typedef QFlags<TextInteractionFlag> TextInteractionFlags;
+ enum EventPriority {
+ HighEventPriority = 1,
+ NormalEventPriority = 0,
+ LowEventPriority = -1
+ };
+ enum SizeHint {
+ MinimumSize,
+ PreferredSize,
+ MaximumSize,
+ MinimumDescent,
+ NSizeHints
+ };
+ enum WindowFrameSection {
+ NoSection,
+ LeftSection,
+ TopLeftSection,
+ TopSection,
+ TopRightSection,
+ RightSection,
+ BottomRightSection,
+ BottomSection,
+ BottomLeftSection,
+ TitleBarArea
+ };
+}
+inline QFlags<Qt::MouseButtons::enum_type> operator|(Qt::MouseButtons::enum_type f1, Qt::MouseButtons::enum_type f2) { return QFlags<Qt::MouseButtons::enum_type>(f1) | f2; } inline QFlags<Qt::MouseButtons::enum_type> operator|(Qt::MouseButtons::enum_type f1, QFlags<Qt::MouseButtons::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::MouseButtons::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::Orientations::enum_type> operator|(Qt::Orientations::enum_type f1, Qt::Orientations::enum_type f2) { return QFlags<Qt::Orientations::enum_type>(f1) | f2; } inline QFlags<Qt::Orientations::enum_type> operator|(Qt::Orientations::enum_type f1, QFlags<Qt::Orientations::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::Orientations::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::KeyboardModifiers::enum_type> operator|(Qt::KeyboardModifiers::enum_type f1, Qt::KeyboardModifiers::enum_type f2) { return QFlags<Qt::KeyboardModifiers::enum_type>(f1) | f2; } inline QFlags<Qt::KeyboardModifiers::enum_type> operator|(Qt::KeyboardModifiers::enum_type f1, QFlags<Qt::KeyboardModifiers::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::KeyboardModifiers::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::WindowFlags::enum_type> operator|(Qt::WindowFlags::enum_type f1, Qt::WindowFlags::enum_type f2) { return QFlags<Qt::WindowFlags::enum_type>(f1) | f2; } inline QFlags<Qt::WindowFlags::enum_type> operator|(Qt::WindowFlags::enum_type f1, QFlags<Qt::WindowFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::WindowFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::Alignment::enum_type> operator|(Qt::Alignment::enum_type f1, Qt::Alignment::enum_type f2) { return QFlags<Qt::Alignment::enum_type>(f1) | f2; } inline QFlags<Qt::Alignment::enum_type> operator|(Qt::Alignment::enum_type f1, QFlags<Qt::Alignment::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::Alignment::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::ImageConversionFlags::enum_type> operator|(Qt::ImageConversionFlags::enum_type f1, Qt::ImageConversionFlags::enum_type f2) { return QFlags<Qt::ImageConversionFlags::enum_type>(f1) | f2; } inline QFlags<Qt::ImageConversionFlags::enum_type> operator|(Qt::ImageConversionFlags::enum_type f1, QFlags<Qt::ImageConversionFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::ImageConversionFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::DockWidgetAreas::enum_type> operator|(Qt::DockWidgetAreas::enum_type f1, Qt::DockWidgetAreas::enum_type f2) { return QFlags<Qt::DockWidgetAreas::enum_type>(f1) | f2; } inline QFlags<Qt::DockWidgetAreas::enum_type> operator|(Qt::DockWidgetAreas::enum_type f1, QFlags<Qt::DockWidgetAreas::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::DockWidgetAreas::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::ToolBarAreas::enum_type> operator|(Qt::ToolBarAreas::enum_type f1, Qt::ToolBarAreas::enum_type f2) { return QFlags<Qt::ToolBarAreas::enum_type>(f1) | f2; } inline QFlags<Qt::ToolBarAreas::enum_type> operator|(Qt::ToolBarAreas::enum_type f1, QFlags<Qt::ToolBarAreas::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::ToolBarAreas::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::WindowStates::enum_type> operator|(Qt::WindowStates::enum_type f1, Qt::WindowStates::enum_type f2) { return QFlags<Qt::WindowStates::enum_type>(f1) | f2; } inline QFlags<Qt::WindowStates::enum_type> operator|(Qt::WindowStates::enum_type f1, QFlags<Qt::WindowStates::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::WindowStates::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::DropActions::enum_type> operator|(Qt::DropActions::enum_type f1, Qt::DropActions::enum_type f2) { return QFlags<Qt::DropActions::enum_type>(f1) | f2; } inline QFlags<Qt::DropActions::enum_type> operator|(Qt::DropActions::enum_type f1, QFlags<Qt::DropActions::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::DropActions::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::ItemFlags::enum_type> operator|(Qt::ItemFlags::enum_type f1, Qt::ItemFlags::enum_type f2) { return QFlags<Qt::ItemFlags::enum_type>(f1) | f2; } inline QFlags<Qt::ItemFlags::enum_type> operator|(Qt::ItemFlags::enum_type f1, QFlags<Qt::ItemFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::ItemFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::MatchFlags::enum_type> operator|(Qt::MatchFlags::enum_type f1, Qt::MatchFlags::enum_type f2) { return QFlags<Qt::MatchFlags::enum_type>(f1) | f2; } inline QFlags<Qt::MatchFlags::enum_type> operator|(Qt::MatchFlags::enum_type f1, QFlags<Qt::MatchFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::MatchFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<Qt::TextInteractionFlags::enum_type> operator|(Qt::TextInteractionFlags::enum_type f1, Qt::TextInteractionFlags::enum_type f2) { return QFlags<Qt::TextInteractionFlags::enum_type>(f1) | f2; } inline QFlags<Qt::TextInteractionFlags::enum_type> operator|(Qt::TextInteractionFlags::enum_type f1, QFlags<Qt::TextInteractionFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(Qt::TextInteractionFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+typedef bool (*qInternalCallback)(void **);
+class __attribute__((visibility("default"))) QInternal {
+public:
+ enum PaintDeviceFlags {
+ UnknownDevice = 0x00,
+ Widget = 0x01,
+ Pixmap = 0x02,
+ Image = 0x03,
+ Printer = 0x04,
+ Picture = 0x05,
+ Pbuffer = 0x06,
+ FramebufferObject = 0x07,
+ CustomRaster = 0x08,
+ MacQuartz = 0x09
+ };
+ enum RelayoutType {
+ RelayoutNormal,
+ RelayoutDragging,
+ RelayoutDropped
+ };
+ enum Callback {
+ ConnectCallback,
+ DisconnectCallback,
+ AdoptCurrentThread,
+ EventNotifyCallback,
+ LastCallback
+ };
+ enum InternalFunction {
+ CreateThreadForAdoption,
+ RefAdoptedThread,
+ DerefAdoptedThread,
+ SetCurrentThreadToMainThread,
+ SetQObjectSender,
+ GetQObjectSender,
+ ResetQObjectSender,
+ LastInternalFunction
+ };
+ enum DockPosition {
+ LeftDock,
+ RightDock,
+ TopDock,
+ BottomDock,
+ DockCount
+ };
+ static bool registerCallback(Callback, qInternalCallback);
+ static bool unregisterCallback(Callback, qInternalCallback);
+ static bool activateCallbacks(Callback, void **);
+ static bool callFunction(InternalFunction func, void **);
+};
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QByteArray;
+class QString;
+template <typename T>
+inline int qYouForgotTheQ_OBJECT_Macro(T, T) { return 0; }
+template <typename T1, typename T2>
+inline void qYouForgotTheQ_OBJECT_Macro(T1, T2) {}
+__attribute__((visibility("default"))) const char *qFlagLocation(const char *method);
+class QObject;
+class QMetaMethod;
+class QMetaEnum;
+class QMetaProperty;
+class QMetaClassInfo;
+class __attribute__((visibility("default"))) QGenericArgument
+{
+public:
+ inline QGenericArgument(const char *aName = 0, const void *aData = 0)
+ : _data(aData), _name(aName) {}
+ inline void *data() const { return const_cast<void *>(_data); }
+ inline const char *name() const { return _name; }
+private:
+ const void *_data;
+ const char *_name;
+};
+class __attribute__((visibility("default"))) QGenericReturnArgument: public QGenericArgument
+{
+public:
+ inline QGenericReturnArgument(const char *aName = 0, void *aData = 0)
+ : QGenericArgument(aName, aData)
+ {}
+};
+template <class T>
+class QArgument: public QGenericArgument
+{
+public:
+ inline QArgument(const char *aName, const T &aData)
+ : QGenericArgument(aName, static_cast<const void *>(&aData))
+ {}
+};
+template <typename T>
+class QReturnArgument: public QGenericReturnArgument
+{
+public:
+ inline QReturnArgument(const char *aName, T &aData)
+ : QGenericReturnArgument(aName, static_cast<void *>(&aData))
+ {}
+};
+struct __attribute__((visibility("default"))) QMetaObject
+{
+ const char *className() const;
+ const QMetaObject *superClass() const;
+ QObject *cast(QObject *obj) const;
+ QString tr(const char *s, const char *c) const;
+ QString trUtf8(const char *s, const char *c) const;
+ QString tr(const char *s, const char *c, int n) const;
+ QString trUtf8(const char *s, const char *c, int n) const;
+ int methodOffset() const;
+ int enumeratorOffset() const;
+ int propertyOffset() const;
+ int classInfoOffset() const;
+ int constructorCount() const;
+ int methodCount() const;
+ int enumeratorCount() const;
+ int propertyCount() const;
+ int classInfoCount() const;
+ int indexOfConstructor(const char *constructor) const;
+ int indexOfMethod(const char *method) const;
+ int indexOfSignal(const char *signal) const;
+ int indexOfSlot(const char *slot) const;
+ int indexOfEnumerator(const char *name) const;
+ int indexOfProperty(const char *name) const;
+ int indexOfClassInfo(const char *name) const;
+ QMetaMethod constructor(int index) const;
+ QMetaMethod method(int index) const;
+ QMetaEnum enumerator(int index) const;
+ QMetaProperty property(int index) const;
+ QMetaClassInfo classInfo(int index) const;
+ QMetaProperty userProperty() const;
+ static bool checkConnectArgs(const char *signal, const char *method);
+ static QByteArray normalizedSignature(const char *method);
+ static QByteArray normalizedType(const char *type);
+ static bool connect(const QObject *sender, int signal_index,
+ const QObject *receiver, int method_index,
+ int type = 0, int *types = 0);
+ static bool disconnect(const QObject *sender, int signal_index,
+ const QObject *receiver, int method_index);
+ static void connectSlotsByName(QObject *o);
+ static void activate(QObject *sender, int signal_index, void **argv);
+ static void activate(QObject *sender, int from_signal_index, int to_signal_index, void **argv);
+ static void activate(QObject *sender, const QMetaObject *, int local_signal_index, void **argv);
+ static void activate(QObject *sender, const QMetaObject *, int from_local_signal_index, int to_local_signal_index, void **argv);
+ static void addGuard(QObject **ptr);
+ static void removeGuard(QObject **ptr);
+ static void changeGuard(QObject **ptr, QObject *o);
+ static bool invokeMethod(QObject *obj, const char *member,
+ Qt::ConnectionType,
+ QGenericReturnArgument ret,
+ QGenericArgument val0 = QGenericArgument(0),
+ QGenericArgument val1 = QGenericArgument(),
+ QGenericArgument val2 = QGenericArgument(),
+ QGenericArgument val3 = QGenericArgument(),
+ QGenericArgument val4 = QGenericArgument(),
+ QGenericArgument val5 = QGenericArgument(),
+ QGenericArgument val6 = QGenericArgument(),
+ QGenericArgument val7 = QGenericArgument(),
+ QGenericArgument val8 = QGenericArgument(),
+ QGenericArgument val9 = QGenericArgument());
+ static inline bool invokeMethod(QObject *obj, const char *member,
+ QGenericReturnArgument ret,
+ QGenericArgument val0 = QGenericArgument(0),
+ QGenericArgument val1 = QGenericArgument(),
+ QGenericArgument val2 = QGenericArgument(),
+ QGenericArgument val3 = QGenericArgument(),
+ QGenericArgument val4 = QGenericArgument(),
+ QGenericArgument val5 = QGenericArgument(),
+ QGenericArgument val6 = QGenericArgument(),
+ QGenericArgument val7 = QGenericArgument(),
+ QGenericArgument val8 = QGenericArgument(),
+ QGenericArgument val9 = QGenericArgument())
+ {
+ return invokeMethod(obj, member, Qt::AutoConnection, ret, val0, val1, val2, val3,
+ val4, val5, val6, val7, val8, val9);
+ }
+ static inline bool invokeMethod(QObject *obj, const char *member,
+ Qt::ConnectionType type,
+ QGenericArgument val0 = QGenericArgument(0),
+ QGenericArgument val1 = QGenericArgument(),
+ QGenericArgument val2 = QGenericArgument(),
+ QGenericArgument val3 = QGenericArgument(),
+ QGenericArgument val4 = QGenericArgument(),
+ QGenericArgument val5 = QGenericArgument(),
+ QGenericArgument val6 = QGenericArgument(),
+ QGenericArgument val7 = QGenericArgument(),
+ QGenericArgument val8 = QGenericArgument(),
+ QGenericArgument val9 = QGenericArgument())
+ {
+ return invokeMethod(obj, member, type, QGenericReturnArgument(), val0, val1, val2,
+ val3, val4, val5, val6, val7, val8, val9);
+ }
+ static inline bool invokeMethod(QObject *obj, const char *member,
+ QGenericArgument val0 = QGenericArgument(0),
+ QGenericArgument val1 = QGenericArgument(),
+ QGenericArgument val2 = QGenericArgument(),
+ QGenericArgument val3 = QGenericArgument(),
+ QGenericArgument val4 = QGenericArgument(),
+ QGenericArgument val5 = QGenericArgument(),
+ QGenericArgument val6 = QGenericArgument(),
+ QGenericArgument val7 = QGenericArgument(),
+ QGenericArgument val8 = QGenericArgument(),
+ QGenericArgument val9 = QGenericArgument())
+ {
+ return invokeMethod(obj, member, Qt::AutoConnection, QGenericReturnArgument(), val0,
+ val1, val2, val3, val4, val5, val6, val7, val8, val9);
+ }
+ QObject *newInstance(QGenericArgument val0 = QGenericArgument(0),
+ QGenericArgument val1 = QGenericArgument(),
+ QGenericArgument val2 = QGenericArgument(),
+ QGenericArgument val3 = QGenericArgument(),
+ QGenericArgument val4 = QGenericArgument(),
+ QGenericArgument val5 = QGenericArgument(),
+ QGenericArgument val6 = QGenericArgument(),
+ QGenericArgument val7 = QGenericArgument(),
+ QGenericArgument val8 = QGenericArgument(),
+ QGenericArgument val9 = QGenericArgument()) const;
+ enum Call {
+ InvokeMetaMethod,
+ ReadProperty,
+ WriteProperty,
+ ResetProperty,
+ QueryPropertyDesignable,
+ QueryPropertyScriptable,
+ QueryPropertyStored,
+ QueryPropertyEditable,
+ QueryPropertyUser,
+ CreateInstance
+ };
+ int static_metacall(Call, int, void **) const;
+ struct {
+ const QMetaObject *superdata;
+ const char *stringdata;
+ const uint *data;
+ const void *extradata;
+ } d;
+};
+struct QMetaObjectExtraData
+{
+ const QMetaObject **objects;
+ int (*static_metacall)(QMetaObject::Call, int, void **);
+};
+inline const char *QMetaObject::className() const
+{ return d.stringdata; }
+inline const QMetaObject *QMetaObject::superClass() const
+{ return d.superdata; }
+extern "C" {
+extern void *memcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern void *memmove (void *__dest, __const void *__src, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
+ int __c, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
+extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memchr (__const void *__s, int __c, size_t __n)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern void *rawmemchr (__const void *__s, int __c)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern void *memrchr (__const void *__s, int __c, size_t __n)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern char *strncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
+ size_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int strcmp (__const char *__s1, __const char *__s2)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strcoll (__const char *__s1, __const char *__s2)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strxfrm (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ throw () __attribute__ ((__nonnull__ (2)));
+extern char *strdup (__const char *__s)
+ throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+extern char *strndup (__const char *__string, size_t __n)
+ throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+extern char *strchr (__const char *__s, int __c)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strrchr (__const char *__s, int __c)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strchrnul (__const char *__s, int __c)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern size_t strcspn (__const char *__s, __const char *__reject)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strspn (__const char *__s, __const char *__accept)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strpbrk (__const char *__s, __const char *__accept)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strstr (__const char *__haystack, __const char *__needle)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
+ throw () __attribute__ ((__nonnull__ (2)));
+extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ throw () __attribute__ ((__nonnull__ (2, 3)));
+extern char *strcasestr (__const char *__haystack, __const char *__needle)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memmem (__const void *__haystack, size_t __haystacklen,
+ __const void *__needle, size_t __needlelen)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));
+extern void *mempcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strlen (__const char *__s)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern size_t strnlen (__const char *__string, size_t __maxlen)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strerror (int __errnum) throw ();
+extern char *__glibc_strerror_r (int __errnum, char *__buf, size_t __buflen)
+ throw () __attribute__ ((__nonnull__ (2)));
+extern char * strerror_r (int __errnum, char *__buf, size_t __buflen) throw () __asm__ ("_" "__glibc_strerror_r") __attribute__ ((__nonnull__ (2)));
+extern void bcopy (__const void *__src, void *__dest, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern void bzero (void *__s, size_t __n) throw () __attribute__ ((__nonnull__ (1)));
+extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *index (__const char *__s, int __c)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *rindex (__const char *__s, int __c)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern int ffs (int __i) throw () __attribute__ ((__const__));
+extern int strcasecmp (__const char *__s1, __const char *__s2)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strsep (char **__restrict __stringp,
+ __const char *__restrict __delim)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern char *strsignal (int __sig) throw ();
+extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern char *stpncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern char *basename (__const char *__filename) throw () __attribute__ ((__nonnull__ (1)));
+extern size_t strlcat(char *__restrict dst, const char *__restrict src,
+ size_t n) throw () __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strlcpy(char *__restrict dst, const char *__restrict src,
+ size_t n) throw () __attribute__ ((__nonnull__ (1, 2)));
+}
+typedef __gnuc_va_list va_list;
+typedef QtValidLicenseForCoreModule QtCoreModule;
+__attribute__((visibility("default"))) char *qstrdup(const char *);
+inline uint qstrlen(const char *str)
+{ return str ? uint(strlen(str)) : 0; }
+inline uint qstrnlen(const char *str, uint maxlen)
+{
+ uint length = 0;
+ if (str) {
+ while (length < maxlen && *str++)
+ length++;
+ }
+ return length;
+}
+__attribute__((visibility("default"))) char *qstrcpy(char *dst, const char *src);
+__attribute__((visibility("default"))) char *qstrncpy(char *dst, const char *src, uint len);
+__attribute__((visibility("default"))) int qstrcmp(const char *str1, const char *str2);
+__attribute__((visibility("default"))) int qstrcmp(const QByteArray &str1, const QByteArray &str2);
+__attribute__((visibility("default"))) int qstrcmp(const QByteArray &str1, const char *str2);
+static inline int qstrcmp(const char *str1, const QByteArray &str2)
+{ return -qstrcmp(str2, str1); }
+inline int qstrncmp(const char *str1, const char *str2, uint len)
+{
+ return (str1 && str2) ? strncmp(str1, str2, len)
+ : (str1 ? 1 : (str2 ? -1 : 0));
+}
+__attribute__((visibility("default"))) int qstricmp(const char *, const char *);
+__attribute__((visibility("default"))) int qstrnicmp(const char *, const char *, uint len);
+__attribute__((visibility("default"))) int qvsnprintf(char *str, size_t n, const char *fmt, va_list ap);
+__attribute__((visibility("default"))) int qsnprintf(char *str, size_t n, const char *fmt, ...);
+__attribute__((visibility("default"))) quint16 qChecksum(const char *s, uint len);
+class QByteRef;
+class QString;
+class QDataStream;
+template <typename T> class QList;
+class __attribute__((visibility("default"))) QByteArray
+{
+public:
+ inline QByteArray();
+ QByteArray(const char *);
+ QByteArray(const char *, int size);
+ QByteArray(int size, char c);
+ inline QByteArray(const QByteArray &);
+ inline ~QByteArray();
+ QByteArray &operator=(const QByteArray &);
+ QByteArray &operator=(const char *str);
+ inline int size() const;
+ bool isEmpty() const;
+ void resize(int size);
+ QByteArray &fill(char c, int size = -1);
+ int capacity() const;
+ void reserve(int size);
+ void squeeze();
+ operator const char *() const;
+ operator const void *() const;
+ char *data();
+ const char *data() const;
+ inline const char *constData() const;
+ inline void detach();
+ bool isDetached() const;
+ void clear();
+ char at(int i) const;
+ char operator[](int i) const;
+ char operator[](uint i) const;
+ QByteRef operator[](int i);
+ QByteRef operator[](uint i);
+ int indexOf(char c, int from = 0) const;
+ int indexOf(const char *c, int from = 0) const;
+ int indexOf(const QByteArray &a, int from = 0) const;
+ int lastIndexOf(char c, int from = -1) const;
+ int lastIndexOf(const char *c, int from = -1) const;
+ int lastIndexOf(const QByteArray &a, int from = -1) const;
+ QBool contains(char c) const;
+ QBool contains(const char *a) const;
+ QBool contains(const QByteArray &a) const;
+ int count(char c) const;
+ int count(const char *a) const;
+ int count(const QByteArray &a) const;
+ QByteArray left(int len) const;
+ QByteArray right(int len) const;
+ QByteArray mid(int index, int len = -1) const;
+ bool startsWith(const QByteArray &a) const;
+ bool startsWith(char c) const;
+ bool startsWith(const char *c) const;
+ bool endsWith(const QByteArray &a) const;
+ bool endsWith(char c) const;
+ bool endsWith(const char *c) const;
+ void truncate(int pos);
+ void chop(int n);
+ QByteArray toLower() const;
+ QByteArray toUpper() const;
+ QByteArray trimmed() const;
+ QByteArray simplified() const;
+ QByteArray leftJustified(int width, char fill = ' ', bool truncate = false) const;
+ QByteArray rightJustified(int width, char fill = ' ', bool truncate = false) const;
+ QByteArray &prepend(char c);
+ QByteArray &prepend(const char *s);
+ QByteArray &prepend(const QByteArray &a);
+ QByteArray &append(char c);
+ QByteArray &append(const char *s);
+ QByteArray &append(const char *s, int len);
+ QByteArray &append(const QByteArray &a);
+ QByteArray &insert(int i, char c);
+ QByteArray &insert(int i, const char *s);
+ QByteArray &insert(int i, const QByteArray &a);
+ QByteArray &remove(int index, int len);
+ QByteArray &replace(int index, int len, const char *s);
+ QByteArray &replace(int index, int len, const QByteArray &s);
+ QByteArray &replace(char before, const char *after);
+ QByteArray &replace(char before, const QByteArray &after);
+ QByteArray &replace(const char *before, const char *after);
+ QByteArray &replace(const char *before, int bsize, const char *after, int asize);
+ QByteArray &replace(const QByteArray &before, const QByteArray &after);
+ QByteArray &replace(const QByteArray &before, const char *after);
+ QByteArray &replace(const char *before, const QByteArray &after);
+ QByteArray &replace(char before, char after);
+ QByteArray &operator+=(char c);
+ QByteArray &operator+=(const char *s);
+ QByteArray &operator+=(const QByteArray &a);
+ QList<QByteArray> split(char sep) const;
+ QByteArray repeated(int times) const;
+ inline __attribute__ ((__deprecated__)) bool operator==(const QString &s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator!=(const QString &s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator<(const QString &s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator>(const QString &s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator<=(const QString &s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator>=(const QString &s2) const;
+ short toShort(bool *ok = 0, int base = 10) const;
+ ushort toUShort(bool *ok = 0, int base = 10) const;
+ int toInt(bool *ok = 0, int base = 10) const;
+ uint toUInt(bool *ok = 0, int base = 10) const;
+ long toLong(bool *ok = 0, int base = 10) const;
+ ulong toULong(bool *ok = 0, int base = 10) const;
+ qlonglong toLongLong(bool *ok = 0, int base = 10) const;
+ qulonglong toULongLong(bool *ok = 0, int base = 10) const;
+ float toFloat(bool *ok = 0) const;
+ double toDouble(bool *ok = 0) const;
+ QByteArray toBase64() const;
+ QByteArray toHex() const;
+ QByteArray toPercentEncoding(const QByteArray &exclude = QByteArray(),
+ const QByteArray &include = QByteArray(),
+ char percent = '%') const;
+ QByteArray &setNum(short, int base = 10);
+ QByteArray &setNum(ushort, int base = 10);
+ QByteArray &setNum(int, int base = 10);
+ QByteArray &setNum(uint, int base = 10);
+ QByteArray &setNum(qlonglong, int base = 10);
+ QByteArray &setNum(qulonglong, int base = 10);
+ QByteArray &setNum(float, char f = 'g', int prec = 6);
+ QByteArray &setNum(double, char f = 'g', int prec = 6);
+ static QByteArray number(int, int base = 10);
+ static QByteArray number(uint, int base = 10);
+ static QByteArray number(qlonglong, int base = 10);
+ static QByteArray number(qulonglong, int base = 10);
+ static QByteArray number(double, char f = 'g', int prec = 6);
+ static QByteArray fromRawData(const char *, int size);
+ static QByteArray fromBase64(const QByteArray &base64);
+ static QByteArray fromHex(const QByteArray &hexEncoded);
+ static QByteArray fromPercentEncoding(const QByteArray &pctEncoded, char percent = '%');
+ typedef char *iterator;
+ typedef const char *const_iterator;
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ iterator begin();
+ const_iterator begin() const;
+ const_iterator constBegin() const;
+ iterator end();
+ const_iterator end() const;
+ const_iterator constEnd() const;
+ typedef const char & const_reference;
+ typedef char & reference;
+ void push_back(char c);
+ void push_back(const char *c);
+ void push_back(const QByteArray &a);
+ void push_front(char c);
+ void push_front(const char *c);
+ void push_front(const QByteArray &a);
+ inline int count() const { return d->size; }
+ int length() const { return d->size; }
+ bool isNull() const;
+private:
+ operator QNoImplicitBoolCast() const;
+ struct Data {
+ QBasicAtomicInt ref;
+ int alloc, size;
+ char *data;
+ char array[1];
+ };
+ static Data shared_null;
+ static Data shared_empty;
+ Data *d;
+ QByteArray(Data *dd, int , int ) : d(dd) {}
+ void realloc(int alloc);
+ void expand(int i);
+ QByteArray nulTerminated() const;
+ friend class QByteRef;
+ friend class QString;
+public:
+ typedef Data * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+inline QByteArray::QByteArray(): d(&shared_null) { d->ref.ref(); }
+inline QByteArray::~QByteArray() { if (!d->ref.deref()) qFree(d); }
+inline int QByteArray::size() const
+{ return d->size; }
+inline char QByteArray::at(int i) const
+{ qt_noop(); return d->data[i]; }
+inline char QByteArray::operator[](int i) const
+{ qt_noop(); return d->data[i]; }
+inline char QByteArray::operator[](uint i) const
+{ qt_noop(); return d->data[i]; }
+inline bool QByteArray::isEmpty() const
+{ return d->size == 0; }
+inline QByteArray::operator const char *() const
+{ return d->data; }
+inline QByteArray::operator const void *() const
+{ return d->data; }
+inline char *QByteArray::data()
+{ detach(); return d->data; }
+inline const char *QByteArray::data() const
+{ return d->data; }
+inline const char *QByteArray::constData() const
+{ return d->data; }
+inline void QByteArray::detach()
+{ if (d->ref != 1 || d->data != d->array) realloc(d->size); }
+inline bool QByteArray::isDetached() const
+{ return d->ref == 1; }
+inline QByteArray::QByteArray(const QByteArray &a) : d(a.d)
+{ d->ref.ref(); }
+inline int QByteArray::capacity() const
+{ return d->alloc; }
+inline void QByteArray::reserve(int asize)
+{ if (d->ref != 1 || asize > d->alloc) realloc(asize); }
+inline void QByteArray::squeeze()
+{ if (d->size < d->alloc) realloc(d->size); }
+class __attribute__((visibility("default"))) QByteRef {
+ QByteArray &a;
+ int i;
+ inline QByteRef(QByteArray &array, int idx)
+ : a(array),i(idx) {}
+ friend class QByteArray;
+public:
+ inline operator char() const
+ { return i < a.d->size ? a.d->data[i] : 0; }
+ inline QByteRef &operator=(char c)
+ { if (i >= a.d->size) a.expand(i); else a.detach();
+ a.d->data[i] = c; return *this; }
+ inline QByteRef &operator=(const QByteRef &c)
+ { if (i >= a.d->size) a.expand(i); else a.detach();
+ a.d->data[i] = c.a.d->data[c.i]; return *this; }
+ inline bool operator==(char c) const
+ { return a.d->data[i] == c; }
+ inline bool operator!=(char c) const
+ { return a.d->data[i] != c; }
+ inline bool operator>(char c) const
+ { return a.d->data[i] > c; }
+ inline bool operator>=(char c) const
+ { return a.d->data[i] >= c; }
+ inline bool operator<(char c) const
+ { return a.d->data[i] < c; }
+ inline bool operator<=(char c) const
+ { return a.d->data[i] <= c; }
+};
+inline QByteRef QByteArray::operator[](int i)
+{ qt_noop(); return QByteRef(*this, i); }
+inline QByteRef QByteArray::operator[](uint i)
+{ return QByteRef(*this, i); }
+inline QByteArray::iterator QByteArray::begin()
+{ detach(); return d->data; }
+inline QByteArray::const_iterator QByteArray::begin() const
+{ return d->data; }
+inline QByteArray::const_iterator QByteArray::constBegin() const
+{ return d->data; }
+inline QByteArray::iterator QByteArray::end()
+{ detach(); return d->data + d->size; }
+inline QByteArray::const_iterator QByteArray::end() const
+{ return d->data + d->size; }
+inline QByteArray::const_iterator QByteArray::constEnd() const
+{ return d->data + d->size; }
+inline QByteArray &QByteArray::operator+=(char c)
+{ return append(c); }
+inline QByteArray &QByteArray::operator+=(const char *s)
+{ return append(s); }
+inline QByteArray &QByteArray::operator+=(const QByteArray &a)
+{ return append(a); }
+inline void QByteArray::push_back(char c)
+{ append(c); }
+inline void QByteArray::push_back(const char *c)
+{ append(c); }
+inline void QByteArray::push_back(const QByteArray &a)
+{ append(a); }
+inline void QByteArray::push_front(char c)
+{ prepend(c); }
+inline void QByteArray::push_front(const char *c)
+{ prepend(c); }
+inline void QByteArray::push_front(const QByteArray &a)
+{ prepend(a); }
+inline QBool QByteArray::contains(const QByteArray &a) const
+{ return QBool(indexOf(a) != -1); }
+inline QBool QByteArray::contains(char c) const
+{ return QBool(indexOf(c) != -1); }
+inline bool operator==(const QByteArray &a1, const QByteArray &a2)
+{ return (a1.size() == a2.size()) && (memcmp(a1.constData(), a2.constData(), a1.size())==0); }
+inline bool operator==(const QByteArray &a1, const char *a2)
+{ return a2 ? qstrcmp(a1,a2) == 0 : a1.isEmpty(); }
+inline bool operator==(const char *a1, const QByteArray &a2)
+{ return a1 ? qstrcmp(a1,a2) == 0 : a2.isEmpty(); }
+inline bool operator!=(const QByteArray &a1, const QByteArray &a2)
+{ return !(a1==a2); }
+inline bool operator!=(const QByteArray &a1, const char *a2)
+{ return a2 ? qstrcmp(a1,a2) != 0 : !a1.isEmpty(); }
+inline bool operator!=(const char *a1, const QByteArray &a2)
+{ return a1 ? qstrcmp(a1,a2) != 0 : !a2.isEmpty(); }
+inline bool operator<(const QByteArray &a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) < 0; }
+ inline bool operator<(const QByteArray &a1, const char *a2)
+{ return qstrcmp(a1, a2) < 0; }
+inline bool operator<(const char *a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) < 0; }
+inline bool operator<=(const QByteArray &a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) <= 0; }
+inline bool operator<=(const QByteArray &a1, const char *a2)
+{ return qstrcmp(a1, a2) <= 0; }
+inline bool operator<=(const char *a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) <= 0; }
+inline bool operator>(const QByteArray &a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) > 0; }
+inline bool operator>(const QByteArray &a1, const char *a2)
+{ return qstrcmp(a1, a2) > 0; }
+inline bool operator>(const char *a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) > 0; }
+inline bool operator>=(const QByteArray &a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) >= 0; }
+inline bool operator>=(const QByteArray &a1, const char *a2)
+{ return qstrcmp(a1, a2) >= 0; }
+inline bool operator>=(const char *a1, const QByteArray &a2)
+{ return qstrcmp(a1, a2) >= 0; }
+inline const QByteArray operator+(const QByteArray &a1, const QByteArray &a2)
+{ return QByteArray(a1) += a2; }
+inline const QByteArray operator+(const QByteArray &a1, const char *a2)
+{ return QByteArray(a1) += a2; }
+inline const QByteArray operator+(const QByteArray &a1, char a2)
+{ return QByteArray(a1) += a2; }
+inline const QByteArray operator+(const char *a1, const QByteArray &a2)
+{ return QByteArray(a1) += a2; }
+inline const QByteArray operator+(char a1, const QByteArray &a2)
+{ return QByteArray(&a1, 1) += a2; }
+inline QBool QByteArray::contains(const char *c) const
+{ return QBool(indexOf(c) != -1); }
+inline QByteArray &QByteArray::replace(char before, const char *c)
+{ return replace(&before, 1, c, qstrlen(c)); }
+inline QByteArray &QByteArray::replace(const QByteArray &before, const char *c)
+{ return replace(before.constData(), before.size(), c, qstrlen(c)); }
+inline QByteArray &QByteArray::replace(const char *before, const char *after)
+{ return replace(before, qstrlen(before), after, qstrlen(after)); }
+inline QByteArray &QByteArray::setNum(short n, int base)
+{ return setNum(qlonglong(n), base); }
+inline QByteArray &QByteArray::setNum(ushort n, int base)
+{ return setNum(qulonglong(n), base); }
+inline QByteArray &QByteArray::setNum(int n, int base)
+{ return setNum(qlonglong(n), base); }
+inline QByteArray &QByteArray::setNum(uint n, int base)
+{ return setNum(qulonglong(n), base); }
+inline QByteArray &QByteArray::setNum(float n, char f, int prec)
+{ return setNum(double(n),f,prec); }
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QByteArray &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QByteArray &);
+__attribute__((visibility("default"))) QByteArray qCompress(const uchar* data, int nbytes, int compressionLevel = -1);
+__attribute__((visibility("default"))) QByteArray qUncompress(const uchar* data, int nbytes);
+inline QByteArray qCompress(const QByteArray& data, int compressionLevel = -1)
+{ return qCompress(reinterpret_cast<const uchar *>(data.constData()), data.size(), compressionLevel); }
+inline QByteArray qUncompress(const QByteArray& data)
+{ return qUncompress(reinterpret_cast<const uchar*>(data.constData()), data.size()); }
+template <> class QTypeInfo<QByteArray> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QByteArray)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QByteArray"; } };
+template <> inline bool qIsDetached<QByteArray>(QByteArray &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QByteArray>(QByteArray &value1, QByteArray &value2) { const QByteArray::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+typedef std::basic_string<wchar_t> QStdWString;
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QCharRef;
+class QRegExp;
+class QStringList;
+class QTextCodec;
+class QLatin1String;
+class QStringRef;
+template <typename T> class QVector;
+class __attribute__((visibility("default"))) QString
+{
+public:
+ inline QString();
+ QString(const QChar *unicode, int size);
+ QString(QChar c);
+ QString(int size, QChar c);
+ inline QString(const QLatin1String &latin1);
+ inline QString(const QString &);
+ inline ~QString();
+ QString &operator=(QChar c);
+ QString &operator=(const QString &);
+ inline QString &operator=(const QLatin1String &);
+ inline int size() const { return d->size; }
+ inline int count() const { return d->size; }
+ inline int length() const;
+ inline bool isEmpty() const;
+ void resize(int size);
+ QString &fill(QChar c, int size = -1);
+ void truncate(int pos);
+ void chop(int n);
+ int capacity() const;
+ inline void reserve(int size);
+ inline void squeeze() { if (d->size < d->alloc) realloc(); d->capacity = 0;}
+ inline const QChar *unicode() const;
+ inline QChar *data();
+ inline const QChar *data() const;
+ inline const QChar *constData() const;
+ inline void detach();
+ inline bool isDetached() const;
+ void clear();
+ inline const QChar at(int i) const;
+ const QChar operator[](int i) const;
+ QCharRef operator[](int i);
+ const QChar operator[](uint i) const;
+ QCharRef operator[](uint i);
+ QString arg(qlonglong a, int fieldwidth=0, int base=10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(qulonglong a, int fieldwidth=0, int base=10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(long a, int fieldwidth=0, int base=10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(ulong a, int fieldwidth=0, int base=10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(int a, int fieldWidth = 0, int base = 10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(uint a, int fieldWidth = 0, int base = 10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(short a, int fieldWidth = 0, int base = 10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(ushort a, int fieldWidth = 0, int base = 10,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(double a, int fieldWidth = 0, char fmt = 'g', int prec = -1,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(char a, int fieldWidth = 0,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(QChar a, int fieldWidth = 0,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a, int fieldWidth = 0,
+ const QChar &fillChar = QLatin1Char(' ')) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6,
+ const QString &a7) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6,
+ const QString &a7, const QString &a8) const __attribute__ ((warn_unused_result));
+ QString arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6,
+ const QString &a7, const QString &a8, const QString &a9) const __attribute__ ((warn_unused_result));
+ QString &vsprintf(const char *format, va_list ap)
+ __attribute__ ((format (printf, 2, 0)))
+ ;
+ QString &sprintf(const char *format, ...)
+ __attribute__ ((format (printf, 2, 3)))
+ ;
+ int indexOf(QChar c, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int indexOf(const QString &s, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int indexOf(const QLatin1String &s, int from = 0, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int lastIndexOf(QChar c, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int lastIndexOf(const QString &s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int lastIndexOf(const QLatin1String &s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline QBool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline QBool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int count(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int count(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int indexOf(const QRegExp &, int from = 0) const;
+ int lastIndexOf(const QRegExp &, int from = -1) const;
+ inline QBool contains(const QRegExp &rx) const { return QBool(indexOf(rx) != -1); }
+ int count(const QRegExp &) const;
+ int indexOf(QRegExp &, int from = 0) const;
+ int lastIndexOf(QRegExp &, int from = -1) const;
+ inline QBool contains(QRegExp &rx) const { return QBool(indexOf(rx) != -1); }
+ enum SectionFlag {
+ SectionDefault = 0x00,
+ SectionSkipEmpty = 0x01,
+ SectionIncludeLeadingSep = 0x02,
+ SectionIncludeTrailingSep = 0x04,
+ SectionCaseInsensitiveSeps = 0x08
+ };
+ typedef QFlags<SectionFlag> SectionFlags;
+ QString section(QChar sep, int start, int end = -1, SectionFlags flags = SectionDefault) const;
+ QString section(const QString &in_sep, int start, int end = -1, SectionFlags flags = SectionDefault) const;
+ QString section(const QRegExp ®, int start, int end = -1, SectionFlags flags = SectionDefault) const;
+ QString left(int n) const __attribute__ ((warn_unused_result));
+ QString right(int n) const __attribute__ ((warn_unused_result));
+ QString mid(int position, int n = -1) const __attribute__ ((warn_unused_result));
+ QStringRef leftRef(int n) const __attribute__ ((warn_unused_result));
+ QStringRef rightRef(int n) const __attribute__ ((warn_unused_result));
+ QStringRef midRef(int position, int n = -1) const __attribute__ ((warn_unused_result));
+ bool startsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ bool startsWith(const QLatin1String &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ bool startsWith(const QChar &c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ bool endsWith(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ bool endsWith(const QLatin1String &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ bool endsWith(const QChar &c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ QString leftJustified(int width, QChar fill = QLatin1Char(' '), bool trunc = false) const __attribute__ ((warn_unused_result));
+ QString rightJustified(int width, QChar fill = QLatin1Char(' '), bool trunc = false) const __attribute__ ((warn_unused_result));
+ QString toLower() const __attribute__ ((warn_unused_result));
+ QString toUpper() const __attribute__ ((warn_unused_result));
+ QString toCaseFolded() const __attribute__ ((warn_unused_result));
+ QString trimmed() const __attribute__ ((warn_unused_result));
+ QString simplified() const __attribute__ ((warn_unused_result));
+ QString &insert(int i, QChar c);
+ QString &insert(int i, const QChar *uc, int len);
+ inline QString &insert(int i, const QString &s) { return insert(i, s.constData(), s.length()); }
+ QString &insert(int i, const QLatin1String &s);
+ QString &append(QChar c);
+ QString &append(const QString &s);
+ QString &append(const QStringRef &s);
+ QString &append(const QLatin1String &s);
+ inline QString &prepend(QChar c) { return insert(0, c); }
+ inline QString &prepend(const QString &s) { return insert(0, s); }
+ inline QString &prepend(const QLatin1String &s) { return insert(0, s); }
+ inline QString &operator+=(QChar c) {
+ if (d->ref != 1 || d->size + 1 > d->alloc)
+ realloc(grow(d->size + 1));
+ d->data[d->size++] = c.unicode();
+ d->data[d->size] = '\0';
+ return *this;
+ }
+ inline QString &operator+=(QChar::SpecialCharacter c) { return append(QChar(c)); }
+ inline QString &operator+=(const QString &s) { return append(s); }
+ inline QString &operator+=(const QStringRef &s) { return append(s); }
+ inline QString &operator+=(const QLatin1String &s) { return append(s); }
+ QString &remove(int i, int len);
+ QString &remove(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &remove(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(int i, int len, QChar after);
+ QString &replace(int i, int len, const QChar *s, int slen);
+ QString &replace(int i, int len, const QString &after);
+ QString &replace(QChar before, QChar after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(const QChar *before, int blen, const QChar *after, int alen, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(const QLatin1String &before, const QLatin1String &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(const QLatin1String &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(const QString &before, const QLatin1String &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(const QString &before, const QString &after,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(QChar c, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(QChar c, const QLatin1String &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QString &replace(const QRegExp &rx, const QString &after);
+ inline QString &remove(const QRegExp &rx)
+ { return replace(rx, QString()); }
+ enum SplitBehavior { KeepEmptyParts, SkipEmptyParts };
+ QStringList split(const QString &sep, SplitBehavior behavior = KeepEmptyParts,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const __attribute__ ((warn_unused_result));
+ QStringList split(const QChar &sep, SplitBehavior behavior = KeepEmptyParts,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive) const __attribute__ ((warn_unused_result));
+ QStringList split(const QRegExp &sep, SplitBehavior behavior = KeepEmptyParts) const __attribute__ ((warn_unused_result));
+ enum NormalizationForm {
+ NormalizationForm_D,
+ NormalizationForm_C,
+ NormalizationForm_KD,
+ NormalizationForm_KC
+ };
+ QString normalized(NormalizationForm mode) const __attribute__ ((warn_unused_result));
+ QString normalized(NormalizationForm mode, QChar::UnicodeVersion version) const __attribute__ ((warn_unused_result));
+ QString repeated(int times) const;
+ const ushort *utf16() const;
+ QByteArray toAscii() const __attribute__ ((warn_unused_result));
+ QByteArray toLatin1() const __attribute__ ((warn_unused_result));
+ QByteArray toUtf8() const __attribute__ ((warn_unused_result));
+ QByteArray toLocal8Bit() const __attribute__ ((warn_unused_result));
+ QVector<uint> toUcs4() const __attribute__ ((warn_unused_result));
+ static QString fromAscii(const char *, int size = -1);
+ static QString fromLatin1(const char *, int size = -1);
+ static QString fromUtf8(const char *, int size = -1);
+ static QString fromLocal8Bit(const char *, int size = -1);
+ static QString fromUtf16(const ushort *, int size = -1);
+ static QString fromUcs4(const uint *, int size = -1);
+ static QString fromRawData(const QChar *, int size);
+ int toWCharArray(wchar_t *array) const;
+ static QString fromWCharArray(const wchar_t *, int size = -1);
+ QString &setUnicode(const QChar *unicode, int size);
+ inline QString &setUtf16(const ushort *utf16, int size);
+ int compare(const QString &s) const;
+ int compare(const QString &s, Qt::CaseSensitivity cs) const;
+ int compare(const QLatin1String &other, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ static inline int compare(const QString &s1, const QString &s2)
+ { return s1.compare(s2); }
+ static inline int compare(const QString &s1, const QString &s2, Qt::CaseSensitivity cs)
+ { return s1.compare(s2, cs); }
+ static inline int compare(const QString& s1, const QLatin1String &s2,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive)
+ { return s1.compare(s2, cs); }
+ static inline int compare(const QLatin1String& s1, const QString &s2,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive)
+ { return -s2.compare(s1, cs); }
+ int compare(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ static int compare(const QString &s1, const QStringRef &s2,
+ Qt::CaseSensitivity = Qt::CaseSensitive);
+ int localeAwareCompare(const QString& s) const;
+ static int localeAwareCompare(const QString& s1, const QString& s2)
+ { return s1.localeAwareCompare(s2); }
+ int localeAwareCompare(const QStringRef &s) const;
+ static int localeAwareCompare(const QString& s1, const QStringRef& s2);
+ short toShort(bool *ok=0, int base=10) const;
+ ushort toUShort(bool *ok=0, int base=10) const;
+ int toInt(bool *ok=0, int base=10) const;
+ uint toUInt(bool *ok=0, int base=10) const;
+ long toLong(bool *ok=0, int base=10) const;
+ ulong toULong(bool *ok=0, int base=10) const;
+ qlonglong toLongLong(bool *ok=0, int base=10) const;
+ qulonglong toULongLong(bool *ok=0, int base=10) const;
+ float toFloat(bool *ok=0) const;
+ double toDouble(bool *ok=0) const;
+ QString &setNum(short, int base=10);
+ QString &setNum(ushort, int base=10);
+ QString &setNum(int, int base=10);
+ QString &setNum(uint, int base=10);
+ QString &setNum(long, int base=10);
+ QString &setNum(ulong, int base=10);
+ QString &setNum(qlonglong, int base=10);
+ QString &setNum(qulonglong, int base=10);
+ QString &setNum(float, char f='g', int prec=6);
+ QString &setNum(double, char f='g', int prec=6);
+ static QString number(int, int base=10);
+ static QString number(uint, int base=10);
+ static QString number(long, int base=10);
+ static QString number(ulong, int base=10);
+ static QString number(qlonglong, int base=10);
+ static QString number(qulonglong, int base=10);
+ static QString number(double, char f='g', int prec=6);
+ bool operator==(const QString &s) const;
+ bool operator<(const QString &s) const;
+ inline bool operator>(const QString &s) const { return s < *this; }
+ inline bool operator!=(const QString &s) const { return !operator==(s); }
+ inline bool operator<=(const QString &s) const { return !operator>(s); }
+ inline bool operator>=(const QString &s) const { return !operator<(s); }
+ bool operator==(const QLatin1String &s) const;
+ bool operator<(const QLatin1String &s) const;
+ bool operator>(const QLatin1String &s) const;
+ inline bool operator!=(const QLatin1String &s) const { return !operator==(s); }
+ inline bool operator<=(const QLatin1String &s) const { return !operator>(s); }
+ inline bool operator>=(const QLatin1String &s) const { return !operator<(s); }
+ inline __attribute__ ((__deprecated__)) QString(const char *ch) : d(fromAscii_helper(ch))
+ {}
+ inline __attribute__ ((__deprecated__)) QString(const QByteArray &a)
+ : d(fromAscii_helper(a.constData(), qstrnlen(a.constData(), a.size())))
+ {}
+ inline __attribute__ ((__deprecated__)) QString &operator=(const char *ch)
+ { return (*this = fromAscii(ch)); }
+ inline __attribute__ ((__deprecated__)) QString &operator=(const QByteArray &a)
+ { return (*this = fromAscii(a.constData(), qstrnlen(a.constData(), a.size()))); }
+ inline __attribute__ ((__deprecated__)) QString &operator=(char c)
+ { return (*this = QChar::fromAscii(c)); }
+ inline __attribute__ ((__deprecated__)) QString &prepend(const char *s)
+ { return prepend(QString::fromAscii(s)); }
+ inline __attribute__ ((__deprecated__)) QString &prepend(const QByteArray &s)
+ { return prepend(QString::fromAscii(s.constData(), qstrnlen(s.constData(), s.size()))); }
+ inline __attribute__ ((__deprecated__)) QString &append(const char *s)
+ { return append(QString::fromAscii(s)); }
+ inline __attribute__ ((__deprecated__)) QString &append(const QByteArray &s)
+ { return append(QString::fromAscii(s.constData(), qstrnlen(s.constData(), s.size()))); }
+ inline __attribute__ ((__deprecated__)) QString &operator+=(const char *s)
+ { return append(QString::fromAscii(s)); }
+ inline __attribute__ ((__deprecated__)) QString &operator+=(const QByteArray &s)
+ { return append(QString::fromAscii(s.constData(), qstrnlen(s.constData(), s.size()))); }
+ inline __attribute__ ((__deprecated__)) QString &operator+=(char c)
+ { return append(QChar::fromAscii(c)); }
+ inline __attribute__ ((__deprecated__)) bool operator==(const char *s) const;
+ inline __attribute__ ((__deprecated__)) bool operator!=(const char *s) const;
+ inline __attribute__ ((__deprecated__)) bool operator<(const char *s) const;
+ inline __attribute__ ((__deprecated__)) bool operator<=(const char *s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator>(const char *s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator>=(const char *s2) const;
+ inline __attribute__ ((__deprecated__)) bool operator==(const QByteArray &s) const;
+ inline __attribute__ ((__deprecated__)) bool operator!=(const QByteArray &s) const;
+ inline __attribute__ ((__deprecated__)) bool operator<(const QByteArray &s) const
+ { return *this < QString::fromAscii(s.constData(), s.size()); }
+ inline __attribute__ ((__deprecated__)) bool operator>(const QByteArray &s) const
+ { return *this > QString::fromAscii(s.constData(), s.size()); }
+ inline __attribute__ ((__deprecated__)) bool operator<=(const QByteArray &s) const
+ { return *this <= QString::fromAscii(s.constData(), s.size()); }
+ inline __attribute__ ((__deprecated__)) bool operator>=(const QByteArray &s) const
+ { return *this >= QString::fromAscii(s.constData(), s.size()); }
+ typedef QChar *iterator;
+ typedef const QChar *const_iterator;
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ iterator begin();
+ const_iterator begin() const;
+ const_iterator constBegin() const;
+ iterator end();
+ const_iterator end() const;
+ const_iterator constEnd() const;
+ inline void push_back(QChar c) { append(c); }
+ inline void push_back(const QString &s) { append(s); }
+ inline void push_front(QChar c) { prepend(c); }
+ inline void push_front(const QString &s) { prepend(s); }
+ static inline QString fromStdString(const std::string &s);
+ inline std::string toStdString() const;
+ static inline QString fromStdWString(const QStdWString &s);
+ inline QStdWString toStdWString() const;
+ struct Null { };
+ static const Null null;
+ inline QString(const Null &): d(&shared_null) { d->ref.ref(); }
+ inline QString &operator=(const Null &) { *this = QString(); return *this; }
+ inline bool isNull() const { return d == &shared_null; }
+ bool isSimpleText() const { if (!d->clean) updateProperties(); return d->simpletext; }
+ bool isRightToLeft() const { if (!d->clean) updateProperties(); return d->righttoleft; }
+private:
+ struct Data {
+ QBasicAtomicInt ref;
+ int alloc, size;
+ ushort *data;
+ ushort clean : 1;
+ ushort simpletext : 1;
+ ushort righttoleft : 1;
+ ushort asciiCache : 1;
+ ushort capacity : 1;
+ ushort reserved : 11;
+ ushort array[1];
+ };
+ static Data shared_null;
+ static Data shared_empty;
+ Data *d;
+ QString(Data *dd, int ) : d(dd) {}
+ static QTextCodec *codecForCStrings;
+ static int grow(int);
+ static void free(Data *);
+ void realloc();
+ void realloc(int alloc);
+ void expand(int i);
+ void updateProperties() const;
+ QString multiArg(int numArgs, const QString **args) const;
+ static int compare_helper(const QChar *data1, int length1,
+ const QChar *data2, int length2,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ static int compare_helper(const QChar *data1, int length1,
+ QLatin1String s2,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ static int localeAwareCompare_helper(const QChar *data1, int length1,
+ const QChar *data2, int length2);
+ static Data *fromLatin1_helper(const char *str, int size = -1);
+ static Data *fromAscii_helper(const char *str, int size = -1);
+ void replace_helper(uint *indices, int nIndices, int blen, const QChar *after, int alen);
+ friend class QCharRef;
+ friend class QTextCodec;
+ friend class QStringRef;
+ friend inline bool qStringComparisonHelper(const QString &s1, const char *s2);
+ friend inline bool qStringComparisonHelper(const QStringRef &s1, const char *s2);
+public:
+ typedef Data * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+class __attribute__((visibility("default"))) QLatin1String
+{
+public:
+ inline explicit QLatin1String(const char *s) : chars(s) {}
+ inline QLatin1String &operator=(const QLatin1String &other)
+ { chars = other.chars; return *this; }
+ inline const char *latin1() const { return chars; }
+ inline bool operator==(const QString &s) const
+ { return s == *this; }
+ inline bool operator!=(const QString &s) const
+ { return s != *this; }
+ inline bool operator>(const QString &s) const
+ { return s < *this; }
+ inline bool operator<(const QString &s) const
+ { return s > *this; }
+ inline bool operator>=(const QString &s) const
+ { return s <= *this; }
+ inline bool operator<=(const QString &s) const
+ { return s >= *this; }
+ inline __attribute__ ((__deprecated__)) bool operator==(const char *s) const
+ { return QString::fromAscii(s) == *this; }
+ inline __attribute__ ((__deprecated__)) bool operator!=(const char *s) const
+ { return QString::fromAscii(s) != *this; }
+ inline __attribute__ ((__deprecated__)) bool operator<(const char *s) const
+ { return QString::fromAscii(s) > *this; }
+ inline __attribute__ ((__deprecated__)) bool operator>(const char *s) const
+ { return QString::fromAscii(s) < *this; }
+ inline __attribute__ ((__deprecated__)) bool operator<=(const char *s) const
+ { return QString::fromAscii(s) >= *this; }
+ inline __attribute__ ((__deprecated__)) bool operator>=(const char *s) const
+ { return QString::fromAscii(s) <= *this; }
+private:
+ const char *chars;
+};
+inline QString::QString(const QLatin1String &aLatin1) : d(fromLatin1_helper(aLatin1.latin1()))
+{ }
+inline int QString::length() const
+{ return d->size; }
+inline const QChar QString::at(int i) const
+{ qt_noop(); return d->data[i]; }
+inline const QChar QString::operator[](int i) const
+{ qt_noop(); return d->data[i]; }
+inline const QChar QString::operator[](uint i) const
+{ qt_noop(); return d->data[i]; }
+inline bool QString::isEmpty() const
+{ return d->size == 0; }
+inline const QChar *QString::unicode() const
+{ return reinterpret_cast<const QChar*>(d->data); }
+inline const QChar *QString::data() const
+{ return reinterpret_cast<const QChar*>(d->data); }
+inline QChar *QString::data()
+{ detach(); return reinterpret_cast<QChar*>(d->data); }
+inline const QChar *QString::constData() const
+{ return reinterpret_cast<const QChar*>(d->data); }
+inline void QString::detach()
+{ if (d->ref != 1 || d->data != d->array) realloc(); }
+inline bool QString::isDetached() const
+{ return d->ref == 1; }
+inline QString &QString::operator=(const QLatin1String &s)
+{
+ *this = fromLatin1(s.latin1());
+ return *this;
+}
+inline void QString::clear()
+{ if (!isNull()) *this = QString(); }
+inline QString::QString(const QString &other) : d(other.d)
+{ qt_noop(); d->ref.ref(); }
+inline int QString::capacity() const
+{ return d->alloc; }
+inline QString &QString::setNum(short n, int base)
+{ return setNum(qlonglong(n), base); }
+inline QString &QString::setNum(ushort n, int base)
+{ return setNum(qulonglong(n), base); }
+inline QString &QString::setNum(int n, int base)
+{ return setNum(qlonglong(n), base); }
+inline QString &QString::setNum(uint n, int base)
+{ return setNum(qulonglong(n), base); }
+inline QString &QString::setNum(long n, int base)
+{ return setNum(qlonglong(n), base); }
+inline QString &QString::setNum(ulong n, int base)
+{ return setNum(qulonglong(n), base); }
+inline QString &QString::setNum(float n, char f, int prec)
+{ return setNum(double(n),f,prec); }
+inline QString QString::arg(int a, int fieldWidth, int base, const QChar &fillChar) const
+{ return arg(qlonglong(a), fieldWidth, base, fillChar); }
+inline QString QString::arg(uint a, int fieldWidth, int base, const QChar &fillChar) const
+{ return arg(qulonglong(a), fieldWidth, base, fillChar); }
+inline QString QString::arg(long a, int fieldWidth, int base, const QChar &fillChar) const
+{ return arg(qlonglong(a), fieldWidth, base, fillChar); }
+inline QString QString::arg(ulong a, int fieldWidth, int base, const QChar &fillChar) const
+{ return arg(qulonglong(a), fieldWidth, base, fillChar); }
+inline QString QString::arg(short a, int fieldWidth, int base, const QChar &fillChar) const
+{ return arg(qlonglong(a), fieldWidth, base, fillChar); }
+inline QString QString::arg(ushort a, int fieldWidth, int base, const QChar &fillChar) const
+{ return arg(qulonglong(a), fieldWidth, base, fillChar); }
+inline QString QString::arg(const QString &a1, const QString &a2) const
+{ const QString *args[2] = { &a1, &a2 }; return multiArg(2, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3) const
+{ const QString *args[3] = { &a1, &a2, &a3 }; return multiArg(3, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4) const
+{ const QString *args[4] = { &a1, &a2, &a3, &a4 }; return multiArg(4, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5) const
+{ const QString *args[5] = { &a1, &a2, &a3, &a4, &a5 }; return multiArg(5, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6) const
+{ const QString *args[6] = { &a1, &a2, &a3, &a4, &a5, &a6 }; return multiArg(6, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6,
+ const QString &a7) const
+{ const QString *args[7] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7 }; return multiArg(7, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6,
+ const QString &a7, const QString &a8) const
+{ const QString *args[8] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8 }; return multiArg(8, args); }
+inline QString QString::arg(const QString &a1, const QString &a2, const QString &a3,
+ const QString &a4, const QString &a5, const QString &a6,
+ const QString &a7, const QString &a8, const QString &a9) const
+{ const QString *args[9] = { &a1, &a2, &a3, &a4, &a5, &a6, &a7, &a8, &a9 }; return multiArg(9, args); }
+inline QString QString::section(QChar asep, int astart, int aend, SectionFlags aflags) const
+{ return section(QString(asep), astart, aend, aflags); }
+class __attribute__((visibility("default"))) QCharRef {
+ QString &s;
+ int i;
+ inline QCharRef(QString &str, int idx)
+ : s(str),i(idx) {}
+ friend class QString;
+public:
+ inline operator QChar() const
+ { return i < s.d->size ? s.d->data[i] : 0; }
+ inline QCharRef &operator=(const QChar &c)
+ { if (i >= s.d->size) s.expand(i); else s.detach();
+ s.d->data[i] = c.unicode(); return *this; }
+ inline __attribute__ ((__deprecated__)) QCharRef &operator=(char c)
+ { return operator=(QChar::fromAscii(c)); }
+ inline __attribute__ ((__deprecated__)) QCharRef &operator=(uchar c)
+ { return operator=(QChar::fromAscii(c)); }
+ inline QCharRef &operator=(const QCharRef &c) { return operator=(QChar(c)); }
+ inline QCharRef &operator=(ushort rc) { return operator=(QChar(rc)); }
+ inline QCharRef &operator=(short rc) { return operator=(QChar(rc)); }
+ inline QCharRef &operator=(uint rc) { return operator=(QChar(rc)); }
+ inline QCharRef &operator=(int rc) { return operator=(QChar(rc)); }
+ inline bool isNull() const { return QChar(*this).isNull(); }
+ inline bool isPrint() const { return QChar(*this).isPrint(); }
+ inline bool isPunct() const { return QChar(*this).isPunct(); }
+ inline bool isSpace() const { return QChar(*this).isSpace(); }
+ inline bool isMark() const { return QChar(*this).isMark(); }
+ inline bool isLetter() const { return QChar(*this).isLetter(); }
+ inline bool isNumber() const { return QChar(*this).isNumber(); }
+ inline bool isLetterOrNumber() { return QChar(*this).isLetterOrNumber(); }
+ inline bool isDigit() const { return QChar(*this).isDigit(); }
+ inline bool isLower() const { return QChar(*this).isLower(); }
+ inline bool isUpper() const { return QChar(*this).isUpper(); }
+ inline bool isTitleCase() const { return QChar(*this).isTitleCase(); }
+ inline int digitValue() const { return QChar(*this).digitValue(); }
+ QChar toLower() const { return QChar(*this).toLower(); }
+ QChar toUpper() const { return QChar(*this).toUpper(); }
+ QChar toTitleCase () const { return QChar(*this).toTitleCase(); }
+ QChar::Category category() const { return QChar(*this).category(); }
+ QChar::Direction direction() const { return QChar(*this).direction(); }
+ QChar::Joining joining() const { return QChar(*this).joining(); }
+ bool hasMirrored() const { return QChar(*this).hasMirrored(); }
+ QChar mirroredChar() const { return QChar(*this).mirroredChar(); }
+ QString decomposition() const { return QChar(*this).decomposition(); }
+ QChar::Decomposition decompositionTag() const { return QChar(*this).decompositionTag(); }
+ uchar combiningClass() const { return QChar(*this).combiningClass(); }
+ QChar::UnicodeVersion unicodeVersion() const { return QChar(*this).unicodeVersion(); }
+ inline uchar cell() const { return QChar(*this).cell(); }
+ inline uchar row() const { return QChar(*this).row(); }
+ inline void setCell(uchar cell);
+ inline void setRow(uchar row);
+ char toAscii() const { return QChar(*this).toAscii(); }
+ char toLatin1() const { return QChar(*this).toLatin1(); }
+ ushort unicode() const { return QChar(*this).unicode(); }
+ ushort& unicode() { return s.data()[i].unicode(); }
+};
+inline void QCharRef::setRow(uchar arow) { QChar(*this).setRow(arow); }
+inline void QCharRef::setCell(uchar acell) { QChar(*this).setCell(acell); }
+inline QString::QString() : d(&shared_null) { d->ref.ref(); }
+inline QString::~QString() { if (!d->ref.deref()) free(d); }
+inline void QString::reserve(int asize) { if (d->ref != 1 || asize > d->alloc) realloc(asize); d->capacity = 1;}
+inline QString &QString::setUtf16(const ushort *autf16, int asize)
+{ return setUnicode(reinterpret_cast<const QChar *>(autf16), asize); }
+inline QCharRef QString::operator[](int i)
+{ qt_noop(); return QCharRef(*this, i); }
+inline QCharRef QString::operator[](uint i)
+{ return QCharRef(*this, i); }
+inline QString::iterator QString::begin()
+{ detach(); return reinterpret_cast<QChar*>(d->data); }
+inline QString::const_iterator QString::begin() const
+{ return reinterpret_cast<const QChar*>(d->data); }
+inline QString::const_iterator QString::constBegin() const
+{ return reinterpret_cast<const QChar*>(d->data); }
+inline QString::iterator QString::end()
+{ detach(); return reinterpret_cast<QChar*>(d->data + d->size); }
+inline QString::const_iterator QString::end() const
+{ return reinterpret_cast<const QChar*>(d->data + d->size); }
+inline QString::const_iterator QString::constEnd() const
+{ return reinterpret_cast<const QChar*>(d->data + d->size); }
+inline QBool QString::contains(const QString &s, Qt::CaseSensitivity cs) const
+{ return QBool(indexOf(s, 0, cs) != -1); }
+inline QBool QString::contains(QChar c, Qt::CaseSensitivity cs) const
+{ return QBool(indexOf(c, 0, cs) != -1); }
+inline bool operator==(QString::Null, QString::Null) { return true; }
+inline bool operator==(QString::Null, const QString &s) { return s.isNull(); }
+inline bool operator==(const QString &s, QString::Null) { return s.isNull(); }
+inline bool operator!=(QString::Null, QString::Null) { return false; }
+inline bool operator!=(QString::Null, const QString &s) { return !s.isNull(); }
+inline bool operator!=(const QString &s, QString::Null) { return !s.isNull(); }
+inline bool qStringComparisonHelper(const QString &s1, const char *s2)
+{
+ if (QString::codecForCStrings) return (s1 == QString::fromAscii(s2));
+ return (s1 == QLatin1String(s2));
+}
+inline bool QString::operator==(const char *s) const
+{ return qStringComparisonHelper(*this, s); }
+inline bool QString::operator!=(const char *s) const
+{ return !qStringComparisonHelper(*this, s); }
+inline bool QString::operator<(const char *s) const
+{ return *this < QString::fromAscii(s); }
+inline bool QString::operator>(const char *s) const
+{ return *this > QString::fromAscii(s); }
+inline bool QString::operator<=(const char *s) const
+{ return *this <= QString::fromAscii(s); }
+inline bool QString::operator>=(const char *s) const
+{ return *this >= QString::fromAscii(s); }
+inline __attribute__ ((__deprecated__)) bool operator==(const char *s1, const QString &s2)
+{ return qStringComparisonHelper(s2, s1); }
+inline __attribute__ ((__deprecated__)) bool operator!=(const char *s1, const QString &s2)
+{ return !qStringComparisonHelper(s2, s1); }
+inline __attribute__ ((__deprecated__)) bool operator<(const char *s1, const QString &s2)
+{ return (QString::fromAscii(s1) < s2); }
+inline __attribute__ ((__deprecated__)) bool operator>(const char *s1, const QString &s2)
+{ return (QString::fromAscii(s1) > s2); }
+inline __attribute__ ((__deprecated__)) bool operator<=(const char *s1, const QString &s2)
+{ return (QString::fromAscii(s1) <= s2); }
+inline __attribute__ ((__deprecated__)) bool operator>=(const char *s1, const QString &s2)
+{ return (QString::fromAscii(s1) >= s2); }
+inline __attribute__ ((__deprecated__)) bool operator==(const char *s1, const QLatin1String &s2)
+{ return QString::fromAscii(s1) == s2; }
+inline __attribute__ ((__deprecated__)) bool operator!=(const char *s1, const QLatin1String &s2)
+{ return QString::fromAscii(s1) != s2; }
+inline __attribute__ ((__deprecated__)) bool operator<(const char *s1, const QLatin1String &s2)
+{ return (QString::fromAscii(s1) < s2); }
+inline __attribute__ ((__deprecated__)) bool operator>(const char *s1, const QLatin1String &s2)
+{ return (QString::fromAscii(s1) > s2); }
+inline __attribute__ ((__deprecated__)) bool operator<=(const char *s1, const QLatin1String &s2)
+{ return (QString::fromAscii(s1) <= s2); }
+inline __attribute__ ((__deprecated__)) bool operator>=(const char *s1, const QLatin1String &s2)
+{ return (QString::fromAscii(s1) >= s2); }
+inline bool operator==(const QLatin1String &s1, const QLatin1String &s2)
+{ return (qstrcmp(s1.latin1(), s2.latin1()) == 0); }
+inline bool operator!=(const QLatin1String &s1, const QLatin1String &s2)
+{ return (qstrcmp(s1.latin1(), s2.latin1()) != 0); }
+inline bool operator<(const QLatin1String &s1, const QLatin1String &s2)
+{ return (qstrcmp(s1.latin1(), s2.latin1()) < 0); }
+inline bool operator<=(const QLatin1String &s1, const QLatin1String &s2)
+{ return (qstrcmp(s1.latin1(), s2.latin1()) <= 0); }
+inline bool operator>(const QLatin1String &s1, const QLatin1String &s2)
+{ return (qstrcmp(s1.latin1(), s2.latin1()) > 0); }
+inline bool operator>=(const QLatin1String &s1, const QLatin1String &s2)
+{ return (qstrcmp(s1.latin1(), s2.latin1()) >= 0); }
+inline bool QString::operator==(const QByteArray &s) const
+{ return qStringComparisonHelper(*this, s.constData()); }
+inline bool QString::operator!=(const QByteArray &s) const
+{ return !qStringComparisonHelper(*this, s.constData()); }
+inline bool QByteArray::operator==(const QString &s) const
+{ return qStringComparisonHelper(s, constData()); }
+inline bool QByteArray::operator!=(const QString &s) const
+{ return !qStringComparisonHelper(s, constData()); }
+inline bool QByteArray::operator<(const QString &s) const
+{ return QString::fromAscii(constData(), size()) < s; }
+inline bool QByteArray::operator>(const QString &s) const
+{ return QString::fromAscii(constData(), size()) > s; }
+inline bool QByteArray::operator<=(const QString &s) const
+{ return QString::fromAscii(constData(), size()) <= s; }
+inline bool QByteArray::operator>=(const QString &s) const
+{ return QString::fromAscii(constData(), size()) >= s; }
+inline const QString operator+(const QString &s1, const QString &s2)
+{ QString t(s1); t += s2; return t; }
+inline const QString operator+(const QString &s1, QChar s2)
+{ QString t(s1); t += s2; return t; }
+inline const QString operator+(QChar s1, const QString &s2)
+{ QString t(s1); t += s2; return t; }
+inline __attribute__ ((__deprecated__)) const QString operator+(const QString &s1, const char *s2)
+{ QString t(s1); t += QString::fromAscii(s2); return t; }
+inline __attribute__ ((__deprecated__)) const QString operator+(const char *s1, const QString &s2)
+{ QString t = QString::fromAscii(s1); t += s2; return t; }
+inline __attribute__ ((__deprecated__)) const QString operator+(char c, const QString &s)
+{ QString t = s; t.prepend(QChar::fromAscii(c)); return t; }
+inline __attribute__ ((__deprecated__)) const QString operator+(const QString &s, char c)
+{ QString t = s; t += QChar::fromAscii(c); return t; }
+inline __attribute__ ((__deprecated__)) const QString operator+(const QByteArray &ba, const QString &s)
+{ QString t = QString::fromAscii(ba.constData(), qstrnlen(ba.constData(), ba.size())); t += s; return t; }
+inline __attribute__ ((__deprecated__)) const QString operator+(const QString &s, const QByteArray &ba)
+{ QString t(s); t += QString::fromAscii(ba.constData(), qstrnlen(ba.constData(), ba.size())); return t; }
+inline std::string QString::toStdString() const
+{ const QByteArray asc = toAscii(); return std::string(asc.constData(), asc.length()); }
+inline QString QString::fromStdString(const std::string &s)
+{ return fromAscii(s.data(), int(s.size())); }
+inline QStdWString QString::toStdWString() const
+{
+ QStdWString str;
+ str.resize(length());
+ str.resize(toWCharArray(&(*str.begin())));
+ return str;
+}
+inline QString QString::fromStdWString(const QStdWString &s)
+{ return fromWCharArray(s.data(), int(s.size())); }
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QString &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QString &);
+template <> class QTypeInfo<QString> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QString)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QString"; } };
+template <> inline bool qIsDetached<QString>(QString &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QString>(QString &value1, QString &value2) { const QString::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+inline QFlags<QString::SectionFlags::enum_type> operator|(QString::SectionFlags::enum_type f1, QString::SectionFlags::enum_type f2) { return QFlags<QString::SectionFlags::enum_type>(f1) | f2; } inline QFlags<QString::SectionFlags::enum_type> operator|(QString::SectionFlags::enum_type f1, QFlags<QString::SectionFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QString::SectionFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+class __attribute__((visibility("default"))) QStringRef {
+ const QString *m_string;
+ int m_position;
+ int m_size;
+public:
+ inline QStringRef():m_string(0), m_position(0), m_size(0){}
+ inline QStringRef(const QString *string, int position, int size);
+ inline QStringRef(const QString *string);
+ inline QStringRef(const QStringRef &other)
+ :m_string(other.m_string), m_position(other.m_position), m_size(other.m_size)
+ {}
+ inline ~QStringRef(){}
+ inline const QString *string() const { return m_string; }
+ inline int position() const { return m_position; }
+ inline int size() const { return m_size; }
+ inline int count() const { return m_size; }
+ inline int length() const { return m_size; }
+ inline QStringRef &operator=(const QStringRef &other) {
+ m_string = other.m_string; m_position = other.m_position;
+ m_size = other.m_size; return *this;
+ }
+ inline QStringRef &operator=(const QString *string);
+ inline const QChar *unicode() const {
+ if (!m_string)
+ return reinterpret_cast<const QChar *>(QString::shared_null.data);
+ return m_string->unicode() + m_position;
+ }
+ inline const QChar *data() const { return unicode(); }
+ inline const QChar *constData() const { return unicode(); }
+ inline void clear() { m_string = 0; m_position = m_size = 0; }
+ QString toString() const;
+ inline bool isEmpty() const { return m_size == 0; }
+ inline bool isNull() const { return m_string == 0 || m_string->isNull(); }
+ QStringRef appendTo(QString *string) const;
+ inline const QChar at(int i) const
+ { qt_noop(); return m_string->at(i + m_position); }
+ int compare(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int compare(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ int compare(QLatin1String s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ static int compare(const QStringRef &s1, const QString &s2,
+ Qt::CaseSensitivity = Qt::CaseSensitive);
+ static int compare(const QStringRef &s1, const QStringRef &s2,
+ Qt::CaseSensitivity = Qt::CaseSensitive);
+ static int compare(const QStringRef &s1, QLatin1String s2,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ int localeAwareCompare(const QString &s) const;
+ int localeAwareCompare(const QStringRef &s) const;
+ static int localeAwareCompare(const QStringRef &s1, const QString &s2);
+ static int localeAwareCompare(const QStringRef &s1, const QStringRef &s2);
+};
+inline QStringRef &QStringRef::operator=(const QString *aString)
+{ m_string = aString; m_position = 0; m_size = aString?aString->size():0; return *this; }
+inline QStringRef::QStringRef(const QString *aString, int aPosition, int aSize)
+ :m_string(aString), m_position(aPosition), m_size(aSize){}
+inline QStringRef::QStringRef(const QString *aString)
+ :m_string(aString), m_position(0), m_size(aString?aString->size() : 0){}
+__attribute__((visibility("default"))) bool operator==(const QStringRef &s1,const QStringRef &s2);
+inline bool operator!=(const QStringRef &s1,const QStringRef &s2)
+{ return !(s1 == s2); }
+__attribute__((visibility("default"))) bool operator==(const QString &s1,const QStringRef &s2);
+inline bool operator!=(const QString &s1,const QStringRef &s2)
+{ return !(s1 == s2); }
+inline bool operator==(const QStringRef &s1,const QString &s2)
+{ return s2 == s1; }
+inline bool operator!=(const QStringRef &s1,const QString &s2)
+{ return s2 != s1; }
+__attribute__((visibility("default"))) bool operator==(const QLatin1String &s1, const QStringRef &s2);
+inline bool operator!=(const QLatin1String &s1,const QStringRef &s2)
+{ return !(s1 == s2); }
+inline bool operator==(const QStringRef &s1,const QLatin1String &s2)
+{ return s2 == s1; }
+inline bool operator!=(const QStringRef &s1,const QLatin1String &s2)
+{ return s2 != s1; }
+__attribute__((visibility("default"))) bool operator<(const QStringRef &s1,const QStringRef &s2);
+inline bool operator>(const QStringRef &s1, const QStringRef &s2)
+{ return s2 < s1; }
+inline bool operator<=(const QStringRef &s1, const QStringRef &s2)
+{ return !(s1 > s2); }
+inline bool operator>=(const QStringRef &s1, const QStringRef &s2)
+{ return !(s1 < s2); }
+inline bool qStringComparisonHelper(const QStringRef &s1, const char *s2)
+{
+ if (QString::codecForCStrings) return (s1 == QString::fromAscii(s2));
+ return (s1 == QLatin1String(s2));
+}
+inline __attribute__ ((__deprecated__)) bool operator==(const char *s1, const QStringRef &s2)
+{ return qStringComparisonHelper(s2, s1); }
+inline __attribute__ ((__deprecated__)) bool operator==(const QStringRef &s1, const char *s2)
+{ return qStringComparisonHelper(s1, s2); }
+inline __attribute__ ((__deprecated__)) bool operator!=(const char *s1, const QStringRef &s2)
+{ return !qStringComparisonHelper(s2, s1); }
+inline __attribute__ ((__deprecated__)) bool operator!=(const QStringRef &s1, const char *s2)
+{ return !qStringComparisonHelper(s1, s2); }
+inline int QString::compare(const QStringRef &s, Qt::CaseSensitivity cs) const
+{ return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); }
+inline int QString::compare(const QString &s1, const QStringRef &s2, Qt::CaseSensitivity cs)
+{ return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); }
+inline int QStringRef::compare(const QString &s, Qt::CaseSensitivity cs) const
+{ return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); }
+inline int QStringRef::compare(const QStringRef &s, Qt::CaseSensitivity cs) const
+{ return QString::compare_helper(constData(), length(), s.constData(), s.length(), cs); }
+inline int QStringRef::compare(QLatin1String s, Qt::CaseSensitivity cs) const
+{ return QString::compare_helper(constData(), length(), s, cs); }
+inline int QStringRef::compare(const QStringRef &s1, const QString &s2, Qt::CaseSensitivity cs)
+{ return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); }
+inline int QStringRef::compare(const QStringRef &s1, const QStringRef &s2, Qt::CaseSensitivity cs)
+{ return QString::compare_helper(s1.constData(), s1.length(), s2.constData(), s2.length(), cs); }
+inline int QStringRef::compare(const QStringRef &s1, QLatin1String s2, Qt::CaseSensitivity cs)
+{ return QString::compare_helper(s1.constData(), s1.length(), s2, cs); }
+inline int QString::localeAwareCompare(const QStringRef &s) const
+{ return localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); }
+inline int QString::localeAwareCompare(const QString& s1, const QStringRef& s2)
+{ return localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); }
+inline int QStringRef::localeAwareCompare(const QString &s) const
+{ return QString::localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); }
+inline int QStringRef::localeAwareCompare(const QStringRef &s) const
+{ return QString::localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); }
+inline int QStringRef::localeAwareCompare(const QStringRef &s1, const QString &s2)
+{ return QString::localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); }
+inline int QStringRef::localeAwareCompare(const QStringRef &s1, const QStringRef &s2)
+{ return QString::localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); }
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QEvent;
+class QTimerEvent;
+class QChildEvent;
+struct QMetaObject;
+class QVariant;
+class QObjectPrivate;
+class QObject;
+class QThread;
+class QWidget;
+class QRegExp;
+class QObjectUserData;
+typedef QList<QObject*> QObjectList;
+template<typename T> inline T qFindChild(const QObject *, const QString & = QString());
+template<typename T> inline QList<T> qFindChildren(const QObject *, const QString & = QString());
+template<typename T> inline QList<T> qFindChildren(const QObject *, const QRegExp &);
+class QObjectData {
+public:
+ virtual ~QObjectData() = 0;
+ QObject *q_ptr;
+ QObject *parent;
+ QObjectList children;
+ uint isWidget : 1;
+ uint pendTimer : 1;
+ uint blockSig : 1;
+ uint wasDeleted : 1;
+ uint ownObjectName : 1;
+ uint sendChildEvents : 1;
+ uint receiveChildEvents : 1;
+ uint inEventHandler : 1;
+ uint inThreadChangeEvent : 1;
+ uint unused : 23;
+ int postedEvents;
+};
+class __attribute__((visibility("default"))) QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+ inline QObjectPrivate* d_func() { return reinterpret_cast<QObjectPrivate *>(d_ptr); } inline const QObjectPrivate* d_func() const { return reinterpret_cast<const QObjectPrivate *>(d_ptr); } friend class QObjectPrivate;
+public:
+ explicit QObject(QObject *parent=0);
+ virtual ~QObject();
+ virtual bool event(QEvent *);
+ virtual bool eventFilter(QObject *, QEvent *);
+ QString objectName() const;
+ void setObjectName(const QString &name);
+ inline bool isWidgetType() const { return d_ptr->isWidget; }
+ inline bool signalsBlocked() const { return d_ptr->blockSig; }
+ bool blockSignals(bool b);
+ QThread *thread() const;
+ void moveToThread(QThread *thread);
+ int startTimer(int interval);
+ void killTimer(int id);
+ template<typename T>
+ inline T findChild(const QString &aName = QString()) const
+ { return qFindChild<T>(this, aName); }
+ template<typename T>
+ inline QList<T> findChildren(const QString &aName = QString()) const
+ { return qFindChildren<T>(this, aName); }
+ template<typename T>
+ inline QList<T> findChildren(const QRegExp &re) const
+ { return qFindChildren<T>(this, re); }
+ inline const QObjectList &children() const { return d_ptr->children; }
+ void setParent(QObject *);
+ void installEventFilter(QObject *);
+ void removeEventFilter(QObject *);
+ static bool connect(const QObject *sender, const char *signal,
+ const QObject *receiver, const char *member, Qt::ConnectionType =
+ Qt::AutoConnection
+ );
+ inline bool connect(const QObject *sender, const char *signal,
+ const char *member, Qt::ConnectionType type =
+ Qt::AutoConnection
+ ) const;
+ static bool disconnect(const QObject *sender, const char *signal,
+ const QObject *receiver, const char *member);
+ inline bool disconnect(const char *signal = 0,
+ const QObject *receiver = 0, const char *member = 0)
+ { return disconnect(this, signal, receiver, member); }
+ inline bool disconnect(const QObject *receiver, const char *member = 0)
+ { return disconnect(this, 0, receiver, member); }
+ void dumpObjectTree();
+ void dumpObjectInfo();
+ bool setProperty(const char *name, const QVariant &value);
+ QVariant property(const char *name) const;
+ QList<QByteArray> dynamicPropertyNames() const;
+ static uint registerUserData();
+ void setUserData(uint id, QObjectUserData* data);
+ QObjectUserData* userData(uint id) const;
+protected:
+ void destroyed(QObject * = 0);
+public:
+ inline QObject *parent() const { return d_ptr->parent; }
+ inline bool inherits(const char *classname) const
+ { return const_cast<QObject *>(this)->qt_metacast(classname) != 0; }
+public :
+ void deleteLater();
+protected:
+ QObject *sender() const;
+ int receivers(const char* signal) const;
+ virtual void timerEvent(QTimerEvent *);
+ virtual void childEvent(QChildEvent *);
+ virtual void customEvent(QEvent *);
+ virtual void connectNotify(const char *signal);
+ virtual void disconnectNotify(const char *signal);
+protected:
+ QObject(QObjectPrivate &dd, QObject *parent = 0);
+protected:
+ QObjectData *d_ptr;
+ static const QMetaObject staticQtMetaObject;
+ friend struct QMetaObject;
+ friend class QApplication;
+ friend class QApplicationPrivate;
+ friend class QCoreApplication;
+ friend class QCoreApplicationPrivate;
+ friend class QWidget;
+ friend class QThreadData;
+private:
+ QObject(const QObject &); QObject &operator=(const QObject &);
+};
+inline bool QObject::connect(const QObject *asender, const char *asignal,
+ const char *amember, Qt::ConnectionType atype) const
+{ return connect(asender, asignal, this, amember, atype); }
+class __attribute__((visibility("default"))) QObjectUserData {
+public:
+ virtual ~QObjectUserData();
+};
+__attribute__((visibility("default"))) void qt_qFindChildren_helper(const QObject *parent, const QString &name, const QRegExp *re,
+ const QMetaObject &mo, QList<void *> *list);
+__attribute__((visibility("default"))) QObject *qt_qFindChild_helper(const QObject *parent, const QString &name, const QMetaObject &mo);
+template<typename T>
+inline T qFindChild(const QObject *o, const QString &name)
+{ return static_cast<T>(qt_qFindChild_helper(o, name, reinterpret_cast<T>(0)->staticMetaObject)); }
+template<typename T>
+inline QList<T> qFindChildren(const QObject *o, const QString &name)
+{
+ QList<T> list;
+ union {
+ QList<T> *typedList;
+ QList<void *> *voidList;
+ } u;
+ u.typedList = &list;
+ qt_qFindChildren_helper(o, name, 0, reinterpret_cast<T>(0)->staticMetaObject, u.voidList);
+ return list;
+}
+template<typename T>
+inline QList<T> qFindChildren(const QObject *o, const QRegExp &re)
+{
+ QList<T> list;
+ union {
+ QList<T> *typedList;
+ QList<void *> *voidList;
+ } u;
+ u.typedList = &list;
+ qt_qFindChildren_helper(o, QString(), &re, reinterpret_cast<T>(0)->staticMetaObject, u.voidList);
+ return list;
+}
+template <class T>
+inline T qobject_cast(QObject *object)
+{
+ reinterpret_cast<T>(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast<T>(object));
+ return static_cast<T>(reinterpret_cast<T>(0)->staticMetaObject.cast(object));
+}
+template <class T>
+inline T qobject_cast(const QObject *object)
+{
+ register T ptr = static_cast<T>(object);
+ (void)ptr;;
+ reinterpret_cast<T>(0)->qt_check_for_QOBJECT_macro(*reinterpret_cast<T>(const_cast<QObject *>(object)));
+ return static_cast<T>(const_cast<QObject *>(reinterpret_cast<T>(0)->staticMetaObject.cast(const_cast<QObject *>(object))));
+}
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QObject *);
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QByteArray;
+class QIODevicePrivate;
+class __attribute__((visibility("default"))) QIODevice
+ : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+public:
+ enum OpenModeFlag {
+ NotOpen = 0x0000,
+ ReadOnly = 0x0001,
+ WriteOnly = 0x0002,
+ ReadWrite = ReadOnly | WriteOnly,
+ Append = 0x0004,
+ Truncate = 0x0008,
+ Text = 0x0010,
+ Unbuffered = 0x0020
+ };
+ typedef QFlags<OpenModeFlag> OpenMode;
+ QIODevice();
+ explicit QIODevice(QObject *parent);
+ virtual ~QIODevice();
+ OpenMode openMode() const;
+ void setTextModeEnabled(bool enabled);
+ bool isTextModeEnabled() const;
+ bool isOpen() const;
+ bool isReadable() const;
+ bool isWritable() const;
+ virtual bool isSequential() const;
+ virtual bool open(OpenMode mode);
+ virtual void close();
+ virtual qint64 pos() const;
+ virtual qint64 size() const;
+ virtual bool seek(qint64 pos);
+ virtual bool atEnd() const;
+ virtual bool reset();
+ virtual qint64 bytesAvailable() const;
+ virtual qint64 bytesToWrite() const;
+ qint64 read(char *data, qint64 maxlen);
+ QByteArray read(qint64 maxlen);
+ QByteArray readAll();
+ qint64 readLine(char *data, qint64 maxlen);
+ QByteArray readLine(qint64 maxlen = 0);
+ virtual bool canReadLine() const;
+ qint64 write(const char *data, qint64 len);
+ qint64 write(const char *data);
+ inline qint64 write(const QByteArray &data)
+ { return write(data.constData(), data.size()); }
+ qint64 peek(char *data, qint64 maxlen);
+ QByteArray peek(qint64 maxlen);
+ virtual bool waitForReadyRead(int msecs);
+ virtual bool waitForBytesWritten(int msecs);
+ void ungetChar(char c);
+ bool putChar(char c);
+ bool getChar(char *c);
+ QString errorString() const;
+protected:
+ void readyRead();
+ void bytesWritten(qint64 bytes);
+ void aboutToClose();
+ void readChannelFinished();
+protected:
+ QIODevice(QIODevicePrivate &dd, QObject *parent = 0);
+ virtual qint64 readData(char *data, qint64 maxlen) = 0;
+ virtual qint64 readLineData(char *data, qint64 maxlen);
+ virtual qint64 writeData(const char *data, qint64 len) = 0;
+ void setOpenMode(OpenMode openMode);
+ void setErrorString(const QString &errorString);
+private:
+ inline QIODevicePrivate* d_func() { return reinterpret_cast<QIODevicePrivate *>(d_ptr); } inline const QIODevicePrivate* d_func() const { return reinterpret_cast<const QIODevicePrivate *>(d_ptr); } friend class QIODevicePrivate;
+ QIODevice(const QIODevice &); QIODevice &operator=(const QIODevice &);
+};
+inline QFlags<QIODevice::OpenMode::enum_type> operator|(QIODevice::OpenMode::enum_type f1, QIODevice::OpenMode::enum_type f2) { return QFlags<QIODevice::OpenMode::enum_type>(f1) | f2; } inline QFlags<QIODevice::OpenMode::enum_type> operator|(QIODevice::OpenMode::enum_type f1, QFlags<QIODevice::OpenMode::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QIODevice::OpenMode::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+class QDebug;
+__attribute__((visibility("default"))) QDebug operator<<(QDebug debug, QIODevice::OpenMode modes);
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QByteArray;
+class QIODevice;
+template <typename T> class QList;
+template <typename T> class QLinkedList;
+template <typename T> class QVector;
+template <typename T> class QSet;
+template <class Key, class T> class QHash;
+template <class Key, class T> class QMap;
+class QDataStreamPrivate;
+class __attribute__((visibility("default"))) QDataStream
+{
+public:
+ enum Version {
+ Qt_1_0 = 1,
+ Qt_2_0 = 2,
+ Qt_2_1 = 3,
+ Qt_3_0 = 4,
+ Qt_3_1 = 5,
+ Qt_3_3 = 6,
+ Qt_4_0 = 7,
+ Qt_4_1 = Qt_4_0,
+ Qt_4_2 = 8,
+ Qt_4_3 = 9,
+ Qt_4_4 = 10,
+ Qt_4_5 = 11
+ };
+ enum ByteOrder {
+ BigEndian = QSysInfo::BigEndian,
+ LittleEndian = QSysInfo::LittleEndian
+ };
+ enum Status {
+ Ok,
+ ReadPastEnd,
+ ReadCorruptData
+ };
+ QDataStream();
+ explicit QDataStream(QIODevice *);
+ QDataStream(QByteArray *, QIODevice::OpenMode flags);
+ QDataStream(const QByteArray &);
+ virtual ~QDataStream();
+ QIODevice *device() const;
+ void setDevice(QIODevice *);
+ void unsetDevice();
+ bool atEnd() const;
+ Status status() const;
+ void setStatus(Status status);
+ void resetStatus();
+ ByteOrder byteOrder() const;
+ void setByteOrder(ByteOrder);
+ int version() const;
+ void setVersion(int);
+ QDataStream &operator>>(qint8 &i);
+ QDataStream &operator>>(quint8 &i);
+ QDataStream &operator>>(qint16 &i);
+ QDataStream &operator>>(quint16 &i);
+ QDataStream &operator>>(qint32 &i);
+ QDataStream &operator>>(quint32 &i);
+ QDataStream &operator>>(qint64 &i);
+ QDataStream &operator>>(quint64 &i);
+ QDataStream &operator>>(bool &i);
+ QDataStream &operator>>(float &f);
+ QDataStream &operator>>(double &f);
+ QDataStream &operator>>(char *&str);
+ QDataStream &operator<<(qint8 i);
+ QDataStream &operator<<(quint8 i);
+ QDataStream &operator<<(qint16 i);
+ QDataStream &operator<<(quint16 i);
+ QDataStream &operator<<(qint32 i);
+ QDataStream &operator<<(quint32 i);
+ QDataStream &operator<<(qint64 i);
+ QDataStream &operator<<(quint64 i);
+ QDataStream &operator<<(bool i);
+ QDataStream &operator<<(float f);
+ QDataStream &operator<<(double f);
+ QDataStream &operator<<(const char *str);
+ QDataStream &readBytes(char *&, uint &len);
+ int readRawData(char *, int len);
+ QDataStream &writeBytes(const char *, uint len);
+ int writeRawData(const char *, int len);
+ int skipRawData(int len);
+private:
+ QDataStream(const QDataStream &); QDataStream &operator=(const QDataStream &);
+ QDataStreamPrivate *d;
+ QIODevice *dev;
+ bool owndev;
+ bool noswap;
+ ByteOrder byteorder;
+ int ver;
+ Status q_status;
+};
+inline QIODevice *QDataStream::device() const
+{ return dev; }
+inline QDataStream::ByteOrder QDataStream::byteOrder() const
+{ return byteorder; }
+inline int QDataStream::version() const
+{ return ver; }
+inline void QDataStream::setVersion(int v)
+{ ver = v; }
+inline QDataStream &QDataStream::operator>>(quint8 &i)
+{ return *this >> reinterpret_cast<qint8&>(i); }
+inline QDataStream &QDataStream::operator>>(quint16 &i)
+{ return *this >> reinterpret_cast<qint16&>(i); }
+inline QDataStream &QDataStream::operator>>(quint32 &i)
+{ return *this >> reinterpret_cast<qint32&>(i); }
+inline QDataStream &QDataStream::operator>>(quint64 &i)
+{ return *this >> reinterpret_cast<qint64&>(i); }
+inline QDataStream &QDataStream::operator<<(quint8 i)
+{ return *this << qint8(i); }
+inline QDataStream &QDataStream::operator<<(quint16 i)
+{ return *this << qint16(i); }
+inline QDataStream &QDataStream::operator<<(quint32 i)
+{ return *this << qint32(i); }
+inline QDataStream &QDataStream::operator<<(quint64 i)
+{ return *this << qint64(i); }
+template <typename T>
+QDataStream& operator>>(QDataStream& s, QList<T>& l)
+{
+ l.clear();
+ quint32 c;
+ s >> c;
+ for(quint32 i = 0; i < c; ++i)
+ {
+ T t;
+ s >> t;
+ l.append(t);
+ if (s.atEnd())
+ break;
+ }
+ return s;
+}
+template <typename T>
+QDataStream& operator<<(QDataStream& s, const QList<T>& l)
+{
+ s << quint32(l.size());
+ for (int i = 0; i < l.size(); ++i)
+ s << l.at(i);
+ return s;
+}
+template <typename T>
+QDataStream& operator>>(QDataStream& s, QLinkedList<T>& l)
+{
+ l.clear();
+ quint32 c;
+ s >> c;
+ for(quint32 i = 0; i < c; ++i)
+ {
+ T t;
+ s >> t;
+ l.append(t);
+ if (s.atEnd())
+ break;
+ }
+ return s;
+}
+template <typename T>
+QDataStream& operator<<(QDataStream& s, const QLinkedList<T>& l)
+{
+ s << quint32(l.size());
+ typename QLinkedList<T>::ConstIterator it = l.constBegin();
+ for(; it != l.constEnd(); ++it)
+ s << *it;
+ return s;
+}
+template<typename T>
+QDataStream& operator>>(QDataStream& s, QVector<T>& v)
+{
+ v.clear();
+ quint32 c;
+ s >> c;
+ v.resize(c);
+ for(quint32 i = 0; i < c; ++i) {
+ T t;
+ s >> t;
+ v[i] = t;
+ }
+ return s;
+}
+template<typename T>
+QDataStream& operator<<(QDataStream& s, const QVector<T>& v)
+{
+ s << quint32(v.size());
+ for (typename QVector<T>::const_iterator it = v.begin(); it != v.end(); ++it)
+ s << *it;
+ return s;
+}
+template <typename T>
+QDataStream &operator>>(QDataStream &in, QSet<T> &set)
+{
+ set.clear();
+ quint32 c;
+ in >> c;
+ for (quint32 i = 0; i < c; ++i) {
+ T t;
+ in >> t;
+ set << t;
+ if (in.atEnd())
+ break;
+ }
+ return in;
+}
+template <typename T>
+QDataStream& operator<<(QDataStream &out, const QSet<T> &set)
+{
+ out << quint32(set.size());
+ typename QSet<T>::const_iterator i = set.constBegin();
+ while (i != set.constEnd()) {
+ out << *i;
+ ++i;
+ }
+ return out;
+}
+template <class Key, class T>
+ QDataStream &operator>>(QDataStream &in, QHash<Key, T> &hash)
+{
+ QDataStream::Status oldStatus = in.status();
+ in.resetStatus();
+ hash.clear();
+ quint32 n;
+ in >> n;
+ for (quint32 i = 0; i < n; ++i) {
+ if (in.status() != QDataStream::Ok)
+ break;
+ Key k;
+ T t;
+ in >> k >> t;
+ hash.insertMulti(k, t);
+ }
+ if (in.status() != QDataStream::Ok)
+ hash.clear();
+ if (oldStatus != QDataStream::Ok)
+ in.setStatus(oldStatus);
+ return in;
+}
+template <class Key, class T>
+ QDataStream &operator<<(QDataStream &out, const QHash<Key, T>& hash)
+{
+ out << quint32(hash.size());
+ typename QHash<Key, T>::ConstIterator it = hash.end();
+ typename QHash<Key, T>::ConstIterator begin = hash.begin();
+ while (it != begin) {
+ --it;
+ out << it.key() << it.value();
+ }
+ return out;
+}
+template <class aKey, class aT>
+ QDataStream &operator>>(QDataStream &in, QMap<aKey, aT> &map)
+{
+ QDataStream::Status oldStatus = in.status();
+ in.resetStatus();
+ map.clear();
+ quint32 n;
+ in >> n;
+ map.detach();
+ map.setInsertInOrder(true);
+ for (quint32 i = 0; i < n; ++i) {
+ if (in.status() != QDataStream::Ok)
+ break;
+ aKey key;
+ aT value;
+ in >> key >> value;
+ map.insertMulti(key, value);
+ }
+ map.setInsertInOrder(false);
+ if (in.status() != QDataStream::Ok)
+ map.clear();
+ if (oldStatus != QDataStream::Ok)
+ in.setStatus(oldStatus);
+ return in;
+}
+template <class Key, class T>
+ QDataStream &operator<<(QDataStream &out, const QMap<Key, T> &map)
+{
+ out << quint32(map.size());
+ typename QMap<Key, T>::ConstIterator it = map.end();
+ typename QMap<Key, T>::ConstIterator begin = map.begin();
+ while (it != begin) {
+ --it;
+ out << it.key() << it.value();
+ }
+ return out;
+}
+typedef QtValidLicenseForCoreModule QtCoreModule;
+template <class T1, class T2>
+struct QPair
+{
+ typedef T1 first_type;
+ typedef T2 second_type;
+ QPair() : first(T1()), second(T2()) {}
+ QPair(const T1 &t1, const T2 &t2) : first(t1), second(t2) {}
+ QPair<T1, T2> &operator=(const QPair<T1, T2> &other)
+ { first = other.first; second = other.second; return *this; }
+ T1 first;
+ T2 second;
+};
+template <class T1, class T2>
+inline bool operator==(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
+{ return p1.first == p2.first && p1.second == p2.second; }
+template <class T1, class T2>
+inline bool operator!=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
+{ return !(p1 == p2); }
+template <class T1, class T2>
+inline bool operator<(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
+{
+ return p1.first < p2.first || (!(p2.first < p1.first) && p1.second < p2.second);
+}
+template <class T1, class T2>
+inline bool operator>(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
+{
+ return p2 < p1;
+}
+template <class T1, class T2>
+inline bool operator<=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
+{
+ return !(p2 < p1);
+}
+template <class T1, class T2>
+inline bool operator>=(const QPair<T1, T2> &p1, const QPair<T1, T2> &p2)
+{
+ return !(p1 < p2);
+}
+template <class T1, class T2>
+ QPair<T1, T2> qMakePair(const T1 &x, const T2 &y)
+{
+ return QPair<T1, T2>(x, y);
+}
+template <class T1, class T2>
+inline QDataStream& operator>>(QDataStream& s, QPair<T1, T2>& p)
+{
+ s >> p.first >> p.second;
+ return s;
+}
+template <class T1, class T2>
+inline QDataStream& operator<<(QDataStream& s, const QPair<T1, T2>& p)
+{
+ s << p.first << p.second;
+ return s;
+}
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QBitArray;
+class QByteArray;
+class QString;
+class QStringRef;
+inline uint qHash(char key) { return uint(key); }
+inline uint qHash(uchar key) { return uint(key); }
+inline uint qHash(signed char key) { return uint(key); }
+inline uint qHash(ushort key) { return uint(key); }
+inline uint qHash(short key) { return uint(key); }
+inline uint qHash(uint key) { return key; }
+inline uint qHash(int key) { return uint(key); }
+inline uint qHash(ulong key)
+{
+ if (sizeof(ulong) > sizeof(uint)) {
+ return uint((key >> (8 * sizeof(uint) - 1)) ^ key);
+ } else {
+ return uint(key);
+ }
+}
+inline uint qHash(long key) { return qHash(ulong(key)); }
+inline uint qHash(quint64 key)
+{
+ if (sizeof(quint64) > sizeof(uint)) {
+ return uint((key >> (8 * sizeof(uint) - 1)) ^ key);
+ } else {
+ return uint(key);
+ }
+}
+inline uint qHash(qint64 key) { return qHash(quint64(key)); }
+inline uint qHash(QChar key) { return qHash(key.unicode()); }
+__attribute__((visibility("default"))) uint qHash(const QByteArray &key);
+__attribute__((visibility("default"))) uint qHash(const QString &key);
+__attribute__((visibility("default"))) uint qHash(const QStringRef &key);
+__attribute__((visibility("default"))) uint qHash(const QBitArray &key);
+template <class T> inline uint qHash(const T *key)
+{
+ if (sizeof(const T *) > sizeof(uint))
+ return qHash(reinterpret_cast<quint64>(key));
+ else
+ return uint(reinterpret_cast<ulong>(key));
+}
+template <typename T1, typename T2> inline uint qHash(const QPair<T1, T2> &key)
+{
+ uint h1 = qHash(key.first);
+ uint h2 = qHash(key.second);
+ return ((h1 << 16) | (h1 >> 16)) ^ h2;
+}
+struct __attribute__((visibility("default"))) QHashData
+{
+ struct Node {
+ Node *next;
+ uint h;
+ };
+ Node *fakeNext;
+ Node **buckets;
+ QBasicAtomicInt ref;
+ int size;
+ int nodeSize;
+ short userNumBits;
+ short numBits;
+ int numBuckets;
+ uint sharable : 1;
+ void *allocateNode();
+ void freeNode(void *node);
+ QHashData *detach_helper(void (*node_duplicate)(Node *, void *), int nodeSize);
+ void mightGrow();
+ bool willGrow();
+ void hasShrunk();
+ void rehash(int hint);
+ void destroyAndFree();
+ Node *firstNode();
+ static Node *nextNode(Node *node);
+ static Node *previousNode(Node *node);
+ static QHashData shared_null;
+};
+inline void QHashData::mightGrow()
+{
+ if (size >= numBuckets)
+ rehash(numBits + 1);
+}
+inline bool QHashData::willGrow()
+{
+ if (size >= numBuckets) {
+ rehash(numBits + 1);
+ return true;
+ } else {
+ return false;
+ }
+}
+inline void QHashData::hasShrunk()
+{
+ if (size <= (numBuckets >> 3) && numBits > userNumBits)
+ rehash(qMax(int(numBits) - 2, int(userNumBits)));
+}
+inline QHashData::Node *QHashData::firstNode()
+{
+ Node *e = reinterpret_cast<Node *>(this);
+ Node **bucket = buckets;
+ int n = numBuckets;
+ while (n--) {
+ if (*bucket != e)
+ return *bucket;
+ ++bucket;
+ }
+ return e;
+}
+struct QHashDummyValue
+{
+};
+inline bool operator==(const QHashDummyValue & , const QHashDummyValue & )
+{
+ return true;
+}
+template <> class QTypeInfo<QHashDummyValue> { public: enum { isComplex = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QHashDummyValue)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE | Q_DUMMY_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QHashDummyValue"; } };
+template <class Key, class T>
+struct QHashDummyNode
+{
+ QHashDummyNode *next;
+ uint h;
+ Key key;
+ inline QHashDummyNode(const Key &key0) : key(key0) {}
+};
+template <class Key, class T>
+struct QHashNode
+{
+ QHashNode *next;
+ uint h;
+ Key key;
+ T value;
+ inline QHashNode(const Key &key0) : key(key0) {}
+ inline QHashNode(const Key &key0, const T &value0) : key(key0), value(value0) {}
+ inline bool same_key(uint h0, const Key &key0) { return h0 == h && key0 == key; }
+};
+template <class T> struct QHashDummyNode<short, T> { QHashDummyNode *next; union { uint h; short key; }; inline QHashDummyNode(short ) {} }; template <class T> struct QHashNode<short, T> { QHashNode *next; union { uint h; short key; }; T value; inline QHashNode(short ) {} inline QHashNode(short , const T &value0) : value(value0) {} inline bool same_key(uint h0, short) { return h0 == h; } };
+template <class T> struct QHashDummyNode<ushort, T> { QHashDummyNode *next; union { uint h; ushort key; }; inline QHashDummyNode(ushort ) {} }; template <class T> struct QHashNode<ushort, T> { QHashNode *next; union { uint h; ushort key; }; T value; inline QHashNode(ushort ) {} inline QHashNode(ushort , const T &value0) : value(value0) {} inline bool same_key(uint h0, ushort) { return h0 == h; } };
+template <class T> struct QHashDummyNode<int, T> { QHashDummyNode *next; union { uint h; int key; }; inline QHashDummyNode(int ) {} }; template <class T> struct QHashNode<int, T> { QHashNode *next; union { uint h; int key; }; T value; inline QHashNode(int ) {} inline QHashNode(int , const T &value0) : value(value0) {} inline bool same_key(uint h0, int) { return h0 == h; } };
+template <class T> struct QHashDummyNode<uint, T> { QHashDummyNode *next; union { uint h; uint key; }; inline QHashDummyNode(uint ) {} }; template <class T> struct QHashNode<uint, T> { QHashNode *next; union { uint h; uint key; }; T value; inline QHashNode(uint ) {} inline QHashNode(uint , const T &value0) : value(value0) {} inline bool same_key(uint h0, uint) { return h0 == h; } };
+template <class Key, class T>
+class QHash
+{
+ typedef QHashDummyNode<Key, T> DummyNode;
+ typedef QHashNode<Key, T> Node;
+ union {
+ QHashData *d;
+ QHashNode<Key, T> *e;
+ };
+ static inline Node *concrete(QHashData::Node *node) {
+ return reinterpret_cast<Node *>(node);
+ }
+public:
+ inline QHash() : d(&QHashData::shared_null) { d->ref.ref(); }
+ inline QHash(const QHash<Key, T> &other) : d(other.d) { d->ref.ref(); if (!d->sharable) detach(); }
+ inline ~QHash() { if (!d->ref.deref()) freeData(d); }
+ QHash<Key, T> &operator=(const QHash<Key, T> &other);
+ bool operator==(const QHash<Key, T> &other) const;
+ inline bool operator!=(const QHash<Key, T> &other) const { return !(*this == other); }
+ inline int size() const { return d->size; }
+ inline bool isEmpty() const { return d->size == 0; }
+ inline int capacity() const { return d->numBuckets; }
+ void reserve(int size);
+ inline void squeeze() { reserve(1); }
+ inline void detach() { if (d->ref != 1) detach_helper(); }
+ inline bool isDetached() const { return d->ref == 1; }
+ inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; }
+ void clear();
+ int remove(const Key &key);
+ T take(const Key &key);
+ bool contains(const Key &key) const;
+ const Key key(const T &value) const;
+ const Key key(const T &value, const Key &defaultKey) const;
+ const T value(const Key &key) const;
+ const T value(const Key &key, const T &defaultValue) const;
+ T &operator[](const Key &key);
+ const T operator[](const Key &key) const;
+ QList<Key> uniqueKeys() const;
+ QList<Key> keys() const;
+ QList<Key> keys(const T &value) const;
+ QList<T> values() const;
+ QList<T> values(const Key &key) const;
+ int count(const Key &key) const;
+ class const_iterator;
+ class iterator
+ {
+ friend class const_iterator;
+ QHashData::Node *i;
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef T *pointer;
+ typedef T &reference;
+ inline operator Node *() const { return concrete(i); }
+ inline iterator() : i(0) { }
+ explicit inline iterator(void *node) : i(reinterpret_cast<QHashData::Node *>(node)) { }
+ inline const Key &key() const { return concrete(i)->key; }
+ inline T &value() const { return concrete(i)->value; }
+ inline T &operator*() const { return concrete(i)->value; }
+ inline T *operator->() const { return &concrete(i)->value; }
+ inline bool operator==(const iterator &o) const { return i == o.i; }
+ inline bool operator!=(const iterator &o) const { return i != o.i; }
+ inline iterator &operator++() {
+ i = QHashData::nextNode(i);
+ return *this;
+ }
+ inline iterator operator++(int) {
+ iterator r = *this;
+ i = QHashData::nextNode(i);
+ return r;
+ }
+ inline iterator &operator--() {
+ i = QHashData::previousNode(i);
+ return *this;
+ }
+ inline iterator operator--(int) {
+ iterator r = *this;
+ i = QHashData::previousNode(i);
+ return r;
+ }
+ inline iterator operator+(int j) const
+ { iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; }
+ inline iterator operator-(int j) const { return operator+(-j); }
+ inline iterator &operator+=(int j) { return *this = *this + j; }
+ inline iterator &operator-=(int j) { return *this = *this - j; }
+ public:
+ inline bool operator==(const const_iterator &o) const
+ { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const
+ { return i != o.i; }
+ private:
+ inline operator bool() const { return false; }
+ };
+ friend class iterator;
+ class const_iterator
+ {
+ friend class iterator;
+ QHashData::Node *i;
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef const T *pointer;
+ typedef const T &reference;
+ inline operator Node *() const { return concrete(i); }
+ inline const_iterator() : i(0) { }
+ explicit inline const_iterator(void *node)
+ : i(reinterpret_cast<QHashData::Node *>(node)) { }
+ inline const_iterator(const iterator &o)
+ { i = o.i; }
+ inline const Key &key() const { return concrete(i)->key; }
+ inline const T &value() const { return concrete(i)->value; }
+ inline const T &operator*() const { return concrete(i)->value; }
+ inline const T *operator->() const { return &concrete(i)->value; }
+ inline bool operator==(const const_iterator &o) const { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const { return i != o.i; }
+ inline const_iterator &operator++() {
+ i = QHashData::nextNode(i);
+ return *this;
+ }
+ inline const_iterator operator++(int) {
+ const_iterator r = *this;
+ i = QHashData::nextNode(i);
+ return r;
+ }
+ inline const_iterator &operator--() {
+ i = QHashData::previousNode(i);
+ return *this;
+ }
+ inline const_iterator operator--(int) {
+ const_iterator r = *this;
+ i = QHashData::previousNode(i);
+ return r;
+ }
+ inline const_iterator operator+(int j) const
+ { const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; }
+ inline const_iterator operator-(int j) const { return operator+(-j); }
+ inline const_iterator &operator+=(int j) { return *this = *this + j; }
+ inline const_iterator &operator-=(int j) { return *this = *this - j; }
+ private:
+ inline operator bool() const { return false; }
+ };
+ friend class const_iterator;
+ inline iterator begin() { detach(); return iterator(d->firstNode()); }
+ inline const_iterator begin() const { return const_iterator(d->firstNode()); }
+ inline const_iterator constBegin() const { return const_iterator(d->firstNode()); }
+ inline iterator end() { detach(); return iterator(e); }
+ inline const_iterator end() const { return const_iterator(e); }
+ inline const_iterator constEnd() const { return const_iterator(e); }
+ iterator erase(iterator it);
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ inline int count() const { return d->size; }
+ iterator find(const Key &key);
+ const_iterator find(const Key &key) const;
+ const_iterator constFind(const Key &key) const;
+ iterator insert(const Key &key, const T &value);
+ iterator insertMulti(const Key &key, const T &value);
+ QHash<Key, T> &unite(const QHash<Key, T> &other);
+ typedef T mapped_type;
+ typedef Key key_type;
+ typedef ptrdiff_t difference_type;
+ typedef int size_type;
+ inline bool empty() const { return isEmpty(); }
+private:
+ void detach_helper();
+ void freeData(QHashData *d);
+ Node **findNode(const Key &key, uint *hp = 0) const;
+ Node *createNode(uint h, const Key &key, const T &value, Node **nextNode);
+ void deleteNode(Node *node);
+ static void duplicateNode(QHashData::Node *originalNode, void *newNode);
+};
+template <class Key, class T>
+inline void QHash<Key, T>::deleteNode(Node *node)
+{
+ node->~Node();
+ d->freeNode(node);
+}
+template <class Key, class T>
+inline void QHash<Key, T>::duplicateNode(QHashData::Node *node, void *newNode)
+{
+ Node *concreteNode = concrete(node);
+ if (QTypeInfo<T>::isDummy) {
+ (void) new (newNode) DummyNode(concreteNode->key);
+ } else {
+ (void) new (newNode) Node(concreteNode->key, concreteNode->value);
+ }
+}
+template <class Key, class T>
+inline typename QHash<Key, T>::Node *
+QHash<Key, T>::createNode(uint ah, const Key &akey, const T &avalue, Node **anextNode)
+{
+ Node *node;
+ if (QTypeInfo<T>::isDummy) {
+ node = reinterpret_cast<Node *>(new (d->allocateNode()) DummyNode(akey));
+ } else {
+ node = new (d->allocateNode()) Node(akey, avalue);
+ }
+ node->h = ah;
+ node->next = *anextNode;
+ *anextNode = node;
+ ++d->size;
+ return node;
+}
+template <class Key, class T>
+inline QHash<Key, T> &QHash<Key, T>::unite(const QHash<Key, T> &other)
+{
+ QHash<Key, T> copy(other);
+ const_iterator it = copy.constEnd();
+ while (it != copy.constBegin()) {
+ --it;
+ insertMulti(it.key(), it.value());
+ }
+ return *this;
+}
+template <class Key, class T>
+ void QHash<Key, T>::freeData(QHashData *x)
+{
+ Node *e_for_x = reinterpret_cast<Node *>(x);
+ Node **bucket = reinterpret_cast<Node **>(x->buckets);
+ int n = x->numBuckets;
+ while (n--) {
+ Node *cur = *bucket++;
+ while (cur != e_for_x) {
+ Node *next = cur->next;
+ deleteNode(cur);
+ cur = next;
+ }
+ }
+ x->destroyAndFree();
+}
+template <class Key, class T>
+inline void QHash<Key, T>::clear()
+{
+ *this = QHash<Key,T>();
+}
+template <class Key, class T>
+ void QHash<Key, T>::detach_helper()
+{
+ QHashData *x = d->detach_helper(duplicateNode,
+ QTypeInfo<T>::isDummy ? sizeof(DummyNode) : sizeof(Node));
+ if (!d->ref.deref())
+ freeData(d);
+ d = x;
+}
+template <class Key, class T>
+inline QHash<Key, T> &QHash<Key, T>::operator=(const QHash<Key, T> &other)
+{
+ if (d != other.d) {
+ other.d->ref.ref();
+ if (!d->ref.deref())
+ freeData(d);
+ d = other.d;
+ if (!d->sharable)
+ detach_helper();
+ }
+ return *this;
+}
+template <class Key, class T>
+inline const T QHash<Key, T>::value(const Key &akey) const
+{
+ Node *node;
+ if (d->size == 0 || (node = *findNode(akey)) == e) {
+ return T();
+ } else {
+ return node->value;
+ }
+}
+template <class Key, class T>
+inline const T QHash<Key, T>::value(const Key &akey, const T &adefaultValue) const
+{
+ Node *node;
+ if (d->size == 0 || (node = *findNode(akey)) == e) {
+ return adefaultValue;
+ } else {
+ return node->value;
+ }
+}
+template <class Key, class T>
+ QList<Key> QHash<Key, T>::uniqueKeys() const
+{
+ QList<Key> res;
+ const_iterator i = begin();
+ if (i != end()) {
+ for (;;) {
+ const Key &aKey = i.key();
+ res.append(aKey);
+ do {
+ if (++i == end())
+ goto break_out_of_outer_loop;
+ } while (aKey == i.key());
+ }
+ }
+break_out_of_outer_loop:
+ return res;
+}
+template <class Key, class T>
+ QList<Key> QHash<Key, T>::keys() const
+{
+ QList<Key> res;
+ const_iterator i = begin();
+ while (i != end()) {
+ res.append(i.key());
+ ++i;
+ }
+ return res;
+}
+template <class Key, class T>
+ QList<Key> QHash<Key, T>::keys(const T &avalue) const
+{
+ QList<Key> res;
+ const_iterator i = begin();
+ while (i != end()) {
+ if (i.value() == avalue)
+ res.append(i.key());
+ ++i;
+ }
+ return res;
+}
+template <class Key, class T>
+ const Key QHash<Key, T>::key(const T &avalue) const
+{
+ return key(avalue, Key());
+}
+template <class Key, class T>
+ const Key QHash<Key, T>::key(const T &avalue, const Key &defaultValue) const
+{
+ const_iterator i = begin();
+ while (i != end()) {
+ if (i.value() == avalue)
+ return i.key();
+ ++i;
+ }
+ return defaultValue;
+}
+template <class Key, class T>
+ QList<T> QHash<Key, T>::values() const
+{
+ QList<T> res;
+ const_iterator i = begin();
+ while (i != end()) {
+ res.append(i.value());
+ ++i;
+ }
+ return res;
+}
+template <class Key, class T>
+ QList<T> QHash<Key, T>::values(const Key &akey) const
+{
+ QList<T> res;
+ Node *node = *findNode(akey);
+ if (node != e) {
+ do {
+ res.append(node->value);
+ } while ((node = node->next) != e && node->key == akey);
+ }
+ return res;
+}
+template <class Key, class T>
+ int QHash<Key, T>::count(const Key &akey) const
+{
+ int cnt = 0;
+ Node *node = *findNode(akey);
+ if (node != e) {
+ do {
+ ++cnt;
+ } while ((node = node->next) != e && node->key == akey);
+ }
+ return cnt;
+}
+template <class Key, class T>
+inline const T QHash<Key, T>::operator[](const Key &akey) const
+{
+ return value(akey);
+}
+template <class Key, class T>
+inline T &QHash<Key, T>::operator[](const Key &akey)
+{
+ detach();
+ uint h;
+ Node **node = findNode(akey, &h);
+ if (*node == e) {
+ if (d->willGrow())
+ node = findNode(akey, &h);
+ return createNode(h, akey, T(), node)->value;
+ }
+ return (*node)->value;
+}
+template <class Key, class T>
+inline typename QHash<Key, T>::iterator QHash<Key, T>::insert(const Key &akey,
+ const T &avalue)
+{
+ detach();
+ uint h;
+ Node **node = findNode(akey, &h);
+ if (*node == e) {
+ if (d->willGrow())
+ node = findNode(akey, &h);
+ return iterator(createNode(h, akey, avalue, node));
+ }
+ if (!QTypeInfo<T>::isDummy)
+ (*node)->value = avalue;
+ return iterator(*node);
+}
+template <class Key, class T>
+inline typename QHash<Key, T>::iterator QHash<Key, T>::insertMulti(const Key &akey,
+ const T &avalue)
+{
+ detach();
+ d->willGrow();
+ uint h;
+ Node **nextNode = findNode(akey, &h);
+ return iterator(createNode(h, akey, avalue, nextNode));
+}
+template <class Key, class T>
+ int QHash<Key, T>::remove(const Key &akey)
+{
+ detach();
+ int oldSize = d->size;
+ Node **node = findNode(akey);
+ if (*node != e) {
+ bool deleteNext = true;
+ do {
+ Node *next = (*node)->next;
+ deleteNext = (next != e && next->key == (*node)->key);
+ deleteNode(*node);
+ *node = next;
+ --d->size;
+ } while (deleteNext);
+ d->hasShrunk();
+ }
+ return oldSize - d->size;
+}
+template <class Key, class T>
+ T QHash<Key, T>::take(const Key &akey)
+{
+ detach();
+ Node **node = findNode(akey);
+ if (*node != e) {
+ T t = (*node)->value;
+ Node *next = (*node)->next;
+ deleteNode(*node);
+ *node = next;
+ --d->size;
+ d->hasShrunk();
+ return t;
+ }
+ return T();
+}
+template <class Key, class T>
+ typename QHash<Key, T>::iterator QHash<Key, T>::erase(iterator it)
+{
+ if (it == iterator(e))
+ return it;
+ iterator ret = it;
+ ++ret;
+ Node *node = it;
+ Node **node_ptr = reinterpret_cast<Node **>(&d->buckets[node->h % d->numBuckets]);
+ while (*node_ptr != node)
+ node_ptr = &(*node_ptr)->next;
+ *node_ptr = node->next;
+ deleteNode(node);
+ --d->size;
+ return ret;
+}
+template <class Key, class T>
+inline void QHash<Key, T>::reserve(int asize)
+{
+ detach();
+ d->rehash(-qMax(asize, 1));
+}
+template <class Key, class T>
+inline typename QHash<Key, T>::const_iterator QHash<Key, T>::find(const Key &akey) const
+{
+ return const_iterator(*findNode(akey));
+}
+template <class Key, class T>
+inline typename QHash<Key, T>::const_iterator QHash<Key, T>::constFind(const Key &akey) const
+{
+ return const_iterator(*findNode(akey));
+}
+template <class Key, class T>
+inline typename QHash<Key, T>::iterator QHash<Key, T>::find(const Key &akey)
+{
+ detach();
+ return iterator(*findNode(akey));
+}
+template <class Key, class T>
+inline bool QHash<Key, T>::contains(const Key &akey) const
+{
+ return *findNode(akey) != e;
+}
+template <class Key, class T>
+ typename QHash<Key, T>::Node **QHash<Key, T>::findNode(const Key &akey,
+ uint *ahp) const
+{
+ Node **node;
+ uint h = qHash(akey);
+ if (d->numBuckets) {
+ node = reinterpret_cast<Node **>(&d->buckets[h % d->numBuckets]);
+ qt_noop();
+ while (*node != e && !(*node)->same_key(h, akey))
+ node = &(*node)->next;
+ } else {
+ node = const_cast<Node **>(reinterpret_cast<const Node * const *>(&e));
+ }
+ if (ahp)
+ *ahp = h;
+ return node;
+}
+template <class Key, class T>
+ bool QHash<Key, T>::operator==(const QHash<Key, T> &other) const
+{
+ if (size() != other.size())
+ return false;
+ if (d == other.d)
+ return true;
+ const_iterator it = begin();
+ while (it != end()) {
+ const Key &akey = it.key();
+ const_iterator it2 = other.find(akey);
+ do {
+ if (it2 == other.end() || !(it2.key() == akey))
+ return false;
+ if (!QTypeInfo<T>::isDummy && !(it.value() == it2.value()))
+ return false;
+ ++it;
+ ++it2;
+ } while (it != end() && it.key() == akey);
+ }
+ return true;
+}
+template <class Key, class T>
+class QMultiHash : public QHash<Key, T>
+{
+public:
+ QMultiHash() {}
+ QMultiHash(const QHash<Key, T> &other) : QHash<Key, T>(other) {}
+ inline typename QHash<Key, T>::iterator replace(const Key &key, const T &value)
+ { return QHash<Key, T>::insert(key, value); }
+ inline typename QHash<Key, T>::iterator insert(const Key &key, const T &value)
+ { return QHash<Key, T>::insertMulti(key, value); }
+ inline QMultiHash &operator+=(const QMultiHash &other)
+ { unite(other); return *this; }
+ inline QMultiHash operator+(const QMultiHash &other) const
+ { QMultiHash result = *this; result += other; return result; }
+ using QHash<Key, T>::contains;
+ using QHash<Key, T>::remove;
+ using QHash<Key, T>::count;
+ using QHash<Key, T>::find;
+ using QHash<Key, T>::constFind;
+ bool contains(const Key &key, const T &value) const;
+ int remove(const Key &key, const T &value);
+ int count(const Key &key, const T &value) const;
+ typename QHash<Key, T>::iterator find(const Key &key, const T &value) {
+ typename QHash<Key, T>::iterator i(find(key));
+ typename QHash<Key, T>::iterator end(this->end());
+ while (i != end && i.key() == key) {
+ if (i.value() == value)
+ return i;
+ ++i;
+ }
+ return end;
+ }
+ typename QHash<Key, T>::const_iterator find(const Key &key, const T &value) const {
+ typename QHash<Key, T>::const_iterator i(constFind(key));
+ typename QHash<Key, T>::const_iterator end(QHash<Key, T>::constEnd());
+ while (i != end && i.key() == key) {
+ if (i.value() == value)
+ return i;
+ ++i;
+ }
+ return end;
+ }
+ typename QHash<Key, T>::const_iterator constFind(const Key &key, const T &value) const
+ { return find(key, value); }
+private:
+ T &operator[](const Key &key);
+ const T operator[](const Key &key) const;
+};
+template <class Key, class T>
+inline bool QMultiHash<Key, T>::contains(const Key &key, const T &value) const
+{
+ return constFind(key, value) != QHash<Key, T>::constEnd();
+}
+template <class Key, class T>
+inline int QMultiHash<Key, T>::remove(const Key &key, const T &value)
+{
+ int n = 0;
+ typename QHash<Key, T>::iterator i(find(key));
+ typename QHash<Key, T>::iterator end(QHash<Key, T>::end());
+ while (i != end && i.key() == key) {
+ if (i.value() == value) {
+ i = erase(i);
+ ++n;
+ } else {
+ ++i;
+ }
+ }
+ return n;
+}
+template <class Key, class T>
+inline int QMultiHash<Key, T>::count(const Key &key, const T &value) const
+{
+ int n = 0;
+ typename QHash<Key, T>::const_iterator i(constFind(key));
+ typename QHash<Key, T>::const_iterator end(QHash<Key, T>::constEnd());
+ while (i != end && i.key() == key) {
+ if (i.value() == value)
+ ++n;
+ ++i;
+ }
+ return n;
+}
+template <class Key, class T> class QHashIterator { typedef typename QHash<Key,T>::const_iterator const_iterator; typedef const_iterator Item; QHash<Key,T> c; const_iterator i, n; inline bool item_exists() const { return n != c.constEnd(); } public: inline QHashIterator(const QHash<Key,T> &container) : c(container), i(c.constBegin()), n(c.constEnd()) {} inline QHashIterator &operator=(const QHash<Key,T> &container) { c = container; i = c.constBegin(); n = c.constEnd(); return *this; } inline void toFront() { i = c.constBegin(); n = c.constEnd(); } inline void toBack() { i = c.constEnd(); n = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { const_iterator p = i; return --p; } inline const T &value() const { qt_noop(); return *n; } inline const Key &key() const { qt_noop(); return n.key(); } inline bool findNext(const T &t) { while ((n = i) != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(n = --i) == t) return true; n = c.constEnd(); return false; } };
+template <class Key, class T> class QMutableHashIterator { typedef typename QHash<Key,T>::iterator iterator; typedef typename QHash<Key,T>::const_iterator const_iterator; typedef iterator Item; QHash<Key,T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableHashIterator(QHash<Key,T> &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableHashIterator() { c->setSharable(true); } inline QMutableHashIterator &operator=(QHash<Key,T> &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = c->end(); } inline bool hasNext() const { return const_iterator(i) != c->constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return const_iterator(i) != c->constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { iterator p = i; return --p; } inline void remove() { if (const_iterator(n) != c->constEnd()) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) { if (const_iterator(n) != c->constEnd()) *n = t; } inline T &value() { qt_noop(); return *n; } inline const T &value() const { qt_noop(); return *n; } inline const Key &key() const { qt_noop(); return n.key(); } inline bool findNext(const T &t) { while (const_iterator(n = i) != c->constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (const_iterator(i) != c->constBegin()) if (*(n = --i) == t) return true; n = c->end(); return false; } };
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ enum _Rb_tree_color { _S_red = false, _S_black = true };
+ struct _Rb_tree_node_base
+ {
+ typedef _Rb_tree_node_base* _Base_ptr;
+ typedef const _Rb_tree_node_base* _Const_Base_ptr;
+ _Rb_tree_color _M_color;
+ _Base_ptr _M_parent;
+ _Base_ptr _M_left;
+ _Base_ptr _M_right;
+ static _Base_ptr
+ _S_minimum(_Base_ptr __x)
+ {
+ while (__x->_M_left != 0) __x = __x->_M_left;
+ return __x;
+ }
+ static _Const_Base_ptr
+ _S_minimum(_Const_Base_ptr __x)
+ {
+ while (__x->_M_left != 0) __x = __x->_M_left;
+ return __x;
+ }
+ static _Base_ptr
+ _S_maximum(_Base_ptr __x)
+ {
+ while (__x->_M_right != 0) __x = __x->_M_right;
+ return __x;
+ }
+ static _Const_Base_ptr
+ _S_maximum(_Const_Base_ptr __x)
+ {
+ while (__x->_M_right != 0) __x = __x->_M_right;
+ return __x;
+ }
+ };
+ template<typename _Val>
+ struct _Rb_tree_node : public _Rb_tree_node_base
+ {
+ typedef _Rb_tree_node<_Val>* _Link_type;
+ _Val _M_value_field;
+ };
+ _Rb_tree_node_base*
+ _Rb_tree_increment(_Rb_tree_node_base* __x);
+ const _Rb_tree_node_base*
+ _Rb_tree_increment(const _Rb_tree_node_base* __x);
+ _Rb_tree_node_base*
+ _Rb_tree_decrement(_Rb_tree_node_base* __x);
+ const _Rb_tree_node_base*
+ _Rb_tree_decrement(const _Rb_tree_node_base* __x);
+ template<typename _Tp>
+ struct _Rb_tree_iterator
+ {
+ typedef _Tp value_type;
+ typedef _Tp& reference;
+ typedef _Tp* pointer;
+ typedef bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef _Rb_tree_iterator<_Tp> _Self;
+ typedef _Rb_tree_node_base::_Base_ptr _Base_ptr;
+ typedef _Rb_tree_node<_Tp>* _Link_type;
+ _Rb_tree_iterator()
+ : _M_node() { }
+ explicit
+ _Rb_tree_iterator(_Link_type __x)
+ : _M_node(__x) { }
+ reference
+ operator*() const
+ { return static_cast<_Link_type>(_M_node)->_M_value_field; }
+ pointer
+ operator->() const
+ { return &static_cast<_Link_type>(_M_node)->_M_value_field; }
+ _Self&
+ operator++()
+ {
+ _M_node = _Rb_tree_increment(_M_node);
+ return *this;
+ }
+ _Self
+ operator++(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _Rb_tree_increment(_M_node);
+ return __tmp;
+ }
+ _Self&
+ operator--()
+ {
+ _M_node = _Rb_tree_decrement(_M_node);
+ return *this;
+ }
+ _Self
+ operator--(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _Rb_tree_decrement(_M_node);
+ return __tmp;
+ }
+ bool
+ operator==(const _Self& __x) const
+ { return _M_node == __x._M_node; }
+ bool
+ operator!=(const _Self& __x) const
+ { return _M_node != __x._M_node; }
+ _Base_ptr _M_node;
+ };
+ template<typename _Tp>
+ struct _Rb_tree_const_iterator
+ {
+ typedef _Tp value_type;
+ typedef const _Tp& reference;
+ typedef const _Tp* pointer;
+ typedef _Rb_tree_iterator<_Tp> iterator;
+ typedef bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef _Rb_tree_const_iterator<_Tp> _Self;
+ typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr;
+ typedef const _Rb_tree_node<_Tp>* _Link_type;
+ _Rb_tree_const_iterator()
+ : _M_node() { }
+ explicit
+ _Rb_tree_const_iterator(_Link_type __x)
+ : _M_node(__x) { }
+ _Rb_tree_const_iterator(const iterator& __it)
+ : _M_node(__it._M_node) { }
+ reference
+ operator*() const
+ { return static_cast<_Link_type>(_M_node)->_M_value_field; }
+ pointer
+ operator->() const
+ { return &static_cast<_Link_type>(_M_node)->_M_value_field; }
+ _Self&
+ operator++()
+ {
+ _M_node = _Rb_tree_increment(_M_node);
+ return *this;
+ }
+ _Self
+ operator++(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _Rb_tree_increment(_M_node);
+ return __tmp;
+ }
+ _Self&
+ operator--()
+ {
+ _M_node = _Rb_tree_decrement(_M_node);
+ return *this;
+ }
+ _Self
+ operator--(int)
+ {
+ _Self __tmp = *this;
+ _M_node = _Rb_tree_decrement(_M_node);
+ return __tmp;
+ }
+ bool
+ operator==(const _Self& __x) const
+ { return _M_node == __x._M_node; }
+ bool
+ operator!=(const _Self& __x) const
+ { return _M_node != __x._M_node; }
+ _Base_ptr _M_node;
+ };
+ template<typename _Val>
+ inline bool
+ operator==(const _Rb_tree_iterator<_Val>& __x,
+ const _Rb_tree_const_iterator<_Val>& __y)
+ { return __x._M_node == __y._M_node; }
+ template<typename _Val>
+ inline bool
+ operator!=(const _Rb_tree_iterator<_Val>& __x,
+ const _Rb_tree_const_iterator<_Val>& __y)
+ { return __x._M_node != __y._M_node; }
+ void
+ _Rb_tree_insert_and_rebalance(const bool __insert_left,
+ _Rb_tree_node_base* __x,
+ _Rb_tree_node_base* __p,
+ _Rb_tree_node_base& __header);
+ _Rb_tree_node_base*
+ _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,
+ _Rb_tree_node_base& __header);
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc = allocator<_Val> >
+ class _Rb_tree
+ {
+ typedef typename _Alloc::template rebind<_Rb_tree_node<_Val> >::other
+ _Node_allocator;
+ protected:
+ typedef _Rb_tree_node_base* _Base_ptr;
+ typedef const _Rb_tree_node_base* _Const_Base_ptr;
+ public:
+ typedef _Key key_type;
+ typedef _Val value_type;
+ typedef value_type* pointer;
+ typedef const value_type* const_pointer;
+ typedef value_type& reference;
+ typedef const value_type& const_reference;
+ typedef _Rb_tree_node<_Val>* _Link_type;
+ typedef const _Rb_tree_node<_Val>* _Const_Link_type;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Alloc allocator_type;
+ _Node_allocator&
+ _M_get_Node_allocator()
+ { return *static_cast<_Node_allocator*>(&this->_M_impl); }
+ const _Node_allocator&
+ _M_get_Node_allocator() const
+ { return *static_cast<const _Node_allocator*>(&this->_M_impl); }
+ allocator_type
+ get_allocator() const
+ { return allocator_type(_M_get_Node_allocator()); }
+ protected:
+ _Link_type
+ _M_get_node()
+ { return _M_impl._Node_allocator::allocate(1); }
+ void
+ _M_put_node(_Link_type __p)
+ { _M_impl._Node_allocator::deallocate(__p, 1); }
+ _Link_type
+ _M_create_node(const value_type& __x)
+ {
+ _Link_type __tmp = _M_get_node();
+ try
+ { get_allocator().construct(&__tmp->_M_value_field, __x); }
+ catch(...)
+ {
+ _M_put_node(__tmp);
+ throw;
+ }
+ return __tmp;
+ }
+ _Link_type
+ _M_clone_node(_Const_Link_type __x)
+ {
+ _Link_type __tmp = _M_create_node(__x->_M_value_field);
+ __tmp->_M_color = __x->_M_color;
+ __tmp->_M_left = 0;
+ __tmp->_M_right = 0;
+ return __tmp;
+ }
+ void
+ _M_destroy_node(_Link_type __p)
+ {
+ get_allocator().destroy(&__p->_M_value_field);
+ _M_put_node(__p);
+ }
+ protected:
+ template<typename _Key_compare,
+ bool _Is_pod_comparator = __is_pod(_Key_compare)>
+ struct _Rb_tree_impl : public _Node_allocator
+ {
+ _Key_compare _M_key_compare;
+ _Rb_tree_node_base _M_header;
+ size_type _M_node_count;
+ _Rb_tree_impl()
+ : _Node_allocator(), _M_key_compare(), _M_header(),
+ _M_node_count(0)
+ { _M_initialize(); }
+ _Rb_tree_impl(const _Key_compare& __comp, const _Node_allocator& __a)
+ : _Node_allocator(__a), _M_key_compare(__comp), _M_header(),
+ _M_node_count(0)
+ { _M_initialize(); }
+ private:
+ void
+ _M_initialize()
+ {
+ this->_M_header._M_color = _S_red;
+ this->_M_header._M_parent = 0;
+ this->_M_header._M_left = &this->_M_header;
+ this->_M_header._M_right = &this->_M_header;
+ }
+ };
+ _Rb_tree_impl<_Compare> _M_impl;
+ protected:
+ _Base_ptr&
+ _M_root()
+ { return this->_M_impl._M_header._M_parent; }
+ _Const_Base_ptr
+ _M_root() const
+ { return this->_M_impl._M_header._M_parent; }
+ _Base_ptr&
+ _M_leftmost()
+ { return this->_M_impl._M_header._M_left; }
+ _Const_Base_ptr
+ _M_leftmost() const
+ { return this->_M_impl._M_header._M_left; }
+ _Base_ptr&
+ _M_rightmost()
+ { return this->_M_impl._M_header._M_right; }
+ _Const_Base_ptr
+ _M_rightmost() const
+ { return this->_M_impl._M_header._M_right; }
+ _Link_type
+ _M_begin()
+ { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); }
+ _Const_Link_type
+ _M_begin() const
+ {
+ return static_cast<_Const_Link_type>
+ (this->_M_impl._M_header._M_parent);
+ }
+ _Link_type
+ _M_end()
+ { return static_cast<_Link_type>(&this->_M_impl._M_header); }
+ _Const_Link_type
+ _M_end() const
+ { return static_cast<_Const_Link_type>(&this->_M_impl._M_header); }
+ static const_reference
+ _S_value(_Const_Link_type __x)
+ { return __x->_M_value_field; }
+ static const _Key&
+ _S_key(_Const_Link_type __x)
+ { return _KeyOfValue()(_S_value(__x)); }
+ static _Link_type
+ _S_left(_Base_ptr __x)
+ { return static_cast<_Link_type>(__x->_M_left); }
+ static _Const_Link_type
+ _S_left(_Const_Base_ptr __x)
+ { return static_cast<_Const_Link_type>(__x->_M_left); }
+ static _Link_type
+ _S_right(_Base_ptr __x)
+ { return static_cast<_Link_type>(__x->_M_right); }
+ static _Const_Link_type
+ _S_right(_Const_Base_ptr __x)
+ { return static_cast<_Const_Link_type>(__x->_M_right); }
+ static const_reference
+ _S_value(_Const_Base_ptr __x)
+ { return static_cast<_Const_Link_type>(__x)->_M_value_field; }
+ static const _Key&
+ _S_key(_Const_Base_ptr __x)
+ { return _KeyOfValue()(_S_value(__x)); }
+ static _Base_ptr
+ _S_minimum(_Base_ptr __x)
+ { return _Rb_tree_node_base::_S_minimum(__x); }
+ static _Const_Base_ptr
+ _S_minimum(_Const_Base_ptr __x)
+ { return _Rb_tree_node_base::_S_minimum(__x); }
+ static _Base_ptr
+ _S_maximum(_Base_ptr __x)
+ { return _Rb_tree_node_base::_S_maximum(__x); }
+ static _Const_Base_ptr
+ _S_maximum(_Const_Base_ptr __x)
+ { return _Rb_tree_node_base::_S_maximum(__x); }
+ public:
+ typedef _Rb_tree_iterator<value_type> iterator;
+ typedef _Rb_tree_const_iterator<value_type> const_iterator;
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+ private:
+ iterator
+ _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __y,
+ const value_type& __v);
+ iterator
+ _M_insert_lower(_Base_ptr __x, _Base_ptr __y, const value_type& __v);
+ iterator
+ _M_insert_equal_lower(const value_type& __x);
+ _Link_type
+ _M_copy(_Const_Link_type __x, _Link_type __p);
+ void
+ _M_erase(_Link_type __x);
+ iterator
+ _M_lower_bound(_Link_type __x, _Link_type __y,
+ const _Key& __k);
+ const_iterator
+ _M_lower_bound(_Const_Link_type __x, _Const_Link_type __y,
+ const _Key& __k) const;
+ iterator
+ _M_upper_bound(_Link_type __x, _Link_type __y,
+ const _Key& __k);
+ const_iterator
+ _M_upper_bound(_Const_Link_type __x, _Const_Link_type __y,
+ const _Key& __k) const;
+ public:
+ _Rb_tree() { }
+ _Rb_tree(const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_impl(__comp, __a) { }
+ _Rb_tree(const _Rb_tree& __x)
+ : _M_impl(__x._M_impl._M_key_compare, __x._M_get_Node_allocator())
+ {
+ if (__x._M_root() != 0)
+ {
+ _M_root() = _M_copy(__x._M_begin(), _M_end());
+ _M_leftmost() = _S_minimum(_M_root());
+ _M_rightmost() = _S_maximum(_M_root());
+ _M_impl._M_node_count = __x._M_impl._M_node_count;
+ }
+ }
+ ~_Rb_tree()
+ { _M_erase(_M_begin()); }
+ _Rb_tree&
+ operator=(const _Rb_tree& __x);
+ _Compare
+ key_comp() const
+ { return _M_impl._M_key_compare; }
+ iterator
+ begin()
+ {
+ return iterator(static_cast<_Link_type>
+ (this->_M_impl._M_header._M_left));
+ }
+ const_iterator
+ begin() const
+ {
+ return const_iterator(static_cast<_Const_Link_type>
+ (this->_M_impl._M_header._M_left));
+ }
+ iterator
+ end()
+ { return iterator(static_cast<_Link_type>(&this->_M_impl._M_header)); }
+ const_iterator
+ end() const
+ {
+ return const_iterator(static_cast<_Const_Link_type>
+ (&this->_M_impl._M_header));
+ }
+ reverse_iterator
+ rbegin()
+ { return reverse_iterator(end()); }
+ const_reverse_iterator
+ rbegin() const
+ { return const_reverse_iterator(end()); }
+ reverse_iterator
+ rend()
+ { return reverse_iterator(begin()); }
+ const_reverse_iterator
+ rend() const
+ { return const_reverse_iterator(begin()); }
+ bool
+ empty() const
+ { return _M_impl._M_node_count == 0; }
+ size_type
+ size() const
+ { return _M_impl._M_node_count; }
+ size_type
+ max_size() const
+ { return get_allocator().max_size(); }
+ void
+ swap(_Rb_tree& __t);
+ pair<iterator, bool>
+ _M_insert_unique(const value_type& __x);
+ iterator
+ _M_insert_equal(const value_type& __x);
+ iterator
+ _M_insert_unique_(const_iterator __position, const value_type& __x);
+ iterator
+ _M_insert_equal_(const_iterator __position, const value_type& __x);
+ template<typename _InputIterator>
+ void
+ _M_insert_unique(_InputIterator __first, _InputIterator __last);
+ template<typename _InputIterator>
+ void
+ _M_insert_equal(_InputIterator __first, _InputIterator __last);
+ void
+ erase(iterator __position);
+ void
+ erase(const_iterator __position);
+ size_type
+ erase(const key_type& __x);
+ void
+ erase(iterator __first, iterator __last);
+ void
+ erase(const_iterator __first, const_iterator __last);
+ void
+ erase(const key_type* __first, const key_type* __last);
+ void
+ clear()
+ {
+ _M_erase(_M_begin());
+ _M_leftmost() = _M_end();
+ _M_root() = 0;
+ _M_rightmost() = _M_end();
+ _M_impl._M_node_count = 0;
+ }
+ iterator
+ find(const key_type& __k);
+ const_iterator
+ find(const key_type& __k) const;
+ size_type
+ count(const key_type& __k) const;
+ iterator
+ lower_bound(const key_type& __k)
+ { return _M_lower_bound(_M_begin(), _M_end(), __k); }
+ const_iterator
+ lower_bound(const key_type& __k) const
+ { return _M_lower_bound(_M_begin(), _M_end(), __k); }
+ iterator
+ upper_bound(const key_type& __k)
+ { return _M_upper_bound(_M_begin(), _M_end(), __k); }
+ const_iterator
+ upper_bound(const key_type& __k) const
+ { return _M_upper_bound(_M_begin(), _M_end(), __k); }
+ pair<iterator, iterator>
+ equal_range(const key_type& __k);
+ pair<const_iterator, const_iterator>
+ equal_range(const key_type& __k) const;
+ bool
+ __rb_verify() const;
+ };
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline bool
+ operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ {
+ return __x.size() == __y.size()
+ && std::equal(__x.begin(), __x.end(), __y.begin());
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline bool
+ operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ {
+ return std::lexicographical_compare(__x.begin(), __x.end(),
+ __y.begin(), __y.end());
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline bool
+ operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ { return !(__x == __y); }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline bool
+ operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ { return __y < __x; }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline bool
+ operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ { return !(__y < __x); }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline bool
+ operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ { return !(__x < __y); }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline void
+ swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)
+ { __x.swap(__y); }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ operator=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x)
+ {
+ if (this != &__x)
+ {
+ clear();
+ _M_impl._M_key_compare = __x._M_impl._M_key_compare;
+ if (__x._M_root() != 0)
+ {
+ _M_root() = _M_copy(__x._M_begin(), _M_end());
+ _M_leftmost() = _S_minimum(_M_root());
+ _M_rightmost() = _S_maximum(_M_root());
+ _M_impl._M_node_count = __x._M_impl._M_node_count;
+ }
+ }
+ return *this;
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_(_Const_Base_ptr __x, _Const_Base_ptr __p, const _Val& __v)
+ {
+ bool __insert_left = (__x != 0 || __p == _M_end()
+ || _M_impl._M_key_compare(_KeyOfValue()(__v),
+ _S_key(__p)));
+ _Link_type __z = _M_create_node(__v);
+ _Rb_tree_insert_and_rebalance(__insert_left, __z,
+ const_cast<_Base_ptr>(__p),
+ this->_M_impl._M_header);
+ ++_M_impl._M_node_count;
+ return iterator(__z);
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_lower(_Base_ptr __x, _Base_ptr __p, const _Val& __v)
+ {
+ bool __insert_left = (__x != 0 || __p == _M_end()
+ || !_M_impl._M_key_compare(_S_key(__p),
+ _KeyOfValue()(__v)));
+ _Link_type __z = _M_create_node(__v);
+ _Rb_tree_insert_and_rebalance(__insert_left, __z, __p,
+ this->_M_impl._M_header);
+ ++_M_impl._M_node_count;
+ return iterator(__z);
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_equal_lower(const _Val& __v)
+ {
+ _Link_type __x = _M_begin();
+ _Link_type __y = _M_end();
+ while (__x != 0)
+ {
+ __y = __x;
+ __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ?
+ _S_left(__x) : _S_right(__x);
+ }
+ return _M_insert_lower(__x, __y, __v);
+ }
+ template<typename _Key, typename _Val, typename _KoV,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type
+ _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::
+ _M_copy(_Const_Link_type __x, _Link_type __p)
+ {
+ _Link_type __top = _M_clone_node(__x);
+ __top->_M_parent = __p;
+ try
+ {
+ if (__x->_M_right)
+ __top->_M_right = _M_copy(_S_right(__x), __top);
+ __p = __top;
+ __x = _S_left(__x);
+ while (__x != 0)
+ {
+ _Link_type __y = _M_clone_node(__x);
+ __p->_M_left = __y;
+ __y->_M_parent = __p;
+ if (__x->_M_right)
+ __y->_M_right = _M_copy(_S_right(__x), __y);
+ __p = __y;
+ __x = _S_left(__x);
+ }
+ }
+ catch(...)
+ {
+ _M_erase(__top);
+ throw;
+ }
+ return __top;
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_erase(_Link_type __x)
+ {
+ while (__x != 0)
+ {
+ _M_erase(_S_right(__x));
+ _Link_type __y = _S_left(__x);
+ _M_destroy_node(__x);
+ __x = __y;
+ }
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_lower_bound(_Link_type __x, _Link_type __y,
+ const _Key& __k)
+ {
+ while (__x != 0)
+ if (!_M_impl._M_key_compare(_S_key(__x), __k))
+ __y = __x, __x = _S_left(__x);
+ else
+ __x = _S_right(__x);
+ return iterator(__y);
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::const_iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_lower_bound(_Const_Link_type __x, _Const_Link_type __y,
+ const _Key& __k) const
+ {
+ while (__x != 0)
+ if (!_M_impl._M_key_compare(_S_key(__x), __k))
+ __y = __x, __x = _S_left(__x);
+ else
+ __x = _S_right(__x);
+ return const_iterator(__y);
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_upper_bound(_Link_type __x, _Link_type __y,
+ const _Key& __k)
+ {
+ while (__x != 0)
+ if (_M_impl._M_key_compare(__k, _S_key(__x)))
+ __y = __x, __x = _S_left(__x);
+ else
+ __x = _S_right(__x);
+ return iterator(__y);
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::const_iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_upper_bound(_Const_Link_type __x, _Const_Link_type __y,
+ const _Key& __k) const
+ {
+ while (__x != 0)
+ if (_M_impl._M_key_compare(__k, _S_key(__x)))
+ __y = __x, __x = _S_left(__x);
+ else
+ __x = _S_right(__x);
+ return const_iterator(__y);
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::iterator,
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::iterator>
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ equal_range(const _Key& __k)
+ {
+ _Link_type __x = _M_begin();
+ _Link_type __y = _M_end();
+ while (__x != 0)
+ {
+ if (_M_impl._M_key_compare(_S_key(__x), __k))
+ __x = _S_right(__x);
+ else if (_M_impl._M_key_compare(__k, _S_key(__x)))
+ __y = __x, __x = _S_left(__x);
+ else
+ {
+ _Link_type __xu(__x), __yu(__y);
+ __y = __x, __x = _S_left(__x);
+ __xu = _S_right(__xu);
+ return pair<iterator,
+ iterator>(_M_lower_bound(__x, __y, __k),
+ _M_upper_bound(__xu, __yu, __k));
+ }
+ }
+ return pair<iterator, iterator>(iterator(__y),
+ iterator(__y));
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::const_iterator,
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::const_iterator>
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ equal_range(const _Key& __k) const
+ {
+ _Const_Link_type __x = _M_begin();
+ _Const_Link_type __y = _M_end();
+ while (__x != 0)
+ {
+ if (_M_impl._M_key_compare(_S_key(__x), __k))
+ __x = _S_right(__x);
+ else if (_M_impl._M_key_compare(__k, _S_key(__x)))
+ __y = __x, __x = _S_left(__x);
+ else
+ {
+ _Const_Link_type __xu(__x), __yu(__y);
+ __y = __x, __x = _S_left(__x);
+ __xu = _S_right(__xu);
+ return pair<const_iterator,
+ const_iterator>(_M_lower_bound(__x, __y, __k),
+ _M_upper_bound(__xu, __yu, __k));
+ }
+ }
+ return pair<const_iterator, const_iterator>(const_iterator(__y),
+ const_iterator(__y));
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t)
+ {
+ if (_M_root() == 0)
+ {
+ if (__t._M_root() != 0)
+ {
+ _M_root() = __t._M_root();
+ _M_leftmost() = __t._M_leftmost();
+ _M_rightmost() = __t._M_rightmost();
+ _M_root()->_M_parent = _M_end();
+ __t._M_root() = 0;
+ __t._M_leftmost() = __t._M_end();
+ __t._M_rightmost() = __t._M_end();
+ }
+ }
+ else if (__t._M_root() == 0)
+ {
+ __t._M_root() = _M_root();
+ __t._M_leftmost() = _M_leftmost();
+ __t._M_rightmost() = _M_rightmost();
+ __t._M_root()->_M_parent = __t._M_end();
+ _M_root() = 0;
+ _M_leftmost() = _M_end();
+ _M_rightmost() = _M_end();
+ }
+ else
+ {
+ std::swap(_M_root(),__t._M_root());
+ std::swap(_M_leftmost(),__t._M_leftmost());
+ std::swap(_M_rightmost(),__t._M_rightmost());
+ _M_root()->_M_parent = _M_end();
+ __t._M_root()->_M_parent = __t._M_end();
+ }
+ std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count);
+ std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare);
+ std::__alloc_swap<_Node_allocator>::
+ _S_do_it(_M_get_Node_allocator(), __t._M_get_Node_allocator());
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::iterator, bool>
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_unique(const _Val& __v)
+ {
+ _Link_type __x = _M_begin();
+ _Link_type __y = _M_end();
+ bool __comp = true;
+ while (__x != 0)
+ {
+ __y = __x;
+ __comp = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x));
+ __x = __comp ? _S_left(__x) : _S_right(__x);
+ }
+ iterator __j = iterator(__y);
+ if (__comp)
+ {
+ if (__j == begin())
+ return pair<iterator, bool>(_M_insert_(__x, __y, __v), true);
+ else
+ --__j;
+ }
+ if (_M_impl._M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v)))
+ return pair<iterator, bool>(_M_insert_(__x, __y, __v), true);
+ return pair<iterator, bool>(__j, false);
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_equal(const _Val& __v)
+ {
+ _Link_type __x = _M_begin();
+ _Link_type __y = _M_end();
+ while (__x != 0)
+ {
+ __y = __x;
+ __x = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x)) ?
+ _S_left(__x) : _S_right(__x);
+ }
+ return _M_insert_(__x, __y, __v);
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_unique_(const_iterator __position, const _Val& __v)
+ {
+ if (__position._M_node == _M_end())
+ {
+ if (size() > 0
+ && _M_impl._M_key_compare(_S_key(_M_rightmost()),
+ _KeyOfValue()(__v)))
+ return _M_insert_(0, _M_rightmost(), __v);
+ else
+ return _M_insert_unique(__v).first;
+ }
+ else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
+ _S_key(__position._M_node)))
+ {
+ const_iterator __before = __position;
+ if (__position._M_node == _M_leftmost())
+ return _M_insert_(_M_leftmost(), _M_leftmost(), __v);
+ else if (_M_impl._M_key_compare(_S_key((--__before)._M_node),
+ _KeyOfValue()(__v)))
+ {
+ if (_S_right(__before._M_node) == 0)
+ return _M_insert_(0, __before._M_node, __v);
+ else
+ return _M_insert_(__position._M_node,
+ __position._M_node, __v);
+ }
+ else
+ return _M_insert_unique(__v).first;
+ }
+ else if (_M_impl._M_key_compare(_S_key(__position._M_node),
+ _KeyOfValue()(__v)))
+ {
+ const_iterator __after = __position;
+ if (__position._M_node == _M_rightmost())
+ return _M_insert_(0, _M_rightmost(), __v);
+ else if (_M_impl._M_key_compare(_KeyOfValue()(__v),
+ _S_key((++__after)._M_node)))
+ {
+ if (_S_right(__position._M_node) == 0)
+ return _M_insert_(0, __position._M_node, __v);
+ else
+ return _M_insert_(__after._M_node, __after._M_node, __v);
+ }
+ else
+ return _M_insert_unique(__v).first;
+ }
+ else
+ return iterator(static_cast<_Link_type>
+ (const_cast<_Base_ptr>(__position._M_node)));
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ _M_insert_equal_(const_iterator __position, const _Val& __v)
+ {
+ if (__position._M_node == _M_end())
+ {
+ if (size() > 0
+ && !_M_impl._M_key_compare(_KeyOfValue()(__v),
+ _S_key(_M_rightmost())))
+ return _M_insert_(0, _M_rightmost(), __v);
+ else
+ return _M_insert_equal(__v);
+ }
+ else if (!_M_impl._M_key_compare(_S_key(__position._M_node),
+ _KeyOfValue()(__v)))
+ {
+ const_iterator __before = __position;
+ if (__position._M_node == _M_leftmost())
+ return _M_insert_(_M_leftmost(), _M_leftmost(), __v);
+ else if (!_M_impl._M_key_compare(_KeyOfValue()(__v),
+ _S_key((--__before)._M_node)))
+ {
+ if (_S_right(__before._M_node) == 0)
+ return _M_insert_(0, __before._M_node, __v);
+ else
+ return _M_insert_(__position._M_node,
+ __position._M_node, __v);
+ }
+ else
+ return _M_insert_equal(__v);
+ }
+ else
+ {
+ const_iterator __after = __position;
+ if (__position._M_node == _M_rightmost())
+ return _M_insert_(0, _M_rightmost(), __v);
+ else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node),
+ _KeyOfValue()(__v)))
+ {
+ if (_S_right(__position._M_node) == 0)
+ return _M_insert_(0, __position._M_node, __v);
+ else
+ return _M_insert_(__after._M_node, __after._M_node, __v);
+ }
+ else
+ return _M_insert_equal_lower(__v);
+ }
+ }
+ template<typename _Key, typename _Val, typename _KoV,
+ typename _Cmp, typename _Alloc>
+ template<class _II>
+ void
+ _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
+ _M_insert_unique(_II __first, _II __last)
+ {
+ for (; __first != __last; ++__first)
+ _M_insert_unique_(end(), *__first);
+ }
+ template<typename _Key, typename _Val, typename _KoV,
+ typename _Cmp, typename _Alloc>
+ template<class _II>
+ void
+ _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::
+ _M_insert_equal(_II __first, _II __last)
+ {
+ for (; __first != __last; ++__first)
+ _M_insert_equal_(end(), *__first);
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ erase(iterator __position)
+ {
+ _Link_type __y =
+ static_cast<_Link_type>(_Rb_tree_rebalance_for_erase
+ (__position._M_node,
+ this->_M_impl._M_header));
+ _M_destroy_node(__y);
+ --_M_impl._M_node_count;
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ inline void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ erase(const_iterator __position)
+ {
+ _Link_type __y =
+ static_cast<_Link_type>(_Rb_tree_rebalance_for_erase
+ (const_cast<_Base_ptr>(__position._M_node),
+ this->_M_impl._M_header));
+ _M_destroy_node(__y);
+ --_M_impl._M_node_count;
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ erase(const _Key& __x)
+ {
+ pair<iterator, iterator> __p = equal_range(__x);
+ const size_type __old_size = size();
+ erase(__p.first, __p.second);
+ return __old_size - size();
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ erase(iterator __first, iterator __last)
+ {
+ if (__first == begin() && __last == end())
+ clear();
+ else
+ while (__first != __last)
+ erase(__first++);
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ erase(const_iterator __first, const_iterator __last)
+ {
+ if (__first == begin() && __last == end())
+ clear();
+ else
+ while (__first != __last)
+ erase(__first++);
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ void
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ erase(const _Key* __first, const _Key* __last)
+ {
+ while (__first != __last)
+ erase(*__first++);
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ find(const _Key& __k)
+ {
+ iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k);
+ return (__j == end()
+ || _M_impl._M_key_compare(__k,
+ _S_key(__j._M_node))) ? end() : __j;
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue,
+ _Compare, _Alloc>::const_iterator
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ find(const _Key& __k) const
+ {
+ const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k);
+ return (__j == end()
+ || _M_impl._M_key_compare(__k,
+ _S_key(__j._M_node))) ? end() : __j;
+ }
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type
+ _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::
+ count(const _Key& __k) const
+ {
+ pair<const_iterator, const_iterator> __p = equal_range(__k);
+ const size_type __n = std::distance(__p.first, __p.second);
+ return __n;
+ }
+ unsigned int
+ _Rb_tree_black_count(const _Rb_tree_node_base* __node,
+ const _Rb_tree_node_base* __root);
+ template<typename _Key, typename _Val, typename _KeyOfValue,
+ typename _Compare, typename _Alloc>
+ bool
+ _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const
+ {
+ if (_M_impl._M_node_count == 0 || begin() == end())
+ return _M_impl._M_node_count == 0 && begin() == end()
+ && this->_M_impl._M_header._M_left == _M_end()
+ && this->_M_impl._M_header._M_right == _M_end();
+ unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root());
+ for (const_iterator __it = begin(); __it != end(); ++__it)
+ {
+ _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node);
+ _Const_Link_type __L = _S_left(__x);
+ _Const_Link_type __R = _S_right(__x);
+ if (__x->_M_color == _S_red)
+ if ((__L && __L->_M_color == _S_red)
+ || (__R && __R->_M_color == _S_red))
+ return false;
+ if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L)))
+ return false;
+ if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x)))
+ return false;
+ if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len)
+ return false;
+ }
+ if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root()))
+ return false;
+ if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root()))
+ return false;
+ return true;
+ }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>,
+ typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
+ class map
+ {
+ public:
+ typedef _Key key_type;
+ typedef _Tp mapped_type;
+ typedef std::pair<const _Key, _Tp> value_type;
+ typedef _Compare key_compare;
+ typedef _Alloc allocator_type;
+ private:
+ typedef typename _Alloc::value_type _Alloc_value_type;
+ public:
+ class value_compare
+ : public std::binary_function<value_type, value_type, bool>
+ {
+ friend class map<_Key, _Tp, _Compare, _Alloc>;
+ protected:
+ _Compare comp;
+ value_compare(_Compare __c)
+ : comp(__c) { }
+ public:
+ bool operator()(const value_type& __x, const value_type& __y) const
+ { return comp(__x.first, __y.first); }
+ };
+ private:
+ typedef typename _Alloc::template rebind<value_type>::other
+ _Pair_alloc_type;
+ typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,
+ key_compare, _Pair_alloc_type> _Rep_type;
+ _Rep_type _M_t;
+ public:
+ typedef typename _Pair_alloc_type::pointer pointer;
+ typedef typename _Pair_alloc_type::const_pointer const_pointer;
+ typedef typename _Pair_alloc_type::reference reference;
+ typedef typename _Pair_alloc_type::const_reference const_reference;
+ typedef typename _Rep_type::iterator iterator;
+ typedef typename _Rep_type::const_iterator const_iterator;
+ typedef typename _Rep_type::size_type size_type;
+ typedef typename _Rep_type::difference_type difference_type;
+ typedef typename _Rep_type::reverse_iterator reverse_iterator;
+ typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
+ map()
+ : _M_t() { }
+ explicit
+ map(const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_t(__comp, __a) { }
+ map(const map& __x)
+ : _M_t(__x._M_t) { }
+ template<typename _InputIterator>
+ map(_InputIterator __first, _InputIterator __last)
+ : _M_t()
+ { _M_t._M_insert_unique(__first, __last); }
+ template<typename _InputIterator>
+ map(_InputIterator __first, _InputIterator __last,
+ const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_t(__comp, __a)
+ { _M_t._M_insert_unique(__first, __last); }
+ map&
+ operator=(const map& __x)
+ {
+ _M_t = __x._M_t;
+ return *this;
+ }
+ allocator_type
+ get_allocator() const
+ { return _M_t.get_allocator(); }
+ iterator
+ begin()
+ { return _M_t.begin(); }
+ const_iterator
+ begin() const
+ { return _M_t.begin(); }
+ iterator
+ end()
+ { return _M_t.end(); }
+ const_iterator
+ end() const
+ { return _M_t.end(); }
+ reverse_iterator
+ rbegin()
+ { return _M_t.rbegin(); }
+ const_reverse_iterator
+ rbegin() const
+ { return _M_t.rbegin(); }
+ reverse_iterator
+ rend()
+ { return _M_t.rend(); }
+ const_reverse_iterator
+ rend() const
+ { return _M_t.rend(); }
+ bool
+ empty() const
+ { return _M_t.empty(); }
+ size_type
+ size() const
+ { return _M_t.size(); }
+ size_type
+ max_size() const
+ { return _M_t.max_size(); }
+ mapped_type&
+ operator[](const key_type& __k)
+ {
+ iterator __i = lower_bound(__k);
+ if (__i == end() || key_comp()(__k, (*__i).first))
+ __i = insert(__i, value_type(__k, mapped_type()));
+ return (*__i).second;
+ }
+ mapped_type&
+ at(const key_type& __k)
+ {
+ iterator __i = lower_bound(__k);
+ if (__i == end() || key_comp()(__k, (*__i).first))
+ __throw_out_of_range(("map::at"));
+ return (*__i).second;
+ }
+ const mapped_type&
+ at(const key_type& __k) const
+ {
+ const_iterator __i = lower_bound(__k);
+ if (__i == end() || key_comp()(__k, (*__i).first))
+ __throw_out_of_range(("map::at"));
+ return (*__i).second;
+ }
+ std::pair<iterator, bool>
+ insert(const value_type& __x)
+ { return _M_t._M_insert_unique(__x); }
+ iterator
+ insert(iterator __position, const value_type& __x)
+ { return _M_t._M_insert_unique_(__position, __x); }
+ template<typename _InputIterator>
+ void
+ insert(_InputIterator __first, _InputIterator __last)
+ { _M_t._M_insert_unique(__first, __last); }
+ void
+ erase(iterator __position)
+ { _M_t.erase(__position); }
+ size_type
+ erase(const key_type& __x)
+ { return _M_t.erase(__x); }
+ void
+ erase(iterator __first, iterator __last)
+ { _M_t.erase(__first, __last); }
+ void
+ swap(map& __x)
+ { _M_t.swap(__x._M_t); }
+ void
+ clear()
+ { _M_t.clear(); }
+ key_compare
+ key_comp() const
+ { return _M_t.key_comp(); }
+ value_compare
+ value_comp() const
+ { return value_compare(_M_t.key_comp()); }
+ iterator
+ find(const key_type& __x)
+ { return _M_t.find(__x); }
+ const_iterator
+ find(const key_type& __x) const
+ { return _M_t.find(__x); }
+ size_type
+ count(const key_type& __x) const
+ { return _M_t.find(__x) == _M_t.end() ? 0 : 1; }
+ iterator
+ lower_bound(const key_type& __x)
+ { return _M_t.lower_bound(__x); }
+ const_iterator
+ lower_bound(const key_type& __x) const
+ { return _M_t.lower_bound(__x); }
+ iterator
+ upper_bound(const key_type& __x)
+ { return _M_t.upper_bound(__x); }
+ const_iterator
+ upper_bound(const key_type& __x) const
+ { return _M_t.upper_bound(__x); }
+ std::pair<iterator, iterator>
+ equal_range(const key_type& __x)
+ { return _M_t.equal_range(__x); }
+ std::pair<const_iterator, const_iterator>
+ equal_range(const key_type& __x) const
+ { return _M_t.equal_range(__x); }
+ template<typename _K1, typename _T1, typename _C1, typename _A1>
+ friend bool
+ operator==(const map<_K1, _T1, _C1, _A1>&,
+ const map<_K1, _T1, _C1, _A1>&);
+ template<typename _K1, typename _T1, typename _C1, typename _A1>
+ friend bool
+ operator<(const map<_K1, _T1, _C1, _A1>&,
+ const map<_K1, _T1, _C1, _A1>&);
+ };
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+ const map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return __x._M_t == __y._M_t; }
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+ const map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return __x._M_t < __y._M_t; }
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+ const map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return !(__x == __y); }
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+ const map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return __y < __x; }
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+ const map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return !(__y < __x); }
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x,
+ const map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return !(__x < __y); }
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline void
+ swap(map<_Key, _Tp, _Compare, _Alloc>& __x,
+ map<_Key, _Tp, _Compare, _Alloc>& __y)
+ { __x.swap(__y); }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template <typename _Key, typename _Tp,
+ typename _Compare = std::less<_Key>,
+ typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >
+ class multimap
+ {
+ public:
+ typedef _Key key_type;
+ typedef _Tp mapped_type;
+ typedef std::pair<const _Key, _Tp> value_type;
+ typedef _Compare key_compare;
+ typedef _Alloc allocator_type;
+ private:
+ typedef typename _Alloc::value_type _Alloc_value_type;
+ public:
+ class value_compare
+ : public std::binary_function<value_type, value_type, bool>
+ {
+ friend class multimap<_Key, _Tp, _Compare, _Alloc>;
+ protected:
+ _Compare comp;
+ value_compare(_Compare __c)
+ : comp(__c) { }
+ public:
+ bool operator()(const value_type& __x, const value_type& __y) const
+ { return comp(__x.first, __y.first); }
+ };
+ private:
+ typedef typename _Alloc::template rebind<value_type>::other
+ _Pair_alloc_type;
+ typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,
+ key_compare, _Pair_alloc_type> _Rep_type;
+ _Rep_type _M_t;
+ public:
+ typedef typename _Pair_alloc_type::pointer pointer;
+ typedef typename _Pair_alloc_type::const_pointer const_pointer;
+ typedef typename _Pair_alloc_type::reference reference;
+ typedef typename _Pair_alloc_type::const_reference const_reference;
+ typedef typename _Rep_type::iterator iterator;
+ typedef typename _Rep_type::const_iterator const_iterator;
+ typedef typename _Rep_type::size_type size_type;
+ typedef typename _Rep_type::difference_type difference_type;
+ typedef typename _Rep_type::reverse_iterator reverse_iterator;
+ typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;
+ multimap()
+ : _M_t() { }
+ explicit
+ multimap(const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_t(__comp, __a) { }
+ multimap(const multimap& __x)
+ : _M_t(__x._M_t) { }
+ template<typename _InputIterator>
+ multimap(_InputIterator __first, _InputIterator __last)
+ : _M_t()
+ { _M_t._M_insert_equal(__first, __last); }
+ template<typename _InputIterator>
+ multimap(_InputIterator __first, _InputIterator __last,
+ const _Compare& __comp,
+ const allocator_type& __a = allocator_type())
+ : _M_t(__comp, __a)
+ { _M_t._M_insert_equal(__first, __last); }
+ multimap&
+ operator=(const multimap& __x)
+ {
+ _M_t = __x._M_t;
+ return *this;
+ }
+ allocator_type
+ get_allocator() const
+ { return _M_t.get_allocator(); }
+ iterator
+ begin()
+ { return _M_t.begin(); }
+ const_iterator
+ begin() const
+ { return _M_t.begin(); }
+ iterator
+ end()
+ { return _M_t.end(); }
+ const_iterator
+ end() const
+ { return _M_t.end(); }
+ reverse_iterator
+ rbegin()
+ { return _M_t.rbegin(); }
+ const_reverse_iterator
+ rbegin() const
+ { return _M_t.rbegin(); }
+ reverse_iterator
+ rend()
+ { return _M_t.rend(); }
+ const_reverse_iterator
+ rend() const
+ { return _M_t.rend(); }
+ bool
+ empty() const
+ { return _M_t.empty(); }
+ size_type
+ size() const
+ { return _M_t.size(); }
+ size_type
+ max_size() const
+ { return _M_t.max_size(); }
+ iterator
+ insert(const value_type& __x)
+ { return _M_t._M_insert_equal(__x); }
+ iterator
+ insert(iterator __position, const value_type& __x)
+ { return _M_t._M_insert_equal_(__position, __x); }
+ template<typename _InputIterator>
+ void
+ insert(_InputIterator __first, _InputIterator __last)
+ { _M_t._M_insert_equal(__first, __last); }
+ void
+ erase(iterator __position)
+ { _M_t.erase(__position); }
+ size_type
+ erase(const key_type& __x)
+ { return _M_t.erase(__x); }
+ void
+ erase(iterator __first, iterator __last)
+ { _M_t.erase(__first, __last); }
+ void
+ swap(multimap& __x)
+ { _M_t.swap(__x._M_t); }
+ void
+ clear()
+ { _M_t.clear(); }
+ key_compare
+ key_comp() const
+ { return _M_t.key_comp(); }
+ value_compare
+ value_comp() const
+ { return value_compare(_M_t.key_comp()); }
+ iterator
+ find(const key_type& __x)
+ { return _M_t.find(__x); }
+ const_iterator
+ find(const key_type& __x) const
+ { return _M_t.find(__x); }
+ size_type
+ count(const key_type& __x) const
+ { return _M_t.count(__x); }
+ iterator
+ lower_bound(const key_type& __x)
+ { return _M_t.lower_bound(__x); }
+ const_iterator
+ lower_bound(const key_type& __x) const
+ { return _M_t.lower_bound(__x); }
+ iterator
+ upper_bound(const key_type& __x)
+ { return _M_t.upper_bound(__x); }
+ const_iterator
+ upper_bound(const key_type& __x) const
+ { return _M_t.upper_bound(__x); }
+ std::pair<iterator, iterator>
+ equal_range(const key_type& __x)
+ { return _M_t.equal_range(__x); }
+ std::pair<const_iterator, const_iterator>
+ equal_range(const key_type& __x) const
+ { return _M_t.equal_range(__x); }
+ template<typename _K1, typename _T1, typename _C1, typename _A1>
+ friend bool
+ operator==(const multimap<_K1, _T1, _C1, _A1>&,
+ const multimap<_K1, _T1, _C1, _A1>&);
+ template<typename _K1, typename _T1, typename _C1, typename _A1>
+ friend bool
+ operator<(const multimap<_K1, _T1, _C1, _A1>&,
+ const multimap<_K1, _T1, _C1, _A1>&);
+ };
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return __x._M_t == __y._M_t; }
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return __x._M_t < __y._M_t; }
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return !(__x == __y); }
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return __y < __x; }
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return !(__y < __x); }
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline bool
+ operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ const multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { return !(__x < __y); }
+ template<typename _Key, typename _Tp, typename _Compare, typename _Alloc>
+ inline void
+ swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x,
+ multimap<_Key, _Tp, _Compare, _Alloc>& __y)
+ { __x.swap(__y); }
+}
+typedef QtValidLicenseForCoreModule QtCoreModule;
+struct __attribute__((visibility("default"))) QMapData
+{
+ struct Node {
+ Node *backward;
+ Node *forward[1];
+ };
+ enum { LastLevel = 11, Sparseness = 3 };
+ QMapData *backward;
+ QMapData *forward[QMapData::LastLevel + 1];
+ QBasicAtomicInt ref;
+ int topLevel;
+ int size;
+ uint randomBits;
+ uint insertInOrder : 1;
+ uint sharable : 1;
+ static QMapData *createData();
+ void continueFreeData(int offset);
+ Node *node_create(Node *update[], int offset);
+ void node_delete(Node *update[], int offset, Node *node);
+ static QMapData shared_null;
+};
+template <class Key> inline bool qMapLessThanKey(const Key &key1, const Key &key2)
+{
+ return key1 < key2;
+}
+template <class Ptr> inline bool qMapLessThanKey(Ptr *key1, Ptr *key2)
+{
+ qt_noop();
+ return quintptr(key1) < quintptr(key2);
+}
+template <class Ptr> inline bool qMapLessThanKey(const Ptr *key1, const Ptr *key2)
+{
+ qt_noop();
+ return quintptr(key1) < quintptr(key2);
+}
+template <class Key, class T>
+struct QMapNode {
+ Key key;
+ T value;
+ QMapData::Node *backward;
+ QMapData::Node *forward[1];
+};
+template <class Key, class T>
+struct QMapPayloadNode
+{
+ Key key;
+ T value;
+ QMapData::Node *backward;
+};
+template <class Key, class T>
+class QMap
+{
+ typedef QMapNode<Key, T> Node;
+ typedef QMapPayloadNode<Key, T> PayloadNode;
+ union {
+ QMapData *d;
+ QMapData::Node *e;
+ };
+ static inline int payload() { return sizeof(PayloadNode) - sizeof(QMapData::Node *); }
+ static inline Node *concrete(QMapData::Node *node) {
+ return reinterpret_cast<Node *>(reinterpret_cast<char *>(node) - payload());
+ }
+public:
+ inline QMap() : d(&QMapData::shared_null) { d->ref.ref(); }
+ inline QMap(const QMap<Key, T> &other) : d(other.d)
+ { d->ref.ref(); if (!d->sharable) detach(); }
+ inline ~QMap() { if (!d) return; if (!d->ref.deref()) freeData(d); }
+ QMap<Key, T> &operator=(const QMap<Key, T> &other);
+ explicit QMap(const typename std::map<Key, T> &other);
+ std::map<Key, T> toStdMap() const;
+ bool operator==(const QMap<Key, T> &other) const;
+ inline bool operator!=(const QMap<Key, T> &other) const { return !(*this == other); }
+ inline int size() const { return d->size; }
+ inline bool isEmpty() const { return d->size == 0; }
+ inline void detach() { if (d->ref != 1) detach_helper(); }
+ inline bool isDetached() const { return d->ref == 1; }
+ inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; }
+ inline void setInsertInOrder(bool ordered) { d->insertInOrder = ordered; }
+ void clear();
+ int remove(const Key &key);
+ T take(const Key &key);
+ bool contains(const Key &key) const;
+ const Key key(const T &value) const;
+ const Key key(const T &value, const Key &defaultKey) const;
+ const T value(const Key &key) const;
+ const T value(const Key &key, const T &defaultValue) const;
+ T &operator[](const Key &key);
+ const T operator[](const Key &key) const;
+ QList<Key> uniqueKeys() const;
+ QList<Key> keys() const;
+ QList<Key> keys(const T &value) const;
+ QList<T> values() const;
+ QList<T> values(const Key &key) const;
+ int count(const Key &key) const;
+ class const_iterator;
+ class iterator
+ {
+ friend class const_iterator;
+ QMapData::Node *i;
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef T *pointer;
+ typedef T &reference;
+ inline operator QMapData::Node *() const { return i; }
+ inline iterator() : i(0) { }
+ inline iterator(QMapData::Node *node) : i(node) { }
+ inline const Key &key() const { return concrete(i)->key; }
+ inline T &value() const { return concrete(i)->value; }
+ inline T &operator*() const { return concrete(i)->value; }
+ inline T *operator->() const { return &concrete(i)->value; }
+ inline bool operator==(const iterator &o) const { return i == o.i; }
+ inline bool operator!=(const iterator &o) const { return i != o.i; }
+ inline iterator &operator++() {
+ i = i->forward[0];
+ return *this;
+ }
+ inline iterator operator++(int) {
+ iterator r = *this;
+ i = i->forward[0];
+ return r;
+ }
+ inline iterator &operator--() {
+ i = i->backward;
+ return *this;
+ }
+ inline iterator operator--(int) {
+ iterator r = *this;
+ i = i->backward;
+ return r;
+ }
+ inline iterator operator+(int j) const
+ { iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; }
+ inline iterator operator-(int j) const { return operator+(-j); }
+ inline iterator &operator+=(int j) { return *this = *this + j; }
+ inline iterator &operator-=(int j) { return *this = *this - j; }
+ public:
+ inline bool operator==(const const_iterator &o) const
+ { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const
+ { return i != o.i; }
+ private:
+ inline operator bool() const { return false; }
+ };
+ friend class iterator;
+ class const_iterator
+ {
+ friend class iterator;
+ QMapData::Node *i;
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef const T *pointer;
+ typedef const T &reference;
+ inline operator QMapData::Node *() const { return i; }
+ inline const_iterator() : i(0) { }
+ inline const_iterator(QMapData::Node *node) : i(node) { }
+ inline const_iterator(const iterator &o)
+ { i = o.i; }
+ inline const Key &key() const { return concrete(i)->key; }
+ inline const T &value() const { return concrete(i)->value; }
+ inline const T &operator*() const { return concrete(i)->value; }
+ inline const T *operator->() const { return &concrete(i)->value; }
+ inline bool operator==(const const_iterator &o) const { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const { return i != o.i; }
+ inline const_iterator &operator++() {
+ i = i->forward[0];
+ return *this;
+ }
+ inline const_iterator operator++(int) {
+ const_iterator r = *this;
+ i = i->forward[0];
+ return r;
+ }
+ inline const_iterator &operator--() {
+ i = i->backward;
+ return *this;
+ }
+ inline const_iterator operator--(int) {
+ const_iterator r = *this;
+ i = i->backward;
+ return r;
+ }
+ inline const_iterator operator+(int j) const
+ { const_iterator r = *this; if (j > 0) while (j--) ++r; else while (j++) --r; return r; }
+ inline const_iterator operator-(int j) const { return operator+(-j); }
+ inline const_iterator &operator+=(int j) { return *this = *this + j; }
+ inline const_iterator &operator-=(int j) { return *this = *this - j; }
+ private:
+ inline operator bool() const { return false; }
+ };
+ friend class const_iterator;
+ inline iterator begin() { detach(); return iterator(e->forward[0]); }
+ inline const_iterator begin() const { return const_iterator(e->forward[0]); }
+ inline const_iterator constBegin() const { return const_iterator(e->forward[0]); }
+ inline iterator end() {
+ detach();
+ return iterator(e);
+ }
+ inline const_iterator end() const { return const_iterator(e); }
+ inline const_iterator constEnd() const { return const_iterator(e); }
+ iterator erase(iterator it);
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ inline int count() const { return d->size; }
+ iterator find(const Key &key);
+ const_iterator find(const Key &key) const;
+ const_iterator constFind(const Key &key) const;
+ iterator lowerBound(const Key &key);
+ const_iterator lowerBound(const Key &key) const;
+ iterator upperBound(const Key &key);
+ const_iterator upperBound(const Key &key) const;
+ iterator insert(const Key &key, const T &value);
+ iterator insertMulti(const Key &key, const T &value);
+ QMap<Key, T> &unite(const QMap<Key, T> &other);
+ typedef Key key_type;
+ typedef T mapped_type;
+ typedef ptrdiff_t difference_type;
+ typedef int size_type;
+ inline bool empty() const { return isEmpty(); }
+private:
+ void detach_helper();
+ void freeData(QMapData *d);
+ QMapData::Node *findNode(const Key &key) const;
+ QMapData::Node *mutableFindNode(QMapData::Node *update[], const Key &key) const;
+ QMapData::Node *node_create(QMapData *d, QMapData::Node *update[], const Key &key,
+ const T &value);
+};
+template <class Key, class T>
+inline QMap<Key, T> &QMap<Key, T>::operator=(const QMap<Key, T> &other)
+{
+ if (d != other.d) {
+ other.d->ref.ref();
+ if (!d->ref.deref())
+ freeData(d);
+ d = other.d;
+ if (!d->sharable)
+ detach_helper();
+ }
+ return *this;
+}
+template <class Key, class T>
+inline void QMap<Key, T>::clear()
+{
+ *this = QMap<Key, T>();
+}
+template <class Key, class T>
+inline typename QMapData::Node *
+QMap<Key, T>::node_create(QMapData *adt, QMapData::Node *aupdate[], const Key &akey, const T &avalue)
+{
+ QMapData::Node *abstractNode = adt->node_create(aupdate, payload());
+ Node *concreteNode = concrete(abstractNode);
+ new (&concreteNode->key) Key(akey);
+ new (&concreteNode->value) T(avalue);
+ return abstractNode;
+}
+template <class Key, class T>
+inline QMapData::Node *QMap<Key, T>::findNode(const Key &akey) const
+{
+ QMapData::Node *cur = e;
+ QMapData::Node *next = e;
+ for (int i = d->topLevel; i >= 0; i--) {
+ while ((next = cur->forward[i]) != e && qMapLessThanKey<Key>(concrete(next)->key, akey))
+ cur = next;
+ }
+ if (next != e && !qMapLessThanKey<Key>(akey, concrete(next)->key)) {
+ return next;
+ } else {
+ return e;
+ }
+}
+template <class Key, class T>
+inline const T QMap<Key, T>::value(const Key &akey) const
+{
+ QMapData::Node *node;
+ if (d->size == 0 || (node = findNode(akey)) == e) {
+ return T();
+ } else {
+ return concrete(node)->value;
+ }
+}
+template <class Key, class T>
+inline const T QMap<Key, T>::value(const Key &akey, const T &adefaultValue) const
+{
+ QMapData::Node *node;
+ if (d->size == 0 || (node = findNode(akey)) == e) {
+ return adefaultValue;
+ } else {
+ return concrete(node)->value;
+ }
+}
+template <class Key, class T>
+inline const T QMap<Key, T>::operator[](const Key &akey) const
+{
+ return value(akey);
+}
+template <class Key, class T>
+inline T &QMap<Key, T>::operator[](const Key &akey)
+{
+ detach();
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ QMapData::Node *node = mutableFindNode(update, akey);
+ if (node == e)
+ node = node_create(d, update, akey, T());
+ return concrete(node)->value;
+}
+template <class Key, class T>
+inline int QMap<Key, T>::count(const Key &akey) const
+{
+ int cnt = 0;
+ QMapData::Node *node = findNode(akey);
+ if (node != e) {
+ do {
+ ++cnt;
+ node = node->forward[0];
+ } while (node != e && !qMapLessThanKey<Key>(akey, concrete(node)->key));
+ }
+ return cnt;
+}
+template <class Key, class T>
+inline bool QMap<Key, T>::contains(const Key &akey) const
+{
+ return findNode(akey) != e;
+}
+template <class Key, class T>
+inline typename QMap<Key, T>::iterator QMap<Key, T>::insert(const Key &akey,
+ const T &avalue)
+{
+ detach();
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ QMapData::Node *node = mutableFindNode(update, akey);
+ if (node == e) {
+ node = node_create(d, update, akey, avalue);
+ } else {
+ concrete(node)->value = avalue;
+ }
+ return iterator(node);
+}
+template <class Key, class T>
+inline typename QMap<Key, T>::iterator QMap<Key, T>::insertMulti(const Key &akey,
+ const T &avalue)
+{
+ detach();
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ mutableFindNode(update, akey);
+ return iterator(node_create(d, update, akey, avalue));
+}
+template <class Key, class T>
+inline typename QMap<Key, T>::const_iterator QMap<Key, T>::find(const Key &akey) const
+{
+ return const_iterator(findNode(akey));
+}
+template <class Key, class T>
+inline typename QMap<Key, T>::const_iterator QMap<Key, T>::constFind(const Key &akey) const
+{
+ return const_iterator(findNode(akey));
+}
+template <class Key, class T>
+inline typename QMap<Key, T>::iterator QMap<Key, T>::find(const Key &akey)
+{
+ detach();
+ return iterator(findNode(akey));
+}
+template <class Key, class T>
+inline QMap<Key, T> &QMap<Key, T>::unite(const QMap<Key, T> &other)
+{
+ QMap<Key, T> copy(other);
+ const_iterator it = copy.constEnd();
+ const const_iterator b = copy.constBegin();
+ while (it != b) {
+ --it;
+ insertMulti(it.key(), it.value());
+ }
+ return *this;
+}
+template <class Key, class T>
+ void QMap<Key, T>::freeData(QMapData *x)
+{
+ if (QTypeInfo<Key>::isComplex || QTypeInfo<T>::isComplex) {
+ QMapData::Node *y = reinterpret_cast<QMapData::Node *>(x);
+ QMapData::Node *cur = y;
+ QMapData::Node *next = cur->forward[0];
+ while (next != y) {
+ cur = next;
+ next = cur->forward[0];
+ Node *concreteNode = concrete(cur);
+ concreteNode->key.~Key();
+ concreteNode->value.~T();
+ }
+ }
+ x->continueFreeData(payload());
+}
+template <class Key, class T>
+ int QMap<Key, T>::remove(const Key &akey)
+{
+ detach();
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ QMapData::Node *cur = e;
+ QMapData::Node *next = e;
+ int oldSize = d->size;
+ for (int i = d->topLevel; i >= 0; i--) {
+ while ((next = cur->forward[i]) != e && qMapLessThanKey<Key>(concrete(next)->key, akey))
+ cur = next;
+ update[i] = cur;
+ }
+ if (next != e && !qMapLessThanKey<Key>(akey, concrete(next)->key)) {
+ bool deleteNext = true;
+ do {
+ cur = next;
+ next = cur->forward[0];
+ deleteNext = (next != e && !qMapLessThanKey<Key>(concrete(cur)->key, concrete(next)->key));
+ concrete(cur)->key.~Key();
+ concrete(cur)->value.~T();
+ d->node_delete(update, payload(), cur);
+ } while (deleteNext);
+ }
+ return oldSize - d->size;
+}
+template <class Key, class T>
+ T QMap<Key, T>::take(const Key &akey)
+{
+ detach();
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ QMapData::Node *cur = e;
+ QMapData::Node *next = e;
+ for (int i = d->topLevel; i >= 0; i--) {
+ while ((next = cur->forward[i]) != e && qMapLessThanKey<Key>(concrete(next)->key, akey))
+ cur = next;
+ update[i] = cur;
+ }
+ if (next != e && !qMapLessThanKey<Key>(akey, concrete(next)->key)) {
+ T t = concrete(next)->value;
+ concrete(next)->key.~Key();
+ concrete(next)->value.~T();
+ d->node_delete(update, payload(), next);
+ return t;
+ }
+ return T();
+}
+template <class Key, class T>
+ typename QMap<Key, T>::iterator QMap<Key, T>::erase(iterator it)
+{
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ QMapData::Node *cur = e;
+ QMapData::Node *next = e;
+ if (it == iterator(e))
+ return it;
+ for (int i = d->topLevel; i >= 0; i--) {
+ while ((next = cur->forward[i]) != e && qMapLessThanKey<Key>(concrete(next)->key, it.key()))
+ cur = next;
+ update[i] = cur;
+ }
+ while (next != e) {
+ cur = next;
+ next = cur->forward[0];
+ if (cur == it) {
+ concrete(cur)->key.~Key();
+ concrete(cur)->value.~T();
+ d->node_delete(update, payload(), cur);
+ return iterator(next);
+ }
+ for (int i = 0; i <= d->topLevel; ++i) {
+ if (update[i]->forward[i] != cur)
+ break;
+ update[i] = cur;
+ }
+ }
+ return end();
+}
+template <class Key, class T>
+ void QMap<Key, T>::detach_helper()
+{
+ union { QMapData *d; QMapData::Node *e; } x;
+ x.d = QMapData::createData();
+ if (d->size) {
+ x.d->insertInOrder = true;
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ QMapData::Node *cur = e->forward[0];
+ update[0] = x.e;
+ while (cur != e) {
+ Node *concreteNode = concrete(cur);
+ node_create(x.d, update, concreteNode->key, concreteNode->value);
+ cur = cur->forward[0];
+ }
+ x.d->insertInOrder = false;
+ }
+ if (!d->ref.deref())
+ freeData(d);
+ d = x.d;
+}
+template <class Key, class T>
+ QMapData::Node *QMap<Key, T>::mutableFindNode(QMapData::Node *aupdate[],
+ const Key &akey) const
+{
+ QMapData::Node *cur = e;
+ QMapData::Node *next = e;
+ for (int i = d->topLevel; i >= 0; i--) {
+ while ((next = cur->forward[i]) != e && qMapLessThanKey<Key>(concrete(next)->key, akey))
+ cur = next;
+ aupdate[i] = cur;
+ }
+ if (next != e && !qMapLessThanKey<Key>(akey, concrete(next)->key)) {
+ return next;
+ } else {
+ return e;
+ }
+}
+template <class Key, class T>
+ QList<Key> QMap<Key, T>::uniqueKeys() const
+{
+ QList<Key> res;
+ const_iterator i = begin();
+ if (i != end()) {
+ for (;;) {
+ const Key &aKey = i.key();
+ res.append(aKey);
+ do {
+ if (++i == end())
+ goto break_out_of_outer_loop;
+ } while (!(aKey < i.key()));
+ }
+ }
+break_out_of_outer_loop:
+ return res;
+}
+template <class Key, class T>
+ QList<Key> QMap<Key, T>::keys() const
+{
+ QList<Key> res;
+ const_iterator i = begin();
+ while (i != end()) {
+ res.append(i.key());
+ ++i;
+ }
+ return res;
+}
+template <class Key, class T>
+ QList<Key> QMap<Key, T>::keys(const T &avalue) const
+{
+ QList<Key> res;
+ const_iterator i = begin();
+ while (i != end()) {
+ if (i.value() == avalue)
+ res.append(i.key());
+ ++i;
+ }
+ return res;
+}
+template <class Key, class T>
+ const Key QMap<Key, T>::key(const T &avalue) const
+{
+ return key(avalue, Key());
+}
+template <class Key, class T>
+ const Key QMap<Key, T>::key(const T &avalue, const Key &defaultKey) const
+{
+ const_iterator i = begin();
+ while (i != end()) {
+ if (i.value() == avalue)
+ return i.key();
+ ++i;
+ }
+ return defaultKey;
+}
+template <class Key, class T>
+ QList<T> QMap<Key, T>::values() const
+{
+ QList<T> res;
+ const_iterator i = begin();
+ while (i != end()) {
+ res.append(i.value());
+ ++i;
+ }
+ return res;
+}
+template <class Key, class T>
+ QList<T> QMap<Key, T>::values(const Key &akey) const
+{
+ QList<T> res;
+ QMapData::Node *node = findNode(akey);
+ if (node != e) {
+ do {
+ res.append(concrete(node)->value);
+ node = node->forward[0];
+ } while (node != e && !qMapLessThanKey<Key>(akey, concrete(node)->key));
+ }
+ return res;
+}
+template <class Key, class T>
+inline typename QMap<Key, T>::const_iterator
+QMap<Key, T>::lowerBound(const Key &akey) const
+{
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ mutableFindNode(update, akey);
+ return const_iterator(update[0]->forward[0]);
+}
+template <class Key, class T>
+inline typename QMap<Key, T>::iterator QMap<Key, T>::lowerBound(const Key &akey)
+{
+ detach();
+ return static_cast<QMapData::Node *>(const_cast<const QMap *>(this)->lowerBound(akey));
+}
+template <class Key, class T>
+inline typename QMap<Key, T>::const_iterator
+QMap<Key, T>::upperBound(const Key &akey) const
+{
+ QMapData::Node *update[QMapData::LastLevel + 1];
+ mutableFindNode(update, akey);
+ QMapData::Node *node = update[0]->forward[0];
+ while (node != e && !qMapLessThanKey<Key>(akey, concrete(node)->key))
+ node = node->forward[0];
+ return const_iterator(node);
+}
+template <class Key, class T>
+inline typename QMap<Key, T>::iterator QMap<Key, T>::upperBound(const Key &akey)
+{
+ detach();
+ return static_cast<QMapData::Node *>(const_cast<const QMap *>(this)->upperBound(akey));
+}
+template <class Key, class T>
+ bool QMap<Key, T>::operator==(const QMap<Key, T> &other) const
+{
+ if (size() != other.size())
+ return false;
+ if (d == other.d)
+ return true;
+ const_iterator it1 = begin();
+ const_iterator it2 = other.begin();
+ while (it1 != end()) {
+ if (!(it1.value() == it2.value()) || qMapLessThanKey(it1.key(), it2.key()) || qMapLessThanKey(it2.key(), it1.key()))
+ return false;
+ ++it2;
+ ++it1;
+ }
+ return true;
+}
+template <class Key, class T>
+ QMap<Key, T>::QMap(const std::map<Key, T> &other)
+{
+ d = QMapData::createData();
+ d->insertInOrder = true;
+ typename std::map<Key,T>::const_iterator it = other.end();
+ while (it != other.begin()) {
+ --it;
+ insert((*it).first, (*it).second);
+ }
+ d->insertInOrder = false;
+}
+template <class Key, class T>
+ std::map<Key, T> QMap<Key, T>::toStdMap() const
+{
+ std::map<Key, T> map;
+ const_iterator it = end();
+ while (it != begin()) {
+ --it;
+ map.insert(std::pair<Key, T>(it.key(), it.value()));
+ }
+ return map;
+}
+template <class Key, class T>
+class QMultiMap : public QMap<Key, T>
+{
+public:
+ QMultiMap() {}
+ QMultiMap(const QMap<Key, T> &other) : QMap<Key, T>(other) {}
+ inline typename QMap<Key, T>::iterator replace(const Key &key, const T &value)
+ { return QMap<Key, T>::insert(key, value); }
+ inline typename QMap<Key, T>::iterator insert(const Key &key, const T &value)
+ { return QMap<Key, T>::insertMulti(key, value); }
+ inline QMultiMap &operator+=(const QMultiMap &other)
+ { unite(other); return *this; }
+ inline QMultiMap operator+(const QMultiMap &other) const
+ { QMultiMap result = *this; result += other; return result; }
+ using QMap<Key, T>::contains;
+ using QMap<Key, T>::remove;
+ using QMap<Key, T>::count;
+ using QMap<Key, T>::find;
+ using QMap<Key, T>::constFind;
+ bool contains(const Key &key, const T &value) const;
+ int remove(const Key &key, const T &value);
+ int count(const Key &key, const T &value) const;
+ typename QMap<Key, T>::iterator find(const Key &key, const T &value) {
+ typename QMap<Key, T>::iterator i(find(key));
+ typename QMap<Key, T>::iterator end(this->end());
+ while (i != end && !qMapLessThanKey<Key>(key, i.key())) {
+ if (i.value() == value)
+ return i;
+ ++i;
+ }
+ return end;
+ }
+ typename QMap<Key, T>::const_iterator find(const Key &key, const T &value) const {
+ typename QMap<Key, T>::const_iterator i(constFind(key));
+ typename QMap<Key, T>::const_iterator end(QMap<Key, T>::constEnd());
+ while (i != end && !qMapLessThanKey<Key>(key, i.key())) {
+ if (i.value() == value)
+ return i;
+ ++i;
+ }
+ return end;
+ }
+ typename QMap<Key, T>::const_iterator constFind(const Key &key, const T &value) const
+ { return find(key, value); }
+private:
+ T &operator[](const Key &key);
+ const T operator[](const Key &key) const;
+};
+template <class Key, class T>
+inline bool QMultiMap<Key, T>::contains(const Key &key, const T &value) const
+{
+ return constFind(key, value) != QMap<Key, T>::constEnd();
+}
+template <class Key, class T>
+inline int QMultiMap<Key, T>::remove(const Key &key, const T &value)
+{
+ int n = 0;
+ typename QMap<Key, T>::iterator i(find(key));
+ typename QMap<Key, T>::const_iterator end(QMap<Key, T>::constEnd());
+ while (i != end && !qMapLessThanKey<Key>(key, i.key())) {
+ if (i.value() == value) {
+ i = erase(i);
+ ++n;
+ } else {
+ ++i;
+ }
+ }
+ return n;
+}
+template <class Key, class T>
+inline int QMultiMap<Key, T>::count(const Key &key, const T &value) const
+{
+ int n = 0;
+ typename QMap<Key, T>::const_iterator i(constFind(key));
+ typename QMap<Key, T>::const_iterator end(QMap<Key, T>::constEnd());
+ while (i != end && !qMapLessThanKey<Key>(key, i.key())) {
+ if (i.value() == value)
+ ++n;
+ ++i;
+ }
+ return n;
+}
+template <class Key, class T> class QMapIterator { typedef typename QMap<Key,T>::const_iterator const_iterator; typedef const_iterator Item; QMap<Key,T> c; const_iterator i, n; inline bool item_exists() const { return n != c.constEnd(); } public: inline QMapIterator(const QMap<Key,T> &container) : c(container), i(c.constBegin()), n(c.constEnd()) {} inline QMapIterator &operator=(const QMap<Key,T> &container) { c = container; i = c.constBegin(); n = c.constEnd(); return *this; } inline void toFront() { i = c.constBegin(); n = c.constEnd(); } inline void toBack() { i = c.constEnd(); n = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { const_iterator p = i; return --p; } inline const T &value() const { qt_noop(); return *n; } inline const Key &key() const { qt_noop(); return n.key(); } inline bool findNext(const T &t) { while ((n = i) != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(n = --i) == t) return true; n = c.constEnd(); return false; } };
+template <class Key, class T> class QMutableMapIterator { typedef typename QMap<Key,T>::iterator iterator; typedef typename QMap<Key,T>::const_iterator const_iterator; typedef iterator Item; QMap<Key,T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableMapIterator(QMap<Key,T> &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableMapIterator() { c->setSharable(true); } inline QMutableMapIterator &operator=(QMap<Key,T> &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = c->end(); } inline bool hasNext() const { return const_iterator(i) != c->constEnd(); } inline Item next() { n = i++; return n; } inline Item peekNext() const { return i; } inline bool hasPrevious() const { return const_iterator(i) != c->constBegin(); } inline Item previous() { n = --i; return n; } inline Item peekPrevious() const { iterator p = i; return --p; } inline void remove() { if (const_iterator(n) != c->constEnd()) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) { if (const_iterator(n) != c->constEnd()) *n = t; } inline T &value() { qt_noop(); return *n; } inline const T &value() const { qt_noop(); return *n; } inline const Key &key() const { qt_noop(); return n.key(); } inline bool findNext(const T &t) { while (const_iterator(n = i) != c->constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (const_iterator(i) != c->constBegin()) if (*(n = --i) == t) return true; n = c->end(); return false; } };
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QDataStream;
+class QDate;
+class QDateTime;
+class QTime;
+class QVariant;
+class QTextStream;
+class QTextStreamPrivate;
+class QLocale;
+class __attribute__((visibility("default"))) QSystemLocale
+{
+public:
+ QSystemLocale();
+ virtual ~QSystemLocale();
+ enum QueryType {
+ LanguageId,
+ CountryId,
+ DecimalPoint,
+ GroupSeparator,
+ ZeroDigit,
+ NegativeSign,
+ DateFormatLong,
+ DateFormatShort,
+ TimeFormatLong,
+ TimeFormatShort,
+ DayNameLong,
+ DayNameShort,
+ MonthNameLong,
+ MonthNameShort,
+ DateToStringLong,
+ DateToStringShort,
+ TimeToStringLong,
+ TimeToStringShort,
+ DateTimeFormatLong,
+ DateTimeFormatShort,
+ DateTimeToStringLong,
+ DateTimeToStringShort,
+ MeasurementSystem,
+ PositiveSign,
+ AMText,
+ PMText
+ };
+ virtual QVariant query(QueryType type, QVariant in) const;
+ virtual QLocale fallbackLocale() const;
+};
+struct QLocalePrivate;
+class __attribute__((visibility("default"))) QLocale
+{
+ public: static const QMetaObject staticMetaObject; private:
+ friend class QString;
+ friend class QByteArray;
+ friend class QIntValidator;
+ friend class QDoubleValidator;
+ friend class QTextStream;
+ friend class QTextStreamPrivate;
+public:
+ enum Language {
+ C = 1,
+ Abkhazian = 2,
+ Afan = 3,
+ Afar = 4,
+ Afrikaans = 5,
+ Albanian = 6,
+ Amharic = 7,
+ Arabic = 8,
+ Armenian = 9,
+ Assamese = 10,
+ Aymara = 11,
+ Azerbaijani = 12,
+ Bashkir = 13,
+ Basque = 14,
+ Bengali = 15,
+ Bhutani = 16,
+ Bihari = 17,
+ Bislama = 18,
+ Breton = 19,
+ Bulgarian = 20,
+ Burmese = 21,
+ Byelorussian = 22,
+ Cambodian = 23,
+ Catalan = 24,
+ Chinese = 25,
+ Corsican = 26,
+ Croatian = 27,
+ Czech = 28,
+ Danish = 29,
+ Dutch = 30,
+ English = 31,
+ Esperanto = 32,
+ Estonian = 33,
+ Faroese = 34,
+ FijiLanguage = 35,
+ Finnish = 36,
+ French = 37,
+ Frisian = 38,
+ Gaelic = 39,
+ Galician = 40,
+ Georgian = 41,
+ German = 42,
+ Greek = 43,
+ Greenlandic = 44,
+ Guarani = 45,
+ Gujarati = 46,
+ Hausa = 47,
+ Hebrew = 48,
+ Hindi = 49,
+ Hungarian = 50,
+ Icelandic = 51,
+ Indonesian = 52,
+ Interlingua = 53,
+ Interlingue = 54,
+ Inuktitut = 55,
+ Inupiak = 56,
+ Irish = 57,
+ Italian = 58,
+ Japanese = 59,
+ Javanese = 60,
+ Kannada = 61,
+ Kashmiri = 62,
+ Kazakh = 63,
+ Kinyarwanda = 64,
+ Kirghiz = 65,
+ Korean = 66,
+ Kurdish = 67,
+ Kurundi = 68,
+ Laothian = 69,
+ Latin = 70,
+ Latvian = 71,
+ Lingala = 72,
+ Lithuanian = 73,
+ Macedonian = 74,
+ Malagasy = 75,
+ Malay = 76,
+ Malayalam = 77,
+ Maltese = 78,
+ Maori = 79,
+ Marathi = 80,
+ Moldavian = 81,
+ Mongolian = 82,
+ NauruLanguage = 83,
+ Nepali = 84,
+ Norwegian = 85,
+ NorwegianBokmal = Norwegian,
+ Occitan = 86,
+ Oriya = 87,
+ Pashto = 88,
+ Persian = 89,
+ Polish = 90,
+ Portuguese = 91,
+ Punjabi = 92,
+ Quechua = 93,
+ RhaetoRomance = 94,
+ Romanian = 95,
+ Russian = 96,
+ Samoan = 97,
+ Sangho = 98,
+ Sanskrit = 99,
+ Serbian = 100,
+ SerboCroatian = 101,
+ Sesotho = 102,
+ Setswana = 103,
+ Shona = 104,
+ Sindhi = 105,
+ Singhalese = 106,
+ Siswati = 107,
+ Slovak = 108,
+ Slovenian = 109,
+ Somali = 110,
+ Spanish = 111,
+ Sundanese = 112,
+ Swahili = 113,
+ Swedish = 114,
+ Tagalog = 115,
+ Tajik = 116,
+ Tamil = 117,
+ Tatar = 118,
+ Telugu = 119,
+ Thai = 120,
+ Tibetan = 121,
+ Tigrinya = 122,
+ TongaLanguage = 123,
+ Tsonga = 124,
+ Turkish = 125,
+ Turkmen = 126,
+ Twi = 127,
+ Uigur = 128,
+ Ukrainian = 129,
+ Urdu = 130,
+ Uzbek = 131,
+ Vietnamese = 132,
+ Volapuk = 133,
+ Welsh = 134,
+ Wolof = 135,
+ Xhosa = 136,
+ Yiddish = 137,
+ Yoruba = 138,
+ Zhuang = 139,
+ Zulu = 140,
+ NorwegianNynorsk = 141,
+ Nynorsk = NorwegianNynorsk,
+ Bosnian = 142,
+ Divehi = 143,
+ Manx = 144,
+ Cornish = 145,
+ Akan = 146,
+ Konkani = 147,
+ Ga = 148,
+ Igbo = 149,
+ Kamba = 150,
+ Syriac = 151,
+ Blin = 152,
+ Geez = 153,
+ Koro = 154,
+ Sidamo = 155,
+ Atsam = 156,
+ Tigre = 157,
+ Jju = 158,
+ Friulian = 159,
+ Venda = 160,
+ Ewe = 161,
+ Walamo = 162,
+ Hawaiian = 163,
+ Tyap = 164,
+ Chewa = 165,
+ LastLanguage = Chewa
+ };
+ enum Country {
+ AnyCountry = 0,
+ Afghanistan = 1,
+ Albania = 2,
+ Algeria = 3,
+ AmericanSamoa = 4,
+ Andorra = 5,
+ Angola = 6,
+ Anguilla = 7,
+ Antarctica = 8,
+ AntiguaAndBarbuda = 9,
+ Argentina = 10,
+ Armenia = 11,
+ Aruba = 12,
+ Australia = 13,
+ Austria = 14,
+ Azerbaijan = 15,
+ Bahamas = 16,
+ Bahrain = 17,
+ Bangladesh = 18,
+ Barbados = 19,
+ Belarus = 20,
+ Belgium = 21,
+ Belize = 22,
+ Benin = 23,
+ Bermuda = 24,
+ Bhutan = 25,
+ Bolivia = 26,
+ BosniaAndHerzegowina = 27,
+ Botswana = 28,
+ BouvetIsland = 29,
+ Brazil = 30,
+ BritishIndianOceanTerritory = 31,
+ BruneiDarussalam = 32,
+ Bulgaria = 33,
+ BurkinaFaso = 34,
+ Burundi = 35,
+ Cambodia = 36,
+ Cameroon = 37,
+ Canada = 38,
+ CapeVerde = 39,
+ CaymanIslands = 40,
+ CentralAfricanRepublic = 41,
+ Chad = 42,
+ Chile = 43,
+ China = 44,
+ ChristmasIsland = 45,
+ CocosIslands = 46,
+ Colombia = 47,
+ Comoros = 48,
+ DemocraticRepublicOfCongo = 49,
+ PeoplesRepublicOfCongo = 50,
+ CookIslands = 51,
+ CostaRica = 52,
+ IvoryCoast = 53,
+ Croatia = 54,
+ Cuba = 55,
+ Cyprus = 56,
+ CzechRepublic = 57,
+ Denmark = 58,
+ Djibouti = 59,
+ Dominica = 60,
+ DominicanRepublic = 61,
+ EastTimor = 62,
+ Ecuador = 63,
+ Egypt = 64,
+ ElSalvador = 65,
+ EquatorialGuinea = 66,
+ Eritrea = 67,
+ Estonia = 68,
+ Ethiopia = 69,
+ FalklandIslands = 70,
+ FaroeIslands = 71,
+ FijiCountry = 72,
+ Finland = 73,
+ France = 74,
+ MetropolitanFrance = 75,
+ FrenchGuiana = 76,
+ FrenchPolynesia = 77,
+ FrenchSouthernTerritories = 78,
+ Gabon = 79,
+ Gambia = 80,
+ Georgia = 81,
+ Germany = 82,
+ Ghana = 83,
+ Gibraltar = 84,
+ Greece = 85,
+ Greenland = 86,
+ Grenada = 87,
+ Guadeloupe = 88,
+ Guam = 89,
+ Guatemala = 90,
+ Guinea = 91,
+ GuineaBissau = 92,
+ Guyana = 93,
+ Haiti = 94,
+ HeardAndMcDonaldIslands = 95,
+ Honduras = 96,
+ HongKong = 97,
+ Hungary = 98,
+ Iceland = 99,
+ India = 100,
+ Indonesia = 101,
+ Iran = 102,
+ Iraq = 103,
+ Ireland = 104,
+ Israel = 105,
+ Italy = 106,
+ Jamaica = 107,
+ Japan = 108,
+ Jordan = 109,
+ Kazakhstan = 110,
+ Kenya = 111,
+ Kiribati = 112,
+ DemocraticRepublicOfKorea = 113,
+ RepublicOfKorea = 114,
+ Kuwait = 115,
+ Kyrgyzstan = 116,
+ Lao = 117,
+ Latvia = 118,
+ Lebanon = 119,
+ Lesotho = 120,
+ Liberia = 121,
+ LibyanArabJamahiriya = 122,
+ Liechtenstein = 123,
+ Lithuania = 124,
+ Luxembourg = 125,
+ Macau = 126,
+ Macedonia = 127,
+ Madagascar = 128,
+ Malawi = 129,
+ Malaysia = 130,
+ Maldives = 131,
+ Mali = 132,
+ Malta = 133,
+ MarshallIslands = 134,
+ Martinique = 135,
+ Mauritania = 136,
+ Mauritius = 137,
+ Mayotte = 138,
+ Mexico = 139,
+ Micronesia = 140,
+ Moldova = 141,
+ Monaco = 142,
+ Mongolia = 143,
+ Montserrat = 144,
+ Morocco = 145,
+ Mozambique = 146,
+ Myanmar = 147,
+ Namibia = 148,
+ NauruCountry = 149,
+ Nepal = 150,
+ Netherlands = 151,
+ NetherlandsAntilles = 152,
+ NewCaledonia = 153,
+ NewZealand = 154,
+ Nicaragua = 155,
+ Niger = 156,
+ Nigeria = 157,
+ Niue = 158,
+ NorfolkIsland = 159,
+ NorthernMarianaIslands = 160,
+ Norway = 161,
+ Oman = 162,
+ Pakistan = 163,
+ Palau = 164,
+ PalestinianTerritory = 165,
+ Panama = 166,
+ PapuaNewGuinea = 167,
+ Paraguay = 168,
+ Peru = 169,
+ Philippines = 170,
+ Pitcairn = 171,
+ Poland = 172,
+ Portugal = 173,
+ PuertoRico = 174,
+ Qatar = 175,
+ Reunion = 176,
+ Romania = 177,
+ RussianFederation = 178,
+ Rwanda = 179,
+ SaintKittsAndNevis = 180,
+ StLucia = 181,
+ StVincentAndTheGrenadines = 182,
+ Samoa = 183,
+ SanMarino = 184,
+ SaoTomeAndPrincipe = 185,
+ SaudiArabia = 186,
+ Senegal = 187,
+ Seychelles = 188,
+ SierraLeone = 189,
+ Singapore = 190,
+ Slovakia = 191,
+ Slovenia = 192,
+ SolomonIslands = 193,
+ Somalia = 194,
+ SouthAfrica = 195,
+ SouthGeorgiaAndTheSouthSandwichIslands = 196,
+ Spain = 197,
+ SriLanka = 198,
+ StHelena = 199,
+ StPierreAndMiquelon = 200,
+ Sudan = 201,
+ Suriname = 202,
+ SvalbardAndJanMayenIslands = 203,
+ Swaziland = 204,
+ Sweden = 205,
+ Switzerland = 206,
+ SyrianArabRepublic = 207,
+ Taiwan = 208,
+ Tajikistan = 209,
+ Tanzania = 210,
+ Thailand = 211,
+ Togo = 212,
+ Tokelau = 213,
+ TongaCountry = 214,
+ TrinidadAndTobago = 215,
+ Tunisia = 216,
+ Turkey = 217,
+ Turkmenistan = 218,
+ TurksAndCaicosIslands = 219,
+ Tuvalu = 220,
+ Uganda = 221,
+ Ukraine = 222,
+ UnitedArabEmirates = 223,
+ UnitedKingdom = 224,
+ UnitedStates = 225,
+ UnitedStatesMinorOutlyingIslands = 226,
+ Uruguay = 227,
+ Uzbekistan = 228,
+ Vanuatu = 229,
+ VaticanCityState = 230,
+ Venezuela = 231,
+ VietNam = 232,
+ BritishVirginIslands = 233,
+ USVirginIslands = 234,
+ WallisAndFutunaIslands = 235,
+ WesternSahara = 236,
+ Yemen = 237,
+ Yugoslavia = 238,
+ Zambia = 239,
+ Zimbabwe = 240,
+ SerbiaAndMontenegro = 241,
+ LastCountry = SerbiaAndMontenegro
+ };
+ enum MeasurementSystem { MetricSystem, ImperialSystem };
+ enum FormatType { LongFormat, ShortFormat, NarrowFormat };
+ enum NumberOption {
+ OmitGroupSeparator = 0x01,
+ RejectGroupSeparator = 0x02
+ };
+ typedef QFlags<NumberOption> NumberOptions;
+ QLocale();
+ QLocale(const QString &name);
+ QLocale(Language language, Country country = AnyCountry);
+ QLocale(const QLocale &other);
+ QLocale &operator=(const QLocale &other);
+ Language language() const;
+ Country country() const;
+ QString name() const;
+ short toShort(const QString &s, bool *ok = 0, int base = 0) const;
+ ushort toUShort(const QString &s, bool *ok = 0, int base = 0) const;
+ int toInt(const QString &s, bool *ok = 0, int base = 0) const;
+ uint toUInt(const QString &s, bool *ok = 0, int base = 0) const;
+ qlonglong toLongLong(const QString &s, bool *ok = 0, int base = 0) const;
+ qlonglong toULongLong(const QString &s, bool *ok = 0, int base = 0) const;
+ float toFloat(const QString &s, bool *ok = 0) const;
+ double toDouble(const QString &s, bool *ok = 0) const;
+ QString toString(qlonglong i) const;
+ QString toString(qulonglong i) const;
+ inline QString toString(short i) const;
+ inline QString toString(ushort i) const;
+ inline QString toString(int i) const;
+ inline QString toString(uint i) const;
+ QString toString(double i, char f = 'g', int prec = 6) const;
+ inline QString toString(float i, char f = 'g', int prec = 6) const;
+ QString toString(const QDate &date, const QString &formatStr) const;
+ QString toString(const QDate &date, FormatType format = LongFormat) const;
+ QString toString(const QTime &time, const QString &formatStr) const;
+ QString toString(const QTime &time, FormatType format = LongFormat) const;
+ QString toString(const QDateTime &dateTime, FormatType format = LongFormat) const;
+ QString toString(const QDateTime &dateTime, const QString &format) const;
+ QString dateFormat(FormatType format = LongFormat) const;
+ QString timeFormat(FormatType format = LongFormat) const;
+ QString dateTimeFormat(FormatType format = LongFormat) const;
+ QDate toDate(const QString &string, FormatType = LongFormat) const;
+ QTime toTime(const QString &string, FormatType = LongFormat) const;
+ QDateTime toDateTime(const QString &string, FormatType format = LongFormat) const;
+ QDate toDate(const QString &string, const QString &format) const;
+ QTime toTime(const QString &string, const QString &format) const;
+ QDateTime toDateTime(const QString &string, const QString &format) const;
+ QChar decimalPoint() const;
+ QChar groupSeparator() const;
+ QChar percent() const;
+ QChar zeroDigit() const;
+ QChar negativeSign() const;
+ QChar positiveSign() const;
+ QChar exponential() const;
+ QString monthName(int, FormatType format = LongFormat) const;
+ QString standaloneMonthName(int, FormatType format = LongFormat) const;
+ QString dayName(int, FormatType format = LongFormat) const;
+ QString standaloneDayName(int, FormatType format = LongFormat) const;
+ QString amText() const;
+ QString pmText() const;
+ MeasurementSystem measurementSystem() const;
+ inline bool operator==(const QLocale &other) const;
+ inline bool operator!=(const QLocale &other) const;
+ static QString languageToString(Language language);
+ static QString countryToString(Country country);
+ static void setDefault(const QLocale &locale);
+ static QLocale c() { return QLocale(C); }
+ static QLocale system();
+ static QList<Country> countriesForLanguage(Language lang);
+ void setNumberOptions(NumberOptions options);
+ NumberOptions numberOptions() const;
+ struct Data {
+ quint16 index;
+ quint16 numberOptions;
+ }
+ ;
+private:
+ friend struct QLocalePrivate;
+ union {
+ void *v;
+ Data p;
+ };
+ const QLocalePrivate *d() const;
+};
+template <> class QTypeInfo<QLocale> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QLocale)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QLocale"; } };
+inline QFlags<QLocale::NumberOptions::enum_type> operator|(QLocale::NumberOptions::enum_type f1, QLocale::NumberOptions::enum_type f2) { return QFlags<QLocale::NumberOptions::enum_type>(f1) | f2; } inline QFlags<QLocale::NumberOptions::enum_type> operator|(QLocale::NumberOptions::enum_type f1, QFlags<QLocale::NumberOptions::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QLocale::NumberOptions::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QString QLocale::toString(short i) const
+ { return toString(qlonglong(i)); }
+inline QString QLocale::toString(ushort i) const
+ { return toString(qulonglong(i)); }
+inline QString QLocale::toString(int i) const
+ { return toString(qlonglong(i)); }
+inline QString QLocale::toString(uint i) const
+ { return toString(qulonglong(i)); }
+inline QString QLocale::toString(float i, char f, int prec) const
+ { return toString(double(i), f, prec); }
+inline bool QLocale::operator==(const QLocale &other) const
+ { return d() == other.d() && numberOptions() == other.numberOptions(); }
+inline bool QLocale::operator!=(const QLocale &other) const
+ { return d() != other.d() || numberOptions() != other.numberOptions(); }
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QLocale &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QLocale &);
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QTextCodec;
+class QTextDecoder;
+class QTextStreamPrivate;
+class __attribute__((visibility("default"))) QTextStream
+{
+ inline QTextStreamPrivate* d_func() { return reinterpret_cast<QTextStreamPrivate *>(d_ptr); } inline const QTextStreamPrivate* d_func() const { return reinterpret_cast<const QTextStreamPrivate *>(d_ptr); } friend class QTextStreamPrivate;
+public:
+ enum RealNumberNotation {
+ SmartNotation,
+ FixedNotation,
+ ScientificNotation
+ };
+ enum FieldAlignment {
+ AlignLeft,
+ AlignRight,
+ AlignCenter,
+ AlignAccountingStyle
+ };
+ enum Status {
+ Ok,
+ ReadPastEnd,
+ ReadCorruptData
+ };
+ enum NumberFlag {
+ ShowBase = 0x1,
+ ForcePoint = 0x2,
+ ForceSign = 0x4,
+ UppercaseBase = 0x8,
+ UppercaseDigits = 0x10
+ };
+ typedef QFlags<NumberFlag> NumberFlags;
+ QTextStream();
+ explicit QTextStream(QIODevice *device);
+ explicit QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite);
+ explicit QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite);
+ explicit QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite);
+ explicit QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly);
+ virtual ~QTextStream();
+ void setCodec(QTextCodec *codec);
+ void setCodec(const char *codecName);
+ QTextCodec *codec() const;
+ void setAutoDetectUnicode(bool enabled);
+ bool autoDetectUnicode() const;
+ void setGenerateByteOrderMark(bool generate);
+ bool generateByteOrderMark() const;
+ void setLocale(const QLocale &locale);
+ QLocale locale() const;
+ void setDevice(QIODevice *device);
+ QIODevice *device() const;
+ void setString(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite);
+ QString *string() const;
+ Status status() const;
+ void setStatus(Status status);
+ void resetStatus();
+ bool atEnd() const;
+ void reset();
+ void flush();
+ bool seek(qint64 pos);
+ qint64 pos() const;
+ void skipWhiteSpace();
+ QString readLine(qint64 maxlen = 0);
+ QString readAll();
+ QString read(qint64 maxlen);
+ void setFieldAlignment(FieldAlignment alignment);
+ FieldAlignment fieldAlignment() const;
+ void setPadChar(QChar ch);
+ QChar padChar() const;
+ void setFieldWidth(int width);
+ int fieldWidth() const;
+ void setNumberFlags(NumberFlags flags);
+ NumberFlags numberFlags() const;
+ void setIntegerBase(int base);
+ int integerBase() const;
+ void setRealNumberNotation(RealNumberNotation notation);
+ RealNumberNotation realNumberNotation() const;
+ void setRealNumberPrecision(int precision);
+ int realNumberPrecision() const;
+ QTextStream &operator>>(QChar &ch);
+ QTextStream &operator>>(char &ch);
+ QTextStream &operator>>(signed short &i);
+ QTextStream &operator>>(unsigned short &i);
+ QTextStream &operator>>(signed int &i);
+ QTextStream &operator>>(unsigned int &i);
+ QTextStream &operator>>(signed long &i);
+ QTextStream &operator>>(unsigned long &i);
+ QTextStream &operator>>(qlonglong &i);
+ QTextStream &operator>>(qulonglong &i);
+ QTextStream &operator>>(float &f);
+ QTextStream &operator>>(double &f);
+ QTextStream &operator>>(QString &s);
+ QTextStream &operator>>(QByteArray &array);
+ QTextStream &operator>>(char *c);
+ QTextStream &operator<<(QBool b);
+ QTextStream &operator<<(QChar ch);
+ QTextStream &operator<<(char ch);
+ QTextStream &operator<<(signed short i);
+ QTextStream &operator<<(unsigned short i);
+ QTextStream &operator<<(signed int i);
+ QTextStream &operator<<(unsigned int i);
+ QTextStream &operator<<(signed long i);
+ QTextStream &operator<<(unsigned long i);
+ QTextStream &operator<<(qlonglong i);
+ QTextStream &operator<<(qulonglong i);
+ QTextStream &operator<<(float f);
+ QTextStream &operator<<(double f);
+ QTextStream &operator<<(const QString &s);
+ QTextStream &operator<<(const QByteArray &array);
+ QTextStream &operator<<(const char *c);
+ QTextStream &operator<<(const void *ptr);
+private:
+ QTextStream(const QTextStream &); QTextStream &operator=(const QTextStream &);
+ QTextStreamPrivate *d_ptr;
+};
+inline QFlags<QTextStream::NumberFlags::enum_type> operator|(QTextStream::NumberFlags::enum_type f1, QTextStream::NumberFlags::enum_type f2) { return QFlags<QTextStream::NumberFlags::enum_type>(f1) | f2; } inline QFlags<QTextStream::NumberFlags::enum_type> operator|(QTextStream::NumberFlags::enum_type f1, QFlags<QTextStream::NumberFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QTextStream::NumberFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+typedef QTextStream & (*QTextStreamFunction)(QTextStream &);
+typedef void (QTextStream::*QTSMFI)(int);
+typedef void (QTextStream::*QTSMFC)(QChar);
+class __attribute__((visibility("default"))) QTextStreamManipulator
+{
+public:
+ QTextStreamManipulator(QTSMFI m, int a) { mf = m; mc = 0; arg = a; }
+ QTextStreamManipulator(QTSMFC m, QChar c) { mf = 0; mc = m; ch = c; }
+ void exec(QTextStream &s) { if (mf) { (s.*mf)(arg); } else { (s.*mc)(ch); } }
+private:
+ QTSMFI mf;
+ QTSMFC mc;
+ int arg;
+ QChar ch;
+};
+inline QTextStream &operator>>(QTextStream &s, QTextStreamFunction f)
+{ return (*f)(s); }
+inline QTextStream &operator<<(QTextStream &s, QTextStreamFunction f)
+{ return (*f)(s); }
+inline QTextStream &operator<<(QTextStream &s, QTextStreamManipulator m)
+{ m.exec(s); return s; }
+__attribute__((visibility("default"))) QTextStream &bin(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &oct(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &dec(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &hex(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &showbase(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &forcesign(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &forcepoint(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &noshowbase(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &noforcesign(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &noforcepoint(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &uppercasebase(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &uppercasedigits(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &lowercasebase(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &lowercasedigits(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &fixed(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &scientific(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &left(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &right(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream ¢er(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &endl(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &flush(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &reset(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &bom(QTextStream &s);
+__attribute__((visibility("default"))) QTextStream &ws(QTextStream &s);
+inline QTextStreamManipulator qSetFieldWidth(int width)
+{
+ QTSMFI func = &QTextStream::setFieldWidth;
+ return QTextStreamManipulator(func,width);
+}
+inline QTextStreamManipulator qSetPadChar(QChar ch)
+{
+ QTSMFC func = &QTextStream::setPadChar;
+ return QTextStreamManipulator(func, ch);
+}
+inline QTextStreamManipulator qSetRealNumberPrecision(int precision)
+{
+ QTSMFI func = &QTextStream::setRealNumberPrecision;
+ return QTextStreamManipulator(func, precision);
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _T1, typename _T2>
+ inline void
+ _Construct(_T1* __p, const _T2& __value)
+ {
+ ::new(static_cast<void*>(__p)) _T1(__value);
+ }
+ template<typename _Tp>
+ inline void
+ _Destroy(_Tp* __pointer)
+ { __pointer->~_Tp(); }
+ template<typename _ForwardIterator>
+ inline void
+ _Destroy(_ForwardIterator __first, _ForwardIterator __last)
+ {
+ typedef typename iterator_traits<_ForwardIterator>::value_type
+ _Value_type;
+ if (!__has_trivial_destructor(_Value_type))
+ for (; __first != __last; ++__first)
+ std::_Destroy(&*__first);
+ }
+ template <typename _Tp> class allocator;
+ template<typename _ForwardIterator, typename _Allocator>
+ void
+ _Destroy(_ForwardIterator __first, _ForwardIterator __last,
+ _Allocator& __alloc)
+ {
+ for (; __first != __last; ++__first)
+ __alloc.destroy(&*__first);
+ }
+ template<typename _ForwardIterator, typename _Tp>
+ inline void
+ _Destroy(_ForwardIterator __first, _ForwardIterator __last,
+ allocator<_Tp>&)
+ {
+ _Destroy(__first, __last);
+ }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<bool>
+ struct __uninitialized_copy
+ {
+ template<typename _InputIterator, typename _ForwardIterator>
+ static _ForwardIterator
+ uninitialized_copy(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result)
+ {
+ _ForwardIterator __cur = __result;
+ try
+ {
+ for (; __first != __last; ++__first, ++__cur)
+ ::new(static_cast<void*>(&*__cur)) typename
+ iterator_traits<_ForwardIterator>::value_type(*__first);
+ return __cur;
+ }
+ catch(...)
+ {
+ std::_Destroy(__result, __cur);
+ throw;
+ }
+ }
+ };
+ template<>
+ struct __uninitialized_copy<true>
+ {
+ template<typename _InputIterator, typename _ForwardIterator>
+ static _ForwardIterator
+ uninitialized_copy(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result)
+ { return std::copy(__first, __last, __result); }
+ };
+ template<typename _InputIterator, typename _ForwardIterator>
+ inline _ForwardIterator
+ uninitialized_copy(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result)
+ {
+ typedef typename iterator_traits<_InputIterator>::value_type
+ _ValueType1;
+ typedef typename iterator_traits<_ForwardIterator>::value_type
+ _ValueType2;
+ return std::__uninitialized_copy<(__is_pod(_ValueType1)
+ && __is_pod(_ValueType2))>::
+ uninitialized_copy(__first, __last, __result);
+ }
+ template<bool>
+ struct __uninitialized_fill
+ {
+ template<typename _ForwardIterator, typename _Tp>
+ static void
+ uninitialized_fill(_ForwardIterator __first,
+ _ForwardIterator __last, const _Tp& __x)
+ {
+ _ForwardIterator __cur = __first;
+ try
+ {
+ for (; __cur != __last; ++__cur)
+ std::_Construct(&*__cur, __x);
+ }
+ catch(...)
+ {
+ std::_Destroy(__first, __cur);
+ throw;
+ }
+ }
+ };
+ template<>
+ struct __uninitialized_fill<true>
+ {
+ template<typename _ForwardIterator, typename _Tp>
+ static void
+ uninitialized_fill(_ForwardIterator __first,
+ _ForwardIterator __last, const _Tp& __x)
+ { std::fill(__first, __last, __x); }
+ };
+ template<typename _ForwardIterator, typename _Tp>
+ inline void
+ uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last,
+ const _Tp& __x)
+ {
+ typedef typename iterator_traits<_ForwardIterator>::value_type
+ _ValueType;
+ std::__uninitialized_fill<__is_pod(_ValueType)>::
+ uninitialized_fill(__first, __last, __x);
+ }
+ template<bool>
+ struct __uninitialized_fill_n
+ {
+ template<typename _ForwardIterator, typename _Size, typename _Tp>
+ static void
+ uninitialized_fill_n(_ForwardIterator __first, _Size __n,
+ const _Tp& __x)
+ {
+ _ForwardIterator __cur = __first;
+ try
+ {
+ for (; __n > 0; --__n, ++__cur)
+ std::_Construct(&*__cur, __x);
+ }
+ catch(...)
+ {
+ std::_Destroy(__first, __cur);
+ throw;
+ }
+ }
+ };
+ template<>
+ struct __uninitialized_fill_n<true>
+ {
+ template<typename _ForwardIterator, typename _Size, typename _Tp>
+ static void
+ uninitialized_fill_n(_ForwardIterator __first, _Size __n,
+ const _Tp& __x)
+ { std::fill_n(__first, __n, __x); }
+ };
+ template<typename _ForwardIterator, typename _Size, typename _Tp>
+ inline void
+ uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x)
+ {
+ typedef typename iterator_traits<_ForwardIterator>::value_type
+ _ValueType;
+ std::__uninitialized_fill_n<__is_pod(_ValueType)>::
+ uninitialized_fill_n(__first, __n, __x);
+ }
+ template<typename _InputIterator, typename _ForwardIterator,
+ typename _Allocator>
+ _ForwardIterator
+ __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result, _Allocator& __alloc)
+ {
+ _ForwardIterator __cur = __result;
+ try
+ {
+ for (; __first != __last; ++__first, ++__cur)
+ __alloc.construct(&*__cur, *__first);
+ return __cur;
+ }
+ catch(...)
+ {
+ std::_Destroy(__result, __cur, __alloc);
+ throw;
+ }
+ }
+ template<typename _InputIterator, typename _ForwardIterator, typename _Tp>
+ inline _ForwardIterator
+ __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result, allocator<_Tp>&)
+ { return std::uninitialized_copy(__first, __last, __result); }
+ template<typename _InputIterator, typename _ForwardIterator,
+ typename _Allocator>
+ inline _ForwardIterator
+ __uninitialized_move_a(_InputIterator __first, _InputIterator __last,
+ _ForwardIterator __result, _Allocator& __alloc)
+ {
+ return std::__uninitialized_copy_a((__first),
+ (__last),
+ __result, __alloc);
+ }
+ template<typename _ForwardIterator, typename _Tp, typename _Allocator>
+ void
+ __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
+ const _Tp& __x, _Allocator& __alloc)
+ {
+ _ForwardIterator __cur = __first;
+ try
+ {
+ for (; __cur != __last; ++__cur)
+ __alloc.construct(&*__cur, __x);
+ }
+ catch(...)
+ {
+ std::_Destroy(__first, __cur, __alloc);
+ throw;
+ }
+ }
+ template<typename _ForwardIterator, typename _Tp, typename _Tp2>
+ inline void
+ __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,
+ const _Tp& __x, allocator<_Tp2>&)
+ { std::uninitialized_fill(__first, __last, __x); }
+ template<typename _ForwardIterator, typename _Size, typename _Tp,
+ typename _Allocator>
+ void
+ __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
+ const _Tp& __x, _Allocator& __alloc)
+ {
+ _ForwardIterator __cur = __first;
+ try
+ {
+ for (; __n > 0; --__n, ++__cur)
+ __alloc.construct(&*__cur, __x);
+ }
+ catch(...)
+ {
+ std::_Destroy(__first, __cur, __alloc);
+ throw;
+ }
+ }
+ template<typename _ForwardIterator, typename _Size, typename _Tp,
+ typename _Tp2>
+ inline void
+ __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,
+ const _Tp& __x, allocator<_Tp2>&)
+ { std::uninitialized_fill_n(__first, __n, __x); }
+ template<typename _InputIterator1, typename _InputIterator2,
+ typename _ForwardIterator, typename _Allocator>
+ inline _ForwardIterator
+ __uninitialized_copy_move(_InputIterator1 __first1,
+ _InputIterator1 __last1,
+ _InputIterator2 __first2,
+ _InputIterator2 __last2,
+ _ForwardIterator __result,
+ _Allocator& __alloc)
+ {
+ _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1,
+ __result,
+ __alloc);
+ try
+ {
+ return std::__uninitialized_move_a(__first2, __last2, __mid, __alloc);
+ }
+ catch(...)
+ {
+ std::_Destroy(__result, __mid, __alloc);
+ throw;
+ }
+ }
+ template<typename _InputIterator1, typename _InputIterator2,
+ typename _ForwardIterator, typename _Allocator>
+ inline _ForwardIterator
+ __uninitialized_move_copy(_InputIterator1 __first1,
+ _InputIterator1 __last1,
+ _InputIterator2 __first2,
+ _InputIterator2 __last2,
+ _ForwardIterator __result,
+ _Allocator& __alloc)
+ {
+ _ForwardIterator __mid = std::__uninitialized_move_a(__first1, __last1,
+ __result,
+ __alloc);
+ try
+ {
+ return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc);
+ }
+ catch(...)
+ {
+ std::_Destroy(__result, __mid, __alloc);
+ throw;
+ }
+ }
+ template<typename _ForwardIterator, typename _Tp, typename _InputIterator,
+ typename _Allocator>
+ inline _ForwardIterator
+ __uninitialized_fill_move(_ForwardIterator __result, _ForwardIterator __mid,
+ const _Tp& __x, _InputIterator __first,
+ _InputIterator __last, _Allocator& __alloc)
+ {
+ std::__uninitialized_fill_a(__result, __mid, __x, __alloc);
+ try
+ {
+ return std::__uninitialized_move_a(__first, __last, __mid, __alloc);
+ }
+ catch(...)
+ {
+ std::_Destroy(__result, __mid, __alloc);
+ throw;
+ }
+ }
+ template<typename _InputIterator, typename _ForwardIterator, typename _Tp,
+ typename _Allocator>
+ inline void
+ __uninitialized_move_fill(_InputIterator __first1, _InputIterator __last1,
+ _ForwardIterator __first2,
+ _ForwardIterator __last2, const _Tp& __x,
+ _Allocator& __alloc)
+ {
+ _ForwardIterator __mid2 = std::__uninitialized_move_a(__first1, __last1,
+ __first2,
+ __alloc);
+ try
+ {
+ std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc);
+ }
+ catch(...)
+ {
+ std::_Destroy(__first2, __mid2, __alloc);
+ throw;
+ }
+ }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Tp, typename _Alloc>
+ struct _Vector_base
+ {
+ typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;
+ struct _Vector_impl
+ : public _Tp_alloc_type
+ {
+ _Tp* _M_start;
+ _Tp* _M_finish;
+ _Tp* _M_end_of_storage;
+ _Vector_impl()
+ : _Tp_alloc_type(), _M_start(0), _M_finish(0), _M_end_of_storage(0)
+ { }
+ _Vector_impl(_Tp_alloc_type const& __a)
+ : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)
+ { }
+ };
+ public:
+ typedef _Alloc allocator_type;
+ _Tp_alloc_type&
+ _M_get_Tp_allocator()
+ { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); }
+ const _Tp_alloc_type&
+ _M_get_Tp_allocator() const
+ { return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); }
+ allocator_type
+ get_allocator() const
+ { return allocator_type(_M_get_Tp_allocator()); }
+ _Vector_base()
+ : _M_impl() { }
+ _Vector_base(const allocator_type& __a)
+ : _M_impl(__a) { }
+ _Vector_base(size_t __n, const allocator_type& __a)
+ : _M_impl(__a)
+ {
+ this->_M_impl._M_start = this->_M_allocate(__n);
+ this->_M_impl._M_finish = this->_M_impl._M_start;
+ this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+ }
+ ~_Vector_base()
+ { _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start); }
+ public:
+ _Vector_impl _M_impl;
+ _Tp*
+ _M_allocate(size_t __n)
+ { return __n != 0 ? _M_impl.allocate(__n) : 0; }
+ void
+ _M_deallocate(_Tp* __p, size_t __n)
+ {
+ if (__p)
+ _M_impl.deallocate(__p, __n);
+ }
+ };
+ template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
+ class vector : protected _Vector_base<_Tp, _Alloc>
+ {
+ typedef typename _Alloc::value_type _Alloc_value_type;
+ typedef _Vector_base<_Tp, _Alloc> _Base;
+ typedef vector<_Tp, _Alloc> vector_type;
+ typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;
+ public:
+ typedef _Tp value_type;
+ typedef typename _Tp_alloc_type::pointer pointer;
+ typedef typename _Tp_alloc_type::const_pointer const_pointer;
+ typedef typename _Tp_alloc_type::reference reference;
+ typedef typename _Tp_alloc_type::const_reference const_reference;
+ typedef __gnu_cxx::__normal_iterator<pointer, vector_type> iterator;
+ typedef __gnu_cxx::__normal_iterator<const_pointer, vector_type>
+ const_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Alloc allocator_type;
+ protected:
+ using _Base::_M_allocate;
+ using _Base::_M_deallocate;
+ using _Base::_M_impl;
+ using _Base::_M_get_Tp_allocator;
+ public:
+ vector()
+ : _Base() { }
+ explicit
+ vector(const allocator_type& __a)
+ : _Base(__a) { }
+ explicit
+ vector(size_type __n, const value_type& __value = value_type(),
+ const allocator_type& __a = allocator_type())
+ : _Base(__n, __a)
+ { _M_fill_initialize(__n, __value); }
+ vector(const vector& __x)
+ : _Base(__x.size(), __x._M_get_Tp_allocator())
+ { this->_M_impl._M_finish =
+ std::__uninitialized_copy_a(__x.begin(), __x.end(),
+ this->_M_impl._M_start,
+ _M_get_Tp_allocator());
+ }
+ template<typename _InputIterator>
+ vector(_InputIterator __first, _InputIterator __last,
+ const allocator_type& __a = allocator_type())
+ : _Base(__a)
+ {
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_initialize_dispatch(__first, __last, _Integral());
+ }
+ ~vector()
+ { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator()); }
+ vector&
+ operator=(const vector& __x);
+ void
+ assign(size_type __n, const value_type& __val)
+ { _M_fill_assign(__n, __val); }
+ template<typename _InputIterator>
+ void
+ assign(_InputIterator __first, _InputIterator __last)
+ {
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_assign_dispatch(__first, __last, _Integral());
+ }
+ using _Base::get_allocator;
+ iterator
+ begin()
+ { return iterator(this->_M_impl._M_start); }
+ const_iterator
+ begin() const
+ { return const_iterator(this->_M_impl._M_start); }
+ iterator
+ end()
+ { return iterator(this->_M_impl._M_finish); }
+ const_iterator
+ end() const
+ { return const_iterator(this->_M_impl._M_finish); }
+ reverse_iterator
+ rbegin()
+ { return reverse_iterator(end()); }
+ const_reverse_iterator
+ rbegin() const
+ { return const_reverse_iterator(end()); }
+ reverse_iterator
+ rend()
+ { return reverse_iterator(begin()); }
+ const_reverse_iterator
+ rend() const
+ { return const_reverse_iterator(begin()); }
+ size_type
+ size() const
+ { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }
+ size_type
+ max_size() const
+ { return _M_get_Tp_allocator().max_size(); }
+ void
+ resize(size_type __new_size, value_type __x = value_type())
+ {
+ if (__new_size < size())
+ _M_erase_at_end(this->_M_impl._M_start + __new_size);
+ else
+ insert(end(), __new_size - size(), __x);
+ }
+ size_type
+ capacity() const
+ { return size_type(this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start); }
+ bool
+ empty() const
+ { return begin() == end(); }
+ void
+ reserve(size_type __n);
+ reference
+ operator[](size_type __n)
+ { return *(this->_M_impl._M_start + __n); }
+ const_reference
+ operator[](size_type __n) const
+ { return *(this->_M_impl._M_start + __n); }
+ protected:
+ void
+ _M_range_check(size_type __n) const
+ {
+ if (__n >= this->size())
+ __throw_out_of_range(("vector::_M_range_check"));
+ }
+ public:
+ reference
+ at(size_type __n)
+ {
+ _M_range_check(__n);
+ return (*this)[__n];
+ }
+ const_reference
+ at(size_type __n) const
+ {
+ _M_range_check(__n);
+ return (*this)[__n];
+ }
+ reference
+ front()
+ { return *begin(); }
+ const_reference
+ front() const
+ { return *begin(); }
+ reference
+ back()
+ { return *(end() - 1); }
+ const_reference
+ back() const
+ { return *(end() - 1); }
+ pointer
+ data()
+ { return pointer(this->_M_impl._M_start); }
+ const_pointer
+ data() const
+ { return const_pointer(this->_M_impl._M_start); }
+ void
+ push_back(const value_type& __x)
+ {
+ if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
+ {
+ this->_M_impl.construct(this->_M_impl._M_finish, __x);
+ ++this->_M_impl._M_finish;
+ }
+ else
+ _M_insert_aux(end(), __x);
+ }
+ void
+ pop_back()
+ {
+ --this->_M_impl._M_finish;
+ this->_M_impl.destroy(this->_M_impl._M_finish);
+ }
+ iterator
+ insert(iterator __position, const value_type& __x);
+ void
+ insert(iterator __position, size_type __n, const value_type& __x)
+ { _M_fill_insert(__position, __n, __x); }
+ template<typename _InputIterator>
+ void
+ insert(iterator __position, _InputIterator __first,
+ _InputIterator __last)
+ {
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_insert_dispatch(__position, __first, __last, _Integral());
+ }
+ iterator
+ erase(iterator __position);
+ iterator
+ erase(iterator __first, iterator __last);
+ void
+ swap(vector& __x)
+ {
+ std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
+ std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
+ std::swap(this->_M_impl._M_end_of_storage,
+ __x._M_impl._M_end_of_storage);
+ std::__alloc_swap<_Tp_alloc_type>::_S_do_it(_M_get_Tp_allocator(),
+ __x._M_get_Tp_allocator());
+ }
+ void
+ clear()
+ { _M_erase_at_end(this->_M_impl._M_start); }
+ protected:
+ template<typename _ForwardIterator>
+ pointer
+ _M_allocate_and_copy(size_type __n,
+ _ForwardIterator __first, _ForwardIterator __last)
+ {
+ pointer __result = this->_M_allocate(__n);
+ try
+ {
+ std::__uninitialized_copy_a(__first, __last, __result,
+ _M_get_Tp_allocator());
+ return __result;
+ }
+ catch(...)
+ {
+ _M_deallocate(__result, __n);
+ throw;
+ }
+ }
+ template<typename _Integer>
+ void
+ _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type)
+ {
+ this->_M_impl._M_start = _M_allocate(static_cast<size_type>(__n));
+ this->_M_impl._M_end_of_storage =
+ this->_M_impl._M_start + static_cast<size_type>(__n);
+ _M_fill_initialize(static_cast<size_type>(__n), __value);
+ }
+ template<typename _InputIterator>
+ void
+ _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
+ __false_type)
+ {
+ typedef typename std::iterator_traits<_InputIterator>::
+ iterator_category _IterCategory;
+ _M_range_initialize(__first, __last, _IterCategory());
+ }
+ template<typename _InputIterator>
+ void
+ _M_range_initialize(_InputIterator __first,
+ _InputIterator __last, std::input_iterator_tag)
+ {
+ for (; __first != __last; ++__first)
+ push_back(*__first);
+ }
+ template<typename _ForwardIterator>
+ void
+ _M_range_initialize(_ForwardIterator __first,
+ _ForwardIterator __last, std::forward_iterator_tag)
+ {
+ const size_type __n = std::distance(__first, __last);
+ this->_M_impl._M_start = this->_M_allocate(__n);
+ this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+ this->_M_impl._M_finish =
+ std::__uninitialized_copy_a(__first, __last,
+ this->_M_impl._M_start,
+ _M_get_Tp_allocator());
+ }
+ void
+ _M_fill_initialize(size_type __n, const value_type& __value)
+ {
+ std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish = this->_M_impl._M_end_of_storage;
+ }
+ template<typename _Integer>
+ void
+ _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
+ { _M_fill_assign(__n, __val); }
+ template<typename _InputIterator>
+ void
+ _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
+ __false_type)
+ {
+ typedef typename std::iterator_traits<_InputIterator>::
+ iterator_category _IterCategory;
+ _M_assign_aux(__first, __last, _IterCategory());
+ }
+ template<typename _InputIterator>
+ void
+ _M_assign_aux(_InputIterator __first, _InputIterator __last,
+ std::input_iterator_tag);
+ template<typename _ForwardIterator>
+ void
+ _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
+ std::forward_iterator_tag);
+ void
+ _M_fill_assign(size_type __n, const value_type& __val);
+ template<typename _Integer>
+ void
+ _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val,
+ __true_type)
+ { _M_fill_insert(__pos, __n, __val); }
+ template<typename _InputIterator>
+ void
+ _M_insert_dispatch(iterator __pos, _InputIterator __first,
+ _InputIterator __last, __false_type)
+ {
+ typedef typename std::iterator_traits<_InputIterator>::
+ iterator_category _IterCategory;
+ _M_range_insert(__pos, __first, __last, _IterCategory());
+ }
+ template<typename _InputIterator>
+ void
+ _M_range_insert(iterator __pos, _InputIterator __first,
+ _InputIterator __last, std::input_iterator_tag);
+ template<typename _ForwardIterator>
+ void
+ _M_range_insert(iterator __pos, _ForwardIterator __first,
+ _ForwardIterator __last, std::forward_iterator_tag);
+ void
+ _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
+ void
+ _M_insert_aux(iterator __position, const value_type& __x);
+ size_type
+ _M_check_len(size_type __n, const char* __s) const
+ {
+ if (max_size() - size() < __n)
+ __throw_length_error((__s));
+ const size_type __len = size() + std::max(size(), __n);
+ return (__len < size() || __len > max_size()) ? max_size() : __len;
+ }
+ void
+ _M_erase_at_end(pointer __pos)
+ {
+ std::_Destroy(__pos, this->_M_impl._M_finish, _M_get_Tp_allocator());
+ this->_M_impl._M_finish = __pos;
+ }
+ };
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+ { return (__x.size() == __y.size()
+ && std::equal(__x.begin(), __x.end(), __y.begin())); }
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+ { return std::lexicographical_compare(__x.begin(), __x.end(),
+ __y.begin(), __y.end()); }
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+ { return !(__x == __y); }
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+ { return __y < __x; }
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+ { return !(__y < __x); }
+ template<typename _Tp, typename _Alloc>
+ inline bool
+ operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)
+ { return !(__x < __y); }
+ template<typename _Tp, typename _Alloc>
+ inline void
+ swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y)
+ { __x.swap(__y); }
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ typedef unsigned long _Bit_type;
+ enum { _S_word_bit = int(8 * sizeof(_Bit_type)) };
+ struct _Bit_reference
+ {
+ _Bit_type * _M_p;
+ _Bit_type _M_mask;
+ _Bit_reference(_Bit_type * __x, _Bit_type __y)
+ : _M_p(__x), _M_mask(__y) { }
+ _Bit_reference() : _M_p(0), _M_mask(0) { }
+ operator bool() const
+ { return !!(*_M_p & _M_mask); }
+ _Bit_reference&
+ operator=(bool __x)
+ {
+ if (__x)
+ *_M_p |= _M_mask;
+ else
+ *_M_p &= ~_M_mask;
+ return *this;
+ }
+ _Bit_reference&
+ operator=(const _Bit_reference& __x)
+ { return *this = bool(__x); }
+ bool
+ operator==(const _Bit_reference& __x) const
+ { return bool(*this) == bool(__x); }
+ bool
+ operator<(const _Bit_reference& __x) const
+ { return !bool(*this) && bool(__x); }
+ void
+ flip()
+ { *_M_p ^= _M_mask; }
+ };
+ struct _Bit_iterator_base
+ : public std::iterator<std::random_access_iterator_tag, bool>
+ {
+ _Bit_type * _M_p;
+ unsigned int _M_offset;
+ _Bit_iterator_base(_Bit_type * __x, unsigned int __y)
+ : _M_p(__x), _M_offset(__y) { }
+ void
+ _M_bump_up()
+ {
+ if (_M_offset++ == int(_S_word_bit) - 1)
+ {
+ _M_offset = 0;
+ ++_M_p;
+ }
+ }
+ void
+ _M_bump_down()
+ {
+ if (_M_offset-- == 0)
+ {
+ _M_offset = int(_S_word_bit) - 1;
+ --_M_p;
+ }
+ }
+ void
+ _M_incr(ptrdiff_t __i)
+ {
+ difference_type __n = __i + _M_offset;
+ _M_p += __n / int(_S_word_bit);
+ __n = __n % int(_S_word_bit);
+ if (__n < 0)
+ {
+ __n += int(_S_word_bit);
+ --_M_p;
+ }
+ _M_offset = static_cast<unsigned int>(__n);
+ }
+ bool
+ operator==(const _Bit_iterator_base& __i) const
+ { return _M_p == __i._M_p && _M_offset == __i._M_offset; }
+ bool
+ operator<(const _Bit_iterator_base& __i) const
+ {
+ return _M_p < __i._M_p
+ || (_M_p == __i._M_p && _M_offset < __i._M_offset);
+ }
+ bool
+ operator!=(const _Bit_iterator_base& __i) const
+ { return !(*this == __i); }
+ bool
+ operator>(const _Bit_iterator_base& __i) const
+ { return __i < *this; }
+ bool
+ operator<=(const _Bit_iterator_base& __i) const
+ { return !(__i < *this); }
+ bool
+ operator>=(const _Bit_iterator_base& __i) const
+ { return !(*this < __i); }
+ };
+ inline ptrdiff_t
+ operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y)
+ {
+ return (int(_S_word_bit) * (__x._M_p - __y._M_p)
+ + __x._M_offset - __y._M_offset);
+ }
+ struct _Bit_iterator : public _Bit_iterator_base
+ {
+ typedef _Bit_reference reference;
+ typedef _Bit_reference* pointer;
+ typedef _Bit_iterator iterator;
+ _Bit_iterator() : _Bit_iterator_base(0, 0) { }
+ _Bit_iterator(_Bit_type * __x, unsigned int __y)
+ : _Bit_iterator_base(__x, __y) { }
+ reference
+ operator*() const
+ { return reference(_M_p, 1UL << _M_offset); }
+ iterator&
+ operator++()
+ {
+ _M_bump_up();
+ return *this;
+ }
+ iterator
+ operator++(int)
+ {
+ iterator __tmp = *this;
+ _M_bump_up();
+ return __tmp;
+ }
+ iterator&
+ operator--()
+ {
+ _M_bump_down();
+ return *this;
+ }
+ iterator
+ operator--(int)
+ {
+ iterator __tmp = *this;
+ _M_bump_down();
+ return __tmp;
+ }
+ iterator&
+ operator+=(difference_type __i)
+ {
+ _M_incr(__i);
+ return *this;
+ }
+ iterator&
+ operator-=(difference_type __i)
+ {
+ *this += -__i;
+ return *this;
+ }
+ iterator
+ operator+(difference_type __i) const
+ {
+ iterator __tmp = *this;
+ return __tmp += __i;
+ }
+ iterator
+ operator-(difference_type __i) const
+ {
+ iterator __tmp = *this;
+ return __tmp -= __i;
+ }
+ reference
+ operator[](difference_type __i) const
+ { return *(*this + __i); }
+ };
+ inline _Bit_iterator
+ operator+(ptrdiff_t __n, const _Bit_iterator& __x)
+ { return __x + __n; }
+ struct _Bit_const_iterator : public _Bit_iterator_base
+ {
+ typedef bool reference;
+ typedef bool const_reference;
+ typedef const bool* pointer;
+ typedef _Bit_const_iterator const_iterator;
+ _Bit_const_iterator() : _Bit_iterator_base(0, 0) { }
+ _Bit_const_iterator(_Bit_type * __x, unsigned int __y)
+ : _Bit_iterator_base(__x, __y) { }
+ _Bit_const_iterator(const _Bit_iterator& __x)
+ : _Bit_iterator_base(__x._M_p, __x._M_offset) { }
+ const_reference
+ operator*() const
+ { return _Bit_reference(_M_p, 1UL << _M_offset); }
+ const_iterator&
+ operator++()
+ {
+ _M_bump_up();
+ return *this;
+ }
+ const_iterator
+ operator++(int)
+ {
+ const_iterator __tmp = *this;
+ _M_bump_up();
+ return __tmp;
+ }
+ const_iterator&
+ operator--()
+ {
+ _M_bump_down();
+ return *this;
+ }
+ const_iterator
+ operator--(int)
+ {
+ const_iterator __tmp = *this;
+ _M_bump_down();
+ return __tmp;
+ }
+ const_iterator&
+ operator+=(difference_type __i)
+ {
+ _M_incr(__i);
+ return *this;
+ }
+ const_iterator&
+ operator-=(difference_type __i)
+ {
+ *this += -__i;
+ return *this;
+ }
+ const_iterator
+ operator+(difference_type __i) const
+ {
+ const_iterator __tmp = *this;
+ return __tmp += __i;
+ }
+ const_iterator
+ operator-(difference_type __i) const
+ {
+ const_iterator __tmp = *this;
+ return __tmp -= __i;
+ }
+ const_reference
+ operator[](difference_type __i) const
+ { return *(*this + __i); }
+ };
+ inline _Bit_const_iterator
+ operator+(ptrdiff_t __n, const _Bit_const_iterator& __x)
+ { return __x + __n; }
+ inline void
+ __fill_bvector(_Bit_iterator __first, _Bit_iterator __last, bool __x)
+ {
+ for (; __first != __last; ++__first)
+ *__first = __x;
+ }
+ inline void
+ fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x)
+ {
+ if (__first._M_p != __last._M_p)
+ {
+ std::fill(__first._M_p + 1, __last._M_p, __x ? ~0 : 0);
+ __fill_bvector(__first, _Bit_iterator(__first._M_p + 1, 0), __x);
+ __fill_bvector(_Bit_iterator(__last._M_p, 0), __last, __x);
+ }
+ else
+ __fill_bvector(__first, __last, __x);
+ }
+ template<typename _Alloc>
+ struct _Bvector_base
+ {
+ typedef typename _Alloc::template rebind<_Bit_type>::other
+ _Bit_alloc_type;
+ struct _Bvector_impl
+ : public _Bit_alloc_type
+ {
+ _Bit_iterator _M_start;
+ _Bit_iterator _M_finish;
+ _Bit_type* _M_end_of_storage;
+ _Bvector_impl()
+ : _Bit_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage(0)
+ { }
+ _Bvector_impl(const _Bit_alloc_type& __a)
+ : _Bit_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage(0)
+ { }
+ };
+ public:
+ typedef _Alloc allocator_type;
+ _Bit_alloc_type&
+ _M_get_Bit_allocator()
+ { return *static_cast<_Bit_alloc_type*>(&this->_M_impl); }
+ const _Bit_alloc_type&
+ _M_get_Bit_allocator() const
+ { return *static_cast<const _Bit_alloc_type*>(&this->_M_impl); }
+ allocator_type
+ get_allocator() const
+ { return allocator_type(_M_get_Bit_allocator()); }
+ _Bvector_base()
+ : _M_impl() { }
+ _Bvector_base(const allocator_type& __a)
+ : _M_impl(__a) { }
+ ~_Bvector_base()
+ { this->_M_deallocate(); }
+ protected:
+ _Bvector_impl _M_impl;
+ _Bit_type*
+ _M_allocate(size_t __n)
+ { return _M_impl.allocate((__n + int(_S_word_bit) - 1)
+ / int(_S_word_bit)); }
+ void
+ _M_deallocate()
+ {
+ if (_M_impl._M_start._M_p)
+ _M_impl.deallocate(_M_impl._M_start._M_p,
+ _M_impl._M_end_of_storage - _M_impl._M_start._M_p);
+ }
+ };
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+template<typename _Alloc>
+ class vector<bool, _Alloc> : protected _Bvector_base<_Alloc>
+ {
+ typedef _Bvector_base<_Alloc> _Base;
+ public:
+ typedef bool value_type;
+ typedef size_t size_type;
+ typedef ptrdiff_t difference_type;
+ typedef _Bit_reference reference;
+ typedef bool const_reference;
+ typedef _Bit_reference* pointer;
+ typedef const bool* const_pointer;
+ typedef _Bit_iterator iterator;
+ typedef _Bit_const_iterator const_iterator;
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
+ typedef std::reverse_iterator<iterator> reverse_iterator;
+ typedef _Alloc allocator_type;
+ allocator_type get_allocator() const
+ { return _Base::get_allocator(); }
+ protected:
+ using _Base::_M_allocate;
+ using _Base::_M_deallocate;
+ using _Base::_M_get_Bit_allocator;
+ public:
+ vector()
+ : _Base() { }
+ explicit
+ vector(const allocator_type& __a)
+ : _Base(__a) { }
+ explicit
+ vector(size_type __n, const bool& __value = bool(),
+ const allocator_type& __a = allocator_type())
+ : _Base(__a)
+ {
+ _M_initialize(__n);
+ std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_of_storage,
+ __value ? ~0 : 0);
+ }
+ vector(const vector& __x)
+ : _Base(__x._M_get_Bit_allocator())
+ {
+ _M_initialize(__x.size());
+ _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start);
+ }
+ template<typename _InputIterator>
+ vector(_InputIterator __first, _InputIterator __last,
+ const allocator_type& __a = allocator_type())
+ : _Base(__a)
+ {
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_initialize_dispatch(__first, __last, _Integral());
+ }
+ ~vector() { }
+ vector&
+ operator=(const vector& __x)
+ {
+ if (&__x == this)
+ return *this;
+ if (__x.size() > capacity())
+ {
+ this->_M_deallocate();
+ _M_initialize(__x.size());
+ }
+ this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(),
+ begin());
+ return *this;
+ }
+ void
+ assign(size_type __n, const bool& __x)
+ { _M_fill_assign(__n, __x); }
+ template<typename _InputIterator>
+ void
+ assign(_InputIterator __first, _InputIterator __last)
+ {
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_assign_dispatch(__first, __last, _Integral());
+ }
+ iterator
+ begin()
+ { return this->_M_impl._M_start; }
+ const_iterator
+ begin() const
+ { return this->_M_impl._M_start; }
+ iterator
+ end()
+ { return this->_M_impl._M_finish; }
+ const_iterator
+ end() const
+ { return this->_M_impl._M_finish; }
+ reverse_iterator
+ rbegin()
+ { return reverse_iterator(end()); }
+ const_reverse_iterator
+ rbegin() const
+ { return const_reverse_iterator(end()); }
+ reverse_iterator
+ rend()
+ { return reverse_iterator(begin()); }
+ const_reverse_iterator
+ rend() const
+ { return const_reverse_iterator(begin()); }
+ size_type
+ size() const
+ { return size_type(end() - begin()); }
+ size_type
+ max_size() const
+ {
+ const size_type __isize =
+ __gnu_cxx::__numeric_traits<difference_type>::__max
+ - int(_S_word_bit) + 1;
+ const size_type __asize = _M_get_Bit_allocator().max_size();
+ return (__asize <= __isize / int(_S_word_bit)
+ ? __asize * int(_S_word_bit) : __isize);
+ }
+ size_type
+ capacity() const
+ { return size_type(const_iterator(this->_M_impl._M_end_of_storage, 0)
+ - begin()); }
+ bool
+ empty() const
+ { return begin() == end(); }
+ reference
+ operator[](size_type __n)
+ {
+ return *iterator(this->_M_impl._M_start._M_p
+ + __n / int(_S_word_bit), __n % int(_S_word_bit));
+ }
+ const_reference
+ operator[](size_type __n) const
+ {
+ return *const_iterator(this->_M_impl._M_start._M_p
+ + __n / int(_S_word_bit), __n % int(_S_word_bit));
+ }
+ protected:
+ void
+ _M_range_check(size_type __n) const
+ {
+ if (__n >= this->size())
+ __throw_out_of_range(("vector<bool>::_M_range_check"));
+ }
+ public:
+ reference
+ at(size_type __n)
+ { _M_range_check(__n); return (*this)[__n]; }
+ const_reference
+ at(size_type __n) const
+ { _M_range_check(__n); return (*this)[__n]; }
+ void
+ reserve(size_type __n);
+ reference
+ front()
+ { return *begin(); }
+ const_reference
+ front() const
+ { return *begin(); }
+ reference
+ back()
+ { return *(end() - 1); }
+ const_reference
+ back() const
+ { return *(end() - 1); }
+ void
+ data() { }
+ void
+ push_back(bool __x)
+ {
+ if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage)
+ *this->_M_impl._M_finish++ = __x;
+ else
+ _M_insert_aux(end(), __x);
+ }
+ void
+ swap(vector& __x)
+ {
+ std::swap(this->_M_impl._M_start, __x._M_impl._M_start);
+ std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);
+ std::swap(this->_M_impl._M_end_of_storage,
+ __x._M_impl._M_end_of_storage);
+ std::__alloc_swap<typename _Base::_Bit_alloc_type>::
+ _S_do_it(_M_get_Bit_allocator(), __x._M_get_Bit_allocator());
+ }
+ static void
+ swap(reference __x, reference __y)
+ {
+ bool __tmp = __x;
+ __x = __y;
+ __y = __tmp;
+ }
+ iterator
+ insert(iterator __position, const bool& __x = bool())
+ {
+ const difference_type __n = __position - begin();
+ if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage
+ && __position == end())
+ *this->_M_impl._M_finish++ = __x;
+ else
+ _M_insert_aux(__position, __x);
+ return begin() + __n;
+ }
+ template<typename _InputIterator>
+ void
+ insert(iterator __position,
+ _InputIterator __first, _InputIterator __last)
+ {
+ typedef typename std::__is_integer<_InputIterator>::__type _Integral;
+ _M_insert_dispatch(__position, __first, __last, _Integral());
+ }
+ void
+ insert(iterator __position, size_type __n, const bool& __x)
+ { _M_fill_insert(__position, __n, __x); }
+ void
+ pop_back()
+ { --this->_M_impl._M_finish; }
+ iterator
+ erase(iterator __position)
+ {
+ if (__position + 1 != end())
+ std::copy(__position + 1, end(), __position);
+ --this->_M_impl._M_finish;
+ return __position;
+ }
+ iterator
+ erase(iterator __first, iterator __last)
+ {
+ _M_erase_at_end(std::copy(__last, end(), __first));
+ return __first;
+ }
+ void
+ resize(size_type __new_size, bool __x = bool())
+ {
+ if (__new_size < size())
+ _M_erase_at_end(begin() + difference_type(__new_size));
+ else
+ insert(end(), __new_size - size(), __x);
+ }
+ void
+ flip()
+ {
+ for (_Bit_type * __p = this->_M_impl._M_start._M_p;
+ __p != this->_M_impl._M_end_of_storage; ++__p)
+ *__p = ~*__p;
+ }
+ void
+ clear()
+ { _M_erase_at_end(begin()); }
+ protected:
+ iterator
+ _M_copy_aligned(const_iterator __first, const_iterator __last,
+ iterator __result)
+ {
+ _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p);
+ return std::copy(const_iterator(__last._M_p, 0), __last,
+ iterator(__q, 0));
+ }
+ void
+ _M_initialize(size_type __n)
+ {
+ _Bit_type* __q = this->_M_allocate(__n);
+ this->_M_impl._M_end_of_storage = (__q
+ + ((__n + int(_S_word_bit) - 1)
+ / int(_S_word_bit)));
+ this->_M_impl._M_start = iterator(__q, 0);
+ this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n);
+ }
+ template<typename _Integer>
+ void
+ _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type)
+ {
+ _M_initialize(static_cast<size_type>(__n));
+ std::fill(this->_M_impl._M_start._M_p,
+ this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
+ }
+ template<typename _InputIterator>
+ void
+ _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,
+ __false_type)
+ { _M_initialize_range(__first, __last,
+ std::__iterator_category(__first)); }
+ template<typename _InputIterator>
+ void
+ _M_initialize_range(_InputIterator __first, _InputIterator __last,
+ std::input_iterator_tag)
+ {
+ for (; __first != __last; ++__first)
+ push_back(*__first);
+ }
+ template<typename _ForwardIterator>
+ void
+ _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last,
+ std::forward_iterator_tag)
+ {
+ const size_type __n = std::distance(__first, __last);
+ _M_initialize(__n);
+ std::copy(__first, __last, this->_M_impl._M_start);
+ }
+ template<typename _Integer>
+ void
+ _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
+ { _M_fill_assign(__n, __val); }
+ template<class _InputIterator>
+ void
+ _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
+ __false_type)
+ { _M_assign_aux(__first, __last, std::__iterator_category(__first)); }
+ void
+ _M_fill_assign(size_t __n, bool __x)
+ {
+ if (__n > size())
+ {
+ std::fill(this->_M_impl._M_start._M_p,
+ this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
+ insert(end(), __n - size(), __x);
+ }
+ else
+ {
+ _M_erase_at_end(begin() + __n);
+ std::fill(this->_M_impl._M_start._M_p,
+ this->_M_impl._M_end_of_storage, __x ? ~0 : 0);
+ }
+ }
+ template<typename _InputIterator>
+ void
+ _M_assign_aux(_InputIterator __first, _InputIterator __last,
+ std::input_iterator_tag)
+ {
+ iterator __cur = begin();
+ for (; __first != __last && __cur != end(); ++__cur, ++__first)
+ *__cur = *__first;
+ if (__first == __last)
+ _M_erase_at_end(__cur);
+ else
+ insert(end(), __first, __last);
+ }
+ template<typename _ForwardIterator>
+ void
+ _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
+ std::forward_iterator_tag)
+ {
+ const size_type __len = std::distance(__first, __last);
+ if (__len < size())
+ _M_erase_at_end(std::copy(__first, __last, begin()));
+ else
+ {
+ _ForwardIterator __mid = __first;
+ std::advance(__mid, size());
+ std::copy(__first, __mid, begin());
+ insert(end(), __mid, __last);
+ }
+ }
+ template<typename _Integer>
+ void
+ _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x,
+ __true_type)
+ { _M_fill_insert(__pos, __n, __x); }
+ template<typename _InputIterator>
+ void
+ _M_insert_dispatch(iterator __pos,
+ _InputIterator __first, _InputIterator __last,
+ __false_type)
+ { _M_insert_range(__pos, __first, __last,
+ std::__iterator_category(__first)); }
+ void
+ _M_fill_insert(iterator __position, size_type __n, bool __x);
+ template<typename _InputIterator>
+ void
+ _M_insert_range(iterator __pos, _InputIterator __first,
+ _InputIterator __last, std::input_iterator_tag)
+ {
+ for (; __first != __last; ++__first)
+ {
+ __pos = insert(__pos, *__first);
+ ++__pos;
+ }
+ }
+ template<typename _ForwardIterator>
+ void
+ _M_insert_range(iterator __position, _ForwardIterator __first,
+ _ForwardIterator __last, std::forward_iterator_tag);
+ void
+ _M_insert_aux(iterator __position, bool __x);
+ size_type
+ _M_check_len(size_type __n, const char* __s) const
+ {
+ if (max_size() - size() < __n)
+ __throw_length_error((__s));
+ const size_type __len = size() + std::max(size(), __n);
+ return (__len < size() || __len > max_size()) ? max_size() : __len;
+ }
+ void
+ _M_erase_at_end(iterator __pos)
+ { this->_M_impl._M_finish = __pos; }
+ };
+}
+namespace std __attribute__ ((__visibility__ ("default"))) {
+ template<typename _Tp, typename _Alloc>
+ void
+ vector<_Tp, _Alloc>::
+ reserve(size_type __n)
+ {
+ if (__n > this->max_size())
+ __throw_length_error(("vector::reserve"));
+ if (this->capacity() < __n)
+ {
+ const size_type __old_size = size();
+ pointer __tmp = _M_allocate_and_copy(__n,
+ (this->_M_impl._M_start),
+ (this->_M_impl._M_finish));
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(this->_M_impl._M_start,
+ this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start);
+ this->_M_impl._M_start = __tmp;
+ this->_M_impl._M_finish = __tmp + __old_size;
+ this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;
+ }
+ }
+ template<typename _Tp, typename _Alloc>
+ typename vector<_Tp, _Alloc>::iterator
+ vector<_Tp, _Alloc>::
+ insert(iterator __position, const value_type& __x)
+ {
+ const size_type __n = __position - begin();
+ if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage
+ && __position == end())
+ {
+ this->_M_impl.construct(this->_M_impl._M_finish, __x);
+ ++this->_M_impl._M_finish;
+ }
+ else
+ {
+ _M_insert_aux(__position, __x);
+ }
+ return iterator(this->_M_impl._M_start + __n);
+ }
+ template<typename _Tp, typename _Alloc>
+ typename vector<_Tp, _Alloc>::iterator
+ vector<_Tp, _Alloc>::
+ erase(iterator __position)
+ {
+ if (__position + 1 != end())
+ std::copy(__position + 1, end(), __position);
+ --this->_M_impl._M_finish;
+ this->_M_impl.destroy(this->_M_impl._M_finish);
+ return __position;
+ }
+ template<typename _Tp, typename _Alloc>
+ typename vector<_Tp, _Alloc>::iterator
+ vector<_Tp, _Alloc>::
+ erase(iterator __first, iterator __last)
+ {
+ if (__last != end())
+ std::copy(__last, end(), __first);
+ _M_erase_at_end(__first.base() + (end() - __last));
+ return __first;
+ }
+ template<typename _Tp, typename _Alloc>
+ vector<_Tp, _Alloc>&
+ vector<_Tp, _Alloc>::
+ operator=(const vector<_Tp, _Alloc>& __x)
+ {
+ if (&__x != this)
+ {
+ const size_type __xlen = __x.size();
+ if (__xlen > capacity())
+ {
+ pointer __tmp = _M_allocate_and_copy(__xlen, __x.begin(),
+ __x.end());
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(this->_M_impl._M_start,
+ this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start);
+ this->_M_impl._M_start = __tmp;
+ this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __xlen;
+ }
+ else if (size() >= __xlen)
+ {
+ std::_Destroy(std::copy(__x.begin(), __x.end(), begin()),
+ end(), _M_get_Tp_allocator());
+ }
+ else
+ {
+ std::copy(__x._M_impl._M_start, __x._M_impl._M_start + size(),
+ this->_M_impl._M_start);
+ std::__uninitialized_copy_a(__x._M_impl._M_start + size(),
+ __x._M_impl._M_finish,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ }
+ this->_M_impl._M_finish = this->_M_impl._M_start + __xlen;
+ }
+ return *this;
+ }
+ template<typename _Tp, typename _Alloc>
+ void
+ vector<_Tp, _Alloc>::
+ _M_fill_assign(size_t __n, const value_type& __val)
+ {
+ if (__n > capacity())
+ {
+ vector __tmp(__n, __val, _M_get_Tp_allocator());
+ __tmp.swap(*this);
+ }
+ else if (__n > size())
+ {
+ std::fill(begin(), end(), __val);
+ std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
+ __n - size(), __val,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __n - size();
+ }
+ else
+ _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val));
+ }
+ template<typename _Tp, typename _Alloc>
+ template<typename _InputIterator>
+ void
+ vector<_Tp, _Alloc>::
+ _M_assign_aux(_InputIterator __first, _InputIterator __last,
+ std::input_iterator_tag)
+ {
+ pointer __cur(this->_M_impl._M_start);
+ for (; __first != __last && __cur != this->_M_impl._M_finish;
+ ++__cur, ++__first)
+ *__cur = *__first;
+ if (__first == __last)
+ _M_erase_at_end(__cur);
+ else
+ insert(end(), __first, __last);
+ }
+ template<typename _Tp, typename _Alloc>
+ template<typename _ForwardIterator>
+ void
+ vector<_Tp, _Alloc>::
+ _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
+ std::forward_iterator_tag)
+ {
+ const size_type __len = std::distance(__first, __last);
+ if (__len > capacity())
+ {
+ pointer __tmp(_M_allocate_and_copy(__len, __first, __last));
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(this->_M_impl._M_start,
+ this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start);
+ this->_M_impl._M_start = __tmp;
+ this->_M_impl._M_finish = this->_M_impl._M_start + __len;
+ this->_M_impl._M_end_of_storage = this->_M_impl._M_finish;
+ }
+ else if (size() >= __len)
+ _M_erase_at_end(std::copy(__first, __last, this->_M_impl._M_start));
+ else
+ {
+ _ForwardIterator __mid = __first;
+ std::advance(__mid, size());
+ std::copy(__first, __mid, this->_M_impl._M_start);
+ this->_M_impl._M_finish =
+ std::__uninitialized_copy_a(__mid, __last,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ }
+ }
+ template<typename _Tp, typename _Alloc>
+ void
+ vector<_Tp, _Alloc>::
+ _M_insert_aux(iterator __position, const _Tp& __x)
+ {
+ if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)
+ {
+ this->_M_impl.construct(this->_M_impl._M_finish,
+ (*(this->_M_impl._M_finish - 1)));
+ ++this->_M_impl._M_finish;
+ _Tp __x_copy = __x;
+ std::copy_backward(__position.base(), this->_M_impl._M_finish - 2, this->_M_impl._M_finish - 1);
+ *__position = __x_copy;
+ }
+ else
+ {
+ const size_type __len =
+ _M_check_len(size_type(1), "vector::_M_insert_aux");
+ pointer __new_start(this->_M_allocate(__len));
+ pointer __new_finish(__new_start);
+ try
+ {
+ __new_finish =
+ std::__uninitialized_move_a(this->_M_impl._M_start,
+ __position.base(), __new_start,
+ _M_get_Tp_allocator());
+ this->_M_impl.construct(__new_finish, __x);
+ ++__new_finish;
+ __new_finish =
+ std::__uninitialized_move_a(__position.base(),
+ this->_M_impl._M_finish,
+ __new_finish,
+ _M_get_Tp_allocator());
+ }
+ catch(...)
+ {
+ std::_Destroy(__new_start, __new_finish, _M_get_Tp_allocator());
+ _M_deallocate(__new_start, __len);
+ throw;
+ }
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(this->_M_impl._M_start,
+ this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start);
+ this->_M_impl._M_start = __new_start;
+ this->_M_impl._M_finish = __new_finish;
+ this->_M_impl._M_end_of_storage = __new_start + __len;
+ }
+ }
+ template<typename _Tp, typename _Alloc>
+ void
+ vector<_Tp, _Alloc>::
+ _M_fill_insert(iterator __position, size_type __n, const value_type& __x)
+ {
+ if (__n != 0)
+ {
+ if (size_type(this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_finish) >= __n)
+ {
+ value_type __x_copy = __x;
+ const size_type __elems_after = end() - __position;
+ pointer __old_finish(this->_M_impl._M_finish);
+ if (__elems_after > __n)
+ {
+ std::__uninitialized_move_a(this->_M_impl._M_finish - __n,
+ this->_M_impl._M_finish,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __n;
+ std::copy_backward(__position.base(), __old_finish - __n, __old_finish);
+ std::fill(__position.base(), __position.base() + __n,
+ __x_copy);
+ }
+ else
+ {
+ std::__uninitialized_fill_n_a(this->_M_impl._M_finish,
+ __n - __elems_after,
+ __x_copy,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __n - __elems_after;
+ std::__uninitialized_move_a(__position.base(), __old_finish,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __elems_after;
+ std::fill(__position.base(), __old_finish, __x_copy);
+ }
+ }
+ else
+ {
+ const size_type __len =
+ _M_check_len(__n, "vector::_M_fill_insert");
+ pointer __new_start(this->_M_allocate(__len));
+ pointer __new_finish(__new_start);
+ try
+ {
+ __new_finish =
+ std::__uninitialized_move_a(this->_M_impl._M_start,
+ __position.base(),
+ __new_start,
+ _M_get_Tp_allocator());
+ std::__uninitialized_fill_n_a(__new_finish, __n, __x,
+ _M_get_Tp_allocator());
+ __new_finish += __n;
+ __new_finish =
+ std::__uninitialized_move_a(__position.base(),
+ this->_M_impl._M_finish,
+ __new_finish,
+ _M_get_Tp_allocator());
+ }
+ catch(...)
+ {
+ std::_Destroy(__new_start, __new_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(__new_start, __len);
+ throw;
+ }
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(this->_M_impl._M_start,
+ this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start);
+ this->_M_impl._M_start = __new_start;
+ this->_M_impl._M_finish = __new_finish;
+ this->_M_impl._M_end_of_storage = __new_start + __len;
+ }
+ }
+ }
+ template<typename _Tp, typename _Alloc>
+ template<typename _InputIterator>
+ void
+ vector<_Tp, _Alloc>::
+ _M_range_insert(iterator __pos, _InputIterator __first,
+ _InputIterator __last, std::input_iterator_tag)
+ {
+ for (; __first != __last; ++__first)
+ {
+ __pos = insert(__pos, *__first);
+ ++__pos;
+ }
+ }
+ template<typename _Tp, typename _Alloc>
+ template<typename _ForwardIterator>
+ void
+ vector<_Tp, _Alloc>::
+ _M_range_insert(iterator __position, _ForwardIterator __first,
+ _ForwardIterator __last, std::forward_iterator_tag)
+ {
+ if (__first != __last)
+ {
+ const size_type __n = std::distance(__first, __last);
+ if (size_type(this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_finish) >= __n)
+ {
+ const size_type __elems_after = end() - __position;
+ pointer __old_finish(this->_M_impl._M_finish);
+ if (__elems_after > __n)
+ {
+ std::__uninitialized_move_a(this->_M_impl._M_finish - __n,
+ this->_M_impl._M_finish,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __n;
+ std::copy_backward(__position.base(), __old_finish - __n, __old_finish);
+ std::copy(__first, __last, __position);
+ }
+ else
+ {
+ _ForwardIterator __mid = __first;
+ std::advance(__mid, __elems_after);
+ std::__uninitialized_copy_a(__mid, __last,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __n - __elems_after;
+ std::__uninitialized_move_a(__position.base(),
+ __old_finish,
+ this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ this->_M_impl._M_finish += __elems_after;
+ std::copy(__first, __mid, __position);
+ }
+ }
+ else
+ {
+ const size_type __len =
+ _M_check_len(__n, "vector::_M_range_insert");
+ pointer __new_start(this->_M_allocate(__len));
+ pointer __new_finish(__new_start);
+ try
+ {
+ __new_finish =
+ std::__uninitialized_move_a(this->_M_impl._M_start,
+ __position.base(),
+ __new_start,
+ _M_get_Tp_allocator());
+ __new_finish =
+ std::__uninitialized_copy_a(__first, __last,
+ __new_finish,
+ _M_get_Tp_allocator());
+ __new_finish =
+ std::__uninitialized_move_a(__position.base(),
+ this->_M_impl._M_finish,
+ __new_finish,
+ _M_get_Tp_allocator());
+ }
+ catch(...)
+ {
+ std::_Destroy(__new_start, __new_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(__new_start, __len);
+ throw;
+ }
+ std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,
+ _M_get_Tp_allocator());
+ _M_deallocate(this->_M_impl._M_start,
+ this->_M_impl._M_end_of_storage
+ - this->_M_impl._M_start);
+ this->_M_impl._M_start = __new_start;
+ this->_M_impl._M_finish = __new_finish;
+ this->_M_impl._M_end_of_storage = __new_start + __len;
+ }
+ }
+ }
+ template<typename _Alloc>
+ void
+ vector<bool, _Alloc>::
+ reserve(size_type __n)
+ {
+ if (__n > this->max_size())
+ __throw_length_error(("vector::reserve"));
+ if (this->capacity() < __n)
+ {
+ _Bit_type* __q = this->_M_allocate(__n);
+ this->_M_impl._M_finish = _M_copy_aligned(begin(), end(),
+ iterator(__q, 0));
+ this->_M_deallocate();
+ this->_M_impl._M_start = iterator(__q, 0);
+ this->_M_impl._M_end_of_storage = (__q + (__n + int(_S_word_bit) - 1)
+ / int(_S_word_bit));
+ }
+ }
+ template<typename _Alloc>
+ void
+ vector<bool, _Alloc>::
+ _M_fill_insert(iterator __position, size_type __n, bool __x)
+ {
+ if (__n == 0)
+ return;
+ if (capacity() - size() >= __n)
+ {
+ std::copy_backward(__position, end(),
+ this->_M_impl._M_finish + difference_type(__n));
+ std::fill(__position, __position + difference_type(__n), __x);
+ this->_M_impl._M_finish += difference_type(__n);
+ }
+ else
+ {
+ const size_type __len =
+ _M_check_len(__n, "vector<bool>::_M_fill_insert");
+ _Bit_type * __q = this->_M_allocate(__len);
+ iterator __i = _M_copy_aligned(begin(), __position,
+ iterator(__q, 0));
+ std::fill(__i, __i + difference_type(__n), __x);
+ this->_M_impl._M_finish = std::copy(__position, end(),
+ __i + difference_type(__n));
+ this->_M_deallocate();
+ this->_M_impl._M_end_of_storage = (__q + ((__len
+ + int(_S_word_bit) - 1)
+ / int(_S_word_bit)));
+ this->_M_impl._M_start = iterator(__q, 0);
+ }
+ }
+ template<typename _Alloc>
+ template<typename _ForwardIterator>
+ void
+ vector<bool, _Alloc>::
+ _M_insert_range(iterator __position, _ForwardIterator __first,
+ _ForwardIterator __last, std::forward_iterator_tag)
+ {
+ if (__first != __last)
+ {
+ size_type __n = std::distance(__first, __last);
+ if (capacity() - size() >= __n)
+ {
+ std::copy_backward(__position, end(),
+ this->_M_impl._M_finish
+ + difference_type(__n));
+ std::copy(__first, __last, __position);
+ this->_M_impl._M_finish += difference_type(__n);
+ }
+ else
+ {
+ const size_type __len =
+ _M_check_len(__n, "vector<bool>::_M_insert_range");
+ _Bit_type * __q = this->_M_allocate(__len);
+ iterator __i = _M_copy_aligned(begin(), __position,
+ iterator(__q, 0));
+ __i = std::copy(__first, __last, __i);
+ this->_M_impl._M_finish = std::copy(__position, end(), __i);
+ this->_M_deallocate();
+ this->_M_impl._M_end_of_storage = (__q
+ + ((__len
+ + int(_S_word_bit) - 1)
+ / int(_S_word_bit)));
+ this->_M_impl._M_start = iterator(__q, 0);
+ }
+ }
+ }
+ template<typename _Alloc>
+ void
+ vector<bool, _Alloc>::
+ _M_insert_aux(iterator __position, bool __x)
+ {
+ if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_of_storage)
+ {
+ std::copy_backward(__position, this->_M_impl._M_finish,
+ this->_M_impl._M_finish + 1);
+ *__position = __x;
+ ++this->_M_impl._M_finish;
+ }
+ else
+ {
+ const size_type __len =
+ _M_check_len(size_type(1), "vector<bool>::_M_insert_aux");
+ _Bit_type * __q = this->_M_allocate(__len);
+ iterator __i = _M_copy_aligned(begin(), __position,
+ iterator(__q, 0));
+ *__i++ = __x;
+ this->_M_impl._M_finish = std::copy(__position, end(), __i);
+ this->_M_deallocate();
+ this->_M_impl._M_end_of_storage = (__q + ((__len
+ + int(_S_word_bit) - 1)
+ / int(_S_word_bit)));
+ this->_M_impl._M_start = iterator(__q, 0);
+ }
+ }
+}
+extern "C" {
+union wait
+ {
+ int w_status;
+ struct
+ {
+ unsigned int __w_termsig:7;
+ unsigned int __w_coredump:1;
+ unsigned int __w_retcode:8;
+ unsigned int:16;
+ } __wait_terminated;
+ struct
+ {
+ unsigned int __w_stopval:8;
+ unsigned int __w_stopsig:8;
+ unsigned int:16;
+ } __wait_stopped;
+ };
+typedef struct
+ {
+ int quot;
+ int rem;
+ } div_t;
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } ldiv_t;
+__extension__ typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } lldiv_t;
+extern double atof (__const char *__nptr)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern int atoi (__const char *__nptr)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern long int atol (__const char *__nptr)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__ extern long long int atoll (__const char *__nptr)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern double strtod (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern float strtof (__const char *__restrict __nptr,
+ char **__restrict __endptr) throw () __attribute__ ((__nonnull__ (1))) ;
+extern long double strtold (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern long int strtol (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern char *l64a (long int __n) throw () ;
+extern long int a64l (__const char *__s)
+ throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern "C" {
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+typedef __loff_t loff_t;
+typedef __ino_t ino_t;
+typedef __ino64_t ino64_t;
+typedef __dev_t dev_t;
+typedef __mode_t mode_t;
+typedef __nlink_t nlink_t;
+typedef __id_t id_t;
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+typedef __key_t key_t;
+typedef __suseconds_t suseconds_t;
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+struct timeval
+ {
+ __time_t tv_sec;
+ __suseconds_t tv_usec;
+ };
+typedef long int __fd_mask;
+typedef struct
+ {
+ __fd_mask fds_bits[1024 / (8 * sizeof (__fd_mask))];
+ } fd_set;
+typedef __fd_mask fd_mask;
+extern "C" {
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ struct timeval *__restrict __timeout);
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+ const __sigset_t *__restrict __sigmask);
+}
+__extension__
+static __inline unsigned int gnu_dev_major (unsigned long long int __dev)
+ throw ();
+__extension__
+static __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
+ throw ();
+__extension__
+static __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
+ unsigned int __minor)
+ throw ();
+__extension__ static __inline unsigned int
+gnu_dev_major (unsigned long long int __dev) throw ()
+{
+ return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
+}
+__extension__ static __inline unsigned int
+gnu_dev_minor (unsigned long long int __dev) throw ()
+{
+ return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
+}
+__extension__ static __inline unsigned long long int
+gnu_dev_makedev (unsigned int __major, unsigned int __minor) throw ()
+{
+ return ((__minor & 0xff) | ((__major & 0xfff) << 8)
+ | (((unsigned long long int) (__minor & ~0xff)) << 12)
+ | (((unsigned long long int) (__major & ~0xfff)) << 32));
+}
+typedef __blksize_t blksize_t;
+typedef __blkcnt_t blkcnt_t;
+typedef __fsblkcnt_t fsblkcnt_t;
+typedef __fsfilcnt_t fsfilcnt_t;
+typedef __blkcnt64_t blkcnt64_t;
+typedef __fsblkcnt64_t fsblkcnt64_t;
+typedef __fsfilcnt64_t fsfilcnt64_t;
+}
+extern long int random (void) throw ();
+extern void srandom (unsigned int __seed) throw ();
+extern char *initstate (unsigned int __seed, char *__statebuf,
+ size_t __statelen) throw () __attribute__ ((__nonnull__ (2)));
+extern char *setstate (char *__statebuf) throw () __attribute__ ((__nonnull__ (1)));
+struct random_data
+ {
+ int32_t *fptr;
+ int32_t *rptr;
+ int32_t *state;
+ int rand_type;
+ int rand_deg;
+ int rand_sep;
+ int32_t *end_ptr;
+ };
+extern int random_r (struct random_data *__restrict __buf,
+ int32_t *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+ throw () __attribute__ ((__nonnull__ (2)));
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+ size_t __statelen,
+ struct random_data *__restrict __buf)
+ throw () __attribute__ ((__nonnull__ (2, 4)));
+extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int rand (void) throw ();
+extern void srand (unsigned int __seed) throw ();
+extern int rand_r (unsigned int *__seed) throw ();
+extern double drand48 (void) throw ();
+extern double erand48 (unsigned short int __xsubi[3]) throw () __attribute__ ((__nonnull__ (1)));
+extern long int lrand48 (void) throw ();
+extern long int nrand48 (unsigned short int __xsubi[3])
+ throw () __attribute__ ((__nonnull__ (1)));
+extern long int mrand48 (void) throw ();
+extern long int jrand48 (unsigned short int __xsubi[3])
+ throw () __attribute__ ((__nonnull__ (1)));
+extern void srand48 (long int __seedval) throw ();
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+ throw () __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) throw () __attribute__ ((__nonnull__ (1)));
+struct drand48_data
+ {
+ unsigned short int __x[3];
+ unsigned short int __old_x[3];
+ unsigned short int __c;
+ unsigned short int __init;
+ unsigned long long int __a;
+ };
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+ double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ double *__restrict __result) throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+ throw () __attribute__ ((__nonnull__ (2)));
+extern int seed48_r (unsigned short int __seed16v[3],
+ struct drand48_data *__buffer) throw () __attribute__ ((__nonnull__ (1, 2)));
+extern int lcong48_r (unsigned short int __param[7],
+ struct drand48_data *__buffer)
+ throw () __attribute__ ((__nonnull__ (1, 2)));
+extern void *malloc (size_t __size) throw () __attribute__ ((__malloc__)) ;
+extern void *calloc (size_t __nmemb, size_t __size)
+ throw () __attribute__ ((__malloc__)) ;
+extern void *realloc (void *__ptr, size_t __size)
+ throw () __attribute__ ((__malloc__)) __attribute__ ((__warn_unused_result__));
+extern void free (void *__ptr) throw ();
+extern void cfree (void *__ptr) throw ();
+extern "C" {
+extern void *alloca (size_t __size) throw ();
+}
+extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) ;
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern void abort (void) throw () __attribute__ ((__noreturn__));
+extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1)));
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+ throw () __attribute__ ((__nonnull__ (1)));
+extern void exit (int __status) throw () __attribute__ ((__noreturn__));
+extern void _Exit (int __status) throw () __attribute__ ((__noreturn__));
+extern char *getenv (__const char *__name) throw () __attribute__ ((__nonnull__ (1))) ;
+extern char *__secure_getenv (__const char *__name)
+ throw () __attribute__ ((__nonnull__ (1))) ;
+extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1)));
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+ throw () __attribute__ ((__nonnull__ (2)));
+extern int unsetenv (__const char *__name) throw ();
+extern int clearenv (void) throw ();
+extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ;
+extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
+extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
+extern char *mkdtemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ;
+extern int system (__const char *__command) ;
+extern char *realpath (__const char *__restrict __name,
+ char *__restrict __resolved) throw () __attribute__ ((__nonnull__ (2)));
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+typedef __compar_fn_t comparison_fn_t;
+extern void *bsearch (__const void *__key, __const void *__base,
+ size_t __nmemb, size_t __size, __compar_fn_t __compar)
+ __attribute__ ((__nonnull__ (1, 2, 5))) ;
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+ __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+extern int abs (int __x) throw () __attribute__ ((__const__)) ;
+extern long int labs (long int __x) throw () __attribute__ ((__const__)) ;
+__extension__ extern long long int llabs (long long int __x)
+ throw () __attribute__ ((__const__)) ;
+extern div_t div (int __numer, int __denom)
+ throw () __attribute__ ((__const__)) ;
+extern ldiv_t ldiv (long int __numer, long int __denom)
+ throw () __attribute__ ((__const__)) ;
+__extension__ extern lldiv_t lldiv (long long int __numer,
+ long long int __denom)
+ throw () __attribute__ ((__const__)) ;
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+ throw () __attribute__ ((__nonnull__ (3))) ;
+extern int rpmatch (__const char *__response) throw () __attribute__ ((__nonnull__ (1))) ;
+extern int getsubopt (char **__restrict __optionp,
+ char *__const *__restrict __tokens,
+ char **__restrict __valuep)
+ throw () __attribute__ ((__nonnull__ (1, 2, 3))) ;
+extern void setkey (__const char *__key) throw () __attribute__ ((__nonnull__ (1)));
+extern int posix_openpt (int __oflag) ;
+extern int grantpt (int __fd) throw ();
+extern int unlockpt (int __fd) throw ();
+extern char *ptsname (int __fd) throw () ;
+extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
+ throw () __attribute__ ((__nonnull__ (2)));
+}
+typedef QtValidLicenseForCoreModule QtCoreModule;
+struct __attribute__((visibility("default"))) QVectorData
+{
+ QBasicAtomicInt ref;
+ int alloc;
+ int size;
+ uint sharable : 1;
+ uint capacity : 1;
+ static QVectorData shared_null;
+ static QVectorData *malloc(int sizeofTypedData, int size, int sizeofT, QVectorData *init);
+ static int grow(int sizeofTypedData, int size, int sizeofT, bool excessive);
+};
+template <typename T>
+struct QVectorTypedData
+{
+ QBasicAtomicInt ref;
+ int alloc;
+ int size;
+ uint sharable : 1;
+ uint capacity : 1;
+ T array[1];
+};
+class QRegion;
+template <typename T>
+class QVector
+{
+ typedef QVectorTypedData<T> Data;
+ union { QVectorData *p; QVectorTypedData<T> *d; };
+public:
+ inline QVector() : p(&QVectorData::shared_null) { d->ref.ref(); }
+ explicit QVector(int size);
+ QVector(int size, const T &t);
+ inline QVector(const QVector<T> &v) : d(v.d) { d->ref.ref(); if (!d->sharable) detach_helper(); }
+ inline ~QVector() { if (!d) return; if (!d->ref.deref()) free(d); }
+ QVector<T> &operator=(const QVector<T> &v);
+ bool operator==(const QVector<T> &v) const;
+ inline bool operator!=(const QVector<T> &v) const { return !(*this == v); }
+ inline int size() const { return d->size; }
+ inline bool isEmpty() const { return d->size == 0; }
+ void resize(int size);
+ inline int capacity() const { return d->alloc; }
+ void reserve(int size);
+ inline void squeeze() { realloc(d->size, d->size); d->capacity = 0; }
+ inline void detach() { if (d->ref != 1) detach_helper(); }
+ inline bool isDetached() const { return d->ref == 1; }
+ inline void setSharable(bool sharable) { if (!sharable) detach(); d->sharable = sharable; }
+ inline T *data() { detach(); return d->array; }
+ inline const T *data() const { return d->array; }
+ inline const T *constData() const { return d->array; }
+ void clear();
+ const T &at(int i) const;
+ T &operator[](int i);
+ const T &operator[](int i) const;
+ void append(const T &t);
+ void prepend(const T &t);
+ void insert(int i, const T &t);
+ void insert(int i, int n, const T &t);
+ void replace(int i, const T &t);
+ void remove(int i);
+ void remove(int i, int n);
+ QVector<T> &fill(const T &t, int size = -1);
+ int indexOf(const T &t, int from = 0) const;
+ int lastIndexOf(const T &t, int from = -1) const;
+ bool contains(const T &t) const;
+ int count(const T &t) const;
+ typedef T* iterator;
+ typedef const T* const_iterator;
+ inline iterator begin() { detach(); return d->array; }
+ inline const_iterator begin() const { return d->array; }
+ inline const_iterator constBegin() const { return d->array; }
+ inline iterator end() { detach(); return d->array + d->size; }
+ inline const_iterator end() const { return d->array + d->size; }
+ inline const_iterator constEnd() const { return d->array + d->size; }
+ iterator insert(iterator before, int n, const T &x);
+ inline iterator insert(iterator before, const T &x) { return insert(before, 1, x); }
+ iterator erase(iterator begin, iterator end);
+ inline iterator erase(iterator pos) { return erase(pos, pos+1); }
+ inline int count() const { return d->size; }
+ inline T& first() { qt_noop(); return *begin(); }
+ inline const T &first() const { qt_noop(); return *begin(); }
+ inline T& last() { qt_noop(); return *(end()-1); }
+ inline const T &last() const { qt_noop(); return *(end()-1); }
+ inline bool startsWith(const T &t) const { return !isEmpty() && first() == t; }
+ inline bool endsWith(const T &t) const { return !isEmpty() && last() == t; }
+ QVector<T> mid(int pos, int length = -1) const;
+ T value(int i) const;
+ T value(int i, const T &defaultValue) const;
+ typedef T value_type;
+ typedef value_type* pointer;
+ typedef const value_type* const_pointer;
+ typedef value_type& reference;
+ typedef const value_type& const_reference;
+ typedef ptrdiff_t difference_type;
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ typedef int size_type;
+ inline void push_back(const T &t) { append(t); }
+ inline void push_front(const T &t) { prepend(t); }
+ void pop_back() { qt_noop(); erase(end()-1); }
+ void pop_front() { qt_noop(); erase(begin()); }
+ inline bool empty() const
+ { return d->size == 0; }
+ inline T& front() { return first(); }
+ inline const_reference front() const { return first(); }
+ inline reference back() { return last(); }
+ inline const_reference back() const { return last(); }
+ QVector<T> &operator+=(const QVector<T> &l);
+ inline QVector<T> operator+(const QVector<T> &l) const
+ { QVector n = *this; n += l; return n; }
+ inline QVector<T> &operator+=(const T &t)
+ { append(t); return *this; }
+ inline QVector<T> &operator<< (const T &t)
+ { append(t); return *this; }
+ inline QVector<T> &operator<<(const QVector<T> &l)
+ { *this += l; return *this; }
+ QList<T> toList() const;
+ static QVector<T> fromList(const QList<T> &list);
+ static inline QVector<T> fromStdVector(const std::vector<T> &vector)
+ { QVector<T> tmp; qCopy(vector.begin(), vector.end(), std::back_inserter(tmp)); return tmp; }
+ inline std::vector<T> toStdVector() const
+ { std::vector<T> tmp; qCopy(constBegin(), constEnd(), std::back_inserter(tmp)); return tmp; }
+private:
+ friend class QRegion;
+ void detach_helper();
+ QVectorData *malloc(int alloc);
+ void realloc(int size, int alloc);
+ void free(Data *d);
+ int sizeOfTypedData() {
+ return reinterpret_cast<const char *>(&(reinterpret_cast<const Data *>(this))->array[1]) - reinterpret_cast<const char *>(this);
+ }
+};
+template <typename T>
+void QVector<T>::detach_helper()
+{ realloc(d->size, d->alloc); }
+template <typename T>
+void QVector<T>::reserve(int asize)
+{ if (asize > d->alloc) realloc(d->size, asize); d->capacity = 1; }
+template <typename T>
+void QVector<T>::resize(int asize)
+{ realloc(asize, (asize > d->alloc || (!d->capacity && asize < d->size && asize < (d->alloc >> 1))) ?
+ QVectorData::grow(sizeOfTypedData(), asize, sizeof(T), QTypeInfo<T>::isStatic)
+ : d->alloc); }
+template <typename T>
+inline void QVector<T>::clear()
+{ *this = QVector<T>(); }
+template <typename T>
+inline const T &QVector<T>::at(int i) const
+{ qt_noop();
+ return d->array[i]; }
+template <typename T>
+inline const T &QVector<T>::operator[](int i) const
+{ qt_noop();
+ return d->array[i]; }
+template <typename T>
+inline T &QVector<T>::operator[](int i)
+{ qt_noop();
+ return data()[i]; }
+template <typename T>
+inline void QVector<T>::insert(int i, const T &t)
+{ qt_noop();
+ insert(begin() + i, 1, t); }
+template <typename T>
+inline void QVector<T>::insert(int i, int n, const T &t)
+{ qt_noop();
+ insert(begin() + i, n, t); }
+template <typename T>
+inline void QVector<T>::remove(int i, int n)
+{ qt_noop();
+ erase(begin() + i, begin() + i + n); }
+template <typename T>
+inline void QVector<T>::remove(int i)
+{ qt_noop();
+ erase(begin() + i, begin() + i + 1); }
+template <typename T>
+inline void QVector<T>::prepend(const T &t)
+{ insert(begin(), 1, t); }
+template <typename T>
+inline void QVector<T>::replace(int i, const T &t)
+{
+ qt_noop();
+ const T copy(t);
+ data()[i] = copy;
+}
+template <typename T>
+QVector<T> &QVector<T>::operator=(const QVector<T> &v)
+{
+ v.d->ref.ref();
+ if (!d->ref.deref())
+ free(d);
+ d = v.d;
+ if (!d->sharable)
+ detach_helper();
+ return *this;
+}
+template <typename T>
+inline QVectorData *QVector<T>::malloc(int aalloc)
+{
+ return static_cast<QVectorData *>(qMalloc(sizeOfTypedData() + (aalloc - 1) * sizeof(T)));
+}
+template <typename T>
+QVector<T>::QVector(int asize)
+{
+ p = malloc(asize);
+ d->ref = 1;
+ d->alloc = d->size = asize;
+ d->sharable = true;
+ d->capacity = false;
+ if (QTypeInfo<T>::isComplex) {
+ T* b = d->array;
+ T* i = d->array + d->size;
+ while (i != b)
+ new (--i) T;
+ } else {
+ qMemSet(d->array, 0, asize * sizeof(T));
+ }
+}
+template <typename T>
+QVector<T>::QVector(int asize, const T &t)
+{
+ p = malloc(asize);
+ d->ref = 1;
+ d->alloc = d->size = asize;
+ d->sharable = true;
+ d->capacity = false;
+ T* i = d->array + d->size;
+ while (i != d->array)
+ new (--i) T(t);
+}
+template <typename T>
+void QVector<T>::free(Data *x)
+{
+ if (QTypeInfo<T>::isComplex) {
+ T* b = x->array;
+ T* i = b + x->size;
+ while (i-- != b)
+ i->~T();
+ }
+ qFree(x);
+}
+template <typename T>
+void QVector<T>::realloc(int asize, int aalloc)
+{
+ T *j, *i, *b;
+ union { QVectorData *p; Data *d; } x;
+ x.d = d;
+ if (QTypeInfo<T>::isComplex && aalloc == d->alloc && d->ref == 1) {
+ i = d->array + d->size;
+ j = d->array + asize;
+ if (i > j) {
+ while (i-- != j)
+ i->~T();
+ } else {
+ while (j-- != i)
+ new (j) T;
+ }
+ d->size = asize;
+ return;
+ }
+ if (aalloc != d->alloc || d->ref != 1) {
+ if (QTypeInfo<T>::isStatic) {
+ x.p = malloc(aalloc);
+ } else if (d->ref != 1) {
+ x.p = QVectorData::malloc(sizeOfTypedData(), aalloc, sizeof(T), p);
+ } else {
+ if (QTypeInfo<T>::isComplex) {
+ if (asize < d->size) {
+ j = d->array + asize;
+ i = d->array + d->size;
+ while (i-- != j)
+ i->~T();
+ i = d->array + asize;
+ }
+ }
+ x.p = p = static_cast<QVectorData *>(qRealloc(p, sizeOfTypedData() + (aalloc - 1) * sizeof(T)));
+ }
+ x.d->ref = 1;
+ x.d->sharable = true;
+ x.d->capacity = d->capacity;
+ }
+ if (QTypeInfo<T>::isComplex) {
+ if (asize < d->size) {
+ j = d->array + asize;
+ i = x.d->array + asize;
+ } else {
+ i = x.d->array + asize;
+ j = x.d->array + d->size;
+ while (i != j)
+ new (--i) T;
+ j = d->array + d->size;
+ }
+ if (i != j) {
+ b = x.d->array;
+ while (i != b)
+ new (--i) T(*--j);
+ }
+ } else if (asize > d->size) {
+ qMemSet(x.d->array + d->size, 0, (asize - d->size) * sizeof(T));
+ }
+ x.d->size = asize;
+ x.d->alloc = aalloc;
+ if (d != x.d) {
+ if (!d->ref.deref())
+ free(d);
+ d = x.d;
+ }
+}
+template<typename T>
+ T QVector<T>::value(int i) const
+{
+ if (i < 0 || i >= p->size) {
+ return T();
+ }
+ return d->array[i];
+}
+template<typename T>
+ T QVector<T>::value(int i, const T &defaultValue) const
+{
+ return ((i < 0 || i >= p->size) ? defaultValue : d->array[i]);
+}
+template <typename T>
+void QVector<T>::append(const T &t)
+{
+ if (d->ref != 1 || d->size + 1 > d->alloc) {
+ const T copy(t);
+ realloc(d->size, QVectorData::grow(sizeOfTypedData(), d->size + 1, sizeof(T),
+ QTypeInfo<T>::isStatic));
+ if (QTypeInfo<T>::isComplex)
+ new (d->array + d->size) T(copy);
+ else
+ d->array[d->size] = copy;
+ } else {
+ if (QTypeInfo<T>::isComplex)
+ new (d->array + d->size) T(t);
+ else
+ d->array[d->size] = t;
+ }
+ ++d->size;
+}
+template <typename T>
+typename QVector<T>::iterator QVector<T>::insert(iterator before, size_type n, const T &t)
+{
+ int offset = before - d->array;
+ if (n != 0) {
+ const T copy(t);
+ if (d->ref != 1 || d->size + n > d->alloc)
+ realloc(d->size, QVectorData::grow(sizeOfTypedData(), d->size + n, sizeof(T),
+ QTypeInfo<T>::isStatic));
+ if (QTypeInfo<T>::isStatic) {
+ T *b = d->array + d->size;
+ T *i = d->array + d->size + n;
+ while (i != b)
+ new (--i) T;
+ i = d->array + d->size;
+ T *j = i + n;
+ b = d->array + offset;
+ while (i != b)
+ *--j = *--i;
+ i = b+n;
+ while (i != b)
+ *--i = copy;
+ } else {
+ T *b = d->array + offset;
+ T *i = b + n;
+ memmove(i, b, (d->size - offset) * sizeof(T));
+ while (i != b)
+ new (--i) T(copy);
+ }
+ d->size += n;
+ }
+ return d->array + offset;
+}
+template <typename T>
+typename QVector<T>::iterator QVector<T>::erase(iterator abegin, iterator aend)
+{
+ int f = abegin - d->array;
+ int l = aend - d->array;
+ int n = l - f;
+ detach();
+ if (QTypeInfo<T>::isComplex) {
+ qCopy(d->array+l, d->array+d->size, d->array+f);
+ T *i = d->array+d->size;
+ T* b = d->array+d->size-n;
+ while (i != b) {
+ --i;
+ i->~T();
+ }
+ } else {
+ memmove(d->array + f, d->array + l, (d->size-l)*sizeof(T));
+ }
+ d->size -= n;
+ return d->array + f;
+}
+template <typename T>
+bool QVector<T>::operator==(const QVector<T> &v) const
+{
+ if (d->size != v.d->size)
+ return false;
+ if (d == v.d)
+ return true;
+ T* b = d->array;
+ T* i = b + d->size;
+ T* j = v.d->array + d->size;
+ while (i != b)
+ if (!(*--i == *--j))
+ return false;
+ return true;
+}
+template <typename T>
+QVector<T> &QVector<T>::fill(const T &from, int asize)
+{
+ const T copy(from);
+ resize(asize < 0 ? d->size : asize);
+ if (d->size) {
+ T *i = d->array + d->size;
+ T *b = d->array;
+ while (i != b)
+ *--i = copy;
+ }
+ return *this;
+}
+template <typename T>
+QVector<T> &QVector<T>::operator+=(const QVector &l)
+{
+ int newSize = d->size + l.d->size;
+ realloc(d->size, newSize);
+ T *w = d->array + newSize;
+ T *i = l.d->array + l.d->size;
+ T *b = l.d->array;
+ while (i != b) {
+ if (QTypeInfo<T>::isComplex)
+ new (--w) T(*--i);
+ else
+ *--w = *--i;
+ }
+ d->size = newSize;
+ return *this;
+}
+template <typename T>
+int QVector<T>::indexOf(const T &t, int from) const
+{
+ if (from < 0)
+ from = qMax(from + d->size, 0);
+ if (from < d->size) {
+ T* n = d->array + from - 1;
+ T* e = d->array + d->size;
+ while (++n != e)
+ if (*n == t)
+ return n - d->array;
+ }
+ return -1;
+}
+template <typename T>
+int QVector<T>::lastIndexOf(const T &t, int from) const
+{
+ if (from < 0)
+ from += d->size;
+ else if (from >= d->size)
+ from = d->size-1;
+ if (from >= 0) {
+ T* b = d->array;
+ T* n = d->array + from + 1;
+ while (n != b) {
+ if (*--n == t)
+ return n - b;
+ }
+ }
+ return -1;
+}
+template <typename T>
+bool QVector<T>::contains(const T &t) const
+{
+ T* b = d->array;
+ T* i = d->array + d->size;
+ while (i != b)
+ if (*--i == t)
+ return true;
+ return false;
+}
+template <typename T>
+int QVector<T>::count(const T &t) const
+{
+ int c = 0;
+ T* b = d->array;
+ T* i = d->array + d->size;
+ while (i != b)
+ if (*--i == t)
+ ++c;
+ return c;
+}
+template <typename T>
+ QVector<T> QVector<T>::mid(int pos, int length) const
+{
+ if (length < 0)
+ length = size() - pos;
+ if (pos == 0 && length == size())
+ return *this;
+ QVector<T> copy;
+ if (pos + length > size())
+ length = size() - pos;
+ for (int i = pos; i < pos + length; ++i)
+ copy += at(i);
+ return copy;
+}
+template <typename T>
+ QList<T> QVector<T>::toList() const
+{
+ QList<T> result;
+ for (int i = 0; i < size(); ++i)
+ result.append(at(i));
+ return result;
+}
+template <typename T>
+ QVector<T> QList<T>::toVector() const
+{
+ QVector<T> result(size());
+ for (int i = 0; i < size(); ++i)
+ result[i] = at(i);
+ return result;
+}
+template <typename T>
+QVector<T> QVector<T>::fromList(const QList<T> &list)
+{
+ return list.toVector();
+}
+template <typename T>
+QList<T> QList<T>::fromVector(const QVector<T> &vector)
+{
+ return vector.toList();
+}
+template <class T> class QVectorIterator { typedef typename QVector<T>::const_iterator const_iterator; QVector<T> c; const_iterator i; public: inline QVectorIterator(const QVector<T> &container) : c(container), i(c.constBegin()) {} inline QVectorIterator &operator=(const QVector<T> &container) { c = container; i = c.constBegin(); return *this; } inline void toFront() { i = c.constBegin(); } inline void toBack() { i = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline const T &next() { return *i++; } inline const T &peekNext() const { return *i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline const T &previous() { return *--i; } inline const T &peekPrevious() const { const_iterator p = i; return *--p; } inline bool findNext(const T &t) { while (i != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(--i) == t) return true; return false; } };
+template <class T> class QMutableVectorIterator { typedef typename QVector<T>::iterator iterator; typedef typename QVector<T>::const_iterator const_iterator; QVector<T> *c; iterator i, n; inline bool item_exists() const { return const_iterator(n) != c->constEnd(); } public: inline QMutableVectorIterator(QVector<T> &container) : c(&container) { c->setSharable(false); i = c->begin(); n = c->end(); } inline ~QMutableVectorIterator() { c->setSharable(true); } inline QMutableVectorIterator &operator=(QVector<T> &container) { c->setSharable(true); c = &container; c->setSharable(false); i = c->begin(); n = c->end(); return *this; } inline void toFront() { i = c->begin(); n = c->end(); } inline void toBack() { i = c->end(); n = i; } inline bool hasNext() const { return c->constEnd() != const_iterator(i); } inline T &next() { n = i++; return *n; } inline T &peekNext() const { return *i; } inline bool hasPrevious() const { return c->constBegin() != const_iterator(i); } inline T &previous() { n = --i; return *n; } inline T &peekPrevious() const { iterator p = i; return *--p; } inline void remove() { if (c->constEnd() != const_iterator(n)) { i = c->erase(n); n = c->end(); } } inline void setValue(const T &t) const { if (c->constEnd() != const_iterator(n)) *n = t; } inline T &value() { qt_noop(); return *n; } inline const T &value() const { qt_noop(); return *n; } inline void insert(const T &t) { n = i = c->insert(i, t); ++i; } inline bool findNext(const T &t) { while (c->constEnd() != const_iterator(n = i)) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (c->constBegin() != const_iterator(i)) if (*(n = --i) == t) return true; n = c->end(); return false; } };
+typedef QtValidLicenseForCoreModule QtCoreModule;
+template <class T>
+class QSet
+{
+ typedef QHash<T, QHashDummyValue> Hash;
+public:
+ inline QSet() {}
+ inline QSet(const QSet<T> &other) : q_hash(other.q_hash) {}
+ inline QSet<T> &operator=(const QSet<T> &other)
+ { q_hash = other.q_hash; return *this; }
+ inline bool operator==(const QSet<T> &other) const
+ { return q_hash == other.q_hash; }
+ inline bool operator!=(const QSet<T> &other) const
+ { return q_hash != other.q_hash; }
+ inline int size() const { return q_hash.size(); }
+ inline bool isEmpty() const { return q_hash.isEmpty(); }
+ inline int capacity() const { return q_hash.capacity(); }
+ inline void reserve(int size);
+ inline void squeeze() { q_hash.squeeze(); }
+ inline void detach() { q_hash.detach(); }
+ inline bool isDetached() const { return q_hash.isDetached(); }
+ inline void setSharable(bool sharable) { q_hash.setSharable(sharable); }
+ inline void clear() { q_hash.clear(); }
+ inline bool remove(const T &value) { return q_hash.remove(value) != 0; }
+ inline bool contains(const T &value) const { return q_hash.contains(value); }
+ class const_iterator;
+ class iterator
+ {
+ typedef QHash<T, QHashDummyValue> Hash;
+ typename Hash::iterator i;
+ friend class const_iterator;
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef const T *pointer;
+ typedef const T &reference;
+ inline iterator() {}
+ inline iterator(typename Hash::iterator o) : i(o) {}
+ inline iterator(const iterator &o) : i(o.i) {}
+ inline iterator &operator=(const iterator &o) { i = o.i; return *this; }
+ inline const T &operator*() const { return i.key(); }
+ inline const T *operator->() const { return &i.key(); }
+ inline bool operator==(const iterator &o) const { return i == o.i; }
+ inline bool operator!=(const iterator &o) const { return i != o.i; }
+ inline bool operator==(const const_iterator &o) const
+ { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const
+ { return i != o.i; }
+ inline iterator &operator++() { ++i; return *this; }
+ inline iterator operator++(int) { iterator r = *this; ++i; return r; }
+ inline iterator &operator--() { --i; return *this; }
+ inline iterator operator--(int) { iterator r = *this; --i; return r; }
+ inline iterator operator+(int j) const { return i + j; }
+ inline iterator operator-(int j) const { return i - j; }
+ inline iterator &operator+=(int j) { i += j; return *this; }
+ inline iterator &operator-=(int j) { i -= j; return *this; }
+ };
+ class const_iterator
+ {
+ typedef QHash<T, QHashDummyValue> Hash;
+ typename Hash::const_iterator i;
+ friend class iterator;
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef ptrdiff_t difference_type;
+ typedef T value_type;
+ typedef const T *pointer;
+ typedef const T &reference;
+ inline const_iterator() {}
+ inline const_iterator(typename Hash::const_iterator o) : i(o) {}
+ inline const_iterator(const const_iterator &o) : i(o.i) {}
+ inline const_iterator(const iterator &o)
+ : i(o.i) {}
+ inline const_iterator &operator=(const const_iterator &o) { i = o.i; return *this; }
+ inline const T &operator*() const { return i.key(); }
+ inline const T *operator->() const { return &i.key(); }
+ inline bool operator==(const const_iterator &o) const { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const { return i != o.i; }
+ inline const_iterator &operator++() { ++i; return *this; }
+ inline const_iterator operator++(int) { const_iterator r = *this; ++i; return r; }
+ inline const_iterator &operator--() { --i; return *this; }
+ inline const_iterator operator--(int) { const_iterator r = *this; --i; return r; }
+ inline const_iterator operator+(int j) const { return i + j; }
+ inline const_iterator operator-(int j) const { return i - j; }
+ inline const_iterator &operator+=(int j) { i += j; return *this; }
+ inline const_iterator &operator-=(int j) { i -= j; return *this; }
+ };
+ inline iterator begin() { return q_hash.begin(); }
+ inline const_iterator begin() const { return q_hash.begin(); }
+ inline const_iterator constBegin() const { return q_hash.constBegin(); }
+ inline iterator end() { return q_hash.end(); }
+ inline const_iterator end() const { return q_hash.end(); }
+ inline const_iterator constEnd() const { return q_hash.constEnd(); }
+ iterator erase(iterator i)
+ { return q_hash.erase(reinterpret_cast<typename Hash::iterator &>(i)); }
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ inline int count() const { return q_hash.count(); }
+ inline const_iterator insert(const T &value)
+ { return static_cast<typename Hash::const_iterator>(q_hash.insert(value,
+ QHashDummyValue())); }
+ iterator find(const T &value) { return q_hash.find(value); }
+ const_iterator find(const T &value) const { return q_hash.find(value); }
+ inline const_iterator constFind(const T &value) const { return find(value); }
+ QSet<T> &unite(const QSet<T> &other);
+ QSet<T> &intersect(const QSet<T> &other);
+ QSet<T> &subtract(const QSet<T> &other);
+ typedef T key_type;
+ typedef T value_type;
+ typedef value_type *pointer;
+ typedef const value_type *const_pointer;
+ typedef value_type &reference;
+ typedef const value_type &const_reference;
+ typedef ptrdiff_t difference_type;
+ typedef int size_type;
+ inline bool empty() const { return isEmpty(); }
+ inline QSet<T> &operator<<(const T &value) { insert(value); return *this; }
+ inline QSet<T> &operator|=(const QSet<T> &other) { unite(other); return *this; }
+ inline QSet<T> &operator|=(const T &value) { insert(value); return *this; }
+ inline QSet<T> &operator&=(const QSet<T> &other) { intersect(other); return *this; }
+ inline QSet<T> &operator&=(const T &value)
+ { QSet<T> result; if (contains(value)) result.insert(value); return (*this = result); }
+ inline QSet<T> &operator+=(const QSet<T> &other) { unite(other); return *this; }
+ inline QSet<T> &operator+=(const T &value) { insert(value); return *this; }
+ inline QSet<T> &operator-=(const QSet<T> &other) { subtract(other); return *this; }
+ inline QSet<T> &operator-=(const T &value) { remove(value); return *this; }
+ inline QSet<T> operator|(const QSet<T> &other) const
+ { QSet<T> result = *this; result |= other; return result; }
+ inline QSet<T> operator&(const QSet<T> &other) const
+ { QSet<T> result = *this; result &= other; return result; }
+ inline QSet<T> operator+(const QSet<T> &other) const
+ { QSet<T> result = *this; result += other; return result; }
+ inline QSet<T> operator-(const QSet<T> &other) const
+ { QSet<T> result = *this; result -= other; return result; }
+ inline QSet<T> operator|(const QSet<T> &other)
+ { QSet<T> result = *this; result |= other; return result; }
+ inline QSet<T> operator&(const QSet<T> &other)
+ { QSet<T> result = *this; result &= other; return result; }
+ inline QSet<T> operator+(const QSet<T> &other)
+ { QSet<T> result = *this; result += other; return result; }
+ inline QSet<T> operator-(const QSet<T> &other)
+ { QSet<T> result = *this; result -= other; return result; }
+ QList<T> toList() const;
+ inline QList<T> values() const { return toList(); }
+ static QSet<T> fromList(const QList<T> &list);
+private:
+ Hash q_hash;
+};
+template <class T>
+inline void QSet<T>::reserve(int asize) { q_hash.reserve(asize); }
+template <class T>
+inline QSet<T> &QSet<T>::unite(const QSet<T> &other)
+{
+ QSet<T> copy(other);
+ typename QSet<T>::const_iterator i = copy.constEnd();
+ while (i != copy.constBegin()) {
+ --i;
+ insert(*i);
+ }
+ return *this;
+}
+template <class T>
+inline QSet<T> &QSet<T>::intersect(const QSet<T> &other)
+{
+ QSet<T> copy1(*this);
+ QSet<T> copy2(other);
+ typename QSet<T>::const_iterator i = copy1.constEnd();
+ while (i != copy1.constBegin()) {
+ --i;
+ if (!copy2.contains(*i))
+ remove(*i);
+ }
+ return *this;
+}
+template <class T>
+inline QSet<T> &QSet<T>::subtract(const QSet<T> &other)
+{
+ QSet<T> copy1(*this);
+ QSet<T> copy2(other);
+ typename QSet<T>::const_iterator i = copy1.constEnd();
+ while (i != copy1.constBegin()) {
+ --i;
+ if (copy2.contains(*i))
+ remove(*i);
+ }
+ return *this;
+}
+template <typename T>
+ QList<T> QSet<T>::toList() const
+{
+ QList<T> result;
+ typename QSet<T>::const_iterator i = constBegin();
+ while (i != constEnd()) {
+ result.append(*i);
+ ++i;
+ }
+ return result;
+}
+template <typename T>
+ QSet<T> QList<T>::toSet() const
+{
+ QSet<T> result;
+ result.reserve(size());
+ for (int i = 0; i < size(); ++i)
+ result.insert(at(i));
+ return result;
+}
+template <typename T>
+QSet<T> QSet<T>::fromList(const QList<T> &list)
+{
+ return list.toSet();
+}
+template <typename T>
+QList<T> QList<T>::fromSet(const QSet<T> &set)
+{
+ return set.toList();
+}
+template <class T> class QSetIterator { typedef typename QSet<T>::const_iterator const_iterator; QSet<T> c; const_iterator i; public: inline QSetIterator(const QSet<T> &container) : c(container), i(c.constBegin()) {} inline QSetIterator &operator=(const QSet<T> &container) { c = container; i = c.constBegin(); return *this; } inline void toFront() { i = c.constBegin(); } inline void toBack() { i = c.constEnd(); } inline bool hasNext() const { return i != c.constEnd(); } inline const T &next() { return *i++; } inline const T &peekNext() const { return *i; } inline bool hasPrevious() const { return i != c.constBegin(); } inline const T &previous() { return *--i; } inline const T &peekPrevious() const { const_iterator p = i; return *--p; } inline bool findNext(const T &t) { while (i != c.constEnd()) if (*i++ == t) return true; return false; } inline bool findPrevious(const T &t) { while (i != c.constBegin()) if (*(--i) == t) return true; return false; } };
+template <typename T>
+class QMutableSetIterator
+{
+ typedef typename QSet<T>::iterator iterator;
+ QSet<T> *c;
+ iterator i, n;
+ inline bool item_exists() const { return n != c->constEnd(); }
+public:
+ inline QMutableSetIterator(QSet<T> &container)
+ : c(&container)
+ { c->setSharable(false); i = c->begin(); n = c->end(); }
+ inline ~QMutableSetIterator()
+ { c->setSharable(true); }
+ inline QMutableSetIterator &operator=(QSet<T> &container)
+ { c->setSharable(true); c = &container; c->setSharable(false);
+ i = c->begin(); n = c->end(); return *this; }
+ inline void toFront() { i = c->begin(); n = c->end(); }
+ inline void toBack() { i = c->end(); n = i; }
+ inline bool hasNext() const { return c->constEnd() != i; }
+ inline const T &next() { n = i++; return *n; }
+ inline const T &peekNext() const { return *i; }
+ inline bool hasPrevious() const { return c->constBegin() != i; }
+ inline const T &previous() { n = --i; return *n; }
+ inline const T &peekPrevious() const { iterator p = i; return *--p; }
+ inline void remove()
+ { if (c->constEnd() != n) { i = c->erase(n); n = c->end(); } }
+ inline const T &value() const { qt_noop(); return *n; }
+ inline bool findNext(const T &t)
+ { while (c->constEnd() != (n = i)) if (*i++ == t) return true; return false; }
+ inline bool findPrevious(const T &t)
+ { while (c->constBegin() != i) if (*(n = --i) == t) return true;
+ n = c->end(); return false; }
+};
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class __attribute__((visibility("default"))) QDebug
+{
+ struct Stream {
+ Stream(QIODevice *device) : ts(device), ref(1), type(QtDebugMsg), space(true), message_output(false) {}
+ Stream(QString *string) : ts(string, QIODevice::WriteOnly), ref(1), type(QtDebugMsg), space(true), message_output(false) {}
+ Stream(QtMsgType t) : ts(&buffer, QIODevice::WriteOnly), ref(1), type(t), space(true), message_output(true) {}
+ QTextStream ts;
+ QString buffer;
+ int ref;
+ QtMsgType type;
+ bool space;
+ bool message_output;
+ } *stream;
+public:
+ inline QDebug(QIODevice *device) : stream(new Stream(device)) {}
+ inline QDebug(QString *string) : stream(new Stream(string)) {}
+ inline QDebug(QtMsgType t) : stream(new Stream(t)) {}
+ inline QDebug(const QDebug &o):stream(o.stream) { ++stream->ref; }
+ inline QDebug &operator=(const QDebug &other);
+ inline ~QDebug() {
+ if (!--stream->ref) {
+ if(stream->message_output)
+ qt_message_output(stream->type, stream->buffer.toLocal8Bit().data());
+ delete stream;
+ }
+ }
+ inline QDebug &space() { stream->space = true; stream->ts << " "; return *this; }
+ inline QDebug &nospace() { stream->space = false; return *this; }
+ inline QDebug &maybeSpace() { if (stream->space) stream->ts << " "; return *this; }
+ inline QDebug &operator<<(QChar t) { stream->ts << "\'" << t << "\'"; return maybeSpace(); }
+ inline QDebug &operator<<(QBool t) { stream->ts << (bool(t) ? "true" : "false"); return maybeSpace(); }
+ inline QDebug &operator<<(bool t) { stream->ts << (t ? "true" : "false"); return maybeSpace(); }
+ inline QDebug &operator<<(char t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(signed short t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(unsigned short t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(signed int t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(unsigned int t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(signed long t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(unsigned long t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(qint64 t)
+ { stream->ts << QString::number(t); return maybeSpace(); }
+ inline QDebug &operator<<(quint64 t)
+ { stream->ts << QString::number(t); return maybeSpace(); }
+ inline QDebug &operator<<(float t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(double t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(const char* t) { stream->ts << QString::fromAscii(t); return maybeSpace(); }
+ inline QDebug &operator<<(const QString & t) { stream->ts << "\"" << t << "\""; return maybeSpace(); }
+ inline QDebug &operator<<(const QStringRef & t) { return operator<<(t.toString()); }
+ inline QDebug &operator<<(const QLatin1String &t) { stream->ts << "\"" << t.latin1() << "\""; return maybeSpace(); }
+ inline QDebug &operator<<(const QByteArray & t) { stream->ts << "\"" << t << "\""; return maybeSpace(); }
+ inline QDebug &operator<<(const void * t) { stream->ts << t; return maybeSpace(); }
+ inline QDebug &operator<<(QTextStreamFunction f) {
+ stream->ts << f;
+ return *this;
+ }
+ inline QDebug &operator<<(QTextStreamManipulator m)
+ { stream->ts << m; return *this; }
+};
+class QNoDebug
+{
+public:
+ inline QNoDebug(){}
+ inline QNoDebug(const QDebug &){}
+ inline ~QNoDebug(){}
+ inline QNoDebug &operator<<(QTextStreamFunction) { return *this; }
+ inline QNoDebug &operator<<(QTextStreamManipulator) { return *this; }
+ inline QNoDebug &space() { return *this; }
+ inline QNoDebug &nospace() { return *this; }
+ inline QNoDebug &maybeSpace() { return *this; }
+ template<typename T>
+ inline QNoDebug &operator<<(const T &) { return *this; }
+};
+__attribute__((visibility("default"))) inline QDebug qCritical() { return QDebug(QtCriticalMsg); }
+inline QDebug &QDebug::operator=(const QDebug &other)
+{
+ if (this != &other) {
+ QDebug copy(other);
+ qSwap(stream, copy.stream);
+ }
+ return *this;
+}
+template <class T>
+inline QDebug operator<<(QDebug debug, const QList<T> &list)
+{
+ debug.nospace() << "(";
+ for (typename QList<T>::size_type i = 0; i < list.count(); ++i) {
+ if (i)
+ debug << ", ";
+ debug << list.at(i);
+ }
+ debug << ")";
+ return debug.space();
+}
+template <typename T>
+inline QDebug operator<<(QDebug debug, const QVector<T> &vec)
+{
+ debug.nospace() << "QVector";
+ return operator<<(debug, vec.toList());
+}
+template <class aKey, class aT>
+inline QDebug operator<<(QDebug debug, const QMap<aKey, aT> &map)
+{
+ debug.nospace() << "QMap(";
+ for (typename QMap<aKey, aT>::const_iterator it = map.constBegin();
+ it != map.constEnd(); ++it) {
+ debug << "(" << it.key() << ", " << it.value() << ")";
+ }
+ debug << ")";
+ return debug.space();
+}
+template <class aKey, class aT>
+inline QDebug operator<<(QDebug debug, const QHash<aKey, aT> &hash)
+{
+ debug.nospace() << "QHash(";
+ for (typename QHash<aKey, aT>::const_iterator it = hash.constBegin();
+ it != hash.constEnd(); ++it)
+ debug << "(" << it.key() << ", " << it.value() << ")";
+ debug << ")";
+ return debug.space();
+}
+template <class T1, class T2>
+inline QDebug operator<<(QDebug debug, const QPair<T1, T2> &pair)
+{
+ debug.nospace() << "QPair(" << pair.first << "," << pair.second << ")";
+ return debug.space();
+}
+template <typename T>
+inline QDebug operator<<(QDebug debug, const QSet<T> &set)
+{
+ debug.nospace() << "QSet";
+ return operator<<(debug, set.toList());
+}
+__attribute__((visibility("default"))) inline QDebug qDebug() { return QDebug(QtDebugMsg); }
+__attribute__((visibility("default"))) inline QDebug qWarning() { return QDebug(QtWarningMsg); }
+typedef QtValidLicenseForCoreModule QtCoreModule;
+template <class Key, class T> class QCache;
+template <class Key, class T> class QHash;
+template <class T> class QLinkedList;
+template <class T> class QList;
+template <class Key, class T> class QMap;
+template <class Key, class T> class QMultiHash;
+template <class Key, class T> class QMultiMap;
+template <class T1, class T2> struct QPair;
+template <class T> class QQueue;
+template <class T> class QSet;
+template <class T> class QStack;
+template<class T, int Prealloc = 256> class QVarLengthArray;
+template <class T> class QVector;
+typedef QtValidLicenseForCoreModule QtCoreModule;
+template<class T, int Prealloc>
+class QVarLengthArray
+{
+public:
+ inline explicit QVarLengthArray(int size = 0);
+ inline QVarLengthArray(const QVarLengthArray<T, Prealloc> &other)
+ : a(Prealloc), s(0), ptr(reinterpret_cast<T *>(array))
+ {
+ append(other.constData(), other.size());
+ }
+ inline ~QVarLengthArray() {
+ if (QTypeInfo<T>::isComplex) {
+ T *i = ptr + s;
+ while (i-- != ptr)
+ i->~T();
+ }
+ if (ptr != reinterpret_cast<T *>(array))
+ qFree(ptr);
+ }
+ inline QVarLengthArray<T, Prealloc> &operator=(const QVarLengthArray<T, Prealloc> &other)
+ {
+ if (this != &other) {
+ clear();
+ append(other.constData(), other.size());
+ }
+ return *this;
+ }
+ inline void removeLast() {
+ qt_noop();
+ realloc(s - 1, a);
+ }
+ inline int size() const { return s; }
+ inline int count() const { return s; }
+ inline bool isEmpty() const { return (s == 0); }
+ inline void resize(int size);
+ inline void clear() { resize(0); }
+ inline int capacity() const { return a; }
+ inline void reserve(int size);
+ inline T &operator[](int idx) {
+ qt_noop();
+ return ptr[idx];
+ }
+ inline const T &operator[](int idx) const {
+ qt_noop();
+ return ptr[idx];
+ }
+ inline void append(const T &t) {
+ if (s == a)
+ realloc(s, s<<1);
+ const int idx = s++;
+ if (QTypeInfo<T>::isComplex) {
+ new (ptr + idx) T(t);
+ } else {
+ ptr[idx] = t;
+ }
+ }
+ void append(const T *buf, int size);
+ inline T *data() { return ptr; }
+ inline const T *data() const { return ptr; }
+ inline const T * constData() const { return ptr; }
+private:
+ void realloc(int size, int alloc);
+ int a;
+ int s;
+ T *ptr;
+ union {
+ char array[sizeof(qint64) * (((Prealloc * sizeof(T)) / sizeof(qint64)) + 1)];
+ qint64 q_for_alignment_1;
+ double q_for_alignment_2;
+ };
+};
+template <class T, int Prealloc>
+inline QVarLengthArray<T, Prealloc>::QVarLengthArray(int asize)
+ : s(asize) {
+ if (s > Prealloc) {
+ ptr = reinterpret_cast<T *>(qMalloc(s * sizeof(T)));
+ a = s;
+ } else {
+ ptr = reinterpret_cast<T *>(array);
+ a = Prealloc;
+ }
+ if (QTypeInfo<T>::isComplex) {
+ T *i = ptr + s;
+ while (i != ptr)
+ new (--i) T;
+ }
+}
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::resize(int asize)
+{ realloc(asize, qMax(asize, a)); }
+template <class T, int Prealloc>
+inline void QVarLengthArray<T, Prealloc>::reserve(int asize)
+{ if (asize > a) realloc(s, asize); }
+template <class T, int Prealloc>
+ void QVarLengthArray<T, Prealloc>::append(const T *abuf, int asize)
+{
+ qt_noop();
+ if (asize <= 0)
+ return;
+ const int idx = s;
+ const int news = s + asize;
+ if (news >= a)
+ realloc(s, qMax(s<<1, news));
+ s = news;
+ if (QTypeInfo<T>::isComplex) {
+ T *i = ptr + idx;
+ T *j = i + asize;
+ while (i < j)
+ new (i++) T(*abuf++);
+ } else {
+ qMemCopy(&ptr[idx], abuf, asize * sizeof(T));
+ }
+}
+template <class T, int Prealloc>
+ void QVarLengthArray<T, Prealloc>::realloc(int asize, int aalloc)
+{
+ qt_noop();
+ T *oldPtr = ptr;
+ int osize = s;
+ s = asize;
+ if (aalloc != a) {
+ ptr = reinterpret_cast<T *>(qMalloc(aalloc * sizeof(T)));
+ if (ptr) {
+ a = aalloc;
+ if (QTypeInfo<T>::isStatic) {
+ T *i = ptr + osize;
+ T *j = oldPtr + osize;
+ while (i != ptr) {
+ new (--i) T(*--j);
+ j->~T();
+ }
+ } else {
+ qMemCopy(ptr, oldPtr, osize * sizeof(T));
+ }
+ } else {
+ ptr = oldPtr;
+ s = 0;
+ asize = 0;
+ }
+ }
+ if (QTypeInfo<T>::isComplex) {
+ if (asize < osize) {
+ T *i = oldPtr + osize;
+ T *j = oldPtr + asize;
+ while (i-- != j)
+ i->~T();
+ } else {
+ T *i = ptr + asize;
+ T *j = ptr + osize;
+ while (i != j)
+ new (--i) T;
+ }
+ }
+ if (oldPtr != reinterpret_cast<T *>(array) && oldPtr != ptr)
+ qFree(oldPtr);
+}
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class __attribute__((visibility("default"))) QSize
+{
+public:
+ QSize();
+ QSize(int w, int h);
+ bool isNull() const;
+ bool isEmpty() const;
+ bool isValid() const;
+ int width() const;
+ int height() const;
+ void setWidth(int w);
+ void setHeight(int h);
+ void transpose();
+ void scale(int w, int h, Qt::AspectRatioMode mode);
+ void scale(const QSize &s, Qt::AspectRatioMode mode);
+ QSize expandedTo(const QSize &) const;
+ QSize boundedTo(const QSize &) const;
+ int &rwidth();
+ int &rheight();
+ QSize &operator+=(const QSize &);
+ QSize &operator-=(const QSize &);
+ QSize &operator*=(qreal c);
+ QSize &operator/=(qreal c);
+ friend inline bool operator==(const QSize &, const QSize &);
+ friend inline bool operator!=(const QSize &, const QSize &);
+ friend inline const QSize operator+(const QSize &, const QSize &);
+ friend inline const QSize operator-(const QSize &, const QSize &);
+ friend inline const QSize operator*(const QSize &, qreal);
+ friend inline const QSize operator*(qreal, const QSize &);
+ friend inline const QSize operator/(const QSize &, qreal);
+private:
+ int wd;
+ int ht;
+};
+template <> class QTypeInfo<QSize> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QSize)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QSize"; } };
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QSize &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QSize &);
+inline QSize::QSize()
+{ wd = ht = -1; }
+inline QSize::QSize(int w, int h)
+{ wd = w; ht = h; }
+inline bool QSize::isNull() const
+{ return wd==0 && ht==0; }
+inline bool QSize::isEmpty() const
+{ return wd<1 || ht<1; }
+inline bool QSize::isValid() const
+{ return wd>=0 && ht>=0; }
+inline int QSize::width() const
+{ return wd; }
+inline int QSize::height() const
+{ return ht; }
+inline void QSize::setWidth(int w)
+{ wd = w; }
+inline void QSize::setHeight(int h)
+{ ht = h; }
+inline void QSize::scale(int w, int h, Qt::AspectRatioMode mode)
+{ scale(QSize(w, h), mode); }
+inline int &QSize::rwidth()
+{ return wd; }
+inline int &QSize::rheight()
+{ return ht; }
+inline QSize &QSize::operator+=(const QSize &s)
+{ wd+=s.wd; ht+=s.ht; return *this; }
+inline QSize &QSize::operator-=(const QSize &s)
+{ wd-=s.wd; ht-=s.ht; return *this; }
+inline QSize &QSize::operator*=(qreal c)
+{ wd = qRound(wd*c); ht = qRound(ht*c); return *this; }
+inline bool operator==(const QSize &s1, const QSize &s2)
+{ return s1.wd == s2.wd && s1.ht == s2.ht; }
+inline bool operator!=(const QSize &s1, const QSize &s2)
+{ return s1.wd != s2.wd || s1.ht != s2.ht; }
+inline const QSize operator+(const QSize & s1, const QSize & s2)
+{ return QSize(s1.wd+s2.wd, s1.ht+s2.ht); }
+inline const QSize operator-(const QSize &s1, const QSize &s2)
+{ return QSize(s1.wd-s2.wd, s1.ht-s2.ht); }
+inline const QSize operator*(const QSize &s, qreal c)
+{ return QSize(qRound(s.wd*c), qRound(s.ht*c)); }
+inline const QSize operator*(qreal c, const QSize &s)
+{ return QSize(qRound(s.wd*c), qRound(s.ht*c)); }
+inline QSize &QSize::operator/=(qreal c)
+{
+ qt_noop();
+ wd = qRound(wd/c); ht = qRound(ht/c);
+ return *this;
+}
+inline const QSize operator/(const QSize &s, qreal c)
+{
+ qt_noop();
+ return QSize(qRound(s.wd/c), qRound(s.ht/c));
+}
+inline QSize QSize::expandedTo(const QSize & otherSize) const
+{
+ return QSize(qMax(wd,otherSize.wd), qMax(ht,otherSize.ht));
+}
+inline QSize QSize::boundedTo(const QSize & otherSize) const
+{
+ return QSize(qMin(wd,otherSize.wd), qMin(ht,otherSize.ht));
+}
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QSize &);
+class __attribute__((visibility("default"))) QSizeF
+{
+public:
+ QSizeF();
+ QSizeF(const QSize &sz);
+ QSizeF(qreal w, qreal h);
+ bool isNull() const;
+ bool isEmpty() const;
+ bool isValid() const;
+ qreal width() const;
+ qreal height() const;
+ void setWidth(qreal w);
+ void setHeight(qreal h);
+ void transpose();
+ void scale(qreal w, qreal h, Qt::AspectRatioMode mode);
+ void scale(const QSizeF &s, Qt::AspectRatioMode mode);
+ QSizeF expandedTo(const QSizeF &) const;
+ QSizeF boundedTo(const QSizeF &) const;
+ qreal &rwidth();
+ qreal &rheight();
+ QSizeF &operator+=(const QSizeF &);
+ QSizeF &operator-=(const QSizeF &);
+ QSizeF &operator*=(qreal c);
+ QSizeF &operator/=(qreal c);
+ friend inline bool operator==(const QSizeF &, const QSizeF &);
+ friend inline bool operator!=(const QSizeF &, const QSizeF &);
+ friend inline const QSizeF operator+(const QSizeF &, const QSizeF &);
+ friend inline const QSizeF operator-(const QSizeF &, const QSizeF &);
+ friend inline const QSizeF operator*(const QSizeF &, qreal);
+ friend inline const QSizeF operator*(qreal, const QSizeF &);
+ friend inline const QSizeF operator/(const QSizeF &, qreal);
+ inline QSize toSize() const;
+private:
+ qreal wd;
+ qreal ht;
+};
+template <> class QTypeInfo<QSizeF> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QSizeF)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QSizeF"; } };
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QSizeF &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QSizeF &);
+inline QSizeF::QSizeF()
+{ wd = ht = -1.; }
+inline QSizeF::QSizeF(const QSize &sz)
+ : wd(sz.width()), ht(sz.height())
+{
+}
+inline QSizeF::QSizeF(qreal w, qreal h)
+{ wd = w; ht = h; }
+inline bool QSizeF::isNull() const
+{ return qIsNull(wd) && qIsNull(ht); }
+inline bool QSizeF::isEmpty() const
+{ return wd <= 0. || ht <= 0.; }
+inline bool QSizeF::isValid() const
+{ return wd >= 0. && ht >= 0.; }
+inline qreal QSizeF::width() const
+{ return wd; }
+inline qreal QSizeF::height() const
+{ return ht; }
+inline void QSizeF::setWidth(qreal w)
+{ wd = w; }
+inline void QSizeF::setHeight(qreal h)
+{ ht = h; }
+inline void QSizeF::scale(qreal w, qreal h, Qt::AspectRatioMode mode)
+{ scale(QSizeF(w, h), mode); }
+inline qreal &QSizeF::rwidth()
+{ return wd; }
+inline qreal &QSizeF::rheight()
+{ return ht; }
+inline QSizeF &QSizeF::operator+=(const QSizeF &s)
+{ wd += s.wd; ht += s.ht; return *this; }
+inline QSizeF &QSizeF::operator-=(const QSizeF &s)
+{ wd -= s.wd; ht -= s.ht; return *this; }
+inline QSizeF &QSizeF::operator*=(qreal c)
+{ wd *= c; ht *= c; return *this; }
+inline bool operator==(const QSizeF &s1, const QSizeF &s2)
+{ return qFuzzyCompare(s1.wd, s2.wd) && qFuzzyCompare(s1.ht, s2.ht); }
+inline bool operator!=(const QSizeF &s1, const QSizeF &s2)
+{ return !qFuzzyCompare(s1.wd, s2.wd) || !qFuzzyCompare(s1.ht, s2.ht); }
+inline const QSizeF operator+(const QSizeF & s1, const QSizeF & s2)
+{ return QSizeF(s1.wd+s2.wd, s1.ht+s2.ht); }
+inline const QSizeF operator-(const QSizeF &s1, const QSizeF &s2)
+{ return QSizeF(s1.wd-s2.wd, s1.ht-s2.ht); }
+inline const QSizeF operator*(const QSizeF &s, qreal c)
+{ return QSizeF(s.wd*c, s.ht*c); }
+inline const QSizeF operator*(qreal c, const QSizeF &s)
+{ return QSizeF(s.wd*c, s.ht*c); }
+inline QSizeF &QSizeF::operator/=(qreal c)
+{
+ qt_noop();
+ wd = wd/c; ht = ht/c;
+ return *this;
+}
+inline const QSizeF operator/(const QSizeF &s, qreal c)
+{
+ qt_noop();
+ return QSizeF(s.wd/c, s.ht/c);
+}
+inline QSizeF QSizeF::expandedTo(const QSizeF & otherSize) const
+{
+ return QSizeF(qMax(wd,otherSize.wd), qMax(ht,otherSize.ht));
+}
+inline QSizeF QSizeF::boundedTo(const QSizeF & otherSize) const
+{
+ return QSizeF(qMin(wd,otherSize.wd), qMin(ht,otherSize.ht));
+}
+inline QSize QSizeF::toSize() const
+{
+ return QSize(qRound(wd), qRound(ht));
+}
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QSizeF &);
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class __attribute__((visibility("default"))) QPoint
+{
+public:
+ QPoint();
+ QPoint(int xpos, int ypos);
+ bool isNull() const;
+ int x() const;
+ int y() const;
+ void setX(int x);
+ void setY(int y);
+ int manhattanLength() const;
+ int &rx();
+ int &ry();
+ QPoint &operator+=(const QPoint &p);
+ QPoint &operator-=(const QPoint &p);
+ QPoint &operator*=(qreal c);
+ QPoint &operator/=(qreal c);
+ friend inline bool operator==(const QPoint &, const QPoint &);
+ friend inline bool operator!=(const QPoint &, const QPoint &);
+ friend inline const QPoint operator+(const QPoint &, const QPoint &);
+ friend inline const QPoint operator-(const QPoint &, const QPoint &);
+ friend inline const QPoint operator*(const QPoint &, qreal);
+ friend inline const QPoint operator*(qreal, const QPoint &);
+ friend inline const QPoint operator-(const QPoint &);
+ friend inline const QPoint operator/(const QPoint &, qreal);
+private:
+ friend class QTransform;
+ int xp;
+ int yp;
+};
+template <> class QTypeInfo<QPoint> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QPoint)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QPoint"; } };
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPoint &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPoint &);
+inline QPoint::QPoint()
+{ xp=0; yp=0; }
+inline QPoint::QPoint(int xpos, int ypos)
+{ xp = xpos; yp = ypos; }
+inline bool QPoint::isNull() const
+{ return xp == 0 && yp == 0; }
+inline int QPoint::x() const
+{ return xp; }
+inline int QPoint::y() const
+{ return yp; }
+inline void QPoint::setX(int xpos)
+{ xp = xpos; }
+inline void QPoint::setY(int ypos)
+{ yp = ypos; }
+inline int &QPoint::rx()
+{ return xp; }
+inline int &QPoint::ry()
+{ return yp; }
+inline QPoint &QPoint::operator+=(const QPoint &p)
+{ xp+=p.xp; yp+=p.yp; return *this; }
+inline QPoint &QPoint::operator-=(const QPoint &p)
+{ xp-=p.xp; yp-=p.yp; return *this; }
+inline QPoint &QPoint::operator*=(qreal c)
+{ xp = qRound(xp*c); yp = qRound(yp*c); return *this; }
+inline bool operator==(const QPoint &p1, const QPoint &p2)
+{ return p1.xp == p2.xp && p1.yp == p2.yp; }
+inline bool operator!=(const QPoint &p1, const QPoint &p2)
+{ return p1.xp != p2.xp || p1.yp != p2.yp; }
+inline const QPoint operator+(const QPoint &p1, const QPoint &p2)
+{ return QPoint(p1.xp+p2.xp, p1.yp+p2.yp); }
+inline const QPoint operator-(const QPoint &p1, const QPoint &p2)
+{ return QPoint(p1.xp-p2.xp, p1.yp-p2.yp); }
+inline const QPoint operator*(const QPoint &p, qreal c)
+{ return QPoint(qRound(p.xp*c), qRound(p.yp*c)); }
+inline const QPoint operator*(qreal c, const QPoint &p)
+{ return QPoint(qRound(p.xp*c), qRound(p.yp*c)); }
+inline const QPoint operator-(const QPoint &p)
+{ return QPoint(-p.xp, -p.yp); }
+inline QPoint &QPoint::operator/=(qreal c)
+{
+ xp = qRound(xp/c);
+ yp = qRound(yp/c);
+ return *this;
+}
+inline const QPoint operator/(const QPoint &p, qreal c)
+{
+ return QPoint(qRound(p.xp/c), qRound(p.yp/c));
+}
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QPoint &);
+class __attribute__((visibility("default"))) QPointF
+{
+public:
+ QPointF();
+ QPointF(const QPoint &p);
+ QPointF(qreal xpos, qreal ypos);
+ bool isNull() const;
+ qreal x() const;
+ qreal y() const;
+ void setX(qreal x);
+ void setY(qreal y);
+ qreal &rx();
+ qreal &ry();
+ QPointF &operator+=(const QPointF &p);
+ QPointF &operator-=(const QPointF &p);
+ QPointF &operator*=(qreal c);
+ QPointF &operator/=(qreal c);
+ friend inline bool operator==(const QPointF &, const QPointF &);
+ friend inline bool operator!=(const QPointF &, const QPointF &);
+ friend inline const QPointF operator+(const QPointF &, const QPointF &);
+ friend inline const QPointF operator-(const QPointF &, const QPointF &);
+ friend inline const QPointF operator*(qreal, const QPointF &);
+ friend inline const QPointF operator*(const QPointF &, qreal);
+ friend inline const QPointF operator-(const QPointF &);
+ friend inline const QPointF operator/(const QPointF &, qreal);
+ QPoint toPoint() const;
+private:
+ friend class QMatrix;
+ friend class QTransform;
+ qreal xp;
+ qreal yp;
+};
+template <> class QTypeInfo<QPointF> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QPointF)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QPointF"; } };
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPointF &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPointF &);
+inline QPointF::QPointF() : xp(0), yp(0) { }
+inline QPointF::QPointF(qreal xpos, qreal ypos) : xp(xpos), yp(ypos) { }
+inline QPointF::QPointF(const QPoint &p) : xp(p.x()), yp(p.y()) { }
+inline bool QPointF::isNull() const
+{
+ return qIsNull(xp) && qIsNull(yp);
+}
+inline qreal QPointF::x() const
+{
+ return xp;
+}
+inline qreal QPointF::y() const
+{
+ return yp;
+}
+inline void QPointF::setX(qreal xpos)
+{
+ xp = xpos;
+}
+inline void QPointF::setY(qreal ypos)
+{
+ yp = ypos;
+}
+inline qreal &QPointF::rx()
+{
+ return xp;
+}
+inline qreal &QPointF::ry()
+{
+ return yp;
+}
+inline QPointF &QPointF::operator+=(const QPointF &p)
+{
+ xp+=p.xp;
+ yp+=p.yp;
+ return *this;
+}
+inline QPointF &QPointF::operator-=(const QPointF &p)
+{
+ xp-=p.xp; yp-=p.yp; return *this;
+}
+inline QPointF &QPointF::operator*=(qreal c)
+{
+ xp*=c; yp*=c; return *this;
+}
+inline bool operator==(const QPointF &p1, const QPointF &p2)
+{
+ return qFuzzyCompare(p1.xp, p2.xp) && qFuzzyCompare(p1.yp, p2.yp);
+}
+inline bool operator!=(const QPointF &p1, const QPointF &p2)
+{
+ return !qFuzzyCompare(p1.xp, p2.xp) || !qFuzzyCompare(p1.yp, p2.yp);
+}
+inline const QPointF operator+(const QPointF &p1, const QPointF &p2)
+{
+ return QPointF(p1.xp+p2.xp, p1.yp+p2.yp);
+}
+inline const QPointF operator-(const QPointF &p1, const QPointF &p2)
+{
+ return QPointF(p1.xp-p2.xp, p1.yp-p2.yp);
+}
+inline const QPointF operator*(const QPointF &p, qreal c)
+{
+ return QPointF(p.xp*c, p.yp*c);
+}
+inline const QPointF operator*(qreal c, const QPointF &p)
+{
+ return QPointF(p.xp*c, p.yp*c);
+}
+inline const QPointF operator-(const QPointF &p)
+{
+ return QPointF(-p.xp, -p.yp);
+}
+inline QPointF &QPointF::operator/=(qreal c)
+{
+ xp/=c;
+ yp/=c;
+ return *this;
+}
+inline const QPointF operator/(const QPointF &p, qreal c)
+{
+ return QPointF(p.xp/c, p.yp/c);
+}
+inline QPoint QPointF::toPoint() const
+{
+ return QPoint(qRound(xp), qRound(yp));
+}
+__attribute__((visibility("default"))) QDebug operator<<(QDebug d, const QPointF &p);
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class __attribute__((visibility("default"))) QRect
+{
+public:
+ QRect() { x1 = y1 = 0; x2 = y2 = -1; }
+ QRect(const QPoint &topleft, const QPoint &bottomright);
+ QRect(const QPoint &topleft, const QSize &size);
+ QRect(int left, int top, int width, int height);
+ bool isNull() const;
+ bool isEmpty() const;
+ bool isValid() const;
+ int left() const;
+ int top() const;
+ int right() const;
+ int bottom() const;
+ QRect normalized() const;
+ int x() const;
+ int y() const;
+ void setLeft(int pos);
+ void setTop(int pos);
+ void setRight(int pos);
+ void setBottom(int pos);
+ void setX(int x);
+ void setY(int y);
+ void setTopLeft(const QPoint &p);
+ void setBottomRight(const QPoint &p);
+ void setTopRight(const QPoint &p);
+ void setBottomLeft(const QPoint &p);
+ QPoint topLeft() const;
+ QPoint bottomRight() const;
+ QPoint topRight() const;
+ QPoint bottomLeft() const;
+ QPoint center() const;
+ void moveLeft(int pos);
+ void moveTop(int pos);
+ void moveRight(int pos);
+ void moveBottom(int pos);
+ void moveTopLeft(const QPoint &p);
+ void moveBottomRight(const QPoint &p);
+ void moveTopRight(const QPoint &p);
+ void moveBottomLeft(const QPoint &p);
+ void moveCenter(const QPoint &p);
+ inline void translate(int dx, int dy);
+ inline void translate(const QPoint &p);
+ inline QRect translated(int dx, int dy) const;
+ inline QRect translated(const QPoint &p) const;
+ void moveTo(int x, int t);
+ void moveTo(const QPoint &p);
+ void setRect(int x, int y, int w, int h);
+ inline void getRect(int *x, int *y, int *w, int *h) const;
+ void setCoords(int x1, int y1, int x2, int y2);
+ inline void getCoords(int *x1, int *y1, int *x2, int *y2) const;
+ inline void adjust(int x1, int y1, int x2, int y2);
+ inline QRect adjusted(int x1, int y1, int x2, int y2) const;
+ QSize size() const;
+ int width() const;
+ int height() const;
+ void setWidth(int w);
+ void setHeight(int h);
+ void setSize(const QSize &s);
+ QRect operator|(const QRect &r) const;
+ QRect operator&(const QRect &r) const;
+ QRect& operator|=(const QRect &r);
+ QRect& operator&=(const QRect &r);
+ bool contains(const QPoint &p, bool proper=false) const;
+ bool contains(int x, int y) const;
+ bool contains(int x, int y, bool proper) const;
+ bool contains(const QRect &r, bool proper = false) const;
+ QRect unite(const QRect &r) const;
+ QRect united(const QRect &other) const;
+ QRect intersect(const QRect &r) const;
+ QRect intersected(const QRect &other) const;
+ bool intersects(const QRect &r) const;
+ friend __attribute__((visibility("default"))) inline bool operator==(const QRect &, const QRect &);
+ friend __attribute__((visibility("default"))) inline bool operator!=(const QRect &, const QRect &);
+private:
+ int x1;
+ int y1;
+ int x2;
+ int y2;
+};
+template <> class QTypeInfo<QRect> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QRect)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QRect"; } };
+__attribute__((visibility("default"))) inline bool operator==(const QRect &, const QRect &);
+__attribute__((visibility("default"))) inline bool operator!=(const QRect &, const QRect &);
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QRect &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QRect &);
+inline QRect::QRect(int aleft, int atop, int awidth, int aheight)
+{
+ x1 = aleft;
+ y1 = atop;
+ x2 = (aleft + awidth - 1);
+ y2 = (atop + aheight - 1);
+}
+inline QRect::QRect(const QPoint &atopLeft, const QPoint &abottomRight)
+{
+ x1 = atopLeft.x();
+ y1 = atopLeft.y();
+ x2 = abottomRight.x();
+ y2 = abottomRight.y();
+}
+inline QRect::QRect(const QPoint &atopLeft, const QSize &asize)
+{
+ x1 = atopLeft.x();
+ y1 = atopLeft.y();
+ x2 = (x1+asize.width() - 1);
+ y2 = (y1+asize.height() - 1);
+}
+inline bool QRect::isNull() const
+{ return x2 == x1 - 1 && y2 == y1 - 1; }
+inline bool QRect::isEmpty() const
+{ return x1 > x2 || y1 > y2; }
+inline bool QRect::isValid() const
+{ return x1 <= x2 && y1 <= y2; }
+inline int QRect::left() const
+{ return x1; }
+inline int QRect::top() const
+{ return y1; }
+inline int QRect::right() const
+{ return x2; }
+inline int QRect::bottom() const
+{ return y2; }
+inline int QRect::x() const
+{ return x1; }
+inline int QRect::y() const
+{ return y1; }
+inline void QRect::setLeft(int pos)
+{ x1 = pos; }
+inline void QRect::setTop(int pos)
+{ y1 = pos; }
+inline void QRect::setRight(int pos)
+{ x2 = pos; }
+inline void QRect::setBottom(int pos)
+{ y2 = pos; }
+inline void QRect::setTopLeft(const QPoint &p)
+{ x1 = p.x(); y1 = p.y(); }
+inline void QRect::setBottomRight(const QPoint &p)
+{ x2 = p.x(); y2 = p.y(); }
+inline void QRect::setTopRight(const QPoint &p)
+{ x2 = p.x(); y1 = p.y(); }
+inline void QRect::setBottomLeft(const QPoint &p)
+{ x1 = p.x(); y2 = p.y(); }
+inline void QRect::setX(int ax)
+{ x1 = ax; }
+inline void QRect::setY(int ay)
+{ y1 = ay; }
+inline QPoint QRect::topLeft() const
+{ return QPoint(x1, y1); }
+inline QPoint QRect::bottomRight() const
+{ return QPoint(x2, y2); }
+inline QPoint QRect::topRight() const
+{ return QPoint(x2, y1); }
+inline QPoint QRect::bottomLeft() const
+{ return QPoint(x1, y2); }
+inline QPoint QRect::center() const
+{ return QPoint((x1+x2)/2, (y1+y2)/2); }
+inline int QRect::width() const
+{ return x2 - x1 + 1; }
+inline int QRect::height() const
+{ return y2 - y1 + 1; }
+inline QSize QRect::size() const
+{ return QSize(width(), height()); }
+inline void QRect::translate(int dx, int dy)
+{
+ x1 += dx;
+ y1 += dy;
+ x2 += dx;
+ y2 += dy;
+}
+inline void QRect::translate(const QPoint &p)
+{
+ x1 += p.x();
+ y1 += p.y();
+ x2 += p.x();
+ y2 += p.y();
+}
+inline QRect QRect::translated(int dx, int dy) const
+{ return QRect(QPoint(x1 + dx, y1 + dy), QPoint(x2 + dx, y2 + dy)); }
+inline QRect QRect::translated(const QPoint &p) const
+{ return QRect(QPoint(x1 + p.x(), y1 + p.y()), QPoint(x2 + p.x(), y2 + p.y())); }
+inline void QRect::moveTo(int ax, int ay)
+{
+ x2 += ax - x1;
+ y2 += ay - y1;
+ x1 = ax;
+ y1 = ay;
+}
+inline void QRect::moveTo(const QPoint &p)
+{
+ x2 += p.x() - x1;
+ y2 += p.y() - y1;
+ x1 = p.x();
+ y1 = p.y();
+}
+inline void QRect::moveLeft(int pos)
+{ x2 += (pos - x1); x1 = pos; }
+inline void QRect::moveTop(int pos)
+{ y2 += (pos - y1); y1 = pos; }
+inline void QRect::moveRight(int pos)
+{
+ x1 += (pos - x2);
+ x2 = pos;
+}
+inline void QRect::moveBottom(int pos)
+{
+ y1 += (pos - y2);
+ y2 = pos;
+}
+inline void QRect::moveTopLeft(const QPoint &p)
+{
+ moveLeft(p.x());
+ moveTop(p.y());
+}
+inline void QRect::moveBottomRight(const QPoint &p)
+{
+ moveRight(p.x());
+ moveBottom(p.y());
+}
+inline void QRect::moveTopRight(const QPoint &p)
+{
+ moveRight(p.x());
+ moveTop(p.y());
+}
+inline void QRect::moveBottomLeft(const QPoint &p)
+{
+ moveLeft(p.x());
+ moveBottom(p.y());
+}
+inline void QRect::getRect(int *ax, int *ay, int *aw, int *ah) const
+{
+ *ax = x1;
+ *ay = y1;
+ *aw = x2 - x1 + 1;
+ *ah = y2 - y1 + 1;
+}
+inline void QRect::setRect(int ax, int ay, int aw, int ah)
+{
+ x1 = ax;
+ y1 = ay;
+ x2 = (ax + aw - 1);
+ y2 = (ay + ah - 1);
+}
+inline void QRect::getCoords(int *xp1, int *yp1, int *xp2, int *yp2) const
+{
+ *xp1 = x1;
+ *yp1 = y1;
+ *xp2 = x2;
+ *yp2 = y2;
+}
+inline void QRect::setCoords(int xp1, int yp1, int xp2, int yp2)
+{
+ x1 = xp1;
+ y1 = yp1;
+ x2 = xp2;
+ y2 = yp2;
+}
+inline QRect QRect::adjusted(int xp1, int yp1, int xp2, int yp2) const
+{ return QRect(QPoint(x1 + xp1, y1 + yp1), QPoint(x2 + xp2, y2 + yp2)); }
+inline void QRect::adjust(int dx1, int dy1, int dx2, int dy2)
+{
+ x1 += dx1;
+ y1 += dy1;
+ x2 += dx2;
+ y2 += dy2;
+}
+inline void QRect::setWidth(int w)
+{ x2 = (x1 + w - 1); }
+inline void QRect::setHeight(int h)
+{ y2 = (y1 + h - 1); }
+inline void QRect::setSize(const QSize &s)
+{
+ x2 = (s.width() + x1 - 1);
+ y2 = (s.height() + y1 - 1);
+}
+inline bool QRect::contains(int ax, int ay, bool aproper) const
+{
+ return contains(QPoint(ax, ay), aproper);
+}
+inline bool QRect::contains(int ax, int ay) const
+{
+ return contains(QPoint(ax, ay), false);
+}
+inline QRect& QRect::operator|=(const QRect &r)
+{
+ *this = *this | r;
+ return *this;
+}
+inline QRect& QRect::operator&=(const QRect &r)
+{
+ *this = *this & r;
+ return *this;
+}
+inline QRect QRect::intersect(const QRect &r) const
+{
+ return *this & r;
+}
+inline QRect QRect::intersected(const QRect &other) const
+{
+ return intersect(other);
+}
+inline QRect QRect::unite(const QRect &r) const
+{
+ return *this | r;
+}
+inline QRect QRect::united(const QRect &r) const
+{
+ return unite(r);
+}
+inline bool operator==(const QRect &r1, const QRect &r2)
+{
+ return r1.x1==r2.x1 && r1.x2==r2.x2 && r1.y1==r2.y1 && r1.y2==r2.y2;
+}
+inline bool operator!=(const QRect &r1, const QRect &r2)
+{
+ return r1.x1!=r2.x1 || r1.x2!=r2.x2 || r1.y1!=r2.y1 || r1.y2!=r2.y2;
+}
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QRect &);
+class __attribute__((visibility("default"))) QRectF
+{
+public:
+ QRectF() { xp = yp = 0.; w = h = 0.; }
+ QRectF(const QPointF &topleft, const QSizeF &size);
+ QRectF(const QPointF &topleft, const QPointF &bottomRight);
+ QRectF(qreal left, qreal top, qreal width, qreal height);
+ QRectF(const QRect &rect);
+ bool isNull() const;
+ bool isEmpty() const;
+ bool isValid() const;
+ QRectF normalized() const;
+ inline qreal left() const { return xp; }
+ inline qreal top() const { return yp; }
+ inline qreal right() const { return xp + w; }
+ inline qreal bottom() const { return yp + h; }
+ inline qreal x() const;
+ inline qreal y() const;
+ inline void setLeft(qreal pos);
+ inline void setTop(qreal pos);
+ inline void setRight(qreal pos);
+ inline void setBottom(qreal pos);
+ inline void setX(qreal pos) { setLeft(pos); }
+ inline void setY(qreal pos) { setTop(pos); }
+ inline QPointF topLeft() const { return QPointF(xp, yp); }
+ inline QPointF bottomRight() const { return QPointF(xp+w, yp+h); }
+ inline QPointF topRight() const { return QPointF(xp+w, yp); }
+ inline QPointF bottomLeft() const { return QPointF(xp, yp+h); }
+ inline QPointF center() const;
+ void setTopLeft(const QPointF &p);
+ void setBottomRight(const QPointF &p);
+ void setTopRight(const QPointF &p);
+ void setBottomLeft(const QPointF &p);
+ void moveLeft(qreal pos);
+ void moveTop(qreal pos);
+ void moveRight(qreal pos);
+ void moveBottom(qreal pos);
+ void moveTopLeft(const QPointF &p);
+ void moveBottomRight(const QPointF &p);
+ void moveTopRight(const QPointF &p);
+ void moveBottomLeft(const QPointF &p);
+ void moveCenter(const QPointF &p);
+ void translate(qreal dx, qreal dy);
+ void translate(const QPointF &p);
+ QRectF translated(qreal dx, qreal dy) const;
+ QRectF translated(const QPointF &p) const;
+ void moveTo(qreal x, qreal t);
+ void moveTo(const QPointF &p);
+ void setRect(qreal x, qreal y, qreal w, qreal h);
+ void getRect(qreal *x, qreal *y, qreal *w, qreal *h) const;
+ void setCoords(qreal x1, qreal y1, qreal x2, qreal y2);
+ void getCoords(qreal *x1, qreal *y1, qreal *x2, qreal *y2) const;
+ inline void adjust(qreal x1, qreal y1, qreal x2, qreal y2);
+ inline QRectF adjusted(qreal x1, qreal y1, qreal x2, qreal y2) const;
+ QSizeF size() const;
+ qreal width() const;
+ qreal height() const;
+ void setWidth(qreal w);
+ void setHeight(qreal h);
+ void setSize(const QSizeF &s);
+ QRectF operator|(const QRectF &r) const;
+ QRectF operator&(const QRectF &r) const;
+ QRectF& operator|=(const QRectF &r);
+ QRectF& operator&=(const QRectF &r);
+ bool contains(const QPointF &p) const;
+ bool contains(qreal x, qreal y) const;
+ bool contains(const QRectF &r) const;
+ QRectF unite(const QRectF &r) const;
+ QRectF united(const QRectF &other) const;
+ QRectF intersect(const QRectF &r) const;
+ QRectF intersected(const QRectF &other) const;
+ bool intersects(const QRectF &r) const;
+ friend __attribute__((visibility("default"))) inline bool operator==(const QRectF &, const QRectF &);
+ friend __attribute__((visibility("default"))) inline bool operator!=(const QRectF &, const QRectF &);
+ QRect toRect() const;
+ QRect toAlignedRect() const;
+private:
+ qreal xp;
+ qreal yp;
+ qreal w;
+ qreal h;
+};
+template <> class QTypeInfo<QRectF> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QRectF)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QRectF"; } };
+__attribute__((visibility("default"))) inline bool operator==(const QRectF &, const QRectF &);
+__attribute__((visibility("default"))) inline bool operator!=(const QRectF &, const QRectF &);
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QRectF &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QRectF &);
+inline QRectF::QRectF(qreal aleft, qreal atop, qreal awidth, qreal aheight)
+ : xp(aleft), yp(atop), w(awidth), h(aheight)
+{
+}
+inline QRectF::QRectF(const QPointF &atopLeft, const QSizeF &asize)
+{
+ xp = atopLeft.x();
+ yp = atopLeft.y();
+ w = asize.width();
+ h = asize.height();
+}
+inline QRectF::QRectF(const QPointF &atopLeft, const QPointF &abottomRight)
+{
+ xp = atopLeft.x();
+ yp = atopLeft.y();
+ w = abottomRight.x() - xp;
+ h = abottomRight.y() - yp;
+}
+inline QRectF::QRectF(const QRect &r)
+ : xp(r.x()), yp(r.y()), w(r.width()), h(r.height())
+{
+}
+inline bool QRectF::isNull() const
+{ return qIsNull(w) && qIsNull(h); }
+inline bool QRectF::isEmpty() const
+{ return w <= 0. || h <= 0.; }
+inline bool QRectF::isValid() const
+{ return w > 0. && h > 0.; }
+inline qreal QRectF::x() const
+{ return xp; }
+inline qreal QRectF::y() const
+{ return yp; }
+inline void QRectF::setLeft(qreal pos) { qreal diff = pos - xp; xp += diff; w -= diff; }
+inline void QRectF::setRight(qreal pos) { w = pos - xp; }
+inline void QRectF::setTop(qreal pos) { qreal diff = pos - yp; yp += diff; h -= diff; }
+inline void QRectF::setBottom(qreal pos) { h = pos - yp; }
+inline void QRectF::setTopLeft(const QPointF &p) { setLeft(p.x()); setTop(p.y()); }
+inline void QRectF::setTopRight(const QPointF &p) { setRight(p.x()); setTop(p.y()); }
+inline void QRectF::setBottomLeft(const QPointF &p) { setLeft(p.x()); setBottom(p.y()); }
+inline void QRectF::setBottomRight(const QPointF &p) { setRight(p.x()); setBottom(p.y()); }
+inline QPointF QRectF::center() const
+{ return QPointF(xp + w/2, yp + h/2); }
+inline void QRectF::moveLeft(qreal pos) { xp = pos; }
+inline void QRectF::moveTop(qreal pos) { yp = pos; }
+inline void QRectF::moveRight(qreal pos) { xp = pos - w; }
+inline void QRectF::moveBottom(qreal pos) { yp = pos - h; }
+inline void QRectF::moveTopLeft(const QPointF &p) { moveLeft(p.x()); moveTop(p.y()); }
+inline void QRectF::moveTopRight(const QPointF &p) { moveRight(p.x()); moveTop(p.y()); }
+inline void QRectF::moveBottomLeft(const QPointF &p) { moveLeft(p.x()); moveBottom(p.y()); }
+inline void QRectF::moveBottomRight(const QPointF &p) { moveRight(p.x()); moveBottom(p.y()); }
+inline void QRectF::moveCenter(const QPointF &p) { xp = p.x() - w/2; yp = p.y() - h/2; }
+inline qreal QRectF::width() const
+{ return w; }
+inline qreal QRectF::height() const
+{ return h; }
+inline QSizeF QRectF::size() const
+{ return QSizeF(w, h); }
+inline void QRectF::translate(qreal dx, qreal dy)
+{
+ xp += dx;
+ yp += dy;
+}
+inline void QRectF::translate(const QPointF &p)
+{
+ xp += p.x();
+ yp += p.y();
+}
+inline void QRectF::moveTo(qreal ax, qreal ay)
+{
+ xp = ax;
+ yp = ay;
+}
+inline void QRectF::moveTo(const QPointF &p)
+{
+ xp = p.x();
+ yp = p.y();
+}
+inline QRectF QRectF::translated(qreal dx, qreal dy) const
+{ return QRectF(xp + dx, yp + dy, w, h); }
+inline QRectF QRectF::translated(const QPointF &p) const
+{ return QRectF(xp + p.x(), yp + p.y(), w, h); }
+inline void QRectF::getRect(qreal *ax, qreal *ay, qreal *aaw, qreal *aah) const
+{
+ *ax = this->xp;
+ *ay = this->yp;
+ *aaw = this->w;
+ *aah = this->h;
+}
+inline void QRectF::setRect(qreal ax, qreal ay, qreal aaw, qreal aah)
+{
+ this->xp = ax;
+ this->yp = ay;
+ this->w = aaw;
+ this->h = aah;
+}
+inline void QRectF::getCoords(qreal *xp1, qreal *yp1, qreal *xp2, qreal *yp2) const
+{
+ *xp1 = xp;
+ *yp1 = yp;
+ *xp2 = xp + w;
+ *yp2 = yp + h;
+}
+inline void QRectF::setCoords(qreal xp1, qreal yp1, qreal xp2, qreal yp2)
+{
+ xp = xp1;
+ yp = yp1;
+ w = xp2 - xp1;
+ h = yp2 - yp1;
+}
+inline void QRectF::adjust(qreal xp1, qreal yp1, qreal xp2, qreal yp2)
+{ xp += xp1; yp += yp1; w += xp2 - xp1; h += yp2 - yp1; }
+inline QRectF QRectF::adjusted(qreal xp1, qreal yp1, qreal xp2, qreal yp2) const
+{ return QRectF(xp + xp1, yp + yp1, w + xp2 - xp1, h + yp2 - yp1); }
+inline void QRectF::setWidth(qreal aw)
+{ this->w = aw; }
+inline void QRectF::setHeight(qreal ah)
+{ this->h = ah; }
+inline void QRectF::setSize(const QSizeF &s)
+{
+ w = s.width();
+ h = s.height();
+}
+inline bool QRectF::contains(qreal ax, qreal ay) const
+{
+ return contains(QPointF(ax, ay));
+}
+inline QRectF& QRectF::operator|=(const QRectF &r)
+{
+ *this = *this | r;
+ return *this;
+}
+inline QRectF& QRectF::operator&=(const QRectF &r)
+{
+ *this = *this & r;
+ return *this;
+}
+inline QRectF QRectF::intersect(const QRectF &r) const
+{
+ return *this & r;
+}
+inline QRectF QRectF::intersected(const QRectF &r) const
+{
+ return intersect(r);
+}
+inline QRectF QRectF::unite(const QRectF &r) const
+{
+ return *this | r;
+}
+inline QRectF QRectF::united(const QRectF &r) const
+{
+ return unite(r);
+}
+inline bool operator==(const QRectF &r1, const QRectF &r2)
+{
+ return qFuzzyCompare(r1.xp, r2.xp) && qFuzzyCompare(r1.yp, r2.yp)
+ && qFuzzyCompare(r1.w, r2.w) && qFuzzyCompare(r1.h, r2.h);
+}
+inline bool operator!=(const QRectF &r1, const QRectF &r2)
+{
+ return !qFuzzyCompare(r1.xp, r2.xp) || !qFuzzyCompare(r1.yp, r2.yp)
+ || !qFuzzyCompare(r1.w, r2.w) || !qFuzzyCompare(r1.h, r2.h);
+}
+inline QRect QRectF::toRect() const
+{
+ return QRect(qRound(xp), qRound(yp), qRound(w), qRound(h));
+}
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QRectF &);
+typedef QtValidLicenseForGuiModule QtGuiModule;
+typedef unsigned int QRgb;
+const QRgb RGB_MASK = 0x00ffffff;
+__attribute__((visibility("default"))) inline int qRed(QRgb rgb)
+{ return ((rgb >> 16) & 0xff); }
+__attribute__((visibility("default"))) inline int qGreen(QRgb rgb)
+{ return ((rgb >> 8) & 0xff); }
+__attribute__((visibility("default"))) inline int qBlue(QRgb rgb)
+{ return (rgb & 0xff); }
+__attribute__((visibility("default"))) inline int qAlpha(QRgb rgb)
+{ return ((rgb >> 24) & 0xff); }
+__attribute__((visibility("default"))) inline QRgb qRgb(int r, int g, int b)
+{ return (0xffu << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff); }
+__attribute__((visibility("default"))) inline QRgb qRgba(int r, int g, int b, int a)
+{ return ((a & 0xff) << 24) | ((r & 0xff) << 16) | ((g & 0xff) << 8) | (b & 0xff); }
+__attribute__((visibility("default"))) inline int qGray(int r, int g, int b)
+{ return (r*11+g*16+b*5)/32; }
+__attribute__((visibility("default"))) inline int qGray(QRgb rgb)
+{ return qGray(qRed(rgb), qGreen(rgb), qBlue(rgb)); }
+__attribute__((visibility("default"))) inline bool qIsGray(QRgb rgb)
+{ return qRed(rgb) == qGreen(rgb) && qRed(rgb) == qBlue(rgb); }
+typedef QtValidLicenseForCoreModule QtCoreModule;
+struct QRegExpPrivate;
+class QStringList;
+class __attribute__((visibility("default"))) QRegExp
+{
+public:
+ enum PatternSyntax { RegExp, Wildcard, FixedString, RegExp2 };
+ enum CaretMode { CaretAtZero, CaretAtOffset, CaretWontMatch };
+ QRegExp();
+ explicit QRegExp(const QString &pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive,
+ PatternSyntax syntax = RegExp);
+ QRegExp(const QRegExp &rx);
+ ~QRegExp();
+ QRegExp &operator=(const QRegExp &rx);
+ bool operator==(const QRegExp &rx) const;
+ inline bool operator!=(const QRegExp &rx) const { return !operator==(rx); }
+ bool isEmpty() const;
+ bool isValid() const;
+ QString pattern() const;
+ void setPattern(const QString &pattern);
+ Qt::CaseSensitivity caseSensitivity() const;
+ void setCaseSensitivity(Qt::CaseSensitivity cs);
+ PatternSyntax patternSyntax() const;
+ void setPatternSyntax(PatternSyntax syntax);
+ bool isMinimal() const;
+ void setMinimal(bool minimal);
+ bool exactMatch(const QString &str) const;
+ int indexIn(const QString &str, int offset = 0, CaretMode caretMode = CaretAtZero) const;
+ int lastIndexIn(const QString &str, int offset = -1, CaretMode caretMode = CaretAtZero) const;
+ int matchedLength() const;
+ int numCaptures() const;
+ QStringList capturedTexts() const;
+ QStringList capturedTexts();
+ QString cap(int nth = 0) const;
+ QString cap(int nth = 0);
+ int pos(int nth = 0) const;
+ int pos(int nth = 0);
+ QString errorString() const;
+ QString errorString();
+ static QString escape(const QString &str);
+private:
+ QRegExpPrivate *priv;
+};
+template <> class QTypeInfo<QRegExp> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QRegExp)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QRegExp"; } };
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &out, const QRegExp ®Exp);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &in, QRegExp ®Exp);
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QStringMatcherPrivate;
+class __attribute__((visibility("default"))) QStringMatcher
+{
+public:
+ QStringMatcher();
+ QStringMatcher(const QString &pattern,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QStringMatcher(const QChar *uc, int len,
+ Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ QStringMatcher(const QStringMatcher &other);
+ ~QStringMatcher();
+ QStringMatcher &operator=(const QStringMatcher &other);
+ void setPattern(const QString &pattern);
+ void setCaseSensitivity(Qt::CaseSensitivity cs);
+ int indexIn(const QString &str, int from = 0) const;
+ int indexIn(const QChar *str, int length, int from = 0) const;
+ QString pattern() const;
+ inline Qt::CaseSensitivity caseSensitivity() const { return q_cs; }
+private:
+ QStringMatcherPrivate *d_ptr;
+ QString q_pattern;
+ Qt::CaseSensitivity q_cs;
+ union {
+ uint q_data[256];
+ struct {
+ uchar q_skiptable[256];
+ const QChar *uc;
+ int len;
+ } p;
+ };
+};
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QRegExp;
+typedef QListIterator<QString> QStringListIterator;
+typedef QMutableListIterator<QString> QMutableStringListIterator;
+class QStringList : public QList<QString>
+{
+public:
+ inline QStringList() { }
+ inline explicit QStringList(const QString &i) { append(i); }
+ inline QStringList(const QStringList &l) : QList<QString>(l) { }
+ inline QStringList(const QList<QString> &l) : QList<QString>(l) { }
+ inline void sort();
+ inline int removeDuplicates();
+ inline QString join(const QString &sep) const;
+ inline QStringList filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline QBool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline QStringList &replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
+ inline QStringList operator+(const QStringList &other) const
+ { QStringList n = *this; n += other; return n; }
+ inline QStringList &operator<<(const QString &str)
+ { append(str); return *this; }
+ inline QStringList &operator<<(const QStringList &l)
+ { *this += l; return *this; }
+ inline QStringList filter(const QRegExp &rx) const;
+ inline QStringList &replaceInStrings(const QRegExp &rx, const QString &after);
+ inline int indexOf(const QRegExp &rx, int from = 0) const;
+ inline int lastIndexOf(const QRegExp &rx, int from = -1) const;
+ inline int indexOf(QRegExp &rx, int from = 0) const;
+ inline int lastIndexOf(QRegExp &rx, int from = -1) const;
+ using QList<QString>::indexOf;
+ using QList<QString>::lastIndexOf;
+};
+namespace QtPrivate {
+ void __attribute__((visibility("default"))) QStringList_sort(QStringList *that);
+ int __attribute__((visibility("default"))) QStringList_removeDuplicates(QStringList *that);
+ QString __attribute__((visibility("default"))) QStringList_join(const QStringList *that, const QString &sep);
+ QStringList __attribute__((visibility("default"))) QStringList_filter(const QStringList *that, const QString &str,
+ Qt::CaseSensitivity cs);
+ QBool __attribute__((visibility("default"))) QStringList_contains(const QStringList *that, const QString &str, Qt::CaseSensitivity cs);
+ void __attribute__((visibility("default"))) QStringList_replaceInStrings(QStringList *that, const QString &before, const QString &after,
+ Qt::CaseSensitivity cs);
+ void __attribute__((visibility("default"))) QStringList_replaceInStrings(QStringList *that, const QRegExp &rx, const QString &after);
+ QStringList __attribute__((visibility("default"))) QStringList_filter(const QStringList *that, const QRegExp &re);
+ int __attribute__((visibility("default"))) QStringList_indexOf(const QStringList *that, const QRegExp &rx, int from);
+ int __attribute__((visibility("default"))) QStringList_lastIndexOf(const QStringList *that, const QRegExp &rx, int from);
+ int __attribute__((visibility("default"))) QStringList_indexOf(const QStringList *that, QRegExp &rx, int from);
+ int __attribute__((visibility("default"))) QStringList_lastIndexOf(const QStringList *that, QRegExp &rx, int from);
+}
+inline void QStringList::sort()
+{
+ QtPrivate::QStringList_sort(this);
+}
+inline int QStringList::removeDuplicates()
+{
+ return QtPrivate::QStringList_removeDuplicates(this);
+}
+inline QString QStringList::join(const QString &sep) const
+{
+ return QtPrivate::QStringList_join(this, sep);
+}
+inline QStringList QStringList::filter(const QString &str, Qt::CaseSensitivity cs) const
+{
+ return QtPrivate::QStringList_filter(this, str, cs);
+}
+inline QBool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const
+{
+ return QtPrivate::QStringList_contains(this, str, cs);
+}
+inline QStringList &QStringList::replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs)
+{
+ QtPrivate::QStringList_replaceInStrings(this, before, after, cs);
+ return *this;
+}
+inline QStringList &QStringList::replaceInStrings(const QRegExp &rx, const QString &after)
+{
+ QtPrivate::QStringList_replaceInStrings(this, rx, after);
+ return *this;
+}
+inline QStringList QStringList::filter(const QRegExp &rx) const
+{
+ return QtPrivate::QStringList_filter(this, rx);
+}
+inline int QStringList::indexOf(const QRegExp &rx, int from) const
+{
+ return QtPrivate::QStringList_indexOf(this, rx, from);
+}
+inline int QStringList::lastIndexOf(const QRegExp &rx, int from) const
+{
+ return QtPrivate::QStringList_lastIndexOf(this, rx, from);
+}
+inline int QStringList::indexOf(QRegExp &rx, int from) const
+{
+ return QtPrivate::QStringList_indexOf(this, rx, from);
+}
+inline int QStringList::lastIndexOf(QRegExp &rx, int from) const
+{
+ return QtPrivate::QStringList_lastIndexOf(this, rx, from);
+}
+inline QDataStream &operator>>(QDataStream &in, QStringList &list)
+{
+ return operator>>(in, static_cast<QList<QString> &>(list));
+}
+inline QDataStream &operator<<(QDataStream &out, const QStringList &list)
+{
+ return operator<<(out, static_cast<const QList<QString> &>(list));
+}
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QColor;
+class QColormap;
+class QVariant;
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QColor &);
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QColor &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QColor &);
+class __attribute__((visibility("default"))) QColor
+{
+public:
+ enum Spec { Invalid, Rgb, Hsv, Cmyk };
+ QColor();
+ QColor(Qt::GlobalColor color);
+ QColor(int r, int g, int b, int a = 255);
+ QColor(QRgb rgb);
+ QColor(const QString& name);
+ QColor(const char *name);
+ QColor(const QColor &color);
+ QColor(Spec spec);
+ bool isValid() const;
+ QString name() const;
+ void setNamedColor(const QString& name);
+ static QStringList colorNames();
+ inline Spec spec() const
+ { return cspec; }
+ int alpha() const;
+ void setAlpha(int alpha);
+ qreal alphaF() const;
+ void setAlphaF(qreal alpha);
+ int red() const;
+ int green() const;
+ int blue() const;
+ void setRed(int red);
+ void setGreen(int green);
+ void setBlue(int blue);
+ qreal redF() const;
+ qreal greenF() const;
+ qreal blueF() const;
+ void setRedF(qreal red);
+ void setGreenF(qreal green);
+ void setBlueF(qreal blue);
+ void getRgb(int *r, int *g, int *b, int *a = 0) const;
+ void setRgb(int r, int g, int b, int a = 255);
+ void getRgbF(qreal *r, qreal *g, qreal *b, qreal *a = 0) const;
+ void setRgbF(qreal r, qreal g, qreal b, qreal a = 1.0);
+ QRgb rgba() const;
+ void setRgba(QRgb rgba);
+ QRgb rgb() const;
+ void setRgb(QRgb rgb);
+ int hue() const;
+ int saturation() const;
+ int value() const;
+ qreal hueF() const;
+ qreal saturationF() const;
+ qreal valueF() const;
+ void getHsv(int *h, int *s, int *v, int *a = 0) const;
+ void setHsv(int h, int s, int v, int a = 255);
+ void getHsvF(qreal *h, qreal *s, qreal *v, qreal *a = 0) const;
+ void setHsvF(qreal h, qreal s, qreal v, qreal a = 1.0);
+ int cyan() const;
+ int magenta() const;
+ int yellow() const;
+ int black() const;
+ qreal cyanF() const;
+ qreal magentaF() const;
+ qreal yellowF() const;
+ qreal blackF() const;
+ void getCmyk(int *c, int *m, int *y, int *k, int *a = 0);
+ void setCmyk(int c, int m, int y, int k, int a = 255);
+ void getCmykF(qreal *c, qreal *m, qreal *y, qreal *k, qreal *a = 0);
+ void setCmykF(qreal c, qreal m, qreal y, qreal k, qreal a = 1.0);
+ QColor toRgb() const;
+ QColor toHsv() const;
+ QColor toCmyk() const;
+ QColor convertTo(Spec colorSpec) const;
+ static QColor fromRgb(QRgb rgb);
+ static QColor fromRgba(QRgb rgba);
+ static QColor fromRgb(int r, int g, int b, int a = 255);
+ static QColor fromRgbF(qreal r, qreal g, qreal b, qreal a = 1.0);
+ static QColor fromHsv(int h, int s, int v, int a = 255);
+ static QColor fromHsvF(qreal h, qreal s, qreal v, qreal a = 1.0);
+ static QColor fromCmyk(int c, int m, int y, int k, int a = 255);
+ static QColor fromCmykF(qreal c, qreal m, qreal y, qreal k, qreal a = 1.0);
+ QColor light(int f = 150) const;
+ QColor lighter(int f = 150) const;
+ QColor dark(int f = 200) const;
+ QColor darker(int f = 200) const;
+ QColor &operator=(const QColor &);
+ QColor &operator=(Qt::GlobalColor color);
+ bool operator==(const QColor &c) const;
+ bool operator!=(const QColor &c) const;
+ operator QVariant() const;
+private:
+ QColor(int, int, int, Spec);
+ void invalidate();
+ Spec cspec;
+ union {
+ struct {
+ ushort alpha;
+ ushort red;
+ ushort green;
+ ushort blue;
+ ushort pad;
+ } argb;
+ struct {
+ ushort alpha;
+ ushort hue;
+ ushort saturation;
+ ushort value;
+ ushort pad;
+ } ahsv;
+ struct {
+ ushort alpha;
+ ushort cyan;
+ ushort magenta;
+ ushort yellow;
+ ushort black;
+ } acmyk;
+ } ct;
+ friend class QColormap;
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QColor &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QColor &);
+};
+inline QColor::QColor()
+{ invalidate(); }
+inline QColor::QColor(int r, int g, int b, int a)
+{ setRgb(r, g, b, a); }
+inline QColor::QColor(const char *aname)
+{ setNamedColor(QLatin1String(aname)); }
+inline QColor::QColor(const QString& aname)
+{ setNamedColor(aname); }
+inline QColor::QColor(const QColor &acolor)
+ : cspec(acolor.cspec)
+{ ct.argb = acolor.ct.argb; }
+inline bool QColor::isValid() const
+{ return cspec != Invalid; }
+inline QColor QColor::lighter(int f) const
+{ return light(f); }
+inline QColor QColor::darker(int f) const
+{ return dark(f); }
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QPaintDevice;
+class QWidget;
+class QDialog;
+class QColor;
+class QPalette;
+class QCursor;
+class QPoint;
+class QSize;
+class QRect;
+class QPolygon;
+class QPainter;
+class QRegion;
+class QFont;
+class QFontMetrics;
+class QFontInfo;
+class QPen;
+class QBrush;
+class QMatrix;
+class QPixmap;
+class QBitmap;
+class QMovie;
+class QImage;
+class QPicture;
+class QPrinter;
+class QTimer;
+class QTime;
+class QClipboard;
+class QString;
+class QByteArray;
+class QApplication;
+template<typename T> class QList;
+typedef QList<QWidget *> QWidgetList;
+typedef unsigned long WId;
+struct QWSEvent;
+template<class K, class V> class QHash;
+typedef QHash<WId, QWidget *> QWidgetMapper;
+template<class V> class QSet;
+typedef QSet<QWidget *> QWidgetSet;
+typedef QtValidLicenseForGuiModule QtGuiModule;
+template <class T> class QVector;
+class QVariant;
+struct QRegionPrivate;
+class QBitmap;
+class __attribute__((visibility("default"))) QRegion
+{
+public:
+ enum RegionType { Rectangle, Ellipse };
+ QRegion();
+ QRegion(int x, int y, int w, int h, RegionType t = Rectangle);
+ QRegion(const QRect &r, RegionType t = Rectangle);
+ QRegion(const QPolygon &pa, Qt::FillRule fillRule = Qt::OddEvenFill);
+ QRegion(const QRegion ®ion);
+ QRegion(const QBitmap &bitmap);
+ ~QRegion();
+ QRegion &operator=(const QRegion &);
+ bool isEmpty() const;
+ bool contains(const QPoint &p) const;
+ bool contains(const QRect &r) const;
+ void translate(int dx, int dy);
+ inline void translate(const QPoint &p) { translate(p.x(), p.y()); }
+ QRegion translated(int dx, int dy) const;
+ inline QRegion translated(const QPoint &p) const { return translated(p.x(), p.y()); }
+ QRegion unite(const QRegion &r) const;
+ QRegion unite(const QRect &r) const;
+ QRegion intersect(const QRegion &r) const;
+ QRegion intersect(const QRect &r) const;
+ QRegion subtract(const QRegion &r) const;
+ QRegion eor(const QRegion &r) const;
+ inline QRegion united(const QRegion &r) const { return unite(r); }
+ inline QRegion united(const QRect &r) const { return unite(r); }
+ inline QRegion intersected(const QRegion &r) const { return intersect(r); }
+ inline QRegion intersected(const QRect &r) const { return intersect(r); }
+ inline QRegion subtracted(const QRegion &r) const { return subtract(r); }
+ inline QRegion xored(const QRegion &r) const { return eor(r); }
+ bool intersects(const QRegion &r) const;
+ bool intersects(const QRect &r) const;
+ QRect boundingRect() const;
+ QVector<QRect> rects() const;
+ void setRects(const QRect *rect, int num);
+ int numRects() const;
+ const QRegion operator|(const QRegion &r) const;
+ const QRegion operator+(const QRegion &r) const;
+ const QRegion operator+(const QRect &r) const;
+ const QRegion operator&(const QRegion &r) const;
+ const QRegion operator&(const QRect &r) const;
+ const QRegion operator-(const QRegion &r) const;
+ const QRegion operator^(const QRegion &r) const;
+ QRegion& operator|=(const QRegion &r);
+ QRegion& operator+=(const QRegion &r);
+ QRegion& operator+=(const QRect &r);
+ QRegion& operator&=(const QRegion &r);
+ QRegion& operator&=(const QRect &r);
+ QRegion& operator-=(const QRegion &r);
+ QRegion& operator^=(const QRegion &r);
+ bool operator==(const QRegion &r) const;
+ inline bool operator!=(const QRegion &r) const { return !(operator==(r)); }
+ operator QVariant() const;
+ inline void *handle() const { return d->qt_rgn; }
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QRegion &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QRegion &);
+private:
+ QRegion copy() const;
+ void detach();
+ friend bool qt_region_strictContains(const QRegion ®ion,
+ const QRect &rect);
+ friend struct QRegionPrivate;
+ void exec(const QByteArray &ba, int ver = 0, QDataStream::ByteOrder byteOrder = QDataStream::BigEndian);
+ struct QRegionData {
+ QBasicAtomicInt ref;
+ QRegionPrivate *qt_rgn;
+ };
+ struct QRegionData *d;
+ static struct QRegionData shared_empty;
+ static void cleanUp(QRegionData *x);
+};
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QRegion &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QRegion &);
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QRegion &);
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QKeySequence;
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &in, const QKeySequence &ks);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &out, QKeySequence &ks);
+class QVariant;
+class QKeySequencePrivate;
+class __attribute__((visibility("default"))) QKeySequence
+{
+public:
+ enum StandardKey {
+ UnknownKey,
+ HelpContents,
+ WhatsThis,
+ Open,
+ Close,
+ Save,
+ New,
+ Delete,
+ Cut,
+ Copy,
+ Paste,
+ Undo,
+ Redo,
+ Back,
+ Forward,
+ Refresh,
+ ZoomIn,
+ ZoomOut,
+ Print,
+ AddTab,
+ NextChild,
+ PreviousChild,
+ Find,
+ FindNext,
+ FindPrevious,
+ Replace,
+ SelectAll,
+ Bold,
+ Italic,
+ Underline,
+ MoveToNextChar,
+ MoveToPreviousChar,
+ MoveToNextWord,
+ MoveToPreviousWord,
+ MoveToNextLine,
+ MoveToPreviousLine,
+ MoveToNextPage,
+ MoveToPreviousPage,
+ MoveToStartOfLine,
+ MoveToEndOfLine,
+ MoveToStartOfBlock,
+ MoveToEndOfBlock,
+ MoveToStartOfDocument,
+ MoveToEndOfDocument,
+ SelectNextChar,
+ SelectPreviousChar,
+ SelectNextWord,
+ SelectPreviousWord,
+ SelectNextLine,
+ SelectPreviousLine,
+ SelectNextPage,
+ SelectPreviousPage,
+ SelectStartOfLine,
+ SelectEndOfLine,
+ SelectStartOfBlock,
+ SelectEndOfBlock,
+ SelectStartOfDocument,
+ SelectEndOfDocument,
+ DeleteStartOfWord,
+ DeleteEndOfWord,
+ DeleteEndOfLine,
+ InsertParagraphSeparator,
+ InsertLineSeparator,
+ SaveAs
+ };
+ QKeySequence();
+ QKeySequence(const QString &key);
+ QKeySequence(int k1, int k2 = 0, int k3 = 0, int k4 = 0);
+ QKeySequence(const QKeySequence &ks);
+ QKeySequence(StandardKey key);
+ ~QKeySequence();
+ uint count() const;
+ bool isEmpty() const;
+ enum SequenceMatch {
+ NoMatch,
+ PartialMatch,
+ ExactMatch
+ };
+ enum SequenceFormat {
+ NativeText,
+ PortableText
+ };
+ QString toString(SequenceFormat format = PortableText) const;
+ static QKeySequence fromString(const QString &str, SequenceFormat format = PortableText);
+ SequenceMatch matches(const QKeySequence &seq) const;
+ static QKeySequence mnemonic(const QString &text);
+ static QList<QKeySequence> keyBindings(StandardKey key);
+ operator QString() const;
+ operator QVariant() const;
+ operator int() const;
+ int operator[](uint i) const;
+ QKeySequence &operator=(const QKeySequence &other);
+ bool operator==(const QKeySequence &other) const;
+ inline bool operator!= (const QKeySequence &other) const
+ { return !(*this == other); }
+ bool operator< (const QKeySequence &ks) const;
+ inline bool operator> (const QKeySequence &other) const
+ { return other < *this; }
+ inline bool operator<= (const QKeySequence &other) const
+ { return !(other < *this); }
+ inline bool operator>= (const QKeySequence &other) const
+ { return !(*this < other); }
+ bool isDetached() const;
+private:
+ static int decodeString(const QString &ks);
+ static QString encodeString(int key);
+ int assign(const QString &str);
+ void setKey(int key, int index);
+ QKeySequencePrivate *d;
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &in, const QKeySequence &ks);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &in, QKeySequence &ks);
+ friend class Q3AccelManager;
+ friend class QShortcutMap;
+ friend class QShortcut;
+public:
+ typedef QKeySequencePrivate * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+template <> class QTypeInfo<QKeySequence> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QKeySequence)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QKeySequence"; } };
+template <> inline bool qIsDetached<QKeySequence>(QKeySequence &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QKeySequence>(QKeySequence &value1, QKeySequence &value2) { const QKeySequence::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QKeySequence &);
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QEventPrivate;
+class __attribute__((visibility("default"))) QEvent
+{
+public:
+ enum Type {
+ None = 0,
+ Timer = 1,
+ MouseButtonPress = 2,
+ MouseButtonRelease = 3,
+ MouseButtonDblClick = 4,
+ MouseMove = 5,
+ KeyPress = 6,
+ KeyRelease = 7,
+ FocusIn = 8,
+ FocusOut = 9,
+ Enter = 10,
+ Leave = 11,
+ Paint = 12,
+ Move = 13,
+ Resize = 14,
+ Create = 15,
+ Destroy = 16,
+ Show = 17,
+ Hide = 18,
+ Close = 19,
+ Quit = 20,
+ ParentChange = 21,
+ ParentAboutToChange = 131,
+ ThreadChange = 22,
+ WindowActivate = 24,
+ WindowDeactivate = 25,
+ ShowToParent = 26,
+ HideToParent = 27,
+ Wheel = 31,
+ WindowTitleChange = 33,
+ WindowIconChange = 34,
+ ApplicationWindowIconChange = 35,
+ ApplicationFontChange = 36,
+ ApplicationLayoutDirectionChange = 37,
+ ApplicationPaletteChange = 38,
+ PaletteChange = 39,
+ Clipboard = 40,
+ Speech = 42,
+ MetaCall = 43,
+ SockAct = 50,
+ WinEventAct = 132,
+ DeferredDelete = 52,
+ DragEnter = 60,
+ DragMove = 61,
+ DragLeave = 62,
+ Drop = 63,
+ DragResponse = 64,
+ ChildAdded = 68,
+ ChildPolished = 69,
+ ChildRemoved = 71,
+ ShowWindowRequest = 73,
+ PolishRequest = 74,
+ Polish = 75,
+ LayoutRequest = 76,
+ UpdateRequest = 77,
+ UpdateLater = 78,
+ EmbeddingControl = 79,
+ ActivateControl = 80,
+ DeactivateControl = 81,
+ ContextMenu = 82,
+ InputMethod = 83,
+ AccessibilityPrepare = 86,
+ TabletMove = 87,
+ LocaleChange = 88,
+ LanguageChange = 89,
+ LayoutDirectionChange = 90,
+ Style = 91,
+ TabletPress = 92,
+ TabletRelease = 93,
+ OkRequest = 94,
+ HelpRequest = 95,
+ IconDrag = 96,
+ FontChange = 97,
+ EnabledChange = 98,
+ ActivationChange = 99,
+ StyleChange = 100,
+ IconTextChange = 101,
+ ModifiedChange = 102,
+ MouseTrackingChange = 109,
+ WindowBlocked = 103,
+ WindowUnblocked = 104,
+ WindowStateChange = 105,
+ ToolTip = 110,
+ WhatsThis = 111,
+ StatusTip = 112,
+ ActionChanged = 113,
+ ActionAdded = 114,
+ ActionRemoved = 115,
+ FileOpen = 116,
+ Shortcut = 117,
+ ShortcutOverride = 51,
+ WhatsThisClicked = 118,
+ ToolBarChange = 120,
+ ApplicationActivate = 121,
+ ApplicationActivated = ApplicationActivate,
+ ApplicationDeactivate = 122,
+ ApplicationDeactivated = ApplicationDeactivate,
+ QueryWhatsThis = 123,
+ EnterWhatsThisMode = 124,
+ LeaveWhatsThisMode = 125,
+ ZOrderChange = 126,
+ HoverEnter = 127,
+ HoverLeave = 128,
+ HoverMove = 129,
+ AccessibilityHelp = 119,
+ AccessibilityDescription = 130,
+ AcceptDropsChange = 152,
+ MenubarUpdated = 153,
+ ZeroTimerEvent = 154,
+ GraphicsSceneMouseMove = 155,
+ GraphicsSceneMousePress = 156,
+ GraphicsSceneMouseRelease = 157,
+ GraphicsSceneMouseDoubleClick = 158,
+ GraphicsSceneContextMenu = 159,
+ GraphicsSceneHoverEnter = 160,
+ GraphicsSceneHoverMove = 161,
+ GraphicsSceneHoverLeave = 162,
+ GraphicsSceneHelp = 163,
+ GraphicsSceneDragEnter = 164,
+ GraphicsSceneDragMove = 165,
+ GraphicsSceneDragLeave = 166,
+ GraphicsSceneDrop = 167,
+ GraphicsSceneWheel = 168,
+ KeyboardLayoutChange = 169,
+ DynamicPropertyChange = 170,
+ TabletEnterProximity = 171,
+ TabletLeaveProximity = 172,
+ NonClientAreaMouseMove = 173,
+ NonClientAreaMouseButtonPress = 174,
+ NonClientAreaMouseButtonRelease = 175,
+ NonClientAreaMouseButtonDblClick = 176,
+ MacSizeChange = 177,
+ ContentsRectChange = 178,
+ MacGLWindowChange = 179,
+ FutureCallOut = 180,
+ GraphicsSceneResize = 181,
+ GraphicsSceneMove = 182,
+ CursorChange = 183,
+ ToolTipChange = 184,
+ NetworkReplyUpdated = 185,
+ GrabMouse = 186,
+ UngrabMouse = 187,
+ GrabKeyboard = 188,
+ UngrabKeyboard = 189,
+ CocoaRequestModal = 190,
+ MacGLClearDrawable = 191,
+ User = 1000,
+ MaxUser = 65535
+ };
+ QEvent(Type type);
+ virtual ~QEvent();
+ inline Type type() const { return static_cast<Type>(t); }
+ inline bool spontaneous() const { return spont; }
+ inline void setAccepted(bool accepted) { m_accept = accepted; }
+ inline bool isAccepted() const { return m_accept; }
+ inline void accept() { m_accept = true; }
+ inline void ignore() { m_accept = false; }
+ static int registerEventType(int hint = -1);
+protected:
+ QEventPrivate *d;
+ ushort t;
+private:
+ ushort posted : 1;
+ ushort spont : 1;
+ ushort m_accept : 1;
+ ushort reserved : 13;
+ friend class QCoreApplication;
+ friend class QCoreApplicationPrivate;
+ friend class QThreadData;
+ friend class QApplication;
+ friend class QApplicationPrivate;
+ friend class Q3AccelManager;
+ friend class QShortcutMap;
+ friend class QETWidget;
+};
+class __attribute__((visibility("default"))) QTimerEvent : public QEvent
+{
+public:
+ QTimerEvent( int timerId );
+ ~QTimerEvent();
+ int timerId() const { return id; }
+protected:
+ int id;
+};
+class QObject;
+class __attribute__((visibility("default"))) QChildEvent : public QEvent
+{
+public:
+ QChildEvent( Type type, QObject *child );
+ ~QChildEvent();
+ QObject *child() const { return c; }
+ bool added() const { return type() == ChildAdded; }
+ bool polished() const { return type() == ChildPolished; }
+ bool removed() const { return type() == ChildRemoved; }
+protected:
+ QObject *c;
+};
+class __attribute__((visibility("default"))) QDynamicPropertyChangeEvent : public QEvent
+{
+public:
+ QDynamicPropertyChangeEvent(const QByteArray &name);
+ ~QDynamicPropertyChangeEvent();
+ inline QByteArray propertyName() const { return n; }
+private:
+ QByteArray n;
+};
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class __attribute__((visibility("default"))) QMetaType {
+public:
+ enum Type {
+ Void = 0, Bool = 1, Int = 2, UInt = 3, LongLong = 4, ULongLong = 5,
+ Double = 6, QChar = 7, QVariantMap = 8, QVariantList = 9,
+ QString = 10, QStringList = 11, QByteArray = 12,
+ QBitArray = 13, QDate = 14, QTime = 15, QDateTime = 16, QUrl = 17,
+ QLocale = 18, QRect = 19, QRectF = 20, QSize = 21, QSizeF = 22,
+ QLine = 23, QLineF = 24, QPoint = 25, QPointF = 26, QRegExp = 27,
+ QVariantHash = 28, LastCoreType = 28 ,
+ FirstGuiType = 63 ,
+ QFont = 64, QPixmap = 65, QBrush = 66, QColor = 67, QPalette = 68,
+ QIcon = 69, QImage = 70, QPolygon = 71, QRegion = 72, QBitmap = 73,
+ QCursor = 74, QSizePolicy = 75, QKeySequence = 76, QPen = 77,
+ QTextLength = 78, QTextFormat = 79, QMatrix = 80, QTransform = 81,
+ LastGuiType = 81 ,
+ FirstCoreExtType = 128 ,
+ VoidStar = 128, Long = 129, Short = 130, Char = 131, ULong = 132,
+ UShort = 133, UChar = 134, Float = 135, QObjectStar = 136, QWidgetStar = 137,
+ LastCoreExtType = 137 ,
+ User = 256
+ };
+ typedef void (*Destructor)(void *);
+ typedef void *(*Constructor)(const void *);
+ typedef void (*SaveOperator)(QDataStream &, const void *);
+ typedef void (*LoadOperator)(QDataStream &, void *);
+ static void registerStreamOperators(const char *typeName, SaveOperator saveOp,
+ LoadOperator loadOp);
+ static int registerType(const char *typeName, Destructor destructor,
+ Constructor constructor);
+ static int type(const char *typeName);
+ static const char *typeName(int type);
+ static bool isRegistered(int type);
+ static void *construct(int type, const void *copy = 0);
+ static void destroy(int type, void *data);
+ static void unregisterType(const char *typeName);
+ static bool save(QDataStream &stream, int type, const void *data);
+ static bool load(QDataStream &stream, int type, void *data);
+};
+template <typename T>
+void qMetaTypeDeleteHelper(T *t)
+{
+ delete t;
+}
+template <typename T>
+void *qMetaTypeConstructHelper(const T *t)
+{
+ if (!t)
+ return new T;
+ return new T(*static_cast<const T*>(t));
+}
+template <typename T>
+void qMetaTypeSaveHelper(QDataStream &stream, const T *t)
+{
+ stream << *t;
+}
+template <typename T>
+void qMetaTypeLoadHelper(QDataStream &stream, T *t)
+{
+ stream >> *t;
+}
+template <typename T>
+int qRegisterMetaType(const char *typeName
+ , T * = 0
+)
+{
+ typedef void*(*ConstructPtr)(const T*);
+ ConstructPtr cptr = qMetaTypeConstructHelper<T>;
+ typedef void(*DeletePtr)(T*);
+ DeletePtr dptr = qMetaTypeDeleteHelper<T>;
+ return QMetaType::registerType(typeName, reinterpret_cast<QMetaType::Destructor>(dptr),
+ reinterpret_cast<QMetaType::Constructor>(cptr));
+}
+template <typename T>
+void qRegisterMetaTypeStreamOperators(const char *typeName
+ , T * = 0
+)
+{
+ typedef void(*SavePtr)(QDataStream &, const T *);
+ typedef void(*LoadPtr)(QDataStream &, T *);
+ SavePtr sptr = qMetaTypeSaveHelper<T>;
+ LoadPtr lptr = qMetaTypeLoadHelper<T>;
+ qRegisterMetaType<T>(typeName);
+ QMetaType::registerStreamOperators(typeName, reinterpret_cast<QMetaType::SaveOperator>(sptr),
+ reinterpret_cast<QMetaType::LoadOperator>(lptr));
+}
+template <typename T>
+struct QMetaTypeId
+{
+ enum { Defined = 0 };
+};
+template <typename T>
+struct QMetaTypeId2
+{
+ enum { Defined = QMetaTypeId<T>::Defined };
+ static inline int qt_metatype_id() { return QMetaTypeId<T>::qt_metatype_id(); }
+};
+template <typename T>
+inline int qMetaTypeId(
+ T * = 0
+)
+{
+ return QMetaTypeId2<T>::qt_metatype_id();
+}
+template <typename T>
+inline int qRegisterMetaType(
+ T * dummy = 0
+)
+{
+ return qMetaTypeId(dummy);
+}
+class QString;
+class QByteArray;
+class QChar;
+class QStringList;
+class QBitArray;
+class QDate;
+class QTime;
+class QDateTime;
+class QUrl;
+class QLocale;
+class QRect;
+class QRectF;
+class QSize;
+class QSizeF;
+class QLine;
+class QLineF;
+class QPoint;
+class QPointF;
+class QRegExp;
+class QWidget;
+class QObject;
+class QFont;
+class QPixmap;
+class QBrush;
+class QColor;
+class QPalette;
+class QIcon;
+class QImage;
+class QPolygon;
+class QRegion;
+class QBitmap;
+class QCursor;
+class QSizePolicy;
+class QKeySequence;
+class QPen;
+class QTextLength;
+class QTextFormat;
+class QMatrix;
+class QTransform;
+ template<> struct QMetaTypeId2<QString> { enum { Defined = 1, MetaType = QMetaType::QString }; static inline int qt_metatype_id() { return QMetaType::QString; } };
+ template<> struct QMetaTypeId2<int> { enum { Defined = 1, MetaType = QMetaType::Int }; static inline int qt_metatype_id() { return QMetaType::Int; } };
+ template<> struct QMetaTypeId2<uint> { enum { Defined = 1, MetaType = QMetaType::UInt }; static inline int qt_metatype_id() { return QMetaType::UInt; } };
+ template<> struct QMetaTypeId2<bool> { enum { Defined = 1, MetaType = QMetaType::Bool }; static inline int qt_metatype_id() { return QMetaType::Bool; } };
+ template<> struct QMetaTypeId2<double> { enum { Defined = 1, MetaType = QMetaType::Double }; static inline int qt_metatype_id() { return QMetaType::Double; } };
+ template<> struct QMetaTypeId2<QByteArray> { enum { Defined = 1, MetaType = QMetaType::QByteArray }; static inline int qt_metatype_id() { return QMetaType::QByteArray; } };
+ template<> struct QMetaTypeId2<QChar> { enum { Defined = 1, MetaType = QMetaType::QChar }; static inline int qt_metatype_id() { return QMetaType::QChar; } };
+ template<> struct QMetaTypeId2<long> { enum { Defined = 1, MetaType = QMetaType::Long }; static inline int qt_metatype_id() { return QMetaType::Long; } };
+ template<> struct QMetaTypeId2<short> { enum { Defined = 1, MetaType = QMetaType::Short }; static inline int qt_metatype_id() { return QMetaType::Short; } };
+ template<> struct QMetaTypeId2<char> { enum { Defined = 1, MetaType = QMetaType::Char }; static inline int qt_metatype_id() { return QMetaType::Char; } };
+ template<> struct QMetaTypeId2<ulong> { enum { Defined = 1, MetaType = QMetaType::ULong }; static inline int qt_metatype_id() { return QMetaType::ULong; } };
+ template<> struct QMetaTypeId2<ushort> { enum { Defined = 1, MetaType = QMetaType::UShort }; static inline int qt_metatype_id() { return QMetaType::UShort; } };
+ template<> struct QMetaTypeId2<uchar> { enum { Defined = 1, MetaType = QMetaType::UChar }; static inline int qt_metatype_id() { return QMetaType::UChar; } };
+ template<> struct QMetaTypeId2<float> { enum { Defined = 1, MetaType = QMetaType::Float }; static inline int qt_metatype_id() { return QMetaType::Float; } };
+ template<> struct QMetaTypeId2<QObject *> { enum { Defined = 1, MetaType = QMetaType::QObjectStar }; static inline int qt_metatype_id() { return QMetaType::QObjectStar; } };
+ template<> struct QMetaTypeId2<QWidget *> { enum { Defined = 1, MetaType = QMetaType::QWidgetStar }; static inline int qt_metatype_id() { return QMetaType::QWidgetStar; } };
+ template<> struct QMetaTypeId2<void *> { enum { Defined = 1, MetaType = QMetaType::VoidStar }; static inline int qt_metatype_id() { return QMetaType::VoidStar; } };
+ template<> struct QMetaTypeId2<qlonglong> { enum { Defined = 1, MetaType = QMetaType::LongLong }; static inline int qt_metatype_id() { return QMetaType::LongLong; } };
+ template<> struct QMetaTypeId2<qulonglong> { enum { Defined = 1, MetaType = QMetaType::ULongLong }; static inline int qt_metatype_id() { return QMetaType::ULongLong; } };
+ template<> struct QMetaTypeId2<QStringList> { enum { Defined = 1, MetaType = QMetaType::QStringList }; static inline int qt_metatype_id() { return QMetaType::QStringList; } };
+ template<> struct QMetaTypeId2<QBitArray> { enum { Defined = 1, MetaType = QMetaType::QBitArray }; static inline int qt_metatype_id() { return QMetaType::QBitArray; } };
+ template<> struct QMetaTypeId2<QDate> { enum { Defined = 1, MetaType = QMetaType::QDate }; static inline int qt_metatype_id() { return QMetaType::QDate; } };
+ template<> struct QMetaTypeId2<QTime> { enum { Defined = 1, MetaType = QMetaType::QTime }; static inline int qt_metatype_id() { return QMetaType::QTime; } };
+ template<> struct QMetaTypeId2<QDateTime> { enum { Defined = 1, MetaType = QMetaType::QDateTime }; static inline int qt_metatype_id() { return QMetaType::QDateTime; } };
+ template<> struct QMetaTypeId2<QUrl> { enum { Defined = 1, MetaType = QMetaType::QUrl }; static inline int qt_metatype_id() { return QMetaType::QUrl; } };
+ template<> struct QMetaTypeId2<QLocale> { enum { Defined = 1, MetaType = QMetaType::QLocale }; static inline int qt_metatype_id() { return QMetaType::QLocale; } };
+ template<> struct QMetaTypeId2<QRect> { enum { Defined = 1, MetaType = QMetaType::QRect }; static inline int qt_metatype_id() { return QMetaType::QRect; } };
+ template<> struct QMetaTypeId2<QRectF> { enum { Defined = 1, MetaType = QMetaType::QRectF }; static inline int qt_metatype_id() { return QMetaType::QRectF; } };
+ template<> struct QMetaTypeId2<QSize> { enum { Defined = 1, MetaType = QMetaType::QSize }; static inline int qt_metatype_id() { return QMetaType::QSize; } };
+ template<> struct QMetaTypeId2<QSizeF> { enum { Defined = 1, MetaType = QMetaType::QSizeF }; static inline int qt_metatype_id() { return QMetaType::QSizeF; } };
+ template<> struct QMetaTypeId2<QLine> { enum { Defined = 1, MetaType = QMetaType::QLine }; static inline int qt_metatype_id() { return QMetaType::QLine; } };
+ template<> struct QMetaTypeId2<QLineF> { enum { Defined = 1, MetaType = QMetaType::QLineF }; static inline int qt_metatype_id() { return QMetaType::QLineF; } };
+ template<> struct QMetaTypeId2<QPoint> { enum { Defined = 1, MetaType = QMetaType::QPoint }; static inline int qt_metatype_id() { return QMetaType::QPoint; } };
+ template<> struct QMetaTypeId2<QPointF> { enum { Defined = 1, MetaType = QMetaType::QPointF }; static inline int qt_metatype_id() { return QMetaType::QPointF; } };
+ template<> struct QMetaTypeId2<QRegExp> { enum { Defined = 1, MetaType = QMetaType::QRegExp }; static inline int qt_metatype_id() { return QMetaType::QRegExp; } };
+ template<> struct QMetaTypeId2<QFont> { enum { Defined = 1, MetaType = QMetaType::QFont }; static inline int qt_metatype_id() { return QMetaType::QFont; } };
+ template<> struct QMetaTypeId2<QPixmap> { enum { Defined = 1, MetaType = QMetaType::QPixmap }; static inline int qt_metatype_id() { return QMetaType::QPixmap; } };
+ template<> struct QMetaTypeId2<QBrush> { enum { Defined = 1, MetaType = QMetaType::QBrush }; static inline int qt_metatype_id() { return QMetaType::QBrush; } };
+ template<> struct QMetaTypeId2<QColor> { enum { Defined = 1, MetaType = QMetaType::QColor }; static inline int qt_metatype_id() { return QMetaType::QColor; } };
+ template<> struct QMetaTypeId2<QPalette> { enum { Defined = 1, MetaType = QMetaType::QPalette }; static inline int qt_metatype_id() { return QMetaType::QPalette; } };
+ template<> struct QMetaTypeId2<QIcon> { enum { Defined = 1, MetaType = QMetaType::QIcon }; static inline int qt_metatype_id() { return QMetaType::QIcon; } };
+ template<> struct QMetaTypeId2<QImage> { enum { Defined = 1, MetaType = QMetaType::QImage }; static inline int qt_metatype_id() { return QMetaType::QImage; } };
+ template<> struct QMetaTypeId2<QPolygon> { enum { Defined = 1, MetaType = QMetaType::QPolygon }; static inline int qt_metatype_id() { return QMetaType::QPolygon; } };
+ template<> struct QMetaTypeId2<QRegion> { enum { Defined = 1, MetaType = QMetaType::QRegion }; static inline int qt_metatype_id() { return QMetaType::QRegion; } };
+ template<> struct QMetaTypeId2<QBitmap> { enum { Defined = 1, MetaType = QMetaType::QBitmap }; static inline int qt_metatype_id() { return QMetaType::QBitmap; } };
+ template<> struct QMetaTypeId2<QCursor> { enum { Defined = 1, MetaType = QMetaType::QCursor }; static inline int qt_metatype_id() { return QMetaType::QCursor; } };
+ template<> struct QMetaTypeId2<QSizePolicy> { enum { Defined = 1, MetaType = QMetaType::QSizePolicy }; static inline int qt_metatype_id() { return QMetaType::QSizePolicy; } };
+ template<> struct QMetaTypeId2<QKeySequence> { enum { Defined = 1, MetaType = QMetaType::QKeySequence }; static inline int qt_metatype_id() { return QMetaType::QKeySequence; } };
+ template<> struct QMetaTypeId2<QPen> { enum { Defined = 1, MetaType = QMetaType::QPen }; static inline int qt_metatype_id() { return QMetaType::QPen; } };
+ template<> struct QMetaTypeId2<QTextLength> { enum { Defined = 1, MetaType = QMetaType::QTextLength }; static inline int qt_metatype_id() { return QMetaType::QTextLength; } };
+ template<> struct QMetaTypeId2<QTextFormat> { enum { Defined = 1, MetaType = QMetaType::QTextFormat }; static inline int qt_metatype_id() { return QMetaType::QTextFormat; } };
+ template<> struct QMetaTypeId2<QMatrix> { enum { Defined = 1, MetaType = QMetaType::QMatrix }; static inline int qt_metatype_id() { return QMetaType::QMatrix; } };
+ template<> struct QMetaTypeId2<QTransform> { enum { Defined = 1, MetaType = QMetaType::QTransform }; static inline int qt_metatype_id() { return QMetaType::QTransform; } };
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QBitArray;
+class QDataStream;
+class QDate;
+class QDateTime;
+class QLine;
+class QLineF;
+class QLocale;
+class QMatrix;
+class QTransform;
+class QStringList;
+class QTime;
+class QPoint;
+class QPointF;
+class QSize;
+class QSizeF;
+class QRect;
+class QRectF;
+class QRegExp;
+class QTextFormat;
+class QTextLength;
+class QUrl;
+class QVariant;
+class QVariantComparisonHelper;
+template <typename T>
+inline QVariant qVariantFromValue(const T &);
+template <typename T>
+inline void qVariantSetValue(QVariant &, const T &);
+template<typename T>
+inline T qVariantValue(const QVariant &);
+template<typename T>
+inline bool qVariantCanConvert(const QVariant &);
+class __attribute__((visibility("default"))) QVariant
+{
+ public:
+ enum Type {
+ Invalid = 0,
+ Bool = 1,
+ Int = 2,
+ UInt = 3,
+ LongLong = 4,
+ ULongLong = 5,
+ Double = 6,
+ Char = 7,
+ Map = 8,
+ List = 9,
+ String = 10,
+ StringList = 11,
+ ByteArray = 12,
+ BitArray = 13,
+ Date = 14,
+ Time = 15,
+ DateTime = 16,
+ Url = 17,
+ Locale = 18,
+ Rect = 19,
+ RectF = 20,
+ Size = 21,
+ SizeF = 22,
+ Line = 23,
+ LineF = 24,
+ Point = 25,
+ PointF = 26,
+ RegExp = 27,
+ Hash = 28,
+ LastCoreType = Hash,
+ Font = 64,
+ Pixmap = 65,
+ Brush = 66,
+ Color = 67,
+ Palette = 68,
+ Icon = 69,
+ Image = 70,
+ Polygon = 71,
+ Region = 72,
+ Bitmap = 73,
+ Cursor = 74,
+ SizePolicy = 75,
+ KeySequence = 76,
+ Pen = 77,
+ TextLength = 78,
+ TextFormat = 79,
+ Matrix = 80,
+ Transform = 81,
+ LastGuiType = Transform,
+ UserType = 127,
+ LastType = 0xffffffff
+ };
+ inline QVariant();
+ ~QVariant();
+ QVariant(Type type);
+ QVariant(int typeOrUserType, const void *copy);
+ QVariant(const QVariant &other);
+ QVariant(QDataStream &s);
+ QVariant(int i);
+ QVariant(uint ui);
+ QVariant(qlonglong ll);
+ QVariant(qulonglong ull);
+ QVariant(bool b);
+ QVariant(double d);
+ __attribute__ ((__deprecated__)) QVariant(const char *str);
+ QVariant(const QByteArray &bytearray);
+ QVariant(const QBitArray &bitarray);
+ QVariant(const QString &string);
+ QVariant(const QLatin1String &string);
+ QVariant(const QStringList &stringlist);
+ QVariant(const QChar &qchar);
+ QVariant(const QDate &date);
+ QVariant(const QTime &time);
+ QVariant(const QDateTime &datetime);
+ QVariant(const QList<QVariant> &list);
+ QVariant(const QMap<QString,QVariant> &map);
+ QVariant(const QHash<QString,QVariant> &hash);
+ QVariant(const QSize &size);
+ QVariant(const QSizeF &size);
+ QVariant(const QPoint &pt);
+ QVariant(const QPointF &pt);
+ QVariant(const QLine &line);
+ QVariant(const QLineF &line);
+ QVariant(const QRect &rect);
+ QVariant(const QRectF &rect);
+ QVariant(const QUrl &url);
+ QVariant(const QLocale &locale);
+ QVariant(const QRegExp ®Exp);
+ QVariant(Qt::GlobalColor color);
+ QVariant& operator=(const QVariant &other);
+ Type type() const;
+ int userType() const;
+ const char *typeName() const;
+ bool canConvert(Type t) const;
+ bool convert(Type t);
+ inline bool isValid() const;
+ bool isNull() const;
+ void clear();
+ void detach();
+ inline bool isDetached() const;
+ int toInt(bool *ok = 0) const;
+ uint toUInt(bool *ok = 0) const;
+ qlonglong toLongLong(bool *ok = 0) const;
+ qulonglong toULongLong(bool *ok = 0) const;
+ bool toBool() const;
+ double toDouble(bool *ok = 0) const;
+ QByteArray toByteArray() const;
+ QBitArray toBitArray() const;
+ QString toString() const;
+ QStringList toStringList() const;
+ QChar toChar() const;
+ QDate toDate() const;
+ QTime toTime() const;
+ QDateTime toDateTime() const;
+ QList<QVariant> toList() const;
+ QMap<QString, QVariant> toMap() const;
+ QHash<QString, QVariant> toHash() const;
+ QPoint toPoint() const;
+ QPointF toPointF() const;
+ QRect toRect() const;
+ QSize toSize() const;
+ QSizeF toSizeF() const;
+ QLine toLine() const;
+ QLineF toLineF() const;
+ QRectF toRectF() const;
+ QUrl toUrl() const;
+ QLocale toLocale() const;
+ QRegExp toRegExp() const;
+ void load(QDataStream &ds);
+ void save(QDataStream &ds) const;
+ static const char *typeToName(Type type);
+ static Type nameToType(const char *name);
+ void *data();
+ const void *constData() const;
+ inline const void *data() const { return constData(); }
+ template<typename T>
+ inline void setValue(const T &value);
+ template<typename T>
+ inline T value() const
+ { return qVariantValue<T>(*this); }
+ template<typename T>
+ static inline QVariant fromValue(const T &value)
+ { return qVariantFromValue(value); }
+ template<typename T>
+ bool canConvert() const
+ { return qVariantCanConvert<T>(*this); }
+ public:
+ struct PrivateShared
+ {
+ inline PrivateShared(void *v) : ptr(v), ref(1) { }
+ void *ptr;
+ QAtomicInt ref;
+ };
+ struct Private
+ {
+ inline Private(): type(Invalid), is_shared(false), is_null(true) { data.ptr = 0; }
+ inline Private(const Private &other)
+ : data(other.data), type(other.type),
+ is_shared(other.is_shared), is_null(other.is_null)
+ {}
+ union Data
+ {
+ char c;
+ int i;
+ uint u;
+ bool b;
+ double d;
+ qlonglong ll;
+ qulonglong ull;
+ void *ptr;
+ PrivateShared *shared;
+ } data;
+ uint type : 30;
+ uint is_shared : 1;
+ uint is_null : 1;
+ };
+ public:
+ typedef void (*f_construct)(Private *, const void *);
+ typedef void (*f_clear)(Private *);
+ typedef bool (*f_null)(const Private *);
+ typedef void (*f_load)(Private *, QDataStream &);
+ typedef void (*f_save)(const Private *, QDataStream &);
+ typedef bool (*f_compare)(const Private *, const Private *);
+ typedef bool (*f_convert)(const QVariant::Private *d, Type t, void *, bool *);
+ typedef bool (*f_canConvert)(const QVariant::Private *d, Type t);
+ typedef void (*f_debugStream)(QDebug, const QVariant &);
+ struct Handler {
+ f_construct construct;
+ f_clear clear;
+ f_null isNull;
+ f_load load;
+ f_save save;
+ f_compare compare;
+ f_convert convert;
+ f_canConvert canConvert;
+ f_debugStream debugStream;
+ };
+ inline bool operator==(const QVariant &v) const
+ { return cmp(v); }
+ inline bool operator!=(const QVariant &v) const
+ { return !cmp(v); }
+protected:
+ friend inline bool qvariant_cast_helper(const QVariant &, QVariant::Type, void *);
+ friend int qRegisterGuiVariant();
+ friend int qUnregisterGuiVariant();
+ friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &);
+ friend __attribute__((visibility("default"))) QDebug operator<<(QDebug, const QVariant &);
+ Private d;
+ static const Handler *handler;
+ void create(int type, const void *copy);
+ bool cmp(const QVariant &other) const;
+private:
+ inline QVariant(void *) { qt_noop(); }
+ inline QVariant(bool, int) { qt_noop(); }
+public:
+ typedef Private DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+typedef QList<QVariant> QVariantList;
+typedef QMap<QString, QVariant> QVariantMap;
+typedef QHash<QString, QVariant> QVariantHash;
+inline bool qvariant_cast_helper(const QVariant &v, QVariant::Type tp, void *ptr)
+{ return QVariant::handler->convert(&v.d, tp, ptr, 0); }
+template <typename T>
+inline QVariant qVariantFromValue(const T &t)
+{
+ return QVariant(qMetaTypeId<T>(reinterpret_cast<T *>(0)), &t);
+}
+template <>
+inline QVariant qVariantFromValue(const QVariant &t) { return t; }
+template <typename T>
+inline void qVariantSetValue(QVariant &v, const T &t)
+{
+ v = QVariant(qMetaTypeId<T>(reinterpret_cast<T *>(0)), &t);
+}
+inline QVariant::QVariant() {}
+inline bool QVariant::isValid() const { return d.type != Invalid; }
+template<typename T>
+inline void QVariant::setValue(const T &avalue)
+{ qVariantSetValue(*this, avalue); }
+__attribute__((visibility("default"))) QDataStream& operator>> (QDataStream& s, QVariant& p);
+__attribute__((visibility("default"))) QDataStream& operator<< (QDataStream& s, const QVariant& p);
+__attribute__((visibility("default"))) QDataStream& operator>> (QDataStream& s, QVariant::Type& p);
+__attribute__((visibility("default"))) QDataStream& operator<< (QDataStream& s, const QVariant::Type p);
+inline bool QVariant::isDetached() const
+{ return !d.is_shared || d.data.shared->ref == 1; }
+class QVariantComparisonHelper
+{
+public:
+ inline QVariantComparisonHelper(const QVariant &var)
+ : v(&var) {}
+private:
+ friend inline bool operator==(const QVariant &, const QVariantComparisonHelper &);
+ const QVariant *v;
+};
+inline bool operator==(const QVariant &v1, const QVariantComparisonHelper &v2)
+{
+ return v1.cmp(*v2.v);
+}
+inline bool operator!=(const QVariant &v1, const QVariantComparisonHelper &v2)
+{
+ return !operator==(v1, v2);
+}
+template<typename T> T qvariant_cast(const QVariant &v)
+{
+ const int vid = qMetaTypeId<T>(static_cast<T *>(0));
+ if (vid == v.userType())
+ return *reinterpret_cast<const T *>(v.constData());
+ if (vid < int(QMetaType::User)) {
+ T t;
+ if (qvariant_cast_helper(v, QVariant::Type(vid), &t))
+ return t;
+ }
+ return T();
+}
+template<typename T>
+inline T qVariantValue(const QVariant &variant)
+{ return qvariant_cast<T>(variant); }
+template<typename T>
+inline bool qVariantCanConvert(const QVariant &variant)
+{
+ return variant.canConvert(static_cast<QVariant::Type>(
+ qMetaTypeId<T>(static_cast<T *>(0))));
+}
+template <> inline bool qIsDetached<QVariant>(QVariant &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QVariant>(QVariant &value1, QVariant &value2) { const QVariant::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+template <> class QTypeInfo<QVariant> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QVariant)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QVariant"; } };
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QVariant &);
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QVariant::Type);
+ template<> struct QMetaTypeId2<QVariantList> { enum { Defined = 1, MetaType = QMetaType::QVariantList }; static inline int qt_metatype_id() { return QMetaType::QVariantList; } };
+ template<> struct QMetaTypeId2<QVariantMap> { enum { Defined = 1, MetaType = QMetaType::QVariantMap }; static inline int qt_metatype_id() { return QMetaType::QVariantMap; } };
+ template<> struct QMetaTypeId2<QVariantHash> { enum { Defined = 1, MetaType = QMetaType::QVariantHash }; static inline int qt_metatype_id() { return QMetaType::QVariantHash; } };
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QUrl;
+class QMimeDataPrivate;
+class __attribute__((visibility("default"))) QMimeData : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+public:
+ QMimeData();
+ ~QMimeData();
+ QList<QUrl> urls() const;
+ void setUrls(const QList<QUrl> &urls);
+ bool hasUrls() const;
+ QString text() const;
+ void setText(const QString &text);
+ bool hasText() const;
+ QString html() const;
+ void setHtml(const QString &html);
+ bool hasHtml() const;
+ QVariant imageData() const;
+ void setImageData(const QVariant &image);
+ bool hasImage() const;
+ QVariant colorData() const;
+ void setColorData(const QVariant &color);
+ bool hasColor() const;
+ QByteArray data(const QString &mimetype) const;
+ void setData(const QString &mimetype, const QByteArray &data);
+ void removeFormat(const QString &mimetype);
+ virtual bool hasFormat(const QString &mimetype) const;
+ virtual QStringList formats() const;
+ void clear();
+protected:
+ virtual QVariant retrieveData(const QString &mimetype,
+ QVariant::Type preferredType) const;
+private:
+ QMimeData(const QMimeData &); QMimeData &operator=(const QMimeData &);
+ inline QMimeDataPrivate* d_func() { return reinterpret_cast<QMimeDataPrivate *>(d_ptr); } inline const QMimeDataPrivate* d_func() const { return reinterpret_cast<const QMimeDataPrivate *>(d_ptr); } friend class QMimeDataPrivate;
+};
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class __attribute__((visibility("default"))) QMimeSource
+{
+public:
+ virtual ~QMimeSource();
+ virtual const char* format(int n = 0) const = 0;
+ virtual bool provides(const char*) const;
+ virtual QByteArray encodedData(const char*) const = 0;
+};
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QMimeData;
+class QDragPrivate;
+class QWidget;
+class QPixmap;
+class QPoint;
+class QDragManager;
+class __attribute__((visibility("default"))) QDrag : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+ inline QDragPrivate* d_func() { return reinterpret_cast<QDragPrivate *>(d_ptr); } inline const QDragPrivate* d_func() const { return reinterpret_cast<const QDragPrivate *>(d_ptr); } friend class QDragPrivate;
+public:
+ explicit QDrag(QWidget *dragSource);
+ ~QDrag();
+ void setMimeData(QMimeData *data);
+ QMimeData *mimeData() const;
+ void setPixmap(const QPixmap &);
+ QPixmap pixmap() const;
+ void setHotSpot(const QPoint &hotspot);
+ QPoint hotSpot() const;
+ QWidget *source() const;
+ QWidget *target() const;
+ Qt::DropAction start(Qt::DropActions supportedActions = Qt::CopyAction);
+ Qt::DropAction exec(Qt::DropActions supportedActions = Qt::MoveAction);
+ Qt::DropAction exec(Qt::DropActions supportedActions, Qt::DropAction defaultAction);
+ void setDragCursor(const QPixmap &cursor, Qt::DropAction action);
+protected:
+ void actionChanged(Qt::DropAction action);
+ void targetChanged(QWidget *newTarget);
+private:
+ friend class QDragManager;
+ QDrag(const QDrag &); QDrag &operator=(const QDrag &);
+};
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QAction;
+class __attribute__((visibility("default"))) QInputEvent : public QEvent
+{
+public:
+ QInputEvent(Type type, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
+ ~QInputEvent();
+ inline Qt::KeyboardModifiers modifiers() const { return modState; }
+protected:
+ Qt::KeyboardModifiers modState;
+};
+class __attribute__((visibility("default"))) QMouseEvent : public QInputEvent
+{
+public:
+ QMouseEvent(Type type, const QPoint &pos, Qt::MouseButton button,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers);
+ QMouseEvent(Type type, const QPoint &pos, const QPoint &globalPos,
+ Qt::MouseButton button, Qt::MouseButtons buttons,
+ Qt::KeyboardModifiers modifiers);
+ ~QMouseEvent();
+ inline const QPoint &pos() const { return p; }
+ inline const QPoint &globalPos() const { return g; }
+ inline int x() const { return p.x(); }
+ inline int y() const { return p.y(); }
+ inline int globalX() const { return g.x(); }
+ inline int globalY() const { return g.y(); }
+ inline Qt::MouseButton button() const { return b; }
+ inline Qt::MouseButtons buttons() const { return mouseState; }
+ static QMouseEvent *createExtendedMouseEvent(Type type, const QPointF &pos,
+ const QPoint &globalPos, Qt::MouseButton button,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers);
+ inline bool hasExtendedInfo() const { return reinterpret_cast<const QMouseEvent *>(d) == this; }
+ QPointF posF() const;
+protected:
+ QPoint p, g;
+ Qt::MouseButton b;
+ Qt::MouseButtons mouseState;
+};
+class __attribute__((visibility("default"))) QHoverEvent : public QEvent
+{
+public:
+ QHoverEvent(Type type, const QPoint &pos, const QPoint &oldPos);
+ ~QHoverEvent();
+ inline const QPoint &pos() const { return p; }
+ inline const QPoint &oldPos() const { return op; }
+protected:
+ QPoint p, op;
+};
+class __attribute__((visibility("default"))) QWheelEvent : public QInputEvent
+{
+public:
+ QWheelEvent(const QPoint &pos, int delta,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers,
+ Qt::Orientation orient = Qt::Vertical);
+ QWheelEvent(const QPoint &pos, const QPoint& globalPos, int delta,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers,
+ Qt::Orientation orient = Qt::Vertical);
+ ~QWheelEvent();
+ inline int delta() const { return d; }
+ inline const QPoint &pos() const { return p; }
+ inline const QPoint &globalPos() const { return g; }
+ inline int x() const { return p.x(); }
+ inline int y() const { return p.y(); }
+ inline int globalX() const { return g.x(); }
+ inline int globalY() const { return g.y(); }
+ inline Qt::MouseButtons buttons() const { return mouseState; }
+ Qt::Orientation orientation() const { return o; }
+protected:
+ QPoint p;
+ QPoint g;
+ int d;
+ Qt::MouseButtons mouseState;
+ Qt::Orientation o;
+};
+class __attribute__((visibility("default"))) QTabletEvent : public QInputEvent
+{
+public:
+ enum TabletDevice { NoDevice, Puck, Stylus, Airbrush, FourDMouse,
+ XFreeEraser , RotationStylus };
+ enum PointerType { UnknownPointer, Pen, Cursor, Eraser };
+ QTabletEvent(Type t, const QPoint &pos, const QPoint &globalPos, const QPointF &hiResGlobalPos,
+ int device, int pointerType, qreal pressure, int xTilt, int yTilt,
+ qreal tangentialPressure, qreal rotation, int z,
+ Qt::KeyboardModifiers keyState, qint64 uniqueID);
+ ~QTabletEvent();
+ inline const QPoint &pos() const { return mPos; }
+ inline const QPoint &globalPos() const { return mGPos; }
+ inline const QPointF &hiResGlobalPos() const { return mHiResGlobalPos; }
+ inline int x() const { return mPos.x(); }
+ inline int y() const { return mPos.y(); }
+ inline int globalX() const { return mGPos.x(); }
+ inline int globalY() const { return mGPos.y(); }
+ inline qreal hiResGlobalX() const { return mHiResGlobalPos.x(); }
+ inline qreal hiResGlobalY() const { return mHiResGlobalPos.y(); }
+ inline TabletDevice device() const { return TabletDevice(mDev); }
+ inline PointerType pointerType() const { return PointerType(mPointerType); }
+ inline qint64 uniqueId() const { return mUnique; }
+ inline qreal pressure() const { return mPress; }
+ inline int z() const { return mZ; }
+ inline qreal tangentialPressure() const { return mTangential; }
+ inline qreal rotation() const { return mRot; }
+ inline int xTilt() const { return mXT; }
+ inline int yTilt() const { return mYT; }
+protected:
+ QPoint mPos, mGPos;
+ QPointF mHiResGlobalPos;
+ int mDev, mPointerType, mXT, mYT, mZ;
+ qreal mPress, mTangential, mRot;
+ qint64 mUnique;
+ void *mExtra;
+};
+class __attribute__((visibility("default"))) QKeyEvent : public QInputEvent
+{
+public:
+ QKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers, const QString& text = QString(),
+ bool autorep = false, ushort count = 1);
+ ~QKeyEvent();
+ int key() const { return k; }
+ bool matches(QKeySequence::StandardKey key) const;
+ Qt::KeyboardModifiers modifiers() const;
+ inline QString text() const { return txt; }
+ inline bool isAutoRepeat() const { return autor; }
+ inline int count() const { return int(c); }
+ static QKeyEvent *createExtendedKeyEvent(Type type, int key, Qt::KeyboardModifiers modifiers,
+ quint32 nativeScanCode, quint32 nativeVirtualKey,
+ quint32 nativeModifiers,
+ const QString& text = QString(), bool autorep = false,
+ ushort count = 1);
+ inline bool hasExtendedInfo() const { return reinterpret_cast<const QKeyEvent*>(d) == this; }
+ quint32 nativeScanCode() const;
+ quint32 nativeVirtualKey() const;
+ quint32 nativeModifiers() const;
+protected:
+ QString txt;
+ int k;
+ ushort c;
+ uint autor:1;
+};
+class __attribute__((visibility("default"))) QFocusEvent : public QEvent
+{
+public:
+ QFocusEvent(Type type, Qt::FocusReason reason=Qt::OtherFocusReason);
+ ~QFocusEvent();
+ inline bool gotFocus() const { return type() == FocusIn; }
+ inline bool lostFocus() const { return type() == FocusOut; }
+ Qt::FocusReason reason();
+ Qt::FocusReason reason() const;
+private:
+ Qt::FocusReason m_reason;
+};
+class __attribute__((visibility("default"))) QPaintEvent : public QEvent
+{
+public:
+ QPaintEvent(const QRegion& paintRegion);
+ QPaintEvent(const QRect &paintRect);
+ ~QPaintEvent();
+ inline const QRect &rect() const { return m_rect; }
+ inline const QRegion ®ion() const { return m_region; }
+protected:
+ friend class QApplication;
+ friend class QCoreApplication;
+ QRect m_rect;
+ QRegion m_region;
+ bool m_erased;
+};
+class QUpdateLaterEvent : public QEvent
+{
+public:
+ QUpdateLaterEvent(const QRegion& paintRegion);
+ ~QUpdateLaterEvent();
+ inline const QRegion ®ion() const { return m_region; }
+protected:
+ QRegion m_region;
+};
+class __attribute__((visibility("default"))) QMoveEvent : public QEvent
+{
+public:
+ QMoveEvent(const QPoint &pos, const QPoint &oldPos);
+ ~QMoveEvent();
+ inline const QPoint &pos() const { return p; }
+ inline const QPoint &oldPos() const { return oldp;}
+protected:
+ QPoint p, oldp;
+ friend class QApplication;
+ friend class QCoreApplication;
+};
+class __attribute__((visibility("default"))) QResizeEvent : public QEvent
+{
+public:
+ QResizeEvent(const QSize &size, const QSize &oldSize);
+ ~QResizeEvent();
+ inline const QSize &size() const { return s; }
+ inline const QSize &oldSize()const { return olds;}
+protected:
+ QSize s, olds;
+ friend class QApplication;
+ friend class QCoreApplication;
+};
+class __attribute__((visibility("default"))) QCloseEvent : public QEvent
+{
+public:
+ QCloseEvent();
+ ~QCloseEvent();
+};
+class __attribute__((visibility("default"))) QIconDragEvent : public QEvent
+{
+public:
+ QIconDragEvent();
+ ~QIconDragEvent();
+};
+class __attribute__((visibility("default"))) QShowEvent : public QEvent
+{
+public:
+ QShowEvent();
+ ~QShowEvent();
+};
+class __attribute__((visibility("default"))) QHideEvent : public QEvent
+{
+public:
+ QHideEvent();
+ ~QHideEvent();
+};
+class __attribute__((visibility("default"))) QContextMenuEvent : public QInputEvent
+{
+public:
+ enum Reason { Mouse, Keyboard, Other };
+ QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos,
+ Qt::KeyboardModifiers modifiers);
+ QContextMenuEvent(Reason reason, const QPoint &pos, const QPoint &globalPos);
+ QContextMenuEvent(Reason reason, const QPoint &pos);
+ ~QContextMenuEvent();
+ inline int x() const { return p.x(); }
+ inline int y() const { return p.y(); }
+ inline int globalX() const { return gp.x(); }
+ inline int globalY() const { return gp.y(); }
+ inline const QPoint& pos() const { return p; }
+ inline const QPoint& globalPos() const { return gp; }
+ inline Reason reason() const { return Reason(reas); }
+protected:
+ QPoint p;
+ QPoint gp;
+ uint reas : 8;
+};
+class __attribute__((visibility("default"))) QInputMethodEvent : public QEvent
+{
+public:
+ enum AttributeType {
+ TextFormat,
+ Cursor,
+ Language,
+ Ruby
+ };
+ class Attribute {
+ public:
+ Attribute(AttributeType t, int s, int l, QVariant val) : type(t), start(s), length(l), value(val) {}
+ AttributeType type;
+ int start;
+ int length;
+ QVariant value;
+ };
+ QInputMethodEvent();
+ QInputMethodEvent(const QString &preeditText, const QList<Attribute> &attributes);
+ void setCommitString(const QString &commitString, int replaceFrom = 0, int replaceLength = 0);
+ inline const QList<Attribute> &attributes() const { return attrs; }
+ inline const QString &preeditString() const { return preedit; }
+ inline const QString &commitString() const { return commit; }
+ inline int replacementStart() const { return replace_from; }
+ inline int replacementLength() const { return replace_length; }
+ QInputMethodEvent(const QInputMethodEvent &other);
+private:
+ QString preedit;
+ QList<Attribute> attrs;
+ QString commit;
+ int replace_from;
+ int replace_length;
+};
+class QMimeData;
+class __attribute__((visibility("default"))) QDropEvent : public QEvent
+ , public QMimeSource
+{
+public:
+ QDropEvent(const QPoint& pos, Qt::DropActions actions, const QMimeData *data,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = Drop);
+ ~QDropEvent();
+ inline const QPoint &pos() const { return p; }
+ inline Qt::MouseButtons mouseButtons() const { return mouseState; }
+ inline Qt::KeyboardModifiers keyboardModifiers() const { return modState; }
+ inline Qt::DropActions possibleActions() const { return act; }
+ inline Qt::DropAction proposedAction() const { return default_action; }
+ inline void acceptProposedAction() { drop_action = default_action; accept(); }
+ inline Qt::DropAction dropAction() const { return drop_action; }
+ void setDropAction(Qt::DropAction action);
+ QWidget* source() const;
+ inline const QMimeData *mimeData() const { return mdata; }
+ const char* format(int n = 0) const;
+ QByteArray encodedData(const char*) const;
+ bool provides(const char*) const;
+protected:
+ friend class QApplication;
+ QPoint p;
+ Qt::MouseButtons mouseState;
+ Qt::KeyboardModifiers modState;
+ Qt::DropActions act;
+ Qt::DropAction drop_action;
+ Qt::DropAction default_action;
+ const QMimeData *mdata;
+ mutable QList<QByteArray> fmts;
+};
+class __attribute__((visibility("default"))) QDragMoveEvent : public QDropEvent
+{
+public:
+ QDragMoveEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = DragMove);
+ ~QDragMoveEvent();
+ inline QRect answerRect() const { return rect; }
+ inline void accept() { QDropEvent::accept(); }
+ inline void ignore() { QDropEvent::ignore(); }
+ inline void accept(const QRect & r) { accept(); rect = r; }
+ inline void ignore(const QRect & r) { ignore(); rect = r; }
+protected:
+ friend class QApplication;
+ QRect rect;
+};
+class __attribute__((visibility("default"))) QDragEnterEvent : public QDragMoveEvent
+{
+public:
+ QDragEnterEvent(const QPoint &pos, Qt::DropActions actions, const QMimeData *data,
+ Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers);
+ ~QDragEnterEvent();
+};
+class __attribute__((visibility("default"))) QDragResponseEvent : public QEvent
+{
+public:
+ QDragResponseEvent(bool accepted);
+ ~QDragResponseEvent();
+ inline bool dragAccepted() const { return a; }
+protected:
+ bool a;
+};
+class __attribute__((visibility("default"))) QDragLeaveEvent : public QEvent
+{
+public:
+ QDragLeaveEvent();
+ ~QDragLeaveEvent();
+};
+class __attribute__((visibility("default"))) QHelpEvent : public QEvent
+{
+public:
+ QHelpEvent(Type type, const QPoint &pos, const QPoint &globalPos);
+ ~QHelpEvent();
+ inline int x() const { return p.x(); }
+ inline int y() const { return p.y(); }
+ inline int globalX() const { return gp.x(); }
+ inline int globalY() const { return gp.y(); }
+ inline const QPoint& pos() const { return p; }
+ inline const QPoint& globalPos() const { return gp; }
+private:
+ QPoint p;
+ QPoint gp;
+};
+class __attribute__((visibility("default"))) QStatusTipEvent : public QEvent
+{
+public:
+ QStatusTipEvent(const QString &tip);
+ ~QStatusTipEvent();
+ inline QString tip() const { return s; }
+private:
+ QString s;
+};
+class __attribute__((visibility("default"))) QWhatsThisClickedEvent : public QEvent
+{
+public:
+ QWhatsThisClickedEvent(const QString &href);
+ ~QWhatsThisClickedEvent();
+ inline QString href() const { return s; }
+private:
+ QString s;
+};
+class __attribute__((visibility("default"))) QActionEvent : public QEvent
+{
+ QAction *act, *bef;
+public:
+ QActionEvent(int type, QAction *action, QAction *before = 0);
+ ~QActionEvent();
+ inline QAction *action() const { return act; }
+ inline QAction *before() const { return bef; }
+};
+class __attribute__((visibility("default"))) QFileOpenEvent : public QEvent
+{
+public:
+ QFileOpenEvent(const QString &file);
+ ~QFileOpenEvent();
+ inline QString file() const { return f; }
+private:
+ QString f;
+};
+class __attribute__((visibility("default"))) QToolBarChangeEvent : public QEvent
+{
+public:
+ QToolBarChangeEvent(bool t);
+ ~QToolBarChangeEvent();
+ inline bool toggle() const { return tog; }
+private:
+ uint tog : 1;
+};
+class __attribute__((visibility("default"))) QShortcutEvent : public QEvent
+{
+public:
+ QShortcutEvent(const QKeySequence &key, int id, bool ambiguous = false);
+ ~QShortcutEvent();
+ inline const QKeySequence &key() { return sequence; }
+ inline const QKeySequence &key() const { return sequence; }
+ inline int shortcutId() { return sid; }
+ inline int shortcutId() const { return sid; }
+ inline bool isAmbiguous() { return ambig; }
+ inline bool isAmbiguous() const { return ambig; }
+protected:
+ QKeySequence sequence;
+ bool ambig;
+ int sid;
+};
+class __attribute__((visibility("default"))) QClipboardEvent : public QEvent
+{
+public:
+ QClipboardEvent(QEventPrivate *data);
+ ~QClipboardEvent();
+ QEventPrivate *data() { return d; };
+};
+class __attribute__((visibility("default"))) QWindowStateChangeEvent: public QEvent
+{
+public:
+ QWindowStateChangeEvent(Qt::WindowStates aOldState);
+ QWindowStateChangeEvent(Qt::WindowStates aOldState, bool isOverride);
+ ~QWindowStateChangeEvent();
+ inline Qt::WindowStates oldState() const { return ostate; }
+ bool isOverride() const;
+private:
+ Qt::WindowStates ostate;
+};
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QEvent *);
+inline bool operator==(QKeyEvent *e, QKeySequence::StandardKey key){return (e ? e->matches(key) : false);}
+inline bool operator==(QKeySequence::StandardKey key, QKeyEvent *e){return (e ? e->matches(key) : false);}
+typedef struct FT_FaceRec_* FT_Face;
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QFontPrivate;
+class QStringList;
+class QVariant;
+class Q3TextFormatCollection;
+class __attribute__((visibility("default"))) QFont
+{
+ public: static const QMetaObject staticMetaObject; private:
+public:
+ enum StyleHint {
+ Helvetica, SansSerif = Helvetica,
+ Times, Serif = Times,
+ Courier, TypeWriter = Courier,
+ OldEnglish, Decorative = OldEnglish,
+ System,
+ AnyStyle
+ };
+ enum StyleStrategy {
+ PreferDefault = 0x0001,
+ PreferBitmap = 0x0002,
+ PreferDevice = 0x0004,
+ PreferOutline = 0x0008,
+ ForceOutline = 0x0010,
+ PreferMatch = 0x0020,
+ PreferQuality = 0x0040,
+ PreferAntialias = 0x0080,
+ NoAntialias = 0x0100,
+ OpenGLCompatible = 0x0200,
+ NoFontMerging = 0x8000
+ };
+ enum Weight {
+ Light = 25,
+ Normal = 50,
+ DemiBold = 63,
+ Bold = 75,
+ Black = 87
+ };
+ enum Style {
+ StyleNormal,
+ StyleItalic,
+ StyleOblique
+ };
+ enum Stretch {
+ UltraCondensed = 50,
+ ExtraCondensed = 62,
+ Condensed = 75,
+ SemiCondensed = 87,
+ Unstretched = 100,
+ SemiExpanded = 112,
+ Expanded = 125,
+ ExtraExpanded = 150,
+ UltraExpanded = 200
+ };
+ enum Capitalization {
+ MixedCase,
+ AllUppercase,
+ AllLowercase,
+ SmallCaps,
+ Capitalize
+ };
+ enum SpacingType {
+ PercentageSpacing,
+ AbsoluteSpacing
+ };
+ enum ResolveProperties {
+ FamilyResolved = 0x0001,
+ SizeResolved = 0x0002,
+ StyleHintResolved = 0x0004,
+ StyleStrategyResolved = 0x0008,
+ WeightResolved = 0x0010,
+ StyleResolved = 0x0020,
+ UnderlineResolved = 0x0040,
+ OverlineResolved = 0x0080,
+ StrikeOutResolved = 0x0100,
+ FixedPitchResolved = 0x0200,
+ StretchResolved = 0x0400,
+ KerningResolved = 0x0800,
+ CapitalizationResolved = 0x1000,
+ LetterSpacingResolved = 0x2000,
+ WordSpacingResolved = 0x4000,
+ AllPropertiesResolved = 0x7fff
+ };
+ QFont();
+ QFont(const QString &family, int pointSize = -1, int weight = -1, bool italic = false);
+ QFont(const QFont &, QPaintDevice *pd);
+ QFont(const QFont &);
+ ~QFont();
+ QString family() const;
+ void setFamily(const QString &);
+ int pointSize() const;
+ void setPointSize(int);
+ qreal pointSizeF() const;
+ void setPointSizeF(qreal);
+ int pixelSize() const;
+ void setPixelSize(int);
+ int weight() const;
+ void setWeight(int);
+ inline bool bold() const;
+ inline void setBold(bool);
+ void setStyle(Style style);
+ Style style() const;
+ inline bool italic() const;
+ inline void setItalic(bool b);
+ bool underline() const;
+ void setUnderline(bool);
+ bool overline() const;
+ void setOverline(bool);
+ bool strikeOut() const;
+ void setStrikeOut(bool);
+ bool fixedPitch() const;
+ void setFixedPitch(bool);
+ bool kerning() const;
+ void setKerning(bool);
+ StyleHint styleHint() const;
+ StyleStrategy styleStrategy() const;
+ void setStyleHint(StyleHint, StyleStrategy = PreferDefault);
+ void setStyleStrategy(StyleStrategy s);
+ int stretch() const;
+ void setStretch(int);
+ qreal letterSpacing() const;
+ SpacingType letterSpacingType() const;
+ void setLetterSpacing(SpacingType type, qreal spacing);
+ qreal wordSpacing() const;
+ void setWordSpacing(qreal spacing);
+ void setCapitalization(Capitalization);
+ Capitalization capitalization() const;
+ bool rawMode() const;
+ void setRawMode(bool);
+ bool exactMatch() const;
+ QFont &operator=(const QFont &);
+ bool operator==(const QFont &) const;
+ bool operator!=(const QFont &) const;
+ bool operator<(const QFont &) const;
+ operator QVariant() const;
+ bool isCopyOf(const QFont &) const;
+ Qt::HANDLE handle() const;
+ FT_Face freetypeFace() const;
+ void setRawName(const QString &);
+ QString rawName() const;
+ QString key() const;
+ QString toString() const;
+ bool fromString(const QString &);
+ static QString substitute(const QString &);
+ static QStringList substitutes(const QString &);
+ static QStringList substitutions();
+ static void insertSubstitution(const QString&, const QString &);
+ static void insertSubstitutions(const QString&, const QStringList &);
+ static void removeSubstitution(const QString &);
+ static void initialize();
+ static void cleanup();
+ QString defaultFamily() const;
+ QString lastResortFamily() const;
+ QString lastResortFont() const;
+ QFont resolve(const QFont &) const;
+ inline uint resolve() const { return resolve_mask; }
+ inline void resolve(uint mask) { resolve_mask = mask; }
+private:
+ QFont(QFontPrivate *);
+ void detach();
+ friend class QFontPrivate;
+ friend class QFontDialogPrivate;
+ friend class QFontMetrics;
+ friend class QFontMetricsF;
+ friend class QFontInfo;
+ friend class QPainter;
+ friend class QPSPrintEngineFont;
+ friend class QApplication;
+ friend class QWidget;
+ friend class QWidgetPrivate;
+ friend class Q3TextFormatCollection;
+ friend class QTextLayout;
+ friend class QTextEngine;
+ friend class QStackTextEngine;
+ friend class QTextLine;
+ friend struct QScriptLine;
+ friend class QGLContext;
+ friend class QWin32PaintEngine;
+ friend class QAlphaPaintEngine;
+ friend class QPainterPath;
+ friend class QTextItemInt;
+ friend class QPicturePaintEngine;
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QFont &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QFont &);
+ QFontPrivate *d;
+ uint resolve_mask;
+};
+inline bool QFont::bold() const
+{ return weight() > Normal; }
+inline void QFont::setBold(bool enable)
+{ setWeight(enable ? Bold : Normal); }
+inline bool QFont::italic() const
+{
+ return (style() != StyleNormal);
+}
+inline void QFont::setItalic(bool b) {
+ setStyle(b ? StyleItalic : StyleNormal);
+}
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QFont &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QFont &);
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QFont &);
+typedef QtValidLicenseForCoreModule QtCoreModule;
+template <class T> class QSharedDataPointer;
+class __attribute__((visibility("default"))) QSharedData
+{
+public:
+ mutable QAtomicInt ref;
+ inline QSharedData() : ref(0) { }
+ inline QSharedData(const QSharedData &) : ref(0) { }
+private:
+ QSharedData &operator=(const QSharedData &);
+};
+template <class T> class QSharedDataPointer
+{
+public:
+ inline void detach() { if (d && d->ref != 1) detach_helper(); }
+ inline T &operator*() { detach(); return *d; }
+ inline const T &operator*() const { return *d; }
+ inline T *operator->() { detach(); return d; }
+ inline const T *operator->() const { return d; }
+ inline operator T *() { detach(); return d; }
+ inline operator const T *() const { return d; }
+ inline T *data() { detach(); return d; }
+ inline const T *data() const { return d; }
+ inline const T *constData() const { return d; }
+ inline bool operator==(const QSharedDataPointer<T> &other) const { return d == other.d; }
+ inline bool operator!=(const QSharedDataPointer<T> &other) const { return d != other.d; }
+ inline QSharedDataPointer() { d = 0; }
+ inline ~QSharedDataPointer() { if (d && !d->ref.deref()) delete d; }
+ explicit QSharedDataPointer(T *data);
+ inline QSharedDataPointer(const QSharedDataPointer<T> &o) : d(o.d) { if (d) d->ref.ref(); }
+ inline QSharedDataPointer<T> & operator=(const QSharedDataPointer<T> &o) {
+ if (o.d != d) {
+ if (o.d)
+ o.d->ref.ref();
+ if (d && !d->ref.deref())
+ delete d;
+ d = o.d;
+ }
+ return *this;
+ }
+ inline QSharedDataPointer &operator=(T *o) {
+ if (o != d) {
+ if (o)
+ o->ref.ref();
+ if (d && !d->ref.deref())
+ delete d;
+ d = o;
+ }
+ return *this;
+ }
+ inline bool operator!() const { return !d; }
+protected:
+ T *clone();
+private:
+ void detach_helper();
+ T *d;
+};
+template <class T> class QExplicitlySharedDataPointer
+{
+public:
+ typedef T Type;
+ inline T &operator*() const { return *d; }
+ inline T *operator->() { return d; }
+ inline T *operator->() const { return d; }
+ inline T *data() const { return d; }
+ inline const T *constData() const { return d; }
+ inline void detach() { if (d && d->ref != 1) detach_helper(); }
+ inline void reset()
+ {
+ if(d && !d->ref.deref())
+ delete d;
+ d = 0;
+ }
+ inline operator bool () const { return d != 0; }
+ inline bool operator==(const QExplicitlySharedDataPointer<T> &other) const { return d == other.d; }
+ inline bool operator!=(const QExplicitlySharedDataPointer<T> &other) const { return d != other.d; }
+ inline bool operator==(const T *ptr) const { return d == ptr; }
+ inline bool operator!=(const T *ptr) const { return d != ptr; }
+ inline QExplicitlySharedDataPointer() { d = 0; }
+ inline ~QExplicitlySharedDataPointer() { if (d && !d->ref.deref()) delete d; }
+ explicit QExplicitlySharedDataPointer(T *data);
+ inline QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer<T> &o) : d(o.d) { if (d) d->ref.ref(); }
+ template<class X>
+ inline QExplicitlySharedDataPointer(const QExplicitlySharedDataPointer<X> &o) : d(static_cast<T *>(o.data()))
+ {
+ if(d)
+ d->ref.ref();
+ }
+ inline QExplicitlySharedDataPointer<T> & operator=(const QExplicitlySharedDataPointer<T> &o) {
+ if (o.d != d) {
+ if (o.d)
+ o.d->ref.ref();
+ if (d && !d->ref.deref())
+ delete d;
+ d = o.d;
+ }
+ return *this;
+ }
+ inline QExplicitlySharedDataPointer &operator=(T *o) {
+ if (o != d) {
+ if (o)
+ o->ref.ref();
+ if (d && !d->ref.deref())
+ delete d;
+ d = o;
+ }
+ return *this;
+ }
+ inline bool operator!() const { return !d; }
+protected:
+ T *clone();
+private:
+ void detach_helper();
+ T *d;
+};
+template <class T>
+inline QSharedDataPointer<T>::QSharedDataPointer(T *adata) : d(adata)
+{ if (d) d->ref.ref(); }
+template <class T>
+inline T *QSharedDataPointer<T>::clone()
+{
+ return new T(*d);
+}
+template <class T>
+ void QSharedDataPointer<T>::detach_helper()
+{
+ T *x = clone();
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+}
+template <class T>
+inline T *QExplicitlySharedDataPointer<T>::clone()
+{
+ return new T(*d);
+}
+template <class T>
+ void QExplicitlySharedDataPointer<T>::detach_helper()
+{
+ T *x = clone();
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+}
+template <class T>
+inline QExplicitlySharedDataPointer<T>::QExplicitlySharedDataPointer(T *adata) : d(adata)
+{ if (d) d->ref.ref(); }
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QMatrix;
+class QTransform;
+class QRect;
+class QVariant;
+class __attribute__((visibility("default"))) QPolygon : public QVector<QPoint>
+{
+public:
+ inline QPolygon() {}
+ inline ~QPolygon() {}
+ inline QPolygon(int size);
+ inline QPolygon(const QPolygon &a) : QVector<QPoint>(a) {}
+ inline QPolygon(const QVector<QPoint> &v) : QVector<QPoint>(v) {}
+ QPolygon(const QRect &r, bool closed=false);
+ QPolygon(int nPoints, const int *points);
+ operator QVariant() const;
+ void translate(int dx, int dy);
+ void translate(const QPoint &offset);
+ QRect boundingRect() const;
+ void point(int i, int *x, int *y) const;
+ QPoint point(int i) const;
+ void setPoint(int index, int x, int y);
+ void setPoint(int index, const QPoint &p);
+ void setPoints(int nPoints, const int *points);
+ void setPoints(int nPoints, int firstx, int firsty, ...);
+ void putPoints(int index, int nPoints, const int *points);
+ void putPoints(int index, int nPoints, int firstx, int firsty, ...);
+ void putPoints(int index, int nPoints, const QPolygon & from, int fromIndex=0);
+ bool containsPoint(const QPoint &pt, Qt::FillRule fillRule) const;
+ QPolygon united(const QPolygon &r) const;
+ QPolygon intersected(const QPolygon &r) const;
+ QPolygon subtracted(const QPolygon &r) const;
+};
+inline QPolygon::QPolygon(int asize) : QVector<QPoint>(asize) {}
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QPolygon &);
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &stream, const QPolygon &polygon);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &stream, QPolygon &polygon);
+inline void QPolygon::setPoint(int index, const QPoint &pt)
+{ (*this)[index] = pt; }
+inline void QPolygon::setPoint(int index, int x, int y)
+{ (*this)[index] = QPoint(x, y); }
+inline QPoint QPolygon::point(int index) const
+{ return at(index); }
+inline void QPolygon::translate(const QPoint &offset)
+{ translate(offset.x(), offset.y()); }
+class QRectF;
+class __attribute__((visibility("default"))) QPolygonF : public QVector<QPointF>
+{
+public:
+ inline QPolygonF() {}
+ inline ~QPolygonF() {}
+ inline QPolygonF(int size);
+ inline QPolygonF(const QPolygonF &a) : QVector<QPointF>(a) {}
+ inline QPolygonF(const QVector<QPointF> &v) : QVector<QPointF>(v) {}
+ QPolygonF(const QRectF &r);
+ QPolygonF(const QPolygon &a);
+ inline void translate(qreal dx, qreal dy);
+ void translate(const QPointF &offset);
+ QPolygon toPolygon() const;
+ bool isClosed() const { return !isEmpty() && first() == last(); }
+ QRectF boundingRect() const;
+ bool containsPoint(const QPointF &pt, Qt::FillRule fillRule) const;
+ QPolygonF united(const QPolygonF &r) const;
+ QPolygonF intersected(const QPolygonF &r) const;
+ QPolygonF subtracted(const QPolygonF &r) const;
+};
+inline QPolygonF::QPolygonF(int asize) : QVector<QPointF>(asize) {}
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QPolygonF &);
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &stream, const QPolygonF &array);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &stream, QPolygonF &array);
+inline void QPolygonF::translate(qreal dx, qreal dy)
+{ translate(QPointF(dx, dy)); }
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class __attribute__((visibility("default"))) QLine
+{
+public:
+ inline QLine();
+ inline QLine(const QPoint &pt1, const QPoint &pt2);
+ inline QLine(int x1, int y1, int x2, int y2);
+ inline bool isNull() const;
+ inline QPoint p1() const;
+ inline QPoint p2() const;
+ inline int x1() const;
+ inline int y1() const;
+ inline int x2() const;
+ inline int y2() const;
+ inline int dx() const;
+ inline int dy() const;
+ inline void translate(const QPoint &p);
+ inline void translate(int dx, int dy);
+ inline QLine translated(const QPoint &p) const;
+ inline QLine translated(int dx, int dy) const;
+ inline void setP1(const QPoint &p1);
+ inline void setP2(const QPoint &p2);
+ inline void setPoints(const QPoint &p1, const QPoint &p2);
+ inline void setLine(int x1, int y1, int x2, int y2);
+ inline bool operator==(const QLine &d) const;
+ inline bool operator!=(const QLine &d) const { return !(*this == d); }
+private:
+ QPoint pt1, pt2;
+};
+template <> class QTypeInfo<QLine> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QLine)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QLine"; } };
+inline QLine::QLine() { }
+inline QLine::QLine(const QPoint &pt1_, const QPoint &pt2_) : pt1(pt1_), pt2(pt2_) { }
+inline QLine::QLine(int x1pos, int y1pos, int x2pos, int y2pos) : pt1(QPoint(x1pos, y1pos)), pt2(QPoint(x2pos, y2pos)) { }
+inline bool QLine::isNull() const
+{
+ return pt1 == pt2;
+}
+inline int QLine::x1() const
+{
+ return pt1.x();
+}
+inline int QLine::y1() const
+{
+ return pt1.y();
+}
+inline int QLine::x2() const
+{
+ return pt2.x();
+}
+inline int QLine::y2() const
+{
+ return pt2.y();
+}
+inline QPoint QLine::p1() const
+{
+ return pt1;
+}
+inline QPoint QLine::p2() const
+{
+ return pt2;
+}
+inline int QLine::dx() const
+{
+ return pt2.x() - pt1.x();
+}
+inline int QLine::dy() const
+{
+ return pt2.y() - pt1.y();
+}
+inline void QLine::translate(const QPoint &point)
+{
+ pt1 += point;
+ pt2 += point;
+}
+inline void QLine::translate(int adx, int ady)
+{
+ this->translate(QPoint(adx, ady));
+}
+inline QLine QLine::translated(const QPoint &p) const
+{
+ return QLine(pt1 + p, pt2 + p);
+}
+inline QLine QLine::translated(int adx, int ady) const
+{
+ return translated(QPoint(adx, ady));
+}
+inline void QLine::setP1(const QPoint &aP1)
+{
+ pt1 = aP1;
+}
+inline void QLine::setP2(const QPoint &aP2)
+{
+ pt2 = aP2;
+}
+inline void QLine::setPoints(const QPoint &aP1, const QPoint &aP2)
+{
+ pt1 = aP1;
+ pt2 = aP2;
+}
+inline void QLine::setLine(int aX1, int aY1, int aX2, int aY2)
+{
+ pt1 = QPoint(aX1, aY1);
+ pt2 = QPoint(aX2, aY2);
+}
+inline bool QLine::operator==(const QLine &d) const
+{
+ return pt1 == d.pt1 && pt2 == d.pt2;
+}
+__attribute__((visibility("default"))) QDebug operator<<(QDebug d, const QLine &p);
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QLine &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QLine &);
+class __attribute__((visibility("default"))) QLineF {
+public:
+ enum IntersectType { NoIntersection, BoundedIntersection, UnboundedIntersection };
+ inline QLineF();
+ inline QLineF(const QPointF &pt1, const QPointF &pt2);
+ inline QLineF(qreal x1, qreal y1, qreal x2, qreal y2);
+ inline QLineF(const QLine &line) : pt1(line.p1()), pt2(line.p2()) { }
+ static QLineF fromPolar(qreal length, qreal angle);
+ bool isNull() const;
+ inline QPointF p1() const;
+ inline QPointF p2() const;
+ inline qreal x1() const;
+ inline qreal y1() const;
+ inline qreal x2() const;
+ inline qreal y2() const;
+ inline qreal dx() const;
+ inline qreal dy() const;
+ qreal length() const;
+ void setLength(qreal len);
+ qreal angle() const;
+ void setAngle(qreal angle);
+ qreal angleTo(const QLineF &l) const;
+ QLineF unitVector() const;
+ QLineF normalVector() const;
+ IntersectType intersect(const QLineF &l, QPointF *intersectionPoint) const;
+ qreal angle(const QLineF &l) const;
+ QPointF pointAt(qreal t) const;
+ inline void translate(const QPointF &p);
+ inline void translate(qreal dx, qreal dy);
+ inline QLineF translated(const QPointF &p) const;
+ inline QLineF translated(qreal dx, qreal dy) const;
+ inline void setP1(const QPointF &p1);
+ inline void setP2(const QPointF &p2);
+ inline void setPoints(const QPointF &p1, const QPointF &p2);
+ inline void setLine(qreal x1, qreal y1, qreal x2, qreal y2);
+ inline bool operator==(const QLineF &d) const;
+ inline bool operator!=(const QLineF &d) const { return !(*this == d); }
+ QLine toLine() const;
+private:
+ QPointF pt1, pt2;
+};
+template <> class QTypeInfo<QLineF> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QLineF)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QLineF"; } };
+inline QLineF::QLineF()
+{
+}
+inline QLineF::QLineF(const QPointF &apt1, const QPointF &apt2)
+ : pt1(apt1), pt2(apt2)
+{
+}
+inline QLineF::QLineF(qreal x1pos, qreal y1pos, qreal x2pos, qreal y2pos)
+ : pt1(x1pos, y1pos), pt2(x2pos, y2pos)
+{
+}
+inline qreal QLineF::x1() const
+{
+ return pt1.x();
+}
+inline qreal QLineF::y1() const
+{
+ return pt1.y();
+}
+inline qreal QLineF::x2() const
+{
+ return pt2.x();
+}
+inline qreal QLineF::y2() const
+{
+ return pt2.y();
+}
+inline QPointF QLineF::p1() const
+{
+ return pt1;
+}
+inline QPointF QLineF::p2() const
+{
+ return pt2;
+}
+inline qreal QLineF::dx() const
+{
+ return pt2.x() - pt1.x();
+}
+inline qreal QLineF::dy() const
+{
+ return pt2.y() - pt1.y();
+}
+inline QLineF QLineF::normalVector() const
+{
+ return QLineF(p1(), p1() + QPointF(dy(), -dx()));
+}
+inline void QLineF::translate(const QPointF &point)
+{
+ pt1 += point;
+ pt2 += point;
+}
+inline void QLineF::translate(qreal adx, qreal ady)
+{
+ this->translate(QPointF(adx, ady));
+}
+inline QLineF QLineF::translated(const QPointF &p) const
+{
+ return QLineF(pt1 + p, pt2 + p);
+}
+inline QLineF QLineF::translated(qreal adx, qreal ady) const
+{
+ return translated(QPointF(adx, ady));
+}
+inline void QLineF::setLength(qreal len)
+{
+ if (isNull())
+ return;
+ QLineF v = unitVector();
+ pt2 = QPointF(pt1.x() + v.dx() * len, pt1.y() + v.dy() * len);
+}
+inline QPointF QLineF::pointAt(qreal t) const
+{
+ qreal vx = pt2.x() - pt1.x();
+ qreal vy = pt2.y() - pt1.y();
+ return QPointF(pt1.x() + vx * t, pt1.y() + vy * t);
+}
+inline QLine QLineF::toLine() const
+{
+ return QLine(pt1.toPoint(), pt2.toPoint());
+}
+inline void QLineF::setP1(const QPointF &aP1)
+{
+ pt1 = aP1;
+}
+inline void QLineF::setP2(const QPointF &aP2)
+{
+ pt2 = aP2;
+}
+inline void QLineF::setPoints(const QPointF &aP1, const QPointF &aP2)
+{
+ pt1 = aP1;
+ pt2 = aP2;
+}
+inline void QLineF::setLine(qreal aX1, qreal aY1, qreal aX2, qreal aY2)
+{
+ pt1 = QPointF(aX1, aY1);
+ pt2 = QPointF(aX2, aY2);
+}
+inline bool QLineF::operator==(const QLineF &d) const
+{
+ return pt1 == d.pt1 && pt2 == d.pt2;
+}
+__attribute__((visibility("default"))) QDebug operator<<(QDebug d, const QLineF &p);
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QLineF &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QLineF &);
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QPainterPath;
+class QVariant;
+class __attribute__((visibility("default"))) QMatrix
+{
+public:
+ QMatrix();
+ QMatrix(qreal m11, qreal m12, qreal m21, qreal m22,
+ qreal dx, qreal dy);
+ QMatrix(const QMatrix &matrix);
+ void setMatrix(qreal m11, qreal m12, qreal m21, qreal m22,
+ qreal dx, qreal dy);
+ qreal m11() const { return _m11; }
+ qreal m12() const { return _m12; }
+ qreal m21() const { return _m21; }
+ qreal m22() const { return _m22; }
+ qreal dx() const { return _dx; }
+ qreal dy() const { return _dy; }
+ void map(int x, int y, int *tx, int *ty) const;
+ void map(qreal x, qreal y, qreal *tx, qreal *ty) const;
+ QRect mapRect(const QRect &) const;
+ QRectF mapRect(const QRectF &) const;
+ QPoint map(const QPoint &p) const;
+ QPointF map(const QPointF&p) const;
+ QLine map(const QLine &l) const;
+ QLineF map(const QLineF &l) const;
+ QPolygonF map(const QPolygonF &a) const;
+ QPolygon map(const QPolygon &a) const;
+ QRegion map(const QRegion &r) const;
+ QPainterPath map(const QPainterPath &p) const;
+ QPolygon mapToPolygon(const QRect &r) const;
+ void reset();
+ inline bool isIdentity() const;
+ QMatrix &translate(qreal dx, qreal dy);
+ QMatrix &scale(qreal sx, qreal sy);
+ QMatrix &shear(qreal sh, qreal sv);
+ QMatrix &rotate(qreal a);
+ bool isInvertible() const { return !qFuzzyCompare(_m11*_m22 - _m12*_m21 + 1, 1); }
+ qreal det() const { return _m11*_m22 - _m12*_m21; }
+ QMatrix inverted(bool *invertible = 0) const;
+ bool operator==(const QMatrix &) const;
+ bool operator!=(const QMatrix &) const;
+ QMatrix &operator*=(const QMatrix &);
+ QMatrix operator*(const QMatrix &o) const;
+ QMatrix &operator=(const QMatrix &);
+ operator QVariant() const;
+private:
+ friend class QTransform;
+ qreal _m11, _m12;
+ qreal _m21, _m22;
+ qreal _dx, _dy;
+};
+template <> class QTypeInfo<QMatrix> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QMatrix)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QMatrix"; } };
+__attribute__((visibility("default"))) inline QPoint operator*(const QPoint &p, const QMatrix &m)
+{ return m.map(p); }
+__attribute__((visibility("default"))) inline QPointF operator*(const QPointF &p, const QMatrix &m)
+{ return m.map(p); }
+__attribute__((visibility("default"))) inline QLineF operator*(const QLineF &l, const QMatrix &m)
+{ return m.map(l); }
+__attribute__((visibility("default"))) inline QLine operator*(const QLine &l, const QMatrix &m)
+{ return m.map(l); }
+__attribute__((visibility("default"))) inline QPolygon operator *(const QPolygon &a, const QMatrix &m)
+{ return m.map(a); }
+__attribute__((visibility("default"))) inline QPolygonF operator *(const QPolygonF &a, const QMatrix &m)
+{ return m.map(a); }
+__attribute__((visibility("default"))) inline QRegion operator *(const QRegion &r, const QMatrix &m)
+{ return m.map(r); }
+__attribute__((visibility("default"))) QPainterPath operator *(const QPainterPath &p, const QMatrix &m);
+inline bool QMatrix::isIdentity() const
+{
+ return qFuzzyCompare(_m11, 1) && qFuzzyCompare(_m22, 1) && qFuzzyCompare(_m12 + 1, 1)
+ && qFuzzyCompare(_m21 + 1, 1) && qFuzzyCompare(_dx + 1, 1) && qFuzzyCompare(_dy + 1, 1);
+}
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QMatrix &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QMatrix &);
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QMatrix &);
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QFont;
+class QPainterPathPrivate;
+class QPainterPathData;
+class QPainterPathStrokerPrivate;
+class QPolygonF;
+class QRegion;
+class QVectorPath;
+class __attribute__((visibility("default"))) QPainterPath
+{
+public:
+ enum ElementType {
+ MoveToElement,
+ LineToElement,
+ CurveToElement,
+ CurveToDataElement
+ };
+ class Element {
+ public:
+ qreal x;
+ qreal y;
+ ElementType type;
+ bool isMoveTo() const { return type == MoveToElement; }
+ bool isLineTo() const { return type == LineToElement; }
+ bool isCurveTo() const { return type == CurveToElement; }
+ operator QPointF () const { return QPointF(x, y); }
+ bool operator==(const Element &e) const { return qFuzzyCompare(x, e.x)
+ && qFuzzyCompare(y, e.y) && type == e.type; }
+ inline bool operator!=(const Element &e) const { return !operator==(e); }
+ };
+ QPainterPath();
+ explicit QPainterPath(const QPointF &startPoint);
+ QPainterPath(const QPainterPath &other);
+ QPainterPath &operator=(const QPainterPath &other);
+ ~QPainterPath();
+ void closeSubpath();
+ void moveTo(const QPointF &p);
+ inline void moveTo(qreal x, qreal y);
+ void lineTo(const QPointF &p);
+ inline void lineTo(qreal x, qreal y);
+ void arcMoveTo(const QRectF &rect, qreal angle);
+ inline void arcMoveTo(qreal x, qreal y, qreal w, qreal h, qreal angle);
+ void arcTo(const QRectF &rect, qreal startAngle, qreal arcLength);
+ inline void arcTo(qreal x, qreal y, qreal w, qreal h, qreal startAngle, qreal arcLength);
+ void cubicTo(const QPointF &ctrlPt1, const QPointF &ctrlPt2, const QPointF &endPt);
+ inline void cubicTo(qreal ctrlPt1x, qreal ctrlPt1y, qreal ctrlPt2x, qreal ctrlPt2y,
+ qreal endPtx, qreal endPty);
+ void quadTo(const QPointF &ctrlPt, const QPointF &endPt);
+ inline void quadTo(qreal ctrlPtx, qreal ctrlPty, qreal endPtx, qreal endPty);
+ QPointF currentPosition() const;
+ void addRect(const QRectF &rect);
+ inline void addRect(qreal x, qreal y, qreal w, qreal h);
+ void addEllipse(const QRectF &rect);
+ inline void addEllipse(qreal x, qreal y, qreal w, qreal h);
+ inline void addEllipse(const QPointF ¢er, qreal rx, qreal ry);
+ void addPolygon(const QPolygonF &polygon);
+ void addText(const QPointF &point, const QFont &f, const QString &text);
+ inline void addText(qreal x, qreal y, const QFont &f, const QString &text);
+ void addPath(const QPainterPath &path);
+ void addRegion(const QRegion ®ion);
+ void addRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode = Qt::AbsoluteSize);
+ inline void addRoundedRect(qreal x, qreal y, qreal w, qreal h,
+ qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode = Qt::AbsoluteSize);
+ void addRoundRect(const QRectF &rect, int xRnd, int yRnd);
+ inline void addRoundRect(qreal x, qreal y, qreal w, qreal h,
+ int xRnd, int yRnd);
+ inline void addRoundRect(const QRectF &rect, int roundness);
+ inline void addRoundRect(qreal x, qreal y, qreal w, qreal h,
+ int roundness);
+ void connectPath(const QPainterPath &path);
+ bool contains(const QPointF &pt) const;
+ bool contains(const QRectF &rect) const;
+ bool intersects(const QRectF &rect) const;
+ QRectF boundingRect() const;
+ QRectF controlPointRect() const;
+ Qt::FillRule fillRule() const;
+ void setFillRule(Qt::FillRule fillRule);
+ inline bool isEmpty() const;
+ QPainterPath toReversed() const;
+ QList<QPolygonF> toSubpathPolygons(const QMatrix &matrix = QMatrix()) const;
+ QList<QPolygonF> toFillPolygons(const QMatrix &matrix = QMatrix()) const;
+ QPolygonF toFillPolygon(const QMatrix &matrix = QMatrix()) const;
+ QList<QPolygonF> toSubpathPolygons(const QTransform &matrix) const;
+ QList<QPolygonF> toFillPolygons(const QTransform &matrix) const;
+ QPolygonF toFillPolygon(const QTransform &matrix) const;
+ inline int elementCount() const;
+ inline const QPainterPath::Element &elementAt(int i) const;
+ inline void setElementPositionAt(int i, qreal x, qreal y);
+ qreal length() const;
+ qreal percentAtLength(qreal t) const;
+ QPointF pointAtPercent(qreal t) const;
+ qreal angleAtPercent(qreal t) const;
+ qreal slopeAtPercent(qreal t) const;
+ bool intersects(const QPainterPath &p) const;
+ bool contains(const QPainterPath &p) const;
+ QPainterPath united(const QPainterPath &r) const;
+ QPainterPath intersected(const QPainterPath &r) const;
+ QPainterPath subtracted(const QPainterPath &r) const;
+ QPainterPath subtractedInverted(const QPainterPath &r) const;
+ QPainterPath simplified() const;
+ bool operator==(const QPainterPath &other) const;
+ bool operator!=(const QPainterPath &other) const;
+ QPainterPath operator&(const QPainterPath &other) const;
+ QPainterPath operator|(const QPainterPath &other) const;
+ QPainterPath operator+(const QPainterPath &other) const;
+ QPainterPath operator-(const QPainterPath &other) const;
+ QPainterPath &operator&=(const QPainterPath &other);
+ QPainterPath &operator|=(const QPainterPath &other);
+ QPainterPath &operator+=(const QPainterPath &other);
+ QPainterPath &operator-=(const QPainterPath &other);
+private:
+ QPainterPathPrivate *d_ptr;
+ inline void ensureData() { if (!d_ptr) ensureData_helper(); }
+ void ensureData_helper();
+ inline void detach();
+ void detach_helper();
+ void setDirty(bool);
+ void computeBoundingRect() const;
+ void computeControlPointRect() const;
+ QPainterPathData *d_func() const { return reinterpret_cast<QPainterPathData *>(d_ptr); }
+ friend class QPainterPathData;
+ friend class QPainterPathStroker;
+ friend class QPainterPathStrokerPrivate;
+ friend class QMatrix;
+ friend class QTransform;
+ friend __attribute__((visibility("default"))) const QVectorPath &qtVectorPathForPath(const QPainterPath &);
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPainterPath &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPainterPath &);
+};
+class QPainterPathPrivate
+{
+public:
+ friend class QPainterPath;
+ friend class QPainterPathData;
+ friend class QPainterPathStroker;
+ friend class QPainterPathStrokerPrivate;
+ friend class QMatrix;
+ friend class QTransform;
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPainterPath &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPainterPath &);
+private:
+ QAtomicInt ref;
+ QVector<QPainterPath::Element> elements;
+};
+template <> class QTypeInfo<QPainterPath::Element> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QPainterPath::Element)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QPainterPath::Element"; } };
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPainterPath &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPainterPath &);
+class __attribute__((visibility("default"))) QPainterPathStroker
+{
+ inline QPainterPathStrokerPrivate* d_func() { return reinterpret_cast<QPainterPathStrokerPrivate *>(d_ptr); } inline const QPainterPathStrokerPrivate* d_func() const { return reinterpret_cast<const QPainterPathStrokerPrivate *>(d_ptr); } friend class QPainterPathStrokerPrivate;
+public:
+ QPainterPathStroker();
+ ~QPainterPathStroker();
+ void setWidth(qreal width);
+ qreal width() const;
+ void setCapStyle(Qt::PenCapStyle style);
+ Qt::PenCapStyle capStyle() const;
+ void setJoinStyle(Qt::PenJoinStyle style);
+ Qt::PenJoinStyle joinStyle() const;
+ void setMiterLimit(qreal length);
+ qreal miterLimit() const;
+ void setCurveThreshold(qreal threshold);
+ qreal curveThreshold() const;
+ void setDashPattern(Qt::PenStyle);
+ void setDashPattern(const QVector<qreal> &dashPattern);
+ QVector<qreal> dashPattern() const;
+ void setDashOffset(qreal offset);
+ qreal dashOffset() const;
+ QPainterPath createStroke(const QPainterPath &path) const;
+private:
+ friend class QX11PaintEngine;
+ QPainterPathStrokerPrivate *d_ptr;
+};
+inline void QPainterPath::moveTo(qreal x, qreal y)
+{
+ moveTo(QPointF(x, y));
+}
+inline void QPainterPath::lineTo(qreal x, qreal y)
+{
+ lineTo(QPointF(x, y));
+}
+inline void QPainterPath::arcTo(qreal x, qreal y, qreal w, qreal h, qreal startAngle, qreal arcLenght)
+{
+ arcTo(QRectF(x, y, w, h), startAngle, arcLenght);
+}
+inline void QPainterPath::arcMoveTo(qreal x, qreal y, qreal w, qreal h, qreal angle)
+{
+ arcMoveTo(QRectF(x, y, w, h), angle);
+}
+inline void QPainterPath::cubicTo(qreal ctrlPt1x, qreal ctrlPt1y, qreal ctrlPt2x, qreal ctrlPt2y,
+ qreal endPtx, qreal endPty)
+{
+ cubicTo(QPointF(ctrlPt1x, ctrlPt1y), QPointF(ctrlPt2x, ctrlPt2y),
+ QPointF(endPtx, endPty));
+}
+inline void QPainterPath::quadTo(qreal ctrlPtx, qreal ctrlPty, qreal endPtx, qreal endPty)
+{
+ quadTo(QPointF(ctrlPtx, ctrlPty), QPointF(endPtx, endPty));
+}
+inline void QPainterPath::addEllipse(qreal x, qreal y, qreal w, qreal h)
+{
+ addEllipse(QRectF(x, y, w, h));
+}
+inline void QPainterPath::addEllipse(const QPointF ¢er, qreal rx, qreal ry)
+{
+ addEllipse(QRectF(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry));
+}
+inline void QPainterPath::addRect(qreal x, qreal y, qreal w, qreal h)
+{
+ addRect(QRectF(x, y, w, h));
+}
+inline void QPainterPath::addRoundedRect(qreal x, qreal y, qreal w, qreal h,
+ qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode)
+{
+ addRoundedRect(QRectF(x, y, w, h), xRadius, yRadius, mode);
+}
+inline void QPainterPath::addRoundRect(qreal x, qreal y, qreal w, qreal h,
+ int xRnd, int yRnd)
+{
+ addRoundRect(QRectF(x, y, w, h), xRnd, yRnd);
+}
+inline void QPainterPath::addRoundRect(const QRectF &rect,
+ int roundness)
+{
+ int xRnd = roundness;
+ int yRnd = roundness;
+ if (rect.width() > rect.height())
+ xRnd = int(roundness * rect.height()/rect.width());
+ else
+ yRnd = int(roundness * rect.width()/rect.height());
+ addRoundRect(rect, xRnd, yRnd);
+}
+inline void QPainterPath::addRoundRect(qreal x, qreal y, qreal w, qreal h,
+ int roundness)
+{
+ addRoundRect(QRectF(x, y, w, h), roundness);
+}
+inline void QPainterPath::addText(qreal x, qreal y, const QFont &f, const QString &text)
+{
+ addText(QPointF(x, y), f, text);
+}
+inline bool QPainterPath::isEmpty() const
+{
+ return !d_ptr || (d_ptr->elements.size() == 1 && d_ptr->elements.first().type == MoveToElement);
+}
+inline int QPainterPath::elementCount() const
+{
+ return d_ptr ? d_ptr->elements.size() : 0;
+}
+inline const QPainterPath::Element &QPainterPath::elementAt(int i) const
+{
+ qt_noop();
+ qt_noop();
+ return d_ptr->elements.at(i);
+}
+inline void QPainterPath::setElementPositionAt(int i, qreal x, qreal y)
+{
+ qt_noop();
+ qt_noop();
+ detach();
+ QPainterPath::Element &e = d_ptr->elements[i];
+ e.x = x;
+ e.y = y;
+}
+inline void QPainterPath::detach()
+{
+ if (d_ptr->ref != 1)
+ detach_helper();
+ setDirty(true);
+}
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QPainterPath &);
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QVariant;
+class __attribute__((visibility("default"))) QTransform
+{
+public:
+ enum TransformationType {
+ TxNone = 0x00,
+ TxTranslate = 0x01,
+ TxScale = 0x02,
+ TxRotate = 0x04,
+ TxShear = 0x08,
+ TxProject = 0x10
+ };
+ QTransform();
+ QTransform(qreal h11, qreal h12, qreal h13,
+ qreal h21, qreal h22, qreal h23,
+ qreal h31, qreal h32, qreal h33 = 1.0);
+ QTransform(qreal h11, qreal h12, qreal h21,
+ qreal h22, qreal dx, qreal dy);
+ explicit QTransform(const QMatrix &mtx);
+ bool isAffine() const;
+ bool isIdentity() const;
+ bool isInvertible() const;
+ bool isScaling() const;
+ bool isRotating() const;
+ bool isTranslating() const;
+ TransformationType type() const;
+ inline qreal determinant() const;
+ qreal det() const;
+ qreal m11() const;
+ qreal m12() const;
+ qreal m13() const;
+ qreal m21() const;
+ qreal m22() const;
+ qreal m23() const;
+ qreal m31() const;
+ qreal m32() const;
+ qreal m33() const;
+ qreal dx() const;
+ qreal dy() const;
+ void setMatrix(qreal m11, qreal m12, qreal m13,
+ qreal m21, qreal m22, qreal m23,
+ qreal m31, qreal m32, qreal m33);
+ QTransform inverted(bool *invertible = 0) const;
+ QTransform adjoint() const;
+ QTransform transposed() const;
+ QTransform &translate(qreal dx, qreal dy);
+ QTransform &scale(qreal sx, qreal sy);
+ QTransform &shear(qreal sh, qreal sv);
+ QTransform &rotate(qreal a, Qt::Axis axis = Qt::ZAxis);
+ QTransform &rotateRadians(qreal a, Qt::Axis axis = Qt::ZAxis);
+ static bool squareToQuad(const QPolygonF &square, QTransform &result);
+ static bool quadToSquare(const QPolygonF &quad, QTransform &result);
+ static bool quadToQuad(const QPolygonF &one,
+ const QPolygonF &two,
+ QTransform &result);
+ bool operator==(const QTransform &) const;
+ bool operator!=(const QTransform &) const;
+ QTransform &operator*=(const QTransform &);
+ QTransform operator*(const QTransform &o) const;
+ QTransform &operator=(const QTransform &);
+ operator QVariant() const;
+ void reset();
+ QPoint map(const QPoint &p) const;
+ QPointF map(const QPointF &p) const;
+ QLine map(const QLine &l) const;
+ QLineF map(const QLineF &l) const;
+ QPolygonF map(const QPolygonF &a) const;
+ QPolygon map(const QPolygon &a) const;
+ QRegion map(const QRegion &r) const;
+ QPainterPath map(const QPainterPath &p) const;
+ QPolygon mapToPolygon(const QRect &r) const;
+ QRect mapRect(const QRect &) const;
+ QRectF mapRect(const QRectF &) const;
+ void map(int x, int y, int *tx, int *ty) const;
+ void map(qreal x, qreal y, qreal *tx, qreal *ty) const;
+ const QMatrix &toAffine() const;
+ QTransform &operator*=(qreal div);
+ QTransform &operator/=(qreal div);
+ QTransform &operator+=(qreal div);
+ QTransform &operator-=(qreal div);
+ static QTransform fromTranslate(qreal dx, qreal dy);
+ static QTransform fromScale(qreal dx, qreal dy);
+private:
+ QMatrix affine;
+ qreal m_13;
+ qreal m_23;
+ qreal m_33;
+ mutable uint m_type : 5;
+ mutable uint m_dirty : 5;
+ class Private;
+ Private *d;
+};
+template <> class QTypeInfo<QTransform> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTransform)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTransform"; } };
+inline bool QTransform::isAffine() const
+{
+ return type() < TxProject;
+}
+inline bool QTransform::isIdentity() const
+{
+ return type() == TxNone;
+}
+inline bool QTransform::isInvertible() const
+{
+ return !qFuzzyCompare(determinant() + 1, 1);
+}
+inline bool QTransform::isScaling() const
+{
+ return type() >= TxScale;
+}
+inline bool QTransform::isRotating() const
+{
+ return type() >= TxRotate;
+}
+inline bool QTransform::isTranslating() const
+{
+ return type() >= TxTranslate;
+}
+inline qreal QTransform::determinant() const
+{
+ return affine._m11*(m_33*affine._m22-affine._dy*m_23) -
+ affine._m21*(m_33*affine._m12-affine._dy*m_13)+affine._dx*(m_23*affine._m12-affine._m22*m_13);
+}
+inline qreal QTransform::det() const
+{
+ return determinant();
+}
+inline qreal QTransform::m11() const
+{
+ return affine._m11;
+}
+inline qreal QTransform::m12() const
+{
+ return affine._m12;
+}
+inline qreal QTransform::m13() const
+{
+ return m_13;
+}
+inline qreal QTransform::m21() const
+{
+ return affine._m21;
+}
+inline qreal QTransform::m22() const
+{
+ return affine._m22;
+}
+inline qreal QTransform::m23() const
+{
+ return m_23;
+}
+inline qreal QTransform::m31() const
+{
+ return affine._dx;
+}
+inline qreal QTransform::m32() const
+{
+ return affine._dy;
+}
+inline qreal QTransform::m33() const
+{
+ return m_33;
+}
+inline qreal QTransform::dx() const
+{
+ return affine._dx;
+}
+inline qreal QTransform::dy() const
+{
+ return affine._dy;
+}
+inline QTransform &QTransform::operator*=(qreal num)
+{
+ if (num == 1.)
+ return *this;
+ affine._m11 *= num;
+ affine._m12 *= num;
+ m_13 *= num;
+ affine._m21 *= num;
+ affine._m22 *= num;
+ m_23 *= num;
+ affine._dx *= num;
+ affine._dy *= num;
+ m_33 *= num;
+ m_dirty |= TxScale;
+ return *this;
+}
+inline QTransform &QTransform::operator/=(qreal div)
+{
+ if (div == 0)
+ return *this;
+ div = 1/div;
+ return operator*=(div);
+}
+inline QTransform &QTransform::operator+=(qreal num)
+{
+ if (num == 0)
+ return *this;
+ affine._m11 += num;
+ affine._m12 += num;
+ m_13 += num;
+ affine._m21 += num;
+ affine._m22 += num;
+ m_23 += num;
+ affine._dx += num;
+ affine._dy += num;
+ m_33 += num;
+ m_dirty |= TxProject;
+ return *this;
+}
+inline QTransform &QTransform::operator-=(qreal num)
+{
+ if (num == 0)
+ return *this;
+ affine._m11 -= num;
+ affine._m12 -= num;
+ m_13 -= num;
+ affine._m21 -= num;
+ affine._m22 -= num;
+ m_23 -= num;
+ affine._dx -= num;
+ affine._dy -= num;
+ m_33 -= num;
+ m_dirty |= TxProject;
+ return *this;
+}
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QTransform &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QTransform &);
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QTransform &);
+__attribute__((visibility("default"))) inline QPoint operator*(const QPoint &p, const QTransform &m)
+{ return m.map(p); }
+__attribute__((visibility("default"))) inline QPointF operator*(const QPointF &p, const QTransform &m)
+{ return m.map(p); }
+__attribute__((visibility("default"))) inline QLineF operator*(const QLineF &l, const QTransform &m)
+{ return m.map(l); }
+__attribute__((visibility("default"))) inline QLine operator*(const QLine &l, const QTransform &m)
+{ return m.map(l); }
+__attribute__((visibility("default"))) inline QPolygon operator *(const QPolygon &a, const QTransform &m)
+{ return m.map(a); }
+__attribute__((visibility("default"))) inline QPolygonF operator *(const QPolygonF &a, const QTransform &m)
+{ return m.map(a); }
+__attribute__((visibility("default"))) inline QRegion operator *(const QRegion &r, const QTransform &m)
+{ return m.map(r); }
+__attribute__((visibility("default"))) inline QPainterPath operator *(const QPainterPath &p, const QTransform &m)
+{ return m.map(p); }
+__attribute__((visibility("default"))) inline QTransform operator *(const QTransform &a, qreal n)
+{ QTransform t(a); t *= n; return t; }
+__attribute__((visibility("default"))) inline QTransform operator /(const QTransform &a, qreal n)
+{ QTransform t(a); t /= n; return t; }
+__attribute__((visibility("default"))) inline QTransform operator +(const QTransform &a, qreal n)
+{ QTransform t(a); t += n; return t; }
+__attribute__((visibility("default"))) inline QTransform operator -(const QTransform &a, qreal n)
+{ QTransform t(a); t -= n; return t; }
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QWSDisplay;
+class QPaintEngine;
+class __attribute__((visibility("default"))) QPaintDevice
+{
+public:
+ enum PaintDeviceMetric {
+ PdmWidth = 1,
+ PdmHeight,
+ PdmWidthMM,
+ PdmHeightMM,
+ PdmNumColors,
+ PdmDepth,
+ PdmDpiX,
+ PdmDpiY,
+ PdmPhysicalDpiX,
+ PdmPhysicalDpiY
+ };
+ virtual ~QPaintDevice();
+ virtual int devType() const;
+ bool paintingActive() const;
+ virtual QPaintEngine *paintEngine() const = 0;
+ static QWSDisplay *qwsDisplay();
+ int width() const { return metric(PdmWidth); }
+ int height() const { return metric(PdmHeight); }
+ int widthMM() const { return metric(PdmWidthMM); }
+ int heightMM() const { return metric(PdmHeightMM); }
+ int logicalDpiX() const { return metric(PdmDpiX); }
+ int logicalDpiY() const { return metric(PdmDpiY); }
+ int physicalDpiX() const { return metric(PdmPhysicalDpiX); }
+ int physicalDpiY() const { return metric(PdmPhysicalDpiY); }
+ int numColors() const { return metric(PdmNumColors); }
+ int depth() const { return metric(PdmDepth); }
+protected:
+ QPaintDevice();
+ virtual int metric(PaintDeviceMetric metric) const;
+ ushort painters;
+private:
+ QPaintDevice(const QPaintDevice &); QPaintDevice &operator=(const QPaintDevice &);
+ friend class QPainter;
+ friend class QFontEngineMac;
+ friend class QX11PaintEngine;
+};
+inline int QPaintDevice::devType() const
+{ return QInternal::UnknownDevice; }
+inline bool QPaintDevice::paintingActive() const
+{ return painters != 0; }
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QIODevice;
+class QStringList;
+class QMatrix;
+class QTransform;
+class QVariant;
+template <class T> class QList;
+template <class T> class QVector;
+struct QImageData;
+class QImageDataMisc;
+class __attribute__((visibility("default"))) QImageTextKeyLang {
+public:
+ QImageTextKeyLang(const char* k, const char* l) : key(k), lang(l) { }
+ QImageTextKeyLang() { }
+ QByteArray key;
+ QByteArray lang;
+ bool operator< (const QImageTextKeyLang& other) const
+ { return key < other.key || (key==other.key && lang < other.lang); }
+ bool operator== (const QImageTextKeyLang& other) const
+ { return key==other.key && lang==other.lang; }
+ inline bool operator!= (const QImageTextKeyLang &other) const
+ { return !operator==(other); }
+};
+class __attribute__((visibility("default"))) QImage : public QPaintDevice
+{
+public:
+ enum InvertMode { InvertRgb, InvertRgba };
+ enum Format {
+ Format_Invalid,
+ Format_Mono,
+ Format_MonoLSB,
+ Format_Indexed8,
+ Format_RGB32,
+ Format_ARGB32,
+ Format_ARGB32_Premultiplied,
+ Format_RGB16,
+ Format_ARGB8565_Premultiplied,
+ Format_RGB666,
+ Format_ARGB6666_Premultiplied,
+ Format_RGB555,
+ Format_ARGB8555_Premultiplied,
+ Format_RGB888,
+ Format_RGB444,
+ Format_ARGB4444_Premultiplied,
+ NImageFormats
+ };
+ QImage();
+ QImage(const QSize &size, Format format);
+ QImage(int width, int height, Format format);
+ QImage(uchar *data, int width, int height, Format format);
+ QImage(const uchar *data, int width, int height, Format format);
+ QImage(uchar *data, int width, int height, int bytesPerLine, Format format);
+ QImage(const uchar *data, int width, int height, int bytesPerLine, Format format);
+ explicit QImage(const char * const xpm[]);
+ explicit QImage(const QString &fileName, const char *format = 0);
+ explicit QImage(const char *fileName, const char *format = 0);
+ QImage(const QImage &);
+ ~QImage();
+ QImage &operator=(const QImage &);
+ bool isNull() const;
+ int devType() const;
+ bool operator==(const QImage &) const;
+ bool operator!=(const QImage &) const;
+ operator QVariant() const;
+ void detach();
+ bool isDetached() const;
+ QImage copy(const QRect &rect = QRect()) const;
+ inline QImage copy(int x, int y, int w, int h) const
+ { return copy(QRect(x, y, w, h)); }
+ Format format() const;
+ QImage convertToFormat(Format f, Qt::ImageConversionFlags flags = Qt::AutoColor) const __attribute__ ((warn_unused_result));
+ QImage convertToFormat(Format f, const QVector<QRgb> &colorTable, Qt::ImageConversionFlags flags = Qt::AutoColor) const __attribute__ ((warn_unused_result));
+ int width() const;
+ int height() const;
+ QSize size() const;
+ QRect rect() const;
+ int depth() const;
+ int numColors() const;
+ QRgb color(int i) const;
+ void setColor(int i, QRgb c);
+ void setNumColors(int);
+ bool allGray() const;
+ bool isGrayscale() const;
+ uchar *bits();
+ const uchar *bits() const;
+ int numBytes() const;
+ uchar *scanLine(int);
+ const uchar *scanLine(int) const;
+ int bytesPerLine() const;
+ bool valid(int x, int y) const;
+ bool valid(const QPoint &pt) const;
+ int pixelIndex(int x, int y) const;
+ int pixelIndex(const QPoint &pt) const;
+ QRgb pixel(int x, int y) const;
+ QRgb pixel(const QPoint &pt) const;
+ void setPixel(int x, int y, uint index_or_rgb);
+ void setPixel(const QPoint &pt, uint index_or_rgb);
+ QVector<QRgb> colorTable() const;
+ void setColorTable(const QVector<QRgb> colors);
+ void fill(uint pixel);
+ bool hasAlphaChannel() const;
+ void setAlphaChannel(const QImage &alphaChannel);
+ QImage alphaChannel() const;
+ QImage createAlphaMask(Qt::ImageConversionFlags flags = Qt::AutoColor) const;
+ QImage createHeuristicMask(bool clipTight = true) const;
+ QImage createMaskFromColor(QRgb color, Qt::MaskMode mode = Qt::MaskInColor) const;
+ inline QImage scaled(int w, int h, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio,
+ Qt::TransformationMode mode = Qt::FastTransformation) const
+ { return scaled(QSize(w, h), aspectMode, mode); }
+ QImage scaled(const QSize &s, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio,
+ Qt::TransformationMode mode = Qt::FastTransformation) const;
+ QImage scaledToWidth(int w, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ QImage scaledToHeight(int h, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ QImage transformed(const QMatrix &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ static QMatrix trueMatrix(const QMatrix &, int w, int h);
+ QImage transformed(const QTransform &matrix, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ static QTransform trueMatrix(const QTransform &, int w, int h);
+ QImage mirrored(bool horizontally = false, bool vertically = true) const;
+ QImage rgbSwapped() const;
+ void invertPixels(InvertMode = InvertRgb);
+ bool load(QIODevice *device, const char* format);
+ bool load(const QString &fileName, const char* format=0);
+ bool loadFromData(const uchar *buf, int len, const char *format = 0);
+ inline bool loadFromData(const QByteArray &data, const char* aformat=0)
+ { return loadFromData(reinterpret_cast<const uchar *>(data.constData()), data.size(), aformat); }
+ bool save(const QString &fileName, const char* format=0, int quality=-1) const;
+ bool save(QIODevice *device, const char* format=0, int quality=-1) const;
+ static QImage fromData(const uchar *data, int size, const char *format = 0);
+ inline static QImage fromData(const QByteArray &data, const char *format = 0)
+ { return fromData(reinterpret_cast<const uchar *>(data.constData()), data.size(), format); }
+ int serialNumber() const;
+ qint64 cacheKey() const;
+ QPaintEngine *paintEngine() const;
+ int dotsPerMeterX() const;
+ int dotsPerMeterY() const;
+ void setDotsPerMeterX(int);
+ void setDotsPerMeterY(int);
+ QPoint offset() const;
+ void setOffset(const QPoint&);
+ QStringList textKeys() const;
+ QString text(const QString &key = QString()) const;
+ void setText(const QString &key, const QString &value);
+ QString text(const char* key, const char* lang=0) const;
+ QList<QImageTextKeyLang> textList() const;
+ QStringList textLanguages() const;
+ QString text(const QImageTextKeyLang&) const;
+ void setText(const char* key, const char* lang, const QString&);
+protected:
+ virtual int metric(PaintDeviceMetric metric) const;
+private:
+ friend class QWSOnScreenSurface;
+ QImageData *d;
+ friend class QRasterPixmapData;
+ friend class QDetachedPixmap;
+ friend __attribute__((visibility("default"))) qint64 qt_image_id(const QImage &image);
+ friend const QVector<QRgb> *qt_image_colortable(const QImage &image);
+public:
+ typedef QImageData * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+template <> inline bool qIsDetached<QImage>(QImage &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QImage>(QImage &value1, QImage &value2) { const QImage::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+template <> class QTypeInfo<QImage> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QImage)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QImage"; } };
+__attribute__((visibility("default"))) inline bool QImage::valid(const QPoint &pt) const { return valid(pt.x(), pt.y()); }
+__attribute__((visibility("default"))) inline int QImage::pixelIndex(const QPoint &pt) const { return pixelIndex(pt.x(), pt.y());}
+__attribute__((visibility("default"))) inline QRgb QImage::pixel(const QPoint &pt) const { return pixel(pt.x(), pt.y()); }
+__attribute__((visibility("default"))) inline void QImage::setPixel(const QPoint &pt, uint index_or_rgb) { setPixel(pt.x(), pt.y(), index_or_rgb); }
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QImage &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QImage &);
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QImageWriter;
+class QColor;
+class QVariant;
+class QX11Info;
+class QPixmapData;
+class __attribute__((visibility("default"))) QPixmap : public QPaintDevice
+{
+public:
+ QPixmap();
+ explicit QPixmap(QPixmapData *data);
+ QPixmap(int w, int h);
+ QPixmap(const QSize &);
+ QPixmap(const QString& fileName, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor);
+ QPixmap(const char * const xpm[]);
+ QPixmap(const QPixmap &);
+ ~QPixmap();
+ QPixmap &operator=(const QPixmap &);
+ operator QVariant() const;
+ bool isNull() const;
+ int devType() const;
+ int width() const;
+ int height() const;
+ QSize size() const;
+ QRect rect() const;
+ int depth() const;
+ static int defaultDepth();
+ void fill(const QColor &fillColor = Qt::white);
+ void fill(const QWidget *widget, const QPoint &ofs);
+ inline void fill(const QWidget *widget, int xofs, int yofs) { fill(widget, QPoint(xofs, yofs)); }
+ QBitmap mask() const;
+ void setMask(const QBitmap &);
+ QPixmap alphaChannel() const;
+ void setAlphaChannel(const QPixmap &);
+ bool hasAlpha() const;
+ bool hasAlphaChannel() const;
+ QBitmap createHeuristicMask(bool clipTight = true) const;
+ QBitmap createMaskFromColor(const QColor &maskColor) const;
+ QBitmap createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode) const;
+ static QPixmap grabWindow(WId, int x=0, int y=0, int w=-1, int h=-1);
+ static QPixmap grabWidget(QWidget *widget, const QRect &rect);
+ static inline QPixmap grabWidget(QWidget *widget, int x=0, int y=0, int w=-1, int h=-1)
+ { return grabWidget(widget, QRect(x, y, w, h)); }
+ inline QPixmap scaled(int w, int h, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio,
+ Qt::TransformationMode mode = Qt::FastTransformation) const
+ { return scaled(QSize(w, h), aspectMode, mode); }
+ QPixmap scaled(const QSize &s, Qt::AspectRatioMode aspectMode = Qt::IgnoreAspectRatio,
+ Qt::TransformationMode mode = Qt::FastTransformation) const;
+ QPixmap scaledToWidth(int w, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ QPixmap scaledToHeight(int h, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ QPixmap transformed(const QMatrix &, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ static QMatrix trueMatrix(const QMatrix &m, int w, int h);
+ QPixmap transformed(const QTransform &, Qt::TransformationMode mode = Qt::FastTransformation) const;
+ static QTransform trueMatrix(const QTransform &m, int w, int h);
+ QImage toImage() const;
+ static QPixmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor);
+ bool load(const QString& fileName, const char *format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor);
+ bool loadFromData(const uchar *buf, uint len, const char* format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor);
+ inline bool loadFromData(const QByteArray &data, const char* format = 0, Qt::ImageConversionFlags flags = Qt::AutoColor);
+ bool save(const QString& fileName, const char* format = 0, int quality = -1) const;
+ bool save(QIODevice* device, const char* format = 0, int quality = -1) const;
+ inline QPixmap copy(int x, int y, int width, int height) const;
+ QPixmap copy(const QRect &rect = QRect()) const;
+ int serialNumber() const;
+ qint64 cacheKey() const;
+ bool isDetached() const;
+ void detach();
+ bool isQBitmap() const;
+ const uchar *qwsBits() const;
+ int qwsBytesPerLine() const;
+ QRgb *clut() const;
+ int numCols() const;
+ Qt::HANDLE handle() const;
+ QPaintEngine *paintEngine() const;
+ inline bool operator!() const { return isNull(); }
+protected:
+ int metric(PaintDeviceMetric) const;
+private:
+ QPixmapData *data;
+ bool doImageIO(QImageWriter *io, int quality) const;
+ enum Type { PixmapType, BitmapType };
+ QPixmap(const QSize &s, Type);
+ void init(int, int, Type = PixmapType);
+ QPixmap(const QSize &s, int type);
+ void init(int, int, int);
+ void deref();
+ friend class QPixmapData;
+ friend class QX11PixmapData;
+ friend class QMacPixmapData;
+ friend class QBitmap;
+ friend class QPaintDevice;
+ friend class QPainter;
+ friend class QGLWidget;
+ friend class QX11PaintEngine;
+ friend class QCoreGraphicsPaintEngine;
+ friend class QWidgetPrivate;
+ friend class QRasterPaintEngine;
+ friend class QRasterBuffer;
+ friend class QDirect3DPaintEngine;
+ friend class QDirect3DPaintEnginePrivate;
+ friend class QDetachedPixmap;
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPixmap &);
+ friend __attribute__((visibility("default"))) qint64 qt_pixmap_id(const QPixmap &pixmap);
+public:
+ QPixmapData* pixmapData() const;
+public:
+ typedef QPixmapData * DataPtr;
+ inline DataPtr &data_ptr() { return data; }
+};
+template <> inline bool qIsDetached<QPixmap>(QPixmap &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QPixmap>(QPixmap &value1, QPixmap &value2) { const QPixmap::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+inline QPixmap QPixmap::copy(int ax, int ay, int awidth, int aheight) const
+{
+ return copy(QRect(ax, ay, awidth, aheight));
+}
+inline bool QPixmap::loadFromData(const QByteArray &buf, const char *format,
+ Qt::ImageConversionFlags flags)
+{
+ return loadFromData(reinterpret_cast<const uchar *>(buf.constData()), buf.size(), format, flags);
+}
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPixmap &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPixmap &);
+typedef QtValidLicenseForGuiModule QtGuiModule;
+struct QBrushData;
+class QPixmap;
+class QGradient;
+class QVariant;
+class __attribute__((visibility("default"))) QBrush
+{
+public:
+ QBrush();
+ QBrush(Qt::BrushStyle bs);
+ QBrush(const QColor &color, Qt::BrushStyle bs=Qt::SolidPattern);
+ QBrush(Qt::GlobalColor color, Qt::BrushStyle bs=Qt::SolidPattern);
+ QBrush(const QColor &color, const QPixmap &pixmap);
+ QBrush(Qt::GlobalColor color, const QPixmap &pixmap);
+ QBrush(const QPixmap &pixmap);
+ QBrush(const QImage &image);
+ QBrush(const QBrush &brush);
+ QBrush(const QGradient &gradient);
+ ~QBrush();
+ QBrush &operator=(const QBrush &brush);
+ operator QVariant() const;
+ inline Qt::BrushStyle style() const;
+ void setStyle(Qt::BrushStyle);
+ inline const QMatrix &matrix() const;
+ void setMatrix(const QMatrix &mat);
+ inline QTransform transform() const;
+ void setTransform(const QTransform &);
+ QPixmap texture() const;
+ void setTexture(const QPixmap &pixmap);
+ QImage textureImage() const;
+ void setTextureImage(const QImage &image);
+ inline const QColor &color() const;
+ void setColor(const QColor &color);
+ inline void setColor(Qt::GlobalColor color);
+ const QGradient *gradient() const;
+ bool isOpaque() const;
+ bool operator==(const QBrush &b) const;
+ inline bool operator!=(const QBrush &b) const { return !(operator==(b)); }
+private:
+ friend class QRasterPaintEngine;
+ friend class QRasterPaintEnginePrivate;
+ friend struct QSpanData;
+ friend class QPainter;
+ friend bool qHasPixmapTexture(const QBrush& brush);
+ void detach(Qt::BrushStyle newStyle);
+ void init(const QColor &color, Qt::BrushStyle bs);
+ QBrushData *d;
+ void cleanUp(QBrushData *x);
+public:
+ inline bool isDetached() const;
+ typedef QBrushData * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+inline void QBrush::setColor(Qt::GlobalColor acolor)
+{ setColor(QColor(acolor)); }
+template <> class QTypeInfo<QBrush> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QBrush)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QBrush"; } };
+template <> inline bool qIsDetached<QBrush>(QBrush &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QBrush>(QBrush &value1, QBrush &value2) { const QBrush::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QBrush &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QBrush &);
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QBrush &);
+struct QBrushData
+{
+ QAtomicInt ref;
+ Qt::BrushStyle style;
+ QColor color;
+ QTransform transform;
+};
+inline Qt::BrushStyle QBrush::style() const { return d->style; }
+inline const QColor &QBrush::color() const { return d->color; }
+inline const QMatrix &QBrush::matrix() const { return d->transform.toAffine(); }
+inline QTransform QBrush::transform() const { return d->transform; }
+inline bool QBrush::isDetached() const { return d->ref == 1; }
+class QGradientPrivate;
+typedef QPair<qreal, QColor> QGradientStop;
+typedef QVector<QGradientStop> QGradientStops;
+class __attribute__((visibility("default"))) QGradient
+{
+ public: static const QMetaObject staticMetaObject; private:
+public:
+ enum Type {
+ LinearGradient,
+ RadialGradient,
+ ConicalGradient,
+ NoGradient
+ };
+ enum Spread {
+ PadSpread,
+ ReflectSpread,
+ RepeatSpread
+ };
+ enum CoordinateMode {
+ LogicalMode,
+ StretchToDeviceMode,
+ ObjectBoundingMode
+ };
+ enum InterpolationMode {
+ ColorInterpolation,
+ ComponentInterpolation
+ };
+ QGradient();
+ Type type() const { return m_type; }
+ inline void setSpread(Spread spread);
+ Spread spread() const { return m_spread; }
+ void setColorAt(qreal pos, const QColor &color);
+ void setStops(const QGradientStops &stops);
+ QGradientStops stops() const;
+ CoordinateMode coordinateMode() const;
+ void setCoordinateMode(CoordinateMode mode);
+ InterpolationMode interpolationMode() const;
+ void setInterpolationMode(InterpolationMode mode);
+ bool operator==(const QGradient &gradient) const;
+ inline bool operator!=(const QGradient &other) const
+ { return !operator==(other); }
+ bool operator==(const QGradient &gradient);
+private:
+ friend class QLinearGradient;
+ friend class QRadialGradient;
+ friend class QConicalGradient;
+ Type m_type;
+ Spread m_spread;
+ QGradientStops m_stops;
+ union {
+ struct {
+ qreal x1, y1, x2, y2;
+ } linear;
+ struct {
+ qreal cx, cy, fx, fy, radius;
+ } radial;
+ struct {
+ qreal cx, cy, angle;
+ } conical;
+ } m_data;
+ void *dummy;
+};
+inline void QGradient::setSpread(Spread aspread)
+{ m_spread = aspread; }
+class __attribute__((visibility("default"))) QLinearGradient : public QGradient
+{
+public:
+ QLinearGradient();
+ QLinearGradient(const QPointF &start, const QPointF &finalStop);
+ QLinearGradient(qreal xStart, qreal yStart, qreal xFinalStop, qreal yFinalStop);
+ QPointF start() const;
+ void setStart(const QPointF &start);
+ inline void setStart(qreal x, qreal y) { setStart(QPointF(x, y)); }
+ QPointF finalStop() const;
+ void setFinalStop(const QPointF &stop);
+ inline void setFinalStop(qreal x, qreal y) { setFinalStop(QPointF(x, y)); }
+};
+class __attribute__((visibility("default"))) QRadialGradient : public QGradient
+{
+public:
+ QRadialGradient();
+ QRadialGradient(const QPointF ¢er, qreal radius, const QPointF &focalPoint);
+ QRadialGradient(qreal cx, qreal cy, qreal radius, qreal fx, qreal fy);
+ QRadialGradient(const QPointF ¢er, qreal radius);
+ QRadialGradient(qreal cx, qreal cy, qreal radius);
+ QPointF center() const;
+ void setCenter(const QPointF ¢er);
+ inline void setCenter(qreal x, qreal y) { setCenter(QPointF(x, y)); }
+ QPointF focalPoint() const;
+ void setFocalPoint(const QPointF &focalPoint);
+ inline void setFocalPoint(qreal x, qreal y) { setFocalPoint(QPointF(x, y)); }
+ qreal radius() const;
+ void setRadius(qreal radius);
+};
+class __attribute__((visibility("default"))) QConicalGradient : public QGradient
+{
+public:
+ QConicalGradient();
+ QConicalGradient(const QPointF ¢er, qreal startAngle);
+ QConicalGradient(qreal cx, qreal cy, qreal startAngle);
+ QPointF center() const;
+ void setCenter(const QPointF ¢er);
+ inline void setCenter(qreal x, qreal y) { setCenter(QPointF(x, y)); }
+ qreal angle() const;
+ void setAngle(qreal angle);
+};
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QVariant;
+class QPenPrivate;
+class QBrush;
+class QPen;
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPen &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPen &);
+class __attribute__((visibility("default"))) QPen
+{
+public:
+ QPen();
+ QPen(Qt::PenStyle);
+ QPen(const QColor &color);
+ QPen(const QBrush &brush, qreal width, Qt::PenStyle s = Qt::SolidLine,
+ Qt::PenCapStyle c = Qt::SquareCap, Qt::PenJoinStyle j = Qt::BevelJoin);
+ QPen(const QPen &pen);
+ ~QPen();
+ QPen &operator=(const QPen &pen);
+ Qt::PenStyle style() const;
+ void setStyle(Qt::PenStyle);
+ QVector<qreal> dashPattern() const;
+ void setDashPattern(const QVector<qreal> &pattern);
+ qreal dashOffset() const;
+ void setDashOffset(qreal doffset);
+ qreal miterLimit() const;
+ void setMiterLimit(qreal limit);
+ qreal widthF() const;
+ void setWidthF(qreal width);
+ int width() const;
+ void setWidth(int width);
+ QColor color() const;
+ void setColor(const QColor &color);
+ QBrush brush() const;
+ void setBrush(const QBrush &brush);
+ bool isSolid() const;
+ Qt::PenCapStyle capStyle() const;
+ void setCapStyle(Qt::PenCapStyle pcs);
+ Qt::PenJoinStyle joinStyle() const;
+ void setJoinStyle(Qt::PenJoinStyle pcs);
+ bool isCosmetic() const;
+ void setCosmetic(bool cosmetic);
+ bool operator==(const QPen &p) const;
+ inline bool operator!=(const QPen &p) const { return !(operator==(p)); }
+ operator QVariant() const;
+ bool isDetached();
+private:
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QPen &);
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QPen &);
+ void detach();
+ class QPenPrivate *d;
+public:
+ typedef QPenPrivate * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+template <> class QTypeInfo<QPen> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QPen)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QPen"; } };
+template <> inline bool qIsDetached<QPen>(QPen &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QPen>(QPen &value1, QPen &value2) { const QPen::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QPen &);
+typedef QtValidLicenseForGuiModule QtGuiModule;
+template <typename T> class QList;
+struct QTextOptionPrivate;
+class __attribute__((visibility("default"))) QTextOption
+{
+public:
+ enum TabType {
+ LeftTab,
+ RightTab,
+ CenterTab,
+ DelimiterTab
+ };
+ struct __attribute__((visibility("default"))) Tab {
+ inline Tab() : position(80), type(QTextOption::LeftTab) { }
+ inline bool operator==(const Tab &other) const {
+ return type == other.type
+ && qFuzzyCompare(position, other.position)
+ && delimiter == other.delimiter;
+ }
+ inline bool operator!=(const Tab &other) const {
+ return !operator==(other);
+ }
+ qreal position;
+ TabType type;
+ QChar delimiter;
+ };
+ QTextOption();
+ QTextOption(Qt::Alignment alignment);
+ ~QTextOption();
+ QTextOption(const QTextOption &o);
+ QTextOption &operator=(const QTextOption &o);
+ inline void setAlignment(Qt::Alignment alignment);
+ inline Qt::Alignment alignment() const { return Qt::Alignment(align); }
+ inline void setTextDirection(Qt::LayoutDirection aDirection) { this->direction = aDirection; }
+ inline Qt::LayoutDirection textDirection() const { return Qt::LayoutDirection(direction); }
+ enum WrapMode {
+ NoWrap,
+ WordWrap,
+ ManualWrap,
+ WrapAnywhere,
+ WrapAtWordBoundaryOrAnywhere
+ };
+ inline void setWrapMode(WrapMode wrap) { wordWrap = wrap; }
+ inline WrapMode wrapMode() const { return static_cast<WrapMode>(wordWrap); }
+ enum Flag {
+ ShowTabsAndSpaces = 0x1,
+ ShowLineAndParagraphSeparators = 0x2,
+ AddSpaceForLineAndParagraphSeparators = 0x4,
+ SuppressColors = 0x8,
+ IncludeTrailingSpaces = 0x80000000
+ };
+ typedef QFlags<Flag> Flags;
+ inline void setFlags(Flags flags);
+ inline Flags flags() const { return Flags(f); }
+ inline void setTabStop(qreal tabStop);
+ inline qreal tabStop() const { return tab; }
+ void setTabArray(QList<qreal> tabStops);
+ QList<qreal> tabArray() const;
+ void setTabs(QList<Tab> tabStops);
+ QList<Tab> tabs() const;
+ void setUseDesignMetrics(bool b) { design = b; }
+ bool useDesignMetrics() const { return design; }
+private:
+ uint align : 8;
+ uint wordWrap : 4;
+ uint design : 1;
+ uint direction : 1;
+ uint unused : 19;
+ uint f;
+ qreal tab;
+ QTextOptionPrivate *d;
+};
+inline QFlags<QTextOption::Flags::enum_type> operator|(QTextOption::Flags::enum_type f1, QTextOption::Flags::enum_type f2) { return QFlags<QTextOption::Flags::enum_type>(f1) | f2; } inline QFlags<QTextOption::Flags::enum_type> operator|(QTextOption::Flags::enum_type f1, QFlags<QTextOption::Flags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QTextOption::Flags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline void QTextOption::setAlignment(Qt::Alignment aalignment)
+{ align = aalignment; }
+inline void QTextOption::setFlags(Flags aflags)
+{ f = aflags; }
+inline void QTextOption::setTabStop(qreal atabStop)
+{ tab = atabStop; }
+ template <> struct QMetaTypeId< QTextOption::Tab > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { (0) }; if (!metatype_id) metatype_id = qRegisterMetaType< QTextOption::Tab >("QTextOption::Tab"); return metatype_id; } };
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QString;
+class QVariant;
+class QFont;
+class QTextFormatCollection;
+class QTextFormatPrivate;
+class QTextBlockFormat;
+class QTextCharFormat;
+class QTextListFormat;
+class QTextTableFormat;
+class QTextFrameFormat;
+class QTextImageFormat;
+class QTextTableCellFormat;
+class QTextFormat;
+class QTextObject;
+class QTextCursor;
+class QTextDocument;
+class QTextLength;
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QTextLength &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QTextLength &);
+class __attribute__((visibility("default"))) QTextLength
+{
+public:
+ enum Type { VariableLength = 0, FixedLength, PercentageLength };
+ inline QTextLength() : lengthType(VariableLength), fixedValueOrPercentage(0) {}
+ inline explicit QTextLength(Type type, qreal value);
+ inline Type type() const { return lengthType; }
+ inline qreal value(qreal maximumLength) const
+ {
+ switch (lengthType) {
+ case FixedLength: return fixedValueOrPercentage;
+ case VariableLength: return maximumLength;
+ case PercentageLength: return fixedValueOrPercentage * maximumLength / qreal(100);
+ }
+ return -1;
+ }
+ inline qreal rawValue() const { return fixedValueOrPercentage; }
+ inline bool operator==(const QTextLength &other) const
+ { return lengthType == other.lengthType
+ && qFuzzyCompare(fixedValueOrPercentage, other.fixedValueOrPercentage); }
+ inline bool operator!=(const QTextLength &other) const
+ { return lengthType != other.lengthType
+ || !qFuzzyCompare(fixedValueOrPercentage, other.fixedValueOrPercentage); }
+ operator QVariant() const;
+private:
+ Type lengthType;
+ qreal fixedValueOrPercentage;
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QTextLength &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QTextLength &);
+};
+inline QTextLength::QTextLength(Type atype, qreal avalue)
+ : lengthType(atype), fixedValueOrPercentage(avalue) {}
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QTextFormat &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QTextFormat &);
+class __attribute__((visibility("default"))) QTextFormat
+{
+ public: static const QMetaObject staticMetaObject; private:
+public:
+ enum FormatType {
+ InvalidFormat = -1,
+ BlockFormat = 1,
+ CharFormat = 2,
+ ListFormat = 3,
+ TableFormat = 4,
+ FrameFormat = 5,
+ UserFormat = 100
+ };
+ enum Property {
+ ObjectIndex = 0x0,
+ CssFloat = 0x0800,
+ LayoutDirection = 0x0801,
+ OutlinePen = 0x810,
+ BackgroundBrush = 0x820,
+ ForegroundBrush = 0x821,
+ BackgroundImageUrl = 0x823,
+ BlockAlignment = 0x1010,
+ BlockTopMargin = 0x1030,
+ BlockBottomMargin = 0x1031,
+ BlockLeftMargin = 0x1032,
+ BlockRightMargin = 0x1033,
+ TextIndent = 0x1034,
+ TabPositions = 0x1035,
+ BlockIndent = 0x1040,
+ BlockNonBreakableLines = 0x1050,
+ BlockTrailingHorizontalRulerWidth = 0x1060,
+ FirstFontProperty = 0x1FE0,
+ FontCapitalization = FirstFontProperty,
+ FontLetterSpacing = 0x1FE1,
+ FontWordSpacing = 0x1FE2,
+ FontStyleHint = 0x1FE3,
+ FontStyleStrategy = 0x1FE4,
+ FontKerning = 0x1FE5,
+ FontFamily = 0x2000,
+ FontPointSize = 0x2001,
+ FontSizeAdjustment = 0x2002,
+ FontSizeIncrement = FontSizeAdjustment,
+ FontWeight = 0x2003,
+ FontItalic = 0x2004,
+ FontUnderline = 0x2005,
+ FontOverline = 0x2006,
+ FontStrikeOut = 0x2007,
+ FontFixedPitch = 0x2008,
+ FontPixelSize = 0x2009,
+ LastFontProperty = FontPixelSize,
+ TextUnderlineColor = 0x2010,
+ TextVerticalAlignment = 0x2021,
+ TextOutline = 0x2022,
+ TextUnderlineStyle = 0x2023,
+ TextToolTip = 0x2024,
+ IsAnchor = 0x2030,
+ AnchorHref = 0x2031,
+ AnchorName = 0x2032,
+ ObjectType = 0x2f00,
+ ListStyle = 0x3000,
+ ListIndent = 0x3001,
+ FrameBorder = 0x4000,
+ FrameMargin = 0x4001,
+ FramePadding = 0x4002,
+ FrameWidth = 0x4003,
+ FrameHeight = 0x4004,
+ FrameTopMargin = 0x4005,
+ FrameBottomMargin = 0x4006,
+ FrameLeftMargin = 0x4007,
+ FrameRightMargin = 0x4008,
+ FrameBorderBrush = 0x4009,
+ FrameBorderStyle = 0x4010,
+ TableColumns = 0x4100,
+ TableColumnWidthConstraints = 0x4101,
+ TableCellSpacing = 0x4102,
+ TableCellPadding = 0x4103,
+ TableHeaderRowCount = 0x4104,
+ TableCellRowSpan = 0x4810,
+ TableCellColumnSpan = 0x4811,
+ TableCellTopPadding = 0x4812,
+ TableCellBottomPadding = 0x4813,
+ TableCellLeftPadding = 0x4814,
+ TableCellRightPadding = 0x4815,
+ ImageName = 0x5000,
+ ImageWidth = 0x5010,
+ ImageHeight = 0x5011,
+ FullWidthSelection = 0x06000,
+ PageBreakPolicy = 0x7000,
+ UserProperty = 0x100000
+ };
+ enum ObjectTypes {
+ NoObject,
+ ImageObject,
+ TableObject,
+ TableCellObject,
+ UserObject = 0x1000
+ };
+ enum PageBreakFlag {
+ PageBreak_Auto = 0,
+ PageBreak_AlwaysBefore = 0x001,
+ PageBreak_AlwaysAfter = 0x010
+ };
+ typedef QFlags<PageBreakFlag> PageBreakFlags;
+ QTextFormat();
+ explicit QTextFormat(int type);
+ QTextFormat(const QTextFormat &rhs);
+ QTextFormat &operator=(const QTextFormat &rhs);
+ ~QTextFormat();
+ void merge(const QTextFormat &other);
+ inline bool isValid() const { return type() != InvalidFormat; }
+ int type() const;
+ int objectIndex() const;
+ void setObjectIndex(int object);
+ QVariant property(int propertyId) const;
+ void setProperty(int propertyId, const QVariant &value);
+ void clearProperty(int propertyId);
+ bool hasProperty(int propertyId) const;
+ bool boolProperty(int propertyId) const;
+ int intProperty(int propertyId) const;
+ qreal doubleProperty(int propertyId) const;
+ QString stringProperty(int propertyId) const;
+ QColor colorProperty(int propertyId) const;
+ QPen penProperty(int propertyId) const;
+ QBrush brushProperty(int propertyId) const;
+ QTextLength lengthProperty(int propertyId) const;
+ QVector<QTextLength> lengthVectorProperty(int propertyId) const;
+ void setProperty(int propertyId, const QVector<QTextLength> &lengths);
+ QMap<int, QVariant> properties() const;
+ int propertyCount() const;
+ inline void setObjectType(int type);
+ inline int objectType() const
+ { return intProperty(ObjectType); }
+ inline bool isCharFormat() const { return type() == CharFormat; }
+ inline bool isBlockFormat() const { return type() == BlockFormat; }
+ inline bool isListFormat() const { return type() == ListFormat; }
+ inline bool isFrameFormat() const { return type() == FrameFormat; }
+ inline bool isImageFormat() const { return type() == CharFormat && objectType() == ImageObject; }
+ inline bool isTableFormat() const { return type() == FrameFormat && objectType() == TableObject; }
+ inline bool isTableCellFormat() const { return type() == CharFormat && objectType() == TableCellObject; }
+ QTextBlockFormat toBlockFormat() const;
+ QTextCharFormat toCharFormat() const;
+ QTextListFormat toListFormat() const;
+ QTextTableFormat toTableFormat() const;
+ QTextFrameFormat toFrameFormat() const;
+ QTextImageFormat toImageFormat() const;
+ QTextTableCellFormat toTableCellFormat() const;
+ bool operator==(const QTextFormat &rhs) const;
+ inline bool operator!=(const QTextFormat &rhs) const { return !operator==(rhs); }
+ operator QVariant() const;
+ inline void setLayoutDirection(Qt::LayoutDirection direction)
+ { setProperty(QTextFormat::LayoutDirection, direction); }
+ inline Qt::LayoutDirection layoutDirection() const
+ { return Qt::LayoutDirection(intProperty(QTextFormat::LayoutDirection)); }
+ inline void setBackground(const QBrush &brush)
+ { setProperty(BackgroundBrush, brush); }
+ inline QBrush background() const
+ { return brushProperty(BackgroundBrush); }
+ inline void clearBackground()
+ { clearProperty(BackgroundBrush); }
+ inline void setForeground(const QBrush &brush)
+ { setProperty(ForegroundBrush, brush); }
+ inline QBrush foreground() const
+ { return brushProperty(ForegroundBrush); }
+ inline void clearForeground()
+ { clearProperty(ForegroundBrush); }
+private:
+ QSharedDataPointer<QTextFormatPrivate> d;
+ qint32 format_type;
+ friend class QTextFormatCollection;
+ friend class QTextCharFormat;
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QTextFormat &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QTextFormat &);
+};
+inline void QTextFormat::setObjectType(int atype)
+{ setProperty(ObjectType, atype); }
+inline QFlags<QTextFormat::PageBreakFlags::enum_type> operator|(QTextFormat::PageBreakFlags::enum_type f1, QTextFormat::PageBreakFlags::enum_type f2) { return QFlags<QTextFormat::PageBreakFlags::enum_type>(f1) | f2; } inline QFlags<QTextFormat::PageBreakFlags::enum_type> operator|(QTextFormat::PageBreakFlags::enum_type f1, QFlags<QTextFormat::PageBreakFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QTextFormat::PageBreakFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+class __attribute__((visibility("default"))) QTextCharFormat : public QTextFormat
+{
+public:
+ enum VerticalAlignment {
+ AlignNormal = 0,
+ AlignSuperScript,
+ AlignSubScript,
+ AlignMiddle,
+ AlignTop,
+ AlignBottom
+ };
+ enum UnderlineStyle {
+ NoUnderline,
+ SingleUnderline,
+ DashUnderline,
+ DotLine,
+ DashDotLine,
+ DashDotDotLine,
+ WaveUnderline,
+ SpellCheckUnderline
+ };
+ QTextCharFormat();
+ bool isValid() const { return isCharFormat(); }
+ void setFont(const QFont &font);
+ QFont font() const;
+ inline void setFontFamily(const QString &family)
+ { setProperty(FontFamily, family); }
+ inline QString fontFamily() const
+ { return stringProperty(FontFamily); }
+ inline void setFontPointSize(qreal size)
+ { setProperty(FontPointSize, size); }
+ inline qreal fontPointSize() const
+ { return doubleProperty(FontPointSize); }
+ inline void setFontWeight(int weight)
+ { if (weight == QFont::Normal) weight = 0; setProperty(FontWeight, weight); }
+ inline int fontWeight() const
+ { int weight = intProperty(FontWeight); if (weight == 0) weight = QFont::Normal; return weight; }
+ inline void setFontItalic(bool italic)
+ { setProperty(FontItalic, italic); }
+ inline bool fontItalic() const
+ { return boolProperty(FontItalic); }
+ inline void setFontCapitalization(QFont::Capitalization capitalization)
+ { setProperty(FontCapitalization, capitalization); }
+ inline QFont::Capitalization fontCapitalization() const
+ { return static_cast<QFont::Capitalization>(intProperty(FontCapitalization)); }
+ inline void setFontLetterSpacing(qreal spacing)
+ { setProperty(FontLetterSpacing, spacing); }
+ inline qreal fontLetterSpacing() const
+ { return doubleProperty(FontLetterSpacing); }
+ inline void setFontWordSpacing(qreal spacing)
+ { setProperty(FontWordSpacing, spacing); }
+ inline qreal fontWordSpacing() const
+ { return doubleProperty(FontWordSpacing); }
+ inline void setFontUnderline(bool underline)
+ { setProperty(TextUnderlineStyle, underline ? SingleUnderline : NoUnderline); }
+ bool fontUnderline() const;
+ inline void setFontOverline(bool overline)
+ { setProperty(FontOverline, overline); }
+ inline bool fontOverline() const
+ { return boolProperty(FontOverline); }
+ inline void setFontStrikeOut(bool strikeOut)
+ { setProperty(FontStrikeOut, strikeOut); }
+ inline bool fontStrikeOut() const
+ { return boolProperty(FontStrikeOut); }
+ inline void setUnderlineColor(const QColor &color)
+ { setProperty(TextUnderlineColor, color); }
+ inline QColor underlineColor() const
+ { return colorProperty(TextUnderlineColor); }
+ inline void setFontFixedPitch(bool fixedPitch)
+ { setProperty(FontFixedPitch, fixedPitch); }
+ inline bool fontFixedPitch() const
+ { return boolProperty(FontFixedPitch); }
+ inline void setFontStyleHint(QFont::StyleHint hint, QFont::StyleStrategy strategy = QFont::PreferDefault)
+ { setProperty(FontStyleHint, hint); setProperty(FontStyleStrategy, strategy); }
+ inline void setFontStyleStrategy(QFont::StyleStrategy strategy)
+ { setProperty(FontStyleStrategy, strategy); }
+ QFont::StyleHint fontStyleHint() const
+ { return static_cast<QFont::StyleHint>(intProperty(FontStyleHint)); }
+ QFont::StyleStrategy fontStyleStrategy() const
+ { return static_cast<QFont::StyleStrategy>(intProperty(FontStyleStrategy)); }
+ inline void setFontKerning(bool enable)
+ { setProperty(FontKerning, enable); }
+ inline bool fontKerning() const
+ { return boolProperty(FontKerning); }
+ void setUnderlineStyle(UnderlineStyle style);
+ inline UnderlineStyle underlineStyle() const
+ { return static_cast<UnderlineStyle>(intProperty(TextUnderlineStyle)); }
+ inline void setVerticalAlignment(VerticalAlignment alignment)
+ { setProperty(TextVerticalAlignment, alignment); }
+ inline VerticalAlignment verticalAlignment() const
+ { return static_cast<VerticalAlignment>(intProperty(TextVerticalAlignment)); }
+ inline void setTextOutline(const QPen &pen)
+ { setProperty(TextOutline, pen); }
+ inline QPen textOutline() const
+ { return penProperty(TextOutline); }
+ inline void setToolTip(const QString &tip)
+ { setProperty(TextToolTip, tip); }
+ inline QString toolTip() const
+ { return stringProperty(TextToolTip); }
+ inline void setAnchor(bool anchor)
+ { setProperty(IsAnchor, anchor); }
+ inline bool isAnchor() const
+ { return boolProperty(IsAnchor); }
+ inline void setAnchorHref(const QString &value)
+ { setProperty(AnchorHref, value); }
+ inline QString anchorHref() const
+ { return stringProperty(AnchorHref); }
+ inline void setAnchorName(const QString &name)
+ { setAnchorNames(QStringList(name)); }
+ QString anchorName() const;
+ inline void setAnchorNames(const QStringList &names)
+ { setProperty(AnchorName, names); }
+ QStringList anchorNames() const;
+ inline void setTableCellRowSpan(int tableCellRowSpan);
+ inline int tableCellRowSpan() const
+ { int s = intProperty(TableCellRowSpan); if (s == 0) s = 1; return s; }
+ inline void setTableCellColumnSpan(int tableCellColumnSpan);
+ inline int tableCellColumnSpan() const
+ { int s = intProperty(TableCellColumnSpan); if (s == 0) s = 1; return s; }
+protected:
+ explicit QTextCharFormat(const QTextFormat &fmt);
+ friend class QTextFormat;
+};
+inline void QTextCharFormat::setTableCellRowSpan(int _tableCellRowSpan)
+{
+ if (_tableCellRowSpan <= 1)
+ clearProperty(TableCellRowSpan);
+ else
+ setProperty(TableCellRowSpan, _tableCellRowSpan);
+}
+inline void QTextCharFormat::setTableCellColumnSpan(int _tableCellColumnSpan)
+{
+ if (_tableCellColumnSpan <= 1)
+ clearProperty(TableCellColumnSpan);
+ else
+ setProperty(TableCellColumnSpan, _tableCellColumnSpan);
+}
+class __attribute__((visibility("default"))) QTextBlockFormat : public QTextFormat
+{
+public:
+ QTextBlockFormat();
+ bool isValid() const { return isBlockFormat(); }
+ inline void setAlignment(Qt::Alignment alignment);
+ inline Qt::Alignment alignment() const
+ { int a = intProperty(BlockAlignment); if (a == 0) a = Qt::AlignLeft; return QFlag(a); }
+ inline void setTopMargin(qreal margin)
+ { setProperty(BlockTopMargin, margin); }
+ inline qreal topMargin() const
+ { return doubleProperty(BlockTopMargin); }
+ inline void setBottomMargin(qreal margin)
+ { setProperty(BlockBottomMargin, margin); }
+ inline qreal bottomMargin() const
+ { return doubleProperty(BlockBottomMargin); }
+ inline void setLeftMargin(qreal margin)
+ { setProperty(BlockLeftMargin, margin); }
+ inline qreal leftMargin() const
+ { return doubleProperty(BlockLeftMargin); }
+ inline void setRightMargin(qreal margin)
+ { setProperty(BlockRightMargin, margin); }
+ inline qreal rightMargin() const
+ { return doubleProperty(BlockRightMargin); }
+ inline void setTextIndent(qreal aindent)
+ { setProperty(TextIndent, aindent); }
+ inline qreal textIndent() const
+ { return doubleProperty(TextIndent); }
+ inline void setIndent(int indent);
+ inline int indent() const
+ { return intProperty(BlockIndent); }
+ inline void setNonBreakableLines(bool b)
+ { setProperty(BlockNonBreakableLines, b); }
+ inline bool nonBreakableLines() const
+ { return boolProperty(BlockNonBreakableLines); }
+ inline void setPageBreakPolicy(PageBreakFlags flags)
+ { setProperty(PageBreakPolicy, int(flags)); }
+ inline PageBreakFlags pageBreakPolicy() const
+ { return PageBreakFlags(intProperty(PageBreakPolicy)); }
+ void setTabPositions(const QList<QTextOption::Tab> &tabs);
+ QList<QTextOption::Tab> tabPositions() const;
+protected:
+ explicit QTextBlockFormat(const QTextFormat &fmt);
+ friend class QTextFormat;
+};
+inline void QTextBlockFormat::setAlignment(Qt::Alignment aalignment)
+{ setProperty(BlockAlignment, int(aalignment)); }
+inline void QTextBlockFormat::setIndent(int aindent)
+{ setProperty(BlockIndent, aindent); }
+class __attribute__((visibility("default"))) QTextListFormat : public QTextFormat
+{
+public:
+ QTextListFormat();
+ bool isValid() const { return isListFormat(); }
+ enum Style {
+ ListDisc = -1,
+ ListCircle = -2,
+ ListSquare = -3,
+ ListDecimal = -4,
+ ListLowerAlpha = -5,
+ ListUpperAlpha = -6,
+ ListStyleUndefined = 0
+ };
+ inline void setStyle(Style style);
+ inline Style style() const
+ { return static_cast<Style>(intProperty(ListStyle)); }
+ inline void setIndent(int indent);
+ inline int indent() const
+ { return intProperty(ListIndent); }
+protected:
+ explicit QTextListFormat(const QTextFormat &fmt);
+ friend class QTextFormat;
+};
+inline void QTextListFormat::setStyle(Style astyle)
+{ setProperty(ListStyle, astyle); }
+inline void QTextListFormat::setIndent(int aindent)
+{ setProperty(ListIndent, aindent); }
+class __attribute__((visibility("default"))) QTextImageFormat : public QTextCharFormat
+{
+public:
+ QTextImageFormat();
+ bool isValid() const { return isImageFormat(); }
+ inline void setName(const QString &name);
+ inline QString name() const
+ { return stringProperty(ImageName); }
+ inline void setWidth(qreal width);
+ inline qreal width() const
+ { return doubleProperty(ImageWidth); }
+ inline void setHeight(qreal height);
+ inline qreal height() const
+ { return doubleProperty(ImageHeight); }
+protected:
+ explicit QTextImageFormat(const QTextFormat &format);
+ friend class QTextFormat;
+};
+inline void QTextImageFormat::setName(const QString &aname)
+{ setProperty(ImageName, aname); }
+inline void QTextImageFormat::setWidth(qreal awidth)
+{ setProperty(ImageWidth, awidth); }
+inline void QTextImageFormat::setHeight(qreal aheight)
+{ setProperty(ImageHeight, aheight); }
+class __attribute__((visibility("default"))) QTextFrameFormat : public QTextFormat
+{
+public:
+ QTextFrameFormat();
+ bool isValid() const { return isFrameFormat(); }
+ enum Position {
+ InFlow,
+ FloatLeft,
+ FloatRight
+ };
+ enum BorderStyle {
+ BorderStyle_None,
+ BorderStyle_Dotted,
+ BorderStyle_Dashed,
+ BorderStyle_Solid,
+ BorderStyle_Double,
+ BorderStyle_DotDash,
+ BorderStyle_DotDotDash,
+ BorderStyle_Groove,
+ BorderStyle_Ridge,
+ BorderStyle_Inset,
+ BorderStyle_Outset
+ };
+ inline void setPosition(Position f)
+ { setProperty(CssFloat, f); }
+ inline Position position() const
+ { return static_cast<Position>(intProperty(CssFloat)); }
+ inline void setBorder(qreal border);
+ inline qreal border() const
+ { return doubleProperty(FrameBorder); }
+ inline void setBorderBrush(const QBrush &brush)
+ { setProperty(FrameBorderBrush, brush); }
+ inline QBrush borderBrush() const
+ { return brushProperty(FrameBorderBrush); }
+ inline void setBorderStyle(BorderStyle style)
+ { setProperty(FrameBorderStyle, style); }
+ inline BorderStyle borderStyle() const
+ { return static_cast<BorderStyle>(intProperty(FrameBorderStyle)); }
+ void setMargin(qreal margin);
+ inline qreal margin() const
+ { return doubleProperty(FrameMargin); }
+ inline void setTopMargin(qreal margin);
+ qreal topMargin() const;
+ inline void setBottomMargin(qreal margin);
+ qreal bottomMargin() const;
+ inline void setLeftMargin(qreal margin);
+ qreal leftMargin() const;
+ inline void setRightMargin(qreal margin);
+ qreal rightMargin() const;
+ inline void setPadding(qreal padding);
+ inline qreal padding() const
+ { return doubleProperty(FramePadding); }
+ inline void setWidth(qreal width);
+ inline void setWidth(const QTextLength &length)
+ { setProperty(FrameWidth, length); }
+ inline QTextLength width() const
+ { return lengthProperty(FrameWidth); }
+ inline void setHeight(qreal height);
+ inline void setHeight(const QTextLength &height);
+ inline QTextLength height() const
+ { return lengthProperty(FrameHeight); }
+ inline void setPageBreakPolicy(PageBreakFlags flags)
+ { setProperty(PageBreakPolicy, int(flags)); }
+ inline PageBreakFlags pageBreakPolicy() const
+ { return PageBreakFlags(intProperty(PageBreakPolicy)); }
+protected:
+ explicit QTextFrameFormat(const QTextFormat &fmt);
+ friend class QTextFormat;
+};
+inline void QTextFrameFormat::setBorder(qreal aborder)
+{ setProperty(FrameBorder, aborder); }
+inline void QTextFrameFormat::setPadding(qreal apadding)
+{ setProperty(FramePadding, apadding); }
+inline void QTextFrameFormat::setWidth(qreal awidth)
+{ setProperty(FrameWidth, QTextLength(QTextLength::FixedLength, awidth)); }
+inline void QTextFrameFormat::setHeight(qreal aheight)
+{ setProperty(FrameHeight, QTextLength(QTextLength::FixedLength, aheight)); }
+inline void QTextFrameFormat::setHeight(const QTextLength &aheight)
+{ setProperty(FrameHeight, aheight); }
+inline void QTextFrameFormat::setTopMargin(qreal amargin)
+{ setProperty(FrameTopMargin, amargin); }
+inline void QTextFrameFormat::setBottomMargin(qreal amargin)
+{ setProperty(FrameBottomMargin, amargin); }
+inline void QTextFrameFormat::setLeftMargin(qreal amargin)
+{ setProperty(FrameLeftMargin, amargin); }
+inline void QTextFrameFormat::setRightMargin(qreal amargin)
+{ setProperty(FrameRightMargin, amargin); }
+class __attribute__((visibility("default"))) QTextTableFormat : public QTextFrameFormat
+{
+public:
+ QTextTableFormat();
+ inline bool isValid() const { return isTableFormat(); }
+ inline int columns() const
+ { int cols = intProperty(TableColumns); if (cols == 0) cols = 1; return cols; }
+ inline void setColumns(int columns);
+ inline void setColumnWidthConstraints(const QVector<QTextLength> &constraints)
+ { setProperty(TableColumnWidthConstraints, constraints); }
+ inline QVector<QTextLength> columnWidthConstraints() const
+ { return lengthVectorProperty(TableColumnWidthConstraints); }
+ inline void clearColumnWidthConstraints()
+ { clearProperty(TableColumnWidthConstraints); }
+ inline qreal cellSpacing() const
+ { return doubleProperty(TableCellSpacing); }
+ inline void setCellSpacing(qreal spacing)
+ { setProperty(TableCellSpacing, spacing); }
+ inline qreal cellPadding() const
+ { return doubleProperty(TableCellPadding); }
+ inline void setCellPadding(qreal padding);
+ inline void setAlignment(Qt::Alignment alignment);
+ inline Qt::Alignment alignment() const
+ { return QFlag(intProperty(BlockAlignment)); }
+ inline void setHeaderRowCount(int count)
+ { setProperty(TableHeaderRowCount, count); }
+ inline int headerRowCount() const
+ { return intProperty(TableHeaderRowCount); }
+protected:
+ explicit QTextTableFormat(const QTextFormat &fmt);
+ friend class QTextFormat;
+};
+inline void QTextTableFormat::setColumns(int acolumns)
+{
+ if (acolumns == 1)
+ acolumns = 0;
+ setProperty(TableColumns, acolumns);
+}
+inline void QTextTableFormat::setCellPadding(qreal apadding)
+{ setProperty(TableCellPadding, apadding); }
+inline void QTextTableFormat::setAlignment(Qt::Alignment aalignment)
+{ setProperty(BlockAlignment, int(aalignment)); }
+class __attribute__((visibility("default"))) QTextTableCellFormat : public QTextCharFormat
+{
+public:
+ QTextTableCellFormat();
+ inline bool isValid() const { return isTableCellFormat(); }
+ inline void setTopPadding(qreal padding);
+ inline qreal topPadding() const;
+ inline void setBottomPadding(qreal padding);
+ inline qreal bottomPadding() const;
+ inline void setLeftPadding(qreal padding);
+ inline qreal leftPadding() const;
+ inline void setRightPadding(qreal padding);
+ inline qreal rightPadding() const;
+ inline void setPadding(qreal padding);
+protected:
+ explicit QTextTableCellFormat(const QTextFormat &fmt);
+ friend class QTextFormat;
+};
+inline void QTextTableCellFormat::setTopPadding(qreal padding)
+{
+ setProperty(TableCellTopPadding, padding);
+}
+inline qreal QTextTableCellFormat::topPadding() const
+{
+ return doubleProperty(TableCellTopPadding);
+}
+inline void QTextTableCellFormat::setBottomPadding(qreal padding)
+{
+ setProperty(TableCellBottomPadding, padding);
+}
+inline qreal QTextTableCellFormat::bottomPadding() const
+{
+ return doubleProperty(TableCellBottomPadding);
+}
+inline void QTextTableCellFormat::setLeftPadding(qreal padding)
+{
+ setProperty(TableCellLeftPadding, padding);
+}
+inline qreal QTextTableCellFormat::leftPadding() const
+{
+ return doubleProperty(TableCellLeftPadding);
+}
+inline void QTextTableCellFormat::setRightPadding(qreal padding)
+{
+ setProperty(TableCellRightPadding, padding);
+}
+inline qreal QTextTableCellFormat::rightPadding() const
+{
+ return doubleProperty(TableCellRightPadding);
+}
+inline void QTextTableCellFormat::setPadding(qreal padding)
+{
+ setTopPadding(padding);
+ setBottomPadding(padding);
+ setLeftPadding(padding);
+ setRightPadding(padding);
+}
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QTextEngine;
+class QFont;
+class QRect;
+class QRegion;
+class QTextFormat;
+class QPalette;
+class QPainter;
+class __attribute__((visibility("default"))) QTextInlineObject
+{
+public:
+ QTextInlineObject(int i, QTextEngine *e) : itm(i), eng(e) {}
+ inline QTextInlineObject() : itm(0), eng(0) {}
+ inline bool isValid() const { return eng; }
+ QRectF rect() const;
+ qreal width() const;
+ qreal ascent() const;
+ qreal descent() const;
+ qreal height() const;
+ Qt::LayoutDirection textDirection() const;
+ void setWidth(qreal w);
+ void setAscent(qreal a);
+ void setDescent(qreal d);
+ int textPosition() const;
+ int formatIndex() const;
+ QTextFormat format() const;
+private:
+ friend class QTextLayout;
+ int itm;
+ QTextEngine *eng;
+};
+class QPaintDevice;
+class QTextFormat;
+class QTextLine;
+class QTextBlock;
+class QTextOption;
+class __attribute__((visibility("default"))) QTextLayout
+{
+public:
+ QTextLayout();
+ QTextLayout(const QString& text);
+ QTextLayout(const QString& text, const QFont &font, QPaintDevice *paintdevice = 0);
+ QTextLayout(const QTextBlock &b);
+ ~QTextLayout();
+ void setFont(const QFont &f);
+ QFont font() const;
+ void setText(const QString& string);
+ QString text() const;
+ void setTextOption(const QTextOption &option);
+ QTextOption textOption() const;
+ void setPreeditArea(int position, const QString &text);
+ int preeditAreaPosition() const;
+ QString preeditAreaText() const;
+ struct FormatRange {
+ int start;
+ int length;
+ QTextCharFormat format;
+ };
+ void setAdditionalFormats(const QList<FormatRange> &overrides);
+ QList<FormatRange> additionalFormats() const;
+ void clearAdditionalFormats();
+ void setCacheEnabled(bool enable);
+ bool cacheEnabled() const;
+ void beginLayout();
+ void endLayout();
+ void clearLayout();
+ QTextLine createLine();
+ int lineCount() const;
+ QTextLine lineAt(int i) const;
+ QTextLine lineForTextPosition(int pos) const;
+ enum CursorMode {
+ SkipCharacters,
+ SkipWords
+ };
+ bool isValidCursorPosition(int pos) const;
+ int nextCursorPosition(int oldPos, CursorMode mode = SkipCharacters) const;
+ int previousCursorPosition(int oldPos, CursorMode mode = SkipCharacters) const;
+ void draw(QPainter *p, const QPointF &pos, const QVector<FormatRange> &selections = QVector<FormatRange>(),
+ const QRectF &clip = QRectF()) const;
+ void drawCursor(QPainter *p, const QPointF &pos, int cursorPosition) const;
+ void drawCursor(QPainter *p, const QPointF &pos, int cursorPosition, int width) const;
+ QPointF position() const;
+ void setPosition(const QPointF &p);
+ QRectF boundingRect() const;
+ qreal minimumWidth() const;
+ qreal maximumWidth() const;
+ QTextEngine *engine() const { return d; }
+ void setFlags(int flags);
+private:
+ QTextLayout(QTextEngine *e) : d(e) {}
+ QTextLayout(const QTextLayout &); QTextLayout &operator=(const QTextLayout &);
+ friend class QPainter;
+ friend class QPSPrinter;
+ friend class QGraphicsSimpleTextItemPrivate;
+ friend class QGraphicsSimpleTextItem;
+ friend void qt_format_text(const QFont &font, const QRectF &_r, int tf, const QTextOption *, const QString& str,
+ QRectF *brect, int tabstops, int* tabarray, int tabarraylen,
+ QPainter *painter);
+ QTextEngine *d;
+};
+class __attribute__((visibility("default"))) QTextLine
+{
+public:
+ inline QTextLine() : i(0), eng(0) {}
+ inline bool isValid() const { return eng; }
+ QRectF rect() const;
+ qreal x() const;
+ qreal y() const;
+ qreal width() const;
+ qreal ascent() const;
+ qreal descent() const;
+ qreal height() const;
+ qreal naturalTextWidth() const;
+ QRectF naturalTextRect() const;
+ enum Edge {
+ Leading,
+ Trailing
+ };
+ enum CursorPosition {
+ CursorBetweenCharacters,
+ CursorOnCharacter
+ };
+ qreal cursorToX(int *cursorPos, Edge edge = Leading) const;
+ inline qreal cursorToX(int cursorPos, Edge edge = Leading) const { return cursorToX(&cursorPos, edge); }
+ int xToCursor(qreal x, CursorPosition = CursorBetweenCharacters) const;
+ void setLineWidth(qreal width);
+ void setNumColumns(int columns);
+ void setNumColumns(int columns, qreal alignmentWidth);
+ void setPosition(const QPointF &pos);
+ QPointF position() const;
+ int textStart() const;
+ int textLength() const;
+ int lineNumber() const { return i; }
+ void draw(QPainter *p, const QPointF &point, const QTextLayout::FormatRange *selection = 0) const;
+private:
+ QTextLine(int line, QTextEngine *e) : i(line), eng(e) {}
+ void layout_helper(int numGlyphs);
+ friend class QTextLayout;
+ int i;
+ QTextEngine *eng;
+};
+class __attribute__((visibility("default"))) QTextFormatCollection
+{
+public:
+ QTextFormatCollection() {}
+ ~QTextFormatCollection();
+ QTextFormatCollection(const QTextFormatCollection &rhs);
+ QTextFormatCollection &operator=(const QTextFormatCollection &rhs);
+ QTextFormat objectFormat(int objectIndex) const;
+ void setObjectFormat(int objectIndex, const QTextFormat &format);
+ int objectFormatIndex(int objectIndex) const;
+ void setObjectFormatIndex(int objectIndex, int formatIndex);
+ int createObjectIndex(const QTextFormat &f);
+ int indexForFormat(const QTextFormat &f);
+ bool hasFormatCached(const QTextFormat &format) const;
+ QTextFormat format(int idx) const;
+ inline QTextBlockFormat blockFormat(int index) const
+ { return format(index).toBlockFormat(); }
+ inline QTextCharFormat charFormat(int index) const
+ { return format(index).toCharFormat(); }
+ inline QTextListFormat listFormat(int index) const
+ { return format(index).toListFormat(); }
+ inline QTextTableFormat tableFormat(int index) const
+ { return format(index).toTableFormat(); }
+ inline QTextImageFormat imageFormat(int index) const
+ { return format(index).toImageFormat(); }
+ inline int numFormats() const { return formats.count(); }
+ typedef QVector<QTextFormat> FormatVector;
+ FormatVector formats;
+ QVector<qint32> objFormats;
+ QSet<uint> hashes;
+ inline QFont defaultFont() const { return defaultFnt; }
+ void setDefaultFont(const QFont &f);
+private:
+ QFont defaultFnt;
+};
+namespace QUnicodeTables {
+ struct Properties {
+ ushort category : 8;
+ ushort line_break_class : 8;
+ ushort direction : 8;
+ ushort combiningClass :8;
+ ushort joining : 2;
+ signed short digitValue : 6;
+ ushort unicodeVersion : 4;
+ ushort lowerCaseSpecial : 1;
+ ushort upperCaseSpecial : 1;
+ ushort titleCaseSpecial : 1;
+ ushort caseFoldSpecial : 1;
+ signed short mirrorDiff : 16;
+ signed short lowerCaseDiff : 16;
+ signed short upperCaseDiff : 16;
+ signed short titleCaseDiff : 16;
+ signed short caseFoldDiff : 16;
+ ushort graphemeBreak : 8;
+ ushort wordBreak : 8;
+ ushort sentenceBreak : 8;
+ };
+ __attribute__((visibility("default"))) const Properties* properties(uint ucs4);
+ __attribute__((visibility("default"))) const Properties* properties(ushort ucs2);
+ enum Script {
+ Common,
+ Greek,
+ Cyrillic,
+ Armenian,
+ Hebrew,
+ Arabic,
+ Syriac,
+ Thaana,
+ Devanagari,
+ Bengali,
+ Gurmukhi,
+ Gujarati,
+ Oriya,
+ Tamil,
+ Telugu,
+ Kannada,
+ Malayalam,
+ Sinhala,
+ Thai,
+ Lao,
+ Tibetan,
+ Myanmar,
+ Georgian,
+ Hangul,
+ Ogham,
+ Runic,
+ Khmer,
+ Inherited,
+ ScriptCount = Inherited,
+ Latin = Common,
+ Ethiopic = Common,
+ Cherokee = Common,
+ CanadianAboriginal = Common,
+ Mongolian = Common,
+ Hiragana = Common,
+ Katakana = Common,
+ Bopomofo = Common,
+ Han = Common,
+ Yi = Common,
+ OldItalic = Common,
+ Gothic = Common,
+ Deseret = Common,
+ Tagalog = Common,
+ Hanunoo = Common,
+ Buhid = Common,
+ Tagbanwa = Common,
+ Limbu = Common,
+ TaiLe = Common,
+ LinearB = Common,
+ Ugaritic = Common,
+ Shavian = Common,
+ Osmanya = Common,
+ Cypriot = Common,
+ Braille = Common,
+ Buginese = Common,
+ Coptic = Common,
+ NewTaiLue = Common,
+ Glagolitic = Common,
+ Tifinagh = Common,
+ SylotiNagri = Common,
+ OldPersian = Common,
+ Kharoshthi = Common,
+ Balinese = Common,
+ Cuneiform = Common,
+ Phoenician = Common,
+ PhagsPa = Common,
+ Nko = Common
+ };
+ enum { ScriptSentinel = 32 };
+ enum LineBreakClass {
+ LineBreak_OP, LineBreak_CL, LineBreak_QU, LineBreak_GL, LineBreak_NS,
+ LineBreak_EX, LineBreak_SY, LineBreak_IS, LineBreak_PR, LineBreak_PO,
+ LineBreak_NU, LineBreak_AL, LineBreak_ID, LineBreak_IN, LineBreak_HY,
+ LineBreak_BA, LineBreak_BB, LineBreak_B2, LineBreak_ZW, LineBreak_CM,
+ LineBreak_WJ, LineBreak_H2, LineBreak_H3, LineBreak_JL, LineBreak_JV,
+ LineBreak_JT, LineBreak_SA, LineBreak_SG,
+ LineBreak_SP, LineBreak_CR, LineBreak_LF, LineBreak_BK
+ };
+ __attribute__((visibility("default"))) QUnicodeTables::LineBreakClass lineBreakClass(uint ucs4);
+ inline int lineBreakClass(const QChar &ch) {
+ return QUnicodeTables::lineBreakClass(ch.unicode());
+ }
+ __attribute__((visibility("default"))) int script(uint ucs4);
+ __attribute__((visibility("default"))) inline int script(const QChar &ch) {
+ return script(ch.unicode());
+ }
+ enum GraphemeBreak {
+ GraphemeBreakOther,
+ GraphemeBreakCR,
+ GraphemeBreakLF,
+ GraphemeBreakControl,
+ GraphemeBreakExtend,
+ GraphemeBreakL,
+ GraphemeBreakV,
+ GraphemeBreakT,
+ GraphemeBreakLV,
+ GraphemeBreakLVT
+ };
+ enum WordBreak {
+ WordBreakOther,
+ WordBreakFormat,
+ WordBreakKatakana,
+ WordBreakALetter,
+ WordBreakMidLetter,
+ WordBreakMidNum,
+ WordBreakNumeric,
+ WordBreakExtendNumLet
+ };
+ enum SentenceBreak {
+ SentenceBreakOther,
+ SentenceBreakSep,
+ SentenceBreakFormat,
+ SentenceBreakSp,
+ SentenceBreakLower,
+ SentenceBreakUpper,
+ SentenceBreakOLetter,
+ SentenceBreakNumeric,
+ SentenceBreakATerm,
+ SentenceBreakSTerm,
+ SentenceBreakClose
+ };
+}
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QStringList;
+template <class T> class QList;
+struct QFontDef;
+class QFontEngine;
+class QFontDatabasePrivate;
+class __attribute__((visibility("default"))) QFontDatabase
+{
+ public: static const QMetaObject staticMetaObject; private:
+public:
+ enum WritingSystem {
+ Any,
+ Latin,
+ Greek,
+ Cyrillic,
+ Armenian,
+ Hebrew,
+ Arabic,
+ Syriac,
+ Thaana,
+ Devanagari,
+ Bengali,
+ Gurmukhi,
+ Gujarati,
+ Oriya,
+ Tamil,
+ Telugu,
+ Kannada,
+ Malayalam,
+ Sinhala,
+ Thai,
+ Lao,
+ Tibetan,
+ Myanmar,
+ Georgian,
+ Khmer,
+ SimplifiedChinese,
+ TraditionalChinese,
+ Japanese,
+ Korean,
+ Vietnamese,
+ Symbol,
+ Other = Symbol,
+ Ogham,
+ Runic,
+ WritingSystemsCount
+ };
+ static QList<int> standardSizes();
+ QFontDatabase();
+ QList<WritingSystem> writingSystems() const;
+ QList<WritingSystem> writingSystems(const QString &family) const;
+ QStringList families(WritingSystem writingSystem = Any) const;
+ QStringList styles(const QString &family) const;
+ QList<int> pointSizes(const QString &family, const QString &style = QString());
+ QList<int> smoothSizes(const QString &family, const QString &style);
+ QString styleString(const QFont &font);
+ QString styleString(const QFontInfo &fontInfo);
+ QFont font(const QString &family, const QString &style, int pointSize) const;
+ bool isBitmapScalable(const QString &family, const QString &style = QString()) const;
+ bool isSmoothlyScalable(const QString &family, const QString &style = QString()) const;
+ bool isScalable(const QString &family, const QString &style = QString()) const;
+ bool isFixedPitch(const QString &family, const QString &style = QString()) const;
+ bool italic(const QString &family, const QString &style) const;
+ bool bold(const QString &family, const QString &style) const;
+ int weight(const QString &family, const QString &style) const;
+ static QString writingSystemName(WritingSystem writingSystem);
+ static QString writingSystemSample(WritingSystem writingSystem);
+ static int addApplicationFont(const QString &fileName);
+ static int addApplicationFontFromData(const QByteArray &fontData);
+ static QStringList applicationFontFamilies(int id);
+ static bool removeApplicationFont(int id);
+ static bool removeAllApplicationFonts();
+ static bool supportsThreadedFontRendering();
+private:
+ static void createDatabase();
+ static void parseFontName(const QString &name, QString &foundry, QString &family);
+ static QFontEngine *findFont(int script, const QFontPrivate *fp, const QFontDef &request);
+ static void load(const QFontPrivate *d, int script);
+ friend struct QFontDef;
+ friend class QFontPrivate;
+ friend class QFontDialog;
+ friend class QFontDialogPrivate;
+ friend class QFontEngineMultiXLFD;
+ friend class QFontEngineMultiQWS;
+ QFontDatabasePrivate *d;
+};
+struct QFixed {
+public:
+ QFixed() : val(0) {}
+ QFixed(int i) : val(i<<6) {}
+ QFixed(long i) : val(i<<6) {}
+ QFixed &operator=(int i) { val = (i<<6); return *this; }
+ QFixed &operator=(long i) { val = (i<<6); return *this; }
+ static QFixed fromReal(qreal r) { QFixed f; f.val = (int)(r*qreal(64)); return f; }
+ static QFixed fromFixed(int fixed) { QFixed f; f.val = fixed; return f; }
+ inline int value() const { return val; }
+ inline void setValue(int value) { val = value; }
+ inline int toInt() const { return (((val)+32) & -64)>>6; }
+ inline qreal toReal() const { return ((qreal)val)/(qreal)64; }
+ inline int truncate() const { return val>>6; }
+ inline QFixed round() const { QFixed f; f.val = ((val)+32) & -64; return f; }
+ inline QFixed floor() const { QFixed f; f.val = (val) & -64; return f; }
+ inline QFixed ceil() const { QFixed f; f.val = (val+63) & -64; return f; }
+ inline QFixed operator+(int i) const { QFixed f; f.val = (val + (i<<6)); return f; }
+ inline QFixed operator+(uint i) const { QFixed f; f.val = (val + (i<<6)); return f; }
+ inline QFixed operator+(const QFixed &other) const { QFixed f; f.val = (val + other.val); return f; }
+ inline QFixed &operator+=(int i) { val += (i<<6); return *this; }
+ inline QFixed &operator+=(uint i) { val += (i<<6); return *this; }
+ inline QFixed &operator+=(const QFixed &other) { val += other.val; return *this; }
+ inline QFixed operator-(int i) const { QFixed f; f.val = (val - (i<<6)); return f; }
+ inline QFixed operator-(uint i) const { QFixed f; f.val = (val - (i<<6)); return f; }
+ inline QFixed operator-(const QFixed &other) const { QFixed f; f.val = (val - other.val); return f; }
+ inline QFixed &operator-=(int i) { val -= (i<<6); return *this; }
+ inline QFixed &operator-=(uint i) { val -= (i<<6); return *this; }
+ inline QFixed &operator-=(const QFixed &other) { val -= other.val; return *this; }
+ inline QFixed operator-() const { QFixed f; f.val = -val; return f; }
+ inline bool operator==(const QFixed &other) const { return val == other.val; }
+ inline bool operator!=(const QFixed &other) const { return val != other.val; }
+ inline bool operator<(const QFixed &other) const { return val < other.val; }
+ inline bool operator>(const QFixed &other) const { return val > other.val; }
+ inline bool operator<=(const QFixed &other) const { return val <= other.val; }
+ inline bool operator>=(const QFixed &other) const { return val >= other.val; }
+ inline bool operator!() const { return !val; }
+ inline QFixed &operator/=(int x) { val /= x; return *this; }
+ inline QFixed &operator/=(const QFixed &o) {
+ if (o.val == 0) {
+ val = 0x7FFFFFFFL;
+ } else {
+ bool neg = false;
+ qint64 a = val;
+ qint64 b = o.val;
+ if (a < 0) { a = -a; neg = true; }
+ if (b < 0) { b = -b; neg = !neg; }
+ int res = (int)(((a << 6) + (b >> 1)) / b);
+ val = (neg ? -res : res);
+ }
+ return *this;
+ }
+ inline QFixed operator/(int d) const { QFixed f; f.val = val/d; return f; }
+ inline QFixed operator/(QFixed b) const { QFixed f = *this; return (f /= b); }
+ inline QFixed operator>>(int d) const { QFixed f = *this; f.val >>= d; return f; }
+ inline QFixed &operator*=(int i) { val *= i; return *this; }
+ inline QFixed &operator*=(uint i) { val *= i; return *this; }
+ inline QFixed &operator*=(const QFixed &o) {
+ bool neg = false;
+ qint64 a = val;
+ qint64 b = o.val;
+ if (a < 0) { a = -a; neg = true; }
+ if (b < 0) { b = -b; neg = !neg; }
+ int res = (int)((a * b + 0x20L) >> 6);
+ val = neg ? -res : res;
+ return *this;
+ }
+ inline QFixed operator*(int i) const { QFixed f = *this; return (f *= i); }
+ inline QFixed operator*(uint i) const { QFixed f = *this; return (f *= i); }
+ inline QFixed operator*(const QFixed &o) const { QFixed f = *this; return (f *= o); }
+private:
+ QFixed(qreal i) : val((int)(i*qreal(64))) {}
+ QFixed &operator=(qreal i) { val = (int)(i*qreal(64)); return *this; }
+ inline QFixed operator+(qreal i) const { QFixed f; f.val = (val + (int)(i*qreal(64))); return f; }
+ inline QFixed &operator+=(qreal i) { val += (int)(i*64); return *this; }
+ inline QFixed operator-(qreal i) const { QFixed f; f.val = (val - (int)(i*qreal(64))); return f; }
+ inline QFixed &operator-=(qreal i) { val -= (int)(i*64); return *this; }
+ inline QFixed &operator/=(qreal r) { val = (int)(val/r); return *this; }
+ inline QFixed operator/(qreal d) const { QFixed f; f.val = (int)(val/d); return f; }
+ inline QFixed &operator*=(qreal d) { val = (int) (val*d); return *this; }
+ inline QFixed operator*(qreal d) const { QFixed f = *this; return (f *= d); }
+ int val;
+};
+template <> class QTypeInfo<QFixed> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QFixed)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QFixed"; } };
+inline int qRound(const QFixed &f) { return f.toInt(); }
+inline int qFloor(const QFixed &f) { return f.floor().truncate(); }
+inline QFixed operator*(int i, const QFixed &d) { return d*i; }
+inline QFixed operator+(int i, const QFixed &d) { return d+i; }
+inline QFixed operator-(int i, const QFixed &d) { return -(d-i); }
+inline QFixed operator*(uint i, const QFixed &d) { return d*i; }
+inline QFixed operator+(uint i, const QFixed &d) { return d+i; }
+inline QFixed operator-(uint i, const QFixed &d) { return -(d-i); }
+inline bool operator==(const QFixed &f, int i) { return f.value() == (i<<6); }
+inline bool operator==(int i, const QFixed &f) { return f.value() == (i<<6); }
+inline bool operator!=(const QFixed &f, int i) { return f.value() != (i<<6); }
+inline bool operator!=(int i, const QFixed &f) { return f.value() != (i<<6); }
+inline bool operator<=(const QFixed &f, int i) { return f.value() <= (i<<6); }
+inline bool operator<=(int i, const QFixed &f) { return (i<<6) <= f.value(); }
+inline bool operator>=(const QFixed &f, int i) { return f.value() >= (i<<6); }
+inline bool operator>=(int i, const QFixed &f) { return (i<<6) >= f.value(); }
+inline bool operator<(const QFixed &f, int i) { return f.value() < (i<<6); }
+inline bool operator<(int i, const QFixed &f) { return (i<<6) < f.value(); }
+inline bool operator>(const QFixed &f, int i) { return f.value() > (i<<6); }
+inline bool operator>(int i, const QFixed &f) { return (i<<6) > f.value(); }
+inline QDebug &operator<<(QDebug &dbg, const QFixed &f)
+{ return dbg << f.toReal(); }
+struct QFixedPoint {
+ QFixed x;
+ QFixed y;
+ inline QFixedPoint() {}
+ inline QFixedPoint(const QFixed &_x, const QFixed &_y) : x(_x), y(_y) {}
+ QPointF toPointF() const { return QPointF(x.toReal(), y.toReal()); }
+ static QFixedPoint fromPointF(const QPointF &p) {
+ return QFixedPoint(QFixed::fromReal(p.x()), QFixed::fromReal(p.y()));
+ }
+};
+template <> class QTypeInfo<QFixedPoint> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QFixedPoint)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QFixedPoint"; } };
+inline QFixedPoint operator-(const QFixedPoint &p1, const QFixedPoint &p2)
+{ return QFixedPoint(p1.x - p2.x, p1.y - p2.y); }
+inline QFixedPoint operator+(const QFixedPoint &p1, const QFixedPoint &p2)
+{ return QFixedPoint(p1.x + p2.x, p1.y + p2.y); }
+struct QFixedSize {
+ QFixed width;
+ QFixed height;
+ QSizeF toSizeF() const { return QSizeF(width.toReal(), height.toReal()); }
+ static QFixedSize fromSizeF(const QSizeF &s) {
+ QFixedSize size;
+ size.width = QFixed::fromReal(s.width());
+ size.height = QFixed::fromReal(s.height());
+ return size;
+ }
+};
+template <> class QTypeInfo<QFixedSize> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QFixedSize)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QFixedSize"; } };
+class QFontCache;
+class QFontEngine;
+struct QFontDef
+{
+ inline QFontDef()
+ : pointSize(-1.0), pixelSize(-1),
+ styleStrategy(QFont::PreferDefault), styleHint(QFont::AnyStyle),
+ weight(50), fixedPitch(false), style(QFont::StyleNormal), stretch(100),
+ ignorePitch(true)
+ {
+ }
+ QString family;
+ qreal pointSize;
+ int pixelSize;
+ uint styleStrategy : 16;
+ uint styleHint : 8;
+ uint weight : 7;
+ uint fixedPitch : 1;
+ uint style : 2;
+ uint stretch : 12;
+ uint ignorePitch : 1;
+ uint fixedPitchComputed : 1;
+ int reserved : 16;
+ bool exactMatch(const QFontDef &other) const;
+ bool operator==(const QFontDef &other) const
+ {
+ return pixelSize == other.pixelSize
+ && weight == other.weight
+ && style == other.style
+ && stretch == other.stretch
+ && styleHint == other.styleHint
+ && styleStrategy == other.styleStrategy
+ && ignorePitch == other.ignorePitch && fixedPitch == other.fixedPitch
+ && family == other.family
+ ;
+ }
+ inline bool operator<(const QFontDef &other) const
+ {
+ if (pixelSize != other.pixelSize) return pixelSize < other.pixelSize;
+ if (weight != other.weight) return weight < other.weight;
+ if (style != other.style) return style < other.style;
+ if (stretch != other.stretch) return stretch < other.stretch;
+ if (styleHint != other.styleHint) return styleHint < other.styleHint;
+ if (styleStrategy != other.styleStrategy) return styleStrategy < other.styleStrategy;
+ if (family != other.family) return family < other.family;
+ if (ignorePitch != other.ignorePitch) return ignorePitch < other.ignorePitch;
+ if (fixedPitch != other.fixedPitch) return fixedPitch < other.fixedPitch;
+ return false;
+ }
+};
+class QFontEngineData
+{
+public:
+ QFontEngineData();
+ ~QFontEngineData();
+ QAtomicInt ref;
+ QFontCache *fontCache;
+ QFontEngine *engines[QUnicodeTables::ScriptCount];
+};
+class __attribute__((visibility("default"))) QFontPrivate
+{
+public:
+ QFontPrivate();
+ QFontPrivate(const QFontPrivate &other);
+ ~QFontPrivate();
+ QFontEngine *engineForScript(int script) const;
+ void alterCharForCapitalization(QChar &c) const;
+ QAtomicInt ref;
+ QFontDef request;
+ mutable QFontEngineData *engineData;
+ int dpi;
+ int screen;
+ uint rawMode : 1;
+ uint underline : 1;
+ uint overline : 1;
+ uint strikeOut : 1;
+ uint kerning : 1;
+ uint capital : 3;
+ bool letterSpacingIsAbsolute : 1;
+ QFixed letterSpacing;
+ QFixed wordSpacing;
+ mutable QFontPrivate *scFont;
+ QFont smallCapsFont() const { return QFont(smallCapsFontPrivate()); }
+ QFontPrivate *smallCapsFontPrivate() const;
+ void resolve(uint mask, const QFontPrivate *other);
+private:
+ QFontPrivate &operator=(const QFontPrivate &) { return *this; }
+};
+class QFontCache : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+public:
+ static QFontCache *instance();
+ static void cleanup();
+ QFontCache();
+ ~QFontCache();
+ void clear();
+ void removeEngineForFont(const QByteArray &fontName);
+ struct Key {
+ Key() : script(0), screen(0) { }
+ Key(const QFontDef &d, int c, int s = 0)
+ : def(d), script(c), screen(s) { }
+ QFontDef def;
+ int script;
+ int screen;
+ inline bool operator<(const Key &other) const
+ {
+ if (script != other.script) return script < other.script;
+ if (screen != other.screen) return screen < other.screen;
+ return def < other.def;
+ }
+ inline bool operator==(const Key &other) const
+ { return def == other.def && script == other.script && screen == other.screen; }
+ };
+ typedef QMap<Key,QFontEngineData*> EngineDataCache;
+ EngineDataCache engineDataCache;
+ QFontEngineData *findEngineData(const Key &key) const;
+ void insertEngineData(const Key &key, QFontEngineData *engineData);
+ struct Engine {
+ Engine() : data(0), timestamp(0), hits(0) { }
+ Engine(QFontEngine *d) : data(d), timestamp(0), hits(0) { }
+ QFontEngine *data;
+ uint timestamp;
+ uint hits;
+ };
+ typedef QMap<Key,Engine> EngineCache;
+ EngineCache engineCache;
+ QFontEngine *findEngine(const Key &key);
+ void insertEngine(const Key &key, QFontEngine *engine);
+ void cleanupPrinterFonts();
+ private:
+ void increaseCost(uint cost);
+ void decreaseCost(uint cost);
+ void timerEvent(QTimerEvent *event);
+ static const uint min_cost;
+ uint total_cost, max_cost;
+ uint current_timestamp;
+ bool fast;
+ int timer_id;
+};
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QPainter;
+class QColorGroup;
+class QPalette;
+class QPoint;
+class QColor;
+class QBrush;
+class QRect;
+class QPixmap;
+__attribute__((visibility("default"))) void qDrawShadeLine(QPainter *p, int x1, int y1, int x2, int y2,
+ const QPalette &pal, bool sunken = true,
+ int lineWidth = 1, int midLineWidth = 0);
+__attribute__((visibility("default"))) void qDrawShadeLine(QPainter *p, const QPoint &p1, const QPoint &p2,
+ const QPalette &pal, bool sunken = true,
+ int lineWidth = 1, int midLineWidth = 0);
+__attribute__((visibility("default"))) void qDrawShadeRect(QPainter *p, int x, int y, int w, int h,
+ const QPalette &pal, bool sunken = false,
+ int lineWidth = 1, int midLineWidth = 0,
+ const QBrush *fill = 0);
+__attribute__((visibility("default"))) void qDrawShadeRect(QPainter *p, const QRect &r,
+ const QPalette &pal, bool sunken = false,
+ int lineWidth = 1, int midLineWidth = 0,
+ const QBrush *fill = 0);
+__attribute__((visibility("default"))) void qDrawShadePanel(QPainter *p, int x, int y, int w, int h,
+ const QPalette &pal, bool sunken = false,
+ int lineWidth = 1, const QBrush *fill = 0);
+__attribute__((visibility("default"))) void qDrawShadePanel(QPainter *p, const QRect &r,
+ const QPalette &pal, bool sunken = false,
+ int lineWidth = 1, const QBrush *fill = 0);
+__attribute__((visibility("default"))) void qDrawWinButton(QPainter *p, int x, int y, int w, int h,
+ const QPalette &pal, bool sunken = false,
+ const QBrush *fill = 0);
+__attribute__((visibility("default"))) void qDrawWinButton(QPainter *p, const QRect &r,
+ const QPalette &pal, bool sunken = false,
+ const QBrush *fill = 0);
+__attribute__((visibility("default"))) void qDrawWinPanel(QPainter *p, int x, int y, int w, int h,
+ const QPalette &pal, bool sunken = false,
+ const QBrush *fill = 0);
+__attribute__((visibility("default"))) void qDrawWinPanel(QPainter *p, const QRect &r,
+ const QPalette &pal, bool sunken = false,
+ const QBrush *fill = 0);
+__attribute__((visibility("default"))) void qDrawPlainRect(QPainter *p, int x, int y, int w, int h, const QColor &,
+ int lineWidth = 1, const QBrush *fill = 0);
+__attribute__((visibility("default"))) void qDrawPlainRect(QPainter *p, const QRect &r, const QColor &,
+ int lineWidth = 1, const QBrush *fill = 0);
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class __attribute__((visibility("default"))) QFontInfo
+{
+public:
+ QFontInfo(const QFont &);
+ QFontInfo(const QFontInfo &);
+ ~QFontInfo();
+ QFontInfo &operator=(const QFontInfo &);
+ QString family() const;
+ int pixelSize() const;
+ int pointSize() const;
+ qreal pointSizeF() const;
+ bool italic() const;
+ QFont::Style style() const;
+ int weight() const;
+ inline bool bold() const { return weight() > QFont::Normal; }
+ bool underline() const;
+ bool overline() const;
+ bool strikeOut() const;
+ bool fixedPitch() const;
+ QFont::StyleHint styleHint() const;
+ bool rawMode() const;
+ bool exactMatch() const;
+private:
+ QFontPrivate *d;
+};
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QFontEngine;
+class QTextCodec;
+class QRect;
+class __attribute__((visibility("default"))) QFontMetrics
+{
+public:
+ QFontMetrics(const QFont &);
+ QFontMetrics(const QFont &, QPaintDevice *pd);
+ QFontMetrics(const QFontMetrics &);
+ ~QFontMetrics();
+ QFontMetrics &operator=(const QFontMetrics &);
+ int ascent() const;
+ int descent() const;
+ int height() const;
+ int leading() const;
+ int lineSpacing() const;
+ int minLeftBearing() const;
+ int minRightBearing() const;
+ int maxWidth() const;
+ int xHeight() const;
+ int averageCharWidth() const;
+ bool inFont(QChar) const;
+ int leftBearing(QChar) const;
+ int rightBearing(QChar) const;
+ int width(const QString &, int len = -1) const;
+ int width(QChar) const;
+ int charWidth(const QString &str, int pos) const;
+ QRect boundingRect(QChar) const;
+ QRect boundingRect(const QString &text) const;
+ QRect boundingRect(const QRect &r, int flags, const QString &text, int tabstops=0, int *tabarray=0) const;
+ inline QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text,
+ int tabstops=0, int *tabarray=0) const
+ { return boundingRect(QRect(x, y, w, h), flags, text, tabstops, tabarray); }
+ QSize size(int flags, const QString& str, int tabstops=0, int *tabarray=0) const;
+ QRect tightBoundingRect(const QString &text) const;
+ QString elidedText(const QString &text, Qt::TextElideMode mode, int width, int flags = 0) const;
+ int underlinePos() const;
+ int overlinePos() const;
+ int strikeOutPos() const;
+ int lineWidth() const;
+ bool operator==(const QFontMetrics &other);
+ bool operator==(const QFontMetrics &other) const;
+ inline bool operator !=(const QFontMetrics &other) { return !operator==(other); }
+ inline bool operator !=(const QFontMetrics &other) const { return !operator==(other); }
+private:
+ friend class QFontMetricsF;
+ friend class QStackTextEngine;
+ QFontPrivate *d;
+};
+class __attribute__((visibility("default"))) QFontMetricsF
+{
+public:
+ QFontMetricsF(const QFont &);
+ QFontMetricsF(const QFont &, QPaintDevice *pd);
+ QFontMetricsF(const QFontMetrics &);
+ QFontMetricsF(const QFontMetricsF &);
+ ~QFontMetricsF();
+ QFontMetricsF &operator=(const QFontMetricsF &);
+ QFontMetricsF &operator=(const QFontMetrics &);
+ qreal ascent() const;
+ qreal descent() const;
+ qreal height() const;
+ qreal leading() const;
+ qreal lineSpacing() const;
+ qreal minLeftBearing() const;
+ qreal minRightBearing() const;
+ qreal maxWidth() const;
+ qreal xHeight() const;
+ qreal averageCharWidth() const;
+ bool inFont(QChar) const;
+ qreal leftBearing(QChar) const;
+ qreal rightBearing(QChar) const;
+ qreal width(const QString &string) const;
+ qreal width(QChar) const;
+ QRectF boundingRect(const QString &string) const;
+ QRectF boundingRect(QChar) const;
+ QRectF boundingRect(const QRectF &r, int flags, const QString& string, int tabstops=0, int *tabarray=0) const;
+ QSizeF size(int flags, const QString& str, int tabstops=0, int *tabarray=0) const;
+ QRectF tightBoundingRect(const QString &text) const;
+ QString elidedText(const QString &text, Qt::TextElideMode mode, qreal width, int flags = 0) const;
+ qreal underlinePos() const;
+ qreal overlinePos() const;
+ qreal strikeOutPos() const;
+ qreal lineWidth() const;
+ bool operator==(const QFontMetricsF &other);
+ bool operator==(const QFontMetricsF &other) const;
+ inline bool operator !=(const QFontMetricsF &other) { return !operator==(other); }
+ inline bool operator !=(const QFontMetricsF &other) const { return !operator==(other); }
+private:
+ QFontPrivate *d;
+};
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QBrush;
+class QFontInfo;
+class QFontMetrics;
+class QPaintDevice;
+class QPainterPath;
+class QPainterPrivate;
+class QPen;
+class QPolygon;
+class QTextItem;
+class QMatrix;
+class QTransform;
+class __attribute__((visibility("default"))) QPainter
+{
+ inline QPainterPrivate* d_func() { return reinterpret_cast<QPainterPrivate *>(d_ptr); } inline const QPainterPrivate* d_func() const { return reinterpret_cast<const QPainterPrivate *>(d_ptr); } friend class QPainterPrivate;
+ public: static const QMetaObject staticMetaObject; private:
+public:
+ enum RenderHint {
+ Antialiasing = 0x01,
+ TextAntialiasing = 0x02,
+ SmoothPixmapTransform = 0x04,
+ HighQualityAntialiasing = 0x08,
+ NonCosmeticDefaultPen = 0x10
+ };
+ typedef QFlags<RenderHint> RenderHints;
+ QPainter();
+ explicit QPainter(QPaintDevice *);
+ ~QPainter();
+ QPaintDevice *device() const;
+ bool begin(QPaintDevice *);
+ bool end();
+ bool isActive() const;
+ void initFrom(const QWidget *widget);
+ enum CompositionMode {
+ CompositionMode_SourceOver,
+ CompositionMode_DestinationOver,
+ CompositionMode_Clear,
+ CompositionMode_Source,
+ CompositionMode_Destination,
+ CompositionMode_SourceIn,
+ CompositionMode_DestinationIn,
+ CompositionMode_SourceOut,
+ CompositionMode_DestinationOut,
+ CompositionMode_SourceAtop,
+ CompositionMode_DestinationAtop,
+ CompositionMode_Xor,
+ CompositionMode_Plus,
+ CompositionMode_Multiply,
+ CompositionMode_Screen,
+ CompositionMode_Overlay,
+ CompositionMode_Darken,
+ CompositionMode_Lighten,
+ CompositionMode_ColorDodge,
+ CompositionMode_ColorBurn,
+ CompositionMode_HardLight,
+ CompositionMode_SoftLight,
+ CompositionMode_Difference,
+ CompositionMode_Exclusion,
+ RasterOp_SourceOrDestination,
+ RasterOp_SourceAndDestination,
+ RasterOp_SourceXorDestination,
+ RasterOp_NotSourceAndNotDestination,
+ RasterOp_NotSourceOrNotDestination,
+ RasterOp_NotSourceXorDestination,
+ RasterOp_NotSource,
+ RasterOp_NotSourceAndDestination,
+ RasterOp_SourceAndNotDestination
+ };
+ void setCompositionMode(CompositionMode mode);
+ CompositionMode compositionMode() const;
+ const QFont &font() const;
+ void setFont(const QFont &f);
+ QFontMetrics fontMetrics() const;
+ QFontInfo fontInfo() const;
+ void setPen(const QColor &color);
+ void setPen(const QPen &pen);
+ void setPen(Qt::PenStyle style);
+ const QPen &pen() const;
+ void setBrush(const QBrush &brush);
+ void setBrush(Qt::BrushStyle style);
+ const QBrush &brush() const;
+ void setBackgroundMode(Qt::BGMode mode);
+ Qt::BGMode backgroundMode() const;
+ QPoint brushOrigin() const;
+ inline void setBrushOrigin(int x, int y);
+ inline void setBrushOrigin(const QPoint &);
+ void setBrushOrigin(const QPointF &);
+ void setBackground(const QBrush &bg);
+ const QBrush &background() const;
+ qreal opacity() const;
+ void setOpacity(qreal opacity);
+ QRegion clipRegion() const;
+ QPainterPath clipPath() const;
+ void setClipRect(const QRectF &, Qt::ClipOperation op = Qt::ReplaceClip);
+ void setClipRect(const QRect &, Qt::ClipOperation op = Qt::ReplaceClip);
+ inline void setClipRect(int x, int y, int w, int h, Qt::ClipOperation op = Qt::ReplaceClip);
+ void setClipRegion(const QRegion &, Qt::ClipOperation op = Qt::ReplaceClip);
+ void setClipPath(const QPainterPath &path, Qt::ClipOperation op = Qt::ReplaceClip);
+ void setClipping(bool enable);
+ bool hasClipping() const;
+ void save();
+ void restore();
+ void setMatrix(const QMatrix &matrix, bool combine = false);
+ const QMatrix &matrix() const;
+ const QMatrix &deviceMatrix() const;
+ void resetMatrix();
+ void setTransform(const QTransform &transform, bool combine = false);
+ const QTransform &transform() const;
+ const QTransform &deviceTransform() const;
+ void resetTransform();
+ void setWorldMatrix(const QMatrix &matrix, bool combine = false);
+ const QMatrix &worldMatrix() const;
+ void setWorldTransform(const QTransform &matrix, bool combine = false);
+ const QTransform &worldTransform() const;
+ QMatrix combinedMatrix() const;
+ QTransform combinedTransform() const;
+ void setMatrixEnabled(bool enabled);
+ bool matrixEnabled() const;
+ void setWorldMatrixEnabled(bool enabled);
+ bool worldMatrixEnabled() const;
+ void scale(qreal sx, qreal sy);
+ void shear(qreal sh, qreal sv);
+ void rotate(qreal a);
+ void translate(const QPointF &offset);
+ inline void translate(const QPoint &offset);
+ inline void translate(qreal dx, qreal dy);
+ QRect window() const;
+ void setWindow(const QRect &window);
+ inline void setWindow(int x, int y, int w, int h);
+ QRect viewport() const;
+ void setViewport(const QRect &viewport);
+ inline void setViewport(int x, int y, int w, int h);
+ void setViewTransformEnabled(bool enable);
+ bool viewTransformEnabled() const;
+ void strokePath(const QPainterPath &path, const QPen &pen);
+ void fillPath(const QPainterPath &path, const QBrush &brush);
+ void drawPath(const QPainterPath &path);
+ inline void drawPoint(const QPointF &pt);
+ inline void drawPoint(const QPoint &p);
+ inline void drawPoint(int x, int y);
+ void drawPoints(const QPointF *points, int pointCount);
+ inline void drawPoints(const QPolygonF &points);
+ void drawPoints(const QPoint *points, int pointCount);
+ inline void drawPoints(const QPolygon &points);
+ inline void drawLine(const QLineF &line);
+ inline void drawLine(const QLine &line);
+ inline void drawLine(int x1, int y1, int x2, int y2);
+ inline void drawLine(const QPoint &p1, const QPoint &p2);
+ inline void drawLine(const QPointF &p1, const QPointF &p2);
+ void drawLines(const QLineF *lines, int lineCount);
+ inline void drawLines(const QVector<QLineF> &lines);
+ void drawLines(const QPointF *pointPairs, int lineCount);
+ inline void drawLines(const QVector<QPointF> &pointPairs);
+ void drawLines(const QLine *lines, int lineCount);
+ inline void drawLines(const QVector<QLine> &lines);
+ void drawLines(const QPoint *pointPairs, int lineCount);
+ inline void drawLines(const QVector<QPoint> &pointPairs);
+ inline void drawRect(const QRectF &rect);
+ inline void drawRect(int x1, int y1, int w, int h);
+ inline void drawRect(const QRect &rect);
+ void drawRects(const QRectF *rects, int rectCount);
+ inline void drawRects(const QVector<QRectF> &rectangles);
+ void drawRects(const QRect *rects, int rectCount);
+ inline void drawRects(const QVector<QRect> &rectangles);
+ void drawEllipse(const QRectF &r);
+ void drawEllipse(const QRect &r);
+ inline void drawEllipse(int x, int y, int w, int h);
+ inline void drawEllipse(const QPointF ¢er, qreal rx, qreal ry);
+ inline void drawEllipse(const QPoint ¢er, int rx, int ry);
+ void drawPolyline(const QPointF *points, int pointCount);
+ inline void drawPolyline(const QPolygonF &polyline);
+ void drawPolyline(const QPoint *points, int pointCount);
+ inline void drawPolyline(const QPolygon &polygon);
+ void drawPolygon(const QPointF *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill);
+ inline void drawPolygon(const QPolygonF &polygon, Qt::FillRule fillRule = Qt::OddEvenFill);
+ void drawPolygon(const QPoint *points, int pointCount, Qt::FillRule fillRule = Qt::OddEvenFill);
+ inline void drawPolygon(const QPolygon &polygon, Qt::FillRule fillRule = Qt::OddEvenFill);
+ void drawConvexPolygon(const QPointF *points, int pointCount);
+ inline void drawConvexPolygon(const QPolygonF &polygon);
+ void drawConvexPolygon(const QPoint *points, int pointCount);
+ inline void drawConvexPolygon(const QPolygon &polygon);
+ void drawArc(const QRectF &rect, int a, int alen);
+ inline void drawArc(const QRect &, int a, int alen);
+ inline void drawArc(int x, int y, int w, int h, int a, int alen);
+ void drawPie(const QRectF &rect, int a, int alen);
+ inline void drawPie(int x, int y, int w, int h, int a, int alen);
+ inline void drawPie(const QRect &, int a, int alen);
+ void drawChord(const QRectF &rect, int a, int alen);
+ inline void drawChord(int x, int y, int w, int h, int a, int alen);
+ inline void drawChord(const QRect &, int a, int alen);
+ void drawRoundedRect(const QRectF &rect, qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode = Qt::AbsoluteSize);
+ inline void drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode = Qt::AbsoluteSize);
+ inline void drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode = Qt::AbsoluteSize);
+ void drawRoundRect(const QRectF &r, int xround = 25, int yround = 25);
+ inline void drawRoundRect(int x, int y, int w, int h, int = 25, int = 25);
+ inline void drawRoundRect(const QRect &r, int xround = 25, int yround = 25);
+ void drawTiledPixmap(const QRectF &rect, const QPixmap &pm, const QPointF &offset = QPointF());
+ inline void drawTiledPixmap(int x, int y, int w, int h, const QPixmap &, int sx=0, int sy=0);
+ inline void drawTiledPixmap(const QRect &, const QPixmap &, const QPoint & = QPoint());
+ void drawPicture(const QPointF &p, const QPicture &picture);
+ inline void drawPicture(int x, int y, const QPicture &picture);
+ inline void drawPicture(const QPoint &p, const QPicture &picture);
+ void drawPixmap(const QRectF &targetRect, const QPixmap &pixmap, const QRectF &sourceRect);
+ inline void drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect);
+ inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm,
+ int sx, int sy, int sw, int sh);
+ inline void drawPixmap(int x, int y, const QPixmap &pm,
+ int sx, int sy, int sw, int sh);
+ inline void drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr);
+ inline void drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr);
+ void drawPixmap(const QPointF &p, const QPixmap &pm);
+ inline void drawPixmap(const QPoint &p, const QPixmap &pm);
+ inline void drawPixmap(int x, int y, const QPixmap &pm);
+ inline void drawPixmap(const QRect &r, const QPixmap &pm);
+ inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm);
+ void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect,
+ Qt::ImageConversionFlags flags = Qt::AutoColor);
+ inline void drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect,
+ Qt::ImageConversionFlags flags = Qt::AutoColor);
+ inline void drawImage(const QPointF &p, const QImage &image, const QRectF &sr,
+ Qt::ImageConversionFlags flags = Qt::AutoColor);
+ inline void drawImage(const QPoint &p, const QImage &image, const QRect &sr,
+ Qt::ImageConversionFlags flags = Qt::AutoColor);
+ inline void drawImage(const QRectF &r, const QImage &image);
+ inline void drawImage(const QRect &r, const QImage &image);
+ void drawImage(const QPointF &p, const QImage &image);
+ inline void drawImage(const QPoint &p, const QImage &image);
+ inline void drawImage(int x, int y, const QImage &image, int sx = 0, int sy = 0,
+ int sw = -1, int sh = -1, Qt::ImageConversionFlags flags = Qt::AutoColor);
+ void setLayoutDirection(Qt::LayoutDirection direction);
+ Qt::LayoutDirection layoutDirection() const;
+ void drawText(const QPointF &p, const QString &s);
+ inline void drawText(const QPoint &p, const QString &s);
+ inline void drawText(int x, int y, const QString &s);
+ void drawText(const QPointF &p, const QString &str, int tf, int justificationPadding);
+ void drawText(const QRectF &r, int flags, const QString &text, QRectF *br=0);
+ void drawText(const QRect &r, int flags, const QString &text, QRect *br=0);
+ inline void drawText(int x, int y, int w, int h, int flags, const QString &text, QRect *br=0);
+ void drawText(const QRectF &r, const QString &text, const QTextOption &o = QTextOption());
+ QRectF boundingRect(const QRectF &rect, int flags, const QString &text);
+ QRect boundingRect(const QRect &rect, int flags, const QString &text);
+ inline QRect boundingRect(int x, int y, int w, int h, int flags, const QString &text);
+ QRectF boundingRect(const QRectF &rect, const QString &text, const QTextOption &o = QTextOption());
+ void drawTextItem(const QPointF &p, const QTextItem &ti);
+ inline void drawTextItem(int x, int y, const QTextItem &ti);
+ inline void drawTextItem(const QPoint &p, const QTextItem &ti);
+ void fillRect(const QRectF &, const QBrush &);
+ inline void fillRect(int x, int y, int w, int h, const QBrush &);
+ void fillRect(const QRect &, const QBrush &);
+ void fillRect(const QRectF &, const QColor &color);
+ inline void fillRect(int x, int y, int w, int h, const QColor &color);
+ void fillRect(const QRect &, const QColor &color);
+ inline void fillRect(int x, int y, int w, int h, Qt::GlobalColor c);
+ inline void fillRect(const QRect &r, Qt::GlobalColor c);
+ inline void fillRect(const QRectF &r, Qt::GlobalColor c);
+ inline void fillRect(int x, int y, int w, int h, Qt::BrushStyle style);
+ inline void fillRect(const QRect &r, Qt::BrushStyle style);
+ inline void fillRect(const QRectF &r, Qt::BrushStyle style);
+ void eraseRect(const QRectF &);
+ inline void eraseRect(int x, int y, int w, int h);
+ inline void eraseRect(const QRect &);
+ void setRenderHint(RenderHint hint, bool on = true);
+ void setRenderHints(RenderHints hints, bool on = true);
+ RenderHints renderHints() const;
+ inline bool testRenderHint(RenderHint hint) const { return renderHints() & hint; }
+ QPaintEngine *paintEngine() const;
+ static void setRedirected(const QPaintDevice *device, QPaintDevice *replacement,
+ const QPoint& offset = QPoint());
+ static QPaintDevice *redirected(const QPaintDevice *device, QPoint *offset = 0);
+ static void restoreRedirected(const QPaintDevice *device);
+private:
+ QPainter(const QPainter &); QPainter &operator=(const QPainter &);
+ friend class Q3Painter;
+ QPainterPrivate *d_ptr;
+ friend class QFontEngine;
+ friend class QFontEngineBox;
+ friend class QFontEngineFT;
+ friend class QFontEngineMac;
+ friend class QFontEngineWin;
+ friend class QFontEngineXLFD;
+ friend class QWSManager;
+ friend class QPaintEngine;
+ friend class QOpenGLPaintEngine;
+ friend class QX11PaintEngine;
+ friend class QX11PaintEnginePrivate;
+ friend class QWin32PaintEngine;
+ friend class QWin32PaintEnginePrivate;
+ friend class QRasterPaintEngine;
+ friend class QAlphaPaintEngine;
+ friend class QPreviewPaintEngine;
+};
+inline QFlags<QPainter::RenderHints::enum_type> operator|(QPainter::RenderHints::enum_type f1, QPainter::RenderHints::enum_type f2) { return QFlags<QPainter::RenderHints::enum_type>(f1) | f2; } inline QFlags<QPainter::RenderHints::enum_type> operator|(QPainter::RenderHints::enum_type f1, QFlags<QPainter::RenderHints::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QPainter::RenderHints::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline void QPainter::drawLine(const QLineF &l)
+{
+ drawLines(&l, 1);
+}
+inline void QPainter::drawLine(const QLine &line)
+{
+ drawLines(&line, 1);
+}
+inline void QPainter::drawLine(int x1, int y1, int x2, int y2)
+{
+ QLine l(x1, y1, x2, y2);
+ drawLines(&l, 1);
+}
+inline void QPainter::drawLine(const QPoint &p1, const QPoint &p2)
+{
+ QLine l(p1, p2);
+ drawLines(&l, 1);
+}
+inline void QPainter::drawLine(const QPointF &p1, const QPointF &p2)
+{
+ drawLine(QLineF(p1, p2));
+}
+inline void QPainter::drawLines(const QVector<QLineF> &lines)
+{
+ drawLines(lines.constData(), lines.size());
+}
+inline void QPainter::drawLines(const QVector<QLine> &lines)
+{
+ drawLines(lines.constData(), lines.size());
+}
+inline void QPainter::drawLines(const QVector<QPointF> &pointPairs)
+{
+ drawLines(pointPairs.constData(), pointPairs.size() / 2);
+}
+inline void QPainter::drawLines(const QVector<QPoint> &pointPairs)
+{
+ drawLines(pointPairs.constData(), pointPairs.size() / 2);
+}
+inline void QPainter::drawPolyline(const QPolygonF &polyline)
+{
+ drawPolyline(polyline.constData(), polyline.size());
+}
+inline void QPainter::drawPolyline(const QPolygon &polyline)
+{
+ drawPolyline(polyline.constData(), polyline.size());
+}
+inline void QPainter::drawPolygon(const QPolygonF &polygon, Qt::FillRule fillRule)
+{
+ drawPolygon(polygon.constData(), polygon.size(), fillRule);
+}
+inline void QPainter::drawPolygon(const QPolygon &polygon, Qt::FillRule fillRule)
+{
+ drawPolygon(polygon.constData(), polygon.size(), fillRule);
+}
+inline void QPainter::drawConvexPolygon(const QPolygonF &poly)
+{
+ drawConvexPolygon(poly.constData(), poly.size());
+}
+inline void QPainter::drawConvexPolygon(const QPolygon &poly)
+{
+ drawConvexPolygon(poly.constData(), poly.size());
+}
+inline void QPainter::drawRect(const QRectF &rect)
+{
+ drawRects(&rect, 1);
+}
+inline void QPainter::drawRect(int x, int y, int w, int h)
+{
+ QRect r(x, y, w, h);
+ drawRects(&r, 1);
+}
+inline void QPainter::drawRect(const QRect &r)
+{
+ drawRects(&r, 1);
+}
+inline void QPainter::drawRects(const QVector<QRectF> &rects)
+{
+ drawRects(rects.constData(), rects.size());
+}
+inline void QPainter::drawRects(const QVector<QRect> &rects)
+{
+ drawRects(rects.constData(), rects.size());
+}
+inline void QPainter::drawPoint(const QPointF &p)
+{
+ drawPoints(&p, 1);
+}
+inline void QPainter::drawPoint(int x, int y)
+{
+ QPoint p(x, y);
+ drawPoints(&p, 1);
+}
+inline void QPainter::drawPoint(const QPoint &p)
+{
+ drawPoints(&p, 1);
+}
+inline void QPainter::drawPoints(const QPolygonF &points)
+{
+ drawPoints(points.constData(), points.size());
+}
+inline void QPainter::drawPoints(const QPolygon &points)
+{
+ drawPoints(points.constData(), points.size());
+}
+inline void QPainter::drawRoundRect(int x, int y, int w, int h, int xRnd, int yRnd)
+{
+ drawRoundRect(QRectF(x, y, w, h), xRnd, yRnd);
+}
+inline void QPainter::drawRoundRect(const QRect &rect, int xRnd, int yRnd)
+{
+ drawRoundRect(QRectF(rect), xRnd, yRnd);
+}
+inline void QPainter::drawRoundedRect(int x, int y, int w, int h, qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode)
+{
+ drawRoundedRect(QRectF(x, y, w, h), xRadius, yRadius, mode);
+}
+inline void QPainter::drawRoundedRect(const QRect &rect, qreal xRadius, qreal yRadius,
+ Qt::SizeMode mode)
+{
+ drawRoundedRect(QRectF(rect), xRadius, yRadius, mode);
+}
+inline void QPainter::drawEllipse(int x, int y, int w, int h)
+{
+ drawEllipse(QRect(x, y, w, h));
+}
+inline void QPainter::drawEllipse(const QPointF ¢er, qreal rx, qreal ry)
+{
+ drawEllipse(QRectF(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry));
+}
+inline void QPainter::drawEllipse(const QPoint ¢er, int rx, int ry)
+{
+ drawEllipse(QRect(center.x() - rx, center.y() - ry, 2 * rx, 2 * ry));
+}
+inline void QPainter::drawArc(const QRect &r, int a, int alen)
+{
+ drawArc(QRectF(r), a, alen);
+}
+inline void QPainter::drawArc(int x, int y, int w, int h, int a, int alen)
+{
+ drawArc(QRectF(x, y, w, h), a, alen);
+}
+inline void QPainter::drawPie(const QRect &rect, int a, int alen)
+{
+ drawPie(QRectF(rect), a, alen);
+}
+inline void QPainter::drawPie(int x, int y, int w, int h, int a, int alen)
+{
+ drawPie(QRectF(x, y, w, h), a, alen);
+}
+inline void QPainter::drawChord(const QRect &rect, int a, int alen)
+{
+ drawChord(QRectF(rect), a, alen);
+}
+inline void QPainter::drawChord(int x, int y, int w, int h, int a, int alen)
+{
+ drawChord(QRectF(x, y, w, h), a, alen);
+}
+inline void QPainter::setClipRect(int x, int y, int w, int h, Qt::ClipOperation op)
+{
+ setClipRect(QRect(x, y, w, h), op);
+}
+inline void QPainter::eraseRect(const QRect &rect)
+{
+ eraseRect(QRectF(rect));
+}
+inline void QPainter::eraseRect(int x, int y, int w, int h)
+{
+ eraseRect(QRectF(x, y, w, h));
+}
+inline void QPainter::fillRect(int x, int y, int w, int h, const QBrush &b)
+{
+ fillRect(QRect(x, y, w, h), b);
+}
+inline void QPainter::fillRect(int x, int y, int w, int h, const QColor &b)
+{
+ fillRect(QRect(x, y, w, h), b);
+}
+inline void QPainter::fillRect(int x, int y, int w, int h, Qt::GlobalColor c)
+{
+ fillRect(QRect(x, y, w, h), QColor(c));
+}
+inline void QPainter::fillRect(const QRect &r, Qt::GlobalColor c)
+{
+ fillRect(r, QColor(c));
+}
+inline void QPainter::fillRect(const QRectF &r, Qt::GlobalColor c)
+{
+ fillRect(r, QColor(c));
+}
+inline void QPainter::fillRect(int x, int y, int w, int h, Qt::BrushStyle style)
+{
+ fillRect(QRectF(x, y, w, h), QBrush(style));
+}
+inline void QPainter::fillRect(const QRect &r, Qt::BrushStyle style)
+{
+ fillRect(QRectF(r), QBrush(style));
+}
+inline void QPainter::fillRect(const QRectF &r, Qt::BrushStyle style)
+{
+ fillRect(r, QBrush(style));
+}
+inline void QPainter::setBrushOrigin(int x, int y)
+{
+ setBrushOrigin(QPoint(x, y));
+}
+inline void QPainter::setBrushOrigin(const QPoint &p)
+{
+ setBrushOrigin(QPointF(p));
+}
+inline void QPainter::drawTiledPixmap(const QRect &rect, const QPixmap &pm, const QPoint &offset)
+{
+ drawTiledPixmap(QRectF(rect), pm, QPointF(offset));
+}
+inline void QPainter::drawTiledPixmap(int x, int y, int w, int h, const QPixmap &pm, int sx, int sy)
+{
+ drawTiledPixmap(QRectF(x, y, w, h), pm, QPointF(sx, sy));
+}
+inline void QPainter::drawPixmap(const QRect &targetRect, const QPixmap &pixmap, const QRect &sourceRect)
+{
+ drawPixmap(QRectF(targetRect), pixmap, QRectF(sourceRect));
+}
+inline void QPainter::drawPixmap(const QPoint &p, const QPixmap &pm)
+{
+ drawPixmap(QPointF(p), pm);
+}
+inline void QPainter::drawPixmap(const QRect &r, const QPixmap &pm)
+{
+ drawPixmap(QRectF(r), pm, QRectF());
+}
+inline void QPainter::drawPixmap(int x, int y, const QPixmap &pm)
+{
+ drawPixmap(QPointF(x, y), pm);
+}
+inline void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pm)
+{
+ drawPixmap(QRectF(x, y, w, h), pm, QRectF());
+}
+inline void QPainter::drawPixmap(int x, int y, int w, int h, const QPixmap &pm,
+ int sx, int sy, int sw, int sh)
+{
+ drawPixmap(QRectF(x, y, w, h), pm, QRectF(sx, sy, sw, sh));
+}
+inline void QPainter::drawPixmap(int x, int y, const QPixmap &pm,
+ int sx, int sy, int sw, int sh)
+{
+ drawPixmap(QRectF(x, y, -1, -1), pm, QRectF(sx, sy, sw, sh));
+}
+inline void QPainter::drawPixmap(const QPointF &p, const QPixmap &pm, const QRectF &sr)
+{
+ drawPixmap(QRectF(p.x(), p.y(), -1, -1), pm, sr);
+}
+inline void QPainter::drawPixmap(const QPoint &p, const QPixmap &pm, const QRect &sr)
+{
+ drawPixmap(QRectF(p.x(), p.y(), -1, -1), pm, sr);
+}
+inline void QPainter::drawTextItem(int x, int y, const QTextItem &ti)
+{
+ drawTextItem(QPointF(x, y), ti);
+}
+inline void QPainter::drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect,
+ Qt::ImageConversionFlags flags)
+{
+ drawImage(QRectF(targetRect), image, QRectF(sourceRect), flags);
+}
+inline void QPainter::drawImage(const QPointF &p, const QImage &image, const QRectF &sr,
+ Qt::ImageConversionFlags flags)
+{
+ drawImage(QRectF(p.x(), p.y(), -1, -1), image, sr, flags);
+}
+inline void QPainter::drawImage(const QPoint &p, const QImage &image, const QRect &sr,
+ Qt::ImageConversionFlags flags)
+{
+ drawImage(QRect(p.x(), p.y(), -1, -1), image, sr, flags);
+}
+inline void QPainter::drawImage(const QRectF &r, const QImage &image)
+{
+ drawImage(r, image, QRect(0, 0, image.width(), image.height()));
+}
+inline void QPainter::drawImage(const QRect &r, const QImage &image)
+{
+ drawImage(r, image, QRectF(0, 0, image.width(), image.height()));
+}
+inline void QPainter::drawImage(const QPoint &p, const QImage &image)
+{
+ drawImage(QPointF(p), image);
+}
+inline void QPainter::drawImage(int x, int y, const QImage &image, int sx, int sy, int sw, int sh,
+ Qt::ImageConversionFlags flags)
+{
+ if (sx == 0 && sy == 0 && sw == -1 && sh == -1 && flags == Qt::AutoColor)
+ drawImage(QPointF(x, y), image);
+ else
+ drawImage(QRectF(x, y, -1, -1), image, QRectF(sx, sy, sw, sh), flags);
+}
+inline void QPainter::drawTextItem(const QPoint &p, const QTextItem &ti)
+{
+ drawTextItem(QPointF(p), ti);
+}
+inline void QPainter::drawText(const QPoint &p, const QString &s)
+{
+ drawText(QPointF(p), s);
+}
+inline void QPainter::drawText(int x, int y, int w, int h, int flags, const QString &str, QRect *br)
+{
+ drawText(QRect(x, y, w, h), flags, str, br);
+}
+inline void QPainter::drawText(int x, int y, const QString &s)
+{
+ drawText(QPointF(x, y), s);
+}
+inline QRect QPainter::boundingRect(int x, int y, int w, int h, int flags, const QString &text)
+{
+ return boundingRect(QRect(x, y, w, h), flags, text);
+}
+inline void QPainter::translate(qreal dx, qreal dy)
+{
+ translate(QPointF(dx, dy));
+}
+inline void QPainter::translate(const QPoint &offset)
+{
+ translate(offset.x(), offset.y());
+}
+inline void QPainter::setViewport(int x, int y, int w, int h)
+{
+ setViewport(QRect(x, y, w, h));
+}
+inline void QPainter::setWindow(int x, int y, int w, int h)
+{
+ setWindow(QRect(x, y, w, h));
+}
+inline void QPainter::drawPicture(int x, int y, const QPicture &p)
+{
+ drawPicture(QPoint(x, y), p);
+}
+inline void QPainter::drawPicture(const QPoint &pt, const QPicture &p)
+{
+ drawPicture(QPointF(pt), p);
+}
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QFontEngine;
+class QLineF;
+class QPaintDevice;
+class QPaintEnginePrivate;
+class QPainterPath;
+class QPointF;
+class QPolygonF;
+class QRectF;
+struct QGlyphLayout;
+class QTextItemInt;
+class QPaintEngineState;
+class __attribute__((visibility("default"))) QTextItem {
+public:
+ enum RenderFlag {
+ RightToLeft = 0x1,
+ Overline = 0x10,
+ Underline = 0x20,
+ StrikeOut = 0x40,
+ Dummy = 0xffffffff
+ };
+ typedef QFlags<RenderFlag> RenderFlags;
+ qreal descent() const;
+ qreal ascent() const;
+ qreal width() const;
+ RenderFlags renderFlags() const;
+ QString text() const;
+ QFont font() const;
+};
+template <> class QTypeInfo<QTextItem> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTextItem)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTextItem"; } };
+class __attribute__((visibility("default"))) QPaintEngine
+{
+ inline QPaintEnginePrivate* d_func() { return reinterpret_cast<QPaintEnginePrivate *>(d_ptr); } inline const QPaintEnginePrivate* d_func() const { return reinterpret_cast<const QPaintEnginePrivate *>(d_ptr); } friend class QPaintEnginePrivate;
+public:
+ enum PaintEngineFeature {
+ PrimitiveTransform = 0x00000001,
+ PatternTransform = 0x00000002,
+ PixmapTransform = 0x00000004,
+ PatternBrush = 0x00000008,
+ LinearGradientFill = 0x00000010,
+ RadialGradientFill = 0x00000020,
+ ConicalGradientFill = 0x00000040,
+ AlphaBlend = 0x00000080,
+ PorterDuff = 0x00000100,
+ PainterPaths = 0x00000200,
+ Antialiasing = 0x00000400,
+ BrushStroke = 0x00000800,
+ ConstantOpacity = 0x00001000,
+ MaskedBrush = 0x00002000,
+ PerspectiveTransform = 0x00004000,
+ BlendModes = 0x00008000,
+ ObjectBoundingModeGradients = 0x00010000,
+ RasterOpModes = 0x00020000,
+ PaintOutsidePaintEvent = 0x20000000,
+ AllFeatures = 0xffffffff
+ };
+ typedef QFlags<PaintEngineFeature> PaintEngineFeatures;
+ enum DirtyFlag {
+ DirtyPen = 0x0001,
+ DirtyBrush = 0x0002,
+ DirtyBrushOrigin = 0x0004,
+ DirtyFont = 0x0008,
+ DirtyBackground = 0x0010,
+ DirtyBackgroundMode = 0x0020,
+ DirtyTransform = 0x0040,
+ DirtyClipRegion = 0x0080,
+ DirtyClipPath = 0x0100,
+ DirtyHints = 0x0200,
+ DirtyCompositionMode = 0x0400,
+ DirtyClipEnabled = 0x0800,
+ DirtyOpacity = 0x1000,
+ AllDirty = 0xffff
+ };
+ typedef QFlags<DirtyFlag> DirtyFlags;
+ enum PolygonDrawMode {
+ OddEvenMode,
+ WindingMode,
+ ConvexMode,
+ PolylineMode
+ };
+ explicit QPaintEngine(PaintEngineFeatures features=0);
+ virtual ~QPaintEngine();
+ bool isActive() const { return active; }
+ void setActive(bool newState) { active = newState; }
+ virtual bool begin(QPaintDevice *pdev) = 0;
+ virtual bool end() = 0;
+ virtual void updateState(const QPaintEngineState &state) = 0;
+ virtual void drawRects(const QRect *rects, int rectCount);
+ virtual void drawRects(const QRectF *rects, int rectCount);
+ virtual void drawLines(const QLine *lines, int lineCount);
+ virtual void drawLines(const QLineF *lines, int lineCount);
+ virtual void drawEllipse(const QRectF &r);
+ virtual void drawEllipse(const QRect &r);
+ virtual void drawPath(const QPainterPath &path);
+ virtual void drawPoints(const QPointF *points, int pointCount);
+ virtual void drawPoints(const QPoint *points, int pointCount);
+ virtual void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode);
+ virtual void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode);
+ virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr) = 0;
+ virtual void drawTextItem(const QPointF &p, const QTextItem &textItem);
+ virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s);
+ virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr,
+ Qt::ImageConversionFlags flags = Qt::AutoColor);
+ void setPaintDevice(QPaintDevice *device);
+ QPaintDevice *paintDevice() const;
+ void setSystemClip(const QRegion &baseClip);
+ QRegion systemClip() const;
+ void setSystemRect(const QRect &rect);
+ QRect systemRect() const;
+ virtual QPoint coordinateOffset() const;
+ enum Type {
+ X11,
+ Windows,
+ QuickDraw, CoreGraphics, MacPrinter,
+ QWindowSystem,
+ PostScript,
+ OpenGL,
+ Picture,
+ SVG,
+ Raster,
+ Direct3D,
+ Pdf,
+ OpenVG,
+ User = 50,
+ MaxUser = 100
+ };
+ virtual Type type() const = 0;
+ inline void fix_neg_rect(int *x, int *y, int *w, int *h);
+ inline bool testDirty(DirtyFlags df);
+ inline void setDirty(DirtyFlags df);
+ inline void clearDirty(DirtyFlags df);
+ bool hasFeature(PaintEngineFeatures feature) const { return (gccaps & feature) != 0; }
+ QPainter *painter() const;
+ void syncState();
+ inline bool isExtended() const { return extended; }
+protected:
+ QPaintEngine(QPaintEnginePrivate &data, PaintEngineFeatures devcaps=0);
+ QPaintEngineState *state;
+ PaintEngineFeatures gccaps;
+ uint active : 1;
+ uint selfDestruct : 1;
+ uint extended : 1;
+ QPaintEnginePrivate *d_ptr;
+private:
+ void setAutoDestruct(bool autoDestr) { selfDestruct = autoDestr; }
+ bool autoDestruct() const { return selfDestruct; }
+ QPaintEngine(const QPaintEngine &); QPaintEngine &operator=(const QPaintEngine &);
+ friend class QFontEngineBox;
+ friend class QFontEngineMac;
+ friend class QFontEngineWin;
+ friend class QFontEngineQPF1;
+ friend class QFontEngineQPF;
+ friend class QPSPrintEngine;
+ friend class QMacPrintEngine;
+ friend class QMacPrintEnginePrivate;
+ friend class QtopiaPrintEngine;
+ friend class QtopiaPrintEnginePrivate;
+ friend class QProxyFontEngine;
+ friend class QPainter;
+ friend class QPainterPrivate;
+ friend class QWidget;
+ friend class QWidgetPrivate;
+ friend class QWin32PaintEngine;
+ friend class QWin32PaintEnginePrivate;
+ friend class QMacCGContext;
+ friend class QPreviewPaintEngine;
+};
+class __attribute__((visibility("default"))) QPaintEngineState
+{
+public:
+ QPaintEngine::DirtyFlags state() const { return dirtyFlags; }
+ QPen pen() const;
+ QBrush brush() const;
+ QPointF brushOrigin() const;
+ QBrush backgroundBrush() const;
+ Qt::BGMode backgroundMode() const;
+ QFont font() const;
+ QMatrix matrix() const;
+ QTransform transform() const;
+ Qt::ClipOperation clipOperation() const;
+ QRegion clipRegion() const;
+ QPainterPath clipPath() const;
+ bool isClipEnabled() const;
+ QPainter::RenderHints renderHints() const;
+ QPainter::CompositionMode compositionMode() const;
+ qreal opacity() const;
+ QPainter *painter() const;
+ bool brushNeedsResolving() const;
+ bool penNeedsResolving() const;
+protected:
+ friend class QPaintEngine;
+ friend class QRasterPaintEngine;
+ friend class QWidget;
+ friend class QPainter;
+ friend class QPainterPrivate;
+ friend class QMacPrintEnginePrivate;
+ QPaintEngine::DirtyFlags dirtyFlags;
+};
+inline void QPaintEngine::fix_neg_rect(int *x, int *y, int *w, int *h)
+{
+ if (*w < 0) {
+ *w = -*w;
+ *x -= *w - 1;
+ }
+ if (*h < 0) {
+ *h = -*h;
+ *y -= *h - 1;
+ }
+}
+inline bool QPaintEngine::testDirty(DirtyFlags df) {
+ qt_noop();
+ return ((state->dirtyFlags & df) != 0);
+}
+inline void QPaintEngine::setDirty(DirtyFlags df) {
+ qt_noop();
+ state->dirtyFlags |= df;
+}
+inline void QPaintEngine::clearDirty(DirtyFlags df)
+{
+ qt_noop();
+ state->dirtyFlags &= ~static_cast<uint>(df);
+}
+inline QFlags<QTextItem::RenderFlags::enum_type> operator|(QTextItem::RenderFlags::enum_type f1, QTextItem::RenderFlags::enum_type f2) { return QFlags<QTextItem::RenderFlags::enum_type>(f1) | f2; } inline QFlags<QTextItem::RenderFlags::enum_type> operator|(QTextItem::RenderFlags::enum_type f1, QFlags<QTextItem::RenderFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QTextItem::RenderFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<QPaintEngine::PaintEngineFeatures::enum_type> operator|(QPaintEngine::PaintEngineFeatures::enum_type f1, QPaintEngine::PaintEngineFeatures::enum_type f2) { return QFlags<QPaintEngine::PaintEngineFeatures::enum_type>(f1) | f2; } inline QFlags<QPaintEngine::PaintEngineFeatures::enum_type> operator|(QPaintEngine::PaintEngineFeatures::enum_type f1, QFlags<QPaintEngine::PaintEngineFeatures::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QPaintEngine::PaintEngineFeatures::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+inline QFlags<QPaintEngine::DirtyFlags::enum_type> operator|(QPaintEngine::DirtyFlags::enum_type f1, QPaintEngine::DirtyFlags::enum_type f2) { return QFlags<QPaintEngine::DirtyFlags::enum_type>(f1) | f2; } inline QFlags<QPaintEngine::DirtyFlags::enum_type> operator|(QPaintEngine::DirtyFlags::enum_type f1, QFlags<QPaintEngine::DirtyFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QPaintEngine::DirtyFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QTextObjectPrivate;
+class QTextDocument;
+class QTextDocumentPrivate;
+class QTextCursor;
+class QTextBlock;
+class QTextFragment;
+class QTextLayout;
+class QTextList;
+class __attribute__((visibility("default"))) QTextObject : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+protected:
+ explicit QTextObject(QTextDocument *doc);
+ ~QTextObject();
+ void setFormat(const QTextFormat &format);
+public:
+ QTextFormat format() const;
+ int formatIndex() const;
+ QTextDocument *document() const;
+ int objectIndex() const;
+ QTextDocumentPrivate *docHandle() const;
+protected:
+ QTextObject(QTextObjectPrivate &p, QTextDocument *doc);
+private:
+ inline QTextObjectPrivate* d_func() { return reinterpret_cast<QTextObjectPrivate *>(d_ptr); } inline const QTextObjectPrivate* d_func() const { return reinterpret_cast<const QTextObjectPrivate *>(d_ptr); } friend class QTextObjectPrivate;
+ QTextObject(const QTextObject &); QTextObject &operator=(const QTextObject &);
+ friend class QTextDocumentPrivate;
+};
+class QTextBlockGroupPrivate;
+class __attribute__((visibility("default"))) QTextBlockGroup : public QTextObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+protected:
+ explicit QTextBlockGroup(QTextDocument *doc);
+ ~QTextBlockGroup();
+ virtual void blockInserted(const QTextBlock &block);
+ virtual void blockRemoved(const QTextBlock &block);
+ virtual void blockFormatChanged(const QTextBlock &block);
+ QList<QTextBlock> blockList() const;
+protected:
+ QTextBlockGroup(QTextBlockGroupPrivate &p, QTextDocument *doc);
+private:
+ inline QTextBlockGroupPrivate* d_func() { return reinterpret_cast<QTextBlockGroupPrivate *>(d_ptr); } inline const QTextBlockGroupPrivate* d_func() const { return reinterpret_cast<const QTextBlockGroupPrivate *>(d_ptr); } friend class QTextBlockGroupPrivate;
+ QTextBlockGroup(const QTextBlockGroup &); QTextBlockGroup &operator=(const QTextBlockGroup &);
+ friend class QTextDocumentPrivate;
+};
+class __attribute__((visibility("default"))) QTextFrameLayoutData {
+public:
+ virtual ~QTextFrameLayoutData();
+};
+class QTextFramePrivate;
+class __attribute__((visibility("default"))) QTextFrame : public QTextObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+public:
+ explicit QTextFrame(QTextDocument *doc);
+ ~QTextFrame();
+ inline void setFrameFormat(const QTextFrameFormat &format);
+ QTextFrameFormat frameFormat() const { return QTextObject::format().toFrameFormat(); }
+ QTextCursor firstCursorPosition() const;
+ QTextCursor lastCursorPosition() const;
+ int firstPosition() const;
+ int lastPosition() const;
+ QTextFrameLayoutData *layoutData() const;
+ void setLayoutData(QTextFrameLayoutData *data);
+ QList<QTextFrame *> childFrames() const;
+ QTextFrame *parentFrame() const;
+ class __attribute__((visibility("default"))) iterator {
+ QTextFrame *f;
+ int b;
+ int e;
+ QTextFrame *cf;
+ int cb;
+ friend class QTextFrame;
+ friend class QTextTableCell;
+ friend class QTextDocumentLayoutPrivate;
+ iterator(QTextFrame *frame, int block, int begin, int end);
+ public:
+ iterator();
+ iterator(const iterator &o);
+ iterator &operator=(const iterator &o);
+ QTextFrame *parentFrame() const { return f; }
+ QTextFrame *currentFrame() const;
+ QTextBlock currentBlock() const;
+ bool atEnd() const { return !cf && cb == e; }
+ inline bool operator==(const iterator &o) const { return f == o.f && cf == o.cf && cb == o.cb; }
+ inline bool operator!=(const iterator &o) const { return f != o.f || cf != o.cf || cb != o.cb; }
+ iterator &operator++();
+ inline iterator operator++(int) { iterator tmp = *this; operator++(); return tmp; }
+ iterator &operator--();
+ inline iterator operator--(int) { iterator tmp = *this; operator--(); return tmp; }
+ };
+ friend class iterator;
+ typedef iterator Iterator;
+ iterator begin() const;
+ iterator end() const;
+protected:
+ QTextFrame(QTextFramePrivate &p, QTextDocument *doc);
+private:
+ friend class QTextDocumentPrivate;
+ inline QTextFramePrivate* d_func() { return reinterpret_cast<QTextFramePrivate *>(d_ptr); } inline const QTextFramePrivate* d_func() const { return reinterpret_cast<const QTextFramePrivate *>(d_ptr); } friend class QTextFramePrivate;
+ QTextFrame(const QTextFrame &); QTextFrame &operator=(const QTextFrame &);
+};
+template <> class QTypeInfo<QTextFrame::iterator> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTextFrame::iterator)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTextFrame::iterator"; } };
+inline void QTextFrame::setFrameFormat(const QTextFrameFormat &aformat)
+{ QTextObject::setFormat(aformat); }
+class __attribute__((visibility("default"))) QTextBlockUserData {
+public:
+ virtual ~QTextBlockUserData();
+};
+class __attribute__((visibility("default"))) QTextBlock
+{
+ friend class QSyntaxHighlighter;
+public:
+ inline QTextBlock(QTextDocumentPrivate *priv, int b) : p(priv), n(b) {}
+ inline QTextBlock() : p(0), n(0) {}
+ inline QTextBlock(const QTextBlock &o) : p(o.p), n(o.n) {}
+ inline QTextBlock &operator=(const QTextBlock &o) { p = o.p; n = o.n; return *this; }
+ inline bool isValid() const { return p != 0 && n != 0; }
+ inline bool operator==(const QTextBlock &o) const { return p == o.p && n == o.n; }
+ inline bool operator!=(const QTextBlock &o) const { return p != o.p || n != o.n; }
+ inline bool operator<(const QTextBlock &o) const { return position() < o.position(); }
+ int position() const;
+ int length() const;
+ bool contains(int position) const;
+ QTextLayout *layout() const;
+ void clearLayout();
+ QTextBlockFormat blockFormat() const;
+ int blockFormatIndex() const;
+ QTextCharFormat charFormat() const;
+ int charFormatIndex() const;
+ QString text() const;
+ const QTextDocument *document() const;
+ QTextList *textList() const;
+ QTextBlockUserData *userData() const;
+ void setUserData(QTextBlockUserData *data);
+ int userState() const;
+ void setUserState(int state);
+ int revision() const;
+ void setRevision(int rev);
+ bool isVisible() const;
+ void setVisible(bool visible);
+ int blockNumber() const;
+ int firstLineNumber() const;
+ void setLineCount(int count);
+ int lineCount() const;
+ class __attribute__((visibility("default"))) iterator {
+ const QTextDocumentPrivate *p;
+ int b;
+ int e;
+ int n;
+ friend class QTextBlock;
+ iterator(const QTextDocumentPrivate *priv, int begin, int end, int f) : p(priv), b(begin), e(end), n(f) {}
+ public:
+ iterator() : p(0), b(0), e(0), n(0) {}
+ iterator(const iterator &o) : p(o.p), b(o.b), e(o.e), n(o.n) {}
+ QTextFragment fragment() const;
+ bool atEnd() const { return n == e; }
+ inline bool operator==(const iterator &o) const { return p == o.p && n == o.n; }
+ inline bool operator!=(const iterator &o) const { return p != o.p || n != o.n; }
+ iterator &operator++();
+ inline iterator operator++(int) { iterator tmp = *this; operator++(); return tmp; }
+ iterator &operator--();
+ inline iterator operator--(int) { iterator tmp = *this; operator--(); return tmp; }
+ };
+ typedef iterator Iterator;
+ iterator begin() const;
+ iterator end() const;
+ QTextBlock next() const;
+ QTextBlock previous() const;
+ inline QTextDocumentPrivate *docHandle() const { return p; }
+ inline int fragmentIndex() const { return n; }
+private:
+ QTextDocumentPrivate *p;
+ int n;
+ friend class QTextDocumentPrivate;
+ friend class QTextLayout;
+};
+template <> class QTypeInfo<QTextBlock> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTextBlock)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTextBlock"; } };
+template <> class QTypeInfo<QTextBlock::iterator> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTextBlock::iterator)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTextBlock::iterator"; } };
+class __attribute__((visibility("default"))) QTextFragment
+{
+public:
+ inline QTextFragment(const QTextDocumentPrivate *priv, int f, int fe) : p(priv), n(f), ne(fe) {}
+ inline QTextFragment() : p(0), n(0), ne(0) {}
+ inline QTextFragment(const QTextFragment &o) : p(o.p), n(o.n), ne(o.ne) {}
+ inline QTextFragment &operator=(const QTextFragment &o) { p = o.p; n = o.n; ne = o.ne; return *this; }
+ inline bool isValid() const { return p && n; }
+ inline bool operator==(const QTextFragment &o) const { return p == o.p && n == o.n; }
+ inline bool operator!=(const QTextFragment &o) const { return p != o.p || n != o.n; }
+ inline bool operator<(const QTextFragment &o) const { return position() < o.position(); }
+ int position() const;
+ int length() const;
+ bool contains(int position) const;
+ QTextCharFormat charFormat() const;
+ int charFormatIndex() const;
+ QString text() const;
+private:
+ const QTextDocumentPrivate *p;
+ int n;
+ int ne;
+};
+template <> class QTypeInfo<QTextFragment> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTextFragment)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTextFragment"; } };
+typedef QtValidLicenseForCoreModule QtCoreModule;
+template <class T>
+class QPointer
+{
+ QObject *o;
+public:
+ inline QPointer() : o(0) {}
+ inline QPointer(T *p) : o(p)
+ { QMetaObject::addGuard(&o); }
+ inline QPointer(const QPointer<T> &p) : o(p.o)
+ { QMetaObject::addGuard(&o); }
+ inline ~QPointer()
+ { QMetaObject::removeGuard(&o); }
+ inline QPointer<T> &operator=(const QPointer<T> &p)
+ { if (this != &p) QMetaObject::changeGuard(&o, p.o); return *this; }
+ inline QPointer<T> &operator=(T* p)
+ { if (o != p) QMetaObject::changeGuard(&o, p); return *this; }
+ inline bool isNull() const
+ { return !o; }
+ inline T* operator->() const
+ { return static_cast<T*>(const_cast<QObject*>(o)); }
+ inline T& operator*() const
+ { return *static_cast<T*>(const_cast<QObject*>(o)); }
+ inline operator T*() const
+ { return static_cast<T*>(const_cast<QObject*>(o)); }
+ inline T* data() const
+ { return static_cast<T*>(const_cast<QObject*>(o)); }
+};
+template <class T>
+inline bool operator==(const T *o, const QPointer<T> &p)
+{ return o == p.operator->(); }
+template<class T>
+inline bool operator==(const QPointer<T> &p, const T *o)
+{ return p.operator->() == o; }
+template <class T>
+inline bool operator==(T *o, const QPointer<T> &p)
+{ return o == p.operator->(); }
+template<class T>
+inline bool operator==(const QPointer<T> &p, T *o)
+{ return p.operator->() == o; }
+template<class T>
+inline bool operator==(const QPointer<T> &p1, const QPointer<T> &p2)
+{ return p1.operator->() == p2.operator->(); }
+template <class T>
+inline bool operator!=(const T *o, const QPointer<T> &p)
+{ return o != p.operator->(); }
+template<class T>
+inline bool operator!= (const QPointer<T> &p, const T *o)
+{ return p.operator->() != o; }
+template <class T>
+inline bool operator!=(T *o, const QPointer<T> &p)
+{ return o != p.operator->(); }
+template<class T>
+inline bool operator!= (const QPointer<T> &p, T *o)
+{ return p.operator->() != o; }
+template<class T>
+inline bool operator!= (const QPointer<T> &p1, const QPointer<T> &p2)
+{ return p1.operator->() != p2.operator->() ; }
+typedef QtValidLicenseForCoreModule QtCoreModule;
+struct QReadWriteLockPrivate;
+class __attribute__((visibility("default"))) QReadWriteLock
+{
+public:
+ enum RecursionMode { NonRecursive, Recursive };
+ QReadWriteLock();
+ QReadWriteLock(RecursionMode recursionMode);
+ ~QReadWriteLock();
+ void lockForRead();
+ bool tryLockForRead();
+ bool tryLockForRead(int timeout);
+ void lockForWrite();
+ bool tryLockForWrite();
+ bool tryLockForWrite(int timeout);
+ void unlock();
+private:
+ QReadWriteLock(const QReadWriteLock &); QReadWriteLock &operator=(const QReadWriteLock &);
+ QReadWriteLockPrivate *d;
+ friend class QWaitCondition;
+};
+class __attribute__((visibility("default"))) QReadLocker
+{
+public:
+ inline QReadLocker(QReadWriteLock *readWriteLock);
+ inline ~QReadLocker()
+ { unlock(); }
+ inline void unlock()
+ {
+ if (q_lock) {
+ if ((q_val & quintptr(1u)) == quintptr(1u)) {
+ q_val &= ~quintptr(1u);
+ q_lock->unlock();
+ }
+ }
+ }
+ inline void relock()
+ {
+ if (q_lock) {
+ if ((q_val & quintptr(1u)) == quintptr(0u)) {
+ q_lock->lockForRead();
+ q_val |= quintptr(1u);
+ }
+ }
+ }
+ inline QReadWriteLock *readWriteLock() const
+ { return reinterpret_cast<QReadWriteLock *>(q_val & ~quintptr(1u)); }
+private:
+ QReadLocker(const QReadLocker &); QReadLocker &operator=(const QReadLocker &);
+ union {
+ QReadWriteLock *q_lock;
+ quintptr q_val;
+ };
+};
+inline QReadLocker::QReadLocker(QReadWriteLock *areadWriteLock)
+ : q_lock(areadWriteLock)
+{
+ qt_noop();
+ relock();
+}
+class __attribute__((visibility("default"))) QWriteLocker
+{
+public:
+ inline QWriteLocker(QReadWriteLock *readWriteLock);
+ inline ~QWriteLocker()
+ { unlock(); }
+ inline void unlock()
+ {
+ if (q_lock) {
+ if ((q_val & quintptr(1u)) == quintptr(1u)) {
+ q_val &= ~quintptr(1u);
+ q_lock->unlock();
+ }
+ }
+ }
+ inline void relock()
+ {
+ if (q_lock) {
+ if ((q_val & quintptr(1u)) == quintptr(0u)) {
+ q_lock->lockForWrite();
+ q_val |= quintptr(1u);
+ }
+ }
+ }
+ inline QReadWriteLock *readWriteLock() const
+ { return reinterpret_cast<QReadWriteLock *>(q_val & ~quintptr(1u)); }
+private:
+ QWriteLocker(const QWriteLocker &); QWriteLocker &operator=(const QWriteLocker &);
+ union{
+ QReadWriteLock *q_lock;
+ quintptr q_val;
+ };
+};
+inline QWriteLocker::QWriteLocker(QReadWriteLock *areadWriteLock)
+ : q_lock(areadWriteLock)
+{
+ qt_noop();
+ relock();
+}
+class QVariant;
+class QThreadData;
+class QObjectConnectionListVector;
+struct QSignalSpyCallbackSet
+{
+ typedef void (*BeginCallback)(QObject *caller, int method_index, void **argv);
+ typedef void (*EndCallback)(QObject *caller, int method_index);
+ BeginCallback signal_begin_callback,
+ slot_begin_callback;
+ EndCallback signal_end_callback,
+ slot_end_callback;
+};
+void __attribute__((visibility("default"))) qt_register_signal_spy_callbacks(const QSignalSpyCallbackSet &callback_set);
+extern QSignalSpyCallbackSet __attribute__((visibility("default"))) qt_signal_spy_callback_set;
+inline QObjectData::~QObjectData() {}
+enum { QObjectPrivateVersion = 0x040501 };
+class __attribute__((visibility("default"))) QObjectPrivate : public QObjectData
+{
+ inline QObject* q_func() { return static_cast<QObject *>(q_ptr); } inline const QObject* q_func() const { return static_cast<const QObject *>(q_ptr); } friend class QObject;
+public:
+ QObjectPrivate(int version = QObjectPrivateVersion);
+ virtual ~QObjectPrivate();
+ QList<QObject *> unused;
+ QThreadData *threadData;
+ void moveToThread_helper();
+ void setThreadData_helper(QThreadData *currentData, QThreadData *targetData);
+ void _q_reregisterTimers(void *pointer);
+ struct Sender
+ {
+ QObject *sender;
+ int signal;
+ int ref;
+ };
+ Sender *currentSender;
+ QObject *currentChildBeingDeleted;
+ bool isSender(const QObject *receiver, const char *signal) const;
+ QObjectList receiverList(const char *signal) const;
+ QObjectList senderList() const;
+ QList<QPointer<QObject> > eventFilters;
+ void setParent_helper(QObject *);
+ void deleteChildren();
+ static void clearGuards(QObject *);
+ struct ExtraData
+ {
+ QVector<QObjectUserData *> userData;
+ QList<QByteArray> propertyNames;
+ QList<QVariant> propertyValues;
+ };
+ ExtraData *extraData;
+ mutable quint32 connectedSignals;
+ QString objectName;
+ struct Connection
+ {
+ QObject *receiver;
+ int method;
+ uint connectionType : 3;
+ QBasicAtomicPointer<int> argumentTypes;
+ };
+ typedef QList<Connection> ConnectionList;
+ QObjectConnectionListVector *connectionLists;
+ void addConnection(int signal, Connection *c);
+ void removeReceiver(int signal, QObject *receiver);
+ void cleanConnectionLists();
+ QList<Sender> senders;
+ void refSender(QObject *sender, int signal);
+ void derefSender(QObject *sender, int signal);
+ void removeSender(QObject *sender, int signal);
+ static Sender *setCurrentSender(QObject *receiver,
+ Sender *sender);
+ static void resetCurrentSender(QObject *receiver,
+ Sender *currentSender,
+ Sender *previousSender);
+ static int *setDeleteWatch(QObjectPrivate *d, int *newWatch);
+ static void resetDeleteWatch(QObjectPrivate *d, int *oldWatch, int deleteWatch);
+ int *deleteWatch;
+ static QObjectPrivate *get(QObject *o) {
+ return o->d_func();
+ }
+};
+template <> class QTypeInfo<QObjectPrivate::Connection> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QObjectPrivate::Connection)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QObjectPrivate::Connection"; } };
+template <> class QTypeInfo<QObjectPrivate::Sender> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QObjectPrivate::Sender)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QObjectPrivate::Sender"; } };
+class QSemaphore;
+class __attribute__((visibility("default"))) QMetaCallEvent : public QEvent
+{
+public:
+ QMetaCallEvent(int id, const QObject *sender, int signalId,
+ int nargs = 0, int *types = 0, void **args = 0, QSemaphore *semaphore = 0);
+ ~QMetaCallEvent();
+ inline int id() const { return id_; }
+ inline const QObject *sender() const { return sender_; }
+ inline int signalId() const { return signalId_; }
+ inline void **args() const { return args_; }
+ virtual int placeMetaCall(QObject *object);
+private:
+ int id_;
+ const QObject *sender_;
+ int signalId_;
+ int nargs_;
+ int *types_;
+ void **args_;
+ QSemaphore *semaphore_;
+};
+class __attribute__((visibility("default"))) QBoolBlocker
+{
+public:
+ inline QBoolBlocker(bool &b, bool value=true):block(b), reset(b){block = value;}
+ inline ~QBoolBlocker(){block = reset; }
+private:
+ bool █
+ bool reset;
+};
+void __attribute__((visibility("default"))) qDeleteInEventHandler(QObject *o);
+int __attribute__((visibility("default"))) qAllocMore(int alloc, int extra);
+template <int N = 1>
+class QFragment
+{
+public:
+ quint32 parent;
+ quint32 left;
+ quint32 right;
+ quint32 color;
+ quint32 size_left_array[N];
+ quint32 size_array[N];
+ enum {size_array_max = N };
+};
+template <class Fragment>
+class QFragmentMapData
+{
+ enum Color { Red, Black };
+public:
+ QFragmentMapData();
+ ~QFragmentMapData();
+ void init();
+ class Header
+ {
+ public:
+ quint32 root;
+ quint32 tag;
+ quint32 freelist;
+ quint32 node_count;
+ quint32 allocated;
+ };
+ enum {fragmentSize = sizeof(Fragment) };
+ int length(uint field = 0) const;
+ inline Fragment *fragment(uint index) {
+ return (fragments + index);
+ }
+ inline const Fragment *fragment(uint index) const {
+ return (fragments + index);
+ }
+ inline Fragment &F(uint index) { return fragments[index] ; }
+ inline const Fragment &F(uint index) const { return fragments[index] ; }
+ inline bool isRoot(uint index) const {
+ return !fragment(index)->parent;
+ }
+ inline uint position(uint node, uint field = 0) const {
+ qt_noop();
+ const Fragment *f = fragment(node);
+ uint offset = f->size_left_array[field];
+ while (f->parent) {
+ uint p = f->parent;
+ f = fragment(p);
+ if (f->right == node)
+ offset += f->size_left_array[field] + f->size_array[field];
+ node = p;
+ }
+ return offset;
+ }
+ inline uint sizeRight(uint node, uint field = 0) const {
+ qt_noop();
+ uint sr = 0;
+ const Fragment *f = fragment(node);
+ node = f->right;
+ while (node) {
+ f = fragment(node);
+ sr += f->size_left_array[field] + f->size_array[field];
+ node = f->right;
+ }
+ return sr;
+ }
+ inline uint sizeLeft(uint node, uint field = 0) const {
+ qt_noop();
+ return fragment(node)->size_left_array[field];
+ }
+ inline uint size(uint node, uint field = 0) const {
+ qt_noop();
+ return fragment(node)->size_array[field];
+ }
+ inline void setSize(uint node, int new_size, uint field = 0) {
+ qt_noop();
+ Fragment *f = fragment(node);
+ int diff = new_size - f->size_array[field];
+ f->size_array[field] = new_size;
+ while (f->parent) {
+ uint p = f->parent;
+ f = fragment(p);
+ if (f->left == node)
+ f->size_left_array[field] += diff;
+ node = p;
+ }
+ }
+ uint findNode(int k, uint field = 0) const;
+ uint insert_single(int key, uint length);
+ uint erase_single(uint f);
+ uint minimum(uint n) const {
+ while (n && fragment(n)->left)
+ n = fragment(n)->left;
+ return n;
+ }
+ uint maximum(uint n) const {
+ while (n && fragment(n)->right)
+ n = fragment(n)->right;
+ return n;
+ }
+ uint next(uint n) const;
+ uint previous(uint n) const;
+ inline uint root() const {
+ qt_noop();
+ return head->root;
+ }
+ inline void setRoot(uint new_root) {
+ qt_noop();
+ head->root = new_root;
+ }
+ union {
+ Header *head;
+ Fragment *fragments;
+ };
+private:
+ void rotateLeft(uint x);
+ void rotateRight(uint x);
+ void rebalance(uint x);
+ void removeAndRebalance(uint z);
+ uint createFragment();
+ void freeFragment(uint f);
+};
+template <class Fragment>
+QFragmentMapData<Fragment>::QFragmentMapData()
+{
+ init();
+}
+template <class Fragment>
+void QFragmentMapData<Fragment>::init()
+{
+ fragments = (Fragment *)malloc(64*fragmentSize);
+ head->tag = (((quint32)'p') << 24) | (((quint32)'m') << 16) | (((quint32)'a') << 8) | 'p';
+ head->root = 0;
+ head->freelist = 1;
+ head->node_count = 0;
+ head->allocated = 64;
+ F(head->freelist).right = 0;
+}
+template <class Fragment>
+QFragmentMapData<Fragment>::~QFragmentMapData()
+{
+ free(head);
+}
+template <class Fragment>
+uint QFragmentMapData<Fragment>::createFragment()
+{
+ qt_noop();
+ uint freePos = head->freelist;
+ if (freePos == head->allocated) {
+ uint needed = qAllocMore((freePos+1)*fragmentSize, 0);
+ qt_noop();
+ fragments = (Fragment *)realloc(fragments, needed);
+ head->allocated = needed/fragmentSize;
+ F(freePos).right = 0;
+ }
+ uint nextPos = F(freePos).right;
+ if (!nextPos) {
+ nextPos = freePos+1;
+ if (nextPos < head->allocated)
+ F(nextPos).right = 0;
+ }
+ head->freelist = nextPos;
+ ++head->node_count;
+ return freePos;
+}
+template <class Fragment>
+void QFragmentMapData<Fragment>::freeFragment(uint i)
+{
+ F(i).right = head->freelist;
+ head->freelist = i;
+ --head->node_count;
+}
+template <class Fragment>
+uint QFragmentMapData<Fragment>::next(uint n) const {
+ qt_noop();
+ if (F(n).right) {
+ n = F(n).right;
+ while (F(n).left)
+ n = F(n).left;
+ } else {
+ uint y = F(n).parent;
+ while (F(n).parent && n == F(y).right) {
+ n = y;
+ y = F(y).parent;
+ }
+ n = y;
+ }
+ return n;
+}
+template <class Fragment>
+uint QFragmentMapData<Fragment>::previous(uint n) const {
+ if (!n)
+ return maximum(root());
+ if (F(n).left) {
+ n = F(n).left;
+ while (F(n).right)
+ n = F(n).right;
+ } else {
+ uint y = F(n).parent;
+ while (F(n).parent && n == F(y).left) {
+ n = y;
+ y = F(y).parent;
+ }
+ n = y;
+ }
+ return n;
+}
+template <class Fragment>
+void QFragmentMapData<Fragment>::rotateLeft(uint x)
+{
+ uint p = F(x).parent;
+ uint y = F(x).right;
+ if (y) {
+ F(x).right = F(y).left;
+ if (F(y).left)
+ F(F(y).left).parent = x;
+ F(y).left = x;
+ F(y).parent = p;
+ } else {
+ F(x).right = 0;
+ }
+ if (!p) {
+ qt_noop();
+ head->root = y;
+ }
+ else if (x == F(p).left)
+ F(p).left = y;
+ else
+ F(p).right = y;
+ F(x).parent = y;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(y).size_left_array[field] += F(x).size_left_array[field] + F(x).size_array[field];
+}
+template <class Fragment>
+void QFragmentMapData<Fragment>::rotateRight(uint x)
+{
+ uint y = F(x).left;
+ uint p = F(x).parent;
+ if (y) {
+ F(x).left = F(y).right;
+ if (F(y).right)
+ F(F(y).right).parent = x;
+ F(y).right = x;
+ F(y).parent = p;
+ } else {
+ F(x).left = 0;
+ }
+ if (!p) {
+ qt_noop();
+ head->root = y;
+ }
+ else if (x == F(p).right)
+ F(p).right = y;
+ else
+ F(p).left = y;
+ F(x).parent = y;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(x).size_left_array[field] -= F(y).size_left_array[field] + F(y).size_array[field];
+}
+template <class Fragment>
+void QFragmentMapData<Fragment>::rebalance(uint x)
+{
+ F(x).color = Red;
+ while (F(x).parent && F(F(x).parent).color == Red) {
+ uint p = F(x).parent;
+ uint pp = F(p).parent;
+ qt_noop();
+ if (p == F(pp).left) {
+ uint y = F(pp).right;
+ if (y && F(y).color == Red) {
+ F(p).color = Black;
+ F(y).color = Black;
+ F(pp).color = Red;
+ x = pp;
+ } else {
+ if (x == F(p).right) {
+ x = p;
+ rotateLeft(x);
+ p = F(x).parent;
+ pp = F(p).parent;
+ }
+ F(p).color = Black;
+ if (pp) {
+ F(pp).color = Red;
+ rotateRight(pp);
+ }
+ }
+ } else {
+ uint y = F(pp).left;
+ if (y && F(y).color == Red) {
+ F(p).color = Black;
+ F(y).color = Black;
+ F(pp).color = Red;
+ x = pp;
+ } else {
+ if (x == F(p).left) {
+ x = p;
+ rotateRight(x);
+ p = F(x).parent;
+ pp = F(p).parent;
+ }
+ F(p).color = Black;
+ if (pp) {
+ F(pp).color = Red;
+ rotateLeft(pp);
+ }
+ }
+ }
+ }
+ F(root()).color = Black;
+}
+template <class Fragment>
+uint QFragmentMapData<Fragment>::erase_single(uint z)
+{
+ uint w = previous(z);
+ uint y = z;
+ uint x;
+ uint p;
+ if (!F(y).left) {
+ x = F(y).right;
+ } else if (!F(y).right) {
+ x = F(y).left;
+ } else {
+ y = F(y).right;
+ while (F(y).left)
+ y = F(y).left;
+ x = F(y).right;
+ }
+ if (y != z) {
+ F(F(z).left).parent = y;
+ F(y).left = F(z).left;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(y).size_left_array[field] = F(z).size_left_array[field];
+ if (y != F(z).right) {
+ p = F(y).parent;
+ if (x)
+ F(x).parent = p;
+ F(p).left = x;
+ F(y).right = F(z).right;
+ F(F(z).right).parent = y;
+ uint n = p;
+ while (n != y) {
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(n).size_left_array[field] -= F(y).size_array[field];
+ n = F(n).parent;
+ }
+ } else {
+ p = y;
+ }
+ uint zp = F(z).parent;
+ if (!zp) {
+ qt_noop();
+ head->root = y;
+ } else if (F(zp).left == z) {
+ F(zp).left = y;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(zp).size_left_array[field] -= F(z).size_array[field];
+ } else {
+ F(zp).right = y;
+ }
+ F(y).parent = zp;
+ uint c = F(y).color;
+ F(y).color = F(z).color;
+ F(z).color = c;
+ y = z;
+ } else {
+ p = F(z).parent;
+ if (x)
+ F(x).parent = p;
+ if (!p) {
+ qt_noop();
+ head->root = x;
+ } else if (F(p).left == z) {
+ F(p).left = x;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(p).size_left_array[field] -= F(z).size_array[field];
+ } else {
+ F(p).right = x;
+ }
+ }
+ uint n = z;
+ while (F(n).parent) {
+ uint p = F(n).parent;
+ if (F(p).left == n) {
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(p).size_left_array[field] -= F(z).size_array[field];
+ }
+ n = p;
+ }
+ freeFragment(z);
+ if (F(y).color != Red) {
+ while (F(x).parent && (x == 0 || F(x).color == Black)) {
+ if (x == F(p).left) {
+ uint w = F(p).right;
+ if (F(w).color == Red) {
+ F(w).color = Black;
+ F(p).color = Red;
+ rotateLeft(p);
+ w = F(p).right;
+ }
+ if ((F(w).left == 0 || F(F(w).left).color == Black) &&
+ (F(w).right == 0 || F(F(w).right).color == Black)) {
+ F(w).color = Red;
+ x = p;
+ p = F(x).parent;
+ } else {
+ if (F(w).right == 0 || F(F(w).right).color == Black) {
+ if (F(w).left)
+ F(F(w).left).color = Black;
+ F(w).color = Red;
+ rotateRight(F(p).right);
+ w = F(p).right;
+ }
+ F(w).color = F(p).color;
+ F(p).color = Black;
+ if (F(w).right)
+ F(F(w).right).color = Black;
+ rotateLeft(p);
+ break;
+ }
+ } else {
+ uint w = F(p).left;
+ if (F(w).color == Red) {
+ F(w).color = Black;
+ F(p).color = Red;
+ rotateRight(p);
+ w = F(p).left;
+ }
+ if ((F(w).right == 0 || F(F(w).right).color == Black) &&
+ (F(w).left == 0 || F(F(w).left).color == Black)) {
+ F(w).color = Red;
+ x = p;
+ p = F(x).parent;
+ } else {
+ if (F(w).left == 0 || F(F(w).left).color == Black) {
+ if (F(w).right)
+ F(F(w).right).color = Black;
+ F(w).color = Red;
+ rotateLeft(F(p).left);
+ w = F(p).left;
+ }
+ F(w).color = F(p).color;
+ F(p).color = Black;
+ if (F(w).left)
+ F(F(w).left).color = Black;
+ rotateRight(p);
+ break;
+ }
+ }
+ }
+ if (x)
+ F(x).color = Black;
+ }
+ return w;
+}
+template <class Fragment>
+uint QFragmentMapData<Fragment>::findNode(int k, uint field) const
+{
+ qt_noop();
+ uint x = root();
+ uint s = k;
+ while (x) {
+ if (sizeLeft(x, field) <= s) {
+ if (s < sizeLeft(x, field) + size(x, field))
+ return x;
+ s -= sizeLeft(x, field) + size(x, field);
+ x = F(x).right;
+ } else {
+ x = F(x).left;
+ }
+ }
+ return 0;
+}
+template <class Fragment>
+uint QFragmentMapData<Fragment>::insert_single(int key, uint length)
+{
+ qt_noop();
+ uint z = createFragment();
+ F(z).left = 0;
+ F(z).right = 0;
+ F(z).size_array[0] = length;
+ for (uint field = 1; field < Fragment::size_array_max; ++field)
+ F(z).size_array[field] = 1;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(z).size_left_array[field] = 0;
+ uint y = 0;
+ uint x = root();
+ qt_noop();
+ uint s = key;
+ bool right = false;
+ while (x) {
+ y = x;
+ if (s <= F(x).size_left_array[0]) {
+ x = F(x).left;
+ right = false;
+ } else {
+ s -= F(x).size_left_array[0] + F(x).size_array[0];
+ x = F(x).right;
+ right = true;
+ }
+ }
+ F(z).parent = y;
+ if (!y) {
+ head->root = z;
+ } else if (!right) {
+ F(y).left = z;
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(y).size_left_array[field] = F(z).size_array[field];
+ } else {
+ F(y).right = z;
+ }
+ while (y && F(y).parent) {
+ uint p = F(y).parent;
+ if (F(p).left == y) {
+ for (uint field = 0; field < Fragment::size_array_max; ++field)
+ F(p).size_left_array[field] += F(z).size_array[field];
+ }
+ y = p;
+ }
+ rebalance(z);
+ return z;
+}
+template <class Fragment>
+int QFragmentMapData<Fragment>::length(uint field) const {
+ uint root = this->root();
+ return root ? sizeLeft(root, field) + size(root, field) + sizeRight(root, field) : 0;
+}
+template <class Fragment>
+class QFragmentMap
+{
+public:
+ class Iterator
+ {
+ public:
+ QFragmentMap *pt;
+ quint32 n;
+ Iterator() : pt(0), n(0) {}
+ Iterator(QFragmentMap *p, int node) : pt(p), n(node) {}
+ Iterator(const Iterator& it) : pt(it.pt), n(it.n) {}
+ inline bool atEnd() const { return !n; }
+ bool operator==(const Iterator& it) const { return pt == it.pt && n == it.n; }
+ bool operator!=(const Iterator& it) const { return pt != it.pt || n != it.n; }
+ bool operator<(const Iterator &it) const { return position() < it.position(); }
+ Fragment *operator*() { qt_noop(); return pt->fragment(n); }
+ const Fragment *operator*() const { qt_noop(); return pt->fragment(n); }
+ Fragment *operator->() { qt_noop(); return pt->fragment(n); }
+ const Fragment *operator->() const { qt_noop(); return pt->fragment(n); }
+ int position() const { qt_noop(); return pt->data.position(n); }
+ const Fragment *value() const { qt_noop(); return pt->fragment(n); }
+ Fragment *value() { qt_noop(); return pt->fragment(n); }
+ Iterator& operator++() {
+ n = pt->data.next(n);
+ return *this;
+ }
+ Iterator& operator--() {
+ n = pt->data.previous(n);
+ return *this;
+ }
+ };
+ class ConstIterator
+ {
+ public:
+ const QFragmentMap *pt;
+ quint32 n;
+ ConstIterator() : pt(0), n(0) {}
+ ConstIterator(const QFragmentMap *p, int node) : pt(p), n(node) {}
+ ConstIterator(const ConstIterator& it) : pt(it.pt), n(it.n) {}
+ ConstIterator(const Iterator& it) : pt(it.pt), n(it.n) {}
+ inline bool atEnd() const { return !n; }
+ bool operator==(const ConstIterator& it) const { return pt == it.pt && n == it.n; }
+ bool operator!=(const ConstIterator& it) const { return pt != it.pt || n != it.n; }
+ bool operator<(const ConstIterator &it) const { return position() < it.position(); }
+ const Fragment *operator*() const { qt_noop(); return pt->fragment(n); }
+ const Fragment *operator->() const { qt_noop(); return pt->fragment(n); }
+ int position() const { qt_noop(); return pt->data.position(n); }
+ int size() const { qt_noop(); return pt->data.size(n); }
+ const Fragment *value() const { qt_noop(); return pt->fragment(n); }
+ ConstIterator& operator++() {
+ n = pt->data.next(n);
+ return *this;
+ }
+ ConstIterator& operator--() {
+ n = pt->data.previous(n);
+ return *this;
+ }
+ };
+ QFragmentMap() {}
+ ~QFragmentMap()
+ {
+ for (Iterator it = begin(); !it.atEnd(); ++it)
+ it.value()->free();
+ }
+ inline void clear() {
+ for (Iterator it = begin(); !it.atEnd(); ++it)
+ it.value()->free();
+ ::free(data.head);
+ data.init();
+ }
+ inline Iterator begin() { return Iterator(this, data.minimum(data.root())); }
+ inline Iterator end() { return Iterator(this, 0); }
+ inline ConstIterator begin() const { return ConstIterator(this, data.minimum(data.root())); }
+ inline ConstIterator end() const { return ConstIterator(this, 0); }
+ inline ConstIterator last() const { return ConstIterator(this, data.maximum(data.root())); }
+ inline bool isEmpty() const { return data.head->node_count == 0; }
+ inline int numNodes() const { return data.head->node_count; }
+ int length(uint field = 0) const { return data.length(field); }
+ Iterator find(int k, uint field = 0) { return Iterator(this, data.findNode(k, field)); }
+ ConstIterator find(int k, uint field = 0) const { return ConstIterator(this, data.findNode(k, field)); }
+ uint findNode(int k, uint field = 0) const { return data.findNode(k, field); }
+ uint insert_single(int key, uint length)
+ {
+ uint f = data.insert_single(key, length);
+ if (f != 0) {
+ Fragment *frag = fragment(f);
+ qt_noop();
+ frag->initialize();
+ }
+ return f;
+ }
+ uint erase_single(uint f)
+ {
+ if (f != 0) {
+ Fragment *frag = fragment(f);
+ qt_noop();
+ frag->free();
+ }
+ return data.erase_single(f);
+ }
+ inline Fragment *fragment(uint index) {
+ qt_noop();
+ return data.fragment(index);
+ }
+ inline const Fragment *fragment(uint index) const {
+ qt_noop();
+ return data.fragment(index);
+ }
+ inline uint position(uint node, uint field = 0) const { return data.position(node, field); }
+ inline uint next(uint n) const { return data.next(n); }
+ inline uint previous(uint n) const { return data.previous(n); }
+ inline uint size(uint node, uint field = 0) const { return data.size(node, field); }
+ inline void setSize(uint node, int new_size, uint field = 0)
+ { data.setSize(node, new_size, field);
+ if (node != 0 && field == 0) {
+ Fragment *frag = fragment(node);
+ qt_noop();
+ frag->invalidate();
+ }
+ }
+ inline int firstNode() const { return data.minimum(data.root()); }
+private:
+ friend class Iterator;
+ friend class ConstIterator;
+ QFragmentMapData<Fragment> data;
+ QFragmentMap(const QFragmentMap& m);
+ QFragmentMap& operator= (const QFragmentMap& m);
+};
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QTextFormatCollection;
+class QTextListFormat;
+class QRect;
+class QPainter;
+class QPrinter;
+class QAbstractTextDocumentLayout;
+class QPoint;
+class QTextCursor;
+class QTextObject;
+class QTextFormat;
+class QTextFrame;
+class QTextBlock;
+class QTextCodec;
+class QUrl;
+class QVariant;
+class QRectF;
+class QTextOption;
+template<typename T> class QVector;
+namespace Qt
+{
+ enum HitTestAccuracy { ExactHit, FuzzyHit };
+ enum WhiteSpaceMode {
+ WhiteSpaceNormal,
+ WhiteSpacePre,
+ WhiteSpaceNoWrap,
+ WhiteSpaceModeUndefined = -1
+ };
+ __attribute__((visibility("default"))) bool mightBeRichText(const QString&);
+ __attribute__((visibility("default"))) QString escape(const QString& plain);
+ __attribute__((visibility("default"))) QString convertFromPlainText(const QString &plain, WhiteSpaceMode mode = WhiteSpacePre);
+ __attribute__((visibility("default"))) QTextCodec *codecForHtml(const QByteArray &ba);
+}
+class __attribute__((visibility("default"))) QAbstractUndoItem
+{
+public:
+ virtual ~QAbstractUndoItem() = 0;
+ virtual void undo() = 0;
+ virtual void redo() = 0;
+};
+inline QAbstractUndoItem::~QAbstractUndoItem()
+{
+}
+class QTextDocumentPrivate;
+class __attribute__((visibility("default"))) QTextDocument : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+public:
+ explicit QTextDocument(QObject *parent = 0);
+ explicit QTextDocument(const QString &text, QObject *parent = 0);
+ ~QTextDocument();
+ QTextDocument *clone(QObject *parent = 0) const;
+ bool isEmpty() const;
+ virtual void clear();
+ void setUndoRedoEnabled(bool enable);
+ bool isUndoRedoEnabled() const;
+ bool isUndoAvailable() const;
+ bool isRedoAvailable() const;
+ int revision() const;
+ void setDocumentLayout(QAbstractTextDocumentLayout *layout);
+ QAbstractTextDocumentLayout *documentLayout() const;
+ enum MetaInformation {
+ DocumentTitle,
+ DocumentUrl
+ };
+ void setMetaInformation(MetaInformation info, const QString &);
+ QString metaInformation(MetaInformation info) const;
+ QString toHtml(const QByteArray &encoding = QByteArray()) const;
+ void setHtml(const QString &html);
+ QString toPlainText() const;
+ void setPlainText(const QString &text);
+ QChar characterAt(int pos) const;
+ enum FindFlag
+ {
+ FindBackward = 0x00001,
+ FindCaseSensitively = 0x00002,
+ FindWholeWords = 0x00004
+ };
+ typedef QFlags<FindFlag> FindFlags;
+ QTextCursor find(const QString &subString, int from = 0, FindFlags options = 0) const;
+ QTextCursor find(const QString &subString, const QTextCursor &from, FindFlags options = 0) const;
+ QTextCursor find(const QRegExp &expr, int from = 0, FindFlags options = 0) const;
+ QTextCursor find(const QRegExp &expr, const QTextCursor &from, FindFlags options = 0) const;
+ QTextFrame *frameAt(int pos) const;
+ QTextFrame *rootFrame() const;
+ QTextObject *object(int objectIndex) const;
+ QTextObject *objectForFormat(const QTextFormat &) const;
+ QTextBlock findBlock(int pos) const;
+ QTextBlock findBlockByNumber(int blockNumber) const;
+ QTextBlock findBlockByLineNumber(int blockNumber) const;
+ QTextBlock begin() const;
+ QTextBlock end() const;
+ QTextBlock firstBlock() const;
+ QTextBlock lastBlock() const;
+ void setPageSize(const QSizeF &size);
+ QSizeF pageSize() const;
+ void setDefaultFont(const QFont &font);
+ QFont defaultFont() const;
+ int pageCount() const;
+ bool isModified() const;
+ void print(QPrinter *printer) const;
+ enum ResourceType {
+ HtmlResource = 1,
+ ImageResource = 2,
+ StyleSheetResource = 3,
+ UserResource = 100
+ };
+ QVariant resource(int type, const QUrl &name) const;
+ void addResource(int type, const QUrl &name, const QVariant &resource);
+ QVector<QTextFormat> allFormats() const;
+ void markContentsDirty(int from, int length);
+ void setUseDesignMetrics(bool b);
+ bool useDesignMetrics() const;
+ void drawContents(QPainter *painter, const QRectF &rect = QRectF());
+ void setTextWidth(qreal width);
+ qreal textWidth() const;
+ qreal idealWidth() const;
+ qreal indentWidth() const;
+ void setIndentWidth(qreal width);
+ qreal documentMargin() const;
+ void setDocumentMargin(qreal margin);
+ void adjustSize();
+ QSizeF size() const;
+ int blockCount() const;
+ int lineCount() const;
+ int characterCount() const;
+ void setDefaultStyleSheet(const QString &sheet);
+ QString defaultStyleSheet() const;
+ void undo(QTextCursor *cursor);
+ void redo(QTextCursor *cursor);
+ int maximumBlockCount() const;
+ void setMaximumBlockCount(int maximum);
+ QTextOption defaultTextOption() const;
+ void setDefaultTextOption(const QTextOption &option);
+protected:
+ void contentsChange(int from, int charsRemoves, int charsAdded);
+ void contentsChanged();
+ void undoAvailable(bool);
+ void redoAvailable(bool);
+ void undoCommandAdded();
+ void modificationChanged(bool m);
+ void cursorPositionChanged(const QTextCursor &cursor);
+ void blockCountChanged(int newBlockCount);
+ void documentLayoutChanged();
+public :
+ void undo();
+ void redo();
+ void appendUndoItem(QAbstractUndoItem *);
+ void setModified(bool m = true);
+protected:
+ virtual QTextObject *createObject(const QTextFormat &f);
+ virtual QVariant loadResource(int type, const QUrl &name);
+ QTextDocument(QTextDocumentPrivate &dd, QObject *parent);
+public:
+ QTextDocumentPrivate *docHandle() const;
+private:
+ QTextDocument(const QTextDocument &); QTextDocument &operator=(const QTextDocument &);
+ inline QTextDocumentPrivate* d_func() { return reinterpret_cast<QTextDocumentPrivate *>(d_ptr); } inline const QTextDocumentPrivate* d_func() const { return reinterpret_cast<const QTextDocumentPrivate *>(d_ptr); } friend class QTextDocumentPrivate;
+ friend class QTextObjectPrivate;
+};
+inline QFlags<QTextDocument::FindFlags::enum_type> operator|(QTextDocument::FindFlags::enum_type f1, QTextDocument::FindFlags::enum_type f2) { return QFlags<QTextDocument::FindFlags::enum_type>(f1) | f2; } inline QFlags<QTextDocument::FindFlags::enum_type> operator|(QTextDocument::FindFlags::enum_type f1, QFlags<QTextDocument::FindFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QTextDocument::FindFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QUrlPrivate;
+class QDataStream;
+class __attribute__((visibility("default"))) QUrl
+{
+public:
+ enum ParsingMode {
+ TolerantMode,
+ StrictMode
+ };
+ enum FormattingOption {
+ None = 0x0,
+ RemoveScheme = 0x1,
+ RemovePassword = 0x2,
+ RemoveUserInfo = RemovePassword | 0x4,
+ RemovePort = 0x8,
+ RemoveAuthority = RemoveUserInfo | RemovePort | 0x10,
+ RemovePath = 0x20,
+ RemoveQuery = 0x40,
+ RemoveFragment = 0x80,
+ StripTrailingSlash = 0x10000
+ };
+ typedef QFlags<FormattingOption> FormattingOptions;
+ QUrl();
+ QUrl(const QString &url);
+ QUrl(const QString &url, ParsingMode mode);
+ QUrl(const QUrl ©);
+ QUrl &operator =(const QUrl ©);
+ QUrl &operator =(const QString &url);
+ ~QUrl();
+ void setUrl(const QString &url);
+ void setUrl(const QString &url, ParsingMode mode);
+ void setEncodedUrl(const QByteArray &url);
+ void setEncodedUrl(const QByteArray &url, ParsingMode mode);
+ bool isValid() const;
+ bool isEmpty() const;
+ void clear();
+ void setScheme(const QString &scheme);
+ QString scheme() const;
+ void setAuthority(const QString &authority);
+ QString authority() const;
+ void setUserInfo(const QString &userInfo);
+ QString userInfo() const;
+ void setUserName(const QString &userName);
+ QString userName() const;
+ void setEncodedUserName(const QByteArray &userName);
+ QByteArray encodedUserName() const;
+ void setPassword(const QString &password);
+ QString password() const;
+ void setEncodedPassword(const QByteArray &password);
+ QByteArray encodedPassword() const;
+ void setHost(const QString &host);
+ QString host() const;
+ void setEncodedHost(const QByteArray &host);
+ QByteArray encodedHost() const;
+ void setPort(int port);
+ int port() const;
+ int port(int defaultPort) const;
+ void setPath(const QString &path);
+ QString path() const;
+ void setEncodedPath(const QByteArray &path);
+ QByteArray encodedPath() const;
+ bool hasQuery() const;
+ void setEncodedQuery(const QByteArray &query);
+ QByteArray encodedQuery() const;
+ void setQueryDelimiters(char valueDelimiter, char pairDelimiter);
+ char queryValueDelimiter() const;
+ char queryPairDelimiter() const;
+ void setQueryItems(const QList<QPair<QString, QString> > &query);
+ void addQueryItem(const QString &key, const QString &value);
+ QList<QPair<QString, QString> > queryItems() const;
+ bool hasQueryItem(const QString &key) const;
+ QString queryItemValue(const QString &key) const;
+ QStringList allQueryItemValues(const QString &key) const;
+ void removeQueryItem(const QString &key);
+ void removeAllQueryItems(const QString &key);
+ void setEncodedQueryItems(const QList<QPair<QByteArray, QByteArray> > &query);
+ void addEncodedQueryItem(const QByteArray &key, const QByteArray &value);
+ QList<QPair<QByteArray, QByteArray> > encodedQueryItems() const;
+ bool hasEncodedQueryItem(const QByteArray &key) const;
+ QByteArray encodedQueryItemValue(const QByteArray &key) const;
+ QList<QByteArray> allEncodedQueryItemValues(const QByteArray &key) const;
+ void removeEncodedQueryItem(const QByteArray &key);
+ void removeAllEncodedQueryItems(const QByteArray &key);
+ void setFragment(const QString &fragment);
+ QString fragment() const;
+ void setEncodedFragment(const QByteArray &fragment);
+ QByteArray encodedFragment() const;
+ bool hasFragment() const;
+ QUrl resolved(const QUrl &relative) const;
+ bool isRelative() const;
+ bool isParentOf(const QUrl &url) const;
+ static QUrl fromLocalFile(const QString &localfile);
+ QString toLocalFile() const;
+ QString toString(FormattingOptions options = None) const;
+ QByteArray toEncoded(FormattingOptions options = None) const;
+ static QUrl fromEncoded(const QByteArray &url);
+ static QUrl fromEncoded(const QByteArray &url, ParsingMode mode);
+ void detach();
+ bool isDetached() const;
+ bool operator <(const QUrl &url) const;
+ bool operator ==(const QUrl &url) const;
+ bool operator !=(const QUrl &url) const;
+ static QString fromPercentEncoding(const QByteArray &);
+ static QByteArray toPercentEncoding(const QString &,
+ const QByteArray &exclude = QByteArray(),
+ const QByteArray &include = QByteArray());
+ static QString fromPunycode(const QByteArray &);
+ static QByteArray toPunycode(const QString &);
+ static QString fromAce(const QByteArray &);
+ static QByteArray toAce(const QString &);
+ static QStringList idnWhitelist();
+ static void setIdnWhitelist(const QStringList &);
+ QString errorString() const;
+protected:
+private:
+ QUrlPrivate *d;
+public:
+ typedef QUrlPrivate * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+template <> class QTypeInfo<QUrl> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QUrl)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QUrl"; } };
+template <> inline bool qIsDetached<QUrl>(QUrl &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QUrl>(QUrl &value1, QUrl &value2) { const QUrl::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+inline QFlags<QUrl::FormattingOptions::enum_type> operator|(QUrl::FormattingOptions::enum_type f1, QUrl::FormattingOptions::enum_type f2) { return QFlags<QUrl::FormattingOptions::enum_type>(f1) | f2; } inline QFlags<QUrl::FormattingOptions::enum_type> operator|(QUrl::FormattingOptions::enum_type f1, QFlags<QUrl::FormattingOptions::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QUrl::FormattingOptions::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QUrl &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QUrl &);
+__attribute__((visibility("default"))) QDebug operator<<(QDebug, const QUrl &);
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QPalettePrivate;
+class QVariant;
+class __attribute__((visibility("default"))) QPalette
+{
+ public: static const QMetaObject staticMetaObject; private:
+public:
+ QPalette();
+ QPalette(const QColor &button);
+ QPalette(Qt::GlobalColor button);
+ QPalette(const QColor &button, const QColor &window);
+ QPalette(const QBrush &windowText, const QBrush &button, const QBrush &light,
+ const QBrush &dark, const QBrush &mid, const QBrush &text,
+ const QBrush &bright_text, const QBrush &base, const QBrush &window);
+ QPalette(const QColor &windowText, const QColor &window, const QColor &light,
+ const QColor &dark, const QColor &mid, const QColor &text, const QColor &base);
+ QPalette(const QPalette &palette);
+ ~QPalette();
+ QPalette &operator=(const QPalette &palette);
+ operator QVariant() const;
+ enum ColorGroup { Active, Disabled, Inactive, NColorGroups, Current, All, Normal = Active };
+ enum ColorRole { WindowText, Button, Light, Midlight, Dark, Mid,
+ Text, BrightText, ButtonText, Base, Window, Shadow,
+ Highlight, HighlightedText,
+ Link, LinkVisited,
+ AlternateBase,
+ NoRole,
+ ToolTipBase, ToolTipText,
+ NColorRoles = ToolTipText + 1,
+ Foreground = WindowText, Background = Window
+ };
+ inline ColorGroup currentColorGroup() const { return static_cast<ColorGroup>(current_group); }
+ inline void setCurrentColorGroup(ColorGroup cg) { current_group = cg; }
+ inline const QColor &color(ColorGroup cg, ColorRole cr) const
+ { return brush(cg, cr).color(); }
+ const QBrush &brush(ColorGroup cg, ColorRole cr) const;
+ inline void setColor(ColorGroup cg, ColorRole cr, const QColor &color);
+ inline void setColor(ColorRole cr, const QColor &color);
+ inline void setBrush(ColorRole cr, const QBrush &brush);
+ bool isBrushSet(ColorGroup cg, ColorRole cr) const;
+ void setBrush(ColorGroup cg, ColorRole cr, const QBrush &brush);
+ void setColorGroup(ColorGroup cr, const QBrush &windowText, const QBrush &button,
+ const QBrush &light, const QBrush &dark, const QBrush &mid,
+ const QBrush &text, const QBrush &bright_text, const QBrush &base,
+ const QBrush &window);
+ bool isEqual(ColorGroup cr1, ColorGroup cr2) const;
+ inline const QColor &color(ColorRole cr) const { return color(Current, cr); }
+ inline const QBrush &brush(ColorRole cr) const { return brush(Current, cr); }
+ inline const QBrush &foreground() const { return brush(WindowText); }
+ inline const QBrush &windowText() const { return brush(WindowText); }
+ inline const QBrush &button() const { return brush(Button); }
+ inline const QBrush &light() const { return brush(Light); }
+ inline const QBrush &dark() const { return brush(Dark); }
+ inline const QBrush &mid() const { return brush(Mid); }
+ inline const QBrush &text() const { return brush(Text); }
+ inline const QBrush &base() const { return brush(Base); }
+ inline const QBrush &alternateBase() const { return brush(AlternateBase); }
+ inline const QBrush &toolTipBase() const { return brush(ToolTipBase); }
+ inline const QBrush &toolTipText() const { return brush(ToolTipText); }
+ inline const QBrush &background() const { return brush(Window); }
+ inline const QBrush &window() const { return brush(Window); }
+ inline const QBrush &midlight() const { return brush(Midlight); }
+ inline const QBrush &brightText() const { return brush(BrightText); }
+ inline const QBrush &buttonText() const { return brush(ButtonText); }
+ inline const QBrush &shadow() const { return brush(Shadow); }
+ inline const QBrush &highlight() const { return brush(Highlight); }
+ inline const QBrush &highlightedText() const { return brush(HighlightedText); }
+ inline const QBrush &link() const { return brush(Link); }
+ inline const QBrush &linkVisited() const { return brush(LinkVisited); }
+ bool operator==(const QPalette &p) const;
+ inline bool operator!=(const QPalette &p) const { return !(operator==(p)); }
+ bool isCopyOf(const QPalette &p) const;
+ int serialNumber() const;
+ qint64 cacheKey() const;
+ QPalette resolve(const QPalette &) const;
+ inline uint resolve() const { return resolve_mask; }
+ inline void resolve(uint mask) { resolve_mask = mask; }
+private:
+ void setColorGroup(ColorGroup cr, const QBrush &windowText, const QBrush &button,
+ const QBrush &light, const QBrush &dark, const QBrush &mid,
+ const QBrush &text, const QBrush &bright_text,
+ const QBrush &base, const QBrush &alternate_base,
+ const QBrush &window, const QBrush &midlight,
+ const QBrush &button_text, const QBrush &shadow,
+ const QBrush &highlight, const QBrush &highlighted_text,
+ const QBrush &link, const QBrush &link_visited);
+ void setColorGroup(ColorGroup cr, const QBrush &windowText, const QBrush &button,
+ const QBrush &light, const QBrush &dark, const QBrush &mid,
+ const QBrush &text, const QBrush &bright_text,
+ const QBrush &base, const QBrush &alternate_base,
+ const QBrush &window, const QBrush &midlight,
+ const QBrush &button_text, const QBrush &shadow,
+ const QBrush &highlight, const QBrush &highlighted_text,
+ const QBrush &link, const QBrush &link_visited,
+ const QBrush &toolTipBase, const QBrush &toolTipText);
+ void init();
+ void detach();
+ QPalettePrivate *d;
+ uint current_group : 4;
+ uint resolve_mask : 28;
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &s, const QPalette &p);
+};
+inline void QPalette::setColor(ColorGroup acg, ColorRole acr,
+ const QColor &acolor)
+{ setBrush(acg, acr, QBrush(acolor)); }
+inline void QPalette::setColor(ColorRole acr, const QColor &acolor)
+{ setColor(All, acr, acolor); }
+inline void QPalette::setBrush(ColorRole acr, const QBrush &abrush)
+{ setBrush(All, acr, abrush); }
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &ds, const QPalette &p);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &ds, QPalette &p);
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QIconPrivate;
+class QIconEngine;
+class QIconEngineV2;
+class __attribute__((visibility("default"))) QIcon
+{
+public:
+ enum Mode { Normal, Disabled, Active, Selected };
+ enum State { On, Off };
+ QIcon();
+ QIcon(const QPixmap &pixmap);
+ QIcon(const QIcon &other);
+ explicit QIcon(const QString &fileName);
+ explicit QIcon(QIconEngine *engine);
+ explicit QIcon(QIconEngineV2 *engine);
+ ~QIcon();
+ QIcon &operator=(const QIcon &other);
+ operator QVariant() const;
+ QPixmap pixmap(const QSize &size, Mode mode = Normal, State state = Off) const;
+ inline QPixmap pixmap(int w, int h, Mode mode = Normal, State state = Off) const
+ { return pixmap(QSize(w, h), mode, state); }
+ inline QPixmap pixmap(int extent, Mode mode = Normal, State state = Off) const
+ { return pixmap(QSize(extent, extent), mode, state); }
+ QSize actualSize(const QSize &size, Mode mode = Normal, State state = Off) const;
+ void paint(QPainter *painter, const QRect &rect, Qt::Alignment alignment = Qt::AlignCenter, Mode mode = Normal, State state = Off) const;
+ inline void paint(QPainter *painter, int x, int y, int w, int h, Qt::Alignment alignment = Qt::AlignCenter, Mode mode = Normal, State state = Off) const
+ { paint(painter, QRect(x, y, w, h), alignment, mode, state); }
+ bool isNull() const;
+ bool isDetached() const;
+ void detach();
+ int serialNumber() const;
+ qint64 cacheKey() const;
+ void addPixmap(const QPixmap &pixmap, Mode mode = Normal, State state = Off);
+ void addFile(const QString &fileName, const QSize &size = QSize(), Mode mode = Normal, State state = Off);
+ QList<QSize> availableSizes(Mode mode = Normal, State state = Off) const;
+private:
+ QIconPrivate *d;
+ friend __attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QIcon &);
+ friend __attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QIcon &);
+public:
+ typedef QIconPrivate * DataPtr;
+ inline DataPtr &data_ptr() { return d; }
+};
+template <> inline bool qIsDetached<QIcon>(QIcon &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QIcon>(QIcon &value1, QIcon &value2) { const QIcon::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+template <> class QTypeInfo<QIcon> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QIcon)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QIcon"; } };
+__attribute__((visibility("default"))) QDataStream &operator<<(QDataStream &, const QIcon &);
+__attribute__((visibility("default"))) QDataStream &operator>>(QDataStream &, QIcon &);
+namespace QCss
+{
+enum Property {
+ UnknownProperty,
+ BackgroundColor,
+ Color,
+ Float,
+ Font,
+ FontFamily,
+ FontSize,
+ FontStyle,
+ FontWeight,
+ Margin,
+ MarginBottom,
+ MarginLeft,
+ MarginRight,
+ MarginTop,
+ QtBlockIndent,
+ QtListIndent,
+ QtParagraphType,
+ QtTableType,
+ QtUserState,
+ TextDecoration,
+ TextIndent,
+ TextUnderlineStyle,
+ VerticalAlignment,
+ Whitespace,
+ QtSelectionForeground,
+ QtSelectionBackground,
+ Border,
+ BorderLeft,
+ BorderRight,
+ BorderTop,
+ BorderBottom,
+ Padding,
+ PaddingLeft,
+ PaddingRight,
+ PaddingTop,
+ PaddingBottom,
+ PageBreakBefore,
+ PageBreakAfter,
+ QtAlternateBackground,
+ BorderLeftStyle,
+ BorderRightStyle,
+ BorderTopStyle,
+ BorderBottomStyle,
+ BorderStyles,
+ BorderLeftColor,
+ BorderRightColor,
+ BorderTopColor,
+ BorderBottomColor,
+ BorderColor,
+ BorderLeftWidth,
+ BorderRightWidth,
+ BorderTopWidth,
+ BorderBottomWidth,
+ BorderWidth,
+ BorderTopLeftRadius,
+ BorderTopRightRadius,
+ BorderBottomLeftRadius,
+ BorderBottomRightRadius,
+ BorderRadius,
+ Background,
+ BackgroundOrigin,
+ BackgroundClip,
+ BackgroundRepeat,
+ BackgroundPosition,
+ BackgroundAttachment,
+ BackgroundImage,
+ BorderImage,
+ QtSpacing,
+ Width,
+ Height,
+ MinimumWidth,
+ MinimumHeight,
+ MaximumWidth,
+ MaximumHeight,
+ QtImage,
+ Left,
+ Right,
+ Top,
+ Bottom,
+ QtOrigin,
+ QtPosition,
+ Position,
+ QtStyleFeatures,
+ QtBackgroundRole,
+ ListStyleType,
+ ListStyle,
+ QtImageAlignment,
+ TextAlignment,
+ Outline,
+ OutlineOffset,
+ OutlineWidth,
+ OutlineColor,
+ OutlineStyle,
+ OutlineRadius,
+ OutlineTopLeftRadius,
+ OutlineTopRightRadius,
+ OutlineBottomLeftRadius,
+ OutlineBottomRightRadius,
+ FontVariant,
+ TextTransform,
+ NumProperties
+};
+enum KnownValue {
+ UnknownValue,
+ Value_Normal,
+ Value_Pre,
+ Value_NoWrap,
+ Value_PreWrap,
+ Value_Small,
+ Value_Medium,
+ Value_Large,
+ Value_XLarge,
+ Value_XXLarge,
+ Value_Italic,
+ Value_Oblique,
+ Value_Bold,
+ Value_Underline,
+ Value_Overline,
+ Value_LineThrough,
+ Value_Sub,
+ Value_Super,
+ Value_Left,
+ Value_Right,
+ Value_Top,
+ Value_Bottom,
+ Value_Center,
+ Value_Native,
+ Value_Solid,
+ Value_Dotted,
+ Value_Dashed,
+ Value_DotDash,
+ Value_DotDotDash,
+ Value_Double,
+ Value_Groove,
+ Value_Ridge,
+ Value_Inset,
+ Value_Outset,
+ Value_Wave,
+ Value_Middle,
+ Value_Auto,
+ Value_Always,
+ Value_None,
+ Value_Transparent,
+ Value_Disc,
+ Value_Circle,
+ Value_Square,
+ Value_Decimal,
+ Value_LowerAlpha,
+ Value_UpperAlpha,
+ Value_SmallCaps,
+ Value_Uppercase,
+ Value_Lowercase,
+ Value_FirstColorRole,
+ Value_WindowText = Value_FirstColorRole,
+ Value_Button,
+ Value_Light,
+ Value_Midlight,
+ Value_Dark,
+ Value_Mid,
+ Value_Text,
+ Value_BrightText,
+ Value_ButtonText,
+ Value_Base,
+ Value_Window,
+ Value_Shadow,
+ Value_Highlight,
+ Value_HighlightedText,
+ Value_Link,
+ Value_LinkVisited,
+ Value_AlternateBase,
+ Value_LastColorRole = Value_AlternateBase,
+ Value_Disabled,
+ Value_Active,
+ Value_Selected,
+ Value_On,
+ Value_Off,
+ NumKnownValues
+};
+enum BorderStyle {
+ BorderStyle_Unknown,
+ BorderStyle_None,
+ BorderStyle_Dotted,
+ BorderStyle_Dashed,
+ BorderStyle_Solid,
+ BorderStyle_Double,
+ BorderStyle_DotDash,
+ BorderStyle_DotDotDash,
+ BorderStyle_Groove,
+ BorderStyle_Ridge,
+ BorderStyle_Inset,
+ BorderStyle_Outset,
+ BorderStyle_Native,
+ NumKnownBorderStyles
+};
+enum Edge {
+ TopEdge,
+ RightEdge,
+ BottomEdge,
+ LeftEdge,
+ NumEdges
+};
+enum Corner {
+ TopLeftCorner,
+ TopRightCorner,
+ BottomLeftCorner,
+ BottomRightCorner
+};
+enum TileMode {
+ TileMode_Unknown,
+ TileMode_Round,
+ TileMode_Stretch,
+ TileMode_Repeat,
+ NumKnownTileModes
+};
+enum Repeat {
+ Repeat_Unknown,
+ Repeat_None,
+ Repeat_X,
+ Repeat_Y,
+ Repeat_XY,
+ NumKnownRepeats
+};
+enum Origin {
+ Origin_Unknown,
+ Origin_Padding,
+ Origin_Border,
+ Origin_Content,
+ Origin_Margin,
+ NumKnownOrigins
+};
+enum PositionMode {
+ PositionMode_Unknown,
+ PositionMode_Static,
+ PositionMode_Relative,
+ PositionMode_Absolute,
+ PositionMode_Fixed,
+ NumKnownPositionModes
+};
+enum Attachment {
+ Attachment_Unknown,
+ Attachment_Fixed,
+ Attachment_Scroll,
+ NumKnownAttachments
+};
+enum StyleFeature {
+ StyleFeature_None = 0,
+ StyleFeature_BackgroundColor = 1,
+ StyleFeature_BackgroundGradient = 2,
+ NumKnownStyleFeatures = 4
+};
+struct __attribute__((visibility("default"))) Value
+{
+ enum Type {
+ Unknown,
+ Number,
+ Percentage,
+ Length,
+ String,
+ Identifier,
+ KnownIdentifier,
+ Uri,
+ Color,
+ Function,
+ TermOperatorSlash,
+ TermOperatorComma
+ };
+ inline Value() : type(Unknown) { }
+ Type type;
+ QVariant variant;
+ QString toString() const;
+};
+struct ColorData {
+ ColorData() : type(Invalid) {}
+ ColorData(const QColor &col) : color(col) , type(Color) {}
+ ColorData(QPalette::ColorRole r) : role(r) , type(Role) {}
+ QColor color;
+ QPalette::ColorRole role;
+ enum { Invalid, Color, Role} type;
+};
+struct BrushData {
+ BrushData() : type(Invalid) {}
+ BrushData(const QBrush &br) : brush(br) , type(Brush) {}
+ BrushData(QPalette::ColorRole r) : role(r) , type(Role) {}
+ QBrush brush;
+ QPalette::ColorRole role;
+ enum { Invalid, Brush, Role, DependsOnThePalette } type;
+};
+struct BackgroundData {
+ BrushData brush;
+ QString image;
+ Repeat repeat;
+ Qt::Alignment alignment;
+};
+struct LengthData {
+ qreal number;
+ enum { None, Px, Ex, Em } unit;
+};
+struct BorderData {
+ LengthData width;
+ BorderStyle style;
+ BrushData color;
+};
+struct __attribute__((visibility("default"))) Declaration
+{
+ struct DeclarationData : public QSharedData
+ {
+ inline DeclarationData() : propertyId(UnknownProperty), important(false) {}
+ QString property;
+ Property propertyId;
+ QVector<Value> values;
+ QVariant parsed;
+ bool important;
+ };
+ QExplicitlySharedDataPointer<DeclarationData> d;
+ inline Declaration() : d(new DeclarationData()) {}
+ inline bool isEmpty() const { return d->property.isEmpty() && d->propertyId == UnknownProperty; }
+ QColor colorValue(const QPalette & = QPalette()) const;
+ void colorValues(QColor *c, const QPalette & = QPalette()) const;
+ QBrush brushValue(const QPalette & = QPalette()) const;
+ void brushValues(QBrush *c, const QPalette & = QPalette()) const;
+ BorderStyle styleValue() const;
+ void styleValues(BorderStyle *s) const;
+ Origin originValue() const;
+ Repeat repeatValue() const;
+ Qt::Alignment alignmentValue() const;
+ PositionMode positionValue() const;
+ Attachment attachmentValue() const;
+ int styleFeaturesValue() const;
+ bool intValue(int *i, const char *unit = 0) const;
+ bool realValue(qreal *r, const char *unit = 0) const;
+ QSize sizeValue() const;
+ QRect rectValue() const;
+ QString uriValue() const;
+ QIcon iconValue() const;
+ void borderImageValue(QString *image, int *cuts, TileMode *h, TileMode *v) const;
+};
+const quint64 PseudoClass_Unknown = static_cast<unsigned long long>(0x0000000000000000ULL);
+const quint64 PseudoClass_Enabled = static_cast<unsigned long long>(0x0000000000000001ULL);
+const quint64 PseudoClass_Disabled = static_cast<unsigned long long>(0x0000000000000002ULL);
+const quint64 PseudoClass_Pressed = static_cast<unsigned long long>(0x0000000000000004ULL);
+const quint64 PseudoClass_Focus = static_cast<unsigned long long>(0x0000000000000008ULL);
+const quint64 PseudoClass_Hover = static_cast<unsigned long long>(0x0000000000000010ULL);
+const quint64 PseudoClass_Checked = static_cast<unsigned long long>(0x0000000000000020ULL);
+const quint64 PseudoClass_Unchecked = static_cast<unsigned long long>(0x0000000000000040ULL);
+const quint64 PseudoClass_Indeterminate = static_cast<unsigned long long>(0x0000000000000080ULL);
+const quint64 PseudoClass_Unspecified = static_cast<unsigned long long>(0x0000000000000100ULL);
+const quint64 PseudoClass_Selected = static_cast<unsigned long long>(0x0000000000000200ULL);
+const quint64 PseudoClass_Horizontal = static_cast<unsigned long long>(0x0000000000000400ULL);
+const quint64 PseudoClass_Vertical = static_cast<unsigned long long>(0x0000000000000800ULL);
+const quint64 PseudoClass_Window = static_cast<unsigned long long>(0x0000000000001000ULL);
+const quint64 PseudoClass_Children = static_cast<unsigned long long>(0x0000000000002000ULL);
+const quint64 PseudoClass_Sibling = static_cast<unsigned long long>(0x0000000000004000ULL);
+const quint64 PseudoClass_Default = static_cast<unsigned long long>(0x0000000000008000ULL);
+const quint64 PseudoClass_First = static_cast<unsigned long long>(0x0000000000010000ULL);
+const quint64 PseudoClass_Last = static_cast<unsigned long long>(0x0000000000020000ULL);
+const quint64 PseudoClass_Middle = static_cast<unsigned long long>(0x0000000000040000ULL);
+const quint64 PseudoClass_OnlyOne = static_cast<unsigned long long>(0x0000000000080000ULL);
+const quint64 PseudoClass_PreviousSelected = static_cast<unsigned long long>(0x0000000000100000ULL);
+const quint64 PseudoClass_NextSelected = static_cast<unsigned long long>(0x0000000000200000ULL);
+const quint64 PseudoClass_Flat = static_cast<unsigned long long>(0x0000000000400000ULL);
+const quint64 PseudoClass_Left = static_cast<unsigned long long>(0x0000000000800000ULL);
+const quint64 PseudoClass_Right = static_cast<unsigned long long>(0x0000000001000000ULL);
+const quint64 PseudoClass_Top = static_cast<unsigned long long>(0x0000000002000000ULL);
+const quint64 PseudoClass_Bottom = static_cast<unsigned long long>(0x0000000004000000ULL);
+const quint64 PseudoClass_Exclusive = static_cast<unsigned long long>(0x0000000008000000ULL);
+const quint64 PseudoClass_NonExclusive = static_cast<unsigned long long>(0x0000000010000000ULL);
+const quint64 PseudoClass_Frameless = static_cast<unsigned long long>(0x0000000020000000ULL);
+const quint64 PseudoClass_ReadOnly = static_cast<unsigned long long>(0x0000000040000000ULL);
+const quint64 PseudoClass_Active = static_cast<unsigned long long>(0x0000000080000000ULL);
+const quint64 PseudoClass_Closable = static_cast<unsigned long long>(0x0000000100000000ULL);
+const quint64 PseudoClass_Movable = static_cast<unsigned long long>(0x0000000200000000ULL);
+const quint64 PseudoClass_Floatable = static_cast<unsigned long long>(0x0000000400000000ULL);
+const quint64 PseudoClass_Minimized = static_cast<unsigned long long>(0x0000000800000000ULL);
+const quint64 PseudoClass_Maximized = static_cast<unsigned long long>(0x0000001000000000ULL);
+const quint64 PseudoClass_On = static_cast<unsigned long long>(0x0000002000000000ULL);
+const quint64 PseudoClass_Off = static_cast<unsigned long long>(0x0000004000000000ULL);
+const quint64 PseudoClass_Editable = static_cast<unsigned long long>(0x0000008000000000ULL);
+const quint64 PseudoClass_Item = static_cast<unsigned long long>(0x0000010000000000ULL);
+const quint64 PseudoClass_Closed = static_cast<unsigned long long>(0x0000020000000000ULL);
+const quint64 PseudoClass_Open = static_cast<unsigned long long>(0x0000040000000000ULL);
+const quint64 PseudoClass_EditFocus = static_cast<unsigned long long>(0x0000080000000000ULL);
+const quint64 PseudoClass_Alternate = static_cast<unsigned long long>(0x0000100000000000ULL);
+const quint64 PseudoClass_Any = static_cast<unsigned long long>(0x0000ffffffffffffULL);
+const int NumPseudos = 46;
+struct __attribute__((visibility("default"))) Pseudo
+{
+ Pseudo() : negated(false) { }
+ quint64 type;
+ QString name;
+ QString function;
+ bool negated;
+};
+struct __attribute__((visibility("default"))) AttributeSelector
+{
+ enum ValueMatchType {
+ NoMatch,
+ MatchEqual,
+ MatchContains,
+ MatchBeginsWith
+ };
+ inline AttributeSelector() : valueMatchCriterium(NoMatch) {}
+ QString name;
+ QString value;
+ ValueMatchType valueMatchCriterium;
+};
+struct __attribute__((visibility("default"))) BasicSelector
+{
+ inline BasicSelector() : relationToNext(NoRelation) {}
+ enum Relation {
+ NoRelation,
+ MatchNextSelectorIfAncestor,
+ MatchNextSelectorIfParent,
+ MatchNextSelectorIfPreceeds
+ };
+ QString elementName;
+ QStringList ids;
+ QVector<Pseudo> pseudos;
+ QVector<AttributeSelector> attributeSelectors;
+ Relation relationToNext;
+};
+struct __attribute__((visibility("default"))) Selector
+{
+ QVector<BasicSelector> basicSelectors;
+ int specificity() const;
+ quint64 pseudoClass(quint64 *negated = 0) const;
+ QString pseudoElement() const;
+};
+struct StyleRule;
+struct MediaRule;
+struct PageRule;
+struct ImportRule;
+struct __attribute__((visibility("default"))) ValueExtractor
+{
+ ValueExtractor(const QVector<Declaration> &declarations, const QPalette & = QPalette());
+ bool extractFont(QFont *font, int *fontSizeAdjustment);
+ bool extractBackground(QBrush *, QString *, Repeat *, Qt::Alignment *, QCss::Origin *, QCss::Attachment *,
+ QCss::Origin *);
+ bool extractGeometry(int *w, int *h, int *minw, int *minh, int *maxw, int *maxh);
+ bool extractPosition(int *l, int *t, int *r, int *b, QCss::Origin *, Qt::Alignment *,
+ QCss::PositionMode *, Qt::Alignment *);
+ bool extractBox(int *margins, int *paddings, int *spacing = 0);
+ bool extractBorder(int *borders, QBrush *colors, BorderStyle *Styles, QSize *radii);
+ bool extractOutline(int *borders, QBrush *colors, BorderStyle *Styles, QSize *radii, int *offsets);
+ bool extractPalette(QBrush *fg, QBrush *sfg, QBrush *sbg, QBrush *abg);
+ int extractStyleFeatures();
+ bool extractImage(QIcon *icon, Qt::Alignment *a, QSize *size);
+ int lengthValue(const Declaration &decl);
+private:
+ void extractFont();
+ void borderValue(const Declaration &decl, int *width, QCss::BorderStyle *style, QBrush *color);
+ LengthData lengthValue(const Value& v);
+ void lengthValues(const Declaration &decl, int *m);
+ QSize sizeValue(const Declaration &decl);
+ void sizeValues(const Declaration &decl, QSize *radii);
+ QVector<Declaration> declarations;
+ QFont f;
+ int adjustment;
+ int fontExtracted;
+ QPalette pal;
+};
+struct __attribute__((visibility("default"))) StyleRule
+{
+ StyleRule() : order(0) { }
+ QVector<Selector> selectors;
+ QVector<Declaration> declarations;
+ int order;
+};
+struct __attribute__((visibility("default"))) MediaRule
+{
+ QStringList media;
+ QVector<StyleRule> styleRules;
+};
+struct __attribute__((visibility("default"))) PageRule
+{
+ QString selector;
+ QVector<Declaration> declarations;
+};
+struct __attribute__((visibility("default"))) ImportRule
+{
+ QString href;
+ QStringList media;
+};
+enum StyleSheetOrigin {
+ StyleSheetOrigin_Unspecified,
+ StyleSheetOrigin_UserAgent,
+ StyleSheetOrigin_User,
+ StyleSheetOrigin_Author,
+ StyleSheetOrigin_Inline
+};
+struct __attribute__((visibility("default"))) StyleSheet
+{
+ StyleSheet() : origin(StyleSheetOrigin_Unspecified), depth(0) { }
+ QVector<StyleRule> styleRules;
+ QVector<MediaRule> mediaRules;
+ QVector<PageRule> pageRules;
+ QVector<ImportRule> importRules;
+ StyleSheetOrigin origin;
+ int depth;
+ QMultiHash<QString, StyleRule> nameIndex;
+ QMultiHash<QString, StyleRule> idIndex;
+ void buildIndexes(Qt::CaseSensitivity nameCaseSensitivity = Qt::CaseSensitive);
+};
+class __attribute__((visibility("default"))) StyleSelector
+{
+public:
+ StyleSelector() : nameCaseSensitivity(Qt::CaseSensitive) {}
+ virtual ~StyleSelector();
+ union NodePtr {
+ void *ptr;
+ int id;
+ };
+ QVector<StyleRule> styleRulesForNode(NodePtr node);
+ QVector<Declaration> declarationsForNode(NodePtr node, const char *extraPseudo = 0);
+ virtual bool nodeNameEquals(NodePtr node, const QString& nodeName) const;
+ virtual QString attribute(NodePtr node, const QString &name) const = 0;
+ virtual bool hasAttributes(NodePtr node) const = 0;
+ virtual QStringList nodeIds(NodePtr node) const;
+ virtual QStringList nodeNames(NodePtr node) const = 0;
+ virtual bool isNullNode(NodePtr node) const = 0;
+ virtual NodePtr parentNode(NodePtr node) const = 0;
+ virtual NodePtr previousSiblingNode(NodePtr node) const = 0;
+ virtual NodePtr duplicateNode(NodePtr node) const = 0;
+ virtual void freeNode(NodePtr node) const = 0;
+ QVector<StyleSheet> styleSheets;
+ QString medium;
+ Qt::CaseSensitivity nameCaseSensitivity;
+private:
+ void matchRule(NodePtr node, const StyleRule &rules, StyleSheetOrigin origin,
+ int depth, QMap<uint, StyleRule> *weightedRules);
+ bool selectorMatches(const Selector &rule, NodePtr node);
+ bool basicSelectorMatches(const BasicSelector &rule, NodePtr node);
+};
+enum TokenType {
+ NONE,
+ S,
+ CDO,
+ CDC,
+ INCLUDES,
+ DASHMATCH,
+ LBRACE,
+ PLUS,
+ GREATER,
+ COMMA,
+ STRING,
+ INVALID,
+ IDENT,
+ HASH,
+ ATKEYWORD_SYM,
+ EXCLAMATION_SYM,
+ LENGTH,
+ PERCENTAGE,
+ NUMBER,
+ FUNCTION,
+ COLON,
+ SEMICOLON,
+ RBRACE,
+ SLASH,
+ MINUS,
+ DOT,
+ STAR,
+ LBRACKET,
+ RBRACKET,
+ EQUAL,
+ LPAREN,
+ RPAREN,
+ OR
+};
+struct __attribute__((visibility("default"))) Symbol
+{
+ inline Symbol() : start(0), len(-1) {}
+ TokenType token;
+ QString text;
+ int start, len;
+ QString lexem() const;
+};
+class Scanner
+{
+public:
+ static QString preprocess(const QString &input, bool *hasEscapeSequences = 0);
+ static void scan(const QString &preprocessedInput, QVector<Symbol> *symbols);
+ static const char *tokenName(TokenType t);
+};
+class __attribute__((visibility("default"))) Parser
+{
+public:
+ Parser();
+ Parser(const QString &css, bool file = false);
+ void init(const QString &css, bool file = false);
+ bool parse(StyleSheet *styleSheet, Qt::CaseSensitivity nameCaseSensitivity = Qt::CaseSensitive);
+ Symbol errorSymbol();
+ bool parseImport(ImportRule *importRule);
+ bool parseMedia(MediaRule *mediaRule);
+ bool parseMedium(QStringList *media);
+ bool parsePage(PageRule *pageRule);
+ bool parsePseudoPage(QString *selector);
+ bool parseNextOperator(Value *value);
+ bool parseCombinator(BasicSelector::Relation *relation);
+ bool parseProperty(Declaration *decl);
+ bool parseRuleset(StyleRule *styleRule);
+ bool parseSelector(Selector *sel);
+ bool parseSimpleSelector(BasicSelector *basicSel);
+ bool parseClass(QString *name);
+ bool parseElementName(QString *name);
+ bool parseAttrib(AttributeSelector *attr);
+ bool parsePseudo(Pseudo *pseudo);
+ bool parseNextDeclaration(Declaration *declaration);
+ bool parsePrio(Declaration *declaration);
+ bool parseExpr(QVector<Value> *values);
+ bool parseTerm(Value *value);
+ bool parseFunction(QString *name, QString *args);
+ bool parseHexColor(QColor *col);
+ bool testAndParseUri(QString *uri);
+ inline bool testRuleset() { return testSelector(); }
+ inline bool testSelector() { return testSimpleSelector(); }
+ inline bool parseNextSelector(Selector *sel) { if (!testSelector()) return recordError(); return parseSelector(sel); }
+ bool testSimpleSelector();
+ inline bool parseNextSimpleSelector(BasicSelector *basicSel) { if (!testSimpleSelector()) return recordError(); return parseSimpleSelector(basicSel); }
+ inline bool testElementName() { return test(IDENT) || test(STAR); }
+ inline bool testClass() { return test(DOT); }
+ inline bool testAttrib() { return test(LBRACKET); }
+ inline bool testPseudo() { return test(COLON); }
+ inline bool testMedium() { return test(IDENT); }
+ inline bool parseNextMedium(QStringList *media) { if (!testMedium()) return recordError(); return parseMedium(media); }
+ inline bool testPseudoPage() { return test(COLON); }
+ inline bool testImport() { return testTokenAndEndsWith(ATKEYWORD_SYM, QLatin1String("import")); }
+ inline bool testMedia() { return testTokenAndEndsWith(ATKEYWORD_SYM, QLatin1String("media")); }
+ inline bool testPage() { return testTokenAndEndsWith(ATKEYWORD_SYM, QLatin1String("page")); }
+ inline bool testCombinator() { return test(PLUS) || test(GREATER) || test(S); }
+ inline bool testProperty() { return test(IDENT); }
+ bool testTerm();
+ inline bool testExpr() { return testTerm(); }
+ inline bool parseNextExpr(QVector<Value> *values) { if (!testExpr()) return recordError(); return parseExpr(values); }
+ bool testPrio();
+ inline bool testHexColor() { return test(HASH); }
+ inline bool testFunction() { return test(FUNCTION); }
+ inline bool parseNextFunction(QString *name, QString *args) { if (!testFunction()) return recordError(); return parseFunction(name, args); }
+ inline bool lookupElementName() const { return lookup() == IDENT || lookup() == STAR; }
+ inline void skipSpace() { while (test(S)) {}; }
+ inline bool hasNext() const { return index < symbols.count(); }
+ inline TokenType next() { return symbols.at(index++).token; }
+ bool next(TokenType t);
+ bool test(TokenType t);
+ inline void prev() { index--; }
+ inline const Symbol &symbol() const { return symbols.at(index - 1); }
+ inline QString lexem() const { return symbol().lexem(); }
+ QString unquotedLexem() const;
+ QString lexemUntil(TokenType t);
+ bool until(TokenType target, TokenType target2 = NONE);
+ inline TokenType lookup() const {
+ return (index - 1) < symbols.count() ? symbols.at(index - 1).token : NONE;
+ }
+ bool testTokenAndEndsWith(TokenType t, const QLatin1String &str);
+ inline bool recordError() { errorIndex = index; return false; }
+ QVector<Symbol> symbols;
+ int index;
+ int errorIndex;
+ bool hasEscapeSequences;
+ QString sourcePath;
+};
+}
+ template <> struct QMetaTypeId< QCss::BackgroundData > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { (0) }; if (!metatype_id) metatype_id = qRegisterMetaType< QCss::BackgroundData >("QCss::BackgroundData"); return metatype_id; } };
+ template <> struct QMetaTypeId< QCss::LengthData > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { (0) }; if (!metatype_id) metatype_id = qRegisterMetaType< QCss::LengthData >("QCss::LengthData"); return metatype_id; } };
+ template <> struct QMetaTypeId< QCss::BorderData > { enum { Defined = 1 }; static int qt_metatype_id() { static QBasicAtomicInt metatype_id = { (0) }; if (!metatype_id) metatype_id = qRegisterMetaType< QCss::BorderData >("QCss::BorderData"); return metatype_id; } };
+class QTextFormatCollection;
+class QTextFormat;
+class QTextBlockFormat;
+class QTextCursorPrivate;
+class QAbstractTextDocumentLayout;
+class QTextDocument;
+class QTextFrame;
+class QTextFragmentData : public QFragment<>
+{
+public:
+ inline void initialize() {}
+ inline void invalidate() const {}
+ inline void free() {}
+ int stringPosition;
+ int format;
+};
+class QTextBlockData : public QFragment<3>
+{
+public:
+ inline void initialize()
+ { layout = 0; userData = 0; userState = -1; revision = 0; hidden = 0; }
+ void invalidate() const;
+ inline void free()
+ { delete layout; layout = 0; delete userData; userData = 0; }
+ mutable int format;
+ mutable QTextLayout *layout;
+ mutable QTextBlockUserData *userData;
+ mutable int userState;
+ mutable int revision : 31;
+ mutable uint hidden : 1;
+};
+class QAbstractUndoItem;
+class QTextUndoCommand
+{
+public:
+ enum Command {
+ Inserted = 0,
+ Removed = 1,
+ CharFormatChanged = 2,
+ BlockFormatChanged = 3,
+ BlockInserted = 4,
+ BlockRemoved = 5,
+ BlockAdded = 6,
+ BlockDeleted = 7,
+ GroupFormatChange = 8,
+ Custom = 256
+ };
+ enum Operation {
+ KeepCursor = 0,
+ MoveCursor = 1
+ };
+ quint16 command;
+ quint8 block;
+ quint8 operation;
+ int format;
+ quint32 strPos;
+ quint32 pos;
+ union {
+ int blockFormat;
+ quint32 length;
+ QAbstractUndoItem *custom;
+ int objectIndex;
+ };
+ quint32 revision;
+ bool tryMerge(const QTextUndoCommand &other);
+};
+template <> class QTypeInfo<QTextUndoCommand> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QTextUndoCommand)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QTextUndoCommand"; } };
+class QTextDocumentPrivate : public QObjectPrivate
+{
+ inline QTextDocument* q_func() { return static_cast<QTextDocument *>(q_ptr); } inline const QTextDocument* q_func() const { return static_cast<const QTextDocument *>(q_ptr); } friend class QTextDocument;
+public:
+ typedef QFragmentMap<QTextFragmentData> FragmentMap;
+ typedef FragmentMap::ConstIterator FragmentIterator;
+ typedef QFragmentMap<QTextBlockData> BlockMap;
+ QTextDocumentPrivate();
+ ~QTextDocumentPrivate();
+ void init();
+ void clear();
+ void setLayout(QAbstractTextDocumentLayout *layout);
+ void insert(int pos, const QString &text, int format);
+ void insert(int pos, int strPos, int strLength, int format);
+ int insertBlock(int pos, int blockFormat, int charFormat, QTextUndoCommand::Operation = QTextUndoCommand::MoveCursor);
+ int insertBlock(const QChar &blockSeparator, int pos, int blockFormat, int charFormat,
+ QTextUndoCommand::Operation op = QTextUndoCommand::MoveCursor);
+ void move(int from, int to, int length, QTextUndoCommand::Operation = QTextUndoCommand::MoveCursor);
+ void remove(int pos, int length, QTextUndoCommand::Operation = QTextUndoCommand::MoveCursor);
+ void aboutToRemoveCell(int cursorFrom, int cursorEnd);
+ QTextFrame *insertFrame(int start, int end, const QTextFrameFormat &format);
+ void removeFrame(QTextFrame *frame);
+ enum FormatChangeMode { MergeFormat, SetFormat, SetFormatAndPreserveObjectIndices };
+ void setCharFormat(int pos, int length, const QTextCharFormat &newFormat, FormatChangeMode mode = SetFormat);
+ void setBlockFormat(const QTextBlock &from, const QTextBlock &to,
+ const QTextBlockFormat &newFormat, FormatChangeMode mode = SetFormat);
+ void emitUndoAvailable(bool available);
+ void emitRedoAvailable(bool available);
+ int undoRedo(bool undo);
+ inline void undo() { undoRedo(true); }
+ inline void redo() { undoRedo(false); }
+ void appendUndoItem(QAbstractUndoItem *);
+ inline void beginEditBlock() { editBlock++; }
+ void joinPreviousEditBlock();
+ void endEditBlock();
+ inline bool isInEditBlock() const { return editBlock; }
+ void enableUndoRedo(bool enable);
+ inline bool isUndoRedoEnabled() const { return undoEnabled; }
+ inline bool isUndoAvailable() const { return undoEnabled && undoState > 0; }
+ inline bool isRedoAvailable() const { return undoEnabled && undoState < undoStack.size(); }
+ inline QString buffer() const { return text; }
+ QString plainText() const;
+ inline int length() const { return fragments.length(); }
+ inline QTextFormatCollection *formatCollection() { return &formats; }
+ inline const QTextFormatCollection *formatCollection() const { return &formats; }
+ inline QAbstractTextDocumentLayout *layout() const { return lout; }
+ inline FragmentIterator find(int pos) const { return fragments.find(pos); }
+ inline FragmentIterator begin() const { return fragments.begin(); }
+ inline FragmentIterator end() const { return fragments.end(); }
+ inline QTextBlock blocksBegin() const { return QTextBlock(const_cast<QTextDocumentPrivate *>(this), blocks.firstNode()); }
+ inline QTextBlock blocksEnd() const { return QTextBlock(const_cast<QTextDocumentPrivate *>(this), 0); }
+ inline QTextBlock blocksFind(int pos) const { return QTextBlock(const_cast<QTextDocumentPrivate *>(this), blocks.findNode(pos)); }
+ int blockCharFormatIndex(int node) const;
+ inline int numBlocks() const { return blocks.numNodes(); }
+ const BlockMap &blockMap() const { return blocks; }
+ const FragmentMap &fragmentMap() const { return fragments; }
+ BlockMap &blockMap() { return blocks; }
+ FragmentMap &fragmentMap() { return fragments; }
+ static const QTextBlockData *block(const QTextBlock &it) { return it.p->blocks.fragment(it.n); }
+ int nextCursorPosition(int position, QTextLayout::CursorMode mode) const;
+ int previousCursorPosition(int position, QTextLayout::CursorMode mode) const;
+ void changeObjectFormat(QTextObject *group, int format);
+ void setModified(bool m);
+ inline bool isModified() const { return modified; }
+ inline QFont defaultFont() const { return formats.defaultFont(); }
+ inline void setDefaultFont(const QFont &f) { formats.setDefaultFont(f); }
+private:
+ bool split(int pos);
+ bool unite(uint f);
+ void truncateUndoStack();
+ void insert_string(int pos, uint strPos, uint length, int format, QTextUndoCommand::Operation op);
+ int insert_block(int pos, uint strPos, int format, int blockformat, QTextUndoCommand::Operation op, int command);
+ int remove_string(int pos, uint length, QTextUndoCommand::Operation op);
+ int remove_block(int pos, int *blockformat, int command, QTextUndoCommand::Operation op);
+ void insert_frame(QTextFrame *f);
+ void scan_frames(int pos, int charsRemoved, int charsAdded);
+ static void clearFrame(QTextFrame *f);
+ void adjustDocumentChangesAndCursors(int from, int addedOrRemoved, QTextUndoCommand::Operation op);
+ bool wasUndoAvailable;
+ bool wasRedoAvailable;
+public:
+ void documentChange(int from, int length);
+ inline void addCursor(QTextCursorPrivate *c) { cursors.append(c); }
+ inline void removeCursor(QTextCursorPrivate *c) { cursors.removeAll(c); changedCursors.removeAll(c); }
+ QTextFrame *frameAt(int pos) const;
+ QTextFrame *rootFrame() const;
+ QTextObject *objectForIndex(int objectIndex) const;
+ QTextObject *objectForFormat(int formatIndex) const;
+ QTextObject *objectForFormat(const QTextFormat &f) const;
+ QTextObject *createObject(const QTextFormat &newFormat, int objectIndex = -1);
+ void deleteObject(QTextObject *object);
+ QTextDocument *document() { return q_func(); }
+ const QTextDocument *document() const { return q_func(); }
+ bool ensureMaximumBlockCount();
+private:
+ QTextDocumentPrivate(const QTextDocumentPrivate& m);
+ QTextDocumentPrivate& operator= (const QTextDocumentPrivate& m);
+ void appendUndoItem(const QTextUndoCommand &c);
+ void contentsChanged();
+ void compressPieceTable();
+ QString text;
+ uint unreachableCharacterCount;
+ QVector<QTextUndoCommand> undoStack;
+ bool undoEnabled;
+ int undoState;
+ int modifiedState;
+ bool modified;
+ int editBlock;
+ int docChangeFrom;
+ int docChangeOldLength;
+ int docChangeLength;
+ bool framesDirty;
+ QTextFormatCollection formats;
+ mutable QTextFrame *rtFrame;
+ QAbstractTextDocumentLayout *lout;
+ FragmentMap fragments;
+ BlockMap blocks;
+ int initialBlockCharFormatIndex;
+ QList<QTextCursorPrivate*> cursors;
+ QList<QTextCursorPrivate*> changedCursors;
+ QMap<int, QTextObject *> objects;
+ QMap<QUrl, QVariant> resources;
+ QMap<QUrl, QVariant> cachedResources;
+ QString defaultStyleSheet;
+ int lastBlockCount;
+public:
+ QTextOption defaultTextOption;
+ QCss::StyleSheet parsedDefaultStyleSheet;
+ int maximumBlockCount;
+ bool needsEnsureMaximumBlockCount;
+ bool inContentsChange;
+ QSizeF pageSize;
+ QString title;
+ QString url;
+ qreal indentWidth;
+ qreal documentMargin;
+ void mergeCachedResources(const QTextDocumentPrivate *priv);
+ friend class QTextHtmlExporter;
+ friend class QTextCursor;
+};
+class QTextTable;
+class QTextHtmlExporter
+{
+public:
+ QTextHtmlExporter(const QTextDocument *_doc);
+ enum ExportMode {
+ ExportEntireDocument,
+ ExportFragment
+ };
+ QString toHtml(const QByteArray &encoding, ExportMode mode = ExportEntireDocument);
+private:
+ enum StyleMode { EmitStyleTag, OmitStyleTag };
+ enum FrameType { TextFrame, TableFrame, RootFrame };
+ void emitFrame(QTextFrame::Iterator frameIt);
+ void emitTextFrame(const QTextFrame *frame);
+ void emitBlock(const QTextBlock &block);
+ void emitTable(const QTextTable *table);
+ void emitFragment(const QTextFragment &fragment);
+ void emitBlockAttributes(const QTextBlock &block);
+ bool emitCharFormatStyle(const QTextCharFormat &format);
+ void emitTextLength(const char *attribute, const QTextLength &length);
+ void emitAlignment(Qt::Alignment alignment);
+ void emitFloatStyle(QTextFrameFormat::Position pos, StyleMode mode = EmitStyleTag);
+ void emitMargins(const QString &top, const QString &bottom, const QString &left, const QString &right);
+ void emitAttribute(const char *attribute, const QString &value);
+ void emitFrameStyle(const QTextFrameFormat &format, FrameType frameType);
+ void emitBorderStyle(QTextFrameFormat::BorderStyle style);
+ void emitPageBreakPolicy(QTextFormat::PageBreakFlags policy);
+ void emitFontFamily(const QString &family);
+ void emitBackgroundAttribute(const QTextFormat &format);
+ QString findUrlForImage(const QTextDocument *doc, qint64 cacheKey, bool isPixmap);
+ QString html;
+ QTextCharFormat defaultCharFormat;
+ const QTextDocument *doc;
+ bool fragmentMarkers;
+};
+extern "C" {
+typedef char hb_int8;
+typedef unsigned char hb_uint8;
+typedef short hb_int16;
+typedef unsigned short hb_uint16;
+typedef int hb_int32;
+typedef unsigned int hb_uint32;
+typedef hb_uint8 HB_Bool;
+typedef hb_uint8 HB_Byte;
+typedef hb_uint16 HB_UShort;
+typedef hb_uint32 HB_UInt;
+typedef hb_int8 HB_Char;
+typedef hb_int16 HB_Short;
+typedef hb_int32 HB_Int;
+typedef hb_uint16 HB_UChar16;
+typedef hb_uint32 HB_UChar32;
+typedef hb_uint32 HB_Glyph;
+typedef hb_int32 HB_Fixed;
+typedef hb_int32 HB_16Dot16;
+typedef void * HB_Pointer;
+typedef hb_uint32 HB_Tag;
+typedef enum {
+ HB_Err_Ok = 0x0000,
+ HB_Err_Not_Covered = 0xFFFF,
+ HB_Err_Invalid_Argument = 0x1A66,
+ HB_Err_Invalid_SubTable_Format = 0x157F,
+ HB_Err_Invalid_SubTable = 0x1570,
+ HB_Err_Read_Error = 0x6EAD,
+ HB_Err_Out_Of_Memory = 0xDEAD
+} HB_Error;
+typedef struct {
+ HB_Fixed x;
+ HB_Fixed y;
+} HB_FixedPoint;
+typedef struct HB_Font_ *HB_Font;
+typedef struct HB_StreamRec_ *HB_Stream;
+typedef struct HB_FaceRec_ *HB_Face;
+}
+extern "C" {
+struct HB_LangSys_
+{
+ HB_UShort LookupOrderOffset;
+ HB_UShort ReqFeatureIndex;
+ HB_UShort FeatureCount;
+ HB_UShort* FeatureIndex;
+};
+typedef struct HB_LangSys_ HB_LangSys;
+struct HB_LangSysRecord_
+{
+ HB_UInt LangSysTag;
+ HB_LangSys LangSys;
+};
+typedef struct HB_LangSysRecord_ HB_LangSysRecord;
+struct HB_ScriptTable_
+{
+ HB_LangSys DefaultLangSys;
+ HB_UShort LangSysCount;
+ HB_LangSysRecord* LangSysRecord;
+};
+typedef struct HB_ScriptTable_ HB_ScriptTable;
+struct HB_ScriptRecord_
+{
+ HB_UInt ScriptTag;
+ HB_ScriptTable Script;
+};
+typedef struct HB_ScriptRecord_ HB_ScriptRecord;
+struct HB_ScriptList_
+{
+ HB_UShort ScriptCount;
+ HB_ScriptRecord* ScriptRecord;
+};
+typedef struct HB_ScriptList_ HB_ScriptList;
+struct HB_Feature_
+{
+ HB_UShort FeatureParams;
+ HB_UShort LookupListCount;
+ HB_UShort* LookupListIndex;
+};
+typedef struct HB_Feature_ HB_Feature;
+struct HB_FeatureRecord_
+{
+ HB_UInt FeatureTag;
+ HB_Feature Feature;
+};
+typedef struct HB_FeatureRecord_ HB_FeatureRecord;
+struct HB_FeatureList_
+{
+ HB_UShort FeatureCount;
+ HB_FeatureRecord* FeatureRecord;
+ HB_UShort* ApplyOrder;
+ HB_UShort ApplyCount;
+};
+typedef struct HB_FeatureList_ HB_FeatureList;
+typedef struct HB_SubTable_ HB_SubTable;
+struct HB_Lookup_
+{
+ HB_UShort LookupType;
+ HB_UShort LookupFlag;
+ HB_UShort SubTableCount;
+ HB_SubTable* SubTable;
+};
+typedef struct HB_Lookup_ HB_Lookup;
+struct HB_LookupList_
+{
+ HB_UShort LookupCount;
+ HB_Lookup* Lookup;
+ HB_UInt* Properties;
+};
+typedef struct HB_LookupList_ HB_LookupList;
+struct HB_CoverageFormat1_
+{
+ HB_UShort GlyphCount;
+ HB_UShort* GlyphArray;
+};
+typedef struct HB_CoverageFormat1_ HB_CoverageFormat1;
+struct HB_RangeRecord_
+{
+ HB_UShort Start;
+ HB_UShort End;
+ HB_UShort StartCoverageIndex;
+};
+typedef struct HB_RangeRecord_ HB_RangeRecord;
+struct HB_CoverageFormat2_
+{
+ HB_UShort RangeCount;
+ HB_RangeRecord* RangeRecord;
+};
+typedef struct HB_CoverageFormat2_ HB_CoverageFormat2;
+struct HB_Coverage_
+{
+ HB_UShort CoverageFormat;
+ union
+ {
+ HB_CoverageFormat1 cf1;
+ HB_CoverageFormat2 cf2;
+ } cf;
+};
+typedef struct HB_Coverage_ HB_Coverage;
+struct HB_ClassDefFormat1_
+{
+ HB_UShort StartGlyph;
+ HB_UShort GlyphCount;
+ HB_UShort* ClassValueArray;
+};
+typedef struct HB_ClassDefFormat1_ HB_ClassDefFormat1;
+struct HB_ClassRangeRecord_
+{
+ HB_UShort Start;
+ HB_UShort End;
+ HB_UShort Class;
+};
+typedef struct HB_ClassRangeRecord_ HB_ClassRangeRecord;
+struct HB_ClassDefFormat2_
+{
+ HB_UShort ClassRangeCount;
+ HB_ClassRangeRecord* ClassRangeRecord;
+};
+typedef struct HB_ClassDefFormat2_ HB_ClassDefFormat2;
+struct HB_ClassDefinition_
+{
+ HB_Bool loaded;
+ HB_UShort ClassFormat;
+ union
+ {
+ HB_ClassDefFormat1 cd1;
+ HB_ClassDefFormat2 cd2;
+ } cd;
+};
+typedef struct HB_ClassDefinition_ HB_ClassDefinition;
+struct HB_Device_
+{
+ HB_UShort StartSize;
+ HB_UShort EndSize;
+ HB_UShort DeltaFormat;
+ HB_UShort* DeltaValue;
+};
+typedef struct HB_Device_ HB_Device;
+enum HB_Type_
+{
+ HB_Type_GSUB,
+ HB_Type_GPOS
+};
+typedef enum HB_Type_ HB_Type;
+}
+extern "C" {
+typedef struct HB_StreamRec_
+{
+ HB_Byte* base;
+ HB_UInt size;
+ HB_UInt pos;
+ HB_Byte* cursor;
+} HB_StreamRec;
+}
+extern "C" {
+typedef struct HB_AttachPoint_ HB_AttachPoint;
+struct HB_AttachList_
+{
+ HB_Bool loaded;
+ HB_Coverage Coverage;
+ HB_UShort GlyphCount;
+ HB_AttachPoint* AttachPoint;
+};
+typedef struct HB_AttachList_ HB_AttachList;
+typedef struct HB_LigGlyph_ HB_LigGlyph;
+struct HB_LigCaretList_
+{
+ HB_Bool loaded;
+ HB_Coverage Coverage;
+ HB_UShort LigGlyphCount;
+ HB_LigGlyph* LigGlyph;
+};
+typedef struct HB_LigCaretList_ HB_LigCaretList;
+struct HB_GDEFHeader_
+{
+ HB_UInt offset;
+ HB_16Dot16 Version;
+ HB_ClassDefinition GlyphClassDef;
+ HB_AttachList AttachList;
+ HB_LigCaretList LigCaretList;
+ HB_UInt MarkAttachClassDef_offset;
+ HB_ClassDefinition MarkAttachClassDef;
+ HB_UShort LastGlyph;
+ HB_UShort** NewGlyphClasses;
+};
+typedef struct HB_GDEFHeader_ HB_GDEFHeader;
+typedef struct HB_GDEFHeader_* HB_GDEF;
+HB_Error HB_New_GDEF_Table( HB_GDEFHeader** retptr );
+HB_Error HB_Load_GDEF_Table( HB_Stream stream,
+ HB_GDEFHeader** gdef );
+HB_Error HB_Done_GDEF_Table ( HB_GDEFHeader* gdef );
+HB_Error HB_GDEF_Get_Glyph_Property( HB_GDEFHeader* gdef,
+ HB_UShort glyphID,
+ HB_UShort* property );
+HB_Error HB_GDEF_Build_ClassDefinition( HB_GDEFHeader* gdef,
+ HB_UShort num_glyphs,
+ HB_UShort glyph_count,
+ HB_UShort* glyph_array,
+ HB_UShort* class_array );
+}
+extern "C" {
+typedef struct HB_GlyphItemRec_ {
+ HB_UInt gindex;
+ HB_UInt properties;
+ HB_UInt cluster;
+ HB_UShort component;
+ HB_UShort ligID;
+ HB_UShort gproperties;
+} HB_GlyphItemRec, *HB_GlyphItem;
+typedef struct HB_PositionRec_ {
+ HB_Fixed x_pos;
+ HB_Fixed y_pos;
+ HB_Fixed x_advance;
+ HB_Fixed y_advance;
+ HB_UShort back;
+ HB_Bool new_advance;
+ HB_Short cursive_chain;
+} HB_PositionRec, *HB_Position;
+typedef struct HB_BufferRec_{
+ HB_UInt allocated;
+ HB_UInt in_length;
+ HB_UInt out_length;
+ HB_UInt in_pos;
+ HB_UInt out_pos;
+ HB_Bool separate_out;
+ HB_GlyphItem in_string;
+ HB_GlyphItem out_string;
+ HB_GlyphItem alt_string;
+ HB_Position positions;
+ HB_UShort max_ligID;
+} HB_BufferRec, *HB_Buffer;
+HB_Error
+hb_buffer_new( HB_Buffer *buffer );
+void
+hb_buffer_free( HB_Buffer buffer );
+void
+hb_buffer_clear( HB_Buffer buffer );
+HB_Error
+hb_buffer_add_glyph( HB_Buffer buffer,
+ HB_UInt glyph_index,
+ HB_UInt properties,
+ HB_UInt cluster );
+}
+extern "C" {
+typedef HB_Error (*HB_MMFunction)(HB_Font font,
+ HB_UShort metric_id,
+ HB_Fixed* metric_value,
+ void* data );
+struct HB_GPOSHeader_
+{
+ HB_16Dot16 Version;
+ HB_ScriptList ScriptList;
+ HB_FeatureList FeatureList;
+ HB_LookupList LookupList;
+ HB_GDEFHeader* gdef;
+ HB_MMFunction mmfunc;
+ void* data;
+};
+typedef struct HB_GPOSHeader_ HB_GPOSHeader;
+typedef HB_GPOSHeader* HB_GPOS;
+HB_Error HB_Load_GPOS_Table( HB_Stream stream,
+ HB_GPOSHeader** gpos,
+ HB_GDEFHeader* gdef,
+ HB_Stream gdefStream );
+HB_Error HB_Done_GPOS_Table( HB_GPOSHeader* gpos );
+HB_Error HB_GPOS_Select_Script( HB_GPOSHeader* gpos,
+ HB_UInt script_tag,
+ HB_UShort* script_index );
+HB_Error HB_GPOS_Select_Language( HB_GPOSHeader* gpos,
+ HB_UInt language_tag,
+ HB_UShort script_index,
+ HB_UShort* language_index,
+ HB_UShort* req_feature_index );
+HB_Error HB_GPOS_Select_Feature( HB_GPOSHeader* gpos,
+ HB_UInt feature_tag,
+ HB_UShort script_index,
+ HB_UShort language_index,
+ HB_UShort* feature_index );
+HB_Error HB_GPOS_Query_Scripts( HB_GPOSHeader* gpos,
+ HB_UInt** script_tag_list );
+HB_Error HB_GPOS_Query_Languages( HB_GPOSHeader* gpos,
+ HB_UShort script_index,
+ HB_UInt** language_tag_list );
+HB_Error HB_GPOS_Query_Features( HB_GPOSHeader* gpos,
+ HB_UShort script_index,
+ HB_UShort language_index,
+ HB_UInt** feature_tag_list );
+HB_Error HB_GPOS_Add_Feature( HB_GPOSHeader* gpos,
+ HB_UShort feature_index,
+ HB_UInt property );
+HB_Error HB_GPOS_Clear_Features( HB_GPOSHeader* gpos );
+HB_Error HB_GPOS_Register_MM_Function( HB_GPOSHeader* gpos,
+ HB_MMFunction mmfunc,
+ void* data );
+HB_Error HB_GPOS_Apply_String( HB_Font font,
+ HB_GPOSHeader* gpos,
+ HB_UShort load_flags,
+ HB_Buffer buffer,
+ HB_Bool dvi,
+ HB_Bool r2l );
+}
+extern "C" {
+typedef HB_UShort (*HB_AltFunction)(HB_UInt pos,
+ HB_UShort glyphID,
+ HB_UShort num_alternates,
+ HB_UShort* alternates,
+ void* data );
+struct HB_GSUBHeader_
+{
+ HB_UInt offset;
+ HB_16Dot16 Version;
+ HB_ScriptList ScriptList;
+ HB_FeatureList FeatureList;
+ HB_LookupList LookupList;
+ HB_GDEFHeader* gdef;
+ HB_AltFunction altfunc;
+ void* data;
+};
+typedef struct HB_GSUBHeader_ HB_GSUBHeader;
+typedef HB_GSUBHeader* HB_GSUB;
+HB_Error HB_Load_GSUB_Table( HB_Stream stream,
+ HB_GSUBHeader** gsub,
+ HB_GDEFHeader* gdef,
+ HB_Stream gdefStream );
+HB_Error HB_Done_GSUB_Table( HB_GSUBHeader* gsub );
+HB_Error HB_GSUB_Select_Script( HB_GSUBHeader* gsub,
+ HB_UInt script_tag,
+ HB_UShort* script_index );
+HB_Error HB_GSUB_Select_Language( HB_GSUBHeader* gsub,
+ HB_UInt language_tag,
+ HB_UShort script_index,
+ HB_UShort* language_index,
+ HB_UShort* req_feature_index );
+HB_Error HB_GSUB_Select_Feature( HB_GSUBHeader* gsub,
+ HB_UInt feature_tag,
+ HB_UShort script_index,
+ HB_UShort language_index,
+ HB_UShort* feature_index );
+HB_Error HB_GSUB_Query_Scripts( HB_GSUBHeader* gsub,
+ HB_UInt** script_tag_list );
+HB_Error HB_GSUB_Query_Languages( HB_GSUBHeader* gsub,
+ HB_UShort script_index,
+ HB_UInt** language_tag_list );
+HB_Error HB_GSUB_Query_Features( HB_GSUBHeader* gsub,
+ HB_UShort script_index,
+ HB_UShort language_index,
+ HB_UInt** feature_tag_list );
+HB_Error HB_GSUB_Add_Feature( HB_GSUBHeader* gsub,
+ HB_UShort feature_index,
+ HB_UInt property );
+HB_Error HB_GSUB_Clear_Features( HB_GSUBHeader* gsub );
+HB_Error HB_GSUB_Register_Alternate_Function( HB_GSUBHeader* gsub,
+ HB_AltFunction altfunc,
+ void* data );
+HB_Error HB_GSUB_Apply_String( HB_GSUBHeader* gsub,
+ HB_Buffer buffer );
+}
+extern "C" {
+typedef enum {
+ HB_LineBreak_OP, HB_LineBreak_CL, HB_LineBreak_QU, HB_LineBreak_GL, HB_LineBreak_NS,
+ HB_LineBreak_EX, HB_LineBreak_SY, HB_LineBreak_IS, HB_LineBreak_PR, HB_LineBreak_PO,
+ HB_LineBreak_NU, HB_LineBreak_AL, HB_LineBreak_ID, HB_LineBreak_IN, HB_LineBreak_HY,
+ HB_LineBreak_BA, HB_LineBreak_BB, HB_LineBreak_B2, HB_LineBreak_ZW, HB_LineBreak_CM,
+ HB_LineBreak_WJ, HB_LineBreak_H2, HB_LineBreak_H3, HB_LineBreak_JL, HB_LineBreak_JV,
+ HB_LineBreak_JT, HB_LineBreak_SA, HB_LineBreak_SG,
+ HB_LineBreak_SP, HB_LineBreak_CR, HB_LineBreak_LF, HB_LineBreak_BK
+} HB_LineBreakClass;
+typedef enum
+{
+ HB_NoCategory,
+ HB_Mark_NonSpacing,
+ HB_Mark_SpacingCombining,
+ HB_Mark_Enclosing,
+ HB_Number_DecimalDigit,
+ HB_Number_Letter,
+ HB_Number_Other,
+ HB_Separator_Space,
+ HB_Separator_Line,
+ HB_Separator_Paragraph,
+ HB_Other_Control,
+ HB_Other_Format,
+ HB_Other_Surrogate,
+ HB_Other_PrivateUse,
+ HB_Other_NotAssigned,
+ HB_Letter_Uppercase,
+ HB_Letter_Lowercase,
+ HB_Letter_Titlecase,
+ HB_Letter_Modifier,
+ HB_Letter_Other,
+ HB_Punctuation_Connector,
+ HB_Punctuation_Dash,
+ HB_Punctuation_Open,
+ HB_Punctuation_Close,
+ HB_Punctuation_InitialQuote,
+ HB_Punctuation_FinalQuote,
+ HB_Punctuation_Other,
+ HB_Symbol_Math,
+ HB_Symbol_Currency,
+ HB_Symbol_Modifier,
+ HB_Symbol_Other
+} HB_CharCategory;
+typedef enum
+{
+ HB_Grapheme_Other,
+ HB_Grapheme_CR,
+ HB_Grapheme_LF,
+ HB_Grapheme_Control,
+ HB_Grapheme_Extend,
+ HB_Grapheme_L,
+ HB_Grapheme_V,
+ HB_Grapheme_T,
+ HB_Grapheme_LV,
+ HB_Grapheme_LVT
+} HB_GraphemeClass;
+typedef enum
+{
+ HB_Word_Other,
+ HB_Word_Format,
+ HB_Word_Katakana,
+ HB_Word_ALetter,
+ HB_Word_MidLetter,
+ HB_Word_MidNum,
+ HB_Word_Numeric,
+ HB_Word_ExtendNumLet
+} HB_WordClass;
+typedef enum
+{
+ HB_Sentence_Other,
+ HB_Sentence_Sep,
+ HB_Sentence_Format,
+ HB_Sentence_Sp,
+ HB_Sentence_Lower,
+ HB_Sentence_Upper,
+ HB_Sentence_OLetter,
+ HB_Sentence_Numeric,
+ HB_Sentence_ATerm,
+ HB_Sentence_STerm,
+ HB_Sentence_Close
+} HB_SentenceClass;
+HB_GraphemeClass HB_GetGraphemeClass(HB_UChar32 ch);
+HB_WordClass HB_GetWordClass(HB_UChar32 ch);
+HB_SentenceClass HB_GetSentenceClass(HB_UChar32 ch);
+HB_LineBreakClass HB_GetLineBreakClass(HB_UChar32 ch);
+void HB_GetGraphemeAndLineBreakClass(HB_UChar32 ch, HB_GraphemeClass *grapheme, HB_LineBreakClass *lineBreak);
+void HB_GetUnicodeCharProperties(HB_UChar32 ch, HB_CharCategory *category, int *combiningClass);
+HB_CharCategory HB_GetUnicodeCharCategory(HB_UChar32 ch);
+int HB_GetUnicodeCharCombiningClass(HB_UChar32 ch);
+HB_UChar16 HB_GetMirroredChar(HB_UChar16 ch);
+void *HB_Library_Resolve(const char *library, const char *symbol);
+void *HB_TextCodecForMib(int mib);
+char *HB_TextCodec_ConvertFromUnicode(void *codec, const HB_UChar16 *unicode, hb_uint32 length, hb_uint32 *outputLength);
+void HB_TextCodec_FreeResult(char *);
+}
+extern "C" {
+ HB_Pointer
+_hb_alloc( size_t size,
+ HB_Error *perror_ );
+ HB_Pointer
+_hb_realloc( HB_Pointer block,
+ size_t new_size,
+ HB_Error *perror_ );
+ void
+_hb_free( HB_Pointer block );
+ HB_Error
+_hb_err (HB_Error code);
+}
+extern "C" {
+ void
+_hb_close_stream( HB_Stream stream );
+ HB_Int
+_hb_stream_pos( HB_Stream stream );
+ HB_Error
+_hb_stream_seek( HB_Stream stream,
+ HB_UInt pos );
+ HB_Error
+_hb_stream_frame_enter( HB_Stream stream,
+ HB_UInt size );
+ void
+_hb_stream_frame_exit( HB_Stream stream );
+}
+extern "C" {
+typedef enum {
+ HB_Script_Common,
+ HB_Script_Greek,
+ HB_Script_Cyrillic,
+ HB_Script_Armenian,
+ HB_Script_Hebrew,
+ HB_Script_Arabic,
+ HB_Script_Syriac,
+ HB_Script_Thaana,
+ HB_Script_Devanagari,
+ HB_Script_Bengali,
+ HB_Script_Gurmukhi,
+ HB_Script_Gujarati,
+ HB_Script_Oriya,
+ HB_Script_Tamil,
+ HB_Script_Telugu,
+ HB_Script_Kannada,
+ HB_Script_Malayalam,
+ HB_Script_Sinhala,
+ HB_Script_Thai,
+ HB_Script_Lao,
+ HB_Script_Tibetan,
+ HB_Script_Myanmar,
+ HB_Script_Georgian,
+ HB_Script_Hangul,
+ HB_Script_Ogham,
+ HB_Script_Runic,
+ HB_Script_Khmer,
+ HB_Script_Inherited,
+ HB_ScriptCount = HB_Script_Inherited
+} HB_Script;
+typedef struct
+{
+ hb_uint32 pos;
+ hb_uint32 length;
+ HB_Script script;
+ hb_uint8 bidiLevel;
+} HB_ScriptItem;
+typedef enum {
+ HB_NoBreak,
+ HB_SoftHyphen,
+ HB_Break,
+ HB_ForcedBreak
+} HB_LineBreakType;
+typedef struct {
+ unsigned lineBreakType :2;
+ unsigned whiteSpace :1;
+ unsigned charStop :1;
+ unsigned wordBoundary :1;
+ unsigned sentenceBoundary :1;
+ unsigned unused :2;
+} HB_CharAttributes;
+void HB_GetCharAttributes(const HB_UChar16 *string, hb_uint32 stringLength,
+ const HB_ScriptItem *items, hb_uint32 numItems,
+ HB_CharAttributes *attributes);
+void HB_GetWordBoundaries(const HB_UChar16 *string, hb_uint32 stringLength,
+ const HB_ScriptItem *items, hb_uint32 numItems,
+ HB_CharAttributes *attributes);
+void HB_GetSentenceBoundaries(const HB_UChar16 *string, hb_uint32 stringLength,
+ const HB_ScriptItem *items, hb_uint32 numItems,
+ HB_CharAttributes *attributes);
+typedef enum {
+ HB_LeftToRight = 0,
+ HB_RightToLeft = 1
+} HB_StringToGlyphsFlags;
+typedef enum {
+ HB_ShaperFlag_Default = 0,
+ HB_ShaperFlag_NoKerning = 1,
+ HB_ShaperFlag_UseDesignMetrics = 2
+} HB_ShaperFlag;
+typedef enum {
+ HB_NoJustification= 0,
+ HB_Arabic_Space = 1,
+ HB_Character = 2,
+ HB_Space = 4,
+ HB_Arabic_Normal = 7,
+ HB_Arabic_Waw = 8,
+ HB_Arabic_BaRa = 9,
+ HB_Arabic_Alef = 10,
+ HB_Arabic_HaaDal = 11,
+ HB_Arabic_Seen = 12,
+ HB_Arabic_Kashida = 13
+} HB_JustificationClass;
+typedef struct {
+ unsigned justification :4;
+ unsigned clusterStart :1;
+ unsigned mark :1;
+ unsigned zeroWidth :1;
+ unsigned dontPrint :1;
+ unsigned combiningClass :8;
+} HB_GlyphAttributes;
+typedef struct HB_FaceRec_ {
+ HB_Bool isSymbolFont;
+ HB_GDEF gdef;
+ HB_GSUB gsub;
+ HB_GPOS gpos;
+ HB_Bool supported_scripts[HB_ScriptCount];
+ HB_Buffer buffer;
+ HB_Script current_script;
+ int current_flags;
+ HB_Bool has_opentype_kerning;
+ HB_Bool glyphs_substituted;
+ HB_GlyphAttributes *tmpAttributes;
+ unsigned int *tmpLogClusters;
+ int length;
+ int orig_nglyphs;
+} HB_FaceRec;
+typedef HB_Error (*HB_GetFontTableFunc)(void *font, HB_Tag tag, HB_Byte *buffer, HB_UInt *length);
+HB_Face HB_NewFace(void *font, HB_GetFontTableFunc tableFunc);
+void HB_FreeFace(HB_Face face);
+typedef struct {
+ HB_Fixed x, y;
+ HB_Fixed width, height;
+ HB_Fixed xOffset, yOffset;
+} HB_GlyphMetrics;
+typedef enum {
+ HB_FontAscent
+} HB_FontMetric;
+typedef struct {
+ HB_Bool (*convertStringToGlyphIndices)(HB_Font font, const HB_UChar16 *string, hb_uint32 length, HB_Glyph *glyphs, hb_uint32 *numGlyphs, HB_Bool rightToLeft);
+ void (*getGlyphAdvances)(HB_Font font, const HB_Glyph *glyphs, hb_uint32 numGlyphs, HB_Fixed *advances, int flags );
+ HB_Bool (*canRender)(HB_Font font, const HB_UChar16 *string, hb_uint32 length);
+ HB_Error (*getPointInOutline)(HB_Font font, HB_Glyph glyph, int flags , hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints);
+ void (*getGlyphMetrics)(HB_Font font, HB_Glyph glyph, HB_GlyphMetrics *metrics);
+ HB_Fixed (*getFontMetric)(HB_Font font, HB_FontMetric metric);
+} HB_FontClass;
+typedef struct HB_Font_ {
+ const HB_FontClass *klass;
+ HB_UShort x_ppem, y_ppem;
+ HB_16Dot16 x_scale, y_scale;
+ void *userData;
+} HB_FontRec;
+typedef struct {
+ const HB_UChar16 *string;
+ hb_uint32 stringLength;
+ HB_ScriptItem item;
+ HB_Font font;
+ HB_Face face;
+ int shaperFlags;
+ HB_Bool glyphIndicesPresent;
+ hb_uint32 initialGlyphCount;
+ hb_uint32 num_glyphs;
+ HB_Glyph *glyphs;
+ HB_GlyphAttributes *attributes;
+ HB_Fixed *advances;
+ HB_FixedPoint *offsets;
+ unsigned short *log_clusters;
+ HB_Bool kerning_applied;
+} HB_ShaperItem;
+HB_Bool HB_ShapeItem(HB_ShaperItem *item);
+}
+__attribute__((visibility("default"))) void qGetCharAttributes(const HB_UChar16 *string, hb_uint32 stringLength,
+ const HB_ScriptItem *items, hb_uint32 numItems,
+ HB_CharAttributes *attributes);
+__attribute__((visibility("default"))) HB_Bool qShapeItem(HB_ShaperItem *item);
+__attribute__((visibility("default"))) HB_Face qHBNewFace(void *font, HB_GetFontTableFunc tableFunc);
+__attribute__((visibility("default"))) void qHBFreeFace(HB_Face);
+template <> class QTypeInfo<HB_GlyphAttributes> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(HB_GlyphAttributes)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "HB_GlyphAttributes"; } };
+template <> class QTypeInfo<HB_FixedPoint> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(HB_FixedPoint)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "HB_FixedPoint"; } };
+class QFontPrivate;
+class QFontEngine;
+class QString;
+class QPainter;
+class QAbstractTextDocumentLayout;
+struct glyph_metrics_t
+{
+ inline glyph_metrics_t()
+ : x(100000), y(100000) {}
+ inline glyph_metrics_t(QFixed _x, QFixed _y, QFixed _width, QFixed _height, QFixed _xoff, QFixed _yoff)
+ : x(_x),
+ y(_y),
+ width(_width),
+ height(_height),
+ xoff(_xoff),
+ yoff(_yoff)
+ {}
+ QFixed x;
+ QFixed y;
+ QFixed width;
+ QFixed height;
+ QFixed xoff;
+ QFixed yoff;
+ glyph_metrics_t transformed(const QTransform &xform) const;
+};
+template <> class QTypeInfo<glyph_metrics_t> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(glyph_metrics_t)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "glyph_metrics_t"; } };
+struct QScriptAnalysis
+{
+ enum Flags {
+ None = 0,
+ Lowercase = 1,
+ Uppercase = 2,
+ SmallCaps = 3,
+ LineOrParagraphSeparator = 4,
+ Space = 5,
+ SpaceTabOrObject = Space,
+ Tab = 6,
+ TabOrObject = Tab,
+ Object = 7
+ };
+ unsigned short script : 8;
+ unsigned short bidiLevel : 6;
+ unsigned short flags : 3;
+ inline bool operator == (const QScriptAnalysis &other) const {
+ return script == other.script && bidiLevel == other.bidiLevel && flags == other.flags;
+ }
+};
+template <> class QTypeInfo<QScriptAnalysis> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QScriptAnalysis)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QScriptAnalysis"; } };
+struct QGlyphJustification
+{
+ inline QGlyphJustification()
+ : type(0), nKashidas(0), space_18d6(0)
+ {}
+ enum JustificationType {
+ JustifyNone,
+ JustifySpace,
+ JustifyKashida
+ };
+ uint type :2;
+ uint nKashidas : 6;
+ uint space_18d6 : 24;
+};
+template <> class QTypeInfo<QGlyphJustification> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QGlyphJustification)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QGlyphJustification"; } };
+struct QGlyphLayoutInstance
+{
+ QFixedPoint offset;
+ QFixedPoint advance;
+ HB_Glyph glyph;
+ QGlyphJustification justification;
+ HB_GlyphAttributes attributes;
+};
+struct QGlyphLayout
+{
+ QFixedPoint *offsets;
+ HB_Glyph *glyphs;
+ QFixed *advances_x;
+ QFixed *advances_y;
+ QGlyphJustification *justifications;
+ HB_GlyphAttributes *attributes;
+ int numGlyphs;
+ inline QGlyphLayout() : numGlyphs(0) {}
+ inline explicit QGlyphLayout(char *address, int totalGlyphs)
+ {
+ offsets = reinterpret_cast<QFixedPoint *>(address);
+ int offset = totalGlyphs * sizeof(HB_FixedPoint);
+ glyphs = reinterpret_cast<HB_Glyph *>(address + offset);
+ offset += totalGlyphs * sizeof(HB_Glyph);
+ advances_x = reinterpret_cast<QFixed *>(address + offset);
+ offset += totalGlyphs * sizeof(QFixed);
+ advances_y = reinterpret_cast<QFixed *>(address + offset);
+ offset += totalGlyphs * sizeof(QFixed);
+ justifications = reinterpret_cast<QGlyphJustification *>(address + offset);
+ offset += totalGlyphs * sizeof(QGlyphJustification);
+ attributes = reinterpret_cast<HB_GlyphAttributes *>(address + offset);
+ numGlyphs = totalGlyphs;
+ }
+ inline QGlyphLayout mid(int position, int n = -1) const {
+ QGlyphLayout copy = *this;
+ copy.glyphs += position;
+ copy.advances_x += position;
+ copy.advances_y += position;
+ copy.offsets += position;
+ copy.justifications += position;
+ copy.attributes += position;
+ if (n == -1)
+ copy.numGlyphs -= position;
+ else
+ copy.numGlyphs = n;
+ return copy;
+ }
+ static inline int spaceNeededForGlyphLayout(int totalGlyphs) {
+ return totalGlyphs * (sizeof(HB_Glyph) + sizeof(HB_GlyphAttributes)
+ + sizeof(QFixed) + sizeof(QFixed) + sizeof(QFixedPoint)
+ + sizeof(QGlyphJustification));
+ }
+ inline QFixed effectiveAdvance(int item) const
+ { return (advances_x[item] + QFixed::fromFixed(justifications[item].space_18d6)) * !attributes[item].dontPrint; }
+ inline QGlyphLayoutInstance instance(int position) const {
+ QGlyphLayoutInstance g;
+ g.offset.x = offsets[position].x;
+ g.offset.y = offsets[position].y;
+ g.glyph = glyphs[position];
+ g.advance.x = advances_x[position];
+ g.advance.y = advances_y[position];
+ g.justification = justifications[position];
+ g.attributes = attributes[position];
+ return g;
+ }
+ inline void setInstance(int position, const QGlyphLayoutInstance &g) {
+ offsets[position].x = g.offset.x;
+ offsets[position].y = g.offset.y;
+ glyphs[position] = g.glyph;
+ advances_x[position] = g.advance.x;
+ advances_y[position] = g.advance.y;
+ justifications[position] = g.justification;
+ attributes[position] = g.attributes;
+ }
+ inline void clear(int first = 0, int last = -1) {
+ if (last == -1)
+ last = numGlyphs;
+ if (first == 0 && last == numGlyphs
+ && reinterpret_cast<char *>(offsets + numGlyphs) == reinterpret_cast<char *>(glyphs)) {
+ memset(offsets, 0, spaceNeededForGlyphLayout(numGlyphs));
+ } else {
+ const int num = last - first;
+ memset(offsets + first, 0, num * sizeof(QFixedPoint));
+ memset(glyphs + first, 0, num * sizeof(HB_Glyph));
+ memset(advances_x + first, 0, num * sizeof(QFixed));
+ memset(advances_y + first, 0, num * sizeof(QFixed));
+ memset(justifications + first, 0, num * sizeof(QGlyphJustification));
+ memset(attributes + first, 0, num * sizeof(HB_GlyphAttributes));
+ }
+ }
+ inline char *data() {
+ return reinterpret_cast<char *>(offsets);
+ }
+ void grow(char *address, int totalGlyphs);
+};
+class QVarLengthGlyphLayoutArray : private QVarLengthArray<void *>, public QGlyphLayout
+{
+private:
+ typedef QVarLengthArray<void *> Array;
+public:
+ QVarLengthGlyphLayoutArray(int totalGlyphs)
+ : Array(spaceNeededForGlyphLayout(totalGlyphs) / sizeof(void *) + 1)
+ , QGlyphLayout(reinterpret_cast<char *>(Array::data()), totalGlyphs)
+ {
+ memset(Array::data(), 0, Array::size() * sizeof(void *));
+ }
+ void resize(int totalGlyphs)
+ {
+ Array::resize(spaceNeededForGlyphLayout(totalGlyphs) / sizeof(void *) + 1);
+ *((QGlyphLayout *)this) = QGlyphLayout(reinterpret_cast<char *>(Array::data()), totalGlyphs);
+ memset(Array::data(), 0, Array::size() * sizeof(void *));
+ }
+};
+template <int N> struct QGlyphLayoutArray : public QGlyphLayout
+{
+public:
+ QGlyphLayoutArray()
+ : QGlyphLayout(reinterpret_cast<char *>(buffer), N)
+ {
+ memset(buffer, 0, sizeof(buffer));
+ }
+private:
+ void *buffer[(N * (sizeof(HB_Glyph) + sizeof(HB_GlyphAttributes)
+ + sizeof(QFixed) + sizeof(QFixed) + sizeof(QFixedPoint)
+ + sizeof(QGlyphJustification)))
+ / sizeof(void *) + 1];
+};
+struct QScriptItem;
+class QTextItemInt : public QTextItem
+{
+public:
+ inline QTextItemInt()
+ : justified(false), underlineStyle(QTextCharFormat::NoUnderline), num_chars(0), chars(0),
+ logClusters(0), f(0), fontEngine(0)
+ {}
+ QTextItemInt(const QScriptItem &si, QFont *font, const QTextCharFormat &format = QTextCharFormat());
+ QTextItemInt midItem(QFontEngine *fontEngine, int firstGlyphIndex, int numGlyphs) const;
+ QFixed descent;
+ QFixed ascent;
+ QFixed width;
+ RenderFlags flags;
+ bool justified;
+ QTextCharFormat::UnderlineStyle underlineStyle;
+ const QTextCharFormat charFormat;
+ int num_chars;
+ const QChar *chars;
+ const unsigned short *logClusters;
+ const QFont *f;
+ QGlyphLayout glyphs;
+ QFontEngine *fontEngine;
+};
+inline bool qIsControlChar(ushort uc)
+{
+ return uc >= 0x200b && uc <= 0x206f
+ && (uc <= 0x200f
+ || (uc >= 0x2028 && uc <= 0x202f )
+ || uc >= 0x206a );
+}
+struct QScriptItem
+{
+ inline QScriptItem()
+ : position(0),
+ num_glyphs(0), descent(-1), ascent(-1), width(-1),
+ glyph_data_offset(0) {}
+ inline QScriptItem(int p, const QScriptAnalysis &a)
+ : position(p), analysis(a),
+ num_glyphs(0), descent(-1), ascent(-1), width(-1),
+ glyph_data_offset(0) {}
+ int position;
+ QScriptAnalysis analysis;
+ unsigned short num_glyphs;
+ QFixed descent;
+ QFixed ascent;
+ QFixed width;
+ int glyph_data_offset;
+ QFixed height() const { return ascent + descent + 1; }
+};
+template <> class QTypeInfo<QScriptItem> { public: enum { isComplex = (((Q_MOVABLE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_MOVABLE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QScriptItem)>sizeof(void*)), isPointer = false, isDummy = (((Q_MOVABLE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QScriptItem"; } };
+typedef QVector<QScriptItem> QScriptItemArray;
+struct QScriptLine
+{
+ QScriptLine()
+ : from(0), length(0),
+ justified(0), gridfitted(0),
+ hasTrailingSpaces(0) {}
+ QFixed descent;
+ QFixed ascent;
+ QFixed x;
+ QFixed y;
+ QFixed width;
+ QFixed textWidth;
+ int from;
+ signed int length : 29;
+ mutable uint justified : 1;
+ mutable uint gridfitted : 1;
+ uint hasTrailingSpaces : 1;
+ QFixed height() const { return ascent + descent + 1; }
+ void setDefaultHeight(QTextEngine *eng);
+ void operator+=(const QScriptLine &other);
+};
+template <> class QTypeInfo<QScriptLine> { public: enum { isComplex = (((Q_PRIMITIVE_TYPE) & Q_PRIMITIVE_TYPE) == 0), isStatic = (((Q_PRIMITIVE_TYPE) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), isLarge = (sizeof(QScriptLine)>sizeof(void*)), isPointer = false, isDummy = (((Q_PRIMITIVE_TYPE) & Q_DUMMY_TYPE) != 0) }; static inline const char *name() { return "QScriptLine"; } };
+inline void QScriptLine::operator+=(const QScriptLine &other)
+{
+ descent = qMax(descent, other.descent);
+ ascent = qMax(ascent, other.ascent);
+ textWidth += other.textWidth;
+ length += other.length;
+}
+typedef QVector<QScriptLine> QScriptLineArray;
+class QFontPrivate;
+class QTextFormatCollection;
+class __attribute__((visibility("default"))) QTextEngine {
+public:
+ struct LayoutData {
+ LayoutData(const QString &str, void **stack_memory, int mem_size);
+ LayoutData();
+ ~LayoutData();
+ mutable QScriptItemArray items;
+ int allocated;
+ int available_glyphs;
+ void **memory;
+ unsigned short *logClustersPtr;
+ QGlyphLayout glyphLayout;
+ mutable int used;
+ uint hasBidi : 1;
+ uint inLayout : 1;
+ uint memory_on_stack : 1;
+ bool haveCharAttributes;
+ QString string;
+ void reallocate(int totalGlyphs);
+ };
+ QTextEngine(LayoutData *data);
+ QTextEngine();
+ QTextEngine(const QString &str, const QFont &f);
+ ~QTextEngine();
+ enum Mode {
+ WidthOnly = 0x07
+ };
+ enum ShaperFlag {
+ RightToLeft = 0x0001,
+ DesignMetrics = 0x0002,
+ GlyphIndicesOnly = 0x0004
+ };
+ typedef QFlags<ShaperFlag> ShaperFlags;
+ void invalidate();
+ void clearLineData();
+ void validate() const;
+ void itemize() const;
+ static void bidiReorder(int numRuns, const quint8 *levels, int *visualOrder);
+ const HB_CharAttributes *attributes() const;
+ void shape(int item) const;
+ void justify(const QScriptLine &si);
+ QFixed width(int charFrom, int numChars) const;
+ glyph_metrics_t boundingBox(int from, int len) const;
+ glyph_metrics_t tightBoundingBox(int from, int len) const;
+ int length(int item) const {
+ const QScriptItem &si = layoutData->items[item];
+ int from = si.position;
+ item++;
+ return (item < layoutData->items.size() ? layoutData->items[item].position : layoutData->string.length()) - from;
+ }
+ int length(const QScriptItem *si) const {
+ int end;
+ if (si + 1 < layoutData->items.constData()+ layoutData->items.size())
+ end = (si+1)->position;
+ else
+ end = layoutData->string.length();
+ return end - si->position;
+ }
+ QFontEngine *fontEngine(const QScriptItem &si, QFixed *ascent = 0, QFixed *descent = 0) const;
+ QFont font(const QScriptItem &si) const;
+ inline QFont font() const { return fnt; }
+ inline unsigned short *logClusters(const QScriptItem *si) const
+ { return layoutData->logClustersPtr+si->position; }
+ inline QGlyphLayout availableGlyphs(const QScriptItem *si) const {
+ return layoutData->glyphLayout.mid(si->glyph_data_offset);
+ }
+ inline QGlyphLayout shapedGlyphs(const QScriptItem *si) const {
+ return layoutData->glyphLayout.mid(si->glyph_data_offset, si->num_glyphs);
+ }
+ inline void ensureSpace(int nGlyphs) const {
+ if (layoutData->glyphLayout.numGlyphs - layoutData->used < nGlyphs)
+ layoutData->reallocate((((layoutData->used + nGlyphs)*3/2 + 15) >> 4) << 4);
+ }
+ void freeMemory();
+ int findItem(int strPos) const;
+ inline QTextFormatCollection *formats() const {
+ return block.docHandle()->formatCollection();
+ }
+ QTextCharFormat format(const QScriptItem *si) const;
+ inline QAbstractTextDocumentLayout *docLayout() const {
+ return block.docHandle()->document()->documentLayout();
+ }
+ int formatIndex(const QScriptItem *si) const;
+ QFixed calculateTabWidth(int index, QFixed x) const;
+ mutable QScriptLineArray lines;
+ QString text;
+ QFont fnt;
+ QTextBlock block;
+ QTextOption option;
+ QFixed minWidth;
+ QFixed maxWidth;
+ QPointF position;
+ uint ignoreBidi : 1;
+ uint cacheGlyphs : 1;
+ uint stackEngine : 1;
+ uint forceJustification : 1;
+ int *underlinePositions;
+ mutable LayoutData *layoutData;
+ inline bool hasFormats() const { return (block.docHandle() || specialData); }
+ struct SpecialData {
+ int preeditPosition;
+ QString preeditText;
+ QList<QTextLayout::FormatRange> addFormats;
+ QVector<int> addFormatIndices;
+ QVector<int> resolvedFormatIndices;
+ };
+ SpecialData *specialData;
+ bool atWordSeparator(int position) const;
+ bool atSpace(int position) const;
+ void indexAdditionalFormats();
+ QString elidedText(Qt::TextElideMode mode, const QFixed &width, int flags = 0) const;
+ void shapeLine(const QScriptLine &line);
+private:
+ void setBoundary(int strPos) const;
+ void addRequiredBoundaries() const;
+ void shapeText(int item) const;
+ void shapeTextWithHarfbuzz(int item) const;
+ void splitItem(int item, int pos) const;
+ void resolveAdditionalFormats() const;
+};
+class QStackTextEngine : public QTextEngine {
+public:
+ enum { MemSize = 256*40/sizeof(void *) };
+ QStackTextEngine(const QString &string, const QFont &f);
+ LayoutData _layoutData;
+ void *_memory[MemSize];
+};
+inline QFlags<QTextEngine::ShaperFlags::enum_type> operator|(QTextEngine::ShaperFlags::enum_type f1, QTextEngine::ShaperFlags::enum_type f2) { return QFlags<QTextEngine::ShaperFlags::enum_type>(f1) | f2; } inline QFlags<QTextEngine::ShaperFlags::enum_type> operator|(QTextEngine::ShaperFlags::enum_type f1, QFlags<QTextEngine::ShaperFlags::enum_type> f2) { return f2 | f1; } inline QIncompatibleFlag operator|(QTextEngine::ShaperFlags::enum_type f1, int f2) { return QIncompatibleFlag(int(f1) | f2); }
+class __attribute__((visibility("default"))) QFontEngineGlyphCache
+{
+public:
+ QFontEngineGlyphCache(const QTransform &matrix) : m_transform(matrix) { }
+ enum Type {
+ Raster_RGBMask,
+ Raster_A8,
+ Raster_Mono
+ };
+ virtual ~QFontEngineGlyphCache();
+ QTransform m_transform;
+};
+typedef QHash<void *, QList<QFontEngineGlyphCache *> > GlyphPointerHash;
+typedef QHash<int, QList<QFontEngineGlyphCache *> > GlyphIntHash;
+struct glyph_metrics_t;
+typedef unsigned int glyph_t;
+class QChar;
+class QPainterPath;
+class QTextEngine;
+struct QGlyphLayout;
+class __attribute__((visibility("default"))) QFontEngine : public QObject
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+public:
+ enum Type {
+ Box,
+ Multi,
+ XLFD,
+ Win,
+ Mac,
+ Freetype,
+ QPF1,
+ QPF2,
+ Proxy,
+ TestFontEngine = 0x1000
+ };
+ QFontEngine();
+ virtual ~QFontEngine();
+ struct Properties {
+ QByteArray postscriptName;
+ QByteArray copyright;
+ QRectF boundingBox;
+ QFixed emSquare;
+ QFixed ascent;
+ QFixed descent;
+ QFixed leading;
+ QFixed italicAngle;
+ QFixed capHeight;
+ QFixed lineWidth;
+ };
+ virtual Properties properties() const;
+ virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics);
+ QByteArray getSfntTable(uint ) const;
+ virtual bool getSfntTableData(uint , uchar * , uint * ) const { return false; }
+ struct FaceId {
+ FaceId() : index(0), encoding(0) {}
+ QByteArray filename;
+ int index;
+ int encoding;
+ };
+ virtual FaceId faceId() const { return FaceId(); }
+ enum SynthesizedFlags {
+ SynthesizedItalic = 0x1,
+ SynthesizedBold = 0x2,
+ SynthesizedStretch = 0x4
+ };
+ virtual int synthesized() const { return 0; }
+ virtual QFixed emSquareSize() const { return ascent(); }
+ virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const = 0;
+ virtual void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const {}
+ virtual void doKerning(QGlyphLayout *, QTextEngine::ShaperFlags) const;
+ virtual void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si) = 0;
+ virtual void addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nglyphs,
+ QPainterPath *path, QTextItem::RenderFlags flags);
+ void getGlyphPositions(const QGlyphLayout &glyphs, const QTransform &matrix, QTextItem::RenderFlags flags,
+ QVarLengthArray<glyph_t> &glyphs_out, QVarLengthArray<QFixedPoint> &positions);
+ virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags);
+ void addBitmapFontToPath(qreal x, qreal y, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags);
+ virtual QImage alphaMapForGlyph(glyph_t) = 0;
+ virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
+ virtual QImage alphaRGBMapForGlyph(glyph_t, int margin, const QTransform &t);
+ virtual void removeGlyphFromCache(glyph_t);
+ virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs) = 0;
+ virtual glyph_metrics_t boundingBox(glyph_t glyph) = 0;
+ virtual glyph_metrics_t boundingBox(glyph_t glyph, const QTransform &matrix);
+ glyph_metrics_t tightBoundingBox(const QGlyphLayout &glyphs);
+ virtual QFixed ascent() const = 0;
+ virtual QFixed descent() const = 0;
+ virtual QFixed leading() const = 0;
+ virtual QFixed xHeight() const;
+ virtual QFixed averageCharWidth() const;
+ virtual QFixed lineThickness() const;
+ virtual QFixed underlinePosition() const;
+ virtual qreal maxCharWidth() const = 0;
+ virtual qreal minLeftBearing() const { return qreal(); }
+ virtual qreal minRightBearing() const { return qreal(); }
+ virtual const char *name() const = 0;
+ virtual bool canRender(const QChar *string, int len) = 0;
+ virtual Type type() const = 0;
+ virtual int glyphCount() const;
+ HB_Font harfbuzzFont() const;
+ HB_Face harfbuzzFace() const;
+ virtual HB_Error getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints);
+ void setGlyphCache(void *key, QFontEngineGlyphCache *data);
+ void setGlyphCache(QFontEngineGlyphCache::Type key, QFontEngineGlyphCache *data);
+ QFontEngineGlyphCache *glyphCache(void *key, const QTransform &transform) const;
+ QFontEngineGlyphCache *glyphCache(QFontEngineGlyphCache::Type key, const QTransform &transform) const;
+ static const uchar *getCMap(const uchar *table, uint tableSize, bool *isSymbolFont, int *cmapSize);
+ static quint32 getTrueTypeGlyphIndex(const uchar *cmap, uint unicode);
+ QAtomicInt ref;
+ QFontDef fontDef;
+ uint cache_cost;
+ int cache_count;
+ uint fsType : 16;
+ bool symbol;
+ mutable HB_FontRec hbFont;
+ mutable HB_Face hbFace;
+ struct KernPair {
+ uint left_right;
+ QFixed adjust;
+ inline bool operator<(const KernPair &other) const
+ {
+ return left_right < other.left_right;
+ }
+ };
+ QVector<KernPair> kerning_pairs;
+ void loadKerningPairs(QFixed scalingFactor);
+ int glyphFormat;
+private:
+ void expireGlyphCache();
+ GlyphPointerHash m_glyphPointerHash;
+ GlyphIntHash m_glyphIntHash;
+ mutable QList<QFontEngineGlyphCache*> m_glyphCacheQueue;
+};
+inline bool operator ==(const QFontEngine::FaceId &f1, const QFontEngine::FaceId &f2)
+{
+ return (f1.index == f2.index) && (f1.encoding == f2.encoding) && (f1.filename == f2.filename);
+}
+inline uint qHash(const QFontEngine::FaceId &f)
+{
+ return qHash((f.index << 16) + f.encoding) + qHash(f.filename);
+}
+class QGlyph;
+class QFontEngineQPF1Data;
+class QFontEngineQPF1 : public QFontEngine
+{
+public:
+ QFontEngineQPF1(const QFontDef&, const QString &fn);
+ ~QFontEngineQPF1();
+ virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const;
+ virtual void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const;
+ virtual void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si);
+ virtual void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags);
+ virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs);
+ virtual glyph_metrics_t boundingBox(glyph_t glyph);
+ virtual QFixed ascent() const;
+ virtual QFixed descent() const;
+ virtual QFixed leading() const;
+ virtual qreal maxCharWidth() const;
+ virtual qreal minLeftBearing() const;
+ virtual qreal minRightBearing() const;
+ virtual QFixed underlinePosition() const;
+ virtual QFixed lineThickness() const;
+ virtual Type type() const;
+ virtual bool canRender(const QChar *string, int len);
+ inline const char *name() const { return 0; }
+ virtual QImage alphaMapForGlyph(glyph_t);
+ QFontEngineQPF1Data *d;
+};
+class QFontEngineBox : public QFontEngine
+{
+public:
+ QFontEngineBox(int size);
+ ~QFontEngineBox();
+ virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags flags) const;
+ virtual void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const;
+ void draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &si);
+ virtual void addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags);
+ virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs);
+ virtual glyph_metrics_t boundingBox(glyph_t glyph);
+ virtual QFixed ascent() const;
+ virtual QFixed descent() const;
+ virtual QFixed leading() const;
+ virtual qreal maxCharWidth() const;
+ virtual qreal minLeftBearing() const { return 0; }
+ virtual qreal minRightBearing() const { return 0; }
+ virtual QImage alphaMapForGlyph(glyph_t);
+ virtual const char *name() const;
+ virtual bool canRender(const QChar *string, int len);
+ virtual Type type() const;
+ inline int size() const { return _size; }
+private:
+ friend class QFontPrivate;
+ int _size;
+};
+class __attribute__((visibility("default"))) QFontEngineMulti : public QFontEngine
+{
+public:
+ explicit QFontEngineMulti(int engineCount);
+ ~QFontEngineMulti();
+ virtual bool stringToCMap(const QChar *str, int len, QGlyphLayout *glyphs, int *nglyphs,
+ QTextEngine::ShaperFlags flags) const;
+ virtual glyph_metrics_t boundingBox(const QGlyphLayout &glyphs);
+ virtual glyph_metrics_t boundingBox(glyph_t glyph);
+ virtual void recalcAdvances(QGlyphLayout *, QTextEngine::ShaperFlags) const;
+ virtual void doKerning(QGlyphLayout *, QTextEngine::ShaperFlags) const;
+ virtual void addOutlineToPath(qreal, qreal, const QGlyphLayout &, QPainterPath *, QTextItem::RenderFlags flags);
+ virtual QFixed ascent() const;
+ virtual QFixed descent() const;
+ virtual QFixed leading() const;
+ virtual QFixed xHeight() const;
+ virtual QFixed averageCharWidth() const;
+ virtual QImage alphaMapForGlyph(glyph_t);
+ virtual QFixed lineThickness() const;
+ virtual QFixed underlinePosition() const;
+ virtual qreal maxCharWidth() const;
+ virtual qreal minLeftBearing() const;
+ virtual qreal minRightBearing() const;
+ virtual inline Type type() const
+ { return QFontEngine::Multi; }
+ virtual bool canRender(const QChar *string, int len);
+ inline virtual const char *name() const
+ { return "Multi"; }
+ QFontEngine *engine(int at) const;
+protected:
+ friend class QPSPrintEnginePrivate;
+ friend class QPSPrintEngineFontMulti;
+ virtual void loadEngine(int at) = 0;
+ QVector<QFontEngine *> engines;
+};
+class QTestFontEngine : public QFontEngineBox
+{
+public:
+ QTestFontEngine(int size) : QFontEngineBox(size) {}
+ virtual Type type() const { return TestFontEngine; }
+};
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QVariant;
+class __attribute__((visibility("default"))) QBitmap : public QPixmap
+{
+public:
+ QBitmap();
+ QBitmap(const QPixmap &);
+ QBitmap(int w, int h);
+ explicit QBitmap(const QSize &);
+ explicit QBitmap(const QString &fileName, const char *format=0);
+ ~QBitmap();
+ QBitmap &operator=(const QPixmap &);
+ operator QVariant() const;
+ inline void clear() { fill(Qt::color0); }
+ static QBitmap fromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor);
+ static QBitmap fromData(const QSize &size, const uchar *bits,
+ QImage::Format monoFormat = QImage::Format_MonoLSB);
+ QBitmap transformed(const QMatrix &) const;
+ QBitmap transformed(const QTransform &matrix) const;
+};
+template <> inline bool qIsDetached<QBitmap>(QBitmap &t) { return t.isDetached(); } template <typename T> inline void qSwap(T &, T &); template <> inline void qSwap<QBitmap>(QBitmap &value1, QBitmap &value2) { const QBitmap::DataPtr t = value1.data_ptr(); value1.data_ptr() = value2.data_ptr(); value2.data_ptr() = t; }
+template <typename Type> class QDataBuffer
+{
+public:
+ QDataBuffer(int res = 64)
+ {
+ capacity = res;
+ buffer = (Type*) qMalloc(capacity * sizeof(Type));
+ siz = 0;
+ }
+ ~QDataBuffer()
+ {
+ qFree(buffer);
+ }
+ inline void reset() { siz = 0; }
+ inline bool isEmpty() const { return siz==0; }
+ inline int size() const { return siz; }
+ inline Type *data() const { return buffer; }
+ inline Type &at(int i) { qt_noop(); return buffer[i]; }
+ inline const Type &at(int i) const { qt_noop(); return buffer[i]; }
+ inline const Type &last() const { qt_noop(); return buffer[siz-1]; }
+ inline const Type &first() const { qt_noop(); return buffer[0]; }
+ inline void add(const Type &t) {
+ reserve(siz + 1);
+ buffer[siz] = t;
+ ++siz;
+ }
+ inline void resize(int size) {
+ reserve(size);
+ siz = size;
+ }
+ inline void reserve(int size) {
+ if (size > capacity) {
+ while (capacity < size)
+ capacity *= 2;
+ buffer = (Type*) qRealloc(buffer, capacity * sizeof(Type));
+ }
+ }
+ inline void shrink(int size) {
+ capacity = size;
+ buffer = (Type*) qRealloc(buffer, capacity * sizeof(Type));
+ }
+ inline void swap(QDataBuffer<Type> &other) {
+ qSwap(capacity, other.capacity);
+ qSwap(siz, other.siz);
+ qSwap(buffer, other.buffer);
+ }
+ inline QDataBuffer &operator<<(const Type &t) { add(t); return *this; }
+private:
+ int capacity;
+ int siz;
+ Type *buffer;
+};
+static const union { unsigned char c[8]; double d; } qt_be_inf_bytes = { { 0x7f, 0xf0, 0, 0, 0, 0, 0, 0 } };
+static const union { unsigned char c[8]; double d; } qt_le_inf_bytes = { { 0, 0, 0, 0, 0, 0, 0xf0, 0x7f } };
+static const union { unsigned char c[8]; double d; } qt_armfpa_inf_bytes = { { 0, 0, 0xf0, 0x7f, 0, 0, 0, 0 } };
+static inline double qt_inf()
+{
+ return (QSysInfo::ByteOrder == QSysInfo::BigEndian
+ ? qt_be_inf_bytes.d
+ : qt_le_inf_bytes.d);
+}
+static const union { unsigned char c[8]; double d; } qt_be_snan_bytes = { { 0x7f, 0xf8, 0, 0, 0, 0, 0, 0 } };
+static const union { unsigned char c[8]; double d; } qt_le_snan_bytes = { { 0, 0, 0, 0, 0, 0, 0xf8, 0x7f } };
+static const union { unsigned char c[8]; double d; } qt_armfpa_snan_bytes = { { 0, 0, 0xf8, 0x7f, 0, 0, 0, 0 } };
+static inline double qt_snan()
+{
+ return (QSysInfo::ByteOrder == QSysInfo::BigEndian
+ ? qt_be_snan_bytes.d
+ : qt_le_snan_bytes.d);
+}
+static const union { unsigned char c[8]; double d; } qt_be_qnan_bytes = { { 0xff, 0xf8, 0, 0, 0, 0, 0, 0 } };
+static const union { unsigned char c[8]; double d; } qt_le_qnan_bytes = { { 0, 0, 0, 0, 0, 0, 0xf8, 0xff } };
+static const union { unsigned char c[8]; double d; } qt_armfpa_qnan_bytes = { { 0, 0, 0xf8, 0xff, 0, 0, 0, 0 } };
+static inline double qt_qnan()
+{
+ return (QSysInfo::ByteOrder == QSysInfo::BigEndian
+ ? qt_be_qnan_bytes.d
+ : qt_le_qnan_bytes.d);
+}
+static inline bool qt_is_inf(double d)
+{
+ uchar *ch = (uchar *)&d;
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ return (ch[0] & 0x7f) == 0x7f && ch[1] == 0xf0;
+ } else {
+ return (ch[7] & 0x7f) == 0x7f && ch[6] == 0xf0;
+ }
+}
+static inline bool qt_is_nan(double d)
+{
+ uchar *ch = (uchar *)&d;
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ return (ch[0] & 0x7f) == 0x7f && ch[1] > 0xf0;
+ } else {
+ return (ch[7] & 0x7f) == 0x7f && ch[6] > 0xf0;
+ }
+}
+static inline bool qt_is_finite(double d)
+{
+ uchar *ch = (uchar *)&d;
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ return (ch[0] & 0x7f) != 0x7f || (ch[1] & 0xf0) != 0xf0;
+ } else {
+ return (ch[7] & 0x7f) != 0x7f || (ch[6] & 0xf0) != 0xf0;
+ }
+}
+static inline bool qt_is_inf(float d)
+{
+ uchar *ch = (uchar *)&d;
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ return (ch[0] & 0x7f) == 0x7f && ch[1] == 0x80;
+ } else {
+ return (ch[3] & 0x7f) == 0x7f && ch[2] == 0x80;
+ }
+}
+static inline bool qt_is_nan(float d)
+{
+ uchar *ch = (uchar *)&d;
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ return (ch[0] & 0x7f) == 0x7f && ch[1] > 0x80;
+ } else {
+ return (ch[3] & 0x7f) == 0x7f && ch[2] > 0x80;
+ }
+}
+static inline bool qt_is_finite(float d)
+{
+ uchar *ch = (uchar *)&d;
+ if (QSysInfo::ByteOrder == QSysInfo::BigEndian) {
+ return (ch[0] & 0x7f) != 0x7f || (ch[1] & 0x80) != 0x80;
+ } else {
+ return (ch[3] & 0x7f) != 0x7f || (ch[2] & 0x80) != 0x80;
+ }
+}
+typedef qreal qfixed;
+struct qfixed2d
+{
+ qfixed x;
+ qfixed y;
+ bool operator==(const qfixed2d &other) const { return qFuzzyCompare(x, other.x)
+ && qFuzzyCompare(y, other.y); }
+};
+QPointF qt_curves_for_arc(const QRectF &rect, qreal startAngle, qreal sweepLength,
+ QPointF *controlPoints, int *point_count);
+qreal qt_t_for_arc_angle(qreal angle);
+typedef void (*qStrokerMoveToHook)(qfixed x, qfixed y, void *data);
+typedef void (*qStrokerLineToHook)(qfixed x, qfixed y, void *data);
+typedef void (*qStrokerCubicToHook)(qfixed c1x, qfixed c1y,
+ qfixed c2x, qfixed c2y,
+ qfixed ex, qfixed ey,
+ void *data);
+class __attribute__((visibility("default"))) QStrokerOps
+{
+public:
+ struct Element {
+ QPainterPath::ElementType type;
+ qfixed x;
+ qfixed y;
+ inline bool isMoveTo() const { return type == QPainterPath::MoveToElement; }
+ inline bool isLineTo() const { return type == QPainterPath::LineToElement; }
+ inline bool isCurveTo() const { return type == QPainterPath::CurveToElement; }
+ operator qfixed2d () { qfixed2d pt = { x, y }; return pt; }
+ };
+ QStrokerOps();
+ virtual ~QStrokerOps();
+ void setMoveToHook(qStrokerMoveToHook moveToHook) { m_moveTo = moveToHook; }
+ void setLineToHook(qStrokerLineToHook lineToHook) { m_lineTo = lineToHook; }
+ void setCubicToHook(qStrokerCubicToHook cubicToHook) { m_cubicTo = cubicToHook; }
+ virtual void begin(void *customData);
+ virtual void end();
+ inline void moveTo(qfixed x, qfixed y);
+ inline void lineTo(qfixed x, qfixed y);
+ inline void cubicTo(qfixed x1, qfixed y1, qfixed x2, qfixed y2, qfixed ex, qfixed ey);
+ void strokePath(const QPainterPath &path, void *data, const QTransform &matrix);
+ void strokePolygon(const QPointF *points, int pointCount, bool implicit_close,
+ void *data, const QTransform &matrix);
+ void strokeEllipse(const QRectF &ellipse, void *data, const QTransform &matrix);
+ QRectF clipRect() const { return m_clip_rect; }
+ void setClipRect(const QRectF &clip) { m_clip_rect = clip; }
+protected:
+ inline void emitMoveTo(qfixed x, qfixed y);
+ inline void emitLineTo(qfixed x, qfixed y);
+ inline void emitCubicTo(qfixed c1x, qfixed c1y, qfixed c2x, qfixed c2y, qfixed ex, qfixed ey);
+ virtual void processCurrentSubpath() = 0;
+ QDataBuffer<Element> m_elements;
+ QRectF m_clip_rect;
+private:
+ void *m_customData;
+ qStrokerMoveToHook m_moveTo;
+ qStrokerLineToHook m_lineTo;
+ qStrokerCubicToHook m_cubicTo;
+};
+class __attribute__((visibility("default"))) QStroker : public QStrokerOps
+{
+public:
+ enum LineJoinMode {
+ FlatJoin,
+ SquareJoin,
+ MiterJoin,
+ RoundJoin,
+ RoundCap,
+ SvgMiterJoin
+ };
+ QStroker();
+ ~QStroker();
+ void setStrokeWidth(qfixed width) { m_strokeWidth = width; }
+ qfixed strokeWidth() const { return m_strokeWidth; }
+ void setCapStyle(Qt::PenCapStyle capStyle) { m_capStyle = joinModeForCap(capStyle); }
+ Qt::PenCapStyle capStyle() const { return capForJoinMode(m_capStyle); }
+ LineJoinMode capStyleMode() const { return m_capStyle; }
+ void setJoinStyle(Qt::PenJoinStyle style) { m_joinStyle = joinModeForJoin(style); }
+ Qt::PenJoinStyle joinStyle() const { return joinForJoinMode(m_joinStyle); }
+ LineJoinMode joinStyleMode() const { return m_joinStyle; }
+ void setMiterLimit(qfixed length) { m_miterLimit = length; }
+ qfixed miterLimit() const { return m_miterLimit; }
+ void setCurveThreshold(qfixed threshold) { m_curveThreshold = threshold; }
+ qfixed curveThreshold() const { return m_curveThreshold; }
+ void joinPoints(qfixed x, qfixed y, const QLineF &nextLine, LineJoinMode join);
+ inline void emitMoveTo(qfixed x, qfixed y);
+ inline void emitLineTo(qfixed x, qfixed y);
+ inline void emitCubicTo(qfixed c1x, qfixed c1y, qfixed c2x, qfixed c2y, qfixed ex, qfixed ey);
+protected:
+ static Qt::PenCapStyle capForJoinMode(LineJoinMode mode);
+ static LineJoinMode joinModeForCap(Qt::PenCapStyle);
+ static Qt::PenJoinStyle joinForJoinMode(LineJoinMode mode);
+ static LineJoinMode joinModeForJoin(Qt::PenJoinStyle joinStyle);
+ virtual void processCurrentSubpath();
+ qfixed m_strokeWidth;
+ qfixed m_miterLimit;
+ qfixed m_curveThreshold;
+ LineJoinMode m_capStyle;
+ LineJoinMode m_joinStyle;
+ qfixed m_back1X;
+ qfixed m_back1Y;
+ qfixed m_back2X;
+ qfixed m_back2Y;
+};
+class __attribute__((visibility("default"))) QDashStroker : public QStrokerOps
+{
+public:
+ QDashStroker(QStroker *stroker);
+ QStroker *stroker() const { return m_stroker; }
+ static QVector<qfixed> patternForStyle(Qt::PenStyle style);
+ void setDashPattern(const QVector<qfixed> &dashPattern) { m_dashPattern = dashPattern; }
+ QVector<qfixed> dashPattern() const { return m_dashPattern; }
+ void setDashOffset(qreal offset) { m_dashOffset = offset; }
+ qreal dashOffset() const { return m_dashOffset; }
+ virtual void begin(void *data);
+ virtual void end();
+protected:
+ virtual void processCurrentSubpath();
+ QStroker *m_stroker;
+ QVector<qfixed> m_dashPattern;
+ qreal m_dashOffset;
+};
+inline void QStrokerOps::emitMoveTo(qfixed x, qfixed y)
+{
+ qt_noop();
+ m_moveTo(x, y, m_customData);
+}
+inline void QStrokerOps::emitLineTo(qfixed x, qfixed y)
+{
+ qt_noop();
+ m_lineTo(x, y, m_customData);
+}
+inline void QStrokerOps::emitCubicTo(qfixed c1x, qfixed c1y, qfixed c2x, qfixed c2y, qfixed ex, qfixed ey)
+{
+ qt_noop();
+ m_cubicTo(c1x, c1y, c2x, c2y, ex, ey, m_customData);
+}
+inline void QStrokerOps::moveTo(qfixed x, qfixed y)
+{
+ if (m_elements.size()>1)
+ processCurrentSubpath();
+ m_elements.reset();
+ Element e = { QPainterPath::MoveToElement, x, y };
+ m_elements.add(e);
+}
+inline void QStrokerOps::lineTo(qfixed x, qfixed y)
+{
+ Element e = { QPainterPath::LineToElement, x, y };
+ m_elements.add(e);
+}
+inline void QStrokerOps::cubicTo(qfixed x1, qfixed y1, qfixed x2, qfixed y2, qfixed ex, qfixed ey)
+{
+ Element c1 = { QPainterPath::CurveToElement, x1, y1 };
+ Element c2 = { QPainterPath::CurveToDataElement, x2, y2 };
+ Element e = { QPainterPath::CurveToDataElement, ex, ey };
+ m_elements.add(c1);
+ m_elements.add(c2);
+ m_elements.add(e);
+}
+inline void QStroker::emitMoveTo(qfixed x, qfixed y)
+{
+ m_back2X = m_back1X;
+ m_back2Y = m_back1Y;
+ m_back1X = x;
+ m_back1Y = y;
+ QStrokerOps::emitMoveTo(x, y);
+}
+inline void QStroker::emitLineTo(qfixed x, qfixed y)
+{
+ m_back2X = m_back1X;
+ m_back2Y = m_back1Y;
+ m_back1X = x;
+ m_back1Y = y;
+ QStrokerOps::emitLineTo(x, y);
+}
+inline void QStroker::emitCubicTo(qfixed c1x, qfixed c1y,
+ qfixed c2x, qfixed c2y,
+ qfixed ex, qfixed ey)
+{
+ if (c2x == ex && c2y == ey) {
+ if (c1x == ex && c1y == ey) {
+ m_back2X = m_back1X;
+ m_back2Y = m_back1Y;
+ } else {
+ m_back2X = c1x;
+ m_back2Y = c1y;
+ }
+ } else {
+ m_back2X = c2x;
+ m_back2Y = c2y;
+ }
+ m_back1X = ex;
+ m_back1Y = ey;
+ QStrokerOps::emitCubicTo(c1x, c1y, c2x, c2y, ex, ey);
+}
+inline void QDashStroker::begin(void *data)
+{
+ qt_noop();
+ m_stroker->begin(data);
+ QStrokerOps::begin(data);
+}
+inline void QDashStroker::end()
+{
+ qt_noop();
+ QStrokerOps::end();
+ m_stroker->end();
+}
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class QPrinterPrivate;
+class QPaintEngine;
+class QPrintEngine;
+class QPrinterInfo;
+class __attribute__((visibility("default"))) QPrinter : public QPaintDevice
+{
+ inline QPrinterPrivate* d_func() { return reinterpret_cast<QPrinterPrivate *>(d_ptr); } inline const QPrinterPrivate* d_func() const { return reinterpret_cast<const QPrinterPrivate *>(d_ptr); } friend class QPrinterPrivate;
+public:
+ enum PrinterMode { ScreenResolution, PrinterResolution, HighResolution };
+ explicit QPrinter(PrinterMode mode = ScreenResolution);
+ explicit QPrinter(const QPrinterInfo& printer, PrinterMode mode = ScreenResolution);
+ ~QPrinter();
+ int devType() const;
+ enum Orientation { Portrait, Landscape };
+ enum PageSize { A4, B5, Letter, Legal, Executive,
+ A0, A1, A2, A3, A5, A6, A7, A8, A9, B0, B1,
+ B10, B2, B3, B4, B6, B7, B8, B9, C5E, Comm10E,
+ DLE, Folio, Ledger, Tabloid, Custom, NPageSize = Custom, NPaperSize = Custom };
+ typedef PageSize PaperSize;
+ enum PageOrder { FirstPageFirst,
+ LastPageFirst };
+ enum ColorMode { GrayScale,
+ Color };
+ enum PaperSource { OnlyOne,
+ Lower,
+ Middle,
+ Manual,
+ Envelope,
+ EnvelopeManual,
+ Auto,
+ Tractor,
+ SmallFormat,
+ LargeFormat,
+ LargeCapacity,
+ Cassette,
+ FormSource,
+ MaxPageSource
+ };
+ enum PrinterState { Idle,
+ Active,
+ Aborted,
+ Error };
+ enum OutputFormat { NativeFormat, PdfFormat, PostScriptFormat };
+ enum PrintRange { AllPages, Selection, PageRange };
+ enum Unit {
+ Millimeter,
+ Point,
+ Inch,
+ Pica,
+ Didot,
+ Cicero,
+ DevicePixel
+ };
+ enum DuplexMode {
+ DuplexNone = 0,
+ DuplexAuto,
+ DuplexLongSide,
+ DuplexShortSide
+ };
+ void setOutputFormat(OutputFormat format);
+ OutputFormat outputFormat() const;
+ void setPrinterName(const QString &);
+ QString printerName() const;
+ bool isValid() const;
+ void setOutputFileName(const QString &);
+ QString outputFileName()const;
+ void setPrintProgram(const QString &);
+ QString printProgram() const;
+ void setDocName(const QString &);
+ QString docName() const;
+ void setCreator(const QString &);
+ QString creator() const;
+ void setOrientation(Orientation);
+ Orientation orientation() const;
+ void setPageSize(PageSize);
+ PageSize pageSize() const;
+ void setPaperSize(PaperSize);
+ PaperSize paperSize() const;
+ void setPaperSize(const QSizeF &paperSize, Unit unit);
+ QSizeF paperSize(Unit unit) const;
+ void setPageOrder(PageOrder);
+ PageOrder pageOrder() const;
+ void setResolution(int);
+ int resolution() const;
+ void setColorMode(ColorMode);
+ ColorMode colorMode() const;
+ void setCollateCopies(bool collate);
+ bool collateCopies() const;
+ void setFullPage(bool);
+ bool fullPage() const;
+ void setNumCopies(int);
+ int numCopies() const;
+ void setPaperSource(PaperSource);
+ PaperSource paperSource() const;
+ void setDuplex(DuplexMode duplex);
+ DuplexMode duplex() const;
+ QList<int> supportedResolutions() const;
+ void setFontEmbeddingEnabled(bool enable);
+ bool fontEmbeddingEnabled() const;
+ void setDoubleSidedPrinting(bool enable);
+ bool doubleSidedPrinting() const;
+ QRect paperRect() const;
+ QRect pageRect() const;
+ QRectF paperRect(Unit) const;
+ QRectF pageRect(Unit) const;
+ QString printerSelectionOption() const;
+ void setPrinterSelectionOption(const QString &);
+ bool newPage();
+ bool abort();
+ PrinterState printerState() const;
+ QPaintEngine *paintEngine() const;
+ QPrintEngine *printEngine() const;
+ void setFromTo(int fromPage, int toPage);
+ int fromPage() const;
+ int toPage() const;
+ void setPrintRange(PrintRange range);
+ PrintRange printRange() const;
+ void setPageMargins(qreal left, qreal top, qreal right, qreal bottom, Unit unit);
+ void getPageMargins(qreal *left, qreal *top, qreal *right, qreal *bottom, Unit unit) const;
+protected:
+ int metric(PaintDeviceMetric) const;
+ void setEngines(QPrintEngine *printEngine, QPaintEngine *paintEngine);
+private:
+ void init(PrinterMode mode);
+ QPrinter(const QPrinter &); QPrinter &operator=(const QPrinter &);
+ QPrinterPrivate *d_ptr;
+ friend class QPrintDialogPrivate;
+ friend class QAbstractPrintDialog;
+ friend class QAbstractPrintDialogPrivate;
+ friend class QPrintPreviewWidgetPrivate;
+ friend class QTextDocument;
+ friend class QPageSetupWidget;
+};
+class QFontSubset
+{
+public:
+ QFontSubset(QFontEngine *fe, int obj_id = 0)
+ : object_id(obj_id), noEmbed(false), fontEngine(fe), downloaded_glyphs(0), standard_font(false)
+ { fontEngine->ref.ref(); addGlyph(0); }
+ ~QFontSubset() {
+ if (!fontEngine->ref.deref())
+ delete fontEngine;
+ }
+ QByteArray toTruetype() const;
+ QByteArray toType1() const;
+ QByteArray type1AddedGlyphs() const;
+ QByteArray widthArray() const;
+ QByteArray createToUnicodeMap() const;
+ QVector<int> getReverseMap() const;
+ QByteArray glyphName(unsigned int glyph, const QVector<int> reverseMap) const;
+ static QByteArray glyphName(unsigned short unicode, bool symbol);
+ int addGlyph(int index);
+ const int object_id;
+ bool noEmbed;
+ QFontEngine *fontEngine;
+ QList<int> glyph_indices;
+ mutable int downloaded_glyphs;
+ mutable bool standard_font;
+ int nGlyphs() const { return glyph_indices.size(); }
+ mutable QFixed emSquare;
+ mutable QVector<QFixed> widths;
+};
+class QPaintDevice;
+class QPaintEnginePrivate
+{
+ inline QPaintEngine* q_func() { return static_cast<QPaintEngine *>(q_ptr); } inline const QPaintEngine* q_func() const { return static_cast<const QPaintEngine *>(q_ptr); } friend class QPaintEngine;
+public:
+ QPaintEnginePrivate() : pdev(0), q_ptr(0), currentClipWidget(0), hasSystemTransform(0),
+ hasSystemViewport(0) {}
+ virtual ~QPaintEnginePrivate() { }
+ QPaintDevice *pdev;
+ QPaintEngine *q_ptr;
+ QRegion systemClip;
+ QRegion systemViewport;
+ QTransform systemTransform;
+ QWidget *currentClipWidget;
+ uint hasSystemTransform : 1;
+ uint hasSystemViewport : 1;
+ inline void transformSystemClip()
+ {
+ if (systemClip.isEmpty())
+ return;
+ if (systemTransform.type() <= QTransform::TxTranslate)
+ systemClip.translate(qRound(systemTransform.dx()), qRound(systemTransform.dy()));
+ else
+ systemClip = systemTransform.map(systemClip);
+ if (hasSystemViewport) {
+ systemClip &= systemViewport;
+ if (systemClip.isEmpty()) {
+ systemClip = QRect(systemViewport.boundingRect().topLeft(), QSize(1, 1));
+ }
+ }
+ }
+ inline void setSystemTransform(const QTransform &xform)
+ {
+ systemTransform = xform;
+ if ((hasSystemTransform = !xform.isIdentity()))
+ transformSystemClip();
+ systemStateChanged();
+ }
+ inline void setSystemViewport(const QRegion ®ion)
+ {
+ systemViewport = region;
+ hasSystemViewport = !systemViewport.isEmpty();
+ }
+ virtual void systemStateChanged() { }
+ void drawBoxTextItem(const QPointF &p, const QTextItemInt &ti);
+private:
+ QRect systemRect;
+};
+class QAlphaPaintEnginePrivate;
+class QAlphaPaintEngine : public QPaintEngine
+{
+ inline QAlphaPaintEnginePrivate* d_func() { return reinterpret_cast<QAlphaPaintEnginePrivate *>(d_ptr); } inline const QAlphaPaintEnginePrivate* d_func() const { return reinterpret_cast<const QAlphaPaintEnginePrivate *>(d_ptr); } friend class QAlphaPaintEnginePrivate;
+public:
+ ~QAlphaPaintEngine();
+ virtual bool begin(QPaintDevice *pdev);
+ virtual bool end();
+ virtual void updateState(const QPaintEngineState &state);
+ virtual void drawPath(const QPainterPath &path);
+ virtual void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode);
+ virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr);
+ virtual void drawImage(const QRectF &r, const QImage &image, const QRectF &sr);
+ virtual void drawTextItem(const QPointF &p, const QTextItem &textItem);
+ virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s);
+protected:
+ QAlphaPaintEngine(QAlphaPaintEnginePrivate &data, PaintEngineFeatures devcaps = 0);
+ QRegion alphaClipping() const;
+ bool continueCall() const;
+ void flushAndInit(bool init = true);
+ void cleanUp();
+};
+class QAlphaPaintEnginePrivate : public QPaintEnginePrivate
+{
+ inline QAlphaPaintEngine* q_func() { return static_cast<QAlphaPaintEngine *>(q_ptr); } inline const QAlphaPaintEngine* q_func() const { return static_cast<const QAlphaPaintEngine *>(q_ptr); } friend class QAlphaPaintEngine;
+public:
+ QAlphaPaintEnginePrivate();
+ ~QAlphaPaintEnginePrivate();
+ int m_pass;
+ QPicture *m_pic;
+ QPaintEngine *m_picengine;
+ QPainter *m_picpainter;
+ QPaintEngine::PaintEngineFeatures m_savedcaps;
+ QPaintDevice *m_pdev;
+ QRegion m_alphargn;
+ QRegion m_cliprgn;
+ bool m_hasalpha;
+ bool m_alphaPen;
+ bool m_alphaBrush;
+ bool m_alphaOpacity;
+ bool m_advancedPen;
+ bool m_advancedBrush;
+ bool m_complexTransform;
+ bool m_emulateProjectiveTransforms;
+ bool m_continueCall;
+ QTransform m_transform;
+ QPen m_pen;
+ void addAlphaRect(const QRectF &rect);
+ QRectF addPenWidth(const QPainterPath &path);
+ void drawAlphaImage(const QRectF &rect);
+ QRect toRect(const QRectF &rect) const;
+ bool fullyContained(const QRectF &rect) const;
+ void resetState(QPainter *p);
+};
+typedef QtValidLicenseForGuiModule QtGuiModule;
+class __attribute__((visibility("default"))) QPrintEngine
+{
+public:
+ virtual ~QPrintEngine() {}
+ enum PrintEnginePropertyKey {
+ PPK_CollateCopies,
+ PPK_ColorMode,
+ PPK_Creator,
+ PPK_DocumentName,
+ PPK_FullPage,
+ PPK_NumberOfCopies,
+ PPK_Orientation,
+ PPK_OutputFileName,
+ PPK_PageOrder,
+ PPK_PageRect,
+ PPK_PageSize,
+ PPK_PaperRect,
+ PPK_PaperSource,
+ PPK_PrinterName,
+ PPK_PrinterProgram,
+ PPK_Resolution,
+ PPK_SelectionOption,
+ PPK_SupportedResolutions,
+ PPK_WindowsPageSize,
+ PPK_FontEmbedding,
+ PPK_SuppressSystemPrintStatus,
+ PPK_Duplex,
+ PPK_PaperSources,
+ PPK_CustomPaperSize,
+ PPK_PageMargins,
+ PPK_PaperSize = PPK_PageSize,
+ PPK_CustomBase = 0xff00
+ };
+ virtual void setProperty(PrintEnginePropertyKey key, const QVariant &value) = 0;
+ virtual QVariant property(PrintEnginePropertyKey key) const = 0;
+ virtual bool newPage() = 0;
+ virtual bool abort() = 0;
+ virtual int metric(QPaintDevice::PaintDeviceMetric) const = 0;
+ virtual QPrinter::PrinterState printerState() const = 0;
+};
+typedef QtValidLicenseForCoreModule QtCoreModule;
+class QObject;
+class QBufferPrivate;
+class __attribute__((visibility("default"))) QBuffer : public QIODevice
+{
+ public: template <typename T> inline void qt_check_for_QOBJECT_macro(const T &_q_argument) const { int i = qYouForgotTheQ_OBJECT_Macro(this, &_q_argument); i = i; } static const QMetaObject staticMetaObject; virtual const QMetaObject *metaObject() const; virtual void *qt_metacast(const char *); static inline QString tr(const char *s, const char *c = 0) { return staticMetaObject.tr(s, c); } static inline QString trUtf8(const char *s, const char *c = 0) { return staticMetaObject.trUtf8(s, c); } static inline QString tr(const char *s, const char *c, int n) { return staticMetaObject.tr(s, c, n); } static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private:
+public:
+ explicit QBuffer(QObject *parent = 0);
+ QBuffer(QByteArray *buf, QObject *parent = 0);
+ ~QBuffer();
+ QByteArray &buffer();
+ const QByteArray &buffer() const;
+ void setBuffer(QByteArray *a);
+ void setData(const QByteArray &data);
+ inline void setData(const char *data, int len);
+ const QByteArray &data() const;
+ bool open(OpenMode openMode);
+ void close();
+ qint64 size() const;
+ qint64 pos() const;
+ bool seek(qint64 off);
+ bool atEnd() const;
+ bool canReadLine() const;
+protected:
+ void connectNotify(const char*);
+ void disconnectNotify(const char*);
+ qint64 readData(char *data, qint64 maxlen);
+ qint64 writeData(const char *data, qint64 len);
+private:
+ inline QBufferPrivate* d_func() { return reinterpret_cast<QBufferPrivate *>(d_ptr); } inline const QBufferPrivate* d_func() const { return reinterpret_cast<const QBufferPrivate *>(d_ptr); } friend class QBufferPrivate;
+ QBuffer(const QBuffer &); QBuffer &operator=(const QBuffer &);
+};
+inline void QBuffer::setData(const char *adata, int alen)
+{ setData(QByteArray(adata, alen)); }
+const char *qt_real_to_string(qreal val, char *buf);
+const char *qt_int_to_string(int val, char *buf);
+namespace QPdf {
+ class ByteStream
+ {
+ public:
+ explicit ByteStream(bool fileBacking = false);
+ explicit ByteStream(QByteArray *ba, bool fileBacking = false);
+ ~ByteStream();
+ ByteStream &operator <<(char chr);
+ ByteStream &operator <<(const char *str);
+ ByteStream &operator <<(const QByteArray &str);
+ ByteStream &operator <<(const ByteStream &src);
+ ByteStream &operator <<(qreal val);
+ ByteStream &operator <<(int val);
+ ByteStream &operator <<(const QPointF &p);
+ QIODevice *stream();
+ void clear();
+ static inline int maxMemorySize() { return 100000000; }
+ static inline int chunkSize() { return 10000000; }
+ protected:
+ void constructor_helper(QIODevice *dev);
+ void constructor_helper(QByteArray *ba);
+ private:
+ void prepareBuffer();
+ private:
+ QIODevice *dev;
+ QByteArray ba;
+ bool fileBackingEnabled;
+ bool fileBackingActive;
+ bool handleDirty;
+ };
+ enum PathFlags {
+ ClipPath,
+ FillPath,
+ StrokePath,
+ FillAndStrokePath
+ };
+ QByteArray generatePath(const QPainterPath &path, const QTransform &matrix, PathFlags flags);
+ QByteArray generateMatrix(const QTransform &matrix);
+ QByteArray generateDashes(const QPen &pen);
+ QByteArray patternForBrush(const QBrush &b);
+ struct Stroker {
+ Stroker();
+ void setPen(const QPen &pen);
+ void strokePath(const QPainterPath &path);
+ ByteStream *stream;
+ bool first;
+ QTransform matrix;
+ bool cosmeticPen;
+ private:
+ QStroker basicStroker;
+ QDashStroker dashStroker;
+ QStrokerOps *stroker;
+ };
+ QByteArray ascii85Encode(const QByteArray &input);
+ const char *toHex(ushort u, char *buffer);
+ const char *toHex(uchar u, char *buffer);
+ struct PaperSize {
+ int width, height;
+ };
+ PaperSize paperSize(QPrinter::PaperSize paperSize);
+ const char *paperSizeToString(QPrinter::PaperSize paperSize);
+ QByteArray stripSpecialCharacters(const QByteArray &string);
+};
+class QPdfPage : public QPdf::ByteStream
+{
+public:
+ QPdfPage();
+ QVector<uint> images;
+ QVector<uint> graphicStates;
+ QVector<uint> patterns;
+ QVector<uint> fonts;
+ QVector<uint> annotations;
+ void streamImage(int w, int h, int object);
+ QSize pageSize;
+private:
+};
+class QPdfBaseEnginePrivate;
+class QPdfBaseEngine : public QAlphaPaintEngine, public QPrintEngine
+{
+ inline QPdfBaseEnginePrivate* d_func() { return reinterpret_cast<QPdfBaseEnginePrivate *>(d_ptr); } inline const QPdfBaseEnginePrivate* d_func() const { return reinterpret_cast<const QPdfBaseEnginePrivate *>(d_ptr); } friend class QPdfBaseEnginePrivate;
+public:
+ QPdfBaseEngine(QPdfBaseEnginePrivate &d, PaintEngineFeatures f);
+ ~QPdfBaseEngine() {}
+ bool begin(QPaintDevice *pdev);
+ bool end();
+ void drawPoints(const QPointF *points, int pointCount);
+ void drawLines(const QLineF *lines, int lineCount);
+ void drawRects(const QRectF *rects, int rectCount);
+ void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode);
+ void drawPath (const QPainterPath & path);
+ void drawTextItem(const QPointF &p, const QTextItem &textItem);
+ void updateState(const QPaintEngineState &state);
+ int metric(QPaintDevice::PaintDeviceMetric metricType) const;
+ bool newPage();
+ void setProperty(PrintEnginePropertyKey key, const QVariant &value);
+ QVariant property(PrintEnginePropertyKey key) const;
+ void setPen();
+ virtual void setBrush() = 0;
+ void setupGraphicsState(QPaintEngine::DirtyFlags flags);
+private:
+ void updateClipPath(const QPainterPath & path, Qt::ClipOperation op);
+ friend int qt_printerRealNumCopies(QPaintEngine *);
+};
+class QPdfBaseEnginePrivate : public QAlphaPaintEnginePrivate
+{
+ inline QPdfBaseEngine* q_func() { return static_cast<QPdfBaseEngine *>(q_ptr); } inline const QPdfBaseEngine* q_func() const { return static_cast<const QPdfBaseEngine *>(q_ptr); } friend class QPdfBaseEngine;
+public:
+ QPdfBaseEnginePrivate(QPrinter::PrinterMode m);
+ ~QPdfBaseEnginePrivate();
+ bool openPrintDevice();
+ void closePrintDevice();
+ virtual void drawTextItem(const QPointF &p, const QTextItemInt &ti);
+ inline uint requestObject() { return currentObject++; }
+ QRect paperRect() const;
+ QRect pageRect() const;
+ bool postscript;
+ int currentObject;
+ QPdfPage* currentPage;
+ QPdf::Stroker stroker;
+ QPointF brushOrigin;
+ QBrush brush;
+ QPen pen;
+ QList<QPainterPath> clips;
+ bool clipEnabled;
+ bool allClipped;
+ bool hasPen;
+ bool hasBrush;
+ bool simplePen;
+ qreal opacity;
+ bool useAlphaEngine;
+ QHash<QFontEngine::FaceId, QFontSubset *> fonts;
+ QPaintDevice *pdev;
+ QIODevice *outDevice;
+ int fd;
+ QString outputFileName;
+ QString printerName;
+ QString printProgram;
+ QString selectionOption;
+ QString title;
+ QString creator;
+ QPrinter::DuplexMode duplex;
+ bool collate;
+ bool fullPage;
+ bool embedFonts;
+ int copies;
+ int resolution;
+ QPrinter::PageOrder pageOrder;
+ QPrinter::Orientation orientation;
+ QPrinter::PaperSize paperSize;
+ QPrinter::ColorMode colorMode;
+ QPrinter::PaperSource paperSource;
+ QStringList cupsOptions;
+ QRect cupsPaperRect;
+ QRect cupsPageRect;
+ QString cupsStringPageSize;
+ QSizeF customPaperSize;
+ bool hasCustomPageMargins;
+ qreal leftMargin, topMargin, rightMargin, bottomMargin;
+};
+extern "C" {
+typedef double float_t;
+typedef double double_t;
+extern double acos (double __x) throw (); extern double __acos (double __x) throw ();
+extern double asin (double __x) throw (); extern double __asin (double __x) throw ();
+extern double atan (double __x) throw (); extern double __atan (double __x) throw ();
+extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw ();
+extern double cos (double __x) throw (); extern double __cos (double __x) throw ();
+extern double sin (double __x) throw (); extern double __sin (double __x) throw ();
+extern double tan (double __x) throw (); extern double __tan (double __x) throw ();
+extern double cosh (double __x) throw (); extern double __cosh (double __x) throw ();
+extern double sinh (double __x) throw (); extern double __sinh (double __x) throw ();
+extern double tanh (double __x) throw (); extern double __tanh (double __x) throw ();
+extern double acosh (double __x) throw (); extern double __acosh (double __x) throw ();
+extern double asinh (double __x) throw (); extern double __asinh (double __x) throw ();
+extern double atanh (double __x) throw (); extern double __atanh (double __x) throw ();
+extern double exp (double __x) throw (); extern double __exp (double __x) throw ();
+extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw ();
+extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw ();
+extern double log (double __x) throw (); extern double __log (double __x) throw ();
+extern double log10 (double __x) throw (); extern double __log10 (double __x) throw ();
+extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw ();
+extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw ();
+extern double log1p (double __x) throw (); extern double __log1p (double __x) throw ();
+extern double logb (double __x) throw (); extern double __logb (double __x) throw ();
+extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw ();
+extern double log2 (double __x) throw (); extern double __log2 (double __x) throw ();
+extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw ();
+extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw ();
+extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw ();
+extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw ();
+extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__));
+extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__));
+extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__));
+extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw ();
+extern int __isinf (double __value) throw () __attribute__ ((__const__));
+extern int __finite (double __value) throw () __attribute__ ((__const__));
+extern int isinf (double __value) throw () __attribute__ ((__const__));
+extern int finite (double __value) throw () __attribute__ ((__const__));
+extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw ();
+extern double significand (double __x) throw (); extern double __significand (double __x) throw ();
+extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__));
+extern double nan (__const char *__tagb) throw () __attribute__ ((__const__)); extern double __nan (__const char *__tagb) throw () __attribute__ ((__const__));
+extern int __isnan (double __value) throw () __attribute__ ((__const__));
+extern int isnan (double __value) throw () __attribute__ ((__const__));
+extern double j0 (double) throw (); extern double __j0 (double) throw ();
+extern double j1 (double) throw (); extern double __j1 (double) throw ();
+extern double jn (int, double) throw (); extern double __jn (int, double) throw ();
+extern double y0 (double) throw (); extern double __y0 (double) throw ();
+extern double y1 (double) throw (); extern double __y1 (double) throw ();
+extern double yn (int, double) throw (); extern double __yn (int, double) throw ();
+extern double erf (double) throw (); extern double __erf (double) throw ();
+extern double erfc (double) throw (); extern double __erfc (double) throw ();
+extern double lgamma (double) throw (); extern double __lgamma (double) throw ();
+extern double tgamma (double) throw (); extern double __tgamma (double) throw ();
+extern double gamma (double) throw (); extern double __gamma (double) throw ();
+extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw ();
+extern double rint (double __x) throw (); extern double __rint (double __x) throw ();
+extern double nextafter (double __x, double __y) throw () __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) throw () __attribute__ ((__const__));
+extern double nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) throw () __attribute__ ((__const__));
+extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw ();
+extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw ();
+extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw ();
+extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw ();
+extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw ();
+extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__));
+extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__));
+extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw ();
+extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw ();
+extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw ();
+extern long int lround (double __x) throw (); extern long int __lround (double __x) throw ();
+extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw ();
+extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw ();
+extern double fmax (double __x, double __y) throw (); extern double __fmax (double __x, double __y) throw ();
+extern double fmin (double __x, double __y) throw (); extern double __fmin (double __x, double __y) throw ();
+extern int __fpclassify (double __value) throw ()
+ __attribute__ ((__const__));
+extern int __signbit (double __value) throw ()
+ __attribute__ ((__const__));
+extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw ();
+extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw ();
+extern float acosf (float __x) throw (); extern float __acosf (float __x) throw ();
+extern float asinf (float __x) throw (); extern float __asinf (float __x) throw ();
+extern float atanf (float __x) throw (); extern float __atanf (float __x) throw ();
+extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw ();
+extern float cosf (float __x) throw (); extern float __cosf (float __x) throw ();
+extern float sinf (float __x) throw (); extern float __sinf (float __x) throw ();
+extern float tanf (float __x) throw (); extern float __tanf (float __x) throw ();
+extern float coshf (float __x) throw (); extern float __coshf (float __x) throw ();
+extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw ();
+extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw ();
+extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw ();
+extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw ();
+extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw ();
+extern float expf (float __x) throw (); extern float __expf (float __x) throw ();
+extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw ();
+extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw ();
+extern float logf (float __x) throw (); extern float __logf (float __x) throw ();
+extern float log10f (float __x) throw (); extern float __log10f (float __x) throw ();
+extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw ();
+extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw ();
+extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw ();
+extern float logbf (float __x) throw (); extern float __logbf (float __x) throw ();
+extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw ();
+extern float log2f (float __x) throw (); extern float __log2f (float __x) throw ();
+extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw ();
+extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw ();
+extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw ();
+extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw ();
+extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__));
+extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__));
+extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__));
+extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw ();
+extern int __isinff (float __value) throw () __attribute__ ((__const__));
+extern int __finitef (float __value) throw () __attribute__ ((__const__));
+extern int isinff (float __value) throw () __attribute__ ((__const__));
+extern int finitef (float __value) throw () __attribute__ ((__const__));
+extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw ();
+extern float significandf (float __x) throw (); extern float __significandf (float __x) throw ();
+extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__));
+extern float nanf (__const char *__tagb) throw () __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) throw () __attribute__ ((__const__));
+extern int __isnanf (float __value) throw () __attribute__ ((__const__));
+extern int isnanf (float __value) throw () __attribute__ ((__const__));
+extern float j0f (float) throw (); extern float __j0f (float) throw ();
+extern float j1f (float) throw (); extern float __j1f (float) throw ();
+extern float jnf (int, float) throw (); extern float __jnf (int, float) throw ();
+extern float y0f (float) throw (); extern float __y0f (float) throw ();
+extern float y1f (float) throw (); extern float __y1f (float) throw ();
+extern float ynf (int, float) throw (); extern float __ynf (int, float) throw ();
+extern float erff (float) throw (); extern float __erff (float) throw ();
+extern float erfcf (float) throw (); extern float __erfcf (float) throw ();
+extern float lgammaf (float) throw (); extern float __lgammaf (float) throw ();
+extern float tgammaf (float) throw (); extern float __tgammaf (float) throw ();
+extern float gammaf (float) throw (); extern float __gammaf (float) throw ();
+extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw ();
+extern float rintf (float __x) throw (); extern float __rintf (float __x) throw ();
+extern float nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) throw () __attribute__ ((__const__));
+extern float nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__));
+extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw ();
+extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw ();
+extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw ();
+extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw ();
+extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw ();
+extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__));
+extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__));
+extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw ();
+extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw ();
+extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw ();
+extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw ();
+extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw ();
+extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw ();
+extern float fmaxf (float __x, float __y) throw (); extern float __fmaxf (float __x, float __y) throw ();
+extern float fminf (float __x, float __y) throw (); extern float __fminf (float __x, float __y) throw ();
+extern int __fpclassifyf (float __value) throw ()
+ __attribute__ ((__const__));
+extern int __signbitf (float __value) throw ()
+ __attribute__ ((__const__));
+extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw ();
+extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw ();
+extern int signgam;
+enum
+ {
+ FP_NAN,
+ FP_INFINITE,
+ FP_ZERO,
+ FP_SUBNORMAL,
+ FP_NORMAL
+ };
+typedef enum
+{
+ _IEEE_ = -1,
+ _SVID_,
+ _XOPEN_,
+ _POSIX_,
+ _ISOC_
+} _LIB_VERSION_TYPE;
+extern _LIB_VERSION_TYPE _LIB_VERSION;
+struct __exception
+ {
+ int type;
+ char *name;
+ double arg1;
+ double arg2;
+ double retval;
+ };
+extern int matherr (struct __exception *__exc) throw ();
+}
+typedef QtValidLicenseForCoreModule QtCoreModule;
+inline int qCeil(qreal v)
+{
+ if (sizeof(qreal) == sizeof(float))
+ return int(ceilf(v));
+ else
+ return int(ceil(v));
+}
+inline int qFloor(qreal v)
+{
+ if (sizeof(qreal) == sizeof(float))
+ return int(floorf(v));
+ else
+ return int(floor(v));
+}
+inline qreal qSin(qreal v)
+{
+ if (sizeof(qreal) == sizeof(float))
+ return sinf(v);
+ else
+ return sin(v);
+}
+inline qreal qCos(qreal v)
+{
+ if (sizeof(qreal) == sizeof(float))
+ return cosf(v);
+ else
+ return cos(v);
+}
+inline qreal qAcos(qreal v)
+{
+ if (sizeof(qreal) == sizeof(float))
+ return acosf(v);
+ else
+ return acos(v);
+}
+inline qreal qSqrt(qreal v)
+{
+ if (sizeof(qreal) == sizeof(float))
+ return sqrtf(v);
+ else
+ return sqrt(v);
+}
+inline qreal qLn(qreal v)
+{
+ if (sizeof(qreal) == sizeof(float))
+ return logf(v);
+ else
+ return log(v);
+}
+inline qreal qPow(qreal x, qreal y)
+{
+ if (sizeof(qreal) == sizeof(float))
+ return powf(x, y);
+ else
+ return pow(x, y);
+}
+typedef QtValidLicenseForCoreModule QtCoreModule;
+inline void qbswap_helper(const uchar *src, uchar *dest, int size)
+{
+ for (int i = 0; i < size ; ++i) dest[i] = src[size - 1 - i];
+}
+template <typename T> inline void qbswap(const T src, uchar *dest)
+{
+ qbswap_helper(reinterpret_cast<const uchar *>(&src), dest, sizeof(T));
+}
+template <typename T> inline void qToUnaligned(const T src, uchar *dest)
+{
+ qMemCopy(dest, &src, sizeof(T));
+}
+template <typename T> inline T qFromLittleEndian(const uchar *src);
+template <> inline quint64 qFromLittleEndian<quint64>(const uchar *src)
+{
+ return 0
+ | src[0]
+ | src[1] * static_cast<unsigned long long>(0x0000000000000100ULL)
+ | src[2] * static_cast<unsigned long long>(0x0000000000010000ULL)
+ | src[3] * static_cast<unsigned long long>(0x0000000001000000ULL)
+ | src[4] * static_cast<unsigned long long>(0x0000000100000000ULL)
+ | src[5] * static_cast<unsigned long long>(0x0000010000000000ULL)
+ | src[6] * static_cast<unsigned long long>(0x0001000000000000ULL)
+ | src[7] * static_cast<unsigned long long>(0x0100000000000000ULL);
+}
+template <> inline quint32 qFromLittleEndian<quint32>(const uchar *src)
+{
+ return 0
+ | src[0]
+ | src[1] * quint32(0x00000100)
+ | src[2] * quint32(0x00010000)
+ | src[3] * quint32(0x01000000);
+}
+template <> inline quint16 qFromLittleEndian<quint16>(const uchar *src)
+{
+ return 0
+ | src[0]
+ | src[1] * 0x0100;
+}
+template <> inline qint64 qFromLittleEndian<qint64>(const uchar *src)
+{ return static_cast<qint64>(qFromLittleEndian<quint64>(src)); }
+template <> inline qint32 qFromLittleEndian<qint32>(const uchar *src)
+{ return static_cast<qint32>(qFromLittleEndian<quint32>(src)); }
+template <> inline qint16 qFromLittleEndian<qint16>(const uchar *src)
+{ return static_cast<qint16>(qFromLittleEndian<quint16>(src)); }
+template <class T> inline T qFromBigEndian(const uchar *src);
+template<>
+inline quint64 qFromBigEndian<quint64>(const uchar *src)
+{
+ return 0
+ | src[7]
+ | src[6] * static_cast<unsigned long long>(0x0000000000000100ULL)
+ | src[5] * static_cast<unsigned long long>(0x0000000000010000ULL)
+ | src[4] * static_cast<unsigned long long>(0x0000000001000000ULL)
+ | src[3] * static_cast<unsigned long long>(0x0000000100000000ULL)
+ | src[2] * static_cast<unsigned long long>(0x0000010000000000ULL)
+ | src[1] * static_cast<unsigned long long>(0x0001000000000000ULL)
+ | src[0] * static_cast<unsigned long long>(0x0100000000000000ULL);
+}
+template<>
+inline quint32 qFromBigEndian<quint32>(const uchar *src)
+{
+ return 0
+ | src[3]
+ | src[2] * quint32(0x00000100)
+ | src[1] * quint32(0x00010000)
+ | src[0] * quint32(0x01000000);
+}
+template<>
+inline quint16 qFromBigEndian<quint16>(const uchar *src)
+{
+ return 0
+ | src[1]
+ | src[0] * quint16(0x0100);
+}
+template <> inline qint64 qFromBigEndian<qint64>(const uchar *src)
+{ return static_cast<qint64>(qFromBigEndian<quint64>(src)); }
+template <> inline qint32 qFromBigEndian<qint32>(const uchar *src)
+{ return static_cast<qint32>(qFromBigEndian<quint32>(src)); }
+template <> inline qint16 qFromBigEndian<qint16>(const uchar *src)
+{ return static_cast<qint16>(qFromBigEndian<quint16>(src)); }
+template <typename T> T qbswap(T source);
+template <> inline quint64 qbswap<quint64>(quint64 source)
+{
+ return 0
+ | ((source & static_cast<unsigned long long>(0x00000000000000ffULL)) << 56)
+ | ((source & static_cast<unsigned long long>(0x000000000000ff00ULL)) << 40)
+ | ((source & static_cast<unsigned long long>(0x0000000000ff0000ULL)) << 24)
+ | ((source & static_cast<unsigned long long>(0x00000000ff000000ULL)) << 8)
+ | ((source & static_cast<unsigned long long>(0x000000ff00000000ULL)) >> 8)
+ | ((source & static_cast<unsigned long long>(0x0000ff0000000000ULL)) >> 24)
+ | ((source & static_cast<unsigned long long>(0x00ff000000000000ULL)) >> 40)
+ | ((source & static_cast<unsigned long long>(0xff00000000000000ULL)) >> 56);
+}
+template <> inline quint32 qbswap<quint32>(quint32 source)
+{
+ return 0
+ | ((source & 0x000000ff) << 24)
+ | ((source & 0x0000ff00) << 8)
+ | ((source & 0x00ff0000) >> 8)
+ | ((source & 0xff000000) >> 24);
+}
+template <> inline quint16 qbswap<quint16>(quint16 source)
+{
+ return 0
+ | ((source & 0x00ff) << 8)
+ | ((source & 0xff00) >> 8);
+}
+template <> inline qint64 qbswap<qint64>(qint64 source)
+{
+ return qbswap<quint64>(quint64(source));
+}
+template <> inline qint32 qbswap<qint32>(qint32 source)
+{
+ return qbswap<quint32>(quint32(source));
+}
+template <> inline qint16 qbswap<qint16>(qint16 source)
+{
+ return qbswap<quint16>(quint16(source));
+}
+template <typename T> inline T qToBigEndian(T source)
+{ return qbswap<T>(source); }
+template <typename T> inline T qFromBigEndian(T source)
+{ return qbswap<T>(source); }
+template <typename T> inline T qToLittleEndian(T source)
+{ return source; }
+template <typename T> inline T qFromLittleEndian(T source)
+{ return source; }
+template <typename T> inline void qToBigEndian(T src, uchar *dest)
+{ qbswap<T>(src, dest); }
+template <typename T> inline void qToLittleEndian(T src, uchar *dest)
+{ qToUnaligned<T>(src, dest); }
+static inline bool qtransform_equals_no_translate(const QTransform &a, const QTransform &b)
+{
+ if (a.type() <= QTransform::TxTranslate && b.type() <= QTransform::TxTranslate) {
+ return true;
+ } else {
+ qt_noop();
+ qt_noop();
+ return a.m11() == b.m11()
+ && a.m12() == b.m12()
+ && a.m21() == b.m21()
+ && a.m22() == b.m22();
+ }
+}
+QFontEngineGlyphCache::~QFontEngineGlyphCache()
+{
+}
+static HB_Bool hb_stringToGlyphs(HB_Font font, const HB_UChar16 *string, hb_uint32 length, HB_Glyph *glyphs, hb_uint32 *numGlyphs, HB_Bool rightToLeft)
+{
+ QFontEngine *fe = (QFontEngine *)font->userData;
+ QVarLengthGlyphLayoutArray qglyphs(*numGlyphs);
+ QTextEngine::ShaperFlags shaperFlags(QTextEngine::GlyphIndicesOnly);
+ if (rightToLeft)
+ shaperFlags |= QTextEngine::RightToLeft;
+ int nGlyphs = *numGlyphs;
+ bool result = fe->stringToCMap(reinterpret_cast<const QChar *>(string), length, &qglyphs, &nGlyphs, shaperFlags);
+ *numGlyphs = nGlyphs;
+ if (!result)
+ return false;
+ for (hb_uint32 i = 0; i < *numGlyphs; ++i)
+ glyphs[i] = qglyphs.glyphs[i];
+ return true;
+}
+static void hb_getAdvances(HB_Font font, const HB_Glyph *glyphs, hb_uint32 numGlyphs, HB_Fixed *advances, int flags)
+{
+ QFontEngine *fe = (QFontEngine *)font->userData;
+ QVarLengthGlyphLayoutArray qglyphs(numGlyphs);
+ for (hb_uint32 i = 0; i < numGlyphs; ++i)
+ qglyphs.glyphs[i] = glyphs[i];
+ fe->recalcAdvances(&qglyphs, flags & HB_ShaperFlag_UseDesignMetrics ? QFlags<QTextEngine::ShaperFlag>(QTextEngine::DesignMetrics) : QFlags<QTextEngine::ShaperFlag>(0));
+ for (hb_uint32 i = 0; i < numGlyphs; ++i)
+ advances[i] = qglyphs.advances_x[i].value();
+}
+static HB_Bool hb_canRender(HB_Font font, const HB_UChar16 *string, hb_uint32 length)
+{
+ QFontEngine *fe = (QFontEngine *)font->userData;
+ return fe->canRender(reinterpret_cast<const QChar *>(string), length);
+}
+static void hb_getGlyphMetrics(HB_Font font, HB_Glyph glyph, HB_GlyphMetrics *metrics)
+{
+ QFontEngine *fe = (QFontEngine *)font->userData;
+ glyph_metrics_t m = fe->boundingBox(glyph);
+ metrics->x = m.x.value();
+ metrics->y = m.y.value();
+ metrics->width = m.width.value();
+ metrics->height = m.height.value();
+ metrics->xOffset = m.xoff.value();
+ metrics->yOffset = m.yoff.value();
+}
+static HB_Fixed hb_getFontMetric(HB_Font font, HB_FontMetric metric)
+{
+ if (metric == HB_FontAscent) {
+ QFontEngine *fe = (QFontEngine *)font->userData;
+ return fe->ascent().value();
+ }
+ return 0;
+}
+HB_Error QFontEngine::getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints)
+{
+ (void)glyph;
+ (void)flags;
+ (void)point;
+ (void)xpos;
+ (void)ypos;
+ (void)nPoints;
+ return HB_Err_Not_Covered;
+}
+static HB_Error hb_getPointInOutline(HB_Font font, HB_Glyph glyph, int flags, hb_uint32 point, HB_Fixed *xpos, HB_Fixed *ypos, hb_uint32 *nPoints)
+{
+ QFontEngine *fe = (QFontEngine *)font->userData;
+ return fe->getPointInOutline(glyph, flags, point, xpos, ypos, nPoints);
+}
+static const HB_FontClass hb_fontClass = {
+ hb_stringToGlyphs, hb_getAdvances, hb_canRender, hb_getPointInOutline,
+ hb_getGlyphMetrics, hb_getFontMetric
+};
+static HB_Error hb_getSFntTable(void *font, HB_Tag tableTag, HB_Byte *buffer, HB_UInt *length)
+{
+ QFontEngine *fe = (QFontEngine *)font;
+ if (!fe->getSfntTableData(tableTag, buffer, length))
+ return HB_Err_Invalid_Argument;
+ return HB_Err_Ok;
+}
+QFontEngine::QFontEngine()
+ : QObject()
+{
+ ref = 0;
+ cache_count = 0;
+ fsType = 0;
+ symbol = false;
+ memset(&hbFont, 0, sizeof(hbFont));
+ hbFont.klass = &hb_fontClass;
+ hbFont.userData = this;
+ hbFace = 0;
+ glyphFormat = -1;
+}
+QFontEngine::~QFontEngine()
+{
+ for (GlyphPointerHash::iterator it = m_glyphPointerHash.begin(), end = m_glyphPointerHash.end();
+ it != end; ++it) {
+ for (QList<QFontEngineGlyphCache*>::iterator it2 = it.value().begin(), end2 = it.value().end();
+ it2 != end2; ++it2)
+ delete *it2;
+ }
+ m_glyphPointerHash.clear();
+ for (GlyphIntHash::iterator it = m_glyphIntHash.begin(), end = m_glyphIntHash.end();
+ it != end; ++it) {
+ for (QList<QFontEngineGlyphCache*>::iterator it2 = it.value().begin(), end2 = it.value().end();
+ it2 != end2; ++it2)
+ delete *it2;
+ }
+ m_glyphIntHash.clear();
+ qHBFreeFace(hbFace);
+}
+QFixed QFontEngine::lineThickness() const
+{
+ int score = fontDef.weight * fontDef.pixelSize;
+ int lw = score / 700;
+ if (lw < 2 && score >= 1050) lw = 2;
+ if (lw == 0) lw = 1;
+ return lw;
+}
+QFixed QFontEngine::underlinePosition() const
+{
+ return ((lineThickness() * 2) + 3) / 6;
+}
+HB_Font QFontEngine::harfbuzzFont() const
+{
+ if (!hbFont.x_ppem) {
+ QFixed emSquare = emSquareSize();
+ hbFont.x_ppem = fontDef.pixelSize;
+ hbFont.y_ppem = fontDef.pixelSize * fontDef.stretch / 100;
+ hbFont.x_scale = (QFixed(hbFont.x_ppem * (1 << 16)) / emSquare).value();
+ hbFont.y_scale = (QFixed(hbFont.y_ppem * (1 << 16)) / emSquare).value();
+ }
+ return &hbFont;
+}
+HB_Face QFontEngine::harfbuzzFace() const
+{
+ if (!hbFace)
+ hbFace = qHBNewFace(const_cast<QFontEngine *>(this), hb_getSFntTable);
+ return hbFace;
+}
+glyph_metrics_t QFontEngine::boundingBox(glyph_t glyph, const QTransform &matrix)
+{
+ glyph_metrics_t metrics = boundingBox(glyph);
+ if (matrix.type() > QTransform::TxTranslate) {
+ return metrics.transformed(matrix);
+ }
+ return metrics;
+}
+QFixed QFontEngine::xHeight() const
+{
+ QGlyphLayoutArray<8> glyphs;
+ int nglyphs = 7;
+ QChar x((ushort)'x');
+ stringToCMap(&x, 1, &glyphs, &nglyphs, QTextEngine::GlyphIndicesOnly);
+ glyph_metrics_t bb = const_cast<QFontEngine *>(this)->boundingBox(glyphs.glyphs[0]);
+ return bb.height;
+}
+QFixed QFontEngine::averageCharWidth() const
+{
+ QGlyphLayoutArray<8> glyphs;
+ int nglyphs = 7;
+ QChar x((ushort)'x');
+ stringToCMap(&x, 1, &glyphs, &nglyphs, QTextEngine::GlyphIndicesOnly);
+ glyph_metrics_t bb = const_cast<QFontEngine *>(this)->boundingBox(glyphs.glyphs[0]);
+ return bb.xoff;
+}
+void QFontEngine::getGlyphPositions(const QGlyphLayout &glyphs, const QTransform &matrix, QTextItem::RenderFlags flags,
+ QVarLengthArray<glyph_t> &glyphs_out, QVarLengthArray<QFixedPoint> &positions)
+{
+ QFixed xpos;
+ QFixed ypos;
+ const bool transform = matrix.m11() != 1.
+ || matrix.m12() != 0.
+ || matrix.m21() != 0.
+ || matrix.m22() != 1.;
+ if (!transform) {
+ xpos = QFixed::fromReal(matrix.dx());
+ ypos = QFixed::fromReal(matrix.dy());
+ }
+ int current = 0;
+ if (flags & QTextItem::RightToLeft) {
+ int i = glyphs.numGlyphs;
+ int totalKashidas = 0;
+ while(i--) {
+ xpos += glyphs.advances_x[i] + QFixed::fromFixed(glyphs.justifications[i].space_18d6);
+ ypos += glyphs.advances_y[i];
+ totalKashidas += glyphs.justifications[i].nKashidas;
+ }
+ positions.resize(glyphs.numGlyphs+totalKashidas);
+ glyphs_out.resize(glyphs.numGlyphs+totalKashidas);
+ i = 0;
+ while(i < glyphs.numGlyphs) {
+ if (glyphs.attributes[i].dontPrint) {
+ ++i;
+ continue;
+ }
+ xpos -= glyphs.advances_x[i];
+ ypos -= glyphs.advances_y[i];
+ QFixed gpos_x = xpos + glyphs.offsets[i].x;
+ QFixed gpos_y = ypos + glyphs.offsets[i].y;
+ if (transform) {
+ QPointF gpos(gpos_x.toReal(), gpos_y.toReal());
+ gpos = gpos * matrix;
+ gpos_x = QFixed::fromReal(gpos.x());
+ gpos_y = QFixed::fromReal(gpos.y());
+ }
+ positions[current].x = gpos_x;
+ positions[current].y = gpos_y;
+ glyphs_out[current] = glyphs.glyphs[i];
+ ++current;
+ if (glyphs.justifications[i].nKashidas) {
+ QChar ch(0x640);
+ QGlyphLayoutArray<8> g;
+ int nglyphs = 7;
+ stringToCMap(&ch, 1, &g, &nglyphs, 0);
+ for (uint k = 0; k < glyphs.justifications[i].nKashidas; ++k) {
+ xpos -= g.advances_x[0];
+ ypos -= g.advances_y[0];
+ QFixed gpos_x = xpos + glyphs.offsets[i].x;
+ QFixed gpos_y = ypos + glyphs.offsets[i].y;
+ if (transform) {
+ QPointF gpos(gpos_x.toReal(), gpos_y.toReal());
+ gpos = gpos * matrix;
+ gpos_x = QFixed::fromReal(gpos.x());
+ gpos_y = QFixed::fromReal(gpos.y());
+ }
+ positions[current].x = gpos_x;
+ positions[current].y = gpos_y;
+ glyphs_out[current] = g.glyphs[0];
+ ++current;
+ }
+ } else {
+ xpos -= QFixed::fromFixed(glyphs.justifications[i].space_18d6);
+ }
+ ++i;
+ }
+ } else {
+ positions.resize(glyphs.numGlyphs);
+ glyphs_out.resize(glyphs.numGlyphs);
+ int i = 0;
+ if (!transform) {
+ while (i < glyphs.numGlyphs) {
+ if (!glyphs.attributes[i].dontPrint) {
+ positions[current].x = xpos + glyphs.offsets[i].x;
+ positions[current].y = ypos + glyphs.offsets[i].y;
+ glyphs_out[current] = glyphs.glyphs[i];
+ xpos += glyphs.advances_x[i] + QFixed::fromFixed(glyphs.justifications[i].space_18d6);
+ ypos += glyphs.advances_y[i];
+ ++current;
+ }
+ ++i;
+ }
+ } else {
+ positions.resize(glyphs.numGlyphs);
+ glyphs_out.resize(glyphs.numGlyphs);
+ int i = 0;
+ while (i < glyphs.numGlyphs) {
+ if (!glyphs.attributes[i].dontPrint) {
+ QFixed gpos_x = xpos + glyphs.offsets[i].x;
+ QFixed gpos_y = ypos + glyphs.offsets[i].y;
+ QPointF gpos(gpos_x.toReal(), gpos_y.toReal());
+ gpos = gpos * matrix;
+ positions[current].x = QFixed::fromReal(gpos.x());
+ positions[current].y = QFixed::fromReal(gpos.y());
+ glyphs_out[current] = glyphs.glyphs[i];
+ xpos += glyphs.advances_x[i] + QFixed::fromFixed(glyphs.justifications[i].space_18d6);
+ ypos += glyphs.advances_y[i];
+ ++current;
+ }
+ ++i;
+ }
+ }
+ }
+ positions.resize(current);
+ glyphs_out.resize(current);
+ qt_noop();
+}
+glyph_metrics_t QFontEngine::tightBoundingBox(const QGlyphLayout &glyphs)
+{
+ glyph_metrics_t overall;
+ QFixed ymax = 0;
+ QFixed xmax = 0;
+ for (int i = 0; i < glyphs.numGlyphs; i++) {
+ glyph_metrics_t bb = boundingBox(glyphs.glyphs[i]);
+ QFixed x = overall.xoff + glyphs.offsets[i].x + bb.x;
+ QFixed y = overall.yoff + glyphs.offsets[i].y + bb.y;
+ overall.x = qMin(overall.x, x);
+ overall.y = qMin(overall.y, y);
+ xmax = qMax(xmax, x + bb.width);
+ ymax = qMax(ymax, y + bb.height);
+ overall.xoff += bb.xoff;
+ overall.yoff += bb.yoff;
+ }
+ overall.height = qMax(overall.height, ymax - overall.y);
+ overall.width = xmax - overall.x;
+ return overall;
+}
+void QFontEngine::addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path,
+ QTextItem::RenderFlags flags)
+{
+ if (!glyphs.numGlyphs)
+ return;
+ QVarLengthArray<QFixedPoint> positions;
+ QVarLengthArray<glyph_t> positioned_glyphs;
+ QTransform matrix;
+ matrix.translate(x, y);
+ getGlyphPositions(glyphs, matrix, flags, positioned_glyphs, positions);
+ addGlyphsToPath(positioned_glyphs.data(), positions.data(), positioned_glyphs.size(), path, flags);
+}
+enum { EdgeRight = 0x1,
+ EdgeDown = 0x2,
+ EdgeLeft = 0x4,
+ EdgeUp = 0x8
+};
+static void collectSingleContour(qreal x0, qreal y0, uint *grid, int x, int y, int w, int h, QPainterPath *path)
+{
+ (void)h;;
+ path->moveTo(x + x0, y + y0);
+ while (grid[(y)*(w+1) + (x)]) {
+ if (grid[(y)*(w+1) + (x)] & EdgeRight) {
+ while (grid[(y)*(w+1) + (x)] & EdgeRight) {
+ grid[(y)*(w+1) + (x)] &= ~EdgeRight;
+ ++x;
+ }
+ qt_noop();
+ path->lineTo(x + x0, y + y0);
+ continue;
+ }
+ if (grid[(y)*(w+1) + (x)] & EdgeDown) {
+ while (grid[(y)*(w+1) + (x)] & EdgeDown) {
+ grid[(y)*(w+1) + (x)] &= ~EdgeDown;
+ ++y;
+ }
+ qt_noop();
+ path->lineTo(x + x0, y + y0);
+ continue;
+ }
+ if (grid[(y)*(w+1) + (x)] & EdgeLeft) {
+ while (grid[(y)*(w+1) + (x)] & EdgeLeft) {
+ grid[(y)*(w+1) + (x)] &= ~EdgeLeft;
+ --x;
+ }
+ qt_noop();
+ path->lineTo(x + x0, y + y0);
+ continue;
+ }
+ if (grid[(y)*(w+1) + (x)] & EdgeUp) {
+ while (grid[(y)*(w+1) + (x)] & EdgeUp) {
+ grid[(y)*(w+1) + (x)] &= ~EdgeUp;
+ --y;
+ }
+ qt_noop();
+ path->lineTo(x + x0, y + y0);
+ continue;
+ }
+ }
+ path->closeSubpath();
+}
+void qt_addBitmapToPath(qreal x0, qreal y0, const uchar *image_data, int bpl, int w, int h, QPainterPath *path)
+{
+ uint *grid = new uint[(w+1)*(h+1)];
+ for (int y = 0; y <= h; ++y) {
+ for (int x = 0; x <= w; ++x) {
+ bool topLeft = (x == 0)|(y == 0) ? false : (*(image_data + (y - 1)*bpl + ((x - 1) >> 3)) & (0x80 >> ((x - 1) & 7)));
+ bool topRight = (x == w)|(y == 0) ? false : (*(image_data + (y - 1)*bpl + ((x) >> 3)) & (0x80 >> ((x) & 7)));
+ bool bottomLeft = (x == 0)|(y == h) ? false : (*(image_data + (y)*bpl + ((x - 1) >> 3)) & (0x80 >> ((x - 1) & 7)));
+ bool bottomRight = (x == w)|(y == h) ? false : (*(image_data + (y)*bpl + ((x) >> 3)) & (0x80 >> ((x) & 7)));
+ grid[(y)*(w+1) + (x)] = 0;
+ if ((!topRight) & bottomRight)
+ grid[(y)*(w+1) + (x)] |= EdgeRight;
+ if ((!bottomRight) & bottomLeft)
+ grid[(y)*(w+1) + (x)] |= EdgeDown;
+ if ((!bottomLeft) & topLeft)
+ grid[(y)*(w+1) + (x)] |= EdgeLeft;
+ if ((!topLeft) & topRight)
+ grid[(y)*(w+1) + (x)] |= EdgeUp;
+ }
+ }
+ for (int y = 0; y < h; ++y) {
+ for (int x = 0; x < w; ++x) {
+ if (!grid[(y)*(w+1) + (x)])
+ continue;
+ collectSingleContour(x0, y0, grid, x, y, w, h, path);
+ }
+ }
+ delete [] grid;
+}
+void QFontEngine::addBitmapFontToPath(qreal x, qreal y, const QGlyphLayout &glyphs,
+ QPainterPath *path, QTextItem::RenderFlags flags)
+{
+ (void)flags;;
+ QFixed advanceX = QFixed::fromReal(x);
+ QFixed advanceY = QFixed::fromReal(y);
+ for (int i=0; i < glyphs.numGlyphs; ++i) {
+ glyph_metrics_t metrics = boundingBox(glyphs.glyphs[i]);
+ if (metrics.width.value() == 0 || metrics.height.value() == 0) {
+ advanceX += glyphs.advances_x[i];
+ advanceY += glyphs.advances_y[i];
+ continue;
+ }
+ const QImage alphaMask = alphaMapForGlyph(glyphs.glyphs[i]);
+ const int w = alphaMask.width();
+ const int h = alphaMask.height();
+ const int srcBpl = alphaMask.bytesPerLine();
+ QImage bitmap;
+ if (alphaMask.depth() == 1) {
+ bitmap = alphaMask;
+ } else {
+ bitmap = QImage(w, h, QImage::Format_Mono);
+ const uchar *imageData = alphaMask.bits();
+ const int destBpl = bitmap.bytesPerLine();
+ uchar *bitmapData = bitmap.bits();
+ for (int yi = 0; yi < h; ++yi) {
+ const uchar *src = imageData + yi*srcBpl;
+ uchar *dst = bitmapData + yi*destBpl;
+ for (int xi = 0; xi < w; ++xi) {
+ const int byte = xi / 8;
+ const int bit = xi % 8;
+ if (bit == 0)
+ dst[byte] = 0;
+ if (src[xi])
+ dst[byte] |= 128 >> bit;
+ }
+ }
+ }
+ const uchar *bitmap_data = bitmap.bits();
+ QFixedPoint offset = glyphs.offsets[i];
+ advanceX += offset.x;
+ advanceY += offset.y;
+ qt_addBitmapToPath((advanceX + metrics.x).toReal(), (advanceY + metrics.y).toReal(), bitmap_data, bitmap.bytesPerLine(), w, h, path);
+ advanceX += glyphs.advances_x[i];
+ advanceY += glyphs.advances_y[i];
+ }
+}
+void QFontEngine::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *positions, int nGlyphs,
+ QPainterPath *path, QTextItem::RenderFlags flags)
+{
+ qreal x = positions[0].x.toReal();
+ qreal y = positions[0].y.toReal();
+ QVarLengthGlyphLayoutArray g(nGlyphs);
+ for (int i = 0; i < nGlyphs; ++i) {
+ g.glyphs[i] = glyphs[i];
+ if (i < nGlyphs - 1) {
+ g.advances_x[i] = positions[i+1].x - positions[i].x;
+ g.advances_y[i] = positions[i+1].y - positions[i].y;
+ } else {
+ g.advances_x[i] = QFixed::fromReal(maxCharWidth());
+ g.advances_y[i] = 0;
+ }
+ }
+ addBitmapFontToPath(x, y, g, path, flags);
+}
+QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &t)
+{
+ QImage i = alphaMapForGlyph(glyph);
+ if (t.type() > QTransform::TxTranslate)
+ i = i.transformed(t);
+ qt_noop();
+ return i;
+}
+QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, int , const QTransform &t)
+{
+ QImage alphaMask = alphaMapForGlyph(glyph, t);
+ QImage rgbMask(alphaMask.width(), alphaMask.height(), QImage::Format_RGB32);
+ for (int y=0; y<alphaMask.height(); ++y) {
+ uint *dst = (uint *) rgbMask.scanLine(y);
+ uchar *src = (uchar *) alphaMask.scanLine(y);
+ for (int x=0; x<alphaMask.width(); ++x)
+ dst[x] = qRgb(src[x], src[x], src[x]);
+ }
+ return rgbMask;
+}
+void QFontEngine::removeGlyphFromCache(glyph_t)
+{
+}
+QFontEngine::Properties QFontEngine::properties() const
+{
+ Properties p;
+ QByteArray psname = QPdf::stripSpecialCharacters(fontDef.family.toUtf8());
+ psname += '-';
+ psname += QByteArray::number(fontDef.style);
+ psname += '-';
+ psname += QByteArray::number(fontDef.weight);
+ p.postscriptName = psname;
+ p.ascent = ascent();
+ p.descent = descent();
+ p.leading = leading();
+ p.emSquare = p.ascent;
+ p.boundingBox = QRectF(0, -p.ascent.toReal(), maxCharWidth(), (p.ascent + p.descent).toReal());
+ p.italicAngle = 0;
+ p.capHeight = p.ascent;
+ p.lineWidth = lineThickness();
+ return p;
+}
+void QFontEngine::getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics)
+{
+ *metrics = boundingBox(glyph);
+ QFixedPoint p;
+ p.x = 0;
+ p.y = 0;
+ addGlyphsToPath(&glyph, &p, 1, path, QFlag(0));
+}
+QByteArray QFontEngine::getSfntTable(uint tag) const
+{
+ QByteArray table;
+ uint len = 0;
+ if (!getSfntTableData(tag, 0, &len))
+ return table;
+ if (!len)
+ return table;
+ table.resize(len);
+ if (!getSfntTableData(tag, reinterpret_cast<uchar *>(table.data()), &len))
+ return QByteArray();
+ return table;
+}
+void QFontEngine::expireGlyphCache()
+{
+ if (m_glyphCacheQueue.count() > 10) {
+ QFontEngineGlyphCache *old = m_glyphCacheQueue.takeFirst();
+ for (GlyphPointerHash::iterator i = m_glyphPointerHash.begin(); i != m_glyphPointerHash.end(); ++i) {
+ QList<QFontEngineGlyphCache *> list = i.value();
+ if (list.removeAll(old)) {
+ if (list.isEmpty())
+ m_glyphPointerHash.remove(i.key());
+ else
+ m_glyphPointerHash.insert(i.key(), list);
+ break;
+ }
+ }
+ for (GlyphIntHash::iterator i = m_glyphIntHash.begin(); i != m_glyphIntHash.end(); ++i) {
+ QList<QFontEngineGlyphCache *> list = i.value();
+ if (list.removeAll(old)) {
+ if (list.isEmpty())
+ m_glyphIntHash.remove(i.key());
+ else
+ m_glyphIntHash.insert(i.key(), list);
+ break;
+ }
+ }
+ delete old;
+ }
+}
+void QFontEngine::setGlyphCache(void *key, QFontEngineGlyphCache *data)
+{
+ qt_noop();
+ QList<QFontEngineGlyphCache*> items = m_glyphPointerHash.value(key);
+ for (QList<QFontEngineGlyphCache*>::iterator it = items.begin(), end = items.end(); it != end; ++it) {
+ QFontEngineGlyphCache *c = *it;
+ if (qtransform_equals_no_translate(c->m_transform, data->m_transform)) {
+ if (c == data)
+ return;
+ items.removeAll(c);
+ delete c;
+ break;
+ }
+ }
+ items.append(data);
+ m_glyphPointerHash.insert(key, items);
+ m_glyphCacheQueue.append(data);
+ expireGlyphCache();
+}
+void QFontEngine::setGlyphCache(QFontEngineGlyphCache::Type key, QFontEngineGlyphCache *data)
+{
+ qt_noop();
+ QList<QFontEngineGlyphCache*> items = m_glyphIntHash.value(key);
+ for (QList<QFontEngineGlyphCache*>::iterator it = items.begin(), end = items.end(); it != end; ++it) {
+ QFontEngineGlyphCache *c = *it;
+ if (qtransform_equals_no_translate(c->m_transform, data->m_transform)) {
+ if (c == data)
+ return;
+ items.removeAll(c);
+ delete c;
+ break;
+ }
+ }
+ items.append(data);
+ m_glyphIntHash.insert(key, items);
+ m_glyphCacheQueue.append(data);
+ expireGlyphCache();
+}
+QFontEngineGlyphCache *QFontEngine::glyphCache(void *key, const QTransform &transform) const
+{
+ QList<QFontEngineGlyphCache*> items = m_glyphPointerHash.value(key);
+ for (QList<QFontEngineGlyphCache*>::iterator it = items.begin(), end = items.end(); it != end; ++it) {
+ QFontEngineGlyphCache *c = *it;
+ if (qtransform_equals_no_translate(c->m_transform, transform)) {
+ m_glyphCacheQueue.removeAll(c);
+ m_glyphCacheQueue.append(c);
+ return c;
+ }
+ }
+ return 0;
+}
+QFontEngineGlyphCache *QFontEngine::glyphCache(QFontEngineGlyphCache::Type key, const QTransform &transform) const
+{
+ QList<QFontEngineGlyphCache*> items = m_glyphIntHash.value(key);
+ for (QList<QFontEngineGlyphCache*>::iterator it = items.begin(), end = items.end(); it != end; ++it) {
+ QFontEngineGlyphCache *c = *it;
+ if (qtransform_equals_no_translate(c->m_transform, transform)) {
+ m_glyphCacheQueue.removeAll(c);
+ m_glyphCacheQueue.append(c);
+ return c;
+ }
+ }
+ return 0;
+}
+static inline QFixed kerning(int left, int right, const QFontEngine::KernPair *pairs, int numPairs)
+{
+ uint left_right = (left << 16) + right;
+ left = 0, right = numPairs - 1;
+ while (left <= right) {
+ int middle = left + ( ( right - left ) >> 1 );
+ if(pairs[middle].left_right == left_right)
+ return pairs[middle].adjust;
+ if (pairs[middle].left_right < left_right)
+ left = middle + 1;
+ else
+ right = middle - 1;
+ }
+ return 0;
+}
+void QFontEngine::doKerning(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const
+{
+ int numPairs = kerning_pairs.size();
+ if(!numPairs)
+ return;
+ const KernPair *pairs = kerning_pairs.constData();
+ if(flags & QTextEngine::DesignMetrics) {
+ for(int i = 0; i < glyphs->numGlyphs - 1; ++i)
+ glyphs->advances_x[i] += kerning(glyphs->glyphs[i], glyphs->glyphs[i+1] , pairs, numPairs);
+ } else {
+ for(int i = 0; i < glyphs->numGlyphs - 1; ++i)
+ glyphs->advances_x[i] += qRound(kerning(glyphs->glyphs[i], glyphs->glyphs[i+1] , pairs, numPairs));
+ }
+}
+void QFontEngine::loadKerningPairs(QFixed scalingFactor)
+{
+ kerning_pairs.clear();
+ QByteArray tab = getSfntTable(( (((quint32)('k')) << 24) | (((quint32)('e')) << 16) | (((quint32)('r')) << 8) | ((quint32)('n')) ));
+ if (tab.isEmpty())
+ return;
+ const uchar *table = reinterpret_cast<const uchar *>(tab.constData());
+ unsigned short version = qFromBigEndian<quint16>(table);
+ if (version != 0) {
+ return;
+ }
+ unsigned short numTables = qFromBigEndian<quint16>(table + 2);
+ {
+ int offset = 4;
+ for(int i = 0; i < numTables; ++i) {
+ if (offset + 6 > tab.size()) {
+ goto end;
+ }
+ const uchar *header = table + offset;
+ ushort version = qFromBigEndian<quint16>(header);
+ ushort length = qFromBigEndian<quint16>(header+2);
+ ushort coverage = qFromBigEndian<quint16>(header+4);
+ if(version == 0 && coverage == 0x0001) {
+ if (offset + length > tab.size()) {
+ goto end;
+ }
+ const uchar *data = table + offset + 6;
+ ushort nPairs = qFromBigEndian<quint16>(data);
+ if(nPairs * 6 + 8 > length - 6) {
+ goto end;
+ }
+ int off = 8;
+ for(int i = 0; i < nPairs; ++i) {
+ QFontEngine::KernPair p;
+ p.left_right = (((uint)qFromBigEndian<quint16>(data+off)) << 16) + qFromBigEndian<quint16>(data+off+2);
+ p.adjust = QFixed(((int)(short)qFromBigEndian<quint16>(data+off+4))) / scalingFactor;
+ kerning_pairs.append(p);
+ off += 6;
+ }
+ }
+ offset += length;
+ }
+ }
+end:
+ qSort(kerning_pairs);
+}
+int QFontEngine::glyphCount() const
+{
+ QByteArray maxpTable = getSfntTable(( (((quint32)('m')) << 24) | (((quint32)('a')) << 16) | (((quint32)('x')) << 8) | ((quint32)('p')) ));
+ if (maxpTable.size() < 6)
+ return 0;
+ return qFromBigEndian<quint16>(reinterpret_cast<const uchar *>(maxpTable.constData() + 4));
+}
+const uchar *QFontEngine::getCMap(const uchar *table, uint tableSize, bool *isSymbolFont, int *cmapSize)
+{
+ const uchar *header = table;
+ if (tableSize < 4)
+ return 0;
+ const uchar *endPtr = table + tableSize;
+ if (qFromBigEndian<quint16>(header) != 0)
+ return 0;
+ unsigned short numTables = qFromBigEndian<quint16>(header + 2);
+ const uchar *maps = table + 4;
+ if (maps + 8 * numTables > endPtr)
+ return 0;
+ int tableToUse = -1;
+ int score = 0;
+ for (int n = 0; n < numTables; ++n) {
+ const quint16 platformId = qFromBigEndian<quint16>(maps + 8 * n);
+ const quint16 platformSpecificId = qFromBigEndian<quint16>(maps + 8 * n + 2);
+ switch (platformId) {
+ case 0:
+ if (score < 4 &&
+ (platformSpecificId == 0 ||
+ platformSpecificId == 2 ||
+ platformSpecificId == 3)) {
+ tableToUse = n;
+ score = 4;
+ } else if (score < 3 && platformSpecificId == 1) {
+ tableToUse = n;
+ score = 3;
+ }
+ break;
+ case 1:
+ if (score < 2 && platformSpecificId == 0) {
+ tableToUse = n;
+ score = 2;
+ }
+ break;
+ case 3:
+ switch (platformSpecificId) {
+ case 0:
+ if (score < 1) {
+ tableToUse = n;
+ score = 1;
+ }
+ break;
+ case 1:
+ if (score < 5) {
+ tableToUse = n;
+ score = 5;
+ }
+ break;
+ case 0xa:
+ if (score < 6) {
+ tableToUse = n;
+ score = 6;
+ }
+ break;
+ default:
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ if(tableToUse < 0)
+ return 0;
+ *isSymbolFont = (score == 1);
+ unsigned int unicode_table = qFromBigEndian<quint32>(maps + 8*tableToUse + 4);
+ if (!unicode_table || unicode_table + 8 > tableSize)
+ return 0;
+ header = table + unicode_table;
+ unsigned short format = qFromBigEndian<quint16>(header);
+ unsigned int length;
+ if(format < 8)
+ length = qFromBigEndian<quint16>(header + 2);
+ else
+ length = qFromBigEndian<quint32>(header + 4);
+ if (table + unicode_table + length > endPtr)
+ return 0;
+ *cmapSize = length;
+ return table + unicode_table;
+}
+quint32 QFontEngine::getTrueTypeGlyphIndex(const uchar *cmap, uint unicode)
+{
+ unsigned short format = qFromBigEndian<quint16>(cmap);
+ if (format == 0) {
+ if (unicode < 256)
+ return (int) *(cmap+6+unicode);
+ } else if (format == 4) {
+ if(unicode >= 0xffff)
+ return 0;
+ quint16 segCountX2 = qFromBigEndian<quint16>(cmap + 6);
+ const unsigned char *ends = cmap + 14;
+ quint16 endIndex = 0;
+ int i = 0;
+ for (; i < segCountX2/2 && (endIndex = qFromBigEndian<quint16>(ends + 2*i)) < unicode; i++) {}
+ const unsigned char *idx = ends + segCountX2 + 2 + 2*i;
+ quint16 startIndex = qFromBigEndian<quint16>(idx);
+ if (startIndex > unicode)
+ return 0;
+ idx += segCountX2;
+ qint16 idDelta = (qint16)qFromBigEndian<quint16>(idx);
+ idx += segCountX2;
+ quint16 idRangeoffset_t = (quint16)qFromBigEndian<quint16>(idx);
+ quint16 glyphIndex;
+ if (idRangeoffset_t) {
+ quint16 id = qFromBigEndian<quint16>(idRangeoffset_t + 2*(unicode - startIndex) + idx);
+ if (id)
+ glyphIndex = (idDelta + id) % 0x10000;
+ else
+ glyphIndex = 0;
+ } else {
+ glyphIndex = (idDelta + unicode) % 0x10000;
+ }
+ return glyphIndex;
+ } else if (format == 6) {
+ quint16 tableSize = qFromBigEndian<quint16>(cmap + 2);
+ quint16 firstCode6 = qFromBigEndian<quint16>(cmap + 6);
+ if (unicode < firstCode6)
+ return 0;
+ quint16 entryCount6 = qFromBigEndian<quint16>(cmap + 8);
+ if (entryCount6 * 2 + 10 > tableSize)
+ return 0;
+ quint16 sentinel6 = firstCode6 + entryCount6;
+ if (unicode >= sentinel6)
+ return 0;
+ quint16 entryIndex6 = unicode - firstCode6;
+ return qFromBigEndian<quint16>(cmap + 10 + (entryIndex6 * 2));
+ } else if (format == 12) {
+ quint32 nGroups = qFromBigEndian<quint32>(cmap + 12);
+ cmap += 16;
+ int left = 0, right = nGroups - 1;
+ while (left <= right) {
+ int middle = left + ( ( right - left ) >> 1 );
+ quint32 startCharCode = qFromBigEndian<quint32>(cmap + 12*middle);
+ if(unicode < startCharCode)
+ right = middle - 1;
+ else {
+ quint32 endCharCode = qFromBigEndian<quint32>(cmap + 12*middle + 4);
+ if(unicode <= endCharCode)
+ return qFromBigEndian<quint32>(cmap + 12*middle + 8) + unicode - startCharCode;
+ left = middle + 1;
+ }
+ }
+ } else {
+ qDebug("cmap table of format %d not implemented", format);
+ }
+ return 0;
+}
+QFontEngineBox::QFontEngineBox(int size)
+ : _size(size)
+{
+ cache_cost = sizeof(QFontEngineBox);
+}
+QFontEngineBox::~QFontEngineBox()
+{
+}
+bool QFontEngineBox::stringToCMap(const QChar *, int len, QGlyphLayout *glyphs, int *nglyphs, QTextEngine::ShaperFlags) const
+{
+ if (*nglyphs < len) {
+ *nglyphs = len;
+ return false;
+ }
+ for (int i = 0; i < len; i++) {
+ glyphs->glyphs[i] = 0;
+ glyphs->advances_x[i] = _size;
+ glyphs->advances_y[i] = 0;
+ }
+ *nglyphs = len;
+ glyphs->numGlyphs = len;
+ return true;
+}
+void QFontEngineBox::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags) const
+{
+ for (int i = 0; i < glyphs->numGlyphs; i++) {
+ glyphs->advances_x[i] = _size;
+ glyphs->advances_y[i] = 0;
+ }
+}
+void QFontEngineBox::addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs, QPainterPath *path, QTextItem::RenderFlags flags)
+{
+ if (!glyphs.numGlyphs)
+ return;
+ QVarLengthArray<QFixedPoint> positions;
+ QVarLengthArray<glyph_t> positioned_glyphs;
+ QTransform matrix;
+ matrix.translate(x, y - _size);
+ getGlyphPositions(glyphs, matrix, flags, positioned_glyphs, positions);
+ QSize s(_size - 3, _size - 3);
+ for (int k = 0; k < positions.size(); k++)
+ path->addRect(QRectF(positions[k].toPointF(), s));
+}
+glyph_metrics_t QFontEngineBox::boundingBox(const QGlyphLayout &glyphs)
+{
+ glyph_metrics_t overall;
+ overall.width = _size*glyphs.numGlyphs;
+ overall.height = _size;
+ overall.xoff = overall.width;
+ return overall;
+}
+void QFontEngineBox::draw(QPaintEngine *p, qreal x, qreal y, const QTextItemInt &ti)
+{
+ if (!ti.glyphs.numGlyphs)
+ return;
+ QSize s(_size - 3, _size - 3);
+ QVarLengthArray<QFixedPoint> positions;
+ QVarLengthArray<glyph_t> glyphs;
+ QTransform matrix;
+ matrix.translate(x, y - _size);
+ ti.fontEngine->getGlyphPositions(ti.glyphs, matrix, ti.flags, glyphs, positions);
+ if (glyphs.size() == 0)
+ return;
+ QPainter *painter = p->painter();
+ painter->save();
+ painter->setBrush(Qt::NoBrush);
+ QPen pen = painter->pen();
+ pen.setWidthF(lineThickness().toReal());
+ painter->setPen(pen);
+ for (int k = 0; k < positions.size(); k++)
+ painter->drawRect(QRectF(positions[k].toPointF(), s));
+ painter->restore();
+}
+glyph_metrics_t QFontEngineBox::boundingBox(glyph_t)
+{
+ return glyph_metrics_t(0, -_size, _size, _size, _size, 0);
+}
+QFixed QFontEngineBox::ascent() const
+{
+ return _size;
+}
+QFixed QFontEngineBox::descent() const
+{
+ return 0;
+}
+QFixed QFontEngineBox::leading() const
+{
+ QFixed l = _size * QFixed::fromReal(qreal(0.15));
+ return l.ceil();
+}
+qreal QFontEngineBox::maxCharWidth() const
+{
+ return _size;
+}
+const char *QFontEngineBox::name() const
+{
+ return "null";
+}
+bool QFontEngineBox::canRender(const QChar *, int)
+{
+ return true;
+}
+QFontEngine::Type QFontEngineBox::type() const
+{
+ return Box;
+}
+QImage QFontEngineBox::alphaMapForGlyph(glyph_t)
+{
+ QImage image(_size, _size, QImage::Format_Indexed8);
+ QVector<QRgb> colors(256);
+ for (int i=0; i<256; ++i)
+ colors[i] = qRgba(0, 0, 0, i);
+ image.setColorTable(colors);
+ image.fill(0);
+ for (int i=2; i <= _size-3; ++i) {
+ image.setPixel(i, 2, 255);
+ image.setPixel(i, _size-3, 255);
+ image.setPixel(2, i, 255);
+ image.setPixel(_size-3, i, 255);
+ }
+ return image;
+}
+static inline uchar highByte(glyph_t glyph)
+{ return glyph >> 24; }
+static inline glyph_t stripped(glyph_t glyph)
+{ return glyph & 0x00ffffff; }
+QFontEngineMulti::QFontEngineMulti(int engineCount)
+{
+ engines.fill(0, engineCount);
+ cache_cost = 0;
+}
+QFontEngineMulti::~QFontEngineMulti()
+{
+ for (int i = 0; i < engines.size(); ++i) {
+ QFontEngine *fontEngine = engines.at(i);
+ if (fontEngine) {
+ fontEngine->ref.deref();
+ if (fontEngine->cache_count == 0 && fontEngine->ref == 0)
+ delete fontEngine;
+ }
+ }
+}
+bool QFontEngineMulti::stringToCMap(const QChar *str, int len,
+ QGlyphLayout *glyphs, int *nglyphs,
+ QTextEngine::ShaperFlags flags) const
+{
+ int ng = *nglyphs;
+ if (!engine(0)->stringToCMap(str, len, glyphs, &ng, flags))
+ return false;
+ int glyph_pos = 0;
+ for (int i = 0; i < len; ++i) {
+ bool surrogate = (str[i].unicode() >= 0xd800 && str[i].unicode() < 0xdc00 && i < len-1
+ && str[i+1].unicode() >= 0xdc00 && str[i+1].unicode() < 0xe000);
+ if (glyphs->glyphs[glyph_pos] == 0) {
+ QGlyphLayoutInstance tmp = glyphs->instance(glyph_pos);
+ for (int x = 1; x < engines.size(); ++x) {
+ QFontEngine *engine = engines.at(x);
+ if (!engine) {
+ const_cast<QFontEngineMulti *>(this)->loadEngine(x);
+ engine = engines.at(x);
+ }
+ qt_noop();
+ if (engine->type() == Box)
+ continue;
+ glyphs->advances_x[glyph_pos] = glyphs->advances_y[glyph_pos] = 0;
+ glyphs->offsets[glyph_pos] = QFixedPoint();
+ int num = 2;
+ QGlyphLayout offs = glyphs->mid(glyph_pos, num);
+ engine->stringToCMap(str + i, surrogate ? 2 : 1, &offs, &num, flags);
+ qt_noop();
+ if (glyphs->glyphs[glyph_pos]) {
+ glyphs->glyphs[glyph_pos] |= (x << 24);
+ break;
+ }
+ }
+ if (!glyphs->glyphs[glyph_pos]) {
+ glyphs->setInstance(glyph_pos, tmp);
+ }
+ }
+ if (surrogate)
+ ++i;
+ ++glyph_pos;
+ }
+ *nglyphs = ng;
+ glyphs->numGlyphs = ng;
+ return true;
+}
+glyph_metrics_t QFontEngineMulti::boundingBox(const QGlyphLayout &glyphs)
+{
+ if (glyphs.numGlyphs <= 0)
+ return glyph_metrics_t();
+ glyph_metrics_t overall;
+ int which = highByte(glyphs.glyphs[0]);
+ int start = 0;
+ int end, i;
+ for (end = 0; end < glyphs.numGlyphs; ++end) {
+ const int e = highByte(glyphs.glyphs[end]);
+ if (e == which)
+ continue;
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = stripped(glyphs.glyphs[i]);
+ const glyph_metrics_t gm = engine(which)->boundingBox(glyphs.mid(start, end - start));
+ overall.x = qMin(overall.x, gm.x);
+ overall.y = qMin(overall.y, gm.y);
+ overall.width = overall.xoff + gm.width;
+ overall.height = qMax(overall.height + overall.y, gm.height + gm.y) -
+ qMin(overall.y, gm.y);
+ overall.xoff += gm.xoff;
+ overall.yoff += gm.yoff;
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = hi | glyphs.glyphs[i];
+ start = end;
+ which = e;
+ }
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = stripped(glyphs.glyphs[i]);
+ const glyph_metrics_t gm = engine(which)->boundingBox(glyphs.mid(start, end - start));
+ overall.x = qMin(overall.x, gm.x);
+ overall.y = qMin(overall.y, gm.y);
+ overall.width = overall.xoff + gm.width;
+ overall.height = qMax(overall.height + overall.y, gm.height + gm.y) -
+ qMin(overall.y, gm.y);
+ overall.xoff += gm.xoff;
+ overall.yoff += gm.yoff;
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = hi | glyphs.glyphs[i];
+ return overall;
+}
+void QFontEngineMulti::addOutlineToPath(qreal x, qreal y, const QGlyphLayout &glyphs,
+ QPainterPath *path, QTextItem::RenderFlags flags)
+{
+ if (glyphs.numGlyphs <= 0)
+ return;
+ int which = highByte(glyphs.glyphs[0]);
+ int start = 0;
+ int end, i;
+ if (flags & QTextItem::RightToLeft) {
+ for (int gl = 0; gl < glyphs.numGlyphs; gl++) {
+ x += glyphs.advances_x[gl].toReal();
+ y += glyphs.advances_y[gl].toReal();
+ }
+ }
+ for (end = 0; end < glyphs.numGlyphs; ++end) {
+ const int e = highByte(glyphs.glyphs[end]);
+ if (e == which)
+ continue;
+ if (flags & QTextItem::RightToLeft) {
+ for (i = start; i < end; ++i) {
+ x -= glyphs.advances_x[i].toReal();
+ y -= glyphs.advances_y[i].toReal();
+ }
+ }
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = stripped(glyphs.glyphs[i]);
+ engine(which)->addOutlineToPath(x, y, glyphs.mid(start, end - start), path, flags);
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = hi | glyphs.glyphs[i];
+ if (!(flags & QTextItem::RightToLeft)) {
+ for (i = start; i < end; ++i) {
+ x += glyphs.advances_x[i].toReal();
+ y += glyphs.advances_y[i].toReal();
+ }
+ }
+ start = end;
+ which = e;
+ }
+ if (flags & QTextItem::RightToLeft) {
+ for (i = start; i < end; ++i) {
+ x -= glyphs.advances_x[i].toReal();
+ y -= glyphs.advances_y[i].toReal();
+ }
+ }
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = stripped(glyphs.glyphs[i]);
+ engine(which)->addOutlineToPath(x, y, glyphs.mid(start, end - start), path, flags);
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs.glyphs[i] = hi | glyphs.glyphs[i];
+}
+void QFontEngineMulti::recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const
+{
+ if (glyphs->numGlyphs <= 0)
+ return;
+ int which = highByte(glyphs->glyphs[0]);
+ int start = 0;
+ int end, i;
+ for (end = 0; end < glyphs->numGlyphs; ++end) {
+ const int e = highByte(glyphs->glyphs[end]);
+ if (e == which)
+ continue;
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = stripped(glyphs->glyphs[i]);
+ QGlyphLayout offs = glyphs->mid(start, end - start);
+ engine(which)->recalcAdvances(&offs, flags);
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = hi | glyphs->glyphs[i];
+ start = end;
+ which = e;
+ }
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = stripped(glyphs->glyphs[i]);
+ QGlyphLayout offs = glyphs->mid(start, end - start);
+ engine(which)->recalcAdvances(&offs, flags);
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = hi | glyphs->glyphs[i];
+}
+void QFontEngineMulti::doKerning(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const
+{
+ if (glyphs->numGlyphs <= 0)
+ return;
+ int which = highByte(glyphs->glyphs[0]);
+ int start = 0;
+ int end, i;
+ for (end = 0; end < glyphs->numGlyphs; ++end) {
+ const int e = highByte(glyphs->glyphs[end]);
+ if (e == which)
+ continue;
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = stripped(glyphs->glyphs[i]);
+ QGlyphLayout offs = glyphs->mid(start, end - start);
+ engine(which)->doKerning(&offs, flags);
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = hi | glyphs->glyphs[i];
+ start = end;
+ which = e;
+ }
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = stripped(glyphs->glyphs[i]);
+ QGlyphLayout offs = glyphs->mid(start, end - start);
+ engine(which)->doKerning(&offs, flags);
+ const int hi = which << 24;
+ for (i = start; i < end; ++i)
+ glyphs->glyphs[i] = hi | glyphs->glyphs[i];
+}
+glyph_metrics_t QFontEngineMulti::boundingBox(glyph_t glyph)
+{
+ const int which = highByte(glyph);
+ qt_noop();
+ return engine(which)->boundingBox(stripped(glyph));
+}
+QFixed QFontEngineMulti::ascent() const
+{ return engine(0)->ascent(); }
+QFixed QFontEngineMulti::descent() const
+{ return engine(0)->descent(); }
+QFixed QFontEngineMulti::leading() const
+{
+ return engine(0)->leading();
+}
+QFixed QFontEngineMulti::xHeight() const
+{
+ return engine(0)->xHeight();
+}
+QFixed QFontEngineMulti::averageCharWidth() const
+{
+ return engine(0)->averageCharWidth();
+}
+QFixed QFontEngineMulti::lineThickness() const
+{
+ return engine(0)->lineThickness();
+}
+QFixed QFontEngineMulti::underlinePosition() const
+{
+ return engine(0)->underlinePosition();
+}
+qreal QFontEngineMulti::maxCharWidth() const
+{
+ return engine(0)->maxCharWidth();
+}
+qreal QFontEngineMulti::minLeftBearing() const
+{
+ return engine(0)->minLeftBearing();
+}
+qreal QFontEngineMulti::minRightBearing() const
+{
+ return engine(0)->minRightBearing();
+}
+bool QFontEngineMulti::canRender(const QChar *string, int len)
+{
+ if (engine(0)->canRender(string, len))
+ return true;
+ QVarLengthGlyphLayoutArray glyphs(len);
+ int nglyphs = len;
+ if (stringToCMap(string, len, &glyphs, &nglyphs, QTextEngine::GlyphIndicesOnly) == false) {
+ glyphs.resize(nglyphs);
+ stringToCMap(string, len, &glyphs, &nglyphs, QTextEngine::GlyphIndicesOnly);
+ }
+ bool allExist = true;
+ for (int i = 0; i < nglyphs; i++) {
+ if (!glyphs.glyphs[i]) {
+ allExist = false;
+ break;
+ }
+ }
+ return allExist;
+}
+QFontEngine *QFontEngineMulti::engine(int at) const
+{
+ qt_noop();
+ return engines.at(at);
+}
+QImage QFontEngineMulti::alphaMapForGlyph(glyph_t)
+{
+ qt_noop();
+ return QImage();
+}
--- /dev/null
+typedef unsigned char uchar;
+typedef unsigned int uint;
+typedef double qreal;
+template < typename Enum > class QFlags {
+ enum NumberFlag {
+ ShowBase = 0x1, ForcePoint = 0x2, ForceSign =
+ 0x4, UppercaseBase = 0x8, UppercaseDigits = 0x10
+ };
+};
+
+class __attribute__ ((visibility("default"))) QPainterPath {
+};
+
+enum {
+ EdgeRight = 0x1, EdgeDown = 0x2, EdgeLeft = 0x4, EdgeUp = 0x8
+};
+void qt_addBitmapToPath(qreal x0, qreal y0, const uchar * image_data, int bpl,
+ int w, int h, QPainterPath * path)
+{
+ uint *grid = new uint[(w + 1) * (h + 1)];
+ for (int y = 0; y <= h; ++y) {
+ for (int x = 0; x <= w; ++x) {
+ bool topLeft =
+ (x == 0) | (y ==
+ 0) ? false : (*(image_data +
+ (y - 1) * bpl +
+ ((x -
+ 1) >> 3)) & (0x80 >>
+ ((x -
+ 1) &
+ 7)));
+ bool bottomLeft =
+ (x == 0) | (y ==
+ h) ? false : (*(image_data + (y) * bpl +
+ ((x -
+ 1) >> 3)) & (0x80 >>
+ ((x -
+ 1) &
+ 7)));
+ if ((!bottomLeft) & topLeft)
+ grid[(y) * (w + 1) + (x)] |= EdgeLeft;
+ }
+ }
+}
--- /dev/null
+void qt_addBitmapToPath(const unsigned char * image_data, int bpl, int w, int h)
+{
+ unsigned int *grid = new unsigned int[(w + 1) * (h + 1)];
+ for (int y = 0; y <= h; ++y) {
+ for (int x = 0; x <= w; ++x) {
+ bool topLeft = (x == 0) | (y == 0) ? false :
+ *(image_data + (y - 1) * bpl + ((x - 1) >> 3)) & (0x80 >> ((x - 1) & 7));
+ bool bottomLeft = (x == 0) | (y == h) ? false :
+ *(image_data + (y - 0) * bpl + ((x - 1) >> 3)) & (0x80 >> ((x - 1) & 7));
+
+ if (!bottomLeft & topLeft)
+ grid[y * (w + 1) + x] |= 4;
+ }
+ }
+}
--- /dev/null
+#!/bin/bash
+#
+# Run like:
+# multidelta -level=# ./reduce-ice $FILE
+# levels: 0 0 1 1 2 2 10 10
+#
+
+FILE=qfontengine.i
+CC=/usr/local/src/blackfin/toolchains/20091020/bfin-linux-uclibc/bin/bfin-linux-uclibc-g++
+CFLAGS="-O2"
+STRING="unable to find a register to spill in class.*CCREGS"
+
+$CC -pipe -c $CFLAGS $FILE 2>&1 | grep "$STRING"
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=memory.i
CC=bfin-uclinux-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=test.ii
CC=bfin-linux-uclibc-g++
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=asterisk.c
CC=/usr/local/src/blackfin/toolchains/current/uclinux/bfin-uclinux-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=foo.i
CC=/usr/local/src/blackfin/toolchains/current/uclinux/bfin-uclinux-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=initramfs.i
CC=/usr/local/src/blackfin/toolchains/20071218/bfin-uclinux/bin/bfin-uclinux-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=file.i
CC=bfin-uclinux-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=test.i
CC=bfin-uclinux-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=regex.i
CC=hppa2.0-unknown-linux-gnu-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=vfprintf.i
CC=hppa2.0-unknown-linux-gnu-gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=des.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
echo "set FILE, CC, CFLAGS, STRING"
exit 1
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=yasm.i
CC=gcc
# Run like:
# multidelta -level=# ./reduce-ice $FILE
# levels: 0 0 1 1 2 2 10 10
-#
+#
FILE=rtld.i
CC=s390x-ibm-linux-gnu-gcc
--- /dev/null
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <dlfcn.h>
+bigloo_main() { dlvsym(RTLD_NEXT, "fopen", "GLIBC_2.2.5"); }
+//FILE *fp = fopen("/dev/null", "r"); }
+main() {
+ void *sym = dlvsym(RTLD_NEXT, "open", "GLIBC_2.2.5");
+ char *argv[] = { "a.out", 0 };
+ bglpth_setup(1, argv, 0);
+ _bigloo_main(1, argv, 0, &bigloo_main);
+}
--- /dev/null
+#include <stdio.h>
+bigloo_main() { FILE *fp = fopen("/dev/null", "r"); }
+main() {
+ char *argv[] = { "a.out", 0 };
+ bglpth_setup(1, argv, 0);
+ _bigloo_main(1, argv, 0, &bigloo_main);
+}
+
--- /dev/null
+# 1 "bigloo.c"
+# 1 "<built-in>"
+# 1 "<command-line>"
+# 1 "bigloo.c"
+# 10 "bigloo.c"
+# 1 "/usr/lib64/bigloo/3.2b/bigloo.h" 1
+# 45 "/usr/lib64/bigloo/3.2b/bigloo.h"
+# 1 "/usr/include/stdio.h" 1 3 4
+# 28 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/features.h" 1 3 4
+# 347 "/usr/include/features.h" 3 4
+# 1 "/usr/include/sys/cdefs.h" 1 3 4
+# 353 "/usr/include/sys/cdefs.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 354 "/usr/include/sys/cdefs.h" 2 3 4
+# 348 "/usr/include/features.h" 2 3 4
+# 371 "/usr/include/features.h" 3 4
+# 1 "/usr/include/gnu/stubs.h" 1 3 4
+
+
+
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 5 "/usr/include/gnu/stubs.h" 2 3 4
+
+
+
+
+# 1 "/usr/include/gnu/stubs-64.h" 1 3 4
+# 10 "/usr/include/gnu/stubs.h" 2 3 4
+# 372 "/usr/include/features.h" 2 3 4
+# 29 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 1 3 4
+# 211 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 3 4
+typedef long unsigned int size_t;
+# 35 "/usr/include/stdio.h" 2 3 4
+
+# 1 "/usr/include/bits/types.h" 1 3 4
+# 28 "/usr/include/bits/types.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 29 "/usr/include/bits/types.h" 2 3 4
+
+
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+
+
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+
+typedef signed long int __int64_t;
+typedef unsigned long int __uint64_t;
+
+
+
+
+
+
+
+typedef long int __quad_t;
+typedef unsigned long int __u_quad_t;
+# 131 "/usr/include/bits/types.h" 3 4
+# 1 "/usr/include/bits/typesizes.h" 1 3 4
+# 132 "/usr/include/bits/types.h" 2 3 4
+
+
+typedef unsigned long int __dev_t;
+typedef unsigned int __uid_t;
+typedef unsigned int __gid_t;
+typedef unsigned long int __ino_t;
+typedef unsigned long int __ino64_t;
+typedef unsigned int __mode_t;
+typedef unsigned long int __nlink_t;
+typedef long int __off_t;
+typedef long int __off64_t;
+typedef int __pid_t;
+typedef struct { int __val[2]; } __fsid_t;
+typedef long int __clock_t;
+typedef unsigned long int __rlim_t;
+typedef unsigned long int __rlim64_t;
+typedef unsigned int __id_t;
+typedef long int __time_t;
+typedef unsigned int __useconds_t;
+typedef long int __suseconds_t;
+
+typedef int __daddr_t;
+typedef long int __swblk_t;
+typedef int __key_t;
+
+
+typedef int __clockid_t;
+
+
+typedef void * __timer_t;
+
+
+typedef long int __blksize_t;
+
+
+
+
+typedef long int __blkcnt_t;
+typedef long int __blkcnt64_t;
+
+
+typedef unsigned long int __fsblkcnt_t;
+typedef unsigned long int __fsblkcnt64_t;
+
+
+typedef unsigned long int __fsfilcnt_t;
+typedef unsigned long int __fsfilcnt64_t;
+
+typedef long int __ssize_t;
+
+
+
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+
+
+typedef long int __intptr_t;
+
+
+typedef unsigned int __socklen_t;
+# 37 "/usr/include/stdio.h" 2 3 4
+# 45 "/usr/include/stdio.h" 3 4
+struct _IO_FILE;
+
+
+
+typedef struct _IO_FILE FILE;
+
+
+
+
+
+# 65 "/usr/include/stdio.h" 3 4
+typedef struct _IO_FILE __FILE;
+# 75 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/libio.h" 1 3 4
+# 32 "/usr/include/libio.h" 3 4
+# 1 "/usr/include/_G_config.h" 1 3 4
+# 15 "/usr/include/_G_config.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 1 3 4
+# 16 "/usr/include/_G_config.h" 2 3 4
+
+
+
+
+# 1 "/usr/include/wchar.h" 1 3 4
+# 83 "/usr/include/wchar.h" 3 4
+typedef struct
+{
+ int __count;
+ union
+ {
+
+ unsigned int __wch;
+
+
+
+ char __wchb[4];
+ } __value;
+} __mbstate_t;
+# 21 "/usr/include/_G_config.h" 2 3 4
+
+typedef struct
+{
+ __off_t __pos;
+ __mbstate_t __state;
+} _G_fpos_t;
+typedef struct
+{
+ __off64_t __pos;
+ __mbstate_t __state;
+} _G_fpos64_t;
+# 53 "/usr/include/_G_config.h" 3 4
+typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
+# 33 "/usr/include/libio.h" 2 3 4
+# 53 "/usr/include/libio.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stdarg.h" 1 3 4
+# 40 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stdarg.h" 3 4
+typedef __builtin_va_list __gnuc_va_list;
+# 54 "/usr/include/libio.h" 2 3 4
+# 170 "/usr/include/libio.h" 3 4
+struct _IO_jump_t; struct _IO_FILE;
+# 180 "/usr/include/libio.h" 3 4
+typedef void _IO_lock_t;
+
+
+
+
+
+struct _IO_marker {
+ struct _IO_marker *_next;
+ struct _IO_FILE *_sbuf;
+
+
+
+ int _pos;
+# 203 "/usr/include/libio.h" 3 4
+};
+
+
+enum __codecvt_result
+{
+ __codecvt_ok,
+ __codecvt_partial,
+ __codecvt_error,
+ __codecvt_noconv
+};
+# 271 "/usr/include/libio.h" 3 4
+struct _IO_FILE {
+ int _flags;
+
+
+
+
+ char* _IO_read_ptr;
+ char* _IO_read_end;
+ char* _IO_read_base;
+ char* _IO_write_base;
+ char* _IO_write_ptr;
+ char* _IO_write_end;
+ char* _IO_buf_base;
+ char* _IO_buf_end;
+
+ char *_IO_save_base;
+ char *_IO_backup_base;
+ char *_IO_save_end;
+
+ struct _IO_marker *_markers;
+
+ struct _IO_FILE *_chain;
+
+ int _fileno;
+
+
+
+ int _flags2;
+
+ __off_t _old_offset;
+
+
+
+ unsigned short _cur_column;
+ signed char _vtable_offset;
+ char _shortbuf[1];
+
+
+
+ _IO_lock_t *_lock;
+# 319 "/usr/include/libio.h" 3 4
+ __off64_t _offset;
+# 328 "/usr/include/libio.h" 3 4
+ void *__pad1;
+ void *__pad2;
+ void *__pad3;
+ void *__pad4;
+ size_t __pad5;
+
+ int _mode;
+
+ char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+
+};
+
+
+typedef struct _IO_FILE _IO_FILE;
+
+
+struct _IO_FILE_plus;
+
+extern struct _IO_FILE_plus _IO_2_1_stdin_;
+extern struct _IO_FILE_plus _IO_2_1_stdout_;
+extern struct _IO_FILE_plus _IO_2_1_stderr_;
+# 364 "/usr/include/libio.h" 3 4
+typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
+
+
+
+
+
+
+
+typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
+ size_t __n);
+
+
+
+
+
+
+
+typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
+
+
+typedef int __io_close_fn (void *__cookie);
+# 416 "/usr/include/libio.h" 3 4
+extern int __underflow (_IO_FILE *);
+extern int __uflow (_IO_FILE *);
+extern int __overflow (_IO_FILE *, int);
+# 458 "/usr/include/libio.h" 3 4
+extern int _IO_getc (_IO_FILE *__fp);
+extern int _IO_putc (int __c, _IO_FILE *__fp);
+extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+
+extern int _IO_peekc_locked (_IO_FILE *__fp);
+
+
+
+
+
+extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+# 488 "/usr/include/libio.h" 3 4
+extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
+ __gnuc_va_list, int *__restrict);
+extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
+ __gnuc_va_list);
+extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
+extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
+
+extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
+extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
+
+extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
+# 76 "/usr/include/stdio.h" 2 3 4
+# 89 "/usr/include/stdio.h" 3 4
+
+
+typedef _G_fpos_t fpos_t;
+
+
+
+
+# 141 "/usr/include/stdio.h" 3 4
+# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
+# 142 "/usr/include/stdio.h" 2 3 4
+
+
+
+extern struct _IO_FILE *stdin;
+extern struct _IO_FILE *stdout;
+extern struct _IO_FILE *stderr;
+
+
+
+
+
+
+
+extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
+
+extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
+
+
+
+
+extern int renameat (int __oldfd, __const char *__old, int __newfd,
+ __const char *__new) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern FILE *tmpfile (void) ;
+# 186 "/usr/include/stdio.h" 3 4
+extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
+# 204 "/usr/include/stdio.h" 3 4
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+
+
+
+
+
+
+
+
+extern int fclose (FILE *__stream);
+
+
+
+
+extern int fflush (FILE *__stream);
+
+# 229 "/usr/include/stdio.h" 3 4
+extern int fflush_unlocked (FILE *__stream);
+# 243 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+extern FILE *fopen (__const char *__restrict __filename,
+ __const char *__restrict __modes) ;
+
+
+
+
+extern FILE *freopen (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) ;
+# 272 "/usr/include/stdio.h" 3 4
+
+# 283 "/usr/include/stdio.h" 3 4
+extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
+# 296 "/usr/include/stdio.h" 3 4
+extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
+ __attribute__ ((__nothrow__)) ;
+
+
+
+
+extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
+
+
+
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+ int __modes, size_t __n) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+ size_t __size) __attribute__ ((__nothrow__));
+
+
+extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int fprintf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...);
+
+
+
+
+extern int printf (__const char *__restrict __format, ...);
+
+extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg);
+
+
+
+
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+
+# 394 "/usr/include/stdio.h" 3 4
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+
+
+
+
+
+
+
+
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) ;
+
+
+
+
+extern int scanf (__const char *__restrict __format, ...) ;
+
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+# 425 "/usr/include/stdio.h" 3 4
+extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf") ;
+
+
+extern int scanf (__const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf") ;
+
+extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__));
+# 445 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+
+
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 2, 0))) ;
+
+
+
+
+
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 1, 0))) ;
+
+
+extern int vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
+# 476 "/usr/include/stdio.h" 3 4
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")
+
+
+
+ __attribute__ ((__format__ (__scanf__, 2, 0))) ;
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")
+
+ __attribute__ ((__format__ (__scanf__, 1, 0))) ;
+extern int vsscanf (__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf")
+
+
+
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
+# 504 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+
+
+
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+
+
+
+
+
+extern int getchar (void);
+
+# 532 "/usr/include/stdio.h" 3 4
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+# 543 "/usr/include/stdio.h" 3 4
+extern int fgetc_unlocked (FILE *__stream);
+
+
+
+
+
+
+
+
+
+
+
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+
+
+
+
+
+extern int putchar (int __c);
+
+# 576 "/usr/include/stdio.h" 3 4
+extern int fputc_unlocked (int __c, FILE *__stream);
+
+
+
+
+
+
+
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+
+
+
+
+
+
+extern int getw (FILE *__stream);
+
+
+extern int putw (int __w, FILE *__stream);
+
+
+
+
+
+
+
+
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+ ;
+
+
+
+
+
+
+extern char *gets (char *__s) ;
+
+# 638 "/usr/include/stdio.h" 3 4
+extern __ssize_t __getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+extern __ssize_t getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+
+
+
+
+
+
+
+extern __ssize_t getline (char **__restrict __lineptr,
+ size_t *__restrict __n,
+ FILE *__restrict __stream) ;
+
+
+
+
+
+
+
+
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+
+
+
+
+
+extern int puts (__const char *__s);
+
+
+
+
+
+
+extern int ungetc (int __c, FILE *__stream);
+
+
+
+
+
+
+extern size_t fread (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+
+
+
+
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __s) ;
+
+# 710 "/usr/include/stdio.h" 3 4
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+
+
+
+
+
+
+
+
+extern int fseek (FILE *__stream, long int __off, int __whence);
+
+
+
+
+extern long int ftell (FILE *__stream) ;
+
+
+
+
+extern void rewind (FILE *__stream);
+
+# 746 "/usr/include/stdio.h" 3 4
+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
+
+
+
+
+extern __off_t ftello (FILE *__stream) ;
+# 765 "/usr/include/stdio.h" 3 4
+
+
+
+
+
+
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
+
+
+
+
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+# 788 "/usr/include/stdio.h" 3 4
+
+# 797 "/usr/include/stdio.h" 3 4
+
+
+extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
+
+extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
+
+extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
+
+
+
+
+extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+
+
+extern void perror (__const char *__s);
+
+
+
+
+
+
+# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
+# 27 "/usr/include/bits/sys_errlist.h" 3 4
+extern int sys_nerr;
+extern __const char *__const sys_errlist[];
+# 827 "/usr/include/stdio.h" 2 3 4
+
+
+
+
+extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
+
+
+
+
+extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+# 846 "/usr/include/stdio.h" 3 4
+extern FILE *popen (__const char *__command, __const char *__modes) ;
+
+
+
+
+
+extern int pclose (FILE *__stream);
+
+
+
+
+
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+# 886 "/usr/include/stdio.h" 3 4
+extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
+
+
+
+extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
+
+
+extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
+# 916 "/usr/include/stdio.h" 3 4
+
+# 46 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+# 1 "/usr/include/setjmp.h" 1 3 4
+# 28 "/usr/include/setjmp.h" 3 4
+
+
+# 1 "/usr/include/bits/setjmp.h" 1 3 4
+# 27 "/usr/include/bits/setjmp.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 28 "/usr/include/bits/setjmp.h" 2 3 4
+
+
+
+
+typedef long int __jmp_buf[8];
+# 31 "/usr/include/setjmp.h" 2 3 4
+# 1 "/usr/include/bits/sigset.h" 1 3 4
+# 24 "/usr/include/bits/sigset.h" 3 4
+typedef int __sig_atomic_t;
+
+
+
+
+typedef struct
+ {
+ unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+ } __sigset_t;
+# 32 "/usr/include/setjmp.h" 2 3 4
+
+
+
+struct __jmp_buf_tag
+ {
+
+
+
+
+ __jmp_buf __jmpbuf;
+ int __mask_was_saved;
+ __sigset_t __saved_mask;
+ };
+
+
+
+
+typedef struct __jmp_buf_tag jmp_buf[1];
+
+
+
+extern int setjmp (jmp_buf __env) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __attribute__ ((__nothrow__));
+
+
+
+
+extern int _setjmp (struct __jmp_buf_tag __env[1]) __attribute__ ((__nothrow__));
+# 78 "/usr/include/setjmp.h" 3 4
+
+
+
+
+extern void longjmp (struct __jmp_buf_tag __env[1], int __val)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+
+extern void _longjmp (struct __jmp_buf_tag __env[1], int __val)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+
+typedef struct __jmp_buf_tag sigjmp_buf[1];
+# 110 "/usr/include/setjmp.h" 3 4
+extern void siglongjmp (sigjmp_buf __env, int __val)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+# 47 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+# 1 "/usr/include/errno.h" 1 3 4
+# 32 "/usr/include/errno.h" 3 4
+
+
+
+
+# 1 "/usr/include/bits/errno.h" 1 3 4
+# 25 "/usr/include/bits/errno.h" 3 4
+# 1 "/usr/include/linux/errno.h" 1 3 4
+
+
+
+# 1 "/usr/include/asm/errno.h" 1 3 4
+# 1 "/usr/include/asm-generic/errno.h" 1 3 4
+
+
+
+# 1 "/usr/include/asm-generic/errno-base.h" 1 3 4
+# 5 "/usr/include/asm-generic/errno.h" 2 3 4
+# 1 "/usr/include/asm/errno.h" 2 3 4
+# 5 "/usr/include/linux/errno.h" 2 3 4
+# 26 "/usr/include/bits/errno.h" 2 3 4
+# 43 "/usr/include/bits/errno.h" 3 4
+extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+# 37 "/usr/include/errno.h" 2 3 4
+# 59 "/usr/include/errno.h" 3 4
+
+# 48 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+# 1 "/usr/include/stdlib.h" 1 3 4
+# 33 "/usr/include/stdlib.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 1 3 4
+# 323 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 3 4
+typedef int wchar_t;
+# 34 "/usr/include/stdlib.h" 2 3 4
+
+
+# 96 "/usr/include/stdlib.h" 3 4
+
+
+typedef struct
+ {
+ int quot;
+ int rem;
+ } div_t;
+
+
+
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } ldiv_t;
+
+
+
+
+
+
+
+__extension__ typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } lldiv_t;
+
+
+# 140 "/usr/include/stdlib.h" 3 4
+extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;
+
+
+
+
+extern double atof (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern int atoi (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern long int atol (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+__extension__ extern long long int atoll (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern double strtod (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern float strtof (__const char *__restrict __nptr,
+ char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern long double strtold (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern long int strtol (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+# 311 "/usr/include/stdlib.h" 3 4
+extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
+
+
+extern long int a64l (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+# 1 "/usr/include/sys/types.h" 1 3 4
+# 29 "/usr/include/sys/types.h" 3 4
+
+
+
+
+
+
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+
+
+
+
+typedef __loff_t loff_t;
+
+
+
+typedef __ino_t ino_t;
+# 62 "/usr/include/sys/types.h" 3 4
+typedef __dev_t dev_t;
+
+
+
+
+typedef __gid_t gid_t;
+
+
+
+
+typedef __mode_t mode_t;
+
+
+
+
+typedef __nlink_t nlink_t;
+
+
+
+
+typedef __uid_t uid_t;
+
+
+
+
+
+typedef __off_t off_t;
+# 100 "/usr/include/sys/types.h" 3 4
+typedef __pid_t pid_t;
+
+
+
+
+typedef __id_t id_t;
+
+
+
+
+typedef __ssize_t ssize_t;
+
+
+
+
+
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+
+
+
+
+
+typedef __key_t key_t;
+# 133 "/usr/include/sys/types.h" 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 74 "/usr/include/time.h" 3 4
+
+
+typedef __time_t time_t;
+
+
+
+# 92 "/usr/include/time.h" 3 4
+typedef __clockid_t clockid_t;
+# 104 "/usr/include/time.h" 3 4
+typedef __timer_t timer_t;
+# 134 "/usr/include/sys/types.h" 2 3 4
+# 147 "/usr/include/sys/types.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 1 3 4
+# 148 "/usr/include/sys/types.h" 2 3 4
+
+
+
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+# 195 "/usr/include/sys/types.h" 3 4
+typedef int int8_t __attribute__ ((__mode__ (__QI__)));
+typedef int int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int int32_t __attribute__ ((__mode__ (__SI__)));
+typedef int int64_t __attribute__ ((__mode__ (__DI__)));
+
+
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+# 217 "/usr/include/sys/types.h" 3 4
+# 1 "/usr/include/endian.h" 1 3 4
+# 37 "/usr/include/endian.h" 3 4
+# 1 "/usr/include/bits/endian.h" 1 3 4
+# 38 "/usr/include/endian.h" 2 3 4
+# 61 "/usr/include/endian.h" 3 4
+# 1 "/usr/include/bits/byteswap.h" 1 3 4
+# 28 "/usr/include/bits/byteswap.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 29 "/usr/include/bits/byteswap.h" 2 3 4
+# 62 "/usr/include/endian.h" 2 3 4
+# 218 "/usr/include/sys/types.h" 2 3 4
+
+
+# 1 "/usr/include/sys/select.h" 1 3 4
+# 31 "/usr/include/sys/select.h" 3 4
+# 1 "/usr/include/bits/select.h" 1 3 4
+# 23 "/usr/include/bits/select.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 24 "/usr/include/bits/select.h" 2 3 4
+# 32 "/usr/include/sys/select.h" 2 3 4
+
+
+# 1 "/usr/include/bits/sigset.h" 1 3 4
+# 35 "/usr/include/sys/select.h" 2 3 4
+
+
+
+typedef __sigset_t sigset_t;
+
+
+
+
+
+# 1 "/usr/include/time.h" 1 3 4
+# 120 "/usr/include/time.h" 3 4
+struct timespec
+ {
+ __time_t tv_sec;
+ long int tv_nsec;
+ };
+# 45 "/usr/include/sys/select.h" 2 3 4
+
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 69 "/usr/include/bits/time.h" 3 4
+struct timeval
+ {
+ __time_t tv_sec;
+ __suseconds_t tv_usec;
+ };
+# 47 "/usr/include/sys/select.h" 2 3 4
+
+
+typedef __suseconds_t suseconds_t;
+
+
+
+
+
+typedef long int __fd_mask;
+# 67 "/usr/include/sys/select.h" 3 4
+typedef struct
+ {
+
+
+
+
+
+
+ __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];
+
+
+ } fd_set;
+
+
+
+
+
+
+typedef __fd_mask fd_mask;
+# 99 "/usr/include/sys/select.h" 3 4
+
+# 109 "/usr/include/sys/select.h" 3 4
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ struct timeval *__restrict __timeout);
+# 121 "/usr/include/sys/select.h" 3 4
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+ const __sigset_t *__restrict __sigmask);
+
+
+
+# 221 "/usr/include/sys/types.h" 2 3 4
+
+
+# 1 "/usr/include/sys/sysmacros.h" 1 3 4
+# 30 "/usr/include/sys/sysmacros.h" 3 4
+__extension__
+extern unsigned int gnu_dev_major (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned int gnu_dev_minor (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned long long int gnu_dev_makedev (unsigned int __major,
+ unsigned int __minor)
+ __attribute__ ((__nothrow__));
+# 224 "/usr/include/sys/types.h" 2 3 4
+# 235 "/usr/include/sys/types.h" 3 4
+typedef __blkcnt_t blkcnt_t;
+
+
+
+typedef __fsblkcnt_t fsblkcnt_t;
+
+
+
+typedef __fsfilcnt_t fsfilcnt_t;
+# 270 "/usr/include/sys/types.h" 3 4
+# 1 "/usr/include/bits/pthreadtypes.h" 1 3 4
+# 23 "/usr/include/bits/pthreadtypes.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 24 "/usr/include/bits/pthreadtypes.h" 2 3 4
+# 50 "/usr/include/bits/pthreadtypes.h" 3 4
+typedef unsigned long int pthread_t;
+
+
+typedef union
+{
+ char __size[56];
+ long int __align;
+} pthread_attr_t;
+
+
+
+typedef struct __pthread_internal_list
+{
+ struct __pthread_internal_list *__prev;
+ struct __pthread_internal_list *__next;
+} __pthread_list_t;
+# 76 "/usr/include/bits/pthreadtypes.h" 3 4
+typedef union
+{
+ struct __pthread_mutex_s
+ {
+ int __lock;
+ unsigned int __count;
+ int __owner;
+
+ unsigned int __nusers;
+
+
+
+ int __kind;
+
+ int __spins;
+ __pthread_list_t __list;
+# 101 "/usr/include/bits/pthreadtypes.h" 3 4
+ } __data;
+ char __size[40];
+ long int __align;
+} pthread_mutex_t;
+
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_mutexattr_t;
+
+
+
+
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __futex;
+ __extension__ unsigned long long int __total_seq;
+ __extension__ unsigned long long int __wakeup_seq;
+ __extension__ unsigned long long int __woken_seq;
+ void *__mutex;
+ unsigned int __nwaiters;
+ unsigned int __broadcast_seq;
+ } __data;
+ char __size[48];
+ __extension__ long long int __align;
+} pthread_cond_t;
+
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_condattr_t;
+
+
+
+typedef unsigned int pthread_key_t;
+
+
+
+typedef int pthread_once_t;
+
+
+
+
+
+typedef union
+{
+
+ struct
+ {
+ int __lock;
+ unsigned int __nr_readers;
+ unsigned int __readers_wakeup;
+ unsigned int __writer_wakeup;
+ unsigned int __nr_readers_queued;
+ unsigned int __nr_writers_queued;
+ int __writer;
+ int __shared;
+ unsigned long int __pad1;
+ unsigned long int __pad2;
+
+
+ unsigned int __flags;
+ } __data;
+# 187 "/usr/include/bits/pthreadtypes.h" 3 4
+ char __size[56];
+ long int __align;
+} pthread_rwlock_t;
+
+typedef union
+{
+ char __size[8];
+ long int __align;
+} pthread_rwlockattr_t;
+
+
+
+
+
+typedef volatile int pthread_spinlock_t;
+
+
+
+
+typedef union
+{
+ char __size[32];
+ long int __align;
+} pthread_barrier_t;
+
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_barrierattr_t;
+# 271 "/usr/include/sys/types.h" 2 3 4
+
+
+
+# 321 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+
+
+extern long int random (void) __attribute__ ((__nothrow__));
+
+
+extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *initstate (unsigned int __seed, char *__statebuf,
+ size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+
+struct random_data
+ {
+ int32_t *fptr;
+ int32_t *rptr;
+ int32_t *state;
+ int rand_type;
+ int rand_deg;
+ int rand_sep;
+ int32_t *end_ptr;
+ };
+
+extern int random_r (struct random_data *__restrict __buf,
+ int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+ size_t __statelen,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+
+extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern int rand (void) __attribute__ ((__nothrow__));
+
+extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
+
+
+
+
+extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern double drand48 (void) __attribute__ ((__nothrow__));
+extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int lrand48 (void) __attribute__ ((__nothrow__));
+extern long int nrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int mrand48 (void) __attribute__ ((__nothrow__));
+extern long int jrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+struct drand48_data
+ {
+ unsigned short int __x[3];
+ unsigned short int __old_x[3];
+ unsigned short int __c;
+ unsigned short int __init;
+ unsigned long long int __a;
+ };
+
+
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+extern int seed48_r (unsigned short int __seed16v[3],
+ struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+extern int lcong48_r (unsigned short int __param[7],
+ struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+
+
+
+extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+
+extern void *calloc (size_t __nmemb, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+
+
+
+
+
+
+
+
+
+
+extern void *realloc (void *__ptr, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+
+extern void free (void *__ptr) __attribute__ ((__nothrow__));
+
+
+
+
+extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
+
+
+
+# 1 "/usr/include/alloca.h" 1 3 4
+# 25 "/usr/include/alloca.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 1 3 4
+# 26 "/usr/include/alloca.h" 2 3 4
+
+
+
+
+
+
+
+extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+# 498 "/usr/include/stdlib.h" 2 3 4
+
+
+
+
+extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+
+
+
+
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 530 "/usr/include/stdlib.h" 3 4
+
+
+
+
+
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+# 553 "/usr/include/stdlib.h" 3 4
+
+
+
+
+
+
+extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+
+
+
+
+
+
+extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+extern char *__secure_getenv (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int clearenv (void) __attribute__ ((__nothrow__));
+# 604 "/usr/include/stdlib.h" 3 4
+extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+# 615 "/usr/include/stdlib.h" 3 4
+extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
+# 635 "/usr/include/stdlib.h" 3 4
+extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+# 661 "/usr/include/stdlib.h" 3 4
+
+
+
+
+
+extern int system (__const char *__command) ;
+
+# 683 "/usr/include/stdlib.h" 3 4
+extern char *realpath (__const char *__restrict __name,
+ char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+# 701 "/usr/include/stdlib.h" 3 4
+
+
+
+extern void *bsearch (__const void *__key, __const void *__base,
+ size_t __nmemb, size_t __size, __compar_fn_t __compar)
+ __attribute__ ((__nonnull__ (1, 2, 5))) ;
+
+
+
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+ __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+# 720 "/usr/include/stdlib.h" 3 4
+extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+
+
+
+__extension__ extern long long int llabs (long long int __x)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+
+
+
+
+
+
+
+extern div_t div (int __numer, int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern ldiv_t ldiv (long int __numer, long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+
+
+
+
+__extension__ extern lldiv_t lldiv (long long int __numer,
+ long long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+
+# 756 "/usr/include/stdlib.h" 3 4
+extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+
+
+
+
+extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+
+
+
+
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+
+
+
+
+extern char *qecvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *qfcvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *qgcvt (long double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+
+
+
+
+extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+
+extern int qecvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qfcvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+
+
+
+
+
+
+
+extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
+
+
+extern int mbtowc (wchar_t *__restrict __pwc,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
+
+
+extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
+
+
+
+extern size_t mbstowcs (wchar_t *__restrict __pwcs,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
+
+extern size_t wcstombs (char *__restrict __s,
+ __const wchar_t *__restrict __pwcs, size_t __n)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+# 861 "/usr/include/stdlib.h" 3 4
+extern int posix_openpt (int __oflag) ;
+# 896 "/usr/include/stdlib.h" 3 4
+extern int getloadavg (double __loadavg[], int __nelem)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 912 "/usr/include/stdlib.h" 3 4
+
+# 49 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+# 1 "/usr/include/math.h" 1 3 4
+# 30 "/usr/include/math.h" 3 4
+
+
+
+
+# 1 "/usr/include/bits/huge_val.h" 1 3 4
+# 35 "/usr/include/math.h" 2 3 4
+
+# 1 "/usr/include/bits/huge_valf.h" 1 3 4
+# 37 "/usr/include/math.h" 2 3 4
+# 1 "/usr/include/bits/huge_vall.h" 1 3 4
+# 38 "/usr/include/math.h" 2 3 4
+
+
+# 1 "/usr/include/bits/inf.h" 1 3 4
+# 41 "/usr/include/math.h" 2 3 4
+
+
+# 1 "/usr/include/bits/nan.h" 1 3 4
+# 44 "/usr/include/math.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/mathdef.h" 1 3 4
+# 26 "/usr/include/bits/mathdef.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 27 "/usr/include/bits/mathdef.h" 2 3 4
+
+
+
+
+typedef float float_t;
+typedef double double_t;
+# 48 "/usr/include/math.h" 2 3 4
+# 71 "/usr/include/math.h" 3 4
+# 1 "/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern double acos (double __x) __attribute__ ((__nothrow__)); extern double __acos (double __x) __attribute__ ((__nothrow__));
+
+extern double asin (double __x) __attribute__ ((__nothrow__)); extern double __asin (double __x) __attribute__ ((__nothrow__));
+
+extern double atan (double __x) __attribute__ ((__nothrow__)); extern double __atan (double __x) __attribute__ ((__nothrow__));
+
+extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__)); extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__));
+
+
+extern double cos (double __x) __attribute__ ((__nothrow__)); extern double __cos (double __x) __attribute__ ((__nothrow__));
+
+extern double sin (double __x) __attribute__ ((__nothrow__)); extern double __sin (double __x) __attribute__ ((__nothrow__));
+
+extern double tan (double __x) __attribute__ ((__nothrow__)); extern double __tan (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern double cosh (double __x) __attribute__ ((__nothrow__)); extern double __cosh (double __x) __attribute__ ((__nothrow__));
+
+extern double sinh (double __x) __attribute__ ((__nothrow__)); extern double __sinh (double __x) __attribute__ ((__nothrow__));
+
+extern double tanh (double __x) __attribute__ ((__nothrow__)); extern double __tanh (double __x) __attribute__ ((__nothrow__));
+
+# 87 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern double acosh (double __x) __attribute__ ((__nothrow__)); extern double __acosh (double __x) __attribute__ ((__nothrow__));
+
+extern double asinh (double __x) __attribute__ ((__nothrow__)); extern double __asinh (double __x) __attribute__ ((__nothrow__));
+
+extern double atanh (double __x) __attribute__ ((__nothrow__)); extern double __atanh (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern double exp (double __x) __attribute__ ((__nothrow__)); extern double __exp (double __x) __attribute__ ((__nothrow__));
+
+
+extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__)); extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__));
+
+
+extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__)); extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__));
+
+
+extern double log (double __x) __attribute__ ((__nothrow__)); extern double __log (double __x) __attribute__ ((__nothrow__));
+
+
+extern double log10 (double __x) __attribute__ ((__nothrow__)); extern double __log10 (double __x) __attribute__ ((__nothrow__));
+
+
+extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__)); extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__));
+
+# 127 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern double expm1 (double __x) __attribute__ ((__nothrow__)); extern double __expm1 (double __x) __attribute__ ((__nothrow__));
+
+
+extern double log1p (double __x) __attribute__ ((__nothrow__)); extern double __log1p (double __x) __attribute__ ((__nothrow__));
+
+
+extern double logb (double __x) __attribute__ ((__nothrow__)); extern double __logb (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double exp2 (double __x) __attribute__ ((__nothrow__)); extern double __exp2 (double __x) __attribute__ ((__nothrow__));
+
+
+extern double log2 (double __x) __attribute__ ((__nothrow__)); extern double __log2 (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern double pow (double __x, double __y) __attribute__ ((__nothrow__)); extern double __pow (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+extern double sqrt (double __x) __attribute__ ((__nothrow__)); extern double __sqrt (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern double hypot (double __x, double __y) __attribute__ ((__nothrow__)); extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double cbrt (double __x) __attribute__ ((__nothrow__)); extern double __cbrt (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern double ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double fmod (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+
+extern int __isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int __finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double drem (double __x, double __y) __attribute__ ((__nothrow__)); extern double __drem (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+extern double significand (double __x) __attribute__ ((__nothrow__)); extern double __significand (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern double copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+
+extern double nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern int isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern double j0 (double) __attribute__ ((__nothrow__)); extern double __j0 (double) __attribute__ ((__nothrow__));
+extern double j1 (double) __attribute__ ((__nothrow__)); extern double __j1 (double) __attribute__ ((__nothrow__));
+extern double jn (int, double) __attribute__ ((__nothrow__)); extern double __jn (int, double) __attribute__ ((__nothrow__));
+extern double y0 (double) __attribute__ ((__nothrow__)); extern double __y0 (double) __attribute__ ((__nothrow__));
+extern double y1 (double) __attribute__ ((__nothrow__)); extern double __y1 (double) __attribute__ ((__nothrow__));
+extern double yn (int, double) __attribute__ ((__nothrow__)); extern double __yn (int, double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double erf (double) __attribute__ ((__nothrow__)); extern double __erf (double) __attribute__ ((__nothrow__));
+extern double erfc (double) __attribute__ ((__nothrow__)); extern double __erfc (double) __attribute__ ((__nothrow__));
+extern double lgamma (double) __attribute__ ((__nothrow__)); extern double __lgamma (double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double tgamma (double) __attribute__ ((__nothrow__)); extern double __tgamma (double) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern double gamma (double) __attribute__ ((__nothrow__)); extern double __gamma (double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern double lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__)); extern double __lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern double rint (double __x) __attribute__ ((__nothrow__)); extern double __rint (double __x) __attribute__ ((__nothrow__));
+
+
+extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+extern double nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern double remainder (double __x, double __y) __attribute__ ((__nothrow__)); extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__)); extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__));
+
+
+
+extern int ilogb (double __x) __attribute__ ((__nothrow__)); extern int __ilogb (double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern double scalbln (double __x, long int __n) __attribute__ ((__nothrow__)); extern double __scalbln (double __x, long int __n) __attribute__ ((__nothrow__));
+
+
+
+extern double nearbyint (double __x) __attribute__ ((__nothrow__)); extern double __nearbyint (double __x) __attribute__ ((__nothrow__));
+
+
+
+extern double round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern double trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern double remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__)); extern double __remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long int lrint (double __x) __attribute__ ((__nothrow__)); extern long int __lrint (double __x) __attribute__ ((__nothrow__));
+extern long long int llrint (double __x) __attribute__ ((__nothrow__)); extern long long int __llrint (double __x) __attribute__ ((__nothrow__));
+
+
+
+extern long int lround (double __x) __attribute__ ((__nothrow__)); extern long int __lround (double __x) __attribute__ ((__nothrow__));
+extern long long int llround (double __x) __attribute__ ((__nothrow__)); extern long long int __llround (double __x) __attribute__ ((__nothrow__));
+
+
+
+extern double fdim (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fdim (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+extern double fmax (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmax (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+extern double fmin (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmin (double __x, double __y) __attribute__ ((__nothrow__));
+
+
+
+extern int __fpclassify (double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+extern int __signbit (double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+
+extern double fma (double __x, double __y, double __z) __attribute__ ((__nothrow__)); extern double __fma (double __x, double __y, double __z) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern double scalb (double __x, double __n) __attribute__ ((__nothrow__)); extern double __scalb (double __x, double __n) __attribute__ ((__nothrow__));
+# 72 "/usr/include/math.h" 2 3 4
+# 94 "/usr/include/math.h" 3 4
+# 1 "/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern float acosf (float __x) __attribute__ ((__nothrow__)); extern float __acosf (float __x) __attribute__ ((__nothrow__));
+
+extern float asinf (float __x) __attribute__ ((__nothrow__)); extern float __asinf (float __x) __attribute__ ((__nothrow__));
+
+extern float atanf (float __x) __attribute__ ((__nothrow__)); extern float __atanf (float __x) __attribute__ ((__nothrow__));
+
+extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__)); extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__));
+
+
+extern float cosf (float __x) __attribute__ ((__nothrow__)); extern float __cosf (float __x) __attribute__ ((__nothrow__));
+
+extern float sinf (float __x) __attribute__ ((__nothrow__)); extern float __sinf (float __x) __attribute__ ((__nothrow__));
+
+extern float tanf (float __x) __attribute__ ((__nothrow__)); extern float __tanf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern float coshf (float __x) __attribute__ ((__nothrow__)); extern float __coshf (float __x) __attribute__ ((__nothrow__));
+
+extern float sinhf (float __x) __attribute__ ((__nothrow__)); extern float __sinhf (float __x) __attribute__ ((__nothrow__));
+
+extern float tanhf (float __x) __attribute__ ((__nothrow__)); extern float __tanhf (float __x) __attribute__ ((__nothrow__));
+
+# 87 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern float acoshf (float __x) __attribute__ ((__nothrow__)); extern float __acoshf (float __x) __attribute__ ((__nothrow__));
+
+extern float asinhf (float __x) __attribute__ ((__nothrow__)); extern float __asinhf (float __x) __attribute__ ((__nothrow__));
+
+extern float atanhf (float __x) __attribute__ ((__nothrow__)); extern float __atanhf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern float expf (float __x) __attribute__ ((__nothrow__)); extern float __expf (float __x) __attribute__ ((__nothrow__));
+
+
+extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__)); extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__));
+
+
+extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__)); extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__));
+
+
+extern float logf (float __x) __attribute__ ((__nothrow__)); extern float __logf (float __x) __attribute__ ((__nothrow__));
+
+
+extern float log10f (float __x) __attribute__ ((__nothrow__)); extern float __log10f (float __x) __attribute__ ((__nothrow__));
+
+
+extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__)); extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__));
+
+# 127 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern float expm1f (float __x) __attribute__ ((__nothrow__)); extern float __expm1f (float __x) __attribute__ ((__nothrow__));
+
+
+extern float log1pf (float __x) __attribute__ ((__nothrow__)); extern float __log1pf (float __x) __attribute__ ((__nothrow__));
+
+
+extern float logbf (float __x) __attribute__ ((__nothrow__)); extern float __logbf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float exp2f (float __x) __attribute__ ((__nothrow__)); extern float __exp2f (float __x) __attribute__ ((__nothrow__));
+
+
+extern float log2f (float __x) __attribute__ ((__nothrow__)); extern float __log2f (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern float powf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __powf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+extern float sqrtf (float __x) __attribute__ ((__nothrow__)); extern float __sqrtf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float cbrtf (float __x) __attribute__ ((__nothrow__)); extern float __cbrtf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern float ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+
+extern int __isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int __finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float dremf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __dremf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+extern float significandf (float __x) __attribute__ ((__nothrow__)); extern float __significandf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+
+extern float nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern int isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern float j0f (float) __attribute__ ((__nothrow__)); extern float __j0f (float) __attribute__ ((__nothrow__));
+extern float j1f (float) __attribute__ ((__nothrow__)); extern float __j1f (float) __attribute__ ((__nothrow__));
+extern float jnf (int, float) __attribute__ ((__nothrow__)); extern float __jnf (int, float) __attribute__ ((__nothrow__));
+extern float y0f (float) __attribute__ ((__nothrow__)); extern float __y0f (float) __attribute__ ((__nothrow__));
+extern float y1f (float) __attribute__ ((__nothrow__)); extern float __y1f (float) __attribute__ ((__nothrow__));
+extern float ynf (int, float) __attribute__ ((__nothrow__)); extern float __ynf (int, float) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float erff (float) __attribute__ ((__nothrow__)); extern float __erff (float) __attribute__ ((__nothrow__));
+extern float erfcf (float) __attribute__ ((__nothrow__)); extern float __erfcf (float) __attribute__ ((__nothrow__));
+extern float lgammaf (float) __attribute__ ((__nothrow__)); extern float __lgammaf (float) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float tgammaf (float) __attribute__ ((__nothrow__)); extern float __tgammaf (float) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern float gammaf (float) __attribute__ ((__nothrow__)); extern float __gammaf (float) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern float lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__)); extern float __lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern float rintf (float __x) __attribute__ ((__nothrow__)); extern float __rintf (float __x) __attribute__ ((__nothrow__));
+
+
+extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+extern float nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__)); extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__));
+
+
+
+extern int ilogbf (float __x) __attribute__ ((__nothrow__)); extern int __ilogbf (float __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern float scalblnf (float __x, long int __n) __attribute__ ((__nothrow__)); extern float __scalblnf (float __x, long int __n) __attribute__ ((__nothrow__));
+
+
+
+extern float nearbyintf (float __x) __attribute__ ((__nothrow__)); extern float __nearbyintf (float __x) __attribute__ ((__nothrow__));
+
+
+
+extern float roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern float truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern float remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__)); extern float __remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long int lrintf (float __x) __attribute__ ((__nothrow__)); extern long int __lrintf (float __x) __attribute__ ((__nothrow__));
+extern long long int llrintf (float __x) __attribute__ ((__nothrow__)); extern long long int __llrintf (float __x) __attribute__ ((__nothrow__));
+
+
+
+extern long int lroundf (float __x) __attribute__ ((__nothrow__)); extern long int __lroundf (float __x) __attribute__ ((__nothrow__));
+extern long long int llroundf (float __x) __attribute__ ((__nothrow__)); extern long long int __llroundf (float __x) __attribute__ ((__nothrow__));
+
+
+
+extern float fdimf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fdimf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+extern float fmaxf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmaxf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+extern float fminf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fminf (float __x, float __y) __attribute__ ((__nothrow__));
+
+
+
+extern int __fpclassifyf (float __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+extern int __signbitf (float __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+
+extern float fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__)); extern float __fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern float scalbf (float __x, float __n) __attribute__ ((__nothrow__)); extern float __scalbf (float __x, float __n) __attribute__ ((__nothrow__));
+# 95 "/usr/include/math.h" 2 3 4
+# 141 "/usr/include/math.h" 3 4
+# 1 "/usr/include/bits/mathcalls.h" 1 3 4
+# 53 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern long double acosl (long double __x) __attribute__ ((__nothrow__)); extern long double __acosl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double asinl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double atanl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__)); extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double cosl (long double __x) __attribute__ ((__nothrow__)); extern long double __cosl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double sinl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double tanl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern long double coshl (long double __x) __attribute__ ((__nothrow__)); extern long double __coshl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double sinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinhl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double tanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanhl (long double __x) __attribute__ ((__nothrow__));
+
+# 87 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern long double acoshl (long double __x) __attribute__ ((__nothrow__)); extern long double __acoshl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double asinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinhl (long double __x) __attribute__ ((__nothrow__));
+
+extern long double atanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanhl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern long double expl (long double __x) __attribute__ ((__nothrow__)); extern long double __expl (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__)); extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__));
+
+
+extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__)); extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__));
+
+
+extern long double logl (long double __x) __attribute__ ((__nothrow__)); extern long double __logl (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double log10l (long double __x) __attribute__ ((__nothrow__)); extern long double __log10l (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__)); extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__));
+
+# 127 "/usr/include/bits/mathcalls.h" 3 4
+
+
+extern long double expm1l (long double __x) __attribute__ ((__nothrow__)); extern long double __expm1l (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double log1pl (long double __x) __attribute__ ((__nothrow__)); extern long double __log1pl (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double logbl (long double __x) __attribute__ ((__nothrow__)); extern long double __logbl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double exp2l (long double __x) __attribute__ ((__nothrow__)); extern long double __exp2l (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double log2l (long double __x) __attribute__ ((__nothrow__)); extern long double __log2l (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+extern long double sqrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double cbrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern long double ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+
+extern int __isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int __finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern int finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double dreml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __dreml (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+extern long double significandl (long double __x) __attribute__ ((__nothrow__)); extern long double __significandl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+
+extern long double nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+
+extern int __isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern int isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern long double j0l (long double) __attribute__ ((__nothrow__)); extern long double __j0l (long double) __attribute__ ((__nothrow__));
+extern long double j1l (long double) __attribute__ ((__nothrow__)); extern long double __j1l (long double) __attribute__ ((__nothrow__));
+extern long double jnl (int, long double) __attribute__ ((__nothrow__)); extern long double __jnl (int, long double) __attribute__ ((__nothrow__));
+extern long double y0l (long double) __attribute__ ((__nothrow__)); extern long double __y0l (long double) __attribute__ ((__nothrow__));
+extern long double y1l (long double) __attribute__ ((__nothrow__)); extern long double __y1l (long double) __attribute__ ((__nothrow__));
+extern long double ynl (int, long double) __attribute__ ((__nothrow__)); extern long double __ynl (int, long double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double erfl (long double) __attribute__ ((__nothrow__)); extern long double __erfl (long double) __attribute__ ((__nothrow__));
+extern long double erfcl (long double) __attribute__ ((__nothrow__)); extern long double __erfcl (long double) __attribute__ ((__nothrow__));
+extern long double lgammal (long double) __attribute__ ((__nothrow__)); extern long double __lgammal (long double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double tgammal (long double) __attribute__ ((__nothrow__)); extern long double __tgammal (long double) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern long double gammal (long double) __attribute__ ((__nothrow__)); extern long double __gammal (long double) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long double lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__)); extern long double __lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern long double rintl (long double __x) __attribute__ ((__nothrow__)); extern long double __rintl (long double __x) __attribute__ ((__nothrow__));
+
+
+extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+extern long double nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__)); extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__));
+
+
+
+extern int ilogbl (long double __x) __attribute__ ((__nothrow__)); extern int __ilogbl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+
+extern long double scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__)); extern long double __scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__));
+
+
+
+extern long double nearbyintl (long double __x) __attribute__ ((__nothrow__)); extern long double __nearbyintl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+extern long double roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+extern long double truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern long double remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__)); extern long double __remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern long int lrintl (long double __x) __attribute__ ((__nothrow__)); extern long int __lrintl (long double __x) __attribute__ ((__nothrow__));
+extern long long int llrintl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llrintl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+extern long int lroundl (long double __x) __attribute__ ((__nothrow__)); extern long int __lroundl (long double __x) __attribute__ ((__nothrow__));
+extern long long int llroundl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llroundl (long double __x) __attribute__ ((__nothrow__));
+
+
+
+extern long double fdiml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fdiml (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+extern long double fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+extern long double fminl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fminl (long double __x, long double __y) __attribute__ ((__nothrow__));
+
+
+
+extern int __fpclassifyl (long double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+extern int __signbitl (long double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+
+
+
+extern long double fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__)); extern long double __fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern long double scalbl (long double __x, long double __n) __attribute__ ((__nothrow__)); extern long double __scalbl (long double __x, long double __n) __attribute__ ((__nothrow__));
+# 142 "/usr/include/math.h" 2 3 4
+# 157 "/usr/include/math.h" 3 4
+extern int signgam;
+# 198 "/usr/include/math.h" 3 4
+enum
+ {
+ FP_NAN,
+
+ FP_INFINITE,
+
+ FP_ZERO,
+
+ FP_SUBNORMAL,
+
+ FP_NORMAL
+
+ };
+# 284 "/usr/include/math.h" 3 4
+typedef enum
+{
+ _IEEE_ = -1,
+ _SVID_,
+ _XOPEN_,
+ _POSIX_,
+ _ISOC_
+} _LIB_VERSION_TYPE;
+
+
+
+
+extern _LIB_VERSION_TYPE _LIB_VERSION;
+# 309 "/usr/include/math.h" 3 4
+struct exception
+
+ {
+ int type;
+ char *name;
+ double arg1;
+ double arg2;
+ double retval;
+ };
+
+
+
+
+extern int matherr (struct exception *__exc);
+# 465 "/usr/include/math.h" 3 4
+
+# 50 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+# 1 "/usr/include/ctype.h" 1 3 4
+# 30 "/usr/include/ctype.h" 3 4
+
+# 48 "/usr/include/ctype.h" 3 4
+enum
+{
+ _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
+ _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
+ _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
+ _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
+ _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
+ _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
+ _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
+ _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
+ _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
+ _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
+ _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
+ _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
+};
+# 81 "/usr/include/ctype.h" 3 4
+extern __const unsigned short int **__ctype_b_loc (void)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const));
+extern __const __int32_t **__ctype_tolower_loc (void)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const));
+extern __const __int32_t **__ctype_toupper_loc (void)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const));
+# 96 "/usr/include/ctype.h" 3 4
+
+
+
+
+
+
+extern int isalnum (int) __attribute__ ((__nothrow__));
+extern int isalpha (int) __attribute__ ((__nothrow__));
+extern int iscntrl (int) __attribute__ ((__nothrow__));
+extern int isdigit (int) __attribute__ ((__nothrow__));
+extern int islower (int) __attribute__ ((__nothrow__));
+extern int isgraph (int) __attribute__ ((__nothrow__));
+extern int isprint (int) __attribute__ ((__nothrow__));
+extern int ispunct (int) __attribute__ ((__nothrow__));
+extern int isspace (int) __attribute__ ((__nothrow__));
+extern int isupper (int) __attribute__ ((__nothrow__));
+extern int isxdigit (int) __attribute__ ((__nothrow__));
+
+
+
+extern int tolower (int __c) __attribute__ ((__nothrow__));
+
+
+extern int toupper (int __c) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+
+extern int isblank (int) __attribute__ ((__nothrow__));
+
+
+# 142 "/usr/include/ctype.h" 3 4
+extern int isascii (int __c) __attribute__ ((__nothrow__));
+
+
+
+extern int toascii (int __c) __attribute__ ((__nothrow__));
+
+
+
+extern int _toupper (int) __attribute__ ((__nothrow__));
+extern int _tolower (int) __attribute__ ((__nothrow__));
+# 233 "/usr/include/ctype.h" 3 4
+# 1 "/usr/include/xlocale.h" 1 3 4
+# 28 "/usr/include/xlocale.h" 3 4
+typedef struct __locale_struct
+{
+
+ struct locale_data *__locales[13];
+
+
+ const unsigned short int *__ctype_b;
+ const int *__ctype_tolower;
+ const int *__ctype_toupper;
+
+
+ const char *__names[13];
+} *__locale_t;
+
+
+typedef __locale_t locale_t;
+# 234 "/usr/include/ctype.h" 2 3 4
+# 247 "/usr/include/ctype.h" 3 4
+extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
+
+extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__));
+
+
+
+extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+
+
+extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+# 323 "/usr/include/ctype.h" 3 4
+
+# 51 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+
+# 1 "/usr/include/unistd.h" 1 3 4
+# 28 "/usr/include/unistd.h" 3 4
+
+# 175 "/usr/include/unistd.h" 3 4
+# 1 "/usr/include/bits/posix_opt.h" 1 3 4
+# 176 "/usr/include/unistd.h" 2 3 4
+# 199 "/usr/include/unistd.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 1 3 4
+# 200 "/usr/include/unistd.h" 2 3 4
+# 228 "/usr/include/unistd.h" 3 4
+typedef __useconds_t useconds_t;
+# 240 "/usr/include/unistd.h" 3 4
+typedef __intptr_t intptr_t;
+
+
+
+
+
+
+typedef __socklen_t socklen_t;
+# 260 "/usr/include/unistd.h" 3 4
+extern int access (__const char *__name, int __type) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 277 "/usr/include/unistd.h" 3 4
+extern int faccessat (int __fd, __const char *__file, int __type, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ;
+# 303 "/usr/include/unistd.h" 3 4
+extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__));
+# 322 "/usr/include/unistd.h" 3 4
+extern int close (int __fd);
+
+
+
+
+
+
+extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;
+
+
+
+
+
+extern ssize_t write (int __fd, __const void *__buf, size_t __n) ;
+# 386 "/usr/include/unistd.h" 3 4
+extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__)) ;
+# 401 "/usr/include/unistd.h" 3 4
+extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__));
+# 413 "/usr/include/unistd.h" 3 4
+extern unsigned int sleep (unsigned int __seconds);
+
+
+
+
+
+
+extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int usleep (__useconds_t __useconds);
+# 437 "/usr/include/unistd.h" 3 4
+extern int pause (void);
+
+
+
+extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__)) ;
+
+
+
+
+extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+
+extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
+ __gid_t __group, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ;
+
+
+
+extern int chdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+extern int fchdir (int __fd) __attribute__ ((__nothrow__)) ;
+# 479 "/usr/include/unistd.h" 3 4
+extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__)) ;
+# 492 "/usr/include/unistd.h" 3 4
+extern char *getwd (char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) ;
+
+
+
+
+extern int dup (int __fd) __attribute__ ((__nothrow__)) ;
+
+
+extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__));
+# 510 "/usr/include/unistd.h" 3 4
+extern char **__environ;
+
+
+
+
+
+
+
+extern int execve (__const char *__path, char *__const __argv[],
+ char *__const __envp[]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
+ __attribute__ ((__nothrow__));
+
+
+
+
+extern int execv (__const char *__path, char *__const __argv[])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int execle (__const char *__path, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int execl (__const char *__path, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int execvp (__const char *__file, char *__const __argv[])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int execlp (__const char *__file, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int nice (int __inc) __attribute__ ((__nothrow__)) ;
+
+
+
+
+extern void _exit (int __status) __attribute__ ((__noreturn__));
+
+
+
+
+
+# 1 "/usr/include/bits/confname.h" 1 3 4
+# 26 "/usr/include/bits/confname.h" 3 4
+enum
+ {
+ _PC_LINK_MAX,
+
+ _PC_MAX_CANON,
+
+ _PC_MAX_INPUT,
+
+ _PC_NAME_MAX,
+
+ _PC_PATH_MAX,
+
+ _PC_PIPE_BUF,
+
+ _PC_CHOWN_RESTRICTED,
+
+ _PC_NO_TRUNC,
+
+ _PC_VDISABLE,
+
+ _PC_SYNC_IO,
+
+ _PC_ASYNC_IO,
+
+ _PC_PRIO_IO,
+
+ _PC_SOCK_MAXBUF,
+
+ _PC_FILESIZEBITS,
+
+ _PC_REC_INCR_XFER_SIZE,
+
+ _PC_REC_MAX_XFER_SIZE,
+
+ _PC_REC_MIN_XFER_SIZE,
+
+ _PC_REC_XFER_ALIGN,
+
+ _PC_ALLOC_SIZE_MIN,
+
+ _PC_SYMLINK_MAX,
+
+ _PC_2_SYMLINKS
+
+ };
+
+
+enum
+ {
+ _SC_ARG_MAX,
+
+ _SC_CHILD_MAX,
+
+ _SC_CLK_TCK,
+
+ _SC_NGROUPS_MAX,
+
+ _SC_OPEN_MAX,
+
+ _SC_STREAM_MAX,
+
+ _SC_TZNAME_MAX,
+
+ _SC_JOB_CONTROL,
+
+ _SC_SAVED_IDS,
+
+ _SC_REALTIME_SIGNALS,
+
+ _SC_PRIORITY_SCHEDULING,
+
+ _SC_TIMERS,
+
+ _SC_ASYNCHRONOUS_IO,
+
+ _SC_PRIORITIZED_IO,
+
+ _SC_SYNCHRONIZED_IO,
+
+ _SC_FSYNC,
+
+ _SC_MAPPED_FILES,
+
+ _SC_MEMLOCK,
+
+ _SC_MEMLOCK_RANGE,
+
+ _SC_MEMORY_PROTECTION,
+
+ _SC_MESSAGE_PASSING,
+
+ _SC_SEMAPHORES,
+
+ _SC_SHARED_MEMORY_OBJECTS,
+
+ _SC_AIO_LISTIO_MAX,
+
+ _SC_AIO_MAX,
+
+ _SC_AIO_PRIO_DELTA_MAX,
+
+ _SC_DELAYTIMER_MAX,
+
+ _SC_MQ_OPEN_MAX,
+
+ _SC_MQ_PRIO_MAX,
+
+ _SC_VERSION,
+
+ _SC_PAGESIZE,
+
+
+ _SC_RTSIG_MAX,
+
+ _SC_SEM_NSEMS_MAX,
+
+ _SC_SEM_VALUE_MAX,
+
+ _SC_SIGQUEUE_MAX,
+
+ _SC_TIMER_MAX,
+
+
+
+
+ _SC_BC_BASE_MAX,
+
+ _SC_BC_DIM_MAX,
+
+ _SC_BC_SCALE_MAX,
+
+ _SC_BC_STRING_MAX,
+
+ _SC_COLL_WEIGHTS_MAX,
+
+ _SC_EQUIV_CLASS_MAX,
+
+ _SC_EXPR_NEST_MAX,
+
+ _SC_LINE_MAX,
+
+ _SC_RE_DUP_MAX,
+
+ _SC_CHARCLASS_NAME_MAX,
+
+
+ _SC_2_VERSION,
+
+ _SC_2_C_BIND,
+
+ _SC_2_C_DEV,
+
+ _SC_2_FORT_DEV,
+
+ _SC_2_FORT_RUN,
+
+ _SC_2_SW_DEV,
+
+ _SC_2_LOCALEDEF,
+
+
+ _SC_PII,
+
+ _SC_PII_XTI,
+
+ _SC_PII_SOCKET,
+
+ _SC_PII_INTERNET,
+
+ _SC_PII_OSI,
+
+ _SC_POLL,
+
+ _SC_SELECT,
+
+ _SC_UIO_MAXIOV,
+
+ _SC_IOV_MAX = _SC_UIO_MAXIOV,
+
+ _SC_PII_INTERNET_STREAM,
+
+ _SC_PII_INTERNET_DGRAM,
+
+ _SC_PII_OSI_COTS,
+
+ _SC_PII_OSI_CLTS,
+
+ _SC_PII_OSI_M,
+
+ _SC_T_IOV_MAX,
+
+
+
+ _SC_THREADS,
+
+ _SC_THREAD_SAFE_FUNCTIONS,
+
+ _SC_GETGR_R_SIZE_MAX,
+
+ _SC_GETPW_R_SIZE_MAX,
+
+ _SC_LOGIN_NAME_MAX,
+
+ _SC_TTY_NAME_MAX,
+
+ _SC_THREAD_DESTRUCTOR_ITERATIONS,
+
+ _SC_THREAD_KEYS_MAX,
+
+ _SC_THREAD_STACK_MIN,
+
+ _SC_THREAD_THREADS_MAX,
+
+ _SC_THREAD_ATTR_STACKADDR,
+
+ _SC_THREAD_ATTR_STACKSIZE,
+
+ _SC_THREAD_PRIORITY_SCHEDULING,
+
+ _SC_THREAD_PRIO_INHERIT,
+
+ _SC_THREAD_PRIO_PROTECT,
+
+ _SC_THREAD_PROCESS_SHARED,
+
+
+ _SC_NPROCESSORS_CONF,
+
+ _SC_NPROCESSORS_ONLN,
+
+ _SC_PHYS_PAGES,
+
+ _SC_AVPHYS_PAGES,
+
+ _SC_ATEXIT_MAX,
+
+ _SC_PASS_MAX,
+
+
+ _SC_XOPEN_VERSION,
+
+ _SC_XOPEN_XCU_VERSION,
+
+ _SC_XOPEN_UNIX,
+
+ _SC_XOPEN_CRYPT,
+
+ _SC_XOPEN_ENH_I18N,
+
+ _SC_XOPEN_SHM,
+
+
+ _SC_2_CHAR_TERM,
+
+ _SC_2_C_VERSION,
+
+ _SC_2_UPE,
+
+
+ _SC_XOPEN_XPG2,
+
+ _SC_XOPEN_XPG3,
+
+ _SC_XOPEN_XPG4,
+
+
+ _SC_CHAR_BIT,
+
+ _SC_CHAR_MAX,
+
+ _SC_CHAR_MIN,
+
+ _SC_INT_MAX,
+
+ _SC_INT_MIN,
+
+ _SC_LONG_BIT,
+
+ _SC_WORD_BIT,
+
+ _SC_MB_LEN_MAX,
+
+ _SC_NZERO,
+
+ _SC_SSIZE_MAX,
+
+ _SC_SCHAR_MAX,
+
+ _SC_SCHAR_MIN,
+
+ _SC_SHRT_MAX,
+
+ _SC_SHRT_MIN,
+
+ _SC_UCHAR_MAX,
+
+ _SC_UINT_MAX,
+
+ _SC_ULONG_MAX,
+
+ _SC_USHRT_MAX,
+
+
+ _SC_NL_ARGMAX,
+
+ _SC_NL_LANGMAX,
+
+ _SC_NL_MSGMAX,
+
+ _SC_NL_NMAX,
+
+ _SC_NL_SETMAX,
+
+ _SC_NL_TEXTMAX,
+
+
+ _SC_XBS5_ILP32_OFF32,
+
+ _SC_XBS5_ILP32_OFFBIG,
+
+ _SC_XBS5_LP64_OFF64,
+
+ _SC_XBS5_LPBIG_OFFBIG,
+
+
+ _SC_XOPEN_LEGACY,
+
+ _SC_XOPEN_REALTIME,
+
+ _SC_XOPEN_REALTIME_THREADS,
+
+
+ _SC_ADVISORY_INFO,
+
+ _SC_BARRIERS,
+
+ _SC_BASE,
+
+ _SC_C_LANG_SUPPORT,
+
+ _SC_C_LANG_SUPPORT_R,
+
+ _SC_CLOCK_SELECTION,
+
+ _SC_CPUTIME,
+
+ _SC_THREAD_CPUTIME,
+
+ _SC_DEVICE_IO,
+
+ _SC_DEVICE_SPECIFIC,
+
+ _SC_DEVICE_SPECIFIC_R,
+
+ _SC_FD_MGMT,
+
+ _SC_FIFO,
+
+ _SC_PIPE,
+
+ _SC_FILE_ATTRIBUTES,
+
+ _SC_FILE_LOCKING,
+
+ _SC_FILE_SYSTEM,
+
+ _SC_MONOTONIC_CLOCK,
+
+ _SC_MULTI_PROCESS,
+
+ _SC_SINGLE_PROCESS,
+
+ _SC_NETWORKING,
+
+ _SC_READER_WRITER_LOCKS,
+
+ _SC_SPIN_LOCKS,
+
+ _SC_REGEXP,
+
+ _SC_REGEX_VERSION,
+
+ _SC_SHELL,
+
+ _SC_SIGNALS,
+
+ _SC_SPAWN,
+
+ _SC_SPORADIC_SERVER,
+
+ _SC_THREAD_SPORADIC_SERVER,
+
+ _SC_SYSTEM_DATABASE,
+
+ _SC_SYSTEM_DATABASE_R,
+
+ _SC_TIMEOUTS,
+
+ _SC_TYPED_MEMORY_OBJECTS,
+
+ _SC_USER_GROUPS,
+
+ _SC_USER_GROUPS_R,
+
+ _SC_2_PBS,
+
+ _SC_2_PBS_ACCOUNTING,
+
+ _SC_2_PBS_LOCATE,
+
+ _SC_2_PBS_MESSAGE,
+
+ _SC_2_PBS_TRACK,
+
+ _SC_SYMLOOP_MAX,
+
+ _SC_STREAMS,
+
+ _SC_2_PBS_CHECKPOINT,
+
+
+ _SC_V6_ILP32_OFF32,
+
+ _SC_V6_ILP32_OFFBIG,
+
+ _SC_V6_LP64_OFF64,
+
+ _SC_V6_LPBIG_OFFBIG,
+
+
+ _SC_HOST_NAME_MAX,
+
+ _SC_TRACE,
+
+ _SC_TRACE_EVENT_FILTER,
+
+ _SC_TRACE_INHERIT,
+
+ _SC_TRACE_LOG,
+
+
+ _SC_LEVEL1_ICACHE_SIZE,
+
+ _SC_LEVEL1_ICACHE_ASSOC,
+
+ _SC_LEVEL1_ICACHE_LINESIZE,
+
+ _SC_LEVEL1_DCACHE_SIZE,
+
+ _SC_LEVEL1_DCACHE_ASSOC,
+
+ _SC_LEVEL1_DCACHE_LINESIZE,
+
+ _SC_LEVEL2_CACHE_SIZE,
+
+ _SC_LEVEL2_CACHE_ASSOC,
+
+ _SC_LEVEL2_CACHE_LINESIZE,
+
+ _SC_LEVEL3_CACHE_SIZE,
+
+ _SC_LEVEL3_CACHE_ASSOC,
+
+ _SC_LEVEL3_CACHE_LINESIZE,
+
+ _SC_LEVEL4_CACHE_SIZE,
+
+ _SC_LEVEL4_CACHE_ASSOC,
+
+ _SC_LEVEL4_CACHE_LINESIZE,
+
+
+
+ _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
+
+ _SC_RAW_SOCKETS,
+
+
+ _SC_V7_ILP32_OFF32,
+
+ _SC_V7_ILP32_OFFBIG,
+
+ _SC_V7_LP64_OFF64,
+
+ _SC_V7_LPBIG_OFFBIG,
+
+
+ _SC_SS_REPL_MAX,
+
+
+ _SC_TRACE_EVENT_NAME_MAX,
+
+ _SC_TRACE_NAME_MAX,
+
+ _SC_TRACE_SYS_MAX,
+
+ _SC_TRACE_USER_EVENT_MAX,
+
+
+ _SC_XOPEN_STREAMS,
+
+
+ _SC_THREAD_ROBUST_PRIO_INHERIT,
+
+ _SC_THREAD_ROBUST_PRIO_PROTECT,
+
+ };
+
+
+enum
+ {
+ _CS_PATH,
+
+
+ _CS_V6_WIDTH_RESTRICTED_ENVS,
+
+
+
+ _CS_GNU_LIBC_VERSION,
+
+ _CS_GNU_LIBPTHREAD_VERSION,
+
+
+ _CS_V5_WIDTH_RESTRICTED_ENVS,
+
+
+
+ _CS_V7_WIDTH_RESTRICTED_ENVS,
+
+
+
+ _CS_LFS_CFLAGS = 1000,
+
+ _CS_LFS_LDFLAGS,
+
+ _CS_LFS_LIBS,
+
+ _CS_LFS_LINTFLAGS,
+
+ _CS_LFS64_CFLAGS,
+
+ _CS_LFS64_LDFLAGS,
+
+ _CS_LFS64_LIBS,
+
+ _CS_LFS64_LINTFLAGS,
+
+
+ _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
+
+ _CS_XBS5_ILP32_OFF32_LDFLAGS,
+
+ _CS_XBS5_ILP32_OFF32_LIBS,
+
+ _CS_XBS5_ILP32_OFF32_LINTFLAGS,
+
+ _CS_XBS5_ILP32_OFFBIG_CFLAGS,
+
+ _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
+
+ _CS_XBS5_ILP32_OFFBIG_LIBS,
+
+ _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
+
+ _CS_XBS5_LP64_OFF64_CFLAGS,
+
+ _CS_XBS5_LP64_OFF64_LDFLAGS,
+
+ _CS_XBS5_LP64_OFF64_LIBS,
+
+ _CS_XBS5_LP64_OFF64_LINTFLAGS,
+
+ _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
+
+ _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
+
+ _CS_XBS5_LPBIG_OFFBIG_LIBS,
+
+ _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
+
+
+ _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFF32_LIBS,
+
+ _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
+
+ _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
+
+ _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
+
+ _CS_POSIX_V6_LP64_OFF64_CFLAGS,
+
+ _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
+
+ _CS_POSIX_V6_LP64_OFF64_LIBS,
+
+ _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
+
+ _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
+
+ _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
+
+ _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
+
+ _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
+
+
+ _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFF32_LIBS,
+
+ _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
+
+ _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
+
+ _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
+
+ _CS_POSIX_V7_LP64_OFF64_CFLAGS,
+
+ _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
+
+ _CS_POSIX_V7_LP64_OFF64_LIBS,
+
+ _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
+
+ _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
+
+ _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
+
+ _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
+
+ _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
+
+ };
+# 569 "/usr/include/unistd.h" 2 3 4
+
+
+extern long int pathconf (__const char *__path, int __name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__));
+
+
+extern long int sysconf (int __name) __attribute__ ((__nothrow__));
+
+
+
+extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__));
+
+
+
+
+extern __pid_t getpid (void) __attribute__ ((__nothrow__));
+
+
+extern __pid_t getppid (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern __pid_t getpgrp (void) __attribute__ ((__nothrow__));
+# 605 "/usr/include/unistd.h" 3 4
+extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__));
+# 614 "/usr/include/unistd.h" 3 4
+extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__));
+# 631 "/usr/include/unistd.h" 3 4
+extern int setpgrp (void) __attribute__ ((__nothrow__));
+# 648 "/usr/include/unistd.h" 3 4
+extern __pid_t setsid (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern __uid_t getuid (void) __attribute__ ((__nothrow__));
+
+
+extern __uid_t geteuid (void) __attribute__ ((__nothrow__));
+
+
+extern __gid_t getgid (void) __attribute__ ((__nothrow__));
+
+
+extern __gid_t getegid (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__)) ;
+# 681 "/usr/include/unistd.h" 3 4
+extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__));
+
+
+
+
+extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__));
+
+
+
+
+extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__));
+# 737 "/usr/include/unistd.h" 3 4
+extern __pid_t fork (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern __pid_t vfork (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *ttyname (int __fd) __attribute__ ((__nothrow__));
+
+
+
+extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ;
+
+
+
+extern int isatty (int __fd) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int ttyslot (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int link (__const char *__from, __const char *__to)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ;
+
+
+
+
+extern int linkat (int __fromfd, __const char *__from, int __tofd,
+ __const char *__to, int __flags)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))) ;
+
+
+
+
+extern int symlink (__const char *__from, __const char *__to)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ;
+
+
+
+
+extern ssize_t readlink (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ;
+
+
+
+
+extern int symlinkat (__const char *__from, int __tofd,
+ __const char *__to) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
+
+
+extern ssize_t readlinkat (int __fd, __const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))) ;
+
+
+
+extern int unlink (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int unlinkat (int __fd, __const char *__name, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+extern int rmdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__));
+
+
+extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern char *getlogin (void);
+
+
+
+
+
+
+
+extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int setlogin (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 851 "/usr/include/unistd.h" 3 4
+# 1 "/usr/include/getopt.h" 1 3 4
+# 59 "/usr/include/getopt.h" 3 4
+extern char *optarg;
+# 73 "/usr/include/getopt.h" 3 4
+extern int optind;
+
+
+
+
+extern int opterr;
+
+
+
+extern int optopt;
+# 152 "/usr/include/getopt.h" 3 4
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ __attribute__ ((__nothrow__));
+# 852 "/usr/include/unistd.h" 2 3 4
+
+
+
+
+
+
+
+extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int sethostname (__const char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+extern int sethostid (long int __id) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+extern int getdomainname (char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int setdomainname (__const char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+extern int vhangup (void) __attribute__ ((__nothrow__));
+
+
+extern int revoke (__const char *__file) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+
+
+
+
+extern int profil (unsigned short int *__sample_buffer, size_t __size,
+ size_t __offset, unsigned int __scale)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int acct (__const char *__name) __attribute__ ((__nothrow__));
+
+
+
+extern char *getusershell (void) __attribute__ ((__nothrow__));
+extern void endusershell (void) __attribute__ ((__nothrow__));
+extern void setusershell (void) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+
+extern int chroot (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+
+
+
+extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1)));
+# 937 "/usr/include/unistd.h" 3 4
+extern int fsync (int __fd);
+
+
+
+
+
+
+extern long int gethostid (void);
+
+
+extern void sync (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int getpagesize (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+
+
+extern int getdtablesize (void) __attribute__ ((__nothrow__));
+
+
+
+
+extern int truncate (__const char *__file, __off_t __length)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+# 984 "/usr/include/unistd.h" 3 4
+extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__)) ;
+# 1004 "/usr/include/unistd.h" 3 4
+extern int brk (void *__addr) __attribute__ ((__nothrow__)) ;
+
+
+
+
+
+extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__));
+# 1025 "/usr/include/unistd.h" 3 4
+extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__));
+# 1048 "/usr/include/unistd.h" 3 4
+extern int lockf (int __fd, int __cmd, __off_t __len) ;
+# 1079 "/usr/include/unistd.h" 3 4
+extern int fdatasync (int __fildes);
+# 1117 "/usr/include/unistd.h" 3 4
+
+# 53 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+
+# 1 "/usr/include/signal.h" 1 3 4
+# 31 "/usr/include/signal.h" 3 4
+
+
+# 1 "/usr/include/bits/sigset.h" 1 3 4
+# 104 "/usr/include/bits/sigset.h" 3 4
+extern int __sigismember (__const __sigset_t *, int);
+extern int __sigaddset (__sigset_t *, int);
+extern int __sigdelset (__sigset_t *, int);
+# 34 "/usr/include/signal.h" 2 3 4
+
+
+
+
+
+
+
+typedef __sig_atomic_t sig_atomic_t;
+
+# 58 "/usr/include/signal.h" 3 4
+# 1 "/usr/include/bits/signum.h" 1 3 4
+# 59 "/usr/include/signal.h" 2 3 4
+# 76 "/usr/include/signal.h" 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 77 "/usr/include/signal.h" 2 3 4
+
+
+# 1 "/usr/include/bits/siginfo.h" 1 3 4
+# 25 "/usr/include/bits/siginfo.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 26 "/usr/include/bits/siginfo.h" 2 3 4
+
+
+
+
+
+
+
+typedef union sigval
+ {
+ int sival_int;
+ void *sival_ptr;
+ } sigval_t;
+# 51 "/usr/include/bits/siginfo.h" 3 4
+typedef struct siginfo
+ {
+ int si_signo;
+ int si_errno;
+
+ int si_code;
+
+ union
+ {
+ int _pad[((128 / sizeof (int)) - 4)];
+
+
+ struct
+ {
+ __pid_t si_pid;
+ __uid_t si_uid;
+ } _kill;
+
+
+ struct
+ {
+ int si_tid;
+ int si_overrun;
+ sigval_t si_sigval;
+ } _timer;
+
+
+ struct
+ {
+ __pid_t si_pid;
+ __uid_t si_uid;
+ sigval_t si_sigval;
+ } _rt;
+
+
+ struct
+ {
+ __pid_t si_pid;
+ __uid_t si_uid;
+ int si_status;
+ __clock_t si_utime;
+ __clock_t si_stime;
+ } _sigchld;
+
+
+ struct
+ {
+ void *si_addr;
+ } _sigfault;
+
+
+ struct
+ {
+ long int si_band;
+ int si_fd;
+ } _sigpoll;
+ } _sifields;
+ } siginfo_t;
+# 129 "/usr/include/bits/siginfo.h" 3 4
+enum
+{
+ SI_ASYNCNL = -60,
+
+ SI_TKILL = -6,
+
+ SI_SIGIO,
+
+ SI_ASYNCIO,
+
+ SI_MESGQ,
+
+ SI_TIMER,
+
+ SI_QUEUE,
+
+ SI_USER,
+
+ SI_KERNEL = 0x80
+
+};
+
+
+
+enum
+{
+ ILL_ILLOPC = 1,
+
+ ILL_ILLOPN,
+
+ ILL_ILLADR,
+
+ ILL_ILLTRP,
+
+ ILL_PRVOPC,
+
+ ILL_PRVREG,
+
+ ILL_COPROC,
+
+ ILL_BADSTK
+
+};
+
+
+enum
+{
+ FPE_INTDIV = 1,
+
+ FPE_INTOVF,
+
+ FPE_FLTDIV,
+
+ FPE_FLTOVF,
+
+ FPE_FLTUND,
+
+ FPE_FLTRES,
+
+ FPE_FLTINV,
+
+ FPE_FLTSUB
+
+};
+
+
+enum
+{
+ SEGV_MAPERR = 1,
+
+ SEGV_ACCERR
+
+};
+
+
+enum
+{
+ BUS_ADRALN = 1,
+
+ BUS_ADRERR,
+
+ BUS_OBJERR
+
+};
+
+
+enum
+{
+ TRAP_BRKPT = 1,
+
+ TRAP_TRACE
+
+};
+
+
+enum
+{
+ CLD_EXITED = 1,
+
+ CLD_KILLED,
+
+ CLD_DUMPED,
+
+ CLD_TRAPPED,
+
+ CLD_STOPPED,
+
+ CLD_CONTINUED
+
+};
+
+
+enum
+{
+ POLL_IN = 1,
+
+ POLL_OUT,
+
+ POLL_MSG,
+
+ POLL_ERR,
+
+ POLL_PRI,
+
+ POLL_HUP
+
+};
+# 273 "/usr/include/bits/siginfo.h" 3 4
+typedef struct sigevent
+ {
+ sigval_t sigev_value;
+ int sigev_signo;
+ int sigev_notify;
+
+ union
+ {
+ int _pad[((64 / sizeof (int)) - 4)];
+
+
+
+ __pid_t _tid;
+
+ struct
+ {
+ void (*_function) (sigval_t);
+ void *_attribute;
+ } _sigev_thread;
+ } _sigev_un;
+ } sigevent_t;
+
+
+
+
+
+
+enum
+{
+ SIGEV_SIGNAL = 0,
+
+ SIGEV_NONE,
+
+ SIGEV_THREAD,
+
+
+ SIGEV_THREAD_ID = 4
+
+};
+# 80 "/usr/include/signal.h" 2 3 4
+
+
+
+
+typedef void (*__sighandler_t) (int);
+
+
+
+
+extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
+ __attribute__ ((__nothrow__));
+# 99 "/usr/include/signal.h" 3 4
+
+
+extern __sighandler_t signal (int __sig, __sighandler_t __handler)
+ __attribute__ ((__nothrow__));
+# 113 "/usr/include/signal.h" 3 4
+
+# 126 "/usr/include/signal.h" 3 4
+extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__));
+
+
+
+
+extern int raise (int __sig) __attribute__ ((__nothrow__));
+
+
+
+
+extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
+ __attribute__ ((__nothrow__));
+extern int gsignal (int __sig) __attribute__ ((__nothrow__));
+
+
+
+
+extern void psignal (int __sig, __const char *__s);
+
+
+
+
+extern void psiginfo (__const siginfo_t *__pinfo, __const char *__s);
+# 168 "/usr/include/signal.h" 3 4
+extern int __sigpause (int __sig_or_mask, int __is_sig);
+# 196 "/usr/include/signal.h" 3 4
+extern int sigblock (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
+
+
+extern int sigsetmask (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
+
+
+extern int siggetmask (void) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
+# 216 "/usr/include/signal.h" 3 4
+typedef __sighandler_t sig_t;
+
+
+
+
+
+extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigismember (__const sigset_t *__set, int __signo)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+# 252 "/usr/include/signal.h" 3 4
+# 1 "/usr/include/bits/sigaction.h" 1 3 4
+# 25 "/usr/include/bits/sigaction.h" 3 4
+struct sigaction
+ {
+
+
+ union
+ {
+
+ __sighandler_t sa_handler;
+
+ void (*sa_sigaction) (int, siginfo_t *, void *);
+ }
+ __sigaction_handler;
+
+
+
+
+
+
+
+ __sigset_t sa_mask;
+
+
+ int sa_flags;
+
+
+ void (*sa_restorer) (void);
+ };
+# 253 "/usr/include/signal.h" 2 3 4
+
+
+extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
+ sigset_t *__restrict __oset) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int sigsuspend (__const sigset_t *__set) __attribute__ ((__nonnull__ (1)));
+
+
+extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
+ struct sigaction *__restrict __oact) __attribute__ ((__nothrow__));
+
+
+extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
+ __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+
+
+
+extern int sigwaitinfo (__const sigset_t *__restrict __set,
+ siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+
+extern int sigtimedwait (__const sigset_t *__restrict __set,
+ siginfo_t *__restrict __info,
+ __const struct timespec *__restrict __timeout)
+ __attribute__ ((__nonnull__ (1)));
+
+
+
+extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
+ __attribute__ ((__nothrow__));
+# 310 "/usr/include/signal.h" 3 4
+extern __const char *__const _sys_siglist[65];
+extern __const char *__const sys_siglist[65];
+
+
+struct sigvec
+ {
+ __sighandler_t sv_handler;
+ int sv_mask;
+
+ int sv_flags;
+
+ };
+# 334 "/usr/include/signal.h" 3 4
+extern int sigvec (int __sig, __const struct sigvec *__vec,
+ struct sigvec *__ovec) __attribute__ ((__nothrow__));
+
+
+
+# 1 "/usr/include/bits/sigcontext.h" 1 3 4
+# 26 "/usr/include/bits/sigcontext.h" 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 27 "/usr/include/bits/sigcontext.h" 2 3 4
+
+struct _fpreg
+{
+ unsigned short significand[4];
+ unsigned short exponent;
+};
+
+struct _fpxreg
+{
+ unsigned short significand[4];
+ unsigned short exponent;
+ unsigned short padding[3];
+};
+
+struct _xmmreg
+{
+ __uint32_t element[4];
+};
+# 109 "/usr/include/bits/sigcontext.h" 3 4
+struct _fpstate
+{
+
+ __uint16_t cwd;
+ __uint16_t swd;
+ __uint16_t ftw;
+ __uint16_t fop;
+ __uint64_t rip;
+ __uint64_t rdp;
+ __uint32_t mxcsr;
+ __uint32_t mxcr_mask;
+ struct _fpxreg _st[8];
+ struct _xmmreg _xmm[16];
+ __uint32_t padding[24];
+};
+
+struct sigcontext
+{
+ unsigned long r8;
+ unsigned long r9;
+ unsigned long r10;
+ unsigned long r11;
+ unsigned long r12;
+ unsigned long r13;
+ unsigned long r14;
+ unsigned long r15;
+ unsigned long rdi;
+ unsigned long rsi;
+ unsigned long rbp;
+ unsigned long rbx;
+ unsigned long rdx;
+ unsigned long rax;
+ unsigned long rcx;
+ unsigned long rsp;
+ unsigned long rip;
+ unsigned long eflags;
+ unsigned short cs;
+ unsigned short gs;
+ unsigned short fs;
+ unsigned short __pad0;
+ unsigned long err;
+ unsigned long trapno;
+ unsigned long oldmask;
+ unsigned long cr2;
+ struct _fpstate * fpstate;
+ unsigned long __reserved1 [8];
+};
+# 340 "/usr/include/signal.h" 2 3 4
+
+
+extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 1 3 4
+# 350 "/usr/include/signal.h" 2 3 4
+
+
+
+
+extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__));
+
+# 1 "/usr/include/bits/sigstack.h" 1 3 4
+# 26 "/usr/include/bits/sigstack.h" 3 4
+struct sigstack
+ {
+ void *ss_sp;
+ int ss_onstack;
+ };
+
+
+
+enum
+{
+ SS_ONSTACK = 1,
+
+ SS_DISABLE
+
+};
+# 50 "/usr/include/bits/sigstack.h" 3 4
+typedef struct sigaltstack
+ {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
+# 357 "/usr/include/signal.h" 2 3 4
+# 365 "/usr/include/signal.h" 3 4
+extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
+ __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
+
+
+
+extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
+ struct sigaltstack *__restrict __oss) __attribute__ ((__nothrow__));
+# 395 "/usr/include/signal.h" 3 4
+# 1 "/usr/include/bits/sigthread.h" 1 3 4
+# 31 "/usr/include/bits/sigthread.h" 3 4
+extern int pthread_sigmask (int __how,
+ __const __sigset_t *__restrict __newmask,
+ __sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__));
+
+
+extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__));
+# 396 "/usr/include/signal.h" 2 3 4
+
+
+
+
+
+
+extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__));
+
+extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__));
+
+
+
+
+# 55 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include-fixed/limits.h" 1 3 4
+# 11 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include-fixed/limits.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include-fixed/syslimits.h" 1 3 4
+
+
+
+
+
+
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include-fixed/limits.h" 1 3 4
+# 122 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include-fixed/limits.h" 3 4
+# 1 "/usr/include/limits.h" 1 3 4
+# 145 "/usr/include/limits.h" 3 4
+# 1 "/usr/include/bits/posix1_lim.h" 1 3 4
+# 157 "/usr/include/bits/posix1_lim.h" 3 4
+# 1 "/usr/include/bits/local_lim.h" 1 3 4
+# 39 "/usr/include/bits/local_lim.h" 3 4
+# 1 "/usr/include/linux/limits.h" 1 3 4
+# 40 "/usr/include/bits/local_lim.h" 2 3 4
+# 158 "/usr/include/bits/posix1_lim.h" 2 3 4
+# 146 "/usr/include/limits.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/posix2_lim.h" 1 3 4
+# 150 "/usr/include/limits.h" 2 3 4
+# 123 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include-fixed/limits.h" 2 3 4
+# 8 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include-fixed/syslimits.h" 2 3 4
+# 12 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include-fixed/limits.h" 2 3 4
+# 56 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+
+# 1 "/usr/include/sys/stat.h" 1 3 4
+# 39 "/usr/include/sys/stat.h" 3 4
+# 1 "/usr/include/time.h" 1 3 4
+# 40 "/usr/include/sys/stat.h" 2 3 4
+# 105 "/usr/include/sys/stat.h" 3 4
+
+
+# 1 "/usr/include/bits/stat.h" 1 3 4
+# 43 "/usr/include/bits/stat.h" 3 4
+struct stat
+ {
+ __dev_t st_dev;
+
+
+
+
+ __ino_t st_ino;
+
+
+
+
+
+
+
+ __nlink_t st_nlink;
+ __mode_t st_mode;
+
+ __uid_t st_uid;
+ __gid_t st_gid;
+
+ int __pad0;
+
+ __dev_t st_rdev;
+
+
+
+
+ __off_t st_size;
+
+
+
+ __blksize_t st_blksize;
+
+ __blkcnt_t st_blocks;
+# 88 "/usr/include/bits/stat.h" 3 4
+ struct timespec st_atim;
+ struct timespec st_mtim;
+ struct timespec st_ctim;
+# 103 "/usr/include/bits/stat.h" 3 4
+ long int __unused[3];
+# 112 "/usr/include/bits/stat.h" 3 4
+ };
+# 108 "/usr/include/sys/stat.h" 2 3 4
+# 209 "/usr/include/sys/stat.h" 3 4
+extern int stat (__const char *__restrict __file,
+ struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+
+
+
+extern int fstat (int __fd, struct stat *__buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+# 238 "/usr/include/sys/stat.h" 3 4
+extern int fstatat (int __fd, __const char *__restrict __file,
+ struct stat *__restrict __buf, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+# 263 "/usr/include/sys/stat.h" 3 4
+extern int lstat (__const char *__restrict __file,
+ struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+# 284 "/usr/include/sys/stat.h" 3 4
+extern int chmod (__const char *__file, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int lchmod (__const char *__file, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern int fchmodat (int __fd, __const char *__file, __mode_t __mode,
+ int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ;
+
+
+
+
+
+
+extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__));
+# 321 "/usr/include/sys/stat.h" 3 4
+extern int mkdir (__const char *__path, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int mkdirat (int __fd, __const char *__path, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+
+extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int mknodat (int __fd, __const char *__path, __mode_t __mode,
+ __dev_t __dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+extern int mkfifo (__const char *__path, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+
+
+
+
+
+extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+
+extern int utimensat (int __fd, __const char *__path,
+ __const struct timespec __times[2],
+ int __flags)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+
+
+
+
+extern int futimens (int __fd, __const struct timespec __times[2]) __attribute__ ((__nothrow__));
+# 399 "/usr/include/sys/stat.h" 3 4
+extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
+extern int __xstat (int __ver, __const char *__filename,
+ struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern int __lxstat (int __ver, __const char *__filename,
+ struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern int __fxstatat (int __ver, int __fildes, __const char *__filename,
+ struct stat *__stat_buf, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4)));
+# 442 "/usr/include/sys/stat.h" 3 4
+extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
+ __dev_t *__dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+
+extern int __xmknodat (int __ver, int __fd, __const char *__path,
+ __mode_t __mode, __dev_t *__dev)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 5)));
+# 534 "/usr/include/sys/stat.h" 3 4
+
+# 58 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+# 89 "/usr/lib64/bigloo/3.2b/bigloo.h"
+# 1 "/usr/lib64/bigloo/3.2b/bigloo_config.h" 1
+# 90 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+# 108 "/usr/lib64/bigloo/3.2b/bigloo.h"
+# 1 "/usr/include/stdint.h" 1 3 4
+# 27 "/usr/include/stdint.h" 3 4
+# 1 "/usr/include/bits/wchar.h" 1 3 4
+# 28 "/usr/include/stdint.h" 2 3 4
+# 1 "/usr/include/bits/wordsize.h" 1 3 4
+# 29 "/usr/include/stdint.h" 2 3 4
+# 49 "/usr/include/stdint.h" 3 4
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+
+typedef unsigned int uint32_t;
+
+
+
+typedef unsigned long int uint64_t;
+# 66 "/usr/include/stdint.h" 3 4
+typedef signed char int_least8_t;
+typedef short int int_least16_t;
+typedef int int_least32_t;
+
+typedef long int int_least64_t;
+
+
+
+
+
+
+typedef unsigned char uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int uint_least32_t;
+
+typedef unsigned long int uint_least64_t;
+# 91 "/usr/include/stdint.h" 3 4
+typedef signed char int_fast8_t;
+
+typedef long int int_fast16_t;
+typedef long int int_fast32_t;
+typedef long int int_fast64_t;
+# 104 "/usr/include/stdint.h" 3 4
+typedef unsigned char uint_fast8_t;
+
+typedef unsigned long int uint_fast16_t;
+typedef unsigned long int uint_fast32_t;
+typedef unsigned long int uint_fast64_t;
+# 123 "/usr/include/stdint.h" 3 4
+typedef unsigned long int uintptr_t;
+# 135 "/usr/include/stdint.h" 3 4
+typedef long int intmax_t;
+typedef unsigned long int uintmax_t;
+# 109 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+# 124 "/usr/lib64/bigloo/3.2b/bigloo.h"
+# 1 "/usr/include/gmp.h" 1 3 4
+# 53 "/usr/include/gmp.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 1 3 4
+# 54 "/usr/include/gmp.h" 2 3 4
+# 194 "/usr/include/gmp.h" 3 4
+typedef unsigned long int mp_limb_t;
+typedef long int mp_limb_signed_t;
+
+
+
+
+
+
+typedef struct
+{
+ int _mp_alloc;
+
+ int _mp_size;
+
+
+ mp_limb_t *_mp_d;
+} __mpz_struct;
+
+
+
+
+typedef __mpz_struct MP_INT;
+typedef __mpz_struct mpz_t[1];
+
+typedef mp_limb_t * mp_ptr;
+typedef const mp_limb_t * mp_srcptr;
+
+
+
+
+
+
+
+typedef long int mp_size_t;
+typedef long int mp_exp_t;
+
+
+typedef struct
+{
+ __mpz_struct _mp_num;
+ __mpz_struct _mp_den;
+} __mpq_struct;
+
+typedef __mpq_struct MP_RAT;
+typedef __mpq_struct mpq_t[1];
+
+typedef struct
+{
+ int _mp_prec;
+
+
+
+ int _mp_size;
+
+
+ mp_exp_t _mp_exp;
+ mp_limb_t *_mp_d;
+} __mpf_struct;
+
+
+typedef __mpf_struct mpf_t[1];
+
+
+typedef enum
+{
+ GMP_RAND_ALG_DEFAULT = 0,
+ GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT
+} gmp_randalg_t;
+
+
+typedef struct
+{
+ mpz_t _mp_seed;
+ gmp_randalg_t _mp_alg;
+ union {
+ void *_mp_lc;
+ } _mp_algdata;
+} __gmp_randstate_struct;
+typedef __gmp_randstate_struct gmp_randstate_t[1];
+
+
+
+typedef const __mpz_struct *mpz_srcptr;
+typedef __mpz_struct *mpz_ptr;
+typedef const __mpf_struct *mpf_srcptr;
+typedef __mpf_struct *mpf_ptr;
+typedef const __mpq_struct *mpq_srcptr;
+typedef __mpq_struct *mpq_ptr;
+# 542 "/usr/include/gmp.h" 3 4
+ void __gmp_set_memory_functions (void *(*) (size_t), void *(*) (void *, size_t, size_t), void (*) (void *, size_t)) ;
+
+
+
+
+ void __gmp_get_memory_functions (void *(**) (size_t), void *(**) (void *, size_t, size_t), void (**) (void *, size_t)) ;
+
+
+
+
+ extern const int __gmp_bits_per_limb;
+
+
+ extern int __gmp_errno;
+
+
+ extern const char * const __gmp_version;
+
+
+
+
+
+
+ void __gmp_randinit (gmp_randstate_t, gmp_randalg_t, ...);
+
+
+ void __gmp_randinit_default (gmp_randstate_t);
+
+
+ void __gmp_randinit_lc_2exp (gmp_randstate_t, mpz_srcptr, unsigned long int, unsigned long int);
+
+
+
+
+ int __gmp_randinit_lc_2exp_size (gmp_randstate_t, unsigned long);
+
+
+ void __gmp_randinit_mt (gmp_randstate_t);
+
+
+ void __gmp_randinit_set (gmp_randstate_t, const __gmp_randstate_struct *);
+
+
+ void __gmp_randseed (gmp_randstate_t, mpz_srcptr);
+
+
+ void __gmp_randseed_ui (gmp_randstate_t, unsigned long int);
+
+
+ void __gmp_randclear (gmp_randstate_t);
+
+
+ unsigned long __gmp_urandomb_ui (gmp_randstate_t, unsigned long);
+
+
+ unsigned long __gmp_urandomm_ui (gmp_randstate_t, unsigned long);
+
+
+
+
+
+ int __gmp_asprintf (char **, const char *, ...);
+
+
+
+ int __gmp_fprintf (FILE *, const char *, ...);
+# 621 "/usr/include/gmp.h" 3 4
+ int __gmp_printf (const char *, ...);
+
+
+ int __gmp_snprintf (char *, size_t, const char *, ...);
+
+
+ int __gmp_sprintf (char *, const char *, ...);
+# 659 "/usr/include/gmp.h" 3 4
+ int __gmp_fscanf (FILE *, const char *, ...);
+
+
+
+ int __gmp_scanf (const char *, ...);
+
+
+ int __gmp_sscanf (const char *, const char *, ...);
+# 688 "/usr/include/gmp.h" 3 4
+ void *__gmpz_realloc (mpz_ptr, mp_size_t);
+
+
+
+ void __gmpz_abs (mpz_ptr, mpz_srcptr);
+
+
+
+ void __gmpz_add (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_add_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_addmul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_addmul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_and (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_array_init (mpz_ptr, mp_size_t, mp_size_t);
+
+
+ void __gmpz_bin_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_bin_uiui (mpz_ptr, unsigned long int, unsigned long int);
+
+
+ void __gmpz_cdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_cdiv_q_2exp (mpz_ptr, mpz_srcptr, unsigned long);
+
+
+ unsigned long int __gmpz_cdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_cdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ unsigned long int __gmpz_cdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_cdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_cdiv_r_2exp (mpz_ptr, mpz_srcptr, unsigned long);
+
+
+ unsigned long int __gmpz_cdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ unsigned long int __gmpz_cdiv_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+
+
+ void __gmpz_clear (mpz_ptr);
+
+
+ void __gmpz_clrbit (mpz_ptr, unsigned long int);
+
+
+ int __gmpz_cmp (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpz_cmp_d (mpz_srcptr, double) __attribute__ ((__pure__));
+
+
+ int __gmpz_cmp_si (mpz_srcptr, signed long int) __attribute__ ((__pure__));
+
+
+ int __gmpz_cmp_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+
+
+ int __gmpz_cmpabs (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpz_cmpabs_d (mpz_srcptr, double) __attribute__ ((__pure__));
+
+
+ int __gmpz_cmpabs_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+
+
+ void __gmpz_com (mpz_ptr, mpz_srcptr);
+
+
+ void __gmpz_combit (mpz_ptr, unsigned long int);
+
+
+ int __gmpz_congruent_p (mpz_srcptr, mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpz_congruent_2exp_p (mpz_srcptr, mpz_srcptr, unsigned long) __attribute__ ((__pure__));
+
+
+ int __gmpz_congruent_ui_p (mpz_srcptr, unsigned long, unsigned long) __attribute__ ((__pure__));
+
+
+ void __gmpz_divexact (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_divexact_ui (mpz_ptr, mpz_srcptr, unsigned long);
+
+
+ int __gmpz_divisible_p (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpz_divisible_ui_p (mpz_srcptr, unsigned long) __attribute__ ((__pure__));
+
+
+ int __gmpz_divisible_2exp_p (mpz_srcptr, unsigned long) __attribute__ ((__pure__));
+
+
+ void __gmpz_dump (mpz_srcptr);
+
+
+ void *__gmpz_export (void *, size_t *, int, size_t, int, size_t, mpz_srcptr);
+
+
+ void __gmpz_fac_ui (mpz_ptr, unsigned long int);
+
+
+ void __gmpz_fdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_fdiv_q_2exp (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ unsigned long int __gmpz_fdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_fdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ unsigned long int __gmpz_fdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_fdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_fdiv_r_2exp (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ unsigned long int __gmpz_fdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ unsigned long int __gmpz_fdiv_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+
+
+ void __gmpz_fib_ui (mpz_ptr, unsigned long int);
+
+
+ void __gmpz_fib2_ui (mpz_ptr, mpz_ptr, unsigned long int);
+
+
+ int __gmpz_fits_sint_p (mpz_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpz_fits_slong_p (mpz_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpz_fits_sshort_p (mpz_srcptr) __attribute__ ((__pure__));
+
+
+
+ int __gmpz_fits_uint_p (mpz_srcptr) __attribute__ ((__pure__));
+
+
+
+
+ int __gmpz_fits_ulong_p (mpz_srcptr) __attribute__ ((__pure__));
+
+
+
+
+ int __gmpz_fits_ushort_p (mpz_srcptr) __attribute__ ((__pure__));
+
+
+
+ void __gmpz_gcd (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ unsigned long int __gmpz_gcd_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_gcdext (mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ double __gmpz_get_d (mpz_srcptr) __attribute__ ((__pure__));
+
+
+ double __gmpz_get_d_2exp (signed long int *, mpz_srcptr);
+
+
+ long int __gmpz_get_si (mpz_srcptr) __attribute__ ((__pure__));
+
+
+ char *__gmpz_get_str (char *, int, mpz_srcptr);
+
+
+
+ unsigned long int __gmpz_get_ui (mpz_srcptr) __attribute__ ((__pure__));
+
+
+
+
+ mp_limb_t __gmpz_getlimbn (mpz_srcptr, mp_size_t) __attribute__ ((__pure__));
+
+
+
+ unsigned long int __gmpz_hamdist (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__));
+
+
+ void __gmpz_import (mpz_ptr, size_t, int, size_t, int, size_t, const void *);
+
+
+ void __gmpz_init (mpz_ptr);
+
+
+ void __gmpz_init2 (mpz_ptr, unsigned long);
+
+
+ void __gmpz_init_set (mpz_ptr, mpz_srcptr);
+
+
+ void __gmpz_init_set_d (mpz_ptr, double);
+
+
+ void __gmpz_init_set_si (mpz_ptr, signed long int);
+
+
+ int __gmpz_init_set_str (mpz_ptr, const char *, int);
+
+
+ void __gmpz_init_set_ui (mpz_ptr, unsigned long int);
+
+
+
+ size_t __gmpz_inp_raw (mpz_ptr, FILE *);
+
+
+
+
+ size_t __gmpz_inp_str (mpz_ptr, FILE *, int);
+
+
+
+ int __gmpz_invert (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_ior (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ int __gmpz_jacobi (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__));
+
+
+
+
+ int __gmpz_kronecker_si (mpz_srcptr, long) __attribute__ ((__pure__));
+
+
+ int __gmpz_kronecker_ui (mpz_srcptr, unsigned long) __attribute__ ((__pure__));
+
+
+ int __gmpz_si_kronecker (long, mpz_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpz_ui_kronecker (unsigned long, mpz_srcptr) __attribute__ ((__pure__));
+
+
+ void __gmpz_lcm (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_lcm_ui (mpz_ptr, mpz_srcptr, unsigned long);
+
+
+
+
+ void __gmpz_lucnum_ui (mpz_ptr, unsigned long int);
+
+
+ void __gmpz_lucnum2_ui (mpz_ptr, mpz_ptr, unsigned long int);
+
+
+ int __gmpz_millerrabin (mpz_srcptr, int) __attribute__ ((__pure__));
+
+
+ void __gmpz_mod (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+
+
+ void __gmpz_mul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_mul_2exp (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_mul_si (mpz_ptr, mpz_srcptr, long int);
+
+
+ void __gmpz_mul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+
+ void __gmpz_neg (mpz_ptr, mpz_srcptr);
+
+
+
+ void __gmpz_nextprime (mpz_ptr, mpz_srcptr);
+
+
+
+ size_t __gmpz_out_raw (FILE *, mpz_srcptr);
+
+
+
+
+ size_t __gmpz_out_str (FILE *, int, mpz_srcptr);
+
+
+
+ int __gmpz_perfect_power_p (mpz_srcptr) __attribute__ ((__pure__));
+
+
+
+ int __gmpz_perfect_square_p (mpz_srcptr) __attribute__ ((__pure__));
+
+
+
+
+ unsigned long int __gmpz_popcount (mpz_srcptr) __attribute__ ((__pure__));
+
+
+
+ void __gmpz_pow_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_powm (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_powm_ui (mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr);
+
+
+ int __gmpz_probab_prime_p (mpz_srcptr, int) __attribute__ ((__pure__));
+
+
+ void __gmpz_random (mpz_ptr, mp_size_t);
+
+
+ void __gmpz_random2 (mpz_ptr, mp_size_t);
+
+
+ void __gmpz_realloc2 (mpz_ptr, unsigned long);
+
+
+ unsigned long int __gmpz_remove (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ int __gmpz_root (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_rootrem (mpz_ptr,mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_rrandomb (mpz_ptr, gmp_randstate_t, unsigned long int);
+
+
+ unsigned long int __gmpz_scan0 (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+
+
+ unsigned long int __gmpz_scan1 (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+
+
+ void __gmpz_set (mpz_ptr, mpz_srcptr);
+
+
+ void __gmpz_set_d (mpz_ptr, double);
+
+
+ void __gmpz_set_f (mpz_ptr, mpf_srcptr);
+
+
+
+ void __gmpz_set_q (mpz_ptr, mpq_srcptr);
+
+
+
+ void __gmpz_set_si (mpz_ptr, signed long int);
+
+
+ int __gmpz_set_str (mpz_ptr, const char *, int);
+
+
+ void __gmpz_set_ui (mpz_ptr, unsigned long int);
+
+
+ void __gmpz_setbit (mpz_ptr, unsigned long int);
+
+
+
+ size_t __gmpz_size (mpz_srcptr) __attribute__ ((__pure__));
+
+
+
+ size_t __gmpz_sizeinbase (mpz_srcptr, int) __attribute__ ((__pure__));
+
+
+ void __gmpz_sqrt (mpz_ptr, mpz_srcptr);
+
+
+ void __gmpz_sqrtrem (mpz_ptr, mpz_ptr, mpz_srcptr);
+
+
+ void __gmpz_sub (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_sub_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_ui_sub (mpz_ptr, unsigned long int, mpz_srcptr);
+
+
+ void __gmpz_submul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_submul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_swap (mpz_ptr, mpz_ptr) ;
+
+
+ unsigned long int __gmpz_tdiv_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+
+
+ void __gmpz_tdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_tdiv_q_2exp (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ unsigned long int __gmpz_tdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_tdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ unsigned long int __gmpz_tdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ void __gmpz_tdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+ void __gmpz_tdiv_r_2exp (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ unsigned long int __gmpz_tdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+
+
+ int __gmpz_tstbit (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+
+
+ void __gmpz_ui_pow_ui (mpz_ptr, unsigned long int, unsigned long int);
+
+
+ void __gmpz_urandomb (mpz_ptr, gmp_randstate_t, unsigned long int);
+
+
+ void __gmpz_urandomm (mpz_ptr, gmp_randstate_t, mpz_srcptr);
+
+
+
+ void __gmpz_xor (mpz_ptr, mpz_srcptr, mpz_srcptr);
+
+
+
+
+
+
+ void __gmpq_abs (mpq_ptr, mpq_srcptr);
+
+
+
+ void __gmpq_add (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+
+ void __gmpq_canonicalize (mpq_ptr);
+
+
+ void __gmpq_clear (mpq_ptr);
+
+
+ int __gmpq_cmp (mpq_srcptr, mpq_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpq_cmp_si (mpq_srcptr, long, unsigned long) __attribute__ ((__pure__));
+
+
+ int __gmpq_cmp_ui (mpq_srcptr, unsigned long int, unsigned long int) __attribute__ ((__pure__));
+
+
+ void __gmpq_div (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+
+ void __gmpq_div_2exp (mpq_ptr, mpq_srcptr, unsigned long);
+
+
+ int __gmpq_equal (mpq_srcptr, mpq_srcptr) __attribute__ ((__pure__));
+
+
+ void __gmpq_get_num (mpz_ptr, mpq_srcptr);
+
+
+ void __gmpq_get_den (mpz_ptr, mpq_srcptr);
+
+
+ double __gmpq_get_d (mpq_srcptr) __attribute__ ((__pure__));
+
+
+ char *__gmpq_get_str (char *, int, mpq_srcptr);
+
+
+ void __gmpq_init (mpq_ptr);
+
+
+
+ size_t __gmpq_inp_str (mpq_ptr, FILE *, int);
+
+
+
+ void __gmpq_inv (mpq_ptr, mpq_srcptr);
+
+
+ void __gmpq_mul (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+
+ void __gmpq_mul_2exp (mpq_ptr, mpq_srcptr, unsigned long);
+
+
+
+ void __gmpq_neg (mpq_ptr, mpq_srcptr);
+
+
+
+
+ size_t __gmpq_out_str (FILE *, int, mpq_srcptr);
+
+
+
+ void __gmpq_set (mpq_ptr, mpq_srcptr);
+
+
+ void __gmpq_set_d (mpq_ptr, double);
+
+
+ void __gmpq_set_den (mpq_ptr, mpz_srcptr);
+
+
+ void __gmpq_set_f (mpq_ptr, mpf_srcptr);
+
+
+ void __gmpq_set_num (mpq_ptr, mpz_srcptr);
+
+
+ void __gmpq_set_si (mpq_ptr, signed long int, unsigned long int);
+
+
+ int __gmpq_set_str (mpq_ptr, const char *, int);
+
+
+ void __gmpq_set_ui (mpq_ptr, unsigned long int, unsigned long int);
+
+
+ void __gmpq_set_z (mpq_ptr, mpz_srcptr);
+
+
+ void __gmpq_sub (mpq_ptr, mpq_srcptr, mpq_srcptr);
+
+
+ void __gmpq_swap (mpq_ptr, mpq_ptr) ;
+
+
+
+
+
+ void __gmpf_abs (mpf_ptr, mpf_srcptr);
+
+
+ void __gmpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+
+ void __gmpf_add_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+ void __gmpf_ceil (mpf_ptr, mpf_srcptr);
+
+
+ void __gmpf_clear (mpf_ptr);
+
+
+ int __gmpf_cmp (mpf_srcptr, mpf_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpf_cmp_d (mpf_srcptr, double) __attribute__ ((__pure__));
+
+
+ int __gmpf_cmp_si (mpf_srcptr, signed long int) __attribute__ ((__pure__));
+
+
+ int __gmpf_cmp_ui (mpf_srcptr, unsigned long int) __attribute__ ((__pure__));
+
+
+ void __gmpf_div (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+
+ void __gmpf_div_2exp (mpf_ptr, mpf_srcptr, unsigned long int);
+
+
+ void __gmpf_div_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+
+ void __gmpf_dump (mpf_srcptr);
+
+
+ int __gmpf_eq (mpf_srcptr, mpf_srcptr, unsigned long int) __attribute__ ((__pure__));
+
+
+ int __gmpf_fits_sint_p (mpf_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpf_fits_slong_p (mpf_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpf_fits_sshort_p (mpf_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpf_fits_uint_p (mpf_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpf_fits_ulong_p (mpf_srcptr) __attribute__ ((__pure__));
+
+
+ int __gmpf_fits_ushort_p (mpf_srcptr) __attribute__ ((__pure__));
+
+
+ void __gmpf_floor (mpf_ptr, mpf_srcptr);
+
+
+ double __gmpf_get_d (mpf_srcptr) __attribute__ ((__pure__));
+
+
+ double __gmpf_get_d_2exp (signed long int *, mpf_srcptr);
+
+
+ unsigned long int __gmpf_get_default_prec (void) __attribute__ ((__pure__));
+
+
+ unsigned long int __gmpf_get_prec (mpf_srcptr) __attribute__ ((__pure__));
+
+
+ long __gmpf_get_si (mpf_srcptr) __attribute__ ((__pure__));
+
+
+ char *__gmpf_get_str (char *, mp_exp_t *, int, size_t, mpf_srcptr);
+
+
+ unsigned long __gmpf_get_ui (mpf_srcptr) __attribute__ ((__pure__));
+
+
+ void __gmpf_init (mpf_ptr);
+
+
+ void __gmpf_init2 (mpf_ptr, unsigned long int);
+
+
+ void __gmpf_init_set (mpf_ptr, mpf_srcptr);
+
+
+ void __gmpf_init_set_d (mpf_ptr, double);
+
+
+ void __gmpf_init_set_si (mpf_ptr, signed long int);
+
+
+ int __gmpf_init_set_str (mpf_ptr, const char *, int);
+
+
+ void __gmpf_init_set_ui (mpf_ptr, unsigned long int);
+
+
+
+ size_t __gmpf_inp_str (mpf_ptr, FILE *, int);
+
+
+
+ int __gmpf_integer_p (mpf_srcptr) __attribute__ ((__pure__));
+
+
+ void __gmpf_mul (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+
+ void __gmpf_mul_2exp (mpf_ptr, mpf_srcptr, unsigned long int);
+
+
+ void __gmpf_mul_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+
+ void __gmpf_neg (mpf_ptr, mpf_srcptr);
+
+
+
+ size_t __gmpf_out_str (FILE *, int, size_t, mpf_srcptr);
+
+
+
+ void __gmpf_pow_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+
+ void __gmpf_random2 (mpf_ptr, mp_size_t, mp_exp_t);
+
+
+ void __gmpf_reldiff (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+
+ void __gmpf_set (mpf_ptr, mpf_srcptr);
+
+
+ void __gmpf_set_d (mpf_ptr, double);
+
+
+ void __gmpf_set_default_prec (unsigned long int) ;
+
+
+ void __gmpf_set_prec (mpf_ptr, unsigned long int);
+
+
+ void __gmpf_set_prec_raw (mpf_ptr, unsigned long int) ;
+
+
+ void __gmpf_set_q (mpf_ptr, mpq_srcptr);
+
+
+ void __gmpf_set_si (mpf_ptr, signed long int);
+
+
+ int __gmpf_set_str (mpf_ptr, const char *, int);
+
+
+ void __gmpf_set_ui (mpf_ptr, unsigned long int);
+
+
+ void __gmpf_set_z (mpf_ptr, mpz_srcptr);
+
+
+ size_t __gmpf_size (mpf_srcptr) __attribute__ ((__pure__));
+
+
+ void __gmpf_sqrt (mpf_ptr, mpf_srcptr);
+
+
+ void __gmpf_sqrt_ui (mpf_ptr, unsigned long int);
+
+
+ void __gmpf_sub (mpf_ptr, mpf_srcptr, mpf_srcptr);
+
+
+ void __gmpf_sub_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+
+
+ void __gmpf_swap (mpf_ptr, mpf_ptr) ;
+
+
+ void __gmpf_trunc (mpf_ptr, mpf_srcptr);
+
+
+ void __gmpf_ui_div (mpf_ptr, unsigned long int, mpf_srcptr);
+
+
+ void __gmpf_ui_sub (mpf_ptr, unsigned long int, mpf_srcptr);
+
+
+ void __gmpf_urandomb (mpf_t, gmp_randstate_t, unsigned long int);
+# 1480 "/usr/include/gmp.h" 3 4
+ mp_limb_t __gmpn_add (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t);
+
+
+
+
+ mp_limb_t __gmpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) ;
+
+
+
+ mp_limb_t __gmpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+
+ mp_limb_t __gmpn_addmul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+
+ mp_limb_t __gmpn_bdivmod (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, unsigned long int);
+
+
+
+ int __gmpn_cmp (mp_srcptr, mp_srcptr, mp_size_t) __attribute__ ((__pure__));
+
+
+
+
+
+
+ mp_limb_t __gmpn_divexact_by3c (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+
+
+
+
+ mp_limb_t __gmpn_divrem (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t);
+
+
+ mp_limb_t __gmpn_divrem_1 (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t);
+
+
+ mp_limb_t __gmpn_divrem_2 (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr);
+
+
+ mp_size_t __gmpn_gcd (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t);
+
+
+ mp_limb_t __gmpn_gcd_1 (mp_srcptr, mp_size_t, mp_limb_t) __attribute__ ((__pure__));
+
+
+ mp_limb_t __gmpn_gcdext_1 (mp_ptr, mp_ptr, mp_limb_t, mp_limb_t);
+
+
+ mp_size_t __gmpn_gcdext (mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t);
+
+
+ size_t __gmpn_get_str (unsigned char *, int, mp_ptr, mp_size_t);
+
+
+ unsigned long int __gmpn_hamdist (mp_srcptr, mp_srcptr, mp_size_t) __attribute__ ((__pure__));
+
+
+ mp_limb_t __gmpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
+
+
+ mp_limb_t __gmpn_mod_1 (mp_srcptr, mp_size_t, mp_limb_t) __attribute__ ((__pure__));
+
+
+ mp_limb_t __gmpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+
+
+ mp_limb_t __gmpn_mul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+
+ void __gmpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+
+
+ mp_limb_t __gmpn_neg_n (mp_ptr, mp_srcptr, mp_size_t);
+
+
+
+ int __gmpn_perfect_square_p (mp_srcptr, mp_size_t) __attribute__ ((__pure__));
+
+
+ unsigned long int __gmpn_popcount (mp_srcptr, mp_size_t) __attribute__ ((__pure__));
+
+
+ mp_size_t __gmpn_pow_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
+
+
+
+ mp_limb_t __gmpn_preinv_mod_1 (mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t) __attribute__ ((__pure__));
+
+
+ void __gmpn_random (mp_ptr, mp_size_t);
+
+
+ void __gmpn_random2 (mp_ptr, mp_size_t);
+
+
+ mp_limb_t __gmpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
+
+
+ unsigned long int __gmpn_scan0 (mp_srcptr, unsigned long int) __attribute__ ((__pure__));
+
+
+ unsigned long int __gmpn_scan1 (mp_srcptr, unsigned long int) __attribute__ ((__pure__));
+
+
+ mp_size_t __gmpn_set_str (mp_ptr, const unsigned char *, size_t, int);
+
+
+ mp_size_t __gmpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t);
+
+
+
+ mp_limb_t __gmpn_sub (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t);
+
+
+
+
+ mp_limb_t __gmpn_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) ;
+
+
+
+ mp_limb_t __gmpn_sub_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+
+
+ mp_limb_t __gmpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+
+
+ void __gmpn_tdiv_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+# 1629 "/usr/include/gmp.h" 3 4
+extern __inline__ void
+__gmpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ __gmpz_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_size = ((__gmp_w->_mp_size) >= 0 ? (__gmp_w->_mp_size) : -(__gmp_w->_mp_size));
+}
+# 1653 "/usr/include/gmp.h" 3 4
+extern __inline__
+
+int
+__gmpz_fits_uint_p (mpz_srcptr __gmp_z)
+{
+ mp_size_t __gmp_n = __gmp_z->_mp_size; mp_ptr __gmp_p = __gmp_z->_mp_d; return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= (~ (unsigned) 0)));;
+}
+
+
+
+
+extern __inline__
+
+int
+__gmpz_fits_ulong_p (mpz_srcptr __gmp_z)
+{
+ mp_size_t __gmp_n = __gmp_z->_mp_size; mp_ptr __gmp_p = __gmp_z->_mp_d; return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= (~ (unsigned long) 0)));;
+}
+
+
+
+
+extern __inline__
+
+int
+__gmpz_fits_ushort_p (mpz_srcptr __gmp_z)
+{
+ mp_size_t __gmp_n = __gmp_z->_mp_size; mp_ptr __gmp_p = __gmp_z->_mp_d; return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= ((unsigned short) ~0)));;
+}
+
+
+
+
+extern __inline__
+
+unsigned long
+__gmpz_get_ui (mpz_srcptr __gmp_z)
+{
+ mp_ptr __gmp_p = __gmp_z->_mp_d;
+ mp_size_t __gmp_n = __gmp_z->_mp_size;
+ mp_limb_t __gmp_l = __gmp_p[0];
+
+
+
+
+
+
+ return (__gmp_n != 0 ? __gmp_l : 0);
+# 1709 "/usr/include/gmp.h" 3 4
+}
+
+
+
+
+extern __inline__
+
+mp_limb_t
+__gmpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n)
+{
+ mp_limb_t __gmp_result = 0;
+ if (__builtin_expect ((__gmp_n >= 0 && __gmp_n < ((__gmp_z->_mp_size) >= 0 ? (__gmp_z->_mp_size) : -(__gmp_z->_mp_size))) != 0, 1))
+ __gmp_result = __gmp_z->_mp_d[__gmp_n];
+ return __gmp_result;
+}
+
+
+
+extern __inline__ void
+__gmpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ __gmpz_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_size = - __gmp_w->_mp_size;
+}
+
+
+
+
+extern __inline__
+
+int
+__gmpz_perfect_square_p (mpz_srcptr __gmp_a)
+{
+ mp_size_t __gmp_asize;
+ int __gmp_result;
+
+ __gmp_asize = __gmp_a->_mp_size;
+ __gmp_result = (__gmp_asize >= 0);
+ if (__builtin_expect ((__gmp_asize > 0) != 0, 1))
+ __gmp_result = __gmpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize);
+ return __gmp_result;
+}
+
+
+
+
+extern __inline__
+
+unsigned long
+__gmpz_popcount (mpz_srcptr __gmp_u)
+{
+ mp_size_t __gmp_usize;
+ unsigned long __gmp_result;
+
+ __gmp_usize = __gmp_u->_mp_size;
+ __gmp_result = (__gmp_usize < 0 ? (~ (unsigned long) 0) : 0);
+ if (__builtin_expect ((__gmp_usize > 0) != 0, 1))
+ __gmp_result = __gmpn_popcount (__gmp_u->_mp_d, __gmp_usize);
+ return __gmp_result;
+}
+
+
+
+
+extern __inline__
+
+void
+__gmpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ __gmpz_tdiv_q (__gmp_w, (&((__gmp_u)->_mp_num)), (&((__gmp_u)->_mp_den)));
+}
+
+
+
+
+extern __inline__
+
+size_t
+__gmpz_size (mpz_srcptr __gmp_z)
+{
+ return ((__gmp_z->_mp_size) >= 0 ? (__gmp_z->_mp_size) : -(__gmp_z->_mp_size));
+}
+
+
+
+
+
+
+extern __inline__ void
+__gmpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ __gmpq_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_num._mp_size = ((__gmp_w->_mp_num._mp_size) >= 0 ? (__gmp_w->_mp_num._mp_size) : -(__gmp_w->_mp_num._mp_size));
+}
+
+
+
+extern __inline__ void
+__gmpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ __gmpq_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
+}
+# 2051 "/usr/include/gmp.h" 3 4
+extern __inline__
+
+mp_limb_t
+__gmpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
+{
+ mp_limb_t __gmp_c;
+ do { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = (__gmp_ysize); if (__gmp_i != 0) { if (__gmpn_add_n (__gmp_wp, __gmp_xp, __gmp_yp, __gmp_i)) { do { if (__gmp_i >= (__gmp_xsize)) { (__gmp_c) = 1; goto __gmp_done; } __gmp_x = (__gmp_xp)[__gmp_i]; } while ((((__gmp_wp)[__gmp_i++] = (__gmp_x + 1) & ((~ ((mp_limb_t) (0))) >> 0)) == 0)); } } if ((__gmp_wp) != (__gmp_xp)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_xsize); __gmp_j++) (__gmp_wp)[__gmp_j] = (__gmp_xp)[__gmp_j]; } while (0); (__gmp_c) = 0; __gmp_done: ; } while (0);
+ return __gmp_c;
+}
+
+
+
+
+extern __inline__
+
+mp_limb_t
+__gmpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n)
+{
+ mp_limb_t __gmp_c;
+ do { mp_size_t __gmp_i; mp_limb_t __gmp_x, __gmp_r; __gmp_x = (__gmp_src)[0]; __gmp_r = __gmp_x + (__gmp_n); (__gmp_dst)[0] = __gmp_r; if (((__gmp_r) < ((__gmp_n)))) { (__gmp_c) = 1; for (__gmp_i = 1; __gmp_i < (__gmp_size);) { __gmp_x = (__gmp_src)[__gmp_i]; __gmp_r = __gmp_x + 1; (__gmp_dst)[__gmp_i] = __gmp_r; ++__gmp_i; if (!((__gmp_r) < (1))) { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; break; } } } else { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (1); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; } } while (0);
+ return __gmp_c;
+}
+
+
+
+
+extern __inline__
+
+int
+__gmpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size)
+{
+ int __gmp_result;
+ do { mp_size_t __gmp_i; mp_limb_t __gmp_x, __gmp_y; (__gmp_result) = 0; __gmp_i = (__gmp_size); while (--__gmp_i >= 0) { __gmp_x = (__gmp_xp)[__gmp_i]; __gmp_y = (__gmp_yp)[__gmp_i]; if (__gmp_x != __gmp_y) { (__gmp_result) = (__gmp_x > __gmp_y ? 1 : -1); break; } } } while (0);
+ return __gmp_result;
+}
+
+
+
+
+extern __inline__
+
+mp_limb_t
+__gmpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
+{
+ mp_limb_t __gmp_c;
+ do { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = (__gmp_ysize); if (__gmp_i != 0) { if (__gmpn_sub_n (__gmp_wp, __gmp_xp, __gmp_yp, __gmp_i)) { do { if (__gmp_i >= (__gmp_xsize)) { (__gmp_c) = 1; goto __gmp_done; } __gmp_x = (__gmp_xp)[__gmp_i]; } while ((((__gmp_wp)[__gmp_i++] = (__gmp_x - 1) & ((~ ((mp_limb_t) (0))) >> 0)), __gmp_x == 0)); } } if ((__gmp_wp) != (__gmp_xp)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_xsize); __gmp_j++) (__gmp_wp)[__gmp_j] = (__gmp_xp)[__gmp_j]; } while (0); (__gmp_c) = 0; __gmp_done: ; } while (0);
+ return __gmp_c;
+}
+
+
+
+
+extern __inline__
+
+mp_limb_t
+__gmpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n)
+{
+ mp_limb_t __gmp_c;
+ do { mp_size_t __gmp_i; mp_limb_t __gmp_x, __gmp_r; __gmp_x = (__gmp_src)[0]; __gmp_r = __gmp_x - (__gmp_n); (__gmp_dst)[0] = __gmp_r; if (((__gmp_x) < ((__gmp_n)))) { (__gmp_c) = 1; for (__gmp_i = 1; __gmp_i < (__gmp_size);) { __gmp_x = (__gmp_src)[__gmp_i]; __gmp_r = __gmp_x - 1; (__gmp_dst)[__gmp_i] = __gmp_r; ++__gmp_i; if (!((__gmp_x) < (1))) { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; break; } } } else { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (1); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; } } while (0);
+ return __gmp_c;
+}
+
+
+
+
+extern __inline__
+
+mp_limb_t
+__gmpn_neg_n (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
+{
+ mp_limb_t __gmp_ul, __gmp_cy;
+ __gmp_cy = 0;
+ do {
+ __gmp_ul = *__gmp_up++;
+ *__gmp_rp++ = -__gmp_ul - __gmp_cy;
+ __gmp_cy |= __gmp_ul != 0;
+ } while (--__gmp_n != 0);
+ return __gmp_cy;
+}
+# 2208 "/usr/include/gmp.h" 3 4
+enum
+{
+ GMP_ERROR_NONE = 0,
+ GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,
+ GMP_ERROR_DIVISION_BY_ZERO = 2,
+ GMP_ERROR_SQRT_OF_NEGATIVE = 4,
+ GMP_ERROR_INVALID_ARGUMENT = 8
+};
+# 125 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+# 232 "/usr/lib64/bigloo/3.2b/bigloo.h"
+typedef long int_t;
+typedef int_t header_t;
+typedef int bool_t;
+typedef unsigned short ucs2_t;
+
+struct bgl_dframe {
+ union scmobj *symbol;
+ struct bgl_dframe *link;
+};
+
+typedef union scmobj {
+ int_t integer;
+
+ header_t header;
+
+
+
+
+
+
+
+ struct pair {
+
+
+
+ union scmobj *car;
+ union scmobj *cdr;
+ } pair_t;
+
+ struct extended_pair {
+
+
+
+ union scmobj *car;
+ union scmobj *cdr;
+ union scmobj *eheader;
+ union scmobj *cer;
+ } extended_pair_t;
+
+ struct string {
+
+
+
+ int length;
+ unsigned char char0;
+ } string_t;
+
+ struct ucs2_string {
+ header_t header;
+ int length;
+ ucs2_t char0;
+ } ucs2_string_t;
+
+ struct vector {
+
+
+
+ int length;
+ union scmobj *obj0;
+ } vector_t;
+
+ struct tvector {
+ header_t header;
+ int length;
+ union scmobj *descr;
+ } tvector_t;
+
+ struct procedure {
+ header_t header;
+ union scmobj *(*entry)();
+ union scmobj *(*va_entry)();
+ union scmobj *attr;
+ int arity;
+ union scmobj *obj0;
+ } procedure_t;
+
+ struct procedure_light {
+ union scmobj *(*entry)();
+ union scmobj *obj0;
+ } procedure_light_t;
+
+ struct symbol {
+ header_t header;
+ union scmobj *string;
+ union scmobj *cval;
+ } symbol_t;
+
+ struct port {
+ header_t header;
+ union scmobj *kindof;
+ union scmobj *name;
+ void *stream;
+ union scmobj *chook;
+ void *timeout;
+ void *userdata;
+ int (*sysclose)();
+ long (*sysseek)();
+ } port_t;
+
+ struct output_port {
+ struct port port;
+ union scmobj *buf;
+ long cnt;
+ char *ptr;
+ int bufmode;
+ size_t (*syswrite)();
+ union scmobj *(*sysflush)();
+ union scmobj *fhook;
+ union scmobj *flushbuf;
+ } output_port_t;
+
+ struct input_port {
+ struct port port;
+ long filepos;
+ long fillbarrier;
+ long (*sysread)();
+ bool_t eof;
+ long matchstart;
+ long matchstop;
+ long forward;
+ long bufpos;
+ union scmobj *buf;
+ int lastchar;
+ } input_port_t;
+
+ struct input_procedure_port {
+ struct input_port iport;
+ union scmobj *pbuffer;
+ long pbufpos;
+ } input_procedure_port_t;
+
+ struct input_gzip_port {
+ struct input_procedure_port iport;
+ union scmobj *gzip;
+ } input_gzip_port_t;
+
+ struct binary_port {
+ header_t header;
+ union scmobj *name;
+ FILE *file;
+ int io;
+ } binary_port_t;
+
+ struct cell {
+
+
+
+ union scmobj *val;
+ } cell_t;
+
+ struct structure {
+
+ header_t header;
+
+ union scmobj *key;
+ int length;
+ union scmobj *obj0;
+ } struct_t;
+
+ struct real {
+
+
+
+ double real;
+ } real_t;
+
+ struct stack {
+ header_t header;
+ union scmobj *self;
+ union scmobj *exitd_top;
+ union scmobj *stamp;
+ long size;
+ struct befored *before_top;
+ char *stack_top;
+ char *stack_bot;
+ struct bgl_dframe *top_frame;
+ void *stack;
+ } stack_t;
+
+ struct foreign {
+ header_t header;
+ union scmobj *id;
+ void *cobj;
+ } foreign_t;
+
+ struct elong {
+ header_t header;
+ long elong;
+ } elong_t;
+
+ struct llong {
+ header_t header;
+ long long llong;
+ } llong_t;
+
+ struct bignum {
+ header_t header;
+
+ __mpz_struct mpz;
+
+
+
+ } bignum_t;
+
+ struct process {
+ header_t header;
+ int pid;
+ int index;
+ union scmobj *stream[ 3 ];
+ int exited;
+ int exit_status;
+
+
+
+ } process_t;
+
+ struct socket {
+ header_t header;
+ int portnum;
+ union scmobj *hostname;
+ union scmobj *hostip;
+ int fd;
+ union scmobj *input;
+ union scmobj *output;
+ int stype;
+ union scmobj *chook;
+ union scmobj *(*accept)();
+ void *userdata;
+ } socket_t;
+
+ struct custom {
+ header_t header;
+ char *identifier;
+ int (*final)();
+ int (*equal)();
+ long (*hash)();
+ char *(*to_string)();
+ union scmobj *(*output)();
+ } custom_t;
+
+ struct bgl_date {
+ header_t header;
+ int sec;
+ int min;
+ int hour;
+ int mday;
+ int mon;
+ int year;
+ int wday;
+ int yday;
+ long timezone;
+ int isdst;
+ } date_t;
+
+ struct bgl_mutex {
+ header_t header;
+ union scmobj *name;
+ void *mutex;
+ } mutex_t;
+
+ struct bgl_condvar {
+ header_t header;
+ union scmobj *name;
+ void *condvar;
+ } condvar_t;
+
+ struct bgl_mmap {
+ header_t header;
+ union scmobj *name;
+ int fd;
+ long length;
+ long rp;
+ long wp;
+
+ unsigned char *map;
+
+
+
+
+
+ } mmap_t;
+
+ struct bgl_hvector {
+ header_t header;
+ unsigned int length;
+ } hvector_t;
+
+ struct bgl_weakptr {
+ header_t header;
+ union scmobj *data;
+ } weakptr_t;
+
+ struct bgl_dynamic_env {
+ header_t header;
+
+ union scmobj *current_output_port;
+ union scmobj *current_input_port;
+ union scmobj *current_error_port;
+
+ union scmobj *current_display;
+
+ int mvalues_number;
+ union scmobj *mvalues[ 16 ];
+
+ char *stack_bottom;
+ union scmobj *exitd_top;
+ union scmobj *exitd_stamp;
+ struct befored *befored_top;
+ union scmobj *exitd_val;
+
+ union scmobj *error_handler;
+ union scmobj *error_notifiers;
+ union scmobj *uncaught_exception_handler;
+
+ union scmobj *interrupt_notifier;
+
+ union scmobj *debug_alist;
+
+ struct bgl_dframe top;
+ struct bgl_dframe *top_of_frame;
+
+ void *current_thread;
+
+ union scmobj *lexical_stack;
+
+ union scmobj *bytecode;
+ union scmobj *module;
+ union scmobj *abase;
+
+ union scmobj *parameters;
+
+ union scmobj *thread_backend;
+
+ union scmobj *user_data;
+ } dynamic_env_t;
+
+} *obj_t;
+
+
+typedef obj_t (*function_t)();
+
+
+typedef struct __object_bgl {
+ header_t header;
+ obj_t widening;
+} *object_bglt;
+
+
+typedef struct __bgl__object_00_bgl {
+ header_t header;
+ obj_t widening;
+} *bgl__object_00_bglt;
+
+
+typedef struct BgL__object_00_bgl {
+ header_t header;
+ obj_t widening;
+} *BgL__object_00_bglt;
+
+typedef struct BgL_objectz00_bgl {
+ header_t header;
+ obj_t widening;
+} *BgL_objectz00_bglt;
+
+
+struct bgl_input_timeout {
+ long timeout;
+ long (*sysread)( void *, size_t, size_t, obj_t );
+ int (*sysclose)( obj_t );
+};
+
+
+
+
+# 1 "/usr/lib64/bigloo/3.2b/bigloo_gc.h" 1
+# 26 "/usr/lib64/bigloo/3.2b/bigloo_gc.h"
+ extern obj_t GC_malloc( size_t );
+ extern obj_t GC_realloc( obj_t, size_t );
+ extern void GC_free( obj_t );
+ extern void GC_gcollect();
+ extern obj_t GC_malloc_atomic( size_t );
+
+
+
+
+ extern obj_t GC_debug_malloc( size_t, char *, long );
+ extern obj_t GC_debug_malloc_atomic( size_t, char *, long );
+ extern int GC_gc_no;
+ extern int GC_size( void * );
+ extern void GC_init();
+ extern void GC_expand_hp( size_t );
+ extern void GC_register_displacement( int );
+ extern void GC_debug_register_displacement( int );
+ extern void* GC_base( void* );
+ extern int GC_invoke_finalizers();
+ extern int GC_general_register_disappearing_link( obj_t * , obj_t );
+ extern int GC_unregister_disappearing_link( obj_t * );
+ typedef obj_t (*GC_fn_type) ( obj_t client_data );
+ extern obj_t GC_call_with_alloc_lock( GC_fn_type fn, obj_t client_data );
+ typedef void (*GC_finalization_proc)( void *obj, void *client_data );
+ extern void GC_register_finalizer( void *obj,
+ GC_finalization_proc fn, void *d,
+ GC_finalization_proc *ofn, void **od );
+# 607 "/usr/lib64/bigloo/3.2b/bigloo.h" 2
+# 1091 "/usr/lib64/bigloo/3.2b/bigloo.h"
+extern obj_t alloc_hvector( int, int, int );
+# 1133 "/usr/lib64/bigloo/3.2b/bigloo.h"
+extern obj_t make_weakptr( obj_t );
+extern obj_t weakptr_data( obj_t );
+extern void weakptr_data_set( obj_t , obj_t );
+
+
+
+
+
+
+
+extern obj_t single_thread_denv;
+extern void bgl_init_dynamic_env();
+extern obj_t make_dynamic_env();
+extern obj_t bgl_dup_dynamic_env( obj_t );
+extern obj_t (*bgl_multithread_dynamic_denv)();
+# 2154 "/usr/lib64/bigloo/3.2b/bigloo.h"
+extern gmp_randstate_t gmp_random_state;
+
+extern obj_t bgl_safe_plus_fx( long, long );
+extern obj_t bgl_safe_minus_fx( long, long );
+extern obj_t bgl_safe_mul_fx( long, long );
+extern obj_t bgl_safe_quotient_fx( long, long );
+
+extern obj_t bgl_safe_plus_elong( long, long );
+extern obj_t bgl_safe_minus_elong( long, long );
+extern obj_t bgl_safe_mul_elong( long, long );
+extern obj_t bgl_safe_quotient_elong( long, long );
+
+extern obj_t bgl_safe_plus_llong( long long, long long );
+extern obj_t bgl_safe_minus_llong( long long, long long );
+extern obj_t bgl_safe_mul_llong( long long, long long );
+extern obj_t bgl_safe_quotient_llong( long long, long long );
+# 2318 "/usr/lib64/bigloo/3.2b/bigloo.h"
+extern obj_t _exit_value_;
+# 2364 "/usr/lib64/bigloo/3.2b/bigloo.h"
+typedef jmp_buf callcc_jmp_buf;
+# 2373 "/usr/lib64/bigloo/3.2b/bigloo.h"
+struct exitd {
+ void *exit;
+ long userp;
+ obj_t stamp;
+ struct exitd *prev;
+};
+# 2418 "/usr/lib64/bigloo/3.2b/bigloo.h"
+struct befored {
+ obj_t before;
+ struct befored *prev;
+};
+# 2531 "/usr/lib64/bigloo/3.2b/bigloo.h"
+extern header_t bgl_opaque_nil;
+# 2735 "/usr/lib64/bigloo/3.2b/bigloo.h"
+extern obj_t bigloo_exit( obj_t );
+
+extern obj_t va_generic_entry( obj_t, ... );
+extern obj_t opt_generic_entry( obj_t, ... );
+extern obj_t apply( obj_t, obj_t );
+
+extern void bgl_init_module_debug_start( char * );
+extern void bgl_init_module_debug_library( char * );
+extern void bgl_init_module_debug_import( char *, char * );
+extern void bgl_init_module_debug_object( char * );
+extern void bgl_init_module_debug_end( char * );
+
+extern obj_t the_failure( obj_t, obj_t, obj_t );
+extern obj_t bgl_system_failure( int, obj_t, obj_t, obj_t );
+
+extern obj_t bgl_make_procedure( obj_t, int, int );
+extern obj_t make_fx_procedure( function_t, int, int );
+extern obj_t make_va_procedure( function_t, int, int );
+extern obj_t bgl_time( obj_t );
+
+extern obj_t bgl_procedure_entry_to_string( obj_t );
+extern obj_t bgl_string_to_procedure_entry( obj_t );
+
+extern obj_t make_pair( obj_t, obj_t );
+extern obj_t make_extended_pair( obj_t a, obj_t d, obj_t e );
+extern obj_t make_cell( obj_t );
+extern obj_t make_real( double );
+extern obj_t make_belong( long );
+extern obj_t make_bllong( long long );
+
+extern obj_t bgl_string_to_bignum( char *, int );
+
+extern obj_t bgl_reverse( obj_t );
+extern obj_t bgl_reverse_bang( obj_t );
+
+extern long bgl_list_length( obj_t );
+extern obj_t bgl_remq( obj_t, obj_t );
+extern obj_t bgl_remq_bang( obj_t, obj_t );
+extern obj_t bgl_make_output_port( obj_t, void *, obj_t, obj_t, size_t (*)(), long (*)(), int (*)() );
+extern void bgl_output_port_buffer_set( obj_t, obj_t );
+extern obj_t bgl_close_output_port( obj_t );
+extern obj_t get_output_string( obj_t );
+extern obj_t bgl_file_to_output_port( FILE *, obj_t );
+extern obj_t bgl_open_output_file( obj_t, obj_t );
+extern obj_t bgl_append_output_file( obj_t, obj_t );
+extern obj_t bgl_open_output_string( obj_t );
+extern obj_t bgl_open_output_procedure( obj_t, obj_t, obj_t, obj_t );
+
+extern obj_t create_vector( int );
+
+extern obj_t make_string_sans_fill();
+extern obj_t string_to_bstring( char * );
+extern obj_t string_to_bstring_len( char *, int );
+extern obj_t close_init_string();
+extern obj_t bgl_string_shrink( obj_t, long );
+
+extern obj_t bgl_find_runtime_type( obj_t );
+
+extern obj_t cobj_to_foreign( obj_t, void * );
+extern long obj_to_cobj( obj_t );
+extern int _bigloo_main( int, char *[], char *[], obj_t (*)(obj_t) );
+
+
+
+
+extern obj_t string_to_symbol( char * );
+extern obj_t bstring_to_symbol( obj_t );
+extern obj_t bgl_symbol_genname( obj_t, char * );
+
+extern obj_t string_to_keyword( char * );
+
+extern obj_t bgl_open_input_string( obj_t, int );
+extern long bgl_file_size( char * );
+extern obj_t create_custom( long );
+
+extern void bgl_input_port_buffer_set( obj_t, obj_t );
+extern obj_t bgl_reset_output_string_port( obj_t );
+
+extern obj_t bgl_display_string( obj_t, obj_t );
+extern obj_t bgl_display_symbol( obj_t, obj_t );
+extern obj_t bgl_display_fixnum( obj_t, obj_t );
+extern obj_t bgl_display_char( char, obj_t );
+extern obj_t bgl_output_flush( obj_t, char *, size_t );
+
+extern obj_t bgl_make_date();
+
+extern obj_t bgl_make_mutex( obj_t );
+extern obj_t bgl_make_condvar( obj_t );
+
+extern bool_t (*bgl_mutex_lock)( obj_t );
+extern bool_t (*bgl_mutex_timed_lock)( obj_t, long );
+extern bool_t (*bgl_mutex_unlock)( obj_t );
+extern obj_t (*bgl_mutex_state)( obj_t );
+
+extern bool_t (*bgl_condvar_wait)( obj_t, obj_t );
+extern bool_t (*bgl_condvar_timed_wait)( obj_t, obj_t, long );
+extern bool_t (*bgl_condvar_signal)( obj_t );
+extern bool_t (*bgl_condvar_broadcast)( obj_t );
+
+extern obj_t bgl_open_mmap( obj_t, bool_t, bool_t );
+ obj_t bgl_close_mmap( obj_t );
+# 2853 "/usr/lib64/bigloo/3.2b/bigloo.h"
+extern void (*bgl_gc_do_blocking )( void (*fun)(), void * );
+
+
+extern obj_t bgl_make_client_socket( obj_t, int, int, obj_t, obj_t );
+extern obj_t bgl_make_server_socket( obj_t, int, int );
+extern obj_t bgl_socket_accept( obj_t, bool_t, obj_t, obj_t );
+extern long bgl_socket_accept_many( obj_t, bool_t, obj_t, obj_t, obj_t );
+
+extern obj_t bgl_gethostname();
+extern obj_t bgl_socket_hostname();
+extern obj_t bgl_getsockopt( obj_t, obj_t );
+extern obj_t bgl_setsockopt( obj_t, obj_t, obj_t );
+
+extern void bgl_init_trace( void );
+
+
+extern int bgl_sigprocmask( int );
+
+
+extern long bgl_rgc_blit_string( obj_t, char *, long, long );
+
+extern obj_t bigloo_nan, bigloo_infinity, bigloo_minfinity;
+# 11 "bigloo.c" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gst.h" 1
+# 27 "/usr/include/gstreamer-0.10/gst/gst.h"
+# 1 "/usr/include/glib-2.0/glib.h" 1
+# 32 "/usr/include/glib-2.0/glib.h"
+# 1 "/usr/include/glib-2.0/glib/galloca.h" 1
+# 34 "/usr/include/glib-2.0/glib/galloca.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 34 "/usr/include/glib-2.0/glib/gtypes.h"
+# 1 "/usr/lib64/glib-2.0/include/glibconfig.h" 1
+# 9 "/usr/lib64/glib-2.0/include/glibconfig.h"
+# 1 "/usr/include/glib-2.0/glib/gmacros.h" 1
+# 40 "/usr/include/glib-2.0/glib/gmacros.h"
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 1 3 4
+# 149 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 3 4
+typedef long int ptrdiff_t;
+# 41 "/usr/include/glib-2.0/glib/gmacros.h" 2
+# 10 "/usr/lib64/glib-2.0/include/glibconfig.h" 2
+
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include-fixed/limits.h" 1 3 4
+# 12 "/usr/lib64/glib-2.0/include/glibconfig.h" 2
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/float.h" 1 3 4
+# 13 "/usr/lib64/glib-2.0/include/glibconfig.h" 2
+# 22 "/usr/lib64/glib-2.0/include/glibconfig.h"
+
+# 38 "/usr/lib64/glib-2.0/include/glibconfig.h"
+typedef signed char gint8;
+typedef unsigned char guint8;
+typedef signed short gint16;
+typedef unsigned short guint16;
+
+
+
+typedef signed int gint32;
+typedef unsigned int guint32;
+
+
+
+
+
+typedef signed long gint64;
+typedef unsigned long guint64;
+# 65 "/usr/lib64/glib-2.0/include/glibconfig.h"
+typedef signed long gssize;
+typedef unsigned long gsize;
+# 75 "/usr/lib64/glib-2.0/include/glibconfig.h"
+typedef gint64 goffset;
+# 90 "/usr/lib64/glib-2.0/include/glibconfig.h"
+typedef signed long gintptr;
+typedef unsigned long guintptr;
+# 156 "/usr/lib64/glib-2.0/include/glibconfig.h"
+typedef struct _GStaticMutex GStaticMutex;
+struct _GStaticMutex
+{
+ struct _GMutex *runtime_mutex;
+ union {
+ char pad[40];
+ double dummy_double;
+ void *dummy_pointer;
+ long dummy_long;
+ } static_mutex;
+};
+# 175 "/usr/lib64/glib-2.0/include/glibconfig.h"
+typedef union _GSystemThread GSystemThread;
+union _GSystemThread
+{
+ char data[8];
+ double dummy_double;
+ void *dummy_pointer;
+ long dummy_long;
+};
+# 222 "/usr/lib64/glib-2.0/include/glibconfig.h"
+typedef int GPid;
+
+
+# 35 "/usr/include/glib-2.0/glib/gtypes.h" 2
+# 1 "/usr/include/glib-2.0/glib/gmacros.h" 1
+# 36 "/usr/include/glib-2.0/glib/gtypes.h" 2
+
+
+# 46 "/usr/include/glib-2.0/glib/gtypes.h"
+typedef char gchar;
+typedef short gshort;
+typedef long glong;
+typedef int gint;
+typedef gint gboolean;
+
+typedef unsigned char guchar;
+typedef unsigned short gushort;
+typedef unsigned long gulong;
+typedef unsigned int guint;
+
+typedef float gfloat;
+typedef double gdouble;
+# 77 "/usr/include/glib-2.0/glib/gtypes.h"
+typedef void* gpointer;
+typedef const void *gconstpointer;
+
+typedef gint (*GCompareFunc) (gconstpointer a,
+ gconstpointer b);
+typedef gint (*GCompareDataFunc) (gconstpointer a,
+ gconstpointer b,
+ gpointer user_data);
+typedef gboolean (*GEqualFunc) (gconstpointer a,
+ gconstpointer b);
+typedef void (*GDestroyNotify) (gpointer data);
+typedef void (*GFunc) (gpointer data,
+ gpointer user_data);
+typedef guint (*GHashFunc) (gconstpointer key);
+typedef void (*GHFunc) (gpointer key,
+ gpointer value,
+ gpointer user_data);
+typedef void (*GFreeFunc) (gpointer data);
+typedef const gchar * (*GTranslateFunc) (const gchar *str,
+ gpointer data);
+# 350 "/usr/include/glib-2.0/glib/gtypes.h"
+typedef union _GDoubleIEEE754 GDoubleIEEE754;
+typedef union _GFloatIEEE754 GFloatIEEE754;
+
+
+
+
+
+union _GFloatIEEE754
+{
+ gfloat v_float;
+ struct {
+ guint mantissa : 23;
+ guint biased_exponent : 8;
+ guint sign : 1;
+ } mpn;
+};
+union _GDoubleIEEE754
+{
+ gdouble v_double;
+ struct {
+ guint mantissa_low : 32;
+ guint mantissa_high : 20;
+ guint biased_exponent : 11;
+ guint sign : 1;
+ } mpn;
+};
+# 400 "/usr/include/glib-2.0/glib/gtypes.h"
+typedef struct _GTimeVal GTimeVal;
+
+struct _GTimeVal
+{
+ glong tv_sec;
+ glong tv_usec;
+};
+
+
+# 35 "/usr/include/glib-2.0/glib/galloca.h" 2
+# 33 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/garray.h" 1
+# 34 "/usr/include/glib-2.0/glib/garray.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 35 "/usr/include/glib-2.0/glib/garray.h" 2
+
+
+
+typedef struct _GArray GArray;
+typedef struct _GByteArray GByteArray;
+typedef struct _GPtrArray GPtrArray;
+
+struct _GArray
+{
+ gchar *data;
+ guint len;
+};
+
+struct _GByteArray
+{
+ guint8 *data;
+ guint len;
+};
+
+struct _GPtrArray
+{
+ gpointer *pdata;
+ guint len;
+};
+# 70 "/usr/include/glib-2.0/glib/garray.h"
+GArray* g_array_new (gboolean zero_terminated,
+ gboolean clear_,
+ guint element_size);
+GArray* g_array_sized_new (gboolean zero_terminated,
+ gboolean clear_,
+ guint element_size,
+ guint reserved_size);
+gchar* g_array_free (GArray *array,
+ gboolean free_segment);
+GArray* g_array_append_vals (GArray *array,
+ gconstpointer data,
+ guint len);
+GArray* g_array_prepend_vals (GArray *array,
+ gconstpointer data,
+ guint len);
+GArray* g_array_insert_vals (GArray *array,
+ guint index_,
+ gconstpointer data,
+ guint len);
+GArray* g_array_set_size (GArray *array,
+ guint length);
+GArray* g_array_remove_index (GArray *array,
+ guint index_);
+GArray* g_array_remove_index_fast (GArray *array,
+ guint index_);
+GArray* g_array_remove_range (GArray *array,
+ guint index_,
+ guint length);
+void g_array_sort (GArray *array,
+ GCompareFunc compare_func);
+void g_array_sort_with_data (GArray *array,
+ GCompareDataFunc compare_func,
+ gpointer user_data);
+
+
+
+
+
+
+GPtrArray* g_ptr_array_new (void);
+GPtrArray* g_ptr_array_sized_new (guint reserved_size);
+gpointer* g_ptr_array_free (GPtrArray *array,
+ gboolean free_seg);
+void g_ptr_array_set_size (GPtrArray *array,
+ gint length);
+gpointer g_ptr_array_remove_index (GPtrArray *array,
+ guint index_);
+gpointer g_ptr_array_remove_index_fast (GPtrArray *array,
+ guint index_);
+gboolean g_ptr_array_remove (GPtrArray *array,
+ gpointer data);
+gboolean g_ptr_array_remove_fast (GPtrArray *array,
+ gpointer data);
+void g_ptr_array_remove_range (GPtrArray *array,
+ guint index_,
+ guint length);
+void g_ptr_array_add (GPtrArray *array,
+ gpointer data);
+void g_ptr_array_sort (GPtrArray *array,
+ GCompareFunc compare_func);
+void g_ptr_array_sort_with_data (GPtrArray *array,
+ GCompareDataFunc compare_func,
+ gpointer user_data);
+void g_ptr_array_foreach (GPtrArray *array,
+ GFunc func,
+ gpointer user_data);
+
+
+
+
+
+
+GByteArray* g_byte_array_new (void);
+GByteArray* g_byte_array_sized_new (guint reserved_size);
+guint8* g_byte_array_free (GByteArray *array,
+ gboolean free_segment);
+GByteArray* g_byte_array_append (GByteArray *array,
+ const guint8 *data,
+ guint len);
+GByteArray* g_byte_array_prepend (GByteArray *array,
+ const guint8 *data,
+ guint len);
+GByteArray* g_byte_array_set_size (GByteArray *array,
+ guint length);
+GByteArray* g_byte_array_remove_index (GByteArray *array,
+ guint index_);
+GByteArray* g_byte_array_remove_index_fast (GByteArray *array,
+ guint index_);
+GByteArray* g_byte_array_remove_range (GByteArray *array,
+ guint index_,
+ guint length);
+void g_byte_array_sort (GByteArray *array,
+ GCompareFunc compare_func);
+void g_byte_array_sort_with_data (GByteArray *array,
+ GCompareDataFunc compare_func,
+ gpointer user_data);
+
+
+# 34 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gasyncqueue.h" 1
+# 34 "/usr/include/glib-2.0/glib/gasyncqueue.h"
+# 1 "/usr/include/glib-2.0/glib/gthread.h" 1
+# 34 "/usr/include/glib-2.0/glib/gthread.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 28 "/usr/include/glib-2.0/glib/gerror.h"
+# 1 "/usr/include/glib-2.0/glib/gquark.h" 1
+# 34 "/usr/include/glib-2.0/glib/gquark.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 35 "/usr/include/glib-2.0/glib/gquark.h" 2
+
+
+
+typedef guint32 GQuark;
+
+
+
+GQuark g_quark_try_string (const gchar *string);
+GQuark g_quark_from_static_string (const gchar *string);
+GQuark g_quark_from_string (const gchar *string);
+const gchar* g_quark_to_string (GQuark quark) __attribute__((__const__));
+
+const gchar* g_intern_string (const gchar *string);
+const gchar* g_intern_static_string (const gchar *string);
+
+
+# 29 "/usr/include/glib-2.0/glib/gerror.h" 2
+
+
+
+typedef struct _GError GError;
+
+struct _GError
+{
+ GQuark domain;
+ gint code;
+ gchar *message;
+};
+
+GError* g_error_new (GQuark domain,
+ gint code,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 3, 4)));
+
+GError* g_error_new_literal (GQuark domain,
+ gint code,
+ const gchar *message);
+
+void g_error_free (GError *error);
+GError* g_error_copy (const GError *error);
+
+gboolean g_error_matches (const GError *error,
+ GQuark domain,
+ gint code);
+
+
+
+
+void g_set_error (GError **err,
+ GQuark domain,
+ gint code,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 4, 5)));
+
+void g_set_error_literal (GError **err,
+ GQuark domain,
+ gint code,
+ const gchar *message);
+
+
+
+void g_propagate_error (GError **dest,
+ GError *src);
+
+
+void g_clear_error (GError **err);
+
+
+void g_prefix_error (GError **err,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+
+
+void g_propagate_prefixed_error (GError **dest,
+ GError *src,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 3, 4)));
+
+
+# 35 "/usr/include/glib-2.0/glib/gthread.h" 2
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 36 "/usr/include/glib-2.0/glib/gthread.h" 2
+# 1 "/usr/include/glib-2.0/glib/gutils.h" 1
+# 34 "/usr/include/glib-2.0/glib/gutils.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 35 "/usr/include/glib-2.0/glib/gutils.h" 2
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stdarg.h" 1 3 4
+# 102 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stdarg.h" 3 4
+typedef __gnuc_va_list va_list;
+# 36 "/usr/include/glib-2.0/glib/gutils.h" 2
+
+
+# 120 "/usr/include/glib-2.0/glib/gutils.h"
+const gchar* g_get_user_name (void);
+const gchar* g_get_real_name (void);
+const gchar* g_get_home_dir (void);
+const gchar* g_get_tmp_dir (void);
+const gchar* g_get_host_name (void);
+gchar* g_get_prgname (void);
+void g_set_prgname (const gchar *prgname);
+const gchar* g_get_application_name (void);
+void g_set_application_name (const gchar *application_name);
+
+const gchar* g_get_user_data_dir (void);
+const gchar* g_get_user_config_dir (void);
+const gchar* g_get_user_cache_dir (void);
+const gchar* const * g_get_system_data_dirs (void);
+# 153 "/usr/include/glib-2.0/glib/gutils.h"
+const gchar* const * g_get_system_config_dirs (void);
+
+const gchar* const * g_get_language_names (void);
+# 179 "/usr/include/glib-2.0/glib/gutils.h"
+typedef enum {
+ G_USER_DIRECTORY_DESKTOP,
+ G_USER_DIRECTORY_DOCUMENTS,
+ G_USER_DIRECTORY_DOWNLOAD,
+ G_USER_DIRECTORY_MUSIC,
+ G_USER_DIRECTORY_PICTURES,
+ G_USER_DIRECTORY_PUBLIC_SHARE,
+ G_USER_DIRECTORY_TEMPLATES,
+ G_USER_DIRECTORY_VIDEOS,
+
+ G_USER_N_DIRECTORIES
+} GUserDirectory;
+
+const gchar* g_get_user_special_dir (GUserDirectory directory);
+
+typedef struct _GDebugKey GDebugKey;
+struct _GDebugKey
+{
+ const gchar *key;
+ guint value;
+};
+
+
+
+guint g_parse_debug_string (const gchar *string,
+ const GDebugKey *keys,
+ guint nkeys);
+
+gint g_snprintf (gchar *string,
+ gulong n,
+ gchar const *format,
+ ...) __attribute__((__format__ (__printf__, 3, 4)));
+gint g_vsnprintf (gchar *string,
+ gulong n,
+ gchar const *format,
+ va_list args);
+
+
+gboolean g_path_is_absolute (const gchar *file_name);
+
+
+const gchar* g_path_skip_root (const gchar *file_name);
+
+
+
+
+
+
+
+const gchar* g_basename (const gchar *file_name);
+# 238 "/usr/include/glib-2.0/glib/gutils.h"
+gchar* g_get_current_dir (void);
+gchar* g_path_get_basename (const gchar *file_name) __attribute__((__malloc__));
+gchar* g_path_get_dirname (const gchar *file_name) __attribute__((__malloc__));
+
+
+void g_nullify_pointer (gpointer *nullify_location);
+# 254 "/usr/include/glib-2.0/glib/gutils.h"
+const gchar* g_getenv (const gchar *variable);
+gboolean g_setenv (const gchar *variable,
+ const gchar *value,
+ gboolean overwrite);
+void g_unsetenv (const gchar *variable);
+gchar** g_listenv (void);
+
+
+const gchar* _g_getenv_nomalloc (const gchar *variable,
+ gchar buffer[1024]);
+
+
+
+
+
+typedef void (*GVoidFunc) (void);
+# 280 "/usr/include/glib-2.0/glib/gutils.h"
+void g_atexit (GVoidFunc func);
+# 294 "/usr/include/glib-2.0/glib/gutils.h"
+gchar* g_find_program_in_path (const gchar *program);
+
+
+
+static __inline __attribute__ ((unused)) gint g_bit_nth_lsf (gulong mask,
+ gint nth_bit) __attribute__((__const__));
+static __inline __attribute__ ((unused)) gint g_bit_nth_msf (gulong mask,
+ gint nth_bit) __attribute__((__const__));
+static __inline __attribute__ ((unused)) guint g_bit_storage (gulong number) __attribute__((__const__));
+
+
+
+
+typedef struct _GTrashStack GTrashStack;
+struct _GTrashStack
+{
+ GTrashStack *next;
+};
+
+static __inline __attribute__ ((unused)) void g_trash_stack_push (GTrashStack **stack_p,
+ gpointer data_p);
+static __inline __attribute__ ((unused)) gpointer g_trash_stack_pop (GTrashStack **stack_p);
+static __inline __attribute__ ((unused)) gpointer g_trash_stack_peek (GTrashStack **stack_p);
+static __inline __attribute__ ((unused)) guint g_trash_stack_height (GTrashStack **stack_p);
+
+
+
+
+static __inline __attribute__ ((unused)) gint
+g_bit_nth_lsf (gulong mask,
+ gint nth_bit)
+{
+ if ((nth_bit < -1))
+ nth_bit = -1;
+ while (nth_bit < ((8 * 8) - 1))
+ {
+ nth_bit++;
+ if (mask & (1UL << nth_bit))
+ return nth_bit;
+ }
+ return -1;
+}
+static __inline __attribute__ ((unused)) gint
+g_bit_nth_msf (gulong mask,
+ gint nth_bit)
+{
+ if (nth_bit < 0 || (nth_bit > 8 * 8))
+ nth_bit = 8 * 8;
+ while (nth_bit > 0)
+ {
+ nth_bit--;
+ if (mask & (1UL << nth_bit))
+ return nth_bit;
+ }
+ return -1;
+}
+static __inline __attribute__ ((unused)) guint
+g_bit_storage (gulong number)
+{
+
+
+
+
+ register guint n_bits = 0;
+
+ do
+ {
+ n_bits++;
+ number >>= 1;
+ }
+ while (number);
+ return n_bits;
+
+}
+static __inline __attribute__ ((unused)) void
+g_trash_stack_push (GTrashStack **stack_p,
+ gpointer data_p)
+{
+ GTrashStack *data = (GTrashStack *) data_p;
+
+ data->next = *stack_p;
+ *stack_p = data;
+}
+static __inline __attribute__ ((unused)) gpointer
+g_trash_stack_pop (GTrashStack **stack_p)
+{
+ GTrashStack *data;
+
+ data = *stack_p;
+ if (data)
+ {
+ *stack_p = data->next;
+
+
+
+ data->next = ((void *)0);
+ }
+
+ return data;
+}
+static __inline __attribute__ ((unused)) gpointer
+g_trash_stack_peek (GTrashStack **stack_p)
+{
+ GTrashStack *data;
+
+ data = *stack_p;
+
+ return data;
+}
+static __inline __attribute__ ((unused)) guint
+g_trash_stack_height (GTrashStack **stack_p)
+{
+ GTrashStack *data;
+ guint i = 0;
+
+ for (data = *stack_p; data; data = data->next)
+ i++;
+
+ return i;
+}
+
+
+
+
+
+
+extern const guint glib_major_version;
+extern const guint glib_minor_version;
+extern const guint glib_micro_version;
+extern const guint glib_interface_age;
+extern const guint glib_binary_age;
+
+const gchar * glib_check_version (guint required_major,
+ guint required_minor,
+ guint required_micro);
+
+
+
+
+
+
+
+
+# 37 "/usr/include/glib-2.0/glib/gthread.h" 2
+# 1 "/usr/include/glib-2.0/glib/gatomic.h" 1
+# 37 "/usr/include/glib-2.0/glib/gatomic.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 38 "/usr/include/glib-2.0/glib/gatomic.h" 2
+
+
+
+gint g_atomic_int_exchange_and_add (volatile gint __attribute__((may_alias)) *atomic,
+ gint val);
+void g_atomic_int_add (volatile gint __attribute__((may_alias)) *atomic,
+ gint val);
+gboolean g_atomic_int_compare_and_exchange (volatile gint __attribute__((may_alias)) *atomic,
+ gint oldval,
+ gint newval);
+gboolean g_atomic_pointer_compare_and_exchange (volatile gpointer __attribute__((may_alias)) *atomic,
+ gpointer oldval,
+ gpointer newval);
+
+gint g_atomic_int_get (volatile gint __attribute__((may_alias)) *atomic);
+void g_atomic_int_set (volatile gint __attribute__((may_alias)) *atomic,
+ gint newval);
+gpointer g_atomic_pointer_get (volatile gpointer __attribute__((may_alias)) *atomic);
+void g_atomic_pointer_set (volatile gpointer __attribute__((may_alias)) *atomic,
+ gpointer newval);
+# 83 "/usr/include/glib-2.0/glib/gatomic.h"
+
+# 38 "/usr/include/glib-2.0/glib/gthread.h" 2
+
+
+
+
+
+
+extern GQuark g_thread_error_quark (void);
+
+
+typedef enum
+{
+ G_THREAD_ERROR_AGAIN
+} GThreadError;
+
+typedef gpointer (*GThreadFunc) (gpointer data);
+
+typedef enum
+{
+ G_THREAD_PRIORITY_LOW,
+ G_THREAD_PRIORITY_NORMAL,
+ G_THREAD_PRIORITY_HIGH,
+ G_THREAD_PRIORITY_URGENT
+} GThreadPriority;
+
+typedef struct _GThread GThread;
+struct _GThread
+{
+
+ GThreadFunc func;
+ gpointer data;
+ gboolean joinable;
+ GThreadPriority priority;
+};
+
+typedef struct _GMutex GMutex;
+typedef struct _GCond GCond;
+typedef struct _GPrivate GPrivate;
+typedef struct _GStaticPrivate GStaticPrivate;
+
+typedef struct _GThreadFunctions GThreadFunctions;
+struct _GThreadFunctions
+{
+ GMutex* (*mutex_new) (void);
+ void (*mutex_lock) (GMutex *mutex);
+ gboolean (*mutex_trylock) (GMutex *mutex);
+ void (*mutex_unlock) (GMutex *mutex);
+ void (*mutex_free) (GMutex *mutex);
+ GCond* (*cond_new) (void);
+ void (*cond_signal) (GCond *cond);
+ void (*cond_broadcast) (GCond *cond);
+ void (*cond_wait) (GCond *cond,
+ GMutex *mutex);
+ gboolean (*cond_timed_wait) (GCond *cond,
+ GMutex *mutex,
+ GTimeVal *end_time);
+ void (*cond_free) (GCond *cond);
+ GPrivate* (*private_new) (GDestroyNotify destructor);
+ gpointer (*private_get) (GPrivate *private_key);
+ void (*private_set) (GPrivate *private_key,
+ gpointer data);
+ void (*thread_create) (GThreadFunc func,
+ gpointer data,
+ gulong stack_size,
+ gboolean joinable,
+ gboolean bound,
+ GThreadPriority priority,
+ gpointer thread,
+ GError **error);
+ void (*thread_yield) (void);
+ void (*thread_join) (gpointer thread);
+ void (*thread_exit) (void);
+ void (*thread_set_priority)(gpointer thread,
+ GThreadPriority priority);
+ void (*thread_self) (gpointer thread);
+ gboolean (*thread_equal) (gpointer thread1,
+ gpointer thread2);
+};
+
+extern GThreadFunctions g_thread_functions_for_glib_use;
+extern gboolean g_thread_use_default_impl;
+extern gboolean g_threads_got_initialized;
+
+extern guint64 (*g_thread_gettime) (void);
+
+
+
+
+
+void g_thread_init (GThreadFunctions *vtable);
+# 135 "/usr/include/glib-2.0/glib/gthread.h"
+void g_thread_init_with_errorcheck_mutexes (GThreadFunctions* vtable);
+
+
+
+
+gboolean g_thread_get_initialized (void);
+# 150 "/usr/include/glib-2.0/glib/gthread.h"
+GMutex* g_static_mutex_get_mutex_impl (GMutex **mutex);
+# 221 "/usr/include/glib-2.0/glib/gthread.h"
+GThread* g_thread_create_full (GThreadFunc func,
+ gpointer data,
+ gulong stack_size,
+ gboolean joinable,
+ gboolean bound,
+ GThreadPriority priority,
+ GError **error);
+GThread* g_thread_self (void);
+void g_thread_exit (gpointer retval);
+gpointer g_thread_join (GThread *thread);
+
+void g_thread_set_priority (GThread *thread,
+ GThreadPriority priority);
+# 246 "/usr/include/glib-2.0/glib/gthread.h"
+void g_static_mutex_init (GStaticMutex *mutex);
+void g_static_mutex_free (GStaticMutex *mutex);
+
+struct _GStaticPrivate
+{
+
+ guint index;
+};
+
+void g_static_private_init (GStaticPrivate *private_key);
+gpointer g_static_private_get (GStaticPrivate *private_key);
+void g_static_private_set (GStaticPrivate *private_key,
+ gpointer data,
+ GDestroyNotify notify);
+void g_static_private_free (GStaticPrivate *private_key);
+
+typedef struct _GStaticRecMutex GStaticRecMutex;
+struct _GStaticRecMutex
+{
+
+ GStaticMutex mutex;
+ guint depth;
+ GSystemThread owner;
+};
+
+
+void g_static_rec_mutex_init (GStaticRecMutex *mutex);
+void g_static_rec_mutex_lock (GStaticRecMutex *mutex);
+gboolean g_static_rec_mutex_trylock (GStaticRecMutex *mutex);
+void g_static_rec_mutex_unlock (GStaticRecMutex *mutex);
+void g_static_rec_mutex_lock_full (GStaticRecMutex *mutex,
+ guint depth);
+guint g_static_rec_mutex_unlock_full (GStaticRecMutex *mutex);
+void g_static_rec_mutex_free (GStaticRecMutex *mutex);
+
+typedef struct _GStaticRWLock GStaticRWLock;
+struct _GStaticRWLock
+{
+
+ GStaticMutex mutex;
+ GCond *read_cond;
+ GCond *write_cond;
+ guint read_counter;
+ gboolean have_writer;
+ guint want_to_read;
+ guint want_to_write;
+};
+
+
+
+void g_static_rw_lock_init (GStaticRWLock* lock);
+void g_static_rw_lock_reader_lock (GStaticRWLock* lock);
+gboolean g_static_rw_lock_reader_trylock (GStaticRWLock* lock);
+void g_static_rw_lock_reader_unlock (GStaticRWLock* lock);
+void g_static_rw_lock_writer_lock (GStaticRWLock* lock);
+gboolean g_static_rw_lock_writer_trylock (GStaticRWLock* lock);
+void g_static_rw_lock_writer_unlock (GStaticRWLock* lock);
+void g_static_rw_lock_free (GStaticRWLock* lock);
+
+void g_thread_foreach (GFunc thread_func,
+ gpointer user_data);
+
+typedef enum
+{
+ G_ONCE_STATUS_NOTCALLED,
+ G_ONCE_STATUS_PROGRESS,
+ G_ONCE_STATUS_READY
+} GOnceStatus;
+
+typedef struct _GOnce GOnce;
+struct _GOnce
+{
+ volatile GOnceStatus status;
+ volatile gpointer retval;
+};
+
+
+
+gpointer g_once_impl (GOnce *once, GThreadFunc func, gpointer arg);
+# 336 "/usr/include/glib-2.0/glib/gthread.h"
+static __inline __attribute__ ((unused)) gboolean g_once_init_enter (volatile gsize *value_location);
+gboolean g_once_init_enter_impl (volatile gsize *value_location);
+void g_once_init_leave (volatile gsize *value_location,
+ gsize initialization_value);
+
+static __inline __attribute__ ((unused)) gboolean
+g_once_init_enter (volatile gsize *value_location)
+{
+ if ((gpointer) ((gpointer)*(value_location)) != ((void *)0))
+ return (0);
+ else
+ return g_once_init_enter_impl (value_location);
+}
+# 360 "/usr/include/glib-2.0/glib/gthread.h"
+extern void glib_dummy_decl (void);
+# 402 "/usr/include/glib-2.0/glib/gthread.h"
+
+# 35 "/usr/include/glib-2.0/glib/gasyncqueue.h" 2
+
+
+
+typedef struct _GAsyncQueue GAsyncQueue;
+
+
+
+
+GAsyncQueue* g_async_queue_new (void);
+
+GAsyncQueue* g_async_queue_new_full (GDestroyNotify item_free_func);
+
+
+
+
+
+void g_async_queue_lock (GAsyncQueue *queue);
+void g_async_queue_unlock (GAsyncQueue *queue);
+
+
+GAsyncQueue* g_async_queue_ref (GAsyncQueue *queue);
+void g_async_queue_unref (GAsyncQueue *queue);
+
+
+
+void g_async_queue_ref_unlocked (GAsyncQueue *queue);
+void g_async_queue_unref_and_unlock (GAsyncQueue *queue);
+
+
+
+void g_async_queue_push (GAsyncQueue *queue,
+ gpointer data);
+void g_async_queue_push_unlocked (GAsyncQueue *queue,
+ gpointer data);
+
+void g_async_queue_push_sorted (GAsyncQueue *queue,
+ gpointer data,
+ GCompareDataFunc func,
+ gpointer user_data);
+void g_async_queue_push_sorted_unlocked (GAsyncQueue *queue,
+ gpointer data,
+ GCompareDataFunc func,
+ gpointer user_data);
+
+
+
+
+gpointer g_async_queue_pop (GAsyncQueue *queue);
+gpointer g_async_queue_pop_unlocked (GAsyncQueue *queue);
+
+
+gpointer g_async_queue_try_pop (GAsyncQueue *queue);
+gpointer g_async_queue_try_pop_unlocked (GAsyncQueue *queue);
+
+
+
+
+
+
+gpointer g_async_queue_timed_pop (GAsyncQueue *queue,
+ GTimeVal *end_time);
+gpointer g_async_queue_timed_pop_unlocked (GAsyncQueue *queue,
+ GTimeVal *end_time);
+# 106 "/usr/include/glib-2.0/glib/gasyncqueue.h"
+gint g_async_queue_length (GAsyncQueue *queue);
+gint g_async_queue_length_unlocked (GAsyncQueue *queue);
+void g_async_queue_sort (GAsyncQueue *queue,
+ GCompareDataFunc func,
+ gpointer user_data);
+void g_async_queue_sort_unlocked (GAsyncQueue *queue,
+ GCompareDataFunc func,
+ gpointer user_data);
+
+
+GMutex* _g_async_queue_get_mutex (GAsyncQueue *queue);
+
+
+# 35 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gatomic.h" 1
+# 36 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gbacktrace.h" 1
+# 34 "/usr/include/glib-2.0/glib/gbacktrace.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 35 "/usr/include/glib-2.0/glib/gbacktrace.h" 2
+
+
+
+# 48 "/usr/include/glib-2.0/glib/gbacktrace.h"
+void g_on_error_query (const gchar *prg_name);
+void g_on_error_stack_trace (const gchar *prg_name);
+# 66 "/usr/include/glib-2.0/glib/gbacktrace.h"
+
+# 37 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gbase64.h" 1
+# 28 "/usr/include/glib-2.0/glib/gbase64.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 29 "/usr/include/glib-2.0/glib/gbase64.h" 2
+
+
+
+gsize g_base64_encode_step (const guchar *in,
+ gsize len,
+ gboolean break_lines,
+ gchar *out,
+ gint *state,
+ gint *save);
+gsize g_base64_encode_close (gboolean break_lines,
+ gchar *out,
+ gint *state,
+ gint *save);
+gchar* g_base64_encode (const guchar *data,
+ gsize len) __attribute__((__malloc__));
+gsize g_base64_decode_step (const gchar *in,
+ gsize len,
+ guchar *out,
+ gint *state,
+ guint *save);
+guchar *g_base64_decode (const gchar *text,
+ gsize *out_len) __attribute__((__malloc__));
+guchar *g_base64_decode_inplace (gchar *text,
+ gsize *out_len);
+
+
+
+# 38 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gbookmarkfile.h" 1
+# 27 "/usr/include/glib-2.0/glib/gbookmarkfile.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 28 "/usr/include/glib-2.0/glib/gbookmarkfile.h" 2
+# 1 "/usr/include/time.h" 1 3 4
+# 30 "/usr/include/time.h" 3 4
+
+
+
+
+
+
+
+
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 1 3 4
+# 39 "/usr/include/time.h" 2 3 4
+
+
+
+# 1 "/usr/include/bits/time.h" 1 3 4
+# 43 "/usr/include/time.h" 2 3 4
+# 58 "/usr/include/time.h" 3 4
+
+
+typedef __clock_t clock_t;
+
+
+
+# 131 "/usr/include/time.h" 3 4
+
+
+struct tm
+{
+ int tm_sec;
+ int tm_min;
+ int tm_hour;
+ int tm_mday;
+ int tm_mon;
+ int tm_year;
+ int tm_wday;
+ int tm_yday;
+ int tm_isdst;
+
+
+ long int tm_gmtoff;
+ __const char *tm_zone;
+
+
+
+
+};
+
+
+
+
+
+
+
+
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+
+
+struct sigevent;
+# 180 "/usr/include/time.h" 3 4
+
+
+
+extern clock_t clock (void) __attribute__ ((__nothrow__));
+
+
+extern time_t time (time_t *__timer) __attribute__ ((__nothrow__));
+
+
+extern double difftime (time_t __time1, time_t __time0)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+
+
+extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern size_t strftime (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format,
+ __const struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+
+# 217 "/usr/include/time.h" 3 4
+extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format,
+ __const struct tm *__restrict __tp,
+ __locale_t __loc) __attribute__ ((__nothrow__));
+# 230 "/usr/include/time.h" 3 4
+
+
+
+extern struct tm *gmtime (__const time_t *__timer) __attribute__ ((__nothrow__));
+
+
+
+extern struct tm *localtime (__const time_t *__timer) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern struct tm *gmtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+
+
+
+extern struct tm *localtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+
+
+
+
+
+extern char *asctime (__const struct tm *__tp) __attribute__ ((__nothrow__));
+
+
+extern char *ctime (__const time_t *__timer) __attribute__ ((__nothrow__));
+
+
+
+
+
+
+
+extern char *asctime_r (__const struct tm *__restrict __tp,
+ char *__restrict __buf) __attribute__ ((__nothrow__));
+
+
+extern char *ctime_r (__const time_t *__restrict __timer,
+ char *__restrict __buf) __attribute__ ((__nothrow__));
+
+
+
+
+extern char *__tzname[2];
+extern int __daylight;
+extern long int __timezone;
+
+
+
+
+extern char *tzname[2];
+
+
+
+extern void tzset (void) __attribute__ ((__nothrow__));
+
+
+
+extern int daylight;
+extern long int timezone;
+
+
+
+
+
+extern int stime (__const time_t *__when) __attribute__ ((__nothrow__));
+# 313 "/usr/include/time.h" 3 4
+extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__));
+
+
+extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__));
+
+
+extern int dysize (int __year) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+# 328 "/usr/include/time.h" 3 4
+extern int nanosleep (__const struct timespec *__requested_time,
+ struct timespec *__remaining);
+
+
+
+extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__));
+
+
+extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__));
+
+
+extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
+ __attribute__ ((__nothrow__));
+
+
+
+
+
+
+extern int clock_nanosleep (clockid_t __clock_id, int __flags,
+ __const struct timespec *__req,
+ struct timespec *__rem);
+
+
+extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__));
+
+
+
+
+extern int timer_create (clockid_t __clock_id,
+ struct sigevent *__restrict __evp,
+ timer_t *__restrict __timerid) __attribute__ ((__nothrow__));
+
+
+extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__));
+
+
+extern int timer_settime (timer_t __timerid, int __flags,
+ __const struct itimerspec *__restrict __value,
+ struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__));
+
+
+extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
+ __attribute__ ((__nothrow__));
+
+
+extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__));
+# 417 "/usr/include/time.h" 3 4
+
+# 29 "/usr/include/glib-2.0/glib/gbookmarkfile.h" 2
+
+
+
+
+
+
+
+typedef enum
+{
+ G_BOOKMARK_FILE_ERROR_INVALID_URI,
+ G_BOOKMARK_FILE_ERROR_INVALID_VALUE,
+ G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED,
+ G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND,
+ G_BOOKMARK_FILE_ERROR_READ,
+ G_BOOKMARK_FILE_ERROR_UNKNOWN_ENCODING,
+ G_BOOKMARK_FILE_ERROR_WRITE,
+ G_BOOKMARK_FILE_ERROR_FILE_NOT_FOUND
+} GBookmarkFileError;
+
+GQuark g_bookmark_file_error_quark (void);
+
+
+
+
+typedef struct _GBookmarkFile GBookmarkFile;
+
+GBookmarkFile *g_bookmark_file_new (void);
+void g_bookmark_file_free (GBookmarkFile *bookmark);
+
+gboolean g_bookmark_file_load_from_file (GBookmarkFile *bookmark,
+ const gchar *filename,
+ GError **error);
+gboolean g_bookmark_file_load_from_data (GBookmarkFile *bookmark,
+ const gchar *data,
+ gsize length,
+ GError **error);
+gboolean g_bookmark_file_load_from_data_dirs (GBookmarkFile *bookmark,
+ const gchar *file,
+ gchar **full_path,
+ GError **error);
+gchar * g_bookmark_file_to_data (GBookmarkFile *bookmark,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+gboolean g_bookmark_file_to_file (GBookmarkFile *bookmark,
+ const gchar *filename,
+ GError **error);
+
+void g_bookmark_file_set_title (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *title);
+gchar * g_bookmark_file_get_title (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error) __attribute__((__malloc__));
+void g_bookmark_file_set_description (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *description);
+gchar * g_bookmark_file_get_description (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error) __attribute__((__malloc__));
+void g_bookmark_file_set_mime_type (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *mime_type);
+gchar * g_bookmark_file_get_mime_type (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error) __attribute__((__malloc__));
+void g_bookmark_file_set_groups (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar **groups,
+ gsize length);
+void g_bookmark_file_add_group (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *group);
+gboolean g_bookmark_file_has_group (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *group,
+ GError **error);
+gchar ** g_bookmark_file_get_groups (GBookmarkFile *bookmark,
+ const gchar *uri,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+void g_bookmark_file_add_application (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *name,
+ const gchar *exec);
+gboolean g_bookmark_file_has_application (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *name,
+ GError **error);
+gchar ** g_bookmark_file_get_applications (GBookmarkFile *bookmark,
+ const gchar *uri,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+gboolean g_bookmark_file_set_app_info (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *name,
+ const gchar *exec,
+ gint count,
+ time_t stamp,
+ GError **error);
+gboolean g_bookmark_file_get_app_info (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *name,
+ gchar **exec,
+ guint *count,
+ time_t *stamp,
+ GError **error);
+void g_bookmark_file_set_is_private (GBookmarkFile *bookmark,
+ const gchar *uri,
+ gboolean is_private);
+gboolean g_bookmark_file_get_is_private (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error);
+void g_bookmark_file_set_icon (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *href,
+ const gchar *mime_type);
+gboolean g_bookmark_file_get_icon (GBookmarkFile *bookmark,
+ const gchar *uri,
+ gchar **href,
+ gchar **mime_type,
+ GError **error);
+void g_bookmark_file_set_added (GBookmarkFile *bookmark,
+ const gchar *uri,
+ time_t added);
+time_t g_bookmark_file_get_added (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error);
+void g_bookmark_file_set_modified (GBookmarkFile *bookmark,
+ const gchar *uri,
+ time_t modified);
+time_t g_bookmark_file_get_modified (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error);
+void g_bookmark_file_set_visited (GBookmarkFile *bookmark,
+ const gchar *uri,
+ time_t visited);
+time_t g_bookmark_file_get_visited (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error);
+gboolean g_bookmark_file_has_item (GBookmarkFile *bookmark,
+ const gchar *uri);
+gint g_bookmark_file_get_size (GBookmarkFile *bookmark);
+gchar ** g_bookmark_file_get_uris (GBookmarkFile *bookmark,
+ gsize *length) __attribute__((__malloc__));
+gboolean g_bookmark_file_remove_group (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *group,
+ GError **error);
+gboolean g_bookmark_file_remove_application (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *name,
+ GError **error);
+gboolean g_bookmark_file_remove_item (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error);
+gboolean g_bookmark_file_move_item (GBookmarkFile *bookmark,
+ const gchar *old_uri,
+ const gchar *new_uri,
+ GError **error);
+
+
+# 39 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gcache.h" 1
+# 34 "/usr/include/glib-2.0/glib/gcache.h"
+# 1 "/usr/include/glib-2.0/glib/glist.h" 1
+# 34 "/usr/include/glib-2.0/glib/glist.h"
+# 1 "/usr/include/glib-2.0/glib/gmem.h" 1
+# 34 "/usr/include/glib-2.0/glib/gmem.h"
+# 1 "/usr/include/glib-2.0/glib/gslice.h" 1
+# 31 "/usr/include/glib-2.0/glib/gslice.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 32 "/usr/include/glib-2.0/glib/gslice.h" 2
+
+
+
+
+
+gpointer g_slice_alloc (gsize block_size) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+gpointer g_slice_alloc0 (gsize block_size) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+gpointer g_slice_copy (gsize block_size,
+ gconstpointer mem_block) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+void g_slice_free1 (gsize block_size,
+ gpointer mem_block);
+void g_slice_free_chain_with_offset (gsize block_size,
+ gpointer mem_chain,
+ gsize next_offset);
+# 76 "/usr/include/glib-2.0/glib/gslice.h"
+typedef enum {
+ G_SLICE_CONFIG_ALWAYS_MALLOC = 1,
+ G_SLICE_CONFIG_BYPASS_MAGAZINES,
+ G_SLICE_CONFIG_WORKING_SET_MSECS,
+ G_SLICE_CONFIG_COLOR_INCREMENT,
+ G_SLICE_CONFIG_CHUNK_SIZES,
+ G_SLICE_CONFIG_CONTENTION_COUNTER
+} GSliceConfig;
+void g_slice_set_config (GSliceConfig ckey, gint64 value);
+gint64 g_slice_get_config (GSliceConfig ckey);
+gint64* g_slice_get_config_state (GSliceConfig ckey, gint64 address, guint *n_values);
+
+
+# 35 "/usr/include/glib-2.0/glib/gmem.h" 2
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 36 "/usr/include/glib-2.0/glib/gmem.h" 2
+
+
+
+typedef struct _GMemVTable GMemVTable;
+# 51 "/usr/include/glib-2.0/glib/gmem.h"
+gpointer g_malloc (gsize n_bytes) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+gpointer g_malloc0 (gsize n_bytes) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+gpointer g_realloc (gpointer mem,
+ gsize n_bytes) __attribute__((warn_unused_result));
+void g_free (gpointer mem);
+gpointer g_try_malloc (gsize n_bytes) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+gpointer g_try_malloc0 (gsize n_bytes) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+gpointer g_try_realloc (gpointer mem,
+ gsize n_bytes) __attribute__((warn_unused_result));
+# 83 "/usr/include/glib-2.0/glib/gmem.h"
+struct _GMemVTable
+{
+ gpointer (*malloc) (gsize n_bytes);
+ gpointer (*realloc) (gpointer mem,
+ gsize n_bytes);
+ void (*free) (gpointer mem);
+
+ gpointer (*calloc) (gsize n_blocks,
+ gsize n_block_bytes);
+ gpointer (*try_malloc) (gsize n_bytes);
+ gpointer (*try_realloc) (gpointer mem,
+ gsize n_bytes);
+};
+void g_mem_set_vtable (GMemVTable *vtable);
+gboolean g_mem_is_system_malloc (void);
+
+extern gboolean g_mem_gc_friendly;
+
+
+
+extern GMemVTable *glib_mem_profiler_table;
+void g_mem_profile (void);
+
+
+
+
+typedef struct _GAllocator GAllocator;
+typedef struct _GMemChunk GMemChunk;
+# 128 "/usr/include/glib-2.0/glib/gmem.h"
+GMemChunk* g_mem_chunk_new (const gchar *name,
+ gint atom_size,
+ gsize area_size,
+ gint type);
+void g_mem_chunk_destroy (GMemChunk *mem_chunk);
+gpointer g_mem_chunk_alloc (GMemChunk *mem_chunk);
+gpointer g_mem_chunk_alloc0 (GMemChunk *mem_chunk);
+void g_mem_chunk_free (GMemChunk *mem_chunk,
+ gpointer mem);
+void g_mem_chunk_clean (GMemChunk *mem_chunk);
+void g_mem_chunk_reset (GMemChunk *mem_chunk);
+void g_mem_chunk_print (GMemChunk *mem_chunk);
+void g_mem_chunk_info (void);
+void g_blow_chunks (void);
+GAllocator*g_allocator_new (const gchar *name,
+ guint n_preallocs);
+void g_allocator_free (GAllocator *allocator);
+
+
+
+
+
+
+# 35 "/usr/include/glib-2.0/glib/glist.h" 2
+
+
+
+typedef struct _GList GList;
+
+struct _GList
+{
+ gpointer data;
+ GList *next;
+ GList *prev;
+};
+
+
+
+GList* g_list_alloc (void) __attribute__((warn_unused_result));
+void g_list_free (GList *list);
+void g_list_free_1 (GList *list);
+
+GList* g_list_append (GList *list,
+ gpointer data) __attribute__((warn_unused_result));
+GList* g_list_prepend (GList *list,
+ gpointer data) __attribute__((warn_unused_result));
+GList* g_list_insert (GList *list,
+ gpointer data,
+ gint position) __attribute__((warn_unused_result));
+GList* g_list_insert_sorted (GList *list,
+ gpointer data,
+ GCompareFunc func) __attribute__((warn_unused_result));
+GList* g_list_insert_sorted_with_data (GList *list,
+ gpointer data,
+ GCompareDataFunc func,
+ gpointer user_data) __attribute__((warn_unused_result));
+GList* g_list_insert_before (GList *list,
+ GList *sibling,
+ gpointer data) __attribute__((warn_unused_result));
+GList* g_list_concat (GList *list1,
+ GList *list2) __attribute__((warn_unused_result));
+GList* g_list_remove (GList *list,
+ gconstpointer data) __attribute__((warn_unused_result));
+GList* g_list_remove_all (GList *list,
+ gconstpointer data) __attribute__((warn_unused_result));
+GList* g_list_remove_link (GList *list,
+ GList *llink) __attribute__((warn_unused_result));
+GList* g_list_delete_link (GList *list,
+ GList *link_) __attribute__((warn_unused_result));
+GList* g_list_reverse (GList *list) __attribute__((warn_unused_result));
+GList* g_list_copy (GList *list) __attribute__((warn_unused_result));
+GList* g_list_nth (GList *list,
+ guint n);
+GList* g_list_nth_prev (GList *list,
+ guint n);
+GList* g_list_find (GList *list,
+ gconstpointer data);
+GList* g_list_find_custom (GList *list,
+ gconstpointer data,
+ GCompareFunc func);
+gint g_list_position (GList *list,
+ GList *llink);
+gint g_list_index (GList *list,
+ gconstpointer data);
+GList* g_list_last (GList *list);
+GList* g_list_first (GList *list);
+guint g_list_length (GList *list);
+void g_list_foreach (GList *list,
+ GFunc func,
+ gpointer user_data);
+GList* g_list_sort (GList *list,
+ GCompareFunc compare_func) __attribute__((warn_unused_result));
+GList* g_list_sort_with_data (GList *list,
+ GCompareDataFunc compare_func,
+ gpointer user_data) __attribute__((warn_unused_result));
+gpointer g_list_nth_data (GList *list,
+ guint n);
+
+
+
+
+
+
+void g_list_push_allocator (gpointer allocator);
+void g_list_pop_allocator (void);
+
+
+
+# 35 "/usr/include/glib-2.0/glib/gcache.h" 2
+
+
+
+typedef struct _GCache GCache;
+
+typedef gpointer (*GCacheNewFunc) (gpointer key);
+typedef gpointer (*GCacheDupFunc) (gpointer value);
+typedef void (*GCacheDestroyFunc) (gpointer value);
+
+
+
+GCache* g_cache_new (GCacheNewFunc value_new_func,
+ GCacheDestroyFunc value_destroy_func,
+ GCacheDupFunc key_dup_func,
+ GCacheDestroyFunc key_destroy_func,
+ GHashFunc hash_key_func,
+ GHashFunc hash_value_func,
+ GEqualFunc key_equal_func);
+void g_cache_destroy (GCache *cache);
+gpointer g_cache_insert (GCache *cache,
+ gpointer key);
+void g_cache_remove (GCache *cache,
+ gconstpointer value);
+void g_cache_key_foreach (GCache *cache,
+ GHFunc func,
+ gpointer user_data);
+
+void g_cache_value_foreach (GCache *cache,
+ GHFunc func,
+ gpointer user_data);
+
+
+
+# 40 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gchecksum.h" 1
+# 28 "/usr/include/glib-2.0/glib/gchecksum.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 29 "/usr/include/glib-2.0/glib/gchecksum.h" 2
+
+
+# 46 "/usr/include/glib-2.0/glib/gchecksum.h"
+typedef enum {
+ G_CHECKSUM_MD5,
+ G_CHECKSUM_SHA1,
+ G_CHECKSUM_SHA256
+} GChecksumType;
+# 61 "/usr/include/glib-2.0/glib/gchecksum.h"
+typedef struct _GChecksum GChecksum;
+
+gssize g_checksum_type_get_length (GChecksumType checksum_type);
+
+GChecksum * g_checksum_new (GChecksumType checksum_type);
+void g_checksum_reset (GChecksum *checksum);
+GChecksum * g_checksum_copy (const GChecksum *checksum);
+void g_checksum_free (GChecksum *checksum);
+void g_checksum_update (GChecksum *checksum,
+ const guchar *data,
+ gssize length);
+const gchar *g_checksum_get_string (GChecksum *checksum);
+void g_checksum_get_digest (GChecksum *checksum,
+ guint8 *buffer,
+ gsize *digest_len);
+
+gchar *g_compute_checksum_for_data (GChecksumType checksum_type,
+ const guchar *data,
+ gsize length);
+gchar *g_compute_checksum_for_string (GChecksumType checksum_type,
+ const gchar *str,
+ gssize length);
+
+
+# 41 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gcompletion.h" 1
+# 34 "/usr/include/glib-2.0/glib/gcompletion.h"
+# 1 "/usr/include/glib-2.0/glib/glist.h" 1
+# 35 "/usr/include/glib-2.0/glib/gcompletion.h" 2
+
+
+
+typedef struct _GCompletion GCompletion;
+
+typedef gchar* (*GCompletionFunc) (gpointer);
+
+
+
+
+typedef gint (*GCompletionStrncmpFunc) (const gchar *s1,
+ const gchar *s2,
+ gsize n);
+
+struct _GCompletion
+{
+ GList* items;
+ GCompletionFunc func;
+
+ gchar* prefix;
+ GList* cache;
+ GCompletionStrncmpFunc strncmp_func;
+};
+
+GCompletion* g_completion_new (GCompletionFunc func);
+void g_completion_add_items (GCompletion* cmp,
+ GList* items);
+void g_completion_remove_items (GCompletion* cmp,
+ GList* items);
+void g_completion_clear_items (GCompletion* cmp);
+GList* g_completion_complete (GCompletion* cmp,
+ const gchar* prefix,
+ gchar** new_prefix);
+GList* g_completion_complete_utf8 (GCompletion *cmp,
+ const gchar* prefix,
+ gchar** new_prefix);
+void g_completion_set_compare (GCompletion *cmp,
+ GCompletionStrncmpFunc strncmp_func);
+void g_completion_free (GCompletion* cmp);
+
+
+# 42 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gconvert.h" 1
+# 34 "/usr/include/glib-2.0/glib/gconvert.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 35 "/usr/include/glib-2.0/glib/gconvert.h" 2
+
+
+
+typedef enum
+{
+ G_CONVERT_ERROR_NO_CONVERSION,
+ G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
+ G_CONVERT_ERROR_FAILED,
+ G_CONVERT_ERROR_PARTIAL_INPUT,
+ G_CONVERT_ERROR_BAD_URI,
+ G_CONVERT_ERROR_NOT_ABSOLUTE_PATH
+} GConvertError;
+
+
+GQuark g_convert_error_quark (void);
+
+
+
+typedef struct _GIConv *GIConv;
+
+GIConv g_iconv_open (const gchar *to_codeset,
+ const gchar *from_codeset);
+gsize g_iconv (GIConv converter,
+ gchar **inbuf,
+ gsize *inbytes_left,
+ gchar **outbuf,
+ gsize *outbytes_left);
+gint g_iconv_close (GIConv converter);
+
+
+gchar* g_convert (const gchar *str,
+ gssize len,
+ const gchar *to_codeset,
+ const gchar *from_codeset,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_convert_with_iconv (const gchar *str,
+ gssize len,
+ GIConv converter,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_convert_with_fallback (const gchar *str,
+ gssize len,
+ const gchar *to_codeset,
+ const gchar *from_codeset,
+ gchar *fallback,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+
+
+
+
+gchar* g_locale_to_utf8 (const gchar *opsysstring,
+ gssize len,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_locale_from_utf8 (const gchar *utf8string,
+ gssize len,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+# 111 "/usr/include/glib-2.0/glib/gconvert.h"
+gchar* g_filename_to_utf8 (const gchar *opsysstring,
+ gssize len,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_filename_from_utf8 (const gchar *utf8string,
+ gssize len,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+
+gchar *g_filename_from_uri (const gchar *uri,
+ gchar **hostname,
+ GError **error) __attribute__((__malloc__));
+
+gchar *g_filename_to_uri (const gchar *filename,
+ const gchar *hostname,
+ GError **error) __attribute__((__malloc__));
+gchar *g_filename_display_name (const gchar *filename) __attribute__((__malloc__));
+gboolean g_get_filename_charsets (const gchar ***charsets);
+
+gchar *g_filename_display_basename (const gchar *filename) __attribute__((__malloc__));
+
+gchar **g_uri_list_extract_uris (const gchar *uri_list) __attribute__((__malloc__));
+
+
+# 43 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gdataset.h" 1
+# 34 "/usr/include/glib-2.0/glib/gdataset.h"
+# 1 "/usr/include/glib-2.0/glib/gquark.h" 1
+# 35 "/usr/include/glib-2.0/glib/gdataset.h" 2
+
+
+
+typedef struct _GData GData;
+
+typedef void (*GDataForeachFunc) (GQuark key_id,
+ gpointer data,
+ gpointer user_data);
+
+
+
+void g_datalist_init (GData **datalist);
+void g_datalist_clear (GData **datalist);
+gpointer g_datalist_id_get_data (GData **datalist,
+ GQuark key_id);
+void g_datalist_id_set_data_full (GData **datalist,
+ GQuark key_id,
+ gpointer data,
+ GDestroyNotify destroy_func);
+gpointer g_datalist_id_remove_no_notify (GData **datalist,
+ GQuark key_id);
+void g_datalist_foreach (GData **datalist,
+ GDataForeachFunc func,
+ gpointer user_data);
+# 69 "/usr/include/glib-2.0/glib/gdataset.h"
+void g_datalist_set_flags (GData **datalist,
+ guint flags);
+void g_datalist_unset_flags (GData **datalist,
+ guint flags);
+guint g_datalist_get_flags (GData **datalist);
+# 93 "/usr/include/glib-2.0/glib/gdataset.h"
+void g_dataset_destroy (gconstpointer dataset_location);
+gpointer g_dataset_id_get_data (gconstpointer dataset_location,
+ GQuark key_id);
+void g_dataset_id_set_data_full (gconstpointer dataset_location,
+ GQuark key_id,
+ gpointer data,
+ GDestroyNotify destroy_func);
+gpointer g_dataset_id_remove_no_notify (gconstpointer dataset_location,
+ GQuark key_id);
+void g_dataset_foreach (gconstpointer dataset_location,
+ GDataForeachFunc func,
+ gpointer user_data);
+# 120 "/usr/include/glib-2.0/glib/gdataset.h"
+
+# 44 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gdate.h" 1
+# 36 "/usr/include/glib-2.0/glib/gdate.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 37 "/usr/include/glib-2.0/glib/gdate.h" 2
+# 1 "/usr/include/glib-2.0/glib/gquark.h" 1
+# 38 "/usr/include/glib-2.0/glib/gdate.h" 2
+
+
+# 50 "/usr/include/glib-2.0/glib/gdate.h"
+typedef gint32 GTime;
+typedef guint16 GDateYear;
+typedef guint8 GDateDay;
+typedef struct _GDate GDate;
+
+
+typedef enum
+{
+ G_DATE_DAY = 0,
+ G_DATE_MONTH = 1,
+ G_DATE_YEAR = 2
+} GDateDMY;
+
+
+typedef enum
+{
+ G_DATE_BAD_WEEKDAY = 0,
+ G_DATE_MONDAY = 1,
+ G_DATE_TUESDAY = 2,
+ G_DATE_WEDNESDAY = 3,
+ G_DATE_THURSDAY = 4,
+ G_DATE_FRIDAY = 5,
+ G_DATE_SATURDAY = 6,
+ G_DATE_SUNDAY = 7
+} GDateWeekday;
+typedef enum
+{
+ G_DATE_BAD_MONTH = 0,
+ G_DATE_JANUARY = 1,
+ G_DATE_FEBRUARY = 2,
+ G_DATE_MARCH = 3,
+ G_DATE_APRIL = 4,
+ G_DATE_MAY = 5,
+ G_DATE_JUNE = 6,
+ G_DATE_JULY = 7,
+ G_DATE_AUGUST = 8,
+ G_DATE_SEPTEMBER = 9,
+ G_DATE_OCTOBER = 10,
+ G_DATE_NOVEMBER = 11,
+ G_DATE_DECEMBER = 12
+} GDateMonth;
+# 101 "/usr/include/glib-2.0/glib/gdate.h"
+struct _GDate
+{
+ guint julian_days : 32;
+
+
+
+
+
+ guint julian : 1;
+ guint dmy : 1;
+
+
+ guint day : 6;
+ guint month : 4;
+ guint year : 16;
+};
+
+
+
+
+
+GDate* g_date_new (void);
+GDate* g_date_new_dmy (GDateDay day,
+ GDateMonth month,
+ GDateYear year);
+GDate* g_date_new_julian (guint32 julian_day);
+void g_date_free (GDate *date);
+
+
+
+
+
+
+gboolean g_date_valid (const GDate *date);
+gboolean g_date_valid_day (GDateDay day) __attribute__((__const__));
+gboolean g_date_valid_month (GDateMonth month) __attribute__((__const__));
+gboolean g_date_valid_year (GDateYear year) __attribute__((__const__));
+gboolean g_date_valid_weekday (GDateWeekday weekday) __attribute__((__const__));
+gboolean g_date_valid_julian (guint32 julian_date) __attribute__((__const__));
+gboolean g_date_valid_dmy (GDateDay day,
+ GDateMonth month,
+ GDateYear year) __attribute__((__const__));
+
+GDateWeekday g_date_get_weekday (const GDate *date);
+GDateMonth g_date_get_month (const GDate *date);
+GDateYear g_date_get_year (const GDate *date);
+GDateDay g_date_get_day (const GDate *date);
+guint32 g_date_get_julian (const GDate *date);
+guint g_date_get_day_of_year (const GDate *date);
+
+
+
+
+
+
+guint g_date_get_monday_week_of_year (const GDate *date);
+guint g_date_get_sunday_week_of_year (const GDate *date);
+guint g_date_get_iso8601_week_of_year (const GDate *date);
+
+
+
+
+
+void g_date_clear (GDate *date,
+ guint n_dates);
+
+
+
+
+
+void g_date_set_parse (GDate *date,
+ const gchar *str);
+void g_date_set_time_t (GDate *date,
+ time_t timet);
+void g_date_set_time_val (GDate *date,
+ GTimeVal *timeval);
+
+void g_date_set_time (GDate *date,
+ GTime time_);
+
+void g_date_set_month (GDate *date,
+ GDateMonth month);
+void g_date_set_day (GDate *date,
+ GDateDay day);
+void g_date_set_year (GDate *date,
+ GDateYear year);
+void g_date_set_dmy (GDate *date,
+ GDateDay day,
+ GDateMonth month,
+ GDateYear y);
+void g_date_set_julian (GDate *date,
+ guint32 julian_date);
+gboolean g_date_is_first_of_month (const GDate *date);
+gboolean g_date_is_last_of_month (const GDate *date);
+
+
+void g_date_add_days (GDate *date,
+ guint n_days);
+void g_date_subtract_days (GDate *date,
+ guint n_days);
+
+
+void g_date_add_months (GDate *date,
+ guint n_months);
+void g_date_subtract_months (GDate *date,
+ guint n_months);
+
+
+void g_date_add_years (GDate *date,
+ guint n_years);
+void g_date_subtract_years (GDate *date,
+ guint n_years);
+gboolean g_date_is_leap_year (GDateYear year) __attribute__((__const__));
+guint8 g_date_get_days_in_month (GDateMonth month,
+ GDateYear year) __attribute__((__const__));
+guint8 g_date_get_monday_weeks_in_year (GDateYear year) __attribute__((__const__));
+guint8 g_date_get_sunday_weeks_in_year (GDateYear year) __attribute__((__const__));
+
+
+
+gint g_date_days_between (const GDate *date1,
+ const GDate *date2);
+
+
+gint g_date_compare (const GDate *lhs,
+ const GDate *rhs);
+void g_date_to_struct_tm (const GDate *date,
+ struct tm *tm);
+
+void g_date_clamp (GDate *date,
+ const GDate *min_date,
+ const GDate *max_date);
+
+
+void g_date_order (GDate *date1, GDate *date2);
+
+
+
+
+gsize g_date_strftime (gchar *s,
+ gsize slen,
+ const gchar *format,
+ const GDate *date);
+# 261 "/usr/include/glib-2.0/glib/gdate.h"
+
+# 45 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gdir.h" 1
+# 31 "/usr/include/glib-2.0/glib/gdir.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 32 "/usr/include/glib-2.0/glib/gdir.h" 2
+
+
+
+typedef struct _GDir GDir;
+
+
+
+
+
+
+
+GDir * g_dir_open (const gchar *path,
+ guint flags,
+ GError **error);
+const gchar *g_dir_read_name (GDir *dir);
+void g_dir_rewind (GDir *dir);
+void g_dir_close (GDir *dir);
+
+
+# 46 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 47 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gfileutils.h" 1
+# 28 "/usr/include/glib-2.0/glib/gfileutils.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 29 "/usr/include/glib-2.0/glib/gfileutils.h" 2
+
+
+
+
+
+typedef enum
+{
+ G_FILE_ERROR_EXIST,
+ G_FILE_ERROR_ISDIR,
+ G_FILE_ERROR_ACCES,
+ G_FILE_ERROR_NAMETOOLONG,
+ G_FILE_ERROR_NOENT,
+ G_FILE_ERROR_NOTDIR,
+ G_FILE_ERROR_NXIO,
+ G_FILE_ERROR_NODEV,
+ G_FILE_ERROR_ROFS,
+ G_FILE_ERROR_TXTBSY,
+ G_FILE_ERROR_FAULT,
+ G_FILE_ERROR_LOOP,
+ G_FILE_ERROR_NOSPC,
+ G_FILE_ERROR_NOMEM,
+ G_FILE_ERROR_MFILE,
+ G_FILE_ERROR_NFILE,
+ G_FILE_ERROR_BADF,
+ G_FILE_ERROR_INVAL,
+ G_FILE_ERROR_PIPE,
+ G_FILE_ERROR_AGAIN,
+ G_FILE_ERROR_INTR,
+ G_FILE_ERROR_IO,
+ G_FILE_ERROR_PERM,
+ G_FILE_ERROR_NOSYS,
+ G_FILE_ERROR_FAILED
+} GFileError;
+
+
+
+
+
+typedef enum
+{
+ G_FILE_TEST_IS_REGULAR = 1 << 0,
+ G_FILE_TEST_IS_SYMLINK = 1 << 1,
+ G_FILE_TEST_IS_DIR = 1 << 2,
+ G_FILE_TEST_IS_EXECUTABLE = 1 << 3,
+ G_FILE_TEST_EXISTS = 1 << 4
+} GFileTest;
+
+GQuark g_file_error_quark (void);
+
+GFileError g_file_error_from_errno (gint err_no);
+# 87 "/usr/include/glib-2.0/glib/gfileutils.h"
+gboolean g_file_test (const gchar *filename,
+ GFileTest test);
+gboolean g_file_get_contents (const gchar *filename,
+ gchar **contents,
+ gsize *length,
+ GError **error);
+gboolean g_file_set_contents (const gchar *filename,
+ const gchar *contents,
+ gssize length,
+ GError **error);
+gchar *g_file_read_link (const gchar *filename,
+ GError **error);
+
+
+gint g_mkstemp (gchar *tmpl);
+
+
+gint g_file_open_tmp (const gchar *tmpl,
+ gchar **name_used,
+ GError **error);
+
+char *g_format_size_for_display (goffset size);
+
+gchar *g_build_path (const gchar *separator,
+ const gchar *first_element,
+ ...) __attribute__((__malloc__)) __attribute__((__sentinel__));
+gchar *g_build_pathv (const gchar *separator,
+ gchar **args) __attribute__((__malloc__));
+
+gchar *g_build_filename (const gchar *first_element,
+ ...) __attribute__((__malloc__)) __attribute__((__sentinel__));
+gchar *g_build_filenamev (gchar **args) __attribute__((__malloc__));
+
+int g_mkdir_with_parents (const gchar *pathname,
+ int mode);
+
+
+# 48 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/ghash.h" 1
+# 34 "/usr/include/glib-2.0/glib/ghash.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 35 "/usr/include/glib-2.0/glib/ghash.h" 2
+# 1 "/usr/include/glib-2.0/glib/glist.h" 1
+# 36 "/usr/include/glib-2.0/glib/ghash.h" 2
+
+
+
+typedef struct _GHashTable GHashTable;
+
+typedef gboolean (*GHRFunc) (gpointer key,
+ gpointer value,
+ gpointer user_data);
+
+typedef struct _GHashTableIter GHashTableIter;
+
+struct _GHashTableIter
+{
+
+ gpointer dummy1;
+ gpointer dummy2;
+ gpointer dummy3;
+ int dummy4;
+ gboolean dummy5;
+ gpointer dummy6;
+};
+
+
+
+GHashTable* g_hash_table_new (GHashFunc hash_func,
+ GEqualFunc key_equal_func);
+GHashTable* g_hash_table_new_full (GHashFunc hash_func,
+ GEqualFunc key_equal_func,
+ GDestroyNotify key_destroy_func,
+ GDestroyNotify value_destroy_func);
+void g_hash_table_destroy (GHashTable *hash_table);
+void g_hash_table_insert (GHashTable *hash_table,
+ gpointer key,
+ gpointer value);
+void g_hash_table_replace (GHashTable *hash_table,
+ gpointer key,
+ gpointer value);
+gboolean g_hash_table_remove (GHashTable *hash_table,
+ gconstpointer key);
+void g_hash_table_remove_all (GHashTable *hash_table);
+gboolean g_hash_table_steal (GHashTable *hash_table,
+ gconstpointer key);
+void g_hash_table_steal_all (GHashTable *hash_table);
+gpointer g_hash_table_lookup (GHashTable *hash_table,
+ gconstpointer key);
+gboolean g_hash_table_lookup_extended (GHashTable *hash_table,
+ gconstpointer lookup_key,
+ gpointer *orig_key,
+ gpointer *value);
+void g_hash_table_foreach (GHashTable *hash_table,
+ GHFunc func,
+ gpointer user_data);
+gpointer g_hash_table_find (GHashTable *hash_table,
+ GHRFunc predicate,
+ gpointer user_data);
+guint g_hash_table_foreach_remove (GHashTable *hash_table,
+ GHRFunc func,
+ gpointer user_data);
+guint g_hash_table_foreach_steal (GHashTable *hash_table,
+ GHRFunc func,
+ gpointer user_data);
+guint g_hash_table_size (GHashTable *hash_table);
+GList * g_hash_table_get_keys (GHashTable *hash_table);
+GList * g_hash_table_get_values (GHashTable *hash_table);
+
+void g_hash_table_iter_init (GHashTableIter *iter,
+ GHashTable *hash_table);
+gboolean g_hash_table_iter_next (GHashTableIter *iter,
+ gpointer *key,
+ gpointer *value);
+GHashTable* g_hash_table_iter_get_hash_table (GHashTableIter *iter);
+void g_hash_table_iter_remove (GHashTableIter *iter);
+void g_hash_table_iter_steal (GHashTableIter *iter);
+
+
+GHashTable* g_hash_table_ref (GHashTable *hash_table);
+void g_hash_table_unref (GHashTable *hash_table);
+# 125 "/usr/include/glib-2.0/glib/ghash.h"
+gboolean g_str_equal (gconstpointer v1,
+ gconstpointer v2);
+guint g_str_hash (gconstpointer v);
+
+gboolean g_int_equal (gconstpointer v1,
+ gconstpointer v2);
+guint g_int_hash (gconstpointer v);
+
+
+
+
+
+
+
+guint g_direct_hash (gconstpointer v) __attribute__((__const__));
+gboolean g_direct_equal (gconstpointer v1,
+ gconstpointer v2) __attribute__((__const__));
+
+
+# 49 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/ghook.h" 1
+# 34 "/usr/include/glib-2.0/glib/ghook.h"
+# 1 "/usr/include/glib-2.0/glib/gmem.h" 1
+# 35 "/usr/include/glib-2.0/glib/ghook.h" 2
+
+
+
+
+
+typedef struct _GHook GHook;
+typedef struct _GHookList GHookList;
+
+typedef gint (*GHookCompareFunc) (GHook *new_hook,
+ GHook *sibling);
+typedef gboolean (*GHookFindFunc) (GHook *hook,
+ gpointer data);
+typedef void (*GHookMarshaller) (GHook *hook,
+ gpointer marshal_data);
+typedef gboolean (*GHookCheckMarshaller) (GHook *hook,
+ gpointer marshal_data);
+typedef void (*GHookFunc) (gpointer data);
+typedef gboolean (*GHookCheckFunc) (gpointer data);
+typedef void (*GHookFinalizeFunc) (GHookList *hook_list,
+ GHook *hook);
+typedef enum
+{
+ G_HOOK_FLAG_ACTIVE = 1 << 0,
+ G_HOOK_FLAG_IN_CALL = 1 << 1,
+ G_HOOK_FLAG_MASK = 0x0f
+} GHookFlagMask;
+
+
+
+
+struct _GHookList
+{
+ gulong seq_id;
+ guint hook_size : 16;
+ guint is_setup : 1;
+ GHook *hooks;
+ gpointer dummy3;
+ GHookFinalizeFunc finalize_hook;
+ gpointer dummy[2];
+};
+struct _GHook
+{
+ gpointer data;
+ GHook *next;
+ GHook *prev;
+ guint ref_count;
+ gulong hook_id;
+ guint flags;
+ gpointer func;
+ GDestroyNotify destroy;
+};
+# 106 "/usr/include/glib-2.0/glib/ghook.h"
+void g_hook_list_init (GHookList *hook_list,
+ guint hook_size);
+void g_hook_list_clear (GHookList *hook_list);
+GHook* g_hook_alloc (GHookList *hook_list);
+void g_hook_free (GHookList *hook_list,
+ GHook *hook);
+GHook * g_hook_ref (GHookList *hook_list,
+ GHook *hook);
+void g_hook_unref (GHookList *hook_list,
+ GHook *hook);
+gboolean g_hook_destroy (GHookList *hook_list,
+ gulong hook_id);
+void g_hook_destroy_link (GHookList *hook_list,
+ GHook *hook);
+void g_hook_prepend (GHookList *hook_list,
+ GHook *hook);
+void g_hook_insert_before (GHookList *hook_list,
+ GHook *sibling,
+ GHook *hook);
+void g_hook_insert_sorted (GHookList *hook_list,
+ GHook *hook,
+ GHookCompareFunc func);
+GHook* g_hook_get (GHookList *hook_list,
+ gulong hook_id);
+GHook* g_hook_find (GHookList *hook_list,
+ gboolean need_valids,
+ GHookFindFunc func,
+ gpointer data);
+GHook* g_hook_find_data (GHookList *hook_list,
+ gboolean need_valids,
+ gpointer data);
+GHook* g_hook_find_func (GHookList *hook_list,
+ gboolean need_valids,
+ gpointer func);
+GHook* g_hook_find_func_data (GHookList *hook_list,
+ gboolean need_valids,
+ gpointer func,
+ gpointer data);
+
+GHook* g_hook_first_valid (GHookList *hook_list,
+ gboolean may_be_in_call);
+
+
+
+GHook* g_hook_next_valid (GHookList *hook_list,
+ GHook *hook,
+ gboolean may_be_in_call);
+
+gint g_hook_compare_ids (GHook *new_hook,
+ GHook *sibling);
+
+
+
+
+
+void g_hook_list_invoke (GHookList *hook_list,
+ gboolean may_recurse);
+
+
+
+void g_hook_list_invoke_check (GHookList *hook_list,
+ gboolean may_recurse);
+
+
+void g_hook_list_marshal (GHookList *hook_list,
+ gboolean may_recurse,
+ GHookMarshaller marshaller,
+ gpointer marshal_data);
+void g_hook_list_marshal_check (GHookList *hook_list,
+ gboolean may_recurse,
+ GHookCheckMarshaller marshaller,
+ gpointer marshal_data);
+
+
+# 50 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/giochannel.h" 1
+# 34 "/usr/include/glib-2.0/glib/giochannel.h"
+# 1 "/usr/include/glib-2.0/glib/gconvert.h" 1
+# 35 "/usr/include/glib-2.0/glib/giochannel.h" 2
+# 1 "/usr/include/glib-2.0/glib/gmain.h" 1
+# 27 "/usr/include/glib-2.0/glib/gmain.h"
+# 1 "/usr/include/glib-2.0/glib/gpoll.h" 1
+# 27 "/usr/include/glib-2.0/glib/gpoll.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 28 "/usr/include/glib-2.0/glib/gpoll.h" 2
+
+
+# 61 "/usr/include/glib-2.0/glib/gpoll.h"
+typedef struct _GPollFD GPollFD;
+typedef gint (*GPollFunc) (GPollFD *ufds,
+ guint nfsd,
+ gint timeout_);
+
+struct _GPollFD
+{
+
+
+
+ gint fd;
+
+ gushort events;
+ gushort revents;
+};
+# 87 "/usr/include/glib-2.0/glib/gpoll.h"
+gint g_poll (GPollFD *fds,
+ guint nfds,
+ gint timeout);
+
+
+# 28 "/usr/include/glib-2.0/glib/gmain.h" 2
+# 1 "/usr/include/glib-2.0/glib/gslist.h" 1
+# 34 "/usr/include/glib-2.0/glib/gslist.h"
+# 1 "/usr/include/glib-2.0/glib/gmem.h" 1
+# 35 "/usr/include/glib-2.0/glib/gslist.h" 2
+
+
+
+typedef struct _GSList GSList;
+
+struct _GSList
+{
+ gpointer data;
+ GSList *next;
+};
+
+
+
+GSList* g_slist_alloc (void) __attribute__((warn_unused_result));
+void g_slist_free (GSList *list);
+void g_slist_free_1 (GSList *list);
+
+GSList* g_slist_append (GSList *list,
+ gpointer data) __attribute__((warn_unused_result));
+GSList* g_slist_prepend (GSList *list,
+ gpointer data) __attribute__((warn_unused_result));
+GSList* g_slist_insert (GSList *list,
+ gpointer data,
+ gint position) __attribute__((warn_unused_result));
+GSList* g_slist_insert_sorted (GSList *list,
+ gpointer data,
+ GCompareFunc func) __attribute__((warn_unused_result));
+GSList* g_slist_insert_sorted_with_data (GSList *list,
+ gpointer data,
+ GCompareDataFunc func,
+ gpointer user_data) __attribute__((warn_unused_result));
+GSList* g_slist_insert_before (GSList *slist,
+ GSList *sibling,
+ gpointer data) __attribute__((warn_unused_result));
+GSList* g_slist_concat (GSList *list1,
+ GSList *list2) __attribute__((warn_unused_result));
+GSList* g_slist_remove (GSList *list,
+ gconstpointer data) __attribute__((warn_unused_result));
+GSList* g_slist_remove_all (GSList *list,
+ gconstpointer data) __attribute__((warn_unused_result));
+GSList* g_slist_remove_link (GSList *list,
+ GSList *link_) __attribute__((warn_unused_result));
+GSList* g_slist_delete_link (GSList *list,
+ GSList *link_) __attribute__((warn_unused_result));
+GSList* g_slist_reverse (GSList *list) __attribute__((warn_unused_result));
+GSList* g_slist_copy (GSList *list) __attribute__((warn_unused_result));
+GSList* g_slist_nth (GSList *list,
+ guint n);
+GSList* g_slist_find (GSList *list,
+ gconstpointer data);
+GSList* g_slist_find_custom (GSList *list,
+ gconstpointer data,
+ GCompareFunc func);
+gint g_slist_position (GSList *list,
+ GSList *llink);
+gint g_slist_index (GSList *list,
+ gconstpointer data);
+GSList* g_slist_last (GSList *list);
+guint g_slist_length (GSList *list);
+void g_slist_foreach (GSList *list,
+ GFunc func,
+ gpointer user_data);
+GSList* g_slist_sort (GSList *list,
+ GCompareFunc compare_func) __attribute__((warn_unused_result));
+GSList* g_slist_sort_with_data (GSList *list,
+ GCompareDataFunc compare_func,
+ gpointer user_data) __attribute__((warn_unused_result));
+gpointer g_slist_nth_data (GSList *list,
+ guint n);
+
+
+
+
+void g_slist_push_allocator (gpointer dummy);
+void g_slist_pop_allocator (void);
+
+
+
+# 29 "/usr/include/glib-2.0/glib/gmain.h" 2
+# 1 "/usr/include/glib-2.0/glib/gthread.h" 1
+# 30 "/usr/include/glib-2.0/glib/gmain.h" 2
+
+
+
+typedef struct _GMainContext GMainContext;
+typedef struct _GMainLoop GMainLoop;
+typedef struct _GSource GSource;
+typedef struct _GSourceCallbackFuncs GSourceCallbackFuncs;
+typedef struct _GSourceFuncs GSourceFuncs;
+
+typedef gboolean (*GSourceFunc) (gpointer data);
+typedef void (*GChildWatchFunc) (GPid pid,
+ gint status,
+ gpointer data);
+struct _GSource
+{
+
+ gpointer callback_data;
+ GSourceCallbackFuncs *callback_funcs;
+
+ GSourceFuncs *source_funcs;
+ guint ref_count;
+
+ GMainContext *context;
+
+ gint priority;
+ guint flags;
+ guint source_id;
+
+ GSList *poll_fds;
+
+ GSource *prev;
+ GSource *next;
+
+ gpointer reserved1;
+ gpointer reserved2;
+};
+
+struct _GSourceCallbackFuncs
+{
+ void (*ref) (gpointer cb_data);
+ void (*unref) (gpointer cb_data);
+ void (*get) (gpointer cb_data,
+ GSource *source,
+ GSourceFunc *func,
+ gpointer *data);
+};
+
+typedef void (*GSourceDummyMarshal) (void);
+
+struct _GSourceFuncs
+{
+ gboolean (*prepare) (GSource *source,
+ gint *timeout_);
+ gboolean (*check) (GSource *source);
+ gboolean (*dispatch) (GSource *source,
+ GSourceFunc callback,
+ gpointer user_data);
+ void (*finalize) (GSource *source);
+
+
+ GSourceFunc closure_callback;
+ GSourceDummyMarshal closure_marshal;
+};
+# 104 "/usr/include/glib-2.0/glib/gmain.h"
+GMainContext *g_main_context_new (void);
+GMainContext *g_main_context_ref (GMainContext *context);
+void g_main_context_unref (GMainContext *context);
+GMainContext *g_main_context_default (void);
+
+gboolean g_main_context_iteration (GMainContext *context,
+ gboolean may_block);
+gboolean g_main_context_pending (GMainContext *context);
+
+
+
+GSource *g_main_context_find_source_by_id (GMainContext *context,
+ guint source_id);
+GSource *g_main_context_find_source_by_user_data (GMainContext *context,
+ gpointer user_data);
+GSource *g_main_context_find_source_by_funcs_user_data (GMainContext *context,
+ GSourceFuncs *funcs,
+ gpointer user_data);
+
+
+
+void g_main_context_wakeup (GMainContext *context);
+gboolean g_main_context_acquire (GMainContext *context);
+void g_main_context_release (GMainContext *context);
+gboolean g_main_context_is_owner (GMainContext *context);
+gboolean g_main_context_wait (GMainContext *context,
+ GCond *cond,
+ GMutex *mutex);
+
+gboolean g_main_context_prepare (GMainContext *context,
+ gint *priority);
+gint g_main_context_query (GMainContext *context,
+ gint max_priority,
+ gint *timeout_,
+ GPollFD *fds,
+ gint n_fds);
+gint g_main_context_check (GMainContext *context,
+ gint max_priority,
+ GPollFD *fds,
+ gint n_fds);
+void g_main_context_dispatch (GMainContext *context);
+
+void g_main_context_set_poll_func (GMainContext *context,
+ GPollFunc func);
+GPollFunc g_main_context_get_poll_func (GMainContext *context);
+
+
+
+void g_main_context_add_poll (GMainContext *context,
+ GPollFD *fd,
+ gint priority);
+void g_main_context_remove_poll (GMainContext *context,
+ GPollFD *fd);
+
+gint g_main_depth (void);
+GSource *g_main_current_source (void);
+
+
+
+
+GMainLoop *g_main_loop_new (GMainContext *context,
+ gboolean is_running);
+void g_main_loop_run (GMainLoop *loop);
+void g_main_loop_quit (GMainLoop *loop);
+GMainLoop *g_main_loop_ref (GMainLoop *loop);
+void g_main_loop_unref (GMainLoop *loop);
+gboolean g_main_loop_is_running (GMainLoop *loop);
+GMainContext *g_main_loop_get_context (GMainLoop *loop);
+
+
+
+GSource *g_source_new (GSourceFuncs *source_funcs,
+ guint struct_size);
+GSource *g_source_ref (GSource *source);
+void g_source_unref (GSource *source);
+
+guint g_source_attach (GSource *source,
+ GMainContext *context);
+void g_source_destroy (GSource *source);
+
+void g_source_set_priority (GSource *source,
+ gint priority);
+gint g_source_get_priority (GSource *source);
+void g_source_set_can_recurse (GSource *source,
+ gboolean can_recurse);
+gboolean g_source_get_can_recurse (GSource *source);
+guint g_source_get_id (GSource *source);
+
+GMainContext *g_source_get_context (GSource *source);
+
+void g_source_set_callback (GSource *source,
+ GSourceFunc func,
+ gpointer data,
+ GDestroyNotify notify);
+
+void g_source_set_funcs (GSource *source,
+ GSourceFuncs *funcs);
+gboolean g_source_is_destroyed (GSource *source);
+
+
+void g_source_set_callback_indirect (GSource *source,
+ gpointer callback_data,
+ GSourceCallbackFuncs *callback_funcs);
+
+void g_source_add_poll (GSource *source,
+ GPollFD *fd);
+void g_source_remove_poll (GSource *source,
+ GPollFD *fd);
+
+void g_source_get_current_time (GSource *source,
+ GTimeVal *timeval);
+
+
+
+
+
+
+
+GSource *g_idle_source_new (void);
+GSource *g_child_watch_source_new (GPid pid);
+GSource *g_timeout_source_new (guint interval);
+GSource *g_timeout_source_new_seconds (guint interval);
+
+
+
+void g_get_current_time (GTimeVal *result);
+# 254 "/usr/include/glib-2.0/glib/gmain.h"
+gboolean g_source_remove (guint tag);
+gboolean g_source_remove_by_user_data (gpointer user_data);
+gboolean g_source_remove_by_funcs_user_data (GSourceFuncs *funcs,
+ gpointer user_data);
+
+
+guint g_timeout_add_full (gint priority,
+ guint interval,
+ GSourceFunc function,
+ gpointer data,
+ GDestroyNotify notify);
+guint g_timeout_add (guint interval,
+ GSourceFunc function,
+ gpointer data);
+guint g_timeout_add_seconds_full (gint priority,
+ guint interval,
+ GSourceFunc function,
+ gpointer data,
+ GDestroyNotify notify);
+guint g_timeout_add_seconds (guint interval,
+ GSourceFunc function,
+ gpointer data);
+guint g_child_watch_add_full (gint priority,
+ GPid pid,
+ GChildWatchFunc function,
+ gpointer data,
+ GDestroyNotify notify);
+guint g_child_watch_add (GPid pid,
+ GChildWatchFunc function,
+ gpointer data);
+guint g_idle_add (GSourceFunc function,
+ gpointer data);
+guint g_idle_add_full (gint priority,
+ GSourceFunc function,
+ gpointer data,
+ GDestroyNotify notify);
+gboolean g_idle_remove_by_data (gpointer data);
+
+
+extern GSourceFuncs g_timeout_funcs;
+extern GSourceFuncs g_child_watch_funcs;
+extern GSourceFuncs g_idle_funcs;
+
+
+# 36 "/usr/include/glib-2.0/glib/giochannel.h" 2
+# 1 "/usr/include/glib-2.0/glib/gstring.h" 1
+# 34 "/usr/include/glib-2.0/glib/gstring.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 35 "/usr/include/glib-2.0/glib/gstring.h" 2
+# 1 "/usr/include/glib-2.0/glib/gunicode.h" 1
+# 29 "/usr/include/glib-2.0/glib/gunicode.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 30 "/usr/include/glib-2.0/glib/gunicode.h" 2
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 31 "/usr/include/glib-2.0/glib/gunicode.h" 2
+
+
+
+typedef guint32 gunichar;
+typedef guint16 gunichar2;
+
+
+
+
+typedef enum
+{
+ G_UNICODE_CONTROL,
+ G_UNICODE_FORMAT,
+ G_UNICODE_UNASSIGNED,
+ G_UNICODE_PRIVATE_USE,
+ G_UNICODE_SURROGATE,
+ G_UNICODE_LOWERCASE_LETTER,
+ G_UNICODE_MODIFIER_LETTER,
+ G_UNICODE_OTHER_LETTER,
+ G_UNICODE_TITLECASE_LETTER,
+ G_UNICODE_UPPERCASE_LETTER,
+ G_UNICODE_COMBINING_MARK,
+ G_UNICODE_ENCLOSING_MARK,
+ G_UNICODE_NON_SPACING_MARK,
+ G_UNICODE_DECIMAL_NUMBER,
+ G_UNICODE_LETTER_NUMBER,
+ G_UNICODE_OTHER_NUMBER,
+ G_UNICODE_CONNECT_PUNCTUATION,
+ G_UNICODE_DASH_PUNCTUATION,
+ G_UNICODE_CLOSE_PUNCTUATION,
+ G_UNICODE_FINAL_PUNCTUATION,
+ G_UNICODE_INITIAL_PUNCTUATION,
+ G_UNICODE_OTHER_PUNCTUATION,
+ G_UNICODE_OPEN_PUNCTUATION,
+ G_UNICODE_CURRENCY_SYMBOL,
+ G_UNICODE_MODIFIER_SYMBOL,
+ G_UNICODE_MATH_SYMBOL,
+ G_UNICODE_OTHER_SYMBOL,
+ G_UNICODE_LINE_SEPARATOR,
+ G_UNICODE_PARAGRAPH_SEPARATOR,
+ G_UNICODE_SPACE_SEPARATOR
+} GUnicodeType;
+
+
+
+
+
+
+typedef enum
+{
+ G_UNICODE_BREAK_MANDATORY,
+ G_UNICODE_BREAK_CARRIAGE_RETURN,
+ G_UNICODE_BREAK_LINE_FEED,
+ G_UNICODE_BREAK_COMBINING_MARK,
+ G_UNICODE_BREAK_SURROGATE,
+ G_UNICODE_BREAK_ZERO_WIDTH_SPACE,
+ G_UNICODE_BREAK_INSEPARABLE,
+ G_UNICODE_BREAK_NON_BREAKING_GLUE,
+ G_UNICODE_BREAK_CONTINGENT,
+ G_UNICODE_BREAK_SPACE,
+ G_UNICODE_BREAK_AFTER,
+ G_UNICODE_BREAK_BEFORE,
+ G_UNICODE_BREAK_BEFORE_AND_AFTER,
+ G_UNICODE_BREAK_HYPHEN,
+ G_UNICODE_BREAK_NON_STARTER,
+ G_UNICODE_BREAK_OPEN_PUNCTUATION,
+ G_UNICODE_BREAK_CLOSE_PUNCTUATION,
+ G_UNICODE_BREAK_QUOTATION,
+ G_UNICODE_BREAK_EXCLAMATION,
+ G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_NUMERIC,
+ G_UNICODE_BREAK_INFIX_SEPARATOR,
+ G_UNICODE_BREAK_SYMBOL,
+ G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_PREFIX,
+ G_UNICODE_BREAK_POSTFIX,
+ G_UNICODE_BREAK_COMPLEX_CONTEXT,
+ G_UNICODE_BREAK_AMBIGUOUS,
+ G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_NEXT_LINE,
+ G_UNICODE_BREAK_WORD_JOINER,
+ G_UNICODE_BREAK_HANGUL_L_JAMO,
+ G_UNICODE_BREAK_HANGUL_V_JAMO,
+ G_UNICODE_BREAK_HANGUL_T_JAMO,
+ G_UNICODE_BREAK_HANGUL_LV_SYLLABLE,
+ G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE
+} GUnicodeBreakType;
+
+typedef enum
+{
+ G_UNICODE_SCRIPT_INVALID_CODE = -1,
+ G_UNICODE_SCRIPT_COMMON = 0,
+ G_UNICODE_SCRIPT_INHERITED,
+ G_UNICODE_SCRIPT_ARABIC,
+ G_UNICODE_SCRIPT_ARMENIAN,
+ G_UNICODE_SCRIPT_BENGALI,
+ G_UNICODE_SCRIPT_BOPOMOFO,
+ G_UNICODE_SCRIPT_CHEROKEE,
+ G_UNICODE_SCRIPT_COPTIC,
+ G_UNICODE_SCRIPT_CYRILLIC,
+ G_UNICODE_SCRIPT_DESERET,
+ G_UNICODE_SCRIPT_DEVANAGARI,
+ G_UNICODE_SCRIPT_ETHIOPIC,
+ G_UNICODE_SCRIPT_GEORGIAN,
+ G_UNICODE_SCRIPT_GOTHIC,
+ G_UNICODE_SCRIPT_GREEK,
+ G_UNICODE_SCRIPT_GUJARATI,
+ G_UNICODE_SCRIPT_GURMUKHI,
+ G_UNICODE_SCRIPT_HAN,
+ G_UNICODE_SCRIPT_HANGUL,
+ G_UNICODE_SCRIPT_HEBREW,
+ G_UNICODE_SCRIPT_HIRAGANA,
+ G_UNICODE_SCRIPT_KANNADA,
+ G_UNICODE_SCRIPT_KATAKANA,
+ G_UNICODE_SCRIPT_KHMER,
+ G_UNICODE_SCRIPT_LAO,
+ G_UNICODE_SCRIPT_LATIN,
+ G_UNICODE_SCRIPT_MALAYALAM,
+ G_UNICODE_SCRIPT_MONGOLIAN,
+ G_UNICODE_SCRIPT_MYANMAR,
+ G_UNICODE_SCRIPT_OGHAM,
+ G_UNICODE_SCRIPT_OLD_ITALIC,
+ G_UNICODE_SCRIPT_ORIYA,
+ G_UNICODE_SCRIPT_RUNIC,
+ G_UNICODE_SCRIPT_SINHALA,
+ G_UNICODE_SCRIPT_SYRIAC,
+ G_UNICODE_SCRIPT_TAMIL,
+ G_UNICODE_SCRIPT_TELUGU,
+ G_UNICODE_SCRIPT_THAANA,
+ G_UNICODE_SCRIPT_THAI,
+ G_UNICODE_SCRIPT_TIBETAN,
+ G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL,
+ G_UNICODE_SCRIPT_YI,
+ G_UNICODE_SCRIPT_TAGALOG,
+ G_UNICODE_SCRIPT_HANUNOO,
+ G_UNICODE_SCRIPT_BUHID,
+ G_UNICODE_SCRIPT_TAGBANWA,
+
+
+ G_UNICODE_SCRIPT_BRAILLE,
+ G_UNICODE_SCRIPT_CYPRIOT,
+ G_UNICODE_SCRIPT_LIMBU,
+ G_UNICODE_SCRIPT_OSMANYA,
+ G_UNICODE_SCRIPT_SHAVIAN,
+ G_UNICODE_SCRIPT_LINEAR_B,
+ G_UNICODE_SCRIPT_TAI_LE,
+ G_UNICODE_SCRIPT_UGARITIC,
+
+
+ G_UNICODE_SCRIPT_NEW_TAI_LUE,
+ G_UNICODE_SCRIPT_BUGINESE,
+ G_UNICODE_SCRIPT_GLAGOLITIC,
+ G_UNICODE_SCRIPT_TIFINAGH,
+ G_UNICODE_SCRIPT_SYLOTI_NAGRI,
+ G_UNICODE_SCRIPT_OLD_PERSIAN,
+ G_UNICODE_SCRIPT_KHAROSHTHI,
+
+
+ G_UNICODE_SCRIPT_UNKNOWN,
+ G_UNICODE_SCRIPT_BALINESE,
+ G_UNICODE_SCRIPT_CUNEIFORM,
+ G_UNICODE_SCRIPT_PHOENICIAN,
+ G_UNICODE_SCRIPT_PHAGS_PA,
+ G_UNICODE_SCRIPT_NKO,
+
+
+ G_UNICODE_SCRIPT_KAYAH_LI,
+ G_UNICODE_SCRIPT_LEPCHA,
+ G_UNICODE_SCRIPT_REJANG,
+ G_UNICODE_SCRIPT_SUNDANESE,
+ G_UNICODE_SCRIPT_SAURASHTRA,
+ G_UNICODE_SCRIPT_CHAM,
+ G_UNICODE_SCRIPT_OL_CHIKI,
+ G_UNICODE_SCRIPT_VAI,
+ G_UNICODE_SCRIPT_CARIAN,
+ G_UNICODE_SCRIPT_LYCIAN,
+ G_UNICODE_SCRIPT_LYDIAN
+} GUnicodeScript;
+
+
+
+
+
+
+
+gboolean g_get_charset (const char **charset);
+
+
+
+gboolean g_unichar_isalnum (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isalpha (gunichar c) __attribute__((__const__));
+gboolean g_unichar_iscntrl (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isdigit (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isgraph (gunichar c) __attribute__((__const__));
+gboolean g_unichar_islower (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isprint (gunichar c) __attribute__((__const__));
+gboolean g_unichar_ispunct (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isspace (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isupper (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isxdigit (gunichar c) __attribute__((__const__));
+gboolean g_unichar_istitle (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isdefined (gunichar c) __attribute__((__const__));
+gboolean g_unichar_iswide (gunichar c) __attribute__((__const__));
+gboolean g_unichar_iswide_cjk(gunichar c) __attribute__((__const__));
+gboolean g_unichar_iszerowidth(gunichar c) __attribute__((__const__));
+gboolean g_unichar_ismark (gunichar c) __attribute__((__const__));
+
+
+
+gunichar g_unichar_toupper (gunichar c) __attribute__((__const__));
+gunichar g_unichar_tolower (gunichar c) __attribute__((__const__));
+gunichar g_unichar_totitle (gunichar c) __attribute__((__const__));
+
+
+
+gint g_unichar_digit_value (gunichar c) __attribute__((__const__));
+
+gint g_unichar_xdigit_value (gunichar c) __attribute__((__const__));
+
+
+GUnicodeType g_unichar_type (gunichar c) __attribute__((__const__));
+
+
+GUnicodeBreakType g_unichar_break_type (gunichar c) __attribute__((__const__));
+
+
+gint g_unichar_combining_class (gunichar uc) __attribute__((__const__));
+
+
+
+
+
+void g_unicode_canonical_ordering (gunichar *string,
+ gsize len);
+
+
+
+
+gunichar *g_unicode_canonical_decomposition (gunichar ch,
+ gsize *result_len) __attribute__((__malloc__));
+
+
+
+extern const gchar * const g_utf8_skip;
+
+
+
+gunichar g_utf8_get_char (const gchar *p) __attribute__((__pure__));
+gunichar g_utf8_get_char_validated (const gchar *p,
+ gssize max_len) __attribute__((__pure__));
+
+gchar* g_utf8_offset_to_pointer (const gchar *str,
+ glong offset) __attribute__((__pure__));
+glong g_utf8_pointer_to_offset (const gchar *str,
+ const gchar *pos) __attribute__((__pure__));
+gchar* g_utf8_prev_char (const gchar *p) __attribute__((__pure__));
+gchar* g_utf8_find_next_char (const gchar *p,
+ const gchar *end) __attribute__((__pure__));
+gchar* g_utf8_find_prev_char (const gchar *str,
+ const gchar *p) __attribute__((__pure__));
+
+glong g_utf8_strlen (const gchar *p,
+ gssize max) __attribute__((__pure__));
+
+
+gchar* g_utf8_strncpy (gchar *dest,
+ const gchar *src,
+ gsize n);
+
+
+
+gchar* g_utf8_strchr (const gchar *p,
+ gssize len,
+ gunichar c);
+gchar* g_utf8_strrchr (const gchar *p,
+ gssize len,
+ gunichar c);
+gchar* g_utf8_strreverse (const gchar *str,
+ gssize len);
+
+gunichar2 *g_utf8_to_utf16 (const gchar *str,
+ glong len,
+ glong *items_read,
+ glong *items_written,
+ GError **error) __attribute__((__malloc__));
+gunichar * g_utf8_to_ucs4 (const gchar *str,
+ glong len,
+ glong *items_read,
+ glong *items_written,
+ GError **error) __attribute__((__malloc__));
+gunichar * g_utf8_to_ucs4_fast (const gchar *str,
+ glong len,
+ glong *items_written) __attribute__((__malloc__));
+gunichar * g_utf16_to_ucs4 (const gunichar2 *str,
+ glong len,
+ glong *items_read,
+ glong *items_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_utf16_to_utf8 (const gunichar2 *str,
+ glong len,
+ glong *items_read,
+ glong *items_written,
+ GError **error) __attribute__((__malloc__));
+gunichar2 *g_ucs4_to_utf16 (const gunichar *str,
+ glong len,
+ glong *items_read,
+ glong *items_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_ucs4_to_utf8 (const gunichar *str,
+ glong len,
+ glong *items_read,
+ glong *items_written,
+ GError **error) __attribute__((__malloc__));
+
+
+
+
+
+gint g_unichar_to_utf8 (gunichar c,
+ gchar *outbuf);
+
+
+
+
+
+gboolean g_utf8_validate (const gchar *str,
+ gssize max_len,
+ const gchar **end);
+
+
+gboolean g_unichar_validate (gunichar ch) __attribute__((__const__));
+
+gchar *g_utf8_strup (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+gchar *g_utf8_strdown (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+gchar *g_utf8_casefold (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+
+typedef enum {
+ G_NORMALIZE_DEFAULT,
+ G_NORMALIZE_NFD = G_NORMALIZE_DEFAULT,
+ G_NORMALIZE_DEFAULT_COMPOSE,
+ G_NORMALIZE_NFC = G_NORMALIZE_DEFAULT_COMPOSE,
+ G_NORMALIZE_ALL,
+ G_NORMALIZE_NFKD = G_NORMALIZE_ALL,
+ G_NORMALIZE_ALL_COMPOSE,
+ G_NORMALIZE_NFKC = G_NORMALIZE_ALL_COMPOSE
+} GNormalizeMode;
+
+gchar *g_utf8_normalize (const gchar *str,
+ gssize len,
+ GNormalizeMode mode) __attribute__((__malloc__));
+
+gint g_utf8_collate (const gchar *str1,
+ const gchar *str2) __attribute__((__pure__));
+gchar *g_utf8_collate_key (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+gchar *g_utf8_collate_key_for_filename (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+
+gboolean g_unichar_get_mirror_char (gunichar ch,
+ gunichar *mirrored_ch);
+
+GUnicodeScript g_unichar_get_script (gunichar ch) __attribute__((__const__));
+
+
+
+
+gchar *_g_utf8_make_valid (const gchar *name);
+
+
+# 36 "/usr/include/glib-2.0/glib/gstring.h" 2
+# 1 "/usr/include/glib-2.0/glib/gutils.h" 1
+# 37 "/usr/include/glib-2.0/glib/gstring.h" 2
+
+
+
+typedef struct _GString GString;
+typedef struct _GStringChunk GStringChunk;
+
+struct _GString
+{
+ gchar *str;
+ gsize len;
+ gsize allocated_len;
+};
+
+
+
+GStringChunk* g_string_chunk_new (gsize size);
+void g_string_chunk_free (GStringChunk *chunk);
+void g_string_chunk_clear (GStringChunk *chunk);
+gchar* g_string_chunk_insert (GStringChunk *chunk,
+ const gchar *string);
+gchar* g_string_chunk_insert_len (GStringChunk *chunk,
+ const gchar *string,
+ gssize len);
+gchar* g_string_chunk_insert_const (GStringChunk *chunk,
+ const gchar *string);
+
+
+
+
+GString* g_string_new (const gchar *init);
+GString* g_string_new_len (const gchar *init,
+ gssize len);
+GString* g_string_sized_new (gsize dfl_size);
+gchar* g_string_free (GString *string,
+ gboolean free_segment);
+gboolean g_string_equal (const GString *v,
+ const GString *v2);
+guint g_string_hash (const GString *str);
+GString* g_string_assign (GString *string,
+ const gchar *rval);
+GString* g_string_truncate (GString *string,
+ gsize len);
+GString* g_string_set_size (GString *string,
+ gsize len);
+GString* g_string_insert_len (GString *string,
+ gssize pos,
+ const gchar *val,
+ gssize len);
+GString* g_string_append (GString *string,
+ const gchar *val);
+GString* g_string_append_len (GString *string,
+ const gchar *val,
+ gssize len);
+GString* g_string_append_c (GString *string,
+ gchar c);
+GString* g_string_append_unichar (GString *string,
+ gunichar wc);
+GString* g_string_prepend (GString *string,
+ const gchar *val);
+GString* g_string_prepend_c (GString *string,
+ gchar c);
+GString* g_string_prepend_unichar (GString *string,
+ gunichar wc);
+GString* g_string_prepend_len (GString *string,
+ const gchar *val,
+ gssize len);
+GString* g_string_insert (GString *string,
+ gssize pos,
+ const gchar *val);
+GString* g_string_insert_c (GString *string,
+ gssize pos,
+ gchar c);
+GString* g_string_insert_unichar (GString *string,
+ gssize pos,
+ gunichar wc);
+GString* g_string_overwrite (GString *string,
+ gsize pos,
+ const gchar *val);
+GString* g_string_overwrite_len (GString *string,
+ gsize pos,
+ const gchar *val,
+ gssize len);
+GString* g_string_erase (GString *string,
+ gssize pos,
+ gssize len);
+GString* g_string_ascii_down (GString *string);
+GString* g_string_ascii_up (GString *string);
+void g_string_vprintf (GString *string,
+ const gchar *format,
+ va_list args);
+void g_string_printf (GString *string,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+void g_string_append_vprintf (GString *string,
+ const gchar *format,
+ va_list args);
+void g_string_append_printf (GString *string,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+GString * g_string_append_uri_escaped(GString *string,
+ const char *unescaped,
+ const char *reserved_chars_allowed,
+ gboolean allow_utf8);
+
+
+
+static inline GString*
+g_string_append_c_inline (GString *gstring,
+ gchar c)
+{
+ if (gstring->len + 1 < gstring->allocated_len)
+ {
+ gstring->str[gstring->len++] = c;
+ gstring->str[gstring->len] = 0;
+ }
+ else
+ g_string_insert_c (gstring, -1, c);
+ return gstring;
+}
+# 167 "/usr/include/glib-2.0/glib/gstring.h"
+GString* g_string_down (GString *string);
+GString* g_string_up (GString *string);
+
+
+
+
+
+
+
+
+# 37 "/usr/include/glib-2.0/glib/giochannel.h" 2
+
+
+
+
+
+
+typedef struct _GIOChannel GIOChannel;
+typedef struct _GIOFuncs GIOFuncs;
+
+typedef enum
+{
+ G_IO_ERROR_NONE,
+ G_IO_ERROR_AGAIN,
+ G_IO_ERROR_INVAL,
+ G_IO_ERROR_UNKNOWN
+} GIOError;
+
+
+
+typedef enum
+{
+
+ G_IO_CHANNEL_ERROR_FBIG,
+ G_IO_CHANNEL_ERROR_INVAL,
+ G_IO_CHANNEL_ERROR_IO,
+ G_IO_CHANNEL_ERROR_ISDIR,
+ G_IO_CHANNEL_ERROR_NOSPC,
+ G_IO_CHANNEL_ERROR_NXIO,
+ G_IO_CHANNEL_ERROR_OVERFLOW,
+ G_IO_CHANNEL_ERROR_PIPE,
+
+ G_IO_CHANNEL_ERROR_FAILED
+} GIOChannelError;
+
+typedef enum
+{
+ G_IO_STATUS_ERROR,
+ G_IO_STATUS_NORMAL,
+ G_IO_STATUS_EOF,
+ G_IO_STATUS_AGAIN
+} GIOStatus;
+
+typedef enum
+{
+ G_SEEK_CUR,
+ G_SEEK_SET,
+ G_SEEK_END
+} GSeekType;
+
+typedef enum
+{
+ G_IO_IN =1,
+ G_IO_OUT =4,
+ G_IO_PRI =2,
+ G_IO_ERR =8,
+ G_IO_HUP =16,
+ G_IO_NVAL =32
+} GIOCondition;
+
+typedef enum
+{
+ G_IO_FLAG_APPEND = 1 << 0,
+ G_IO_FLAG_NONBLOCK = 1 << 1,
+ G_IO_FLAG_IS_READABLE = 1 << 2,
+ G_IO_FLAG_IS_WRITEABLE = 1 << 3,
+ G_IO_FLAG_IS_SEEKABLE = 1 << 4,
+ G_IO_FLAG_MASK = (1 << 5) - 1,
+ G_IO_FLAG_GET_MASK = G_IO_FLAG_MASK,
+ G_IO_FLAG_SET_MASK = G_IO_FLAG_APPEND | G_IO_FLAG_NONBLOCK
+} GIOFlags;
+
+struct _GIOChannel
+{
+
+ gint ref_count;
+ GIOFuncs *funcs;
+
+ gchar *encoding;
+ GIConv read_cd;
+ GIConv write_cd;
+ gchar *line_term;
+ guint line_term_len;
+
+ gsize buf_size;
+ GString *read_buf;
+ GString *encoded_read_buf;
+ GString *write_buf;
+ gchar partial_write_buf[6];
+
+
+
+ guint use_buffer : 1;
+ guint do_encode : 1;
+ guint close_on_unref : 1;
+ guint is_readable : 1;
+ guint is_writeable : 1;
+ guint is_seekable : 1;
+
+ gpointer reserved1;
+ gpointer reserved2;
+};
+
+typedef gboolean (*GIOFunc) (GIOChannel *source,
+ GIOCondition condition,
+ gpointer data);
+struct _GIOFuncs
+{
+ GIOStatus (*io_read) (GIOChannel *channel,
+ gchar *buf,
+ gsize count,
+ gsize *bytes_read,
+ GError **err);
+ GIOStatus (*io_write) (GIOChannel *channel,
+ const gchar *buf,
+ gsize count,
+ gsize *bytes_written,
+ GError **err);
+ GIOStatus (*io_seek) (GIOChannel *channel,
+ gint64 offset,
+ GSeekType type,
+ GError **err);
+ GIOStatus (*io_close) (GIOChannel *channel,
+ GError **err);
+ GSource* (*io_create_watch) (GIOChannel *channel,
+ GIOCondition condition);
+ void (*io_free) (GIOChannel *channel);
+ GIOStatus (*io_set_flags) (GIOChannel *channel,
+ GIOFlags flags,
+ GError **err);
+ GIOFlags (*io_get_flags) (GIOChannel *channel);
+};
+
+void g_io_channel_init (GIOChannel *channel);
+GIOChannel *g_io_channel_ref (GIOChannel *channel);
+void g_io_channel_unref (GIOChannel *channel);
+
+
+GIOError g_io_channel_read (GIOChannel *channel,
+ gchar *buf,
+ gsize count,
+ gsize *bytes_read);
+GIOError g_io_channel_write (GIOChannel *channel,
+ const gchar *buf,
+ gsize count,
+ gsize *bytes_written);
+GIOError g_io_channel_seek (GIOChannel *channel,
+ gint64 offset,
+ GSeekType type);
+void g_io_channel_close (GIOChannel *channel);
+
+
+GIOStatus g_io_channel_shutdown (GIOChannel *channel,
+ gboolean flush,
+ GError **err);
+guint g_io_add_watch_full (GIOChannel *channel,
+ gint priority,
+ GIOCondition condition,
+ GIOFunc func,
+ gpointer user_data,
+ GDestroyNotify notify);
+GSource * g_io_create_watch (GIOChannel *channel,
+ GIOCondition condition);
+guint g_io_add_watch (GIOChannel *channel,
+ GIOCondition condition,
+ GIOFunc func,
+ gpointer user_data);
+
+
+
+
+void g_io_channel_set_buffer_size (GIOChannel *channel,
+ gsize size);
+gsize g_io_channel_get_buffer_size (GIOChannel *channel);
+GIOCondition g_io_channel_get_buffer_condition (GIOChannel *channel);
+GIOStatus g_io_channel_set_flags (GIOChannel *channel,
+ GIOFlags flags,
+ GError **error);
+GIOFlags g_io_channel_get_flags (GIOChannel *channel);
+void g_io_channel_set_line_term (GIOChannel *channel,
+ const gchar *line_term,
+ gint length);
+const gchar* g_io_channel_get_line_term (GIOChannel *channel,
+ gint *length);
+void g_io_channel_set_buffered (GIOChannel *channel,
+ gboolean buffered);
+gboolean g_io_channel_get_buffered (GIOChannel *channel);
+GIOStatus g_io_channel_set_encoding (GIOChannel *channel,
+ const gchar *encoding,
+ GError **error);
+const gchar* g_io_channel_get_encoding (GIOChannel *channel);
+void g_io_channel_set_close_on_unref (GIOChannel *channel,
+ gboolean do_close);
+gboolean g_io_channel_get_close_on_unref (GIOChannel *channel);
+
+
+GIOStatus g_io_channel_flush (GIOChannel *channel,
+ GError **error);
+GIOStatus g_io_channel_read_line (GIOChannel *channel,
+ gchar **str_return,
+ gsize *length,
+ gsize *terminator_pos,
+ GError **error);
+GIOStatus g_io_channel_read_line_string (GIOChannel *channel,
+ GString *buffer,
+ gsize *terminator_pos,
+ GError **error);
+GIOStatus g_io_channel_read_to_end (GIOChannel *channel,
+ gchar **str_return,
+ gsize *length,
+ GError **error);
+GIOStatus g_io_channel_read_chars (GIOChannel *channel,
+ gchar *buf,
+ gsize count,
+ gsize *bytes_read,
+ GError **error);
+GIOStatus g_io_channel_read_unichar (GIOChannel *channel,
+ gunichar *thechar,
+ GError **error);
+GIOStatus g_io_channel_write_chars (GIOChannel *channel,
+ const gchar *buf,
+ gssize count,
+ gsize *bytes_written,
+ GError **error);
+GIOStatus g_io_channel_write_unichar (GIOChannel *channel,
+ gunichar thechar,
+ GError **error);
+GIOStatus g_io_channel_seek_position (GIOChannel *channel,
+ gint64 offset,
+ GSeekType type,
+ GError **error);
+
+
+
+
+GIOChannel* g_io_channel_new_file (const gchar *filename,
+ const gchar *mode,
+ GError **error);
+
+
+
+GQuark g_io_channel_error_quark (void);
+GIOChannelError g_io_channel_error_from_errno (gint en);
+# 298 "/usr/include/glib-2.0/glib/giochannel.h"
+GIOChannel* g_io_channel_unix_new (int fd);
+gint g_io_channel_unix_get_fd (GIOChannel *channel);
+
+
+
+extern GSourceFuncs g_io_watch_funcs;
+# 364 "/usr/include/glib-2.0/glib/giochannel.h"
+
+# 51 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gkeyfile.h" 1
+# 30 "/usr/include/glib-2.0/glib/gkeyfile.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 31 "/usr/include/glib-2.0/glib/gkeyfile.h" 2
+
+
+
+typedef enum
+{
+ G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
+ G_KEY_FILE_ERROR_PARSE,
+ G_KEY_FILE_ERROR_NOT_FOUND,
+ G_KEY_FILE_ERROR_KEY_NOT_FOUND,
+ G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
+ G_KEY_FILE_ERROR_INVALID_VALUE
+} GKeyFileError;
+
+
+
+GQuark g_key_file_error_quark (void);
+
+typedef struct _GKeyFile GKeyFile;
+
+typedef enum
+{
+ G_KEY_FILE_NONE = 0,
+ G_KEY_FILE_KEEP_COMMENTS = 1 << 0,
+ G_KEY_FILE_KEEP_TRANSLATIONS = 1 << 1
+} GKeyFileFlags;
+
+GKeyFile *g_key_file_new (void);
+void g_key_file_free (GKeyFile *key_file);
+void g_key_file_set_list_separator (GKeyFile *key_file,
+ gchar separator);
+gboolean g_key_file_load_from_file (GKeyFile *key_file,
+ const gchar *file,
+ GKeyFileFlags flags,
+ GError **error);
+gboolean g_key_file_load_from_data (GKeyFile *key_file,
+ const gchar *data,
+ gsize length,
+ GKeyFileFlags flags,
+ GError **error);
+gboolean g_key_file_load_from_dirs (GKeyFile *key_file,
+ const gchar *file,
+ const gchar **search_dirs,
+ gchar **full_path,
+ GKeyFileFlags flags,
+ GError **error);
+gboolean g_key_file_load_from_data_dirs (GKeyFile *key_file,
+ const gchar *file,
+ gchar **full_path,
+ GKeyFileFlags flags,
+ GError **error);
+gchar *g_key_file_to_data (GKeyFile *key_file,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+gchar *g_key_file_get_start_group (GKeyFile *key_file) __attribute__((__malloc__));
+gchar **g_key_file_get_groups (GKeyFile *key_file,
+ gsize *length) __attribute__((__malloc__));
+gchar **g_key_file_get_keys (GKeyFile *key_file,
+ const gchar *group_name,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+gboolean g_key_file_has_group (GKeyFile *key_file,
+ const gchar *group_name);
+gboolean g_key_file_has_key (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error);
+gchar *g_key_file_get_value (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_value (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *value);
+gchar *g_key_file_get_string (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_string (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *string);
+gchar *g_key_file_get_locale_string (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *locale,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_locale_string (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *locale,
+ const gchar *string);
+gboolean g_key_file_get_boolean (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error);
+void g_key_file_set_boolean (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gboolean value);
+gint g_key_file_get_integer (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error);
+void g_key_file_set_integer (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gint value);
+gdouble g_key_file_get_double (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error);
+void g_key_file_set_double (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gdouble value);
+gchar **g_key_file_get_string_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_string_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar * const list[],
+ gsize length);
+gchar **g_key_file_get_locale_string_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *locale,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_locale_string_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *locale,
+ const gchar * const list[],
+ gsize length);
+gboolean *g_key_file_get_boolean_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_boolean_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gboolean list[],
+ gsize length);
+gint *g_key_file_get_integer_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_double_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gdouble list[],
+ gsize length);
+gdouble *g_key_file_get_double_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_integer_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gint list[],
+ gsize length);
+gboolean g_key_file_set_comment (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *comment,
+ GError **error);
+gchar *g_key_file_get_comment (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error) __attribute__((__malloc__));
+
+gboolean g_key_file_remove_comment (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error);
+gboolean g_key_file_remove_key (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error);
+gboolean g_key_file_remove_group (GKeyFile *key_file,
+ const gchar *group_name,
+ GError **error);
+# 248 "/usr/include/glib-2.0/glib/gkeyfile.h"
+
+# 52 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/glist.h" 1
+# 53 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gmacros.h" 1
+# 54 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gmain.h" 1
+# 55 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gmappedfile.h" 1
+# 29 "/usr/include/glib-2.0/glib/gmappedfile.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 30 "/usr/include/glib-2.0/glib/gmappedfile.h" 2
+
+
+
+typedef struct _GMappedFile GMappedFile;
+
+GMappedFile *g_mapped_file_new (const gchar *filename,
+ gboolean writable,
+ GError **error) __attribute__((__malloc__));
+gsize g_mapped_file_get_length (GMappedFile *file);
+gchar *g_mapped_file_get_contents (GMappedFile *file);
+void g_mapped_file_free (GMappedFile *file);
+
+
+# 56 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gmarkup.h" 1
+# 30 "/usr/include/glib-2.0/glib/gmarkup.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 31 "/usr/include/glib-2.0/glib/gmarkup.h" 2
+# 1 "/usr/include/glib-2.0/glib/gslist.h" 1
+# 32 "/usr/include/glib-2.0/glib/gmarkup.h" 2
+
+
+
+typedef enum
+{
+ G_MARKUP_ERROR_BAD_UTF8,
+ G_MARKUP_ERROR_EMPTY,
+ G_MARKUP_ERROR_PARSE,
+
+
+
+ G_MARKUP_ERROR_UNKNOWN_ELEMENT,
+ G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE,
+ G_MARKUP_ERROR_INVALID_CONTENT,
+ G_MARKUP_ERROR_MISSING_ATTRIBUTE
+} GMarkupError;
+
+
+
+GQuark g_markup_error_quark (void);
+
+typedef enum
+{
+ G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG = 1 << 0,
+ G_MARKUP_TREAT_CDATA_AS_TEXT = 1 << 1,
+ G_MARKUP_PREFIX_ERROR_POSITION = 1 << 2
+} GMarkupParseFlags;
+
+typedef struct _GMarkupParseContext GMarkupParseContext;
+typedef struct _GMarkupParser GMarkupParser;
+
+struct _GMarkupParser
+{
+
+ void (*start_element) (GMarkupParseContext *context,
+ const gchar *element_name,
+ const gchar **attribute_names,
+ const gchar **attribute_values,
+ gpointer user_data,
+ GError **error);
+
+
+ void (*end_element) (GMarkupParseContext *context,
+ const gchar *element_name,
+ gpointer user_data,
+ GError **error);
+
+
+
+ void (*text) (GMarkupParseContext *context,
+ const gchar *text,
+ gsize text_len,
+ gpointer user_data,
+ GError **error);
+
+
+
+
+
+
+ void (*passthrough) (GMarkupParseContext *context,
+ const gchar *passthrough_text,
+ gsize text_len,
+ gpointer user_data,
+ GError **error);
+
+
+
+
+ void (*error) (GMarkupParseContext *context,
+ GError *error,
+ gpointer user_data);
+};
+
+GMarkupParseContext *g_markup_parse_context_new (const GMarkupParser *parser,
+ GMarkupParseFlags flags,
+ gpointer user_data,
+ GDestroyNotify user_data_dnotify);
+void g_markup_parse_context_free (GMarkupParseContext *context);
+gboolean g_markup_parse_context_parse (GMarkupParseContext *context,
+ const gchar *text,
+ gssize text_len,
+ GError **error);
+void g_markup_parse_context_push (GMarkupParseContext *context,
+ GMarkupParser *parser,
+ gpointer user_data);
+gpointer g_markup_parse_context_pop (GMarkupParseContext *context);
+
+gboolean g_markup_parse_context_end_parse (GMarkupParseContext *context,
+ GError **error);
+const gchar *g_markup_parse_context_get_element (GMarkupParseContext *context);
+const GSList *g_markup_parse_context_get_element_stack (GMarkupParseContext *context);
+
+
+void g_markup_parse_context_get_position (GMarkupParseContext *context,
+ gint *line_number,
+ gint *char_number);
+gpointer g_markup_parse_context_get_user_data (GMarkupParseContext *context);
+
+
+gchar* g_markup_escape_text (const gchar *text,
+ gssize length);
+
+gchar *g_markup_printf_escaped (const char *format,
+ ...) __attribute__((__format__ (__printf__, 1, 2)));
+gchar *g_markup_vprintf_escaped (const char *format,
+ va_list args);
+
+typedef enum
+{
+ G_MARKUP_COLLECT_INVALID,
+ G_MARKUP_COLLECT_STRING,
+ G_MARKUP_COLLECT_STRDUP,
+ G_MARKUP_COLLECT_BOOLEAN,
+ G_MARKUP_COLLECT_TRISTATE,
+
+ G_MARKUP_COLLECT_OPTIONAL = (1 << 16)
+} GMarkupCollectType;
+
+
+
+gboolean g_markup_collect_attributes (const gchar *element_name,
+ const gchar **attribute_names,
+ const gchar **attribute_values,
+ GError **error,
+ GMarkupCollectType first_type,
+ const gchar *first_attr,
+ ...);
+
+
+# 57 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gmem.h" 1
+# 58 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gmessages.h" 1
+# 35 "/usr/include/glib-2.0/glib/gmessages.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 36 "/usr/include/glib-2.0/glib/gmessages.h" 2
+# 1 "/usr/include/glib-2.0/glib/gmacros.h" 1
+# 37 "/usr/include/glib-2.0/glib/gmessages.h" 2
+
+
+
+
+
+# 42 "/usr/include/glib-2.0/glib/gmessages.h" 3
+
+
+
+
+
+
+gsize g_printf_string_upper_bound (const gchar* format,
+ va_list args);
+# 58 "/usr/include/glib-2.0/glib/gmessages.h" 3
+typedef enum
+{
+
+ G_LOG_FLAG_RECURSION = 1 << 0,
+ G_LOG_FLAG_FATAL = 1 << 1,
+
+
+ G_LOG_LEVEL_ERROR = 1 << 2,
+ G_LOG_LEVEL_CRITICAL = 1 << 3,
+ G_LOG_LEVEL_WARNING = 1 << 4,
+ G_LOG_LEVEL_MESSAGE = 1 << 5,
+ G_LOG_LEVEL_INFO = 1 << 6,
+ G_LOG_LEVEL_DEBUG = 1 << 7,
+
+ G_LOG_LEVEL_MASK = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL)
+} GLogLevelFlags;
+
+
+
+
+typedef void (*GLogFunc) (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *message,
+ gpointer user_data);
+
+
+
+guint g_log_set_handler (const gchar *log_domain,
+ GLogLevelFlags log_levels,
+ GLogFunc log_func,
+ gpointer user_data);
+void g_log_remove_handler (const gchar *log_domain,
+ guint handler_id);
+void g_log_default_handler (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *message,
+ gpointer unused_data);
+GLogFunc g_log_set_default_handler (GLogFunc log_func,
+ gpointer user_data);
+void g_log (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 3, 4)));
+void g_logv (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *format,
+ va_list args);
+GLogLevelFlags g_log_set_fatal_mask (const gchar *log_domain,
+ GLogLevelFlags fatal_mask);
+GLogLevelFlags g_log_set_always_fatal (GLogLevelFlags fatal_mask);
+
+
+__attribute__((visibility("hidden"))) void _g_log_fallback_handler (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *message,
+ gpointer unused_data);
+
+
+void g_return_if_fail_warning (const char *log_domain,
+ const char *pretty_function,
+ const char *expression);
+void g_warn_message (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *warnexpr);
+
+void g_assert_warning (const char *log_domain,
+ const char *file,
+ const int line,
+ const char *pretty_function,
+ const char *expression) __attribute__((__noreturn__));
+# 227 "/usr/include/glib-2.0/glib/gmessages.h" 3
+typedef void (*GPrintFunc) (const gchar *string);
+void g_print (const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 1, 2)));
+GPrintFunc g_set_print_handler (GPrintFunc func);
+void g_printerr (const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 1, 2)));
+GPrintFunc g_set_printerr_handler (GPrintFunc func);
+# 339 "/usr/include/glib-2.0/glib/gmessages.h" 3
+
+# 59 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gnode.h" 1
+# 34 "/usr/include/glib-2.0/glib/gnode.h"
+# 1 "/usr/include/glib-2.0/glib/gmem.h" 1
+# 35 "/usr/include/glib-2.0/glib/gnode.h" 2
+
+
+
+typedef struct _GNode GNode;
+
+
+typedef enum
+{
+ G_TRAVERSE_LEAVES = 1 << 0,
+ G_TRAVERSE_NON_LEAVES = 1 << 1,
+ G_TRAVERSE_ALL = G_TRAVERSE_LEAVES | G_TRAVERSE_NON_LEAVES,
+ G_TRAVERSE_MASK = 0x03,
+ G_TRAVERSE_LEAFS = G_TRAVERSE_LEAVES,
+ G_TRAVERSE_NON_LEAFS = G_TRAVERSE_NON_LEAVES
+} GTraverseFlags;
+
+
+typedef enum
+{
+ G_IN_ORDER,
+ G_PRE_ORDER,
+ G_POST_ORDER,
+ G_LEVEL_ORDER
+} GTraverseType;
+
+typedef gboolean (*GNodeTraverseFunc) (GNode *node,
+ gpointer data);
+typedef void (*GNodeForeachFunc) (GNode *node,
+ gpointer data);
+# 77 "/usr/include/glib-2.0/glib/gnode.h"
+typedef gpointer (*GCopyFunc) (gconstpointer src,
+ gpointer data);
+
+
+
+struct _GNode
+{
+ gpointer data;
+ GNode *next;
+ GNode *prev;
+ GNode *parent;
+ GNode *children;
+};
+# 115 "/usr/include/glib-2.0/glib/gnode.h"
+GNode* g_node_new (gpointer data);
+void g_node_destroy (GNode *root);
+void g_node_unlink (GNode *node);
+GNode* g_node_copy_deep (GNode *node,
+ GCopyFunc copy_func,
+ gpointer data);
+GNode* g_node_copy (GNode *node);
+GNode* g_node_insert (GNode *parent,
+ gint position,
+ GNode *node);
+GNode* g_node_insert_before (GNode *parent,
+ GNode *sibling,
+ GNode *node);
+GNode* g_node_insert_after (GNode *parent,
+ GNode *sibling,
+ GNode *node);
+GNode* g_node_prepend (GNode *parent,
+ GNode *node);
+guint g_node_n_nodes (GNode *root,
+ GTraverseFlags flags);
+GNode* g_node_get_root (GNode *node);
+gboolean g_node_is_ancestor (GNode *node,
+ GNode *descendant);
+guint g_node_depth (GNode *node);
+GNode* g_node_find (GNode *root,
+ GTraverseType order,
+ GTraverseFlags flags,
+ gpointer data);
+# 213 "/usr/include/glib-2.0/glib/gnode.h"
+void g_node_traverse (GNode *root,
+ GTraverseType order,
+ GTraverseFlags flags,
+ gint max_depth,
+ GNodeTraverseFunc func,
+ gpointer data);
+
+
+
+
+
+
+guint g_node_max_height (GNode *root);
+
+void g_node_children_foreach (GNode *node,
+ GTraverseFlags flags,
+ GNodeForeachFunc func,
+ gpointer data);
+void g_node_reverse_children (GNode *node);
+guint g_node_n_children (GNode *node);
+GNode* g_node_nth_child (GNode *node,
+ guint n);
+GNode* g_node_last_child (GNode *node);
+GNode* g_node_find_child (GNode *node,
+ GTraverseFlags flags,
+ gpointer data);
+gint g_node_child_position (GNode *node,
+ GNode *child);
+gint g_node_child_index (GNode *node,
+ gpointer data);
+
+GNode* g_node_first_sibling (GNode *node);
+GNode* g_node_last_sibling (GNode *node);
+# 282 "/usr/include/glib-2.0/glib/gnode.h"
+void g_node_push_allocator (gpointer dummy);
+void g_node_pop_allocator (void);
+
+
+
+# 60 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/goption.h" 1
+# 28 "/usr/include/glib-2.0/glib/goption.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 29 "/usr/include/glib-2.0/glib/goption.h" 2
+# 1 "/usr/include/glib-2.0/glib/gquark.h" 1
+# 30 "/usr/include/glib-2.0/glib/goption.h" 2
+
+
+
+typedef struct _GOptionContext GOptionContext;
+typedef struct _GOptionGroup GOptionGroup;
+typedef struct _GOptionEntry GOptionEntry;
+
+typedef enum
+{
+ G_OPTION_FLAG_HIDDEN = 1 << 0,
+ G_OPTION_FLAG_IN_MAIN = 1 << 1,
+ G_OPTION_FLAG_REVERSE = 1 << 2,
+ G_OPTION_FLAG_NO_ARG = 1 << 3,
+ G_OPTION_FLAG_FILENAME = 1 << 4,
+ G_OPTION_FLAG_OPTIONAL_ARG = 1 << 5,
+ G_OPTION_FLAG_NOALIAS = 1 << 6
+} GOptionFlags;
+
+typedef enum
+{
+ G_OPTION_ARG_NONE,
+ G_OPTION_ARG_STRING,
+ G_OPTION_ARG_INT,
+ G_OPTION_ARG_CALLBACK,
+ G_OPTION_ARG_FILENAME,
+ G_OPTION_ARG_STRING_ARRAY,
+ G_OPTION_ARG_FILENAME_ARRAY,
+ G_OPTION_ARG_DOUBLE,
+ G_OPTION_ARG_INT64
+} GOptionArg;
+
+typedef gboolean (*GOptionArgFunc) (const gchar *option_name,
+ const gchar *value,
+ gpointer data,
+ GError **error);
+
+typedef gboolean (*GOptionParseFunc) (GOptionContext *context,
+ GOptionGroup *group,
+ gpointer data,
+ GError **error);
+
+typedef void (*GOptionErrorFunc) (GOptionContext *context,
+ GOptionGroup *group,
+ gpointer data,
+ GError **error);
+
+
+
+typedef enum
+{
+ G_OPTION_ERROR_UNKNOWN_OPTION,
+ G_OPTION_ERROR_BAD_VALUE,
+ G_OPTION_ERROR_FAILED
+} GOptionError;
+
+GQuark g_option_error_quark (void);
+
+
+struct _GOptionEntry
+{
+ const gchar *long_name;
+ gchar short_name;
+ gint flags;
+
+ GOptionArg arg;
+ gpointer arg_data;
+
+ const gchar *description;
+ const gchar *arg_description;
+};
+
+
+
+GOptionContext *g_option_context_new (const gchar *parameter_string);
+void g_option_context_set_summary (GOptionContext *context,
+ const gchar *summary);
+const gchar *g_option_context_get_summary (GOptionContext *context);
+void g_option_context_set_description (GOptionContext *context,
+ const gchar *description);
+const gchar *g_option_context_get_description (GOptionContext *context);
+void g_option_context_free (GOptionContext *context);
+void g_option_context_set_help_enabled (GOptionContext *context,
+ gboolean help_enabled);
+gboolean g_option_context_get_help_enabled (GOptionContext *context);
+void g_option_context_set_ignore_unknown_options (GOptionContext *context,
+ gboolean ignore_unknown);
+gboolean g_option_context_get_ignore_unknown_options (GOptionContext *context);
+
+void g_option_context_add_main_entries (GOptionContext *context,
+ const GOptionEntry *entries,
+ const gchar *translation_domain);
+gboolean g_option_context_parse (GOptionContext *context,
+ gint *argc,
+ gchar ***argv,
+ GError **error);
+void g_option_context_set_translate_func (GOptionContext *context,
+ GTranslateFunc func,
+ gpointer data,
+ GDestroyNotify destroy_notify);
+void g_option_context_set_translation_domain (GOptionContext *context,
+ const gchar *domain);
+
+void g_option_context_add_group (GOptionContext *context,
+ GOptionGroup *group);
+void g_option_context_set_main_group (GOptionContext *context,
+ GOptionGroup *group);
+GOptionGroup *g_option_context_get_main_group (GOptionContext *context);
+gchar *g_option_context_get_help (GOptionContext *context,
+ gboolean main_help,
+ GOptionGroup *group);
+
+GOptionGroup *g_option_group_new (const gchar *name,
+ const gchar *description,
+ const gchar *help_description,
+ gpointer user_data,
+ GDestroyNotify destroy);
+void g_option_group_set_parse_hooks (GOptionGroup *group,
+ GOptionParseFunc pre_parse_func,
+ GOptionParseFunc post_parse_func);
+void g_option_group_set_error_hook (GOptionGroup *group,
+ GOptionErrorFunc error_func);
+void g_option_group_free (GOptionGroup *group);
+void g_option_group_add_entries (GOptionGroup *group,
+ const GOptionEntry *entries);
+void g_option_group_set_translate_func (GOptionGroup *group,
+ GTranslateFunc func,
+ gpointer data,
+ GDestroyNotify destroy_notify);
+void g_option_group_set_translation_domain (GOptionGroup *group,
+ const gchar *domain);
+
+
+# 61 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gpattern.h" 1
+# 27 "/usr/include/glib-2.0/glib/gpattern.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 28 "/usr/include/glib-2.0/glib/gpattern.h" 2
+
+
+
+
+typedef struct _GPatternSpec GPatternSpec;
+
+GPatternSpec* g_pattern_spec_new (const gchar *pattern);
+void g_pattern_spec_free (GPatternSpec *pspec);
+gboolean g_pattern_spec_equal (GPatternSpec *pspec1,
+ GPatternSpec *pspec2);
+gboolean g_pattern_match (GPatternSpec *pspec,
+ guint string_length,
+ const gchar *string,
+ const gchar *string_reversed);
+gboolean g_pattern_match_string (GPatternSpec *pspec,
+ const gchar *string);
+gboolean g_pattern_match_simple (const gchar *pattern,
+ const gchar *string);
+
+
+# 62 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gpoll.h" 1
+# 63 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gprimes.h" 1
+# 34 "/usr/include/glib-2.0/glib/gprimes.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 35 "/usr/include/glib-2.0/glib/gprimes.h" 2
+
+
+# 47 "/usr/include/glib-2.0/glib/gprimes.h"
+guint g_spaced_primes_closest (guint num) __attribute__((__const__));
+
+
+# 64 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gqsort.h" 1
+# 34 "/usr/include/glib-2.0/glib/gqsort.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 35 "/usr/include/glib-2.0/glib/gqsort.h" 2
+
+
+
+void g_qsort_with_data (gconstpointer pbase,
+ gint total_elems,
+ gsize size,
+ GCompareDataFunc compare_func,
+ gpointer user_data);
+
+
+# 65 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gquark.h" 1
+# 66 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gqueue.h" 1
+# 34 "/usr/include/glib-2.0/glib/gqueue.h"
+# 1 "/usr/include/glib-2.0/glib/glist.h" 1
+# 35 "/usr/include/glib-2.0/glib/gqueue.h" 2
+
+
+
+typedef struct _GQueue GQueue;
+
+struct _GQueue
+{
+ GList *head;
+ GList *tail;
+ guint length;
+};
+
+
+
+
+
+GQueue* g_queue_new (void);
+void g_queue_free (GQueue *queue);
+void g_queue_init (GQueue *queue);
+void g_queue_clear (GQueue *queue);
+gboolean g_queue_is_empty (GQueue *queue);
+guint g_queue_get_length (GQueue *queue);
+void g_queue_reverse (GQueue *queue);
+GQueue * g_queue_copy (GQueue *queue);
+void g_queue_foreach (GQueue *queue,
+ GFunc func,
+ gpointer user_data);
+GList * g_queue_find (GQueue *queue,
+ gconstpointer data);
+GList * g_queue_find_custom (GQueue *queue,
+ gconstpointer data,
+ GCompareFunc func);
+void g_queue_sort (GQueue *queue,
+ GCompareDataFunc compare_func,
+ gpointer user_data);
+
+void g_queue_push_head (GQueue *queue,
+ gpointer data);
+void g_queue_push_tail (GQueue *queue,
+ gpointer data);
+void g_queue_push_nth (GQueue *queue,
+ gpointer data,
+ gint n);
+gpointer g_queue_pop_head (GQueue *queue);
+gpointer g_queue_pop_tail (GQueue *queue);
+gpointer g_queue_pop_nth (GQueue *queue,
+ guint n);
+gpointer g_queue_peek_head (GQueue *queue);
+gpointer g_queue_peek_tail (GQueue *queue);
+gpointer g_queue_peek_nth (GQueue *queue,
+ guint n);
+gint g_queue_index (GQueue *queue,
+ gconstpointer data);
+void g_queue_remove (GQueue *queue,
+ gconstpointer data);
+void g_queue_remove_all (GQueue *queue,
+ gconstpointer data);
+void g_queue_insert_before (GQueue *queue,
+ GList *sibling,
+ gpointer data);
+void g_queue_insert_after (GQueue *queue,
+ GList *sibling,
+ gpointer data);
+void g_queue_insert_sorted (GQueue *queue,
+ gpointer data,
+ GCompareDataFunc func,
+ gpointer user_data);
+
+void g_queue_push_head_link (GQueue *queue,
+ GList *link_);
+void g_queue_push_tail_link (GQueue *queue,
+ GList *link_);
+void g_queue_push_nth_link (GQueue *queue,
+ gint n,
+ GList *link_);
+GList* g_queue_pop_head_link (GQueue *queue);
+GList* g_queue_pop_tail_link (GQueue *queue);
+GList* g_queue_pop_nth_link (GQueue *queue,
+ guint n);
+GList* g_queue_peek_head_link (GQueue *queue);
+GList* g_queue_peek_tail_link (GQueue *queue);
+GList* g_queue_peek_nth_link (GQueue *queue,
+ guint n);
+gint g_queue_link_index (GQueue *queue,
+ GList *link_);
+void g_queue_unlink (GQueue *queue,
+ GList *link_);
+void g_queue_delete_link (GQueue *queue,
+ GList *link_);
+
+
+# 67 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/grand.h" 1
+# 34 "/usr/include/glib-2.0/glib/grand.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 35 "/usr/include/glib-2.0/glib/grand.h" 2
+
+
+
+typedef struct _GRand GRand;
+# 49 "/usr/include/glib-2.0/glib/grand.h"
+GRand* g_rand_new_with_seed (guint32 seed);
+GRand* g_rand_new_with_seed_array (const guint32 *seed,
+ guint seed_length);
+GRand* g_rand_new (void);
+void g_rand_free (GRand *rand_);
+GRand* g_rand_copy (GRand *rand_);
+void g_rand_set_seed (GRand *rand_,
+ guint32 seed);
+void g_rand_set_seed_array (GRand *rand_,
+ const guint32 *seed,
+ guint seed_length);
+
+
+
+guint32 g_rand_int (GRand *rand_);
+gint32 g_rand_int_range (GRand *rand_,
+ gint32 begin,
+ gint32 end);
+gdouble g_rand_double (GRand *rand_);
+gdouble g_rand_double_range (GRand *rand_,
+ gdouble begin,
+ gdouble end);
+void g_random_set_seed (guint32 seed);
+
+
+
+guint32 g_random_int (void);
+gint32 g_random_int_range (gint32 begin,
+ gint32 end);
+gdouble g_random_double (void);
+gdouble g_random_double_range (gdouble begin,
+ gdouble end);
+
+
+
+# 68 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/grel.h" 1
+# 34 "/usr/include/glib-2.0/glib/grel.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 35 "/usr/include/glib-2.0/glib/grel.h" 2
+
+
+
+typedef struct _GRelation GRelation;
+typedef struct _GTuples GTuples;
+
+struct _GTuples
+{
+ guint len;
+};
+# 69 "/usr/include/glib-2.0/glib/grel.h"
+GRelation* g_relation_new (gint fields);
+void g_relation_destroy (GRelation *relation);
+void g_relation_index (GRelation *relation,
+ gint field,
+ GHashFunc hash_func,
+ GEqualFunc key_equal_func);
+void g_relation_insert (GRelation *relation,
+ ...);
+gint g_relation_delete (GRelation *relation,
+ gconstpointer key,
+ gint field);
+GTuples* g_relation_select (GRelation *relation,
+ gconstpointer key,
+ gint field);
+gint g_relation_count (GRelation *relation,
+ gconstpointer key,
+ gint field);
+gboolean g_relation_exists (GRelation *relation,
+ ...);
+void g_relation_print (GRelation *relation);
+
+void g_tuples_destroy (GTuples *tuples);
+gpointer g_tuples_index (GTuples *tuples,
+ gint index_,
+ gint field);
+
+
+# 69 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gregex.h" 1
+# 29 "/usr/include/glib-2.0/glib/gregex.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 30 "/usr/include/glib-2.0/glib/gregex.h" 2
+# 1 "/usr/include/glib-2.0/glib/gstring.h" 1
+# 31 "/usr/include/glib-2.0/glib/gregex.h" 2
+
+
+
+typedef enum
+{
+ G_REGEX_ERROR_COMPILE,
+ G_REGEX_ERROR_OPTIMIZE,
+ G_REGEX_ERROR_REPLACE,
+ G_REGEX_ERROR_MATCH,
+ G_REGEX_ERROR_INTERNAL,
+
+
+ G_REGEX_ERROR_STRAY_BACKSLASH = 101,
+ G_REGEX_ERROR_MISSING_CONTROL_CHAR = 102,
+ G_REGEX_ERROR_UNRECOGNIZED_ESCAPE = 103,
+ G_REGEX_ERROR_QUANTIFIERS_OUT_OF_ORDER = 104,
+ G_REGEX_ERROR_QUANTIFIER_TOO_BIG = 105,
+ G_REGEX_ERROR_UNTERMINATED_CHARACTER_CLASS = 106,
+ G_REGEX_ERROR_INVALID_ESCAPE_IN_CHARACTER_CLASS = 107,
+ G_REGEX_ERROR_RANGE_OUT_OF_ORDER = 108,
+ G_REGEX_ERROR_NOTHING_TO_REPEAT = 109,
+ G_REGEX_ERROR_UNRECOGNIZED_CHARACTER = 112,
+ G_REGEX_ERROR_POSIX_NAMED_CLASS_OUTSIDE_CLASS = 113,
+ G_REGEX_ERROR_UNMATCHED_PARENTHESIS = 114,
+ G_REGEX_ERROR_INEXISTENT_SUBPATTERN_REFERENCE = 115,
+ G_REGEX_ERROR_UNTERMINATED_COMMENT = 118,
+ G_REGEX_ERROR_EXPRESSION_TOO_LARGE = 120,
+ G_REGEX_ERROR_MEMORY_ERROR = 121,
+ G_REGEX_ERROR_VARIABLE_LENGTH_LOOKBEHIND = 125,
+ G_REGEX_ERROR_MALFORMED_CONDITION = 126,
+ G_REGEX_ERROR_TOO_MANY_CONDITIONAL_BRANCHES = 127,
+ G_REGEX_ERROR_ASSERTION_EXPECTED = 128,
+ G_REGEX_ERROR_UNKNOWN_POSIX_CLASS_NAME = 130,
+ G_REGEX_ERROR_POSIX_COLLATING_ELEMENTS_NOT_SUPPORTED = 131,
+ G_REGEX_ERROR_HEX_CODE_TOO_LARGE = 134,
+ G_REGEX_ERROR_INVALID_CONDITION = 135,
+ G_REGEX_ERROR_SINGLE_BYTE_MATCH_IN_LOOKBEHIND = 136,
+ G_REGEX_ERROR_INFINITE_LOOP = 140,
+ G_REGEX_ERROR_MISSING_SUBPATTERN_NAME_TERMINATOR = 142,
+ G_REGEX_ERROR_DUPLICATE_SUBPATTERN_NAME = 143,
+ G_REGEX_ERROR_MALFORMED_PROPERTY = 146,
+ G_REGEX_ERROR_UNKNOWN_PROPERTY = 147,
+ G_REGEX_ERROR_SUBPATTERN_NAME_TOO_LONG = 148,
+ G_REGEX_ERROR_TOO_MANY_SUBPATTERNS = 149,
+ G_REGEX_ERROR_INVALID_OCTAL_VALUE = 151,
+ G_REGEX_ERROR_TOO_MANY_BRANCHES_IN_DEFINE = 154,
+ G_REGEX_ERROR_DEFINE_REPETION = 155,
+ G_REGEX_ERROR_INCONSISTENT_NEWLINE_OPTIONS = 156,
+ G_REGEX_ERROR_MISSING_BACK_REFERENCE = 157
+} GRegexError;
+
+
+
+GQuark g_regex_error_quark (void);
+
+
+
+typedef enum
+{
+ G_REGEX_CASELESS = 1 << 0,
+ G_REGEX_MULTILINE = 1 << 1,
+ G_REGEX_DOTALL = 1 << 2,
+ G_REGEX_EXTENDED = 1 << 3,
+ G_REGEX_ANCHORED = 1 << 4,
+ G_REGEX_DOLLAR_ENDONLY = 1 << 5,
+ G_REGEX_UNGREEDY = 1 << 9,
+ G_REGEX_RAW = 1 << 11,
+ G_REGEX_NO_AUTO_CAPTURE = 1 << 12,
+ G_REGEX_OPTIMIZE = 1 << 13,
+ G_REGEX_DUPNAMES = 1 << 19,
+ G_REGEX_NEWLINE_CR = 1 << 20,
+ G_REGEX_NEWLINE_LF = 1 << 21,
+ G_REGEX_NEWLINE_CRLF = G_REGEX_NEWLINE_CR | G_REGEX_NEWLINE_LF
+} GRegexCompileFlags;
+
+
+
+typedef enum
+{
+ G_REGEX_MATCH_ANCHORED = 1 << 4,
+ G_REGEX_MATCH_NOTBOL = 1 << 7,
+ G_REGEX_MATCH_NOTEOL = 1 << 8,
+ G_REGEX_MATCH_NOTEMPTY = 1 << 10,
+ G_REGEX_MATCH_PARTIAL = 1 << 15,
+ G_REGEX_MATCH_NEWLINE_CR = 1 << 20,
+ G_REGEX_MATCH_NEWLINE_LF = 1 << 21,
+ G_REGEX_MATCH_NEWLINE_CRLF = G_REGEX_MATCH_NEWLINE_CR | G_REGEX_MATCH_NEWLINE_LF,
+ G_REGEX_MATCH_NEWLINE_ANY = 1 << 22
+} GRegexMatchFlags;
+
+typedef struct _GRegex GRegex;
+typedef struct _GMatchInfo GMatchInfo;
+
+typedef gboolean (*GRegexEvalCallback) (const GMatchInfo *match_info,
+ GString *result,
+ gpointer user_data);
+
+
+GRegex *g_regex_new (const gchar *pattern,
+ GRegexCompileFlags compile_options,
+ GRegexMatchFlags match_options,
+ GError **error);
+GRegex *g_regex_ref (GRegex *regex);
+void g_regex_unref (GRegex *regex);
+const gchar *g_regex_get_pattern (const GRegex *regex);
+gint g_regex_get_max_backref (const GRegex *regex);
+gint g_regex_get_capture_count (const GRegex *regex);
+gint g_regex_get_string_number (const GRegex *regex,
+ const gchar *name);
+gchar *g_regex_escape_string (const gchar *string,
+ gint length);
+
+
+gboolean g_regex_match_simple (const gchar *pattern,
+ const gchar *string,
+ GRegexCompileFlags compile_options,
+ GRegexMatchFlags match_options);
+gboolean g_regex_match (const GRegex *regex,
+ const gchar *string,
+ GRegexMatchFlags match_options,
+ GMatchInfo **match_info);
+gboolean g_regex_match_full (const GRegex *regex,
+ const gchar *string,
+ gssize string_len,
+ gint start_position,
+ GRegexMatchFlags match_options,
+ GMatchInfo **match_info,
+ GError **error);
+gboolean g_regex_match_all (const GRegex *regex,
+ const gchar *string,
+ GRegexMatchFlags match_options,
+ GMatchInfo **match_info);
+gboolean g_regex_match_all_full (const GRegex *regex,
+ const gchar *string,
+ gssize string_len,
+ gint start_position,
+ GRegexMatchFlags match_options,
+ GMatchInfo **match_info,
+ GError **error);
+
+
+gchar **g_regex_split_simple (const gchar *pattern,
+ const gchar *string,
+ GRegexCompileFlags compile_options,
+ GRegexMatchFlags match_options);
+gchar **g_regex_split (const GRegex *regex,
+ const gchar *string,
+ GRegexMatchFlags match_options);
+gchar **g_regex_split_full (const GRegex *regex,
+ const gchar *string,
+ gssize string_len,
+ gint start_position,
+ GRegexMatchFlags match_options,
+ gint max_tokens,
+ GError **error);
+
+
+gchar *g_regex_replace (const GRegex *regex,
+ const gchar *string,
+ gssize string_len,
+ gint start_position,
+ const gchar *replacement,
+ GRegexMatchFlags match_options,
+ GError **error);
+gchar *g_regex_replace_literal (const GRegex *regex,
+ const gchar *string,
+ gssize string_len,
+ gint start_position,
+ const gchar *replacement,
+ GRegexMatchFlags match_options,
+ GError **error);
+gchar *g_regex_replace_eval (const GRegex *regex,
+ const gchar *string,
+ gssize string_len,
+ gint start_position,
+ GRegexMatchFlags match_options,
+ GRegexEvalCallback eval,
+ gpointer user_data,
+ GError **error);
+gboolean g_regex_check_replacement (const gchar *replacement,
+ gboolean *has_references,
+ GError **error);
+
+
+GRegex *g_match_info_get_regex (const GMatchInfo *match_info);
+const gchar *g_match_info_get_string (const GMatchInfo *match_info);
+
+void g_match_info_free (GMatchInfo *match_info);
+gboolean g_match_info_next (GMatchInfo *match_info,
+ GError **error);
+gboolean g_match_info_matches (const GMatchInfo *match_info);
+gint g_match_info_get_match_count (const GMatchInfo *match_info);
+gboolean g_match_info_is_partial_match (const GMatchInfo *match_info);
+gchar *g_match_info_expand_references(const GMatchInfo *match_info,
+ const gchar *string_to_expand,
+ GError **error);
+gchar *g_match_info_fetch (const GMatchInfo *match_info,
+ gint match_num);
+gboolean g_match_info_fetch_pos (const GMatchInfo *match_info,
+ gint match_num,
+ gint *start_pos,
+ gint *end_pos);
+gchar *g_match_info_fetch_named (const GMatchInfo *match_info,
+ const gchar *name);
+gboolean g_match_info_fetch_named_pos (const GMatchInfo *match_info,
+ const gchar *name,
+ gint *start_pos,
+ gint *end_pos);
+gchar **g_match_info_fetch_all (const GMatchInfo *match_info);
+
+
+# 70 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gscanner.h" 1
+# 34 "/usr/include/glib-2.0/glib/gscanner.h"
+# 1 "/usr/include/glib-2.0/glib/gdataset.h" 1
+# 35 "/usr/include/glib-2.0/glib/gscanner.h" 2
+# 1 "/usr/include/glib-2.0/glib/ghash.h" 1
+# 36 "/usr/include/glib-2.0/glib/gscanner.h" 2
+
+
+
+typedef struct _GScanner GScanner;
+typedef struct _GScannerConfig GScannerConfig;
+typedef union _GTokenValue GTokenValue;
+
+typedef void (*GScannerMsgFunc) (GScanner *scanner,
+ gchar *message,
+ gboolean error);
+# 64 "/usr/include/glib-2.0/glib/gscanner.h"
+typedef enum
+{
+ G_ERR_UNKNOWN,
+ G_ERR_UNEXP_EOF,
+ G_ERR_UNEXP_EOF_IN_STRING,
+ G_ERR_UNEXP_EOF_IN_COMMENT,
+ G_ERR_NON_DIGIT_IN_CONST,
+ G_ERR_DIGIT_RADIX,
+ G_ERR_FLOAT_RADIX,
+ G_ERR_FLOAT_MALFORMED
+} GErrorType;
+
+
+typedef enum
+{
+ G_TOKEN_EOF = 0,
+
+ G_TOKEN_LEFT_PAREN = '(',
+ G_TOKEN_RIGHT_PAREN = ')',
+ G_TOKEN_LEFT_CURLY = '{',
+ G_TOKEN_RIGHT_CURLY = '}',
+ G_TOKEN_LEFT_BRACE = '[',
+ G_TOKEN_RIGHT_BRACE = ']',
+ G_TOKEN_EQUAL_SIGN = '=',
+ G_TOKEN_COMMA = ',',
+
+ G_TOKEN_NONE = 256,
+
+ G_TOKEN_ERROR,
+
+ G_TOKEN_CHAR,
+ G_TOKEN_BINARY,
+ G_TOKEN_OCTAL,
+ G_TOKEN_INT,
+ G_TOKEN_HEX,
+ G_TOKEN_FLOAT,
+ G_TOKEN_STRING,
+
+ G_TOKEN_SYMBOL,
+ G_TOKEN_IDENTIFIER,
+ G_TOKEN_IDENTIFIER_NULL,
+
+ G_TOKEN_COMMENT_SINGLE,
+ G_TOKEN_COMMENT_MULTI,
+ G_TOKEN_LAST
+} GTokenType;
+
+union _GTokenValue
+{
+ gpointer v_symbol;
+ gchar *v_identifier;
+ gulong v_binary;
+ gulong v_octal;
+ gulong v_int;
+ guint64 v_int64;
+ gdouble v_float;
+ gulong v_hex;
+ gchar *v_string;
+ gchar *v_comment;
+ guchar v_char;
+ guint v_error;
+};
+
+struct _GScannerConfig
+{
+
+
+ gchar *cset_skip_characters;
+ gchar *cset_identifier_first;
+ gchar *cset_identifier_nth;
+ gchar *cpair_comment_single;
+
+
+
+ guint case_sensitive : 1;
+
+
+
+
+ guint skip_comment_multi : 1;
+ guint skip_comment_single : 1;
+ guint scan_comment_multi : 1;
+ guint scan_identifier : 1;
+ guint scan_identifier_1char : 1;
+ guint scan_identifier_NULL : 1;
+ guint scan_symbols : 1;
+ guint scan_binary : 1;
+ guint scan_octal : 1;
+ guint scan_float : 1;
+ guint scan_hex : 1;
+ guint scan_hex_dollar : 1;
+ guint scan_string_sq : 1;
+ guint scan_string_dq : 1;
+ guint numbers_2_int : 1;
+ guint int_2_float : 1;
+ guint identifier_2_string : 1;
+ guint char_2_token : 1;
+ guint symbol_2_token : 1;
+ guint scope_0_fallback : 1;
+ guint store_int64 : 1;
+ guint padding_dummy;
+};
+
+struct _GScanner
+{
+
+ gpointer user_data;
+ guint max_parse_errors;
+
+
+ guint parse_errors;
+
+
+ const gchar *input_name;
+
+
+ GData *qdata;
+
+
+ GScannerConfig *config;
+
+
+ GTokenType token;
+ GTokenValue value;
+ guint line;
+ guint position;
+
+
+ GTokenType next_token;
+ GTokenValue next_value;
+ guint next_line;
+ guint next_position;
+
+
+ GHashTable *symbol_table;
+ gint input_fd;
+ const gchar *text;
+ const gchar *text_end;
+ gchar *buffer;
+ guint scope_id;
+
+
+ GScannerMsgFunc msg_handler;
+};
+
+GScanner* g_scanner_new (const GScannerConfig *config_templ);
+void g_scanner_destroy (GScanner *scanner);
+void g_scanner_input_file (GScanner *scanner,
+ gint input_fd);
+void g_scanner_sync_file_offset (GScanner *scanner);
+void g_scanner_input_text (GScanner *scanner,
+ const gchar *text,
+ guint text_len);
+GTokenType g_scanner_get_next_token (GScanner *scanner);
+GTokenType g_scanner_peek_next_token (GScanner *scanner);
+GTokenType g_scanner_cur_token (GScanner *scanner);
+GTokenValue g_scanner_cur_value (GScanner *scanner);
+guint g_scanner_cur_line (GScanner *scanner);
+guint g_scanner_cur_position (GScanner *scanner);
+gboolean g_scanner_eof (GScanner *scanner);
+guint g_scanner_set_scope (GScanner *scanner,
+ guint scope_id);
+void g_scanner_scope_add_symbol (GScanner *scanner,
+ guint scope_id,
+ const gchar *symbol,
+ gpointer value);
+void g_scanner_scope_remove_symbol (GScanner *scanner,
+ guint scope_id,
+ const gchar *symbol);
+gpointer g_scanner_scope_lookup_symbol (GScanner *scanner,
+ guint scope_id,
+ const gchar *symbol);
+void g_scanner_scope_foreach_symbol (GScanner *scanner,
+ guint scope_id,
+ GHFunc func,
+ gpointer user_data);
+gpointer g_scanner_lookup_symbol (GScanner *scanner,
+ const gchar *symbol);
+void g_scanner_unexp_token (GScanner *scanner,
+ GTokenType expected_token,
+ const gchar *identifier_spec,
+ const gchar *symbol_spec,
+ const gchar *symbol_name,
+ const gchar *message,
+ gint is_error);
+void g_scanner_error (GScanner *scanner,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+void g_scanner_warn (GScanner *scanner,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+# 276 "/usr/include/glib-2.0/glib/gscanner.h"
+
+# 71 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gsequence.h" 1
+# 28 "/usr/include/glib-2.0/glib/gsequence.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 29 "/usr/include/glib-2.0/glib/gsequence.h" 2
+
+
+
+typedef struct _GSequence GSequence;
+typedef struct _GSequenceNode GSequenceIter;
+
+typedef gint (* GSequenceIterCompareFunc) (GSequenceIter *a,
+ GSequenceIter *b,
+ gpointer data);
+
+
+
+GSequence * g_sequence_new (GDestroyNotify data_destroy);
+void g_sequence_free (GSequence *seq);
+gint g_sequence_get_length (GSequence *seq);
+void g_sequence_foreach (GSequence *seq,
+ GFunc func,
+ gpointer user_data);
+void g_sequence_foreach_range (GSequenceIter *begin,
+ GSequenceIter *end,
+ GFunc func,
+ gpointer user_data);
+void g_sequence_sort (GSequence *seq,
+ GCompareDataFunc cmp_func,
+ gpointer cmp_data);
+void g_sequence_sort_iter (GSequence *seq,
+ GSequenceIterCompareFunc cmp_func,
+ gpointer cmp_data);
+
+
+
+GSequenceIter *g_sequence_get_begin_iter (GSequence *seq);
+GSequenceIter *g_sequence_get_end_iter (GSequence *seq);
+GSequenceIter *g_sequence_get_iter_at_pos (GSequence *seq,
+ gint pos);
+GSequenceIter *g_sequence_append (GSequence *seq,
+ gpointer data);
+GSequenceIter *g_sequence_prepend (GSequence *seq,
+ gpointer data);
+GSequenceIter *g_sequence_insert_before (GSequenceIter *iter,
+ gpointer data);
+void g_sequence_move (GSequenceIter *src,
+ GSequenceIter *dest);
+void g_sequence_swap (GSequenceIter *a,
+ GSequenceIter *b);
+GSequenceIter *g_sequence_insert_sorted (GSequence *seq,
+ gpointer data,
+ GCompareDataFunc cmp_func,
+ gpointer cmp_data);
+GSequenceIter *g_sequence_insert_sorted_iter (GSequence *seq,
+ gpointer data,
+ GSequenceIterCompareFunc iter_cmp,
+ gpointer cmp_data);
+void g_sequence_sort_changed (GSequenceIter *iter,
+ GCompareDataFunc cmp_func,
+ gpointer cmp_data);
+void g_sequence_sort_changed_iter (GSequenceIter *iter,
+ GSequenceIterCompareFunc iter_cmp,
+ gpointer cmp_data);
+void g_sequence_remove (GSequenceIter *iter);
+void g_sequence_remove_range (GSequenceIter *begin,
+ GSequenceIter *end);
+void g_sequence_move_range (GSequenceIter *dest,
+ GSequenceIter *begin,
+ GSequenceIter *end);
+GSequenceIter *g_sequence_search (GSequence *seq,
+ gpointer data,
+ GCompareDataFunc cmp_func,
+ gpointer cmp_data);
+GSequenceIter *g_sequence_search_iter (GSequence *seq,
+ gpointer data,
+ GSequenceIterCompareFunc iter_cmp,
+ gpointer cmp_data);
+
+
+
+gpointer g_sequence_get (GSequenceIter *iter);
+void g_sequence_set (GSequenceIter *iter,
+ gpointer data);
+
+
+gboolean g_sequence_iter_is_begin (GSequenceIter *iter);
+gboolean g_sequence_iter_is_end (GSequenceIter *iter);
+GSequenceIter *g_sequence_iter_next (GSequenceIter *iter);
+GSequenceIter *g_sequence_iter_prev (GSequenceIter *iter);
+gint g_sequence_iter_get_position (GSequenceIter *iter);
+GSequenceIter *g_sequence_iter_move (GSequenceIter *iter,
+ gint delta);
+GSequence * g_sequence_iter_get_sequence (GSequenceIter *iter);
+
+
+
+gint g_sequence_iter_compare (GSequenceIter *a,
+ GSequenceIter *b);
+GSequenceIter *g_sequence_range_get_midpoint (GSequenceIter *begin,
+ GSequenceIter *end);
+
+
+# 72 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gshell.h" 1
+# 28 "/usr/include/glib-2.0/glib/gshell.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 29 "/usr/include/glib-2.0/glib/gshell.h" 2
+
+
+
+
+
+typedef enum
+{
+
+ G_SHELL_ERROR_BAD_QUOTING,
+
+ G_SHELL_ERROR_EMPTY_STRING,
+ G_SHELL_ERROR_FAILED
+} GShellError;
+
+GQuark g_shell_error_quark (void);
+
+gchar* g_shell_quote (const gchar *unquoted_string);
+gchar* g_shell_unquote (const gchar *quoted_string,
+ GError **error);
+gboolean g_shell_parse_argv (const gchar *command_line,
+ gint *argcp,
+ gchar ***argvp,
+ GError **error);
+
+
+# 73 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gslice.h" 1
+# 74 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gslist.h" 1
+# 75 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gspawn.h" 1
+# 28 "/usr/include/glib-2.0/glib/gspawn.h"
+# 1 "/usr/include/glib-2.0/glib/gerror.h" 1
+# 29 "/usr/include/glib-2.0/glib/gspawn.h" 2
+
+
+
+
+
+
+typedef enum
+{
+ G_SPAWN_ERROR_FORK,
+ G_SPAWN_ERROR_READ,
+ G_SPAWN_ERROR_CHDIR,
+ G_SPAWN_ERROR_ACCES,
+ G_SPAWN_ERROR_PERM,
+ G_SPAWN_ERROR_2BIG,
+ G_SPAWN_ERROR_NOEXEC,
+ G_SPAWN_ERROR_NAMETOOLONG,
+ G_SPAWN_ERROR_NOENT,
+ G_SPAWN_ERROR_NOMEM,
+ G_SPAWN_ERROR_NOTDIR,
+ G_SPAWN_ERROR_LOOP,
+ G_SPAWN_ERROR_TXTBUSY,
+ G_SPAWN_ERROR_IO,
+ G_SPAWN_ERROR_NFILE,
+ G_SPAWN_ERROR_MFILE,
+ G_SPAWN_ERROR_INVAL,
+ G_SPAWN_ERROR_ISDIR,
+ G_SPAWN_ERROR_LIBBAD,
+ G_SPAWN_ERROR_FAILED
+
+
+} GSpawnError;
+
+typedef void (* GSpawnChildSetupFunc) (gpointer user_data);
+
+typedef enum
+{
+ G_SPAWN_LEAVE_DESCRIPTORS_OPEN = 1 << 0,
+ G_SPAWN_DO_NOT_REAP_CHILD = 1 << 1,
+
+ G_SPAWN_SEARCH_PATH = 1 << 2,
+
+ G_SPAWN_STDOUT_TO_DEV_NULL = 1 << 3,
+ G_SPAWN_STDERR_TO_DEV_NULL = 1 << 4,
+ G_SPAWN_CHILD_INHERITS_STDIN = 1 << 5,
+ G_SPAWN_FILE_AND_ARGV_ZERO = 1 << 6
+} GSpawnFlags;
+
+GQuark g_spawn_error_quark (void);
+# 86 "/usr/include/glib-2.0/glib/gspawn.h"
+gboolean g_spawn_async (const gchar *working_directory,
+ gchar **argv,
+ gchar **envp,
+ GSpawnFlags flags,
+ GSpawnChildSetupFunc child_setup,
+ gpointer user_data,
+ GPid *child_pid,
+ GError **error);
+
+
+
+
+
+gboolean g_spawn_async_with_pipes (const gchar *working_directory,
+ gchar **argv,
+ gchar **envp,
+ GSpawnFlags flags,
+ GSpawnChildSetupFunc child_setup,
+ gpointer user_data,
+ GPid *child_pid,
+ gint *standard_input,
+ gint *standard_output,
+ gint *standard_error,
+ GError **error);
+
+
+
+
+
+
+gboolean g_spawn_sync (const gchar *working_directory,
+ gchar **argv,
+ gchar **envp,
+ GSpawnFlags flags,
+ GSpawnChildSetupFunc child_setup,
+ gpointer user_data,
+ gchar **standard_output,
+ gchar **standard_error,
+ gint *exit_status,
+ GError **error);
+
+gboolean g_spawn_command_line_sync (const gchar *command_line,
+ gchar **standard_output,
+ gchar **standard_error,
+ gint *exit_status,
+ GError **error);
+gboolean g_spawn_command_line_async (const gchar *command_line,
+ GError **error);
+
+void g_spawn_close_pid (GPid pid);
+
+
+# 76 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gstrfuncs.h" 1
+# 35 "/usr/include/glib-2.0/glib/gstrfuncs.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 36 "/usr/include/glib-2.0/glib/gstrfuncs.h" 2
+
+
+
+
+typedef enum {
+ G_ASCII_ALNUM = 1 << 0,
+ G_ASCII_ALPHA = 1 << 1,
+ G_ASCII_CNTRL = 1 << 2,
+ G_ASCII_DIGIT = 1 << 3,
+ G_ASCII_GRAPH = 1 << 4,
+ G_ASCII_LOWER = 1 << 5,
+ G_ASCII_PRINT = 1 << 6,
+ G_ASCII_PUNCT = 1 << 7,
+ G_ASCII_SPACE = 1 << 8,
+ G_ASCII_UPPER = 1 << 9,
+ G_ASCII_XDIGIT = 1 << 10
+} GAsciiType;
+
+extern const guint16 * const g_ascii_table;
+# 89 "/usr/include/glib-2.0/glib/gstrfuncs.h"
+gchar g_ascii_tolower (gchar c) __attribute__((__const__));
+gchar g_ascii_toupper (gchar c) __attribute__((__const__));
+
+gint g_ascii_digit_value (gchar c) __attribute__((__const__));
+gint g_ascii_xdigit_value (gchar c) __attribute__((__const__));
+
+
+
+
+
+gchar* g_strdelimit (gchar *string,
+ const gchar *delimiters,
+ gchar new_delimiter);
+gchar* g_strcanon (gchar *string,
+ const gchar *valid_chars,
+ gchar substitutor);
+const gchar* g_strerror (gint errnum) __attribute__((__const__));
+const gchar* g_strsignal (gint signum) __attribute__((__const__));
+gchar* g_strreverse (gchar *string);
+gsize g_strlcpy (gchar *dest,
+ const gchar *src,
+ gsize dest_size);
+gsize g_strlcat (gchar *dest,
+ const gchar *src,
+ gsize dest_size);
+gchar * g_strstr_len (const gchar *haystack,
+ gssize haystack_len,
+ const gchar *needle);
+gchar * g_strrstr (const gchar *haystack,
+ const gchar *needle);
+gchar * g_strrstr_len (const gchar *haystack,
+ gssize haystack_len,
+ const gchar *needle);
+
+gboolean g_str_has_suffix (const gchar *str,
+ const gchar *suffix);
+gboolean g_str_has_prefix (const gchar *str,
+ const gchar *prefix);
+
+
+
+gdouble g_strtod (const gchar *nptr,
+ gchar **endptr);
+gdouble g_ascii_strtod (const gchar *nptr,
+ gchar **endptr);
+guint64 g_ascii_strtoull (const gchar *nptr,
+ gchar **endptr,
+ guint base);
+gint64 g_ascii_strtoll (const gchar *nptr,
+ gchar **endptr,
+ guint base);
+
+
+
+
+gchar * g_ascii_dtostr (gchar *buffer,
+ gint buf_len,
+ gdouble d);
+gchar * g_ascii_formatd (gchar *buffer,
+ gint buf_len,
+ const gchar *format,
+ gdouble d);
+
+
+gchar* g_strchug (gchar *string);
+
+gchar* g_strchomp (gchar *string);
+
+
+
+gint g_ascii_strcasecmp (const gchar *s1,
+ const gchar *s2);
+gint g_ascii_strncasecmp (const gchar *s1,
+ const gchar *s2,
+ gsize n);
+gchar* g_ascii_strdown (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+gchar* g_ascii_strup (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+# 176 "/usr/include/glib-2.0/glib/gstrfuncs.h"
+gint g_strcasecmp (const gchar *s1,
+ const gchar *s2);
+gint g_strncasecmp (const gchar *s1,
+ const gchar *s2,
+ guint n);
+gchar* g_strdown (gchar *string);
+gchar* g_strup (gchar *string);
+
+
+
+
+
+
+gchar* g_strdup (const gchar *str) __attribute__((__malloc__));
+gchar* g_strdup_printf (const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 1, 2))) __attribute__((__malloc__));
+gchar* g_strdup_vprintf (const gchar *format,
+ va_list args) __attribute__((__malloc__));
+gchar* g_strndup (const gchar *str,
+ gsize n) __attribute__((__malloc__));
+gchar* g_strnfill (gsize length,
+ gchar fill_char) __attribute__((__malloc__));
+gchar* g_strconcat (const gchar *string1,
+ ...) __attribute__((__malloc__)) __attribute__((__sentinel__));
+gchar* g_strjoin (const gchar *separator,
+ ...) __attribute__((__malloc__)) __attribute__((__sentinel__));
+
+
+
+
+
+gchar* g_strcompress (const gchar *source) __attribute__((__malloc__));
+# 217 "/usr/include/glib-2.0/glib/gstrfuncs.h"
+gchar* g_strescape (const gchar *source,
+ const gchar *exceptions) __attribute__((__malloc__));
+
+gpointer g_memdup (gconstpointer mem,
+ guint byte_size) __attribute__((__malloc__)) __attribute__((__alloc_size__(2)));
+# 232 "/usr/include/glib-2.0/glib/gstrfuncs.h"
+gchar** g_strsplit (const gchar *string,
+ const gchar *delimiter,
+ gint max_tokens) __attribute__((__malloc__));
+gchar ** g_strsplit_set (const gchar *string,
+ const gchar *delimiters,
+ gint max_tokens) __attribute__((__malloc__));
+gchar* g_strjoinv (const gchar *separator,
+ gchar **str_array) __attribute__((__malloc__));
+void g_strfreev (gchar **str_array);
+gchar** g_strdupv (gchar **str_array) __attribute__((__malloc__));
+guint g_strv_length (gchar **str_array);
+
+gchar* g_stpcpy (gchar *dest,
+ const char *src);
+
+const gchar *g_strip_context (const gchar *msgid,
+ const gchar *msgval) __attribute__((__format_arg__ (1)));
+
+const gchar *g_dgettext (const gchar *domain,
+ const gchar *msgid) __attribute__((__format_arg__ (2)));
+
+const gchar *g_dngettext (const gchar *domain,
+ const gchar *msgid,
+ const gchar *msgid_plural,
+ gulong n) __attribute__((__format_arg__ (3)));
+const gchar *g_dpgettext (const gchar *domain,
+ const gchar *msgctxtid,
+ gsize msgidoffset) __attribute__((__format_arg__ (2)));
+const gchar *g_dpgettext2 (const gchar *domain,
+ const gchar *context,
+ const gchar *msgid) __attribute__((__format_arg__ (3)));
+
+
+# 77 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gstring.h" 1
+# 78 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gtestutils.h" 1
+# 28 "/usr/include/glib-2.0/glib/gtestutils.h"
+# 1 "/usr/include/glib-2.0/glib.h" 1
+# 29 "/usr/include/glib-2.0/glib/gtestutils.h" 2
+
+
+
+typedef struct GTestCase GTestCase;
+typedef struct GTestSuite GTestSuite;
+# 72 "/usr/include/glib-2.0/glib/gtestutils.h"
+int g_strcmp0 (const char *str1,
+ const char *str2);
+
+
+void g_test_minimized_result (double minimized_quantity,
+ const char *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+void g_test_maximized_result (double maximized_quantity,
+ const char *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+
+
+void g_test_init (int *argc,
+ char ***argv,
+ ...);
+# 95 "/usr/include/glib-2.0/glib/gtestutils.h"
+int g_test_run (void);
+
+void g_test_add_func (const char *testpath,
+ void (*test_func) (void));
+void g_test_add_data_func (const char *testpath,
+ gconstpointer test_data,
+ void (*test_func) (gconstpointer));
+# 116 "/usr/include/glib-2.0/glib/gtestutils.h"
+void g_test_message (const char *format,
+ ...) __attribute__((__format__ (__printf__, 1, 2)));
+void g_test_bug_base (const char *uri_pattern);
+void g_test_bug (const char *bug_uri_snippet);
+
+void g_test_timer_start (void);
+double g_test_timer_elapsed (void);
+double g_test_timer_last (void);
+
+
+void g_test_queue_free (gpointer gfree_pointer);
+void g_test_queue_destroy (GDestroyNotify destroy_func,
+ gpointer destroy_data);
+
+
+
+typedef enum {
+ G_TEST_TRAP_SILENCE_STDOUT = 1 << 7,
+ G_TEST_TRAP_SILENCE_STDERR = 1 << 8,
+ G_TEST_TRAP_INHERIT_STDIN = 1 << 9
+} GTestTrapFlags;
+gboolean g_test_trap_fork (guint64 usec_timeout,
+ GTestTrapFlags test_trap_flags);
+gboolean g_test_trap_has_passed (void);
+gboolean g_test_trap_reached_timeout (void);
+# 150 "/usr/include/glib-2.0/glib/gtestutils.h"
+gint32 g_test_rand_int (void);
+gint32 g_test_rand_int_range (gint32 begin,
+ gint32 end);
+double g_test_rand_double (void);
+double g_test_rand_double_range (double range_start,
+ double range_end);
+
+
+GTestCase* g_test_create_case (const char *test_name,
+ gsize data_size,
+ gconstpointer test_data,
+ void (*data_setup) (void),
+ void (*data_test) (void),
+ void (*data_teardown) (void));
+GTestSuite* g_test_create_suite (const char *suite_name);
+GTestSuite* g_test_get_root (void);
+void g_test_suite_add (GTestSuite *suite,
+ GTestCase *test_case);
+void g_test_suite_add_suite (GTestSuite *suite,
+ GTestSuite *nestedsuite);
+int g_test_run_suite (GTestSuite *suite);
+
+
+void g_test_trap_assertions (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ guint64 assertion_flags,
+ const char *pattern);
+void g_assertion_message (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *message) __attribute__((__noreturn__));
+void g_assertion_message_expr (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *expr) __attribute__((__noreturn__));
+void g_assertion_message_cmpstr (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *expr,
+ const char *arg1,
+ const char *cmp,
+ const char *arg2) __attribute__((__noreturn__));
+void g_assertion_message_cmpnum (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *expr,
+ long double arg1,
+ const char *cmp,
+ long double arg2,
+ char numtype) __attribute__((__noreturn__));
+void g_assertion_message_error (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *expr,
+ GError *error,
+ GQuark error_domain,
+ int error_code) __attribute__((__noreturn__));
+void g_test_add_vtable (const char *testpath,
+ gsize data_size,
+ gconstpointer test_data,
+ void (*data_setup) (void),
+ void (*data_test) (void),
+ void (*data_teardown) (void));
+typedef struct {
+ gboolean test_initialized;
+ gboolean test_quick;
+ gboolean test_perf;
+ gboolean test_verbose;
+ gboolean test_quiet;
+} GTestConfig;
+extern const GTestConfig * const g_test_config_vars;
+
+
+typedef enum {
+ G_TEST_LOG_NONE,
+ G_TEST_LOG_ERROR,
+ G_TEST_LOG_START_BINARY,
+ G_TEST_LOG_LIST_CASE,
+ G_TEST_LOG_SKIP_CASE,
+ G_TEST_LOG_START_CASE,
+ G_TEST_LOG_STOP_CASE,
+ G_TEST_LOG_MIN_RESULT,
+ G_TEST_LOG_MAX_RESULT,
+ G_TEST_LOG_MESSAGE
+} GTestLogType;
+
+typedef struct {
+ GTestLogType log_type;
+ guint n_strings;
+ gchar **strings;
+ guint n_nums;
+ long double *nums;
+} GTestLogMsg;
+typedef struct {
+
+ GString *data;
+ GSList *msgs;
+} GTestLogBuffer;
+
+const char* g_test_log_type_name (GTestLogType log_type);
+GTestLogBuffer* g_test_log_buffer_new (void);
+void g_test_log_buffer_free (GTestLogBuffer *tbuffer);
+void g_test_log_buffer_push (GTestLogBuffer *tbuffer,
+ guint n_bytes,
+ const guint8 *bytes);
+GTestLogMsg* g_test_log_buffer_pop (GTestLogBuffer *tbuffer);
+void g_test_log_msg_free (GTestLogMsg *tmsg);
+
+
+# 79 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gthread.h" 1
+# 80 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gthreadpool.h" 1
+# 34 "/usr/include/glib-2.0/glib/gthreadpool.h"
+# 1 "/usr/include/glib-2.0/glib/gthread.h" 1
+# 35 "/usr/include/glib-2.0/glib/gthreadpool.h" 2
+
+
+
+typedef struct _GThreadPool GThreadPool;
+
+
+
+
+
+
+struct _GThreadPool
+{
+ GFunc func;
+ gpointer user_data;
+ gboolean exclusive;
+};
+
+
+
+
+
+
+GThreadPool* g_thread_pool_new (GFunc func,
+ gpointer user_data,
+ gint max_threads,
+ gboolean exclusive,
+ GError **error);
+
+
+
+
+
+void g_thread_pool_push (GThreadPool *pool,
+ gpointer data,
+ GError **error);
+
+
+
+
+void g_thread_pool_set_max_threads (GThreadPool *pool,
+ gint max_threads,
+ GError **error);
+gint g_thread_pool_get_max_threads (GThreadPool *pool);
+
+
+
+guint g_thread_pool_get_num_threads (GThreadPool *pool);
+
+
+guint g_thread_pool_unprocessed (GThreadPool *pool);
+
+
+
+
+
+void g_thread_pool_free (GThreadPool *pool,
+ gboolean immediate,
+ gboolean wait_);
+
+
+
+void g_thread_pool_set_max_unused_threads (gint max_threads);
+gint g_thread_pool_get_max_unused_threads (void);
+guint g_thread_pool_get_num_unused_threads (void);
+
+
+void g_thread_pool_stop_unused_threads (void);
+
+
+void g_thread_pool_set_sort_function (GThreadPool *pool,
+ GCompareDataFunc func,
+ gpointer user_data);
+
+
+void g_thread_pool_set_max_idle_time (guint interval);
+guint g_thread_pool_get_max_idle_time (void);
+
+
+# 81 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gtimer.h" 1
+# 34 "/usr/include/glib-2.0/glib/gtimer.h"
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 35 "/usr/include/glib-2.0/glib/gtimer.h" 2
+
+
+
+
+
+
+
+typedef struct _GTimer GTimer;
+
+
+
+GTimer* g_timer_new (void);
+void g_timer_destroy (GTimer *timer);
+void g_timer_start (GTimer *timer);
+void g_timer_stop (GTimer *timer);
+void g_timer_reset (GTimer *timer);
+void g_timer_continue (GTimer *timer);
+gdouble g_timer_elapsed (GTimer *timer,
+ gulong *microseconds);
+
+void g_usleep (gulong microseconds);
+
+void g_time_val_add (GTimeVal *time_,
+ glong microseconds);
+gboolean g_time_val_from_iso8601 (const gchar *iso_date,
+ GTimeVal *time_);
+gchar* g_time_val_to_iso8601 (GTimeVal *time_) __attribute__((__malloc__));
+
+
+# 82 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gtree.h" 1
+# 34 "/usr/include/glib-2.0/glib/gtree.h"
+# 1 "/usr/include/glib-2.0/glib/gnode.h" 1
+# 35 "/usr/include/glib-2.0/glib/gtree.h" 2
+
+
+
+typedef struct _GTree GTree;
+
+typedef gboolean (*GTraverseFunc) (gpointer key,
+ gpointer value,
+ gpointer data);
+
+
+
+GTree* g_tree_new (GCompareFunc key_compare_func);
+GTree* g_tree_new_with_data (GCompareDataFunc key_compare_func,
+ gpointer key_compare_data);
+GTree* g_tree_new_full (GCompareDataFunc key_compare_func,
+ gpointer key_compare_data,
+ GDestroyNotify key_destroy_func,
+ GDestroyNotify value_destroy_func);
+void g_tree_destroy (GTree *tree);
+void g_tree_insert (GTree *tree,
+ gpointer key,
+ gpointer value);
+void g_tree_replace (GTree *tree,
+ gpointer key,
+ gpointer value);
+gboolean g_tree_remove (GTree *tree,
+ gconstpointer key);
+gboolean g_tree_steal (GTree *tree,
+ gconstpointer key);
+gpointer g_tree_lookup (GTree *tree,
+ gconstpointer key);
+gboolean g_tree_lookup_extended (GTree *tree,
+ gconstpointer lookup_key,
+ gpointer *orig_key,
+ gpointer *value);
+void g_tree_foreach (GTree *tree,
+ GTraverseFunc func,
+ gpointer user_data);
+
+
+void g_tree_traverse (GTree *tree,
+ GTraverseFunc traverse_func,
+ GTraverseType traverse_type,
+ gpointer user_data);
+
+
+gpointer g_tree_search (GTree *tree,
+ GCompareFunc search_func,
+ gconstpointer user_data);
+gint g_tree_height (GTree *tree);
+gint g_tree_nnodes (GTree *tree);
+
+
+# 83 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gtypes.h" 1
+# 84 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gunicode.h" 1
+# 85 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gurifuncs.h" 1
+# 32 "/usr/include/glib-2.0/glib/gurifuncs.h"
+
+# 69 "/usr/include/glib-2.0/glib/gurifuncs.h"
+char * g_uri_unescape_string (const char *escaped_string,
+ const char *illegal_characters);
+char * g_uri_unescape_segment (const char *escaped_string,
+ const char *escaped_string_end,
+ const char *illegal_characters);
+char * g_uri_parse_scheme (const char *uri);
+char * g_uri_escape_string (const char *unescaped,
+ const char *reserved_chars_allowed,
+ gboolean allow_utf8);
+
+
+# 86 "/usr/include/glib-2.0/glib.h" 2
+# 1 "/usr/include/glib-2.0/glib/gutils.h" 1
+# 87 "/usr/include/glib-2.0/glib.h" 2
+# 28 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/glib-compat.h" 1
+# 33 "/usr/include/gstreamer-0.10/gst/glib-compat.h"
+
+
+
+# 30 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstenumtypes.h" 1
+
+
+
+
+
+
+# 1 "/usr/include/glib-2.0/glib-object.h" 1
+# 25 "/usr/include/glib-2.0/glib-object.h"
+# 1 "/usr/include/glib-2.0/gobject/gboxed.h" 1
+# 26 "/usr/include/glib-2.0/gobject/gboxed.h"
+# 1 "/usr/include/glib-2.0/gobject/gtype.h" 1
+# 28 "/usr/include/glib-2.0/gobject/gtype.h"
+
+# 367 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef gsize GType;
+
+
+
+typedef struct _GValue GValue;
+typedef union _GTypeCValue GTypeCValue;
+typedef struct _GTypePlugin GTypePlugin;
+typedef struct _GTypeClass GTypeClass;
+typedef struct _GTypeInterface GTypeInterface;
+typedef struct _GTypeInstance GTypeInstance;
+typedef struct _GTypeInfo GTypeInfo;
+typedef struct _GTypeFundamentalInfo GTypeFundamentalInfo;
+typedef struct _GInterfaceInfo GInterfaceInfo;
+typedef struct _GTypeValueTable GTypeValueTable;
+typedef struct _GTypeQuery GTypeQuery;
+# 391 "/usr/include/glib-2.0/gobject/gtype.h"
+struct _GTypeClass
+{
+
+ GType g_type;
+};
+
+
+
+
+
+struct _GTypeInstance
+{
+
+ GTypeClass *g_class;
+};
+
+
+
+
+
+struct _GTypeInterface
+{
+
+ GType g_type;
+ GType g_instance_type;
+};
+# 427 "/usr/include/glib-2.0/gobject/gtype.h"
+struct _GTypeQuery
+{
+ GType type;
+ const gchar *type_name;
+ guint class_size;
+ guint instance_size;
+};
+# 623 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef enum
+{
+ G_TYPE_DEBUG_NONE = 0,
+ G_TYPE_DEBUG_OBJECTS = 1 << 0,
+ G_TYPE_DEBUG_SIGNALS = 1 << 1,
+ G_TYPE_DEBUG_MASK = 0x03
+} GTypeDebugFlags;
+
+
+
+void g_type_init (void);
+void g_type_init_with_debug_flags (GTypeDebugFlags debug_flags);
+const gchar* g_type_name (GType type);
+GQuark g_type_qname (GType type);
+GType g_type_from_name (const gchar *name);
+GType g_type_parent (GType type);
+guint g_type_depth (GType type);
+GType g_type_next_base (GType leaf_type,
+ GType root_type);
+gboolean g_type_is_a (GType type,
+ GType is_a_type);
+gpointer g_type_class_ref (GType type);
+gpointer g_type_class_peek (GType type);
+gpointer g_type_class_peek_static (GType type);
+void g_type_class_unref (gpointer g_class);
+gpointer g_type_class_peek_parent (gpointer g_class);
+gpointer g_type_interface_peek (gpointer instance_class,
+ GType iface_type);
+gpointer g_type_interface_peek_parent (gpointer g_iface);
+
+gpointer g_type_default_interface_ref (GType g_type);
+gpointer g_type_default_interface_peek (GType g_type);
+void g_type_default_interface_unref (gpointer g_iface);
+
+
+GType* g_type_children (GType type,
+ guint *n_children);
+GType* g_type_interfaces (GType type,
+ guint *n_interfaces);
+
+
+void g_type_set_qdata (GType type,
+ GQuark quark,
+ gpointer data);
+gpointer g_type_get_qdata (GType type,
+ GQuark quark);
+void g_type_query (GType type,
+ GTypeQuery *query);
+# 687 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef void (*GBaseInitFunc) (gpointer g_class);
+# 698 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef void (*GBaseFinalizeFunc) (gpointer g_class);
+# 803 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef void (*GClassInitFunc) (gpointer g_class,
+ gpointer class_data);
+# 818 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef void (*GClassFinalizeFunc) (gpointer g_class,
+ gpointer class_data);
+# 833 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef void (*GInstanceInitFunc) (GTypeInstance *instance,
+ gpointer g_class);
+# 844 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef void (*GInterfaceInitFunc) (gpointer g_iface,
+ gpointer iface_data);
+# 855 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef void (*GInterfaceFinalizeFunc) (gpointer g_iface,
+ gpointer iface_data);
+# 875 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef gboolean (*GTypeClassCacheFunc) (gpointer cache_data,
+ GTypeClass *g_class);
+# 887 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef void (*GTypeInterfaceCheckFunc) (gpointer check_data,
+ gpointer g_iface);
+# 899 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef enum
+{
+ G_TYPE_FLAG_CLASSED = (1 << 0),
+ G_TYPE_FLAG_INSTANTIATABLE = (1 << 1),
+ G_TYPE_FLAG_DERIVABLE = (1 << 2),
+ G_TYPE_FLAG_DEEP_DERIVABLE = (1 << 3)
+} GTypeFundamentalFlags;
+# 916 "/usr/include/glib-2.0/gobject/gtype.h"
+typedef enum
+{
+ G_TYPE_FLAG_ABSTRACT = (1 << 4),
+ G_TYPE_FLAG_VALUE_ABSTRACT = (1 << 5)
+} GTypeFlags;
+# 951 "/usr/include/glib-2.0/gobject/gtype.h"
+struct _GTypeInfo
+{
+
+ guint16 class_size;
+
+ GBaseInitFunc base_init;
+ GBaseFinalizeFunc base_finalize;
+
+
+ GClassInitFunc class_init;
+ GClassFinalizeFunc class_finalize;
+ gconstpointer class_data;
+
+
+ guint16 instance_size;
+ guint16 n_preallocs;
+ GInstanceInitFunc instance_init;
+
+
+ const GTypeValueTable *value_table;
+};
+
+
+
+
+
+
+
+struct _GTypeFundamentalInfo
+{
+ GTypeFundamentalFlags type_flags;
+};
+# 992 "/usr/include/glib-2.0/gobject/gtype.h"
+struct _GInterfaceInfo
+{
+ GInterfaceInitFunc interface_init;
+ GInterfaceFinalizeFunc interface_finalize;
+ gpointer interface_data;
+};
+# 1166 "/usr/include/glib-2.0/gobject/gtype.h"
+struct _GTypeValueTable
+{
+ void (*value_init) (GValue *value);
+ void (*value_free) (GValue *value);
+ void (*value_copy) (const GValue *src_value,
+ GValue *dest_value);
+
+ gpointer (*value_peek_pointer) (const GValue *value);
+ gchar *collect_format;
+ gchar* (*collect_value) (GValue *value,
+ guint n_collect_values,
+ GTypeCValue *collect_values,
+ guint collect_flags);
+ gchar *lcopy_format;
+ gchar* (*lcopy_value) (const GValue *value,
+ guint n_collect_values,
+ GTypeCValue *collect_values,
+ guint collect_flags);
+};
+GType g_type_register_static (GType parent_type,
+ const gchar *type_name,
+ const GTypeInfo *info,
+ GTypeFlags flags);
+GType g_type_register_static_simple (GType parent_type,
+ const gchar *type_name,
+ guint class_size,
+ GClassInitFunc class_init,
+ guint instance_size,
+ GInstanceInitFunc instance_init,
+ GTypeFlags flags);
+
+GType g_type_register_dynamic (GType parent_type,
+ const gchar *type_name,
+ GTypePlugin *plugin,
+ GTypeFlags flags);
+GType g_type_register_fundamental (GType type_id,
+ const gchar *type_name,
+ const GTypeInfo *info,
+ const GTypeFundamentalInfo *finfo,
+ GTypeFlags flags);
+void g_type_add_interface_static (GType instance_type,
+ GType interface_type,
+ const GInterfaceInfo *info);
+void g_type_add_interface_dynamic (GType instance_type,
+ GType interface_type,
+ GTypePlugin *plugin);
+void g_type_interface_add_prerequisite (GType interface_type,
+ GType prerequisite_type);
+GType*g_type_interface_prerequisites (GType interface_type,
+ guint *n_prerequisites);
+void g_type_class_add_private (gpointer g_class,
+ gsize private_size);
+gpointer g_type_instance_get_private (GTypeInstance *instance,
+ GType private_type);
+# 1404 "/usr/include/glib-2.0/gobject/gtype.h"
+GTypePlugin* g_type_get_plugin (GType type);
+GTypePlugin* g_type_interface_get_plugin (GType instance_type,
+ GType interface_type);
+GType g_type_fundamental_next (void);
+GType g_type_fundamental (GType type_id);
+GTypeInstance* g_type_create_instance (GType type);
+void g_type_free_instance (GTypeInstance *instance);
+
+void g_type_add_class_cache_func (gpointer cache_data,
+ GTypeClassCacheFunc cache_func);
+void g_type_remove_class_cache_func (gpointer cache_data,
+ GTypeClassCacheFunc cache_func);
+void g_type_class_unref_uncached (gpointer g_class);
+
+void g_type_add_interface_check (gpointer check_data,
+ GTypeInterfaceCheckFunc check_func);
+void g_type_remove_interface_check (gpointer check_data,
+ GTypeInterfaceCheckFunc check_func);
+
+GTypeValueTable* g_type_value_table_peek (GType type);
+
+
+
+gboolean g_type_check_instance (GTypeInstance *instance) __attribute__((__pure__));
+GTypeInstance* g_type_check_instance_cast (GTypeInstance *instance,
+ GType iface_type);
+gboolean g_type_check_instance_is_a (GTypeInstance *instance,
+ GType iface_type) __attribute__((__pure__));
+GTypeClass* g_type_check_class_cast (GTypeClass *g_class,
+ GType is_a_type);
+gboolean g_type_check_class_is_a (GTypeClass *g_class,
+ GType is_a_type) __attribute__((__pure__));
+gboolean g_type_check_is_value_type (GType type) __attribute__((__const__));
+gboolean g_type_check_value (GValue *value) __attribute__((__pure__));
+gboolean g_type_check_value_holds (GValue *value,
+ GType type) __attribute__((__pure__));
+gboolean g_type_test_flags (GType type,
+ guint flags) __attribute__((__const__));
+
+
+
+const gchar* g_type_name_from_instance (GTypeInstance *instance);
+const gchar* g_type_name_from_class (GTypeClass *g_class);
+
+
+
+__attribute__((visibility("hidden"))) void g_value_c_init (void);
+__attribute__((visibility("hidden"))) void g_value_types_init (void);
+__attribute__((visibility("hidden"))) void g_enum_types_init (void);
+__attribute__((visibility("hidden"))) void g_param_type_init (void);
+__attribute__((visibility("hidden"))) void g_boxed_type_init (void);
+__attribute__((visibility("hidden"))) void g_object_type_init (void);
+__attribute__((visibility("hidden"))) void g_param_spec_types_init (void);
+__attribute__((visibility("hidden"))) void g_value_transforms_init (void);
+__attribute__((visibility("hidden"))) void g_signal_init (void);
+# 1511 "/usr/include/glib-2.0/gobject/gtype.h"
+extern GTypeDebugFlags _g_type_debug_flags;
+
+
+# 27 "/usr/include/glib-2.0/gobject/gboxed.h" 2
+
+
+# 53 "/usr/include/glib-2.0/gobject/gboxed.h"
+typedef gpointer (*GBoxedCopyFunc) (gpointer boxed);
+# 62 "/usr/include/glib-2.0/gobject/gboxed.h"
+typedef void (*GBoxedFreeFunc) (gpointer boxed);
+
+
+
+gpointer g_boxed_copy (GType boxed_type,
+ gconstpointer src_boxed);
+void g_boxed_free (GType boxed_type,
+ gpointer boxed);
+void g_value_set_boxed (GValue *value,
+ gconstpointer v_boxed);
+void g_value_set_static_boxed (GValue *value,
+ gconstpointer v_boxed);
+gpointer g_value_get_boxed (const GValue *value);
+gpointer g_value_dup_boxed (const GValue *value);
+
+
+
+GType g_boxed_type_register_static (const gchar *name,
+ GBoxedCopyFunc boxed_copy,
+ GBoxedFreeFunc boxed_free);
+# 167 "/usr/include/glib-2.0/gobject/gboxed.h"
+void g_value_take_boxed (GValue *value,
+ gconstpointer v_boxed);
+
+void g_value_set_boxed_take_ownership (GValue *value,
+ gconstpointer v_boxed);
+
+GType g_closure_get_type (void) __attribute__((__const__));
+GType g_value_get_type (void) __attribute__((__const__));
+GType g_value_array_get_type (void) __attribute__((__const__));
+GType g_date_get_type (void) __attribute__((__const__));
+GType g_strv_get_type (void) __attribute__((__const__));
+GType g_gstring_get_type (void) __attribute__((__const__));
+GType g_hash_table_get_type (void) __attribute__((__const__));
+GType g_regex_get_type (void) __attribute__((__const__));
+
+
+
+
+
+
+typedef gchar** GStrv;
+
+
+# 26 "/usr/include/glib-2.0/glib-object.h" 2
+# 1 "/usr/include/glib-2.0/gobject/genums.h" 1
+# 26 "/usr/include/glib-2.0/gobject/genums.h"
+# 1 "/usr/include/glib-2.0/gobject/gtype.h" 1
+# 27 "/usr/include/glib-2.0/gobject/genums.h" 2
+
+
+# 140 "/usr/include/glib-2.0/gobject/genums.h"
+typedef struct _GEnumClass GEnumClass;
+typedef struct _GFlagsClass GFlagsClass;
+typedef struct _GEnumValue GEnumValue;
+typedef struct _GFlagsValue GFlagsValue;
+# 157 "/usr/include/glib-2.0/gobject/genums.h"
+struct _GEnumClass
+{
+ GTypeClass g_type_class;
+
+
+ gint minimum;
+ gint maximum;
+ guint n_values;
+ GEnumValue *values;
+};
+# 178 "/usr/include/glib-2.0/gobject/genums.h"
+struct _GFlagsClass
+{
+ GTypeClass g_type_class;
+
+
+ guint mask;
+ guint n_values;
+ GFlagsValue *values;
+};
+# 196 "/usr/include/glib-2.0/gobject/genums.h"
+struct _GEnumValue
+{
+ gint value;
+ const gchar *value_name;
+ const gchar *value_nick;
+};
+# 211 "/usr/include/glib-2.0/gobject/genums.h"
+struct _GFlagsValue
+{
+ guint value;
+ const gchar *value_name;
+ const gchar *value_nick;
+};
+
+
+
+GEnumValue* g_enum_get_value (GEnumClass *enum_class,
+ gint value);
+GEnumValue* g_enum_get_value_by_name (GEnumClass *enum_class,
+ const gchar *name);
+GEnumValue* g_enum_get_value_by_nick (GEnumClass *enum_class,
+ const gchar *nick);
+GFlagsValue* g_flags_get_first_value (GFlagsClass *flags_class,
+ guint value);
+GFlagsValue* g_flags_get_value_by_name (GFlagsClass *flags_class,
+ const gchar *name);
+GFlagsValue* g_flags_get_value_by_nick (GFlagsClass *flags_class,
+ const gchar *nick);
+void g_value_set_enum (GValue *value,
+ gint v_enum);
+gint g_value_get_enum (const GValue *value);
+void g_value_set_flags (GValue *value,
+ guint v_flags);
+guint g_value_get_flags (const GValue *value);
+
+
+
+
+
+
+
+GType g_enum_register_static (const gchar *name,
+ const GEnumValue *const_static_values);
+GType g_flags_register_static (const gchar *name,
+ const GFlagsValue *const_static_values);
+
+
+
+void g_enum_complete_type_info (GType g_enum_type,
+ GTypeInfo *info,
+ const GEnumValue *const_values);
+void g_flags_complete_type_info (GType g_flags_type,
+ GTypeInfo *info,
+ const GFlagsValue *const_values);
+
+
+# 27 "/usr/include/glib-2.0/glib-object.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gobject.h" 1
+# 26 "/usr/include/glib-2.0/gobject/gobject.h"
+# 1 "/usr/include/glib-2.0/gobject/gtype.h" 1
+# 27 "/usr/include/glib-2.0/gobject/gobject.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gvalue.h" 1
+# 28 "/usr/include/glib-2.0/gobject/gvalue.h"
+# 1 "/usr/include/glib-2.0/gobject/gtype.h" 1
+# 29 "/usr/include/glib-2.0/gobject/gvalue.h" 2
+
+
+# 94 "/usr/include/glib-2.0/gobject/gvalue.h"
+typedef void (*GValueTransform) (const GValue *src_value,
+ GValue *dest_value);
+# 108 "/usr/include/glib-2.0/gobject/gvalue.h"
+struct _GValue
+{
+
+ GType g_type;
+
+
+ union {
+ gint v_int;
+ guint v_uint;
+ glong v_long;
+ gulong v_ulong;
+ gint64 v_int64;
+ guint64 v_uint64;
+ gfloat v_float;
+ gdouble v_double;
+ gpointer v_pointer;
+ } data[2];
+};
+
+
+
+GValue* g_value_init (GValue *value,
+ GType g_type);
+void g_value_copy (const GValue *src_value,
+ GValue *dest_value);
+GValue* g_value_reset (GValue *value);
+void g_value_unset (GValue *value);
+void g_value_set_instance (GValue *value,
+ gpointer instance);
+
+
+
+gboolean g_value_fits_pointer (const GValue *value);
+gpointer g_value_peek_pointer (const GValue *value);
+
+
+
+gboolean g_value_type_compatible (GType src_type,
+ GType dest_type);
+gboolean g_value_type_transformable (GType src_type,
+ GType dest_type);
+gboolean g_value_transform (const GValue *src_value,
+ GValue *dest_value);
+void g_value_register_transform_func (GType src_type,
+ GType dest_type,
+ GValueTransform transform_func);
+
+
+
+
+# 28 "/usr/include/glib-2.0/gobject/gobject.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gparam.h" 1
+# 28 "/usr/include/glib-2.0/gobject/gparam.h"
+# 1 "/usr/include/glib-2.0/gobject/gvalue.h" 1
+# 29 "/usr/include/glib-2.0/gobject/gparam.h" 2
+
+
+# 139 "/usr/include/glib-2.0/gobject/gparam.h"
+typedef enum
+{
+ G_PARAM_READABLE = 1 << 0,
+ G_PARAM_WRITABLE = 1 << 1,
+ G_PARAM_CONSTRUCT = 1 << 2,
+ G_PARAM_CONSTRUCT_ONLY = 1 << 3,
+ G_PARAM_LAX_VALIDATION = 1 << 4,
+ G_PARAM_STATIC_NAME = 1 << 5,
+
+ G_PARAM_PRIVATE = G_PARAM_STATIC_NAME,
+
+ G_PARAM_STATIC_NICK = 1 << 6,
+ G_PARAM_STATIC_BLURB = 1 << 7
+} GParamFlags;
+# 184 "/usr/include/glib-2.0/gobject/gparam.h"
+typedef struct _GParamSpec GParamSpec;
+typedef struct _GParamSpecClass GParamSpecClass;
+typedef struct _GParameter GParameter;
+typedef struct _GParamSpecPool GParamSpecPool;
+# 199 "/usr/include/glib-2.0/gobject/gparam.h"
+struct _GParamSpec
+{
+ GTypeInstance g_type_instance;
+
+ gchar *name;
+ GParamFlags flags;
+ GType value_type;
+ GType owner_type;
+
+
+ gchar *_nick;
+ gchar *_blurb;
+ GData *qdata;
+ guint ref_count;
+ guint param_id;
+};
+# 234 "/usr/include/glib-2.0/gobject/gparam.h"
+struct _GParamSpecClass
+{
+ GTypeClass g_type_class;
+
+ GType value_type;
+
+ void (*finalize) (GParamSpec *pspec);
+
+
+ void (*value_set_default) (GParamSpec *pspec,
+ GValue *value);
+ gboolean (*value_validate) (GParamSpec *pspec,
+ GValue *value);
+ gint (*values_cmp) (GParamSpec *pspec,
+ const GValue *value1,
+ const GValue *value2);
+
+ gpointer dummy[4];
+};
+# 261 "/usr/include/glib-2.0/gobject/gparam.h"
+struct _GParameter
+{
+ const gchar *name;
+ GValue value;
+};
+
+
+
+GParamSpec* g_param_spec_ref (GParamSpec *pspec);
+void g_param_spec_unref (GParamSpec *pspec);
+void g_param_spec_sink (GParamSpec *pspec);
+GParamSpec* g_param_spec_ref_sink (GParamSpec *pspec);
+gpointer g_param_spec_get_qdata (GParamSpec *pspec,
+ GQuark quark);
+void g_param_spec_set_qdata (GParamSpec *pspec,
+ GQuark quark,
+ gpointer data);
+void g_param_spec_set_qdata_full (GParamSpec *pspec,
+ GQuark quark,
+ gpointer data,
+ GDestroyNotify destroy);
+gpointer g_param_spec_steal_qdata (GParamSpec *pspec,
+ GQuark quark);
+GParamSpec* g_param_spec_get_redirect_target (GParamSpec *pspec);
+
+void g_param_value_set_default (GParamSpec *pspec,
+ GValue *value);
+gboolean g_param_value_defaults (GParamSpec *pspec,
+ GValue *value);
+gboolean g_param_value_validate (GParamSpec *pspec,
+ GValue *value);
+gboolean g_param_value_convert (GParamSpec *pspec,
+ const GValue *src_value,
+ GValue *dest_value,
+ gboolean strict_validation);
+gint g_param_values_cmp (GParamSpec *pspec,
+ const GValue *value1,
+ const GValue *value2);
+const gchar* g_param_spec_get_name (GParamSpec *pspec);
+const gchar* g_param_spec_get_nick (GParamSpec *pspec);
+const gchar* g_param_spec_get_blurb (GParamSpec *pspec);
+void g_value_set_param (GValue *value,
+ GParamSpec *param);
+GParamSpec* g_value_get_param (const GValue *value);
+GParamSpec* g_value_dup_param (const GValue *value);
+
+
+void g_value_take_param (GValue *value,
+ GParamSpec *param);
+
+void g_value_set_param_take_ownership (GValue *value,
+ GParamSpec *param);
+
+
+
+typedef struct _GParamSpecTypeInfo GParamSpecTypeInfo;
+# 341 "/usr/include/glib-2.0/gobject/gparam.h"
+struct _GParamSpecTypeInfo
+{
+
+ guint16 instance_size;
+ guint16 n_preallocs;
+ void (*instance_init) (GParamSpec *pspec);
+
+
+ GType value_type;
+ void (*finalize) (GParamSpec *pspec);
+ void (*value_set_default) (GParamSpec *pspec,
+ GValue *value);
+ gboolean (*value_validate) (GParamSpec *pspec,
+ GValue *value);
+ gint (*values_cmp) (GParamSpec *pspec,
+ const GValue *value1,
+ const GValue *value2);
+};
+GType g_param_type_register_static (const gchar *name,
+ const GParamSpecTypeInfo *pspec_info);
+
+
+GType _g_param_type_register_static_constant (const gchar *name,
+ const GParamSpecTypeInfo *pspec_info,
+ GType opt_type);
+
+
+
+gpointer g_param_spec_internal (GType param_type,
+ const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags);
+GParamSpecPool* g_param_spec_pool_new (gboolean type_prefixing);
+void g_param_spec_pool_insert (GParamSpecPool *pool,
+ GParamSpec *pspec,
+ GType owner_type);
+void g_param_spec_pool_remove (GParamSpecPool *pool,
+ GParamSpec *pspec);
+GParamSpec* g_param_spec_pool_lookup (GParamSpecPool *pool,
+ const gchar *param_name,
+ GType owner_type,
+ gboolean walk_ancestors);
+GList* g_param_spec_pool_list_owned (GParamSpecPool *pool,
+ GType owner_type);
+GParamSpec** g_param_spec_pool_list (GParamSpecPool *pool,
+ GType owner_type,
+ guint *n_pspecs_p);
+# 408 "/usr/include/glib-2.0/gobject/gparam.h"
+
+# 29 "/usr/include/glib-2.0/gobject/gobject.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gclosure.h" 1
+# 27 "/usr/include/glib-2.0/gobject/gclosure.h"
+# 1 "/usr/include/glib-2.0/gobject/gtype.h" 1
+# 28 "/usr/include/glib-2.0/gobject/gclosure.h" 2
+
+
+# 76 "/usr/include/glib-2.0/gobject/gclosure.h"
+typedef struct _GClosure GClosure;
+typedef struct _GClosureNotifyData GClosureNotifyData;
+# 88 "/usr/include/glib-2.0/gobject/gclosure.h"
+typedef void (*GCallback) (void);
+# 97 "/usr/include/glib-2.0/gobject/gclosure.h"
+typedef void (*GClosureNotify) (gpointer data,
+ GClosure *closure);
+# 114 "/usr/include/glib-2.0/gobject/gclosure.h"
+typedef void (*GClosureMarshal) (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+
+
+
+
+
+typedef struct _GCClosure GCClosure;
+
+
+
+struct _GClosureNotifyData
+{
+ gpointer data;
+ GClosureNotify notify;
+};
+# 145 "/usr/include/glib-2.0/gobject/gclosure.h"
+struct _GClosure
+{
+
+ volatile guint ref_count : 15;
+ volatile guint meta_marshal : 1;
+ volatile guint n_guards : 1;
+ volatile guint n_fnotifiers : 2;
+ volatile guint n_inotifiers : 8;
+ volatile guint in_inotify : 1;
+ volatile guint floating : 1;
+
+ volatile guint derivative_flag : 1;
+
+ volatile guint in_marshal : 1;
+ volatile guint is_invalid : 1;
+
+ void (*marshal) (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+ gpointer data;
+
+ GClosureNotifyData *notifiers;
+# 181 "/usr/include/glib-2.0/gobject/gclosure.h"
+};
+
+
+struct _GCClosure
+{
+ GClosure closure;
+ gpointer callback;
+};
+
+
+
+GClosure* g_cclosure_new (GCallback callback_func,
+ gpointer user_data,
+ GClosureNotify destroy_data);
+GClosure* g_cclosure_new_swap (GCallback callback_func,
+ gpointer user_data,
+ GClosureNotify destroy_data);
+GClosure* g_signal_type_cclosure_new (GType itype,
+ guint struct_offset);
+
+
+
+GClosure* g_closure_ref (GClosure *closure);
+void g_closure_sink (GClosure *closure);
+void g_closure_unref (GClosure *closure);
+
+GClosure* g_closure_new_simple (guint sizeof_closure,
+ gpointer data);
+void g_closure_add_finalize_notifier (GClosure *closure,
+ gpointer notify_data,
+ GClosureNotify notify_func);
+void g_closure_remove_finalize_notifier (GClosure *closure,
+ gpointer notify_data,
+ GClosureNotify notify_func);
+void g_closure_add_invalidate_notifier (GClosure *closure,
+ gpointer notify_data,
+ GClosureNotify notify_func);
+void g_closure_remove_invalidate_notifier (GClosure *closure,
+ gpointer notify_data,
+ GClosureNotify notify_func);
+void g_closure_add_marshal_guards (GClosure *closure,
+ gpointer pre_marshal_data,
+ GClosureNotify pre_marshal_notify,
+ gpointer post_marshal_data,
+ GClosureNotify post_marshal_notify);
+void g_closure_set_marshal (GClosure *closure,
+ GClosureMarshal marshal);
+void g_closure_set_meta_marshal (GClosure *closure,
+ gpointer marshal_data,
+ GClosureMarshal meta_marshal);
+void g_closure_invalidate (GClosure *closure);
+void g_closure_invoke (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint);
+# 249 "/usr/include/glib-2.0/gobject/gclosure.h"
+
+# 30 "/usr/include/glib-2.0/gobject/gobject.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gsignal.h" 1
+# 26 "/usr/include/glib-2.0/gobject/gsignal.h"
+# 1 "/usr/include/glib-2.0/gobject/gclosure.h" 1
+# 27 "/usr/include/glib-2.0/gobject/gsignal.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gvalue.h" 1
+# 28 "/usr/include/glib-2.0/gobject/gsignal.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gparam.h" 1
+# 29 "/usr/include/glib-2.0/gobject/gsignal.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gmarshal.h" 1
+
+
+
+
+
+
+extern void g_cclosure_marshal_VOID__VOID (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__BOOLEAN (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__CHAR (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__UCHAR (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__INT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__UINT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__LONG (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__ULONG (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__ENUM (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__FLAGS (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__FLOAT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__DOUBLE (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__PARAM (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__BOXED (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__OBJECT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_VOID__UINT_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void g_cclosure_marshal_BOOLEAN__FLAGS (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+
+extern void g_cclosure_marshal_STRING__OBJECT_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+# 30 "/usr/include/glib-2.0/gobject/gsignal.h" 2
+
+
+
+
+typedef struct _GSignalQuery GSignalQuery;
+typedef struct _GSignalInvocationHint GSignalInvocationHint;
+# 45 "/usr/include/glib-2.0/gobject/gsignal.h"
+typedef GClosureMarshal GSignalCMarshaller;
+# 64 "/usr/include/glib-2.0/gobject/gsignal.h"
+typedef gboolean (*GSignalEmissionHook) (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer data);
+# 87 "/usr/include/glib-2.0/gobject/gsignal.h"
+typedef gboolean (*GSignalAccumulator) (GSignalInvocationHint *ihint,
+ GValue *return_accu,
+ const GValue *handler_return,
+ gpointer data);
+# 116 "/usr/include/glib-2.0/gobject/gsignal.h"
+typedef enum
+{
+ G_SIGNAL_RUN_FIRST = 1 << 0,
+ G_SIGNAL_RUN_LAST = 1 << 1,
+ G_SIGNAL_RUN_CLEANUP = 1 << 2,
+ G_SIGNAL_NO_RECURSE = 1 << 3,
+ G_SIGNAL_DETAILED = 1 << 4,
+ G_SIGNAL_ACTION = 1 << 5,
+ G_SIGNAL_NO_HOOKS = 1 << 6
+} GSignalFlags;
+# 142 "/usr/include/glib-2.0/gobject/gsignal.h"
+typedef enum
+{
+ G_CONNECT_AFTER = 1 << 0,
+ G_CONNECT_SWAPPED = 1 << 1
+} GConnectFlags;
+# 160 "/usr/include/glib-2.0/gobject/gsignal.h"
+typedef enum
+{
+ G_SIGNAL_MATCH_ID = 1 << 0,
+ G_SIGNAL_MATCH_DETAIL = 1 << 1,
+ G_SIGNAL_MATCH_CLOSURE = 1 << 2,
+ G_SIGNAL_MATCH_FUNC = 1 << 3,
+ G_SIGNAL_MATCH_DATA = 1 << 4,
+ G_SIGNAL_MATCH_UNBLOCKED = 1 << 5
+} GSignalMatchType;
+# 211 "/usr/include/glib-2.0/gobject/gsignal.h"
+struct _GSignalInvocationHint
+{
+ guint signal_id;
+ GQuark detail;
+ GSignalFlags run_type;
+};
+# 237 "/usr/include/glib-2.0/gobject/gsignal.h"
+struct _GSignalQuery
+{
+ guint signal_id;
+ const gchar *signal_name;
+ GType itype;
+ GSignalFlags signal_flags;
+ GType return_type;
+ guint n_params;
+ const GType *param_types;
+};
+
+
+
+guint g_signal_newv (const gchar *signal_name,
+ GType itype,
+ GSignalFlags signal_flags,
+ GClosure *class_closure,
+ GSignalAccumulator accumulator,
+ gpointer accu_data,
+ GSignalCMarshaller c_marshaller,
+ GType return_type,
+ guint n_params,
+ GType *param_types);
+guint g_signal_new_valist (const gchar *signal_name,
+ GType itype,
+ GSignalFlags signal_flags,
+ GClosure *class_closure,
+ GSignalAccumulator accumulator,
+ gpointer accu_data,
+ GSignalCMarshaller c_marshaller,
+ GType return_type,
+ guint n_params,
+ va_list args);
+guint g_signal_new (const gchar *signal_name,
+ GType itype,
+ GSignalFlags signal_flags,
+ guint class_offset,
+ GSignalAccumulator accumulator,
+ gpointer accu_data,
+ GSignalCMarshaller c_marshaller,
+ GType return_type,
+ guint n_params,
+ ...);
+guint g_signal_new_class_handler (const gchar *signal_name,
+ GType itype,
+ GSignalFlags signal_flags,
+ GCallback class_handler,
+ GSignalAccumulator accumulator,
+ gpointer accu_data,
+ GSignalCMarshaller c_marshaller,
+ GType return_type,
+ guint n_params,
+ ...);
+
+void g_signal_emitv (const GValue *instance_and_params,
+ guint signal_id,
+ GQuark detail,
+ GValue *return_value);
+void g_signal_emit_valist (gpointer instance,
+ guint signal_id,
+ GQuark detail,
+ va_list var_args);
+void g_signal_emit (gpointer instance,
+ guint signal_id,
+ GQuark detail,
+ ...);
+void g_signal_emit_by_name (gpointer instance,
+ const gchar *detailed_signal,
+ ...);
+guint g_signal_lookup (const gchar *name,
+ GType itype);
+const gchar* g_signal_name (guint signal_id);
+void g_signal_query (guint signal_id,
+ GSignalQuery *query);
+guint* g_signal_list_ids (GType itype,
+ guint *n_ids);
+gboolean g_signal_parse_name (const gchar *detailed_signal,
+ GType itype,
+ guint *signal_id_p,
+ GQuark *detail_p,
+ gboolean force_detail_quark);
+GSignalInvocationHint* g_signal_get_invocation_hint (gpointer instance);
+
+
+
+void g_signal_stop_emission (gpointer instance,
+ guint signal_id,
+ GQuark detail);
+void g_signal_stop_emission_by_name (gpointer instance,
+ const gchar *detailed_signal);
+gulong g_signal_add_emission_hook (guint signal_id,
+ GQuark detail,
+ GSignalEmissionHook hook_func,
+ gpointer hook_data,
+ GDestroyNotify data_destroy);
+void g_signal_remove_emission_hook (guint signal_id,
+ gulong hook_id);
+
+
+
+gboolean g_signal_has_handler_pending (gpointer instance,
+ guint signal_id,
+ GQuark detail,
+ gboolean may_be_blocked);
+gulong g_signal_connect_closure_by_id (gpointer instance,
+ guint signal_id,
+ GQuark detail,
+ GClosure *closure,
+ gboolean after);
+gulong g_signal_connect_closure (gpointer instance,
+ const gchar *detailed_signal,
+ GClosure *closure,
+ gboolean after);
+gulong g_signal_connect_data (gpointer instance,
+ const gchar *detailed_signal,
+ GCallback c_handler,
+ gpointer data,
+ GClosureNotify destroy_data,
+ GConnectFlags connect_flags);
+void g_signal_handler_block (gpointer instance,
+ gulong handler_id);
+void g_signal_handler_unblock (gpointer instance,
+ gulong handler_id);
+void g_signal_handler_disconnect (gpointer instance,
+ gulong handler_id);
+gboolean g_signal_handler_is_connected (gpointer instance,
+ gulong handler_id);
+gulong g_signal_handler_find (gpointer instance,
+ GSignalMatchType mask,
+ guint signal_id,
+ GQuark detail,
+ GClosure *closure,
+ gpointer func,
+ gpointer data);
+guint g_signal_handlers_block_matched (gpointer instance,
+ GSignalMatchType mask,
+ guint signal_id,
+ GQuark detail,
+ GClosure *closure,
+ gpointer func,
+ gpointer data);
+guint g_signal_handlers_unblock_matched (gpointer instance,
+ GSignalMatchType mask,
+ guint signal_id,
+ GQuark detail,
+ GClosure *closure,
+ gpointer func,
+ gpointer data);
+guint g_signal_handlers_disconnect_matched (gpointer instance,
+ GSignalMatchType mask,
+ guint signal_id,
+ GQuark detail,
+ GClosure *closure,
+ gpointer func,
+ gpointer data);
+
+
+
+void g_signal_override_class_closure (guint signal_id,
+ GType instance_type,
+ GClosure *class_closure);
+void g_signal_override_class_handler (const gchar *signal_name,
+ GType instance_type,
+ GCallback class_handler);
+void g_signal_chain_from_overridden (const GValue *instance_and_params,
+ GValue *return_value);
+void g_signal_chain_from_overridden_handler (gpointer instance,
+ ...);
+# 498 "/usr/include/glib-2.0/gobject/gsignal.h"
+gboolean g_signal_accumulator_true_handled (GSignalInvocationHint *ihint,
+ GValue *return_accu,
+ const GValue *handler_return,
+ gpointer dummy);
+
+
+void g_signal_handlers_destroy (gpointer instance);
+void _g_signals_destroy (GType itype);
+
+
+# 31 "/usr/include/glib-2.0/gobject/gobject.h" 2
+
+
+# 184 "/usr/include/glib-2.0/gobject/gobject.h"
+typedef struct _GObject GObject;
+typedef struct _GObjectClass GObjectClass;
+typedef struct _GObject GInitiallyUnowned;
+typedef struct _GObjectClass GInitiallyUnownedClass;
+typedef struct _GObjectConstructParam GObjectConstructParam;
+# 199 "/usr/include/glib-2.0/gobject/gobject.h"
+typedef void (*GObjectGetPropertyFunc) (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec);
+# 213 "/usr/include/glib-2.0/gobject/gobject.h"
+typedef void (*GObjectSetPropertyFunc) (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec);
+
+
+
+
+
+
+typedef void (*GObjectFinalizeFunc) (GObject *object);
+# 234 "/usr/include/glib-2.0/gobject/gobject.h"
+typedef void (*GWeakNotify) (gpointer data,
+ GObject *where_the_object_was);
+
+
+
+
+
+
+struct _GObject
+{
+ GTypeInstance g_type_instance;
+
+
+ volatile guint ref_count;
+ GData *qdata;
+};
+# 312 "/usr/include/glib-2.0/gobject/gobject.h"
+struct _GObjectClass
+{
+ GTypeClass g_type_class;
+
+
+ GSList *construct_properties;
+
+
+
+ GObject* (*constructor) (GType type,
+ guint n_construct_properties,
+ GObjectConstructParam *construct_properties);
+
+ void (*set_property) (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec);
+ void (*get_property) (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec);
+ void (*dispose) (GObject *object);
+ void (*finalize) (GObject *object);
+
+ void (*dispatch_properties_changed) (GObject *object,
+ guint n_pspecs,
+ GParamSpec **pspecs);
+
+ void (*notify) (GObject *object,
+ GParamSpec *pspec);
+
+
+ void (*constructed) (GObject *object);
+
+
+
+ gpointer pdummy[7];
+};
+# 359 "/usr/include/glib-2.0/gobject/gobject.h"
+struct _GObjectConstructParam
+{
+ GParamSpec *pspec;
+ GValue *value;
+};
+# 380 "/usr/include/glib-2.0/gobject/gobject.h"
+GType g_initially_unowned_get_type (void);
+void g_object_class_install_property (GObjectClass *oclass,
+ guint property_id,
+ GParamSpec *pspec);
+GParamSpec* g_object_class_find_property (GObjectClass *oclass,
+ const gchar *property_name);
+GParamSpec**g_object_class_list_properties (GObjectClass *oclass,
+ guint *n_properties);
+void g_object_class_override_property (GObjectClass *oclass,
+ guint property_id,
+ const gchar *name);
+
+void g_object_interface_install_property (gpointer g_iface,
+ GParamSpec *pspec);
+GParamSpec* g_object_interface_find_property (gpointer g_iface,
+ const gchar *property_name);
+GParamSpec**g_object_interface_list_properties (gpointer g_iface,
+ guint *n_properties_p);
+
+GType g_object_get_type (void) __attribute__((__const__));
+gpointer g_object_new (GType object_type,
+ const gchar *first_property_name,
+ ...);
+gpointer g_object_newv (GType object_type,
+ guint n_parameters,
+ GParameter *parameters);
+GObject* g_object_new_valist (GType object_type,
+ const gchar *first_property_name,
+ va_list var_args);
+void g_object_set (gpointer object,
+ const gchar *first_property_name,
+ ...) __attribute__((__sentinel__));
+void g_object_get (gpointer object,
+ const gchar *first_property_name,
+ ...) __attribute__((__sentinel__));
+gpointer g_object_connect (gpointer object,
+ const gchar *signal_spec,
+ ...) __attribute__((__sentinel__));
+void g_object_disconnect (gpointer object,
+ const gchar *signal_spec,
+ ...) __attribute__((__sentinel__));
+void g_object_set_valist (GObject *object,
+ const gchar *first_property_name,
+ va_list var_args);
+void g_object_get_valist (GObject *object,
+ const gchar *first_property_name,
+ va_list var_args);
+void g_object_set_property (GObject *object,
+ const gchar *property_name,
+ const GValue *value);
+void g_object_get_property (GObject *object,
+ const gchar *property_name,
+ GValue *value);
+void g_object_freeze_notify (GObject *object);
+void g_object_notify (GObject *object,
+ const gchar *property_name);
+void g_object_thaw_notify (GObject *object);
+gboolean g_object_is_floating (gpointer object);
+gpointer g_object_ref_sink (gpointer object);
+gpointer g_object_ref (gpointer object);
+void g_object_unref (gpointer object);
+void g_object_weak_ref (GObject *object,
+ GWeakNotify notify,
+ gpointer data);
+void g_object_weak_unref (GObject *object,
+ GWeakNotify notify,
+ gpointer data);
+void g_object_add_weak_pointer (GObject *object,
+ gpointer *weak_pointer_location);
+void g_object_remove_weak_pointer (GObject *object,
+ gpointer *weak_pointer_location);
+# 464 "/usr/include/glib-2.0/gobject/gobject.h"
+typedef void (*GToggleNotify) (gpointer data,
+ GObject *object,
+ gboolean is_last_ref);
+
+void g_object_add_toggle_ref (GObject *object,
+ GToggleNotify notify,
+ gpointer data);
+void g_object_remove_toggle_ref (GObject *object,
+ GToggleNotify notify,
+ gpointer data);
+
+gpointer g_object_get_qdata (GObject *object,
+ GQuark quark);
+void g_object_set_qdata (GObject *object,
+ GQuark quark,
+ gpointer data);
+void g_object_set_qdata_full (GObject *object,
+ GQuark quark,
+ gpointer data,
+ GDestroyNotify destroy);
+gpointer g_object_steal_qdata (GObject *object,
+ GQuark quark);
+gpointer g_object_get_data (GObject *object,
+ const gchar *key);
+void g_object_set_data (GObject *object,
+ const gchar *key,
+ gpointer data);
+void g_object_set_data_full (GObject *object,
+ const gchar *key,
+ gpointer data,
+ GDestroyNotify destroy);
+gpointer g_object_steal_data (GObject *object,
+ const gchar *key);
+void g_object_watch_closure (GObject *object,
+ GClosure *closure);
+GClosure* g_cclosure_new_object (GCallback callback_func,
+ GObject *object);
+GClosure* g_cclosure_new_object_swap (GCallback callback_func,
+ GObject *object);
+GClosure* g_closure_new_object (guint sizeof_closure,
+ GObject *object);
+void g_value_set_object (GValue *value,
+ gpointer v_object);
+gpointer g_value_get_object (const GValue *value);
+gpointer g_value_dup_object (const GValue *value);
+gulong g_signal_connect_object (gpointer instance,
+ const gchar *detailed_signal,
+ GCallback c_handler,
+ gpointer gobject,
+ GConnectFlags connect_flags);
+
+
+void g_object_force_floating (GObject *object);
+void g_object_run_dispose (GObject *object);
+
+
+void g_value_take_object (GValue *value,
+ gpointer v_object);
+
+void g_value_set_object_take_ownership (GValue *value,
+ gpointer v_object);
+
+
+
+gsize g_object_compat_control (gsize what,
+ gpointer data);
+# 558 "/usr/include/glib-2.0/gobject/gobject.h"
+
+# 28 "/usr/include/glib-2.0/glib-object.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gparam.h" 1
+# 29 "/usr/include/glib-2.0/glib-object.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gparamspecs.h" 1
+# 28 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+# 1 "/usr/include/glib-2.0/gobject/gvalue.h" 1
+# 29 "/usr/include/glib-2.0/gobject/gparamspecs.h" 2
+# 1 "/usr/include/glib-2.0/gobject/genums.h" 1
+# 30 "/usr/include/glib-2.0/gobject/gparamspecs.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gboxed.h" 1
+# 31 "/usr/include/glib-2.0/gobject/gparamspecs.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gobject.h" 1
+# 32 "/usr/include/glib-2.0/gobject/gparamspecs.h" 2
+
+
+# 554 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+typedef struct _GParamSpecChar GParamSpecChar;
+typedef struct _GParamSpecUChar GParamSpecUChar;
+typedef struct _GParamSpecBoolean GParamSpecBoolean;
+typedef struct _GParamSpecInt GParamSpecInt;
+typedef struct _GParamSpecUInt GParamSpecUInt;
+typedef struct _GParamSpecLong GParamSpecLong;
+typedef struct _GParamSpecULong GParamSpecULong;
+typedef struct _GParamSpecInt64 GParamSpecInt64;
+typedef struct _GParamSpecUInt64 GParamSpecUInt64;
+typedef struct _GParamSpecUnichar GParamSpecUnichar;
+typedef struct _GParamSpecEnum GParamSpecEnum;
+typedef struct _GParamSpecFlags GParamSpecFlags;
+typedef struct _GParamSpecFloat GParamSpecFloat;
+typedef struct _GParamSpecDouble GParamSpecDouble;
+typedef struct _GParamSpecString GParamSpecString;
+typedef struct _GParamSpecParam GParamSpecParam;
+typedef struct _GParamSpecBoxed GParamSpecBoxed;
+typedef struct _GParamSpecPointer GParamSpecPointer;
+typedef struct _GParamSpecValueArray GParamSpecValueArray;
+typedef struct _GParamSpecObject GParamSpecObject;
+typedef struct _GParamSpecOverride GParamSpecOverride;
+typedef struct _GParamSpecGType GParamSpecGType;
+# 586 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecChar
+{
+ GParamSpec parent_instance;
+
+ gint8 minimum;
+ gint8 maximum;
+ gint8 default_value;
+};
+# 603 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecUChar
+{
+ GParamSpec parent_instance;
+
+ guint8 minimum;
+ guint8 maximum;
+ guint8 default_value;
+};
+
+
+
+
+
+
+
+struct _GParamSpecBoolean
+{
+ GParamSpec parent_instance;
+
+ gboolean default_value;
+};
+# 633 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecInt
+{
+ GParamSpec parent_instance;
+
+ gint minimum;
+ gint maximum;
+ gint default_value;
+};
+# 650 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecUInt
+{
+ GParamSpec parent_instance;
+
+ guint minimum;
+ guint maximum;
+ guint default_value;
+};
+# 667 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecLong
+{
+ GParamSpec parent_instance;
+
+ glong minimum;
+ glong maximum;
+ glong default_value;
+};
+# 684 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecULong
+{
+ GParamSpec parent_instance;
+
+ gulong minimum;
+ gulong maximum;
+ gulong default_value;
+};
+# 701 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecInt64
+{
+ GParamSpec parent_instance;
+
+ gint64 minimum;
+ gint64 maximum;
+ gint64 default_value;
+};
+# 718 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecUInt64
+{
+ GParamSpec parent_instance;
+
+ guint64 minimum;
+ guint64 maximum;
+ guint64 default_value;
+};
+
+
+
+
+
+
+
+struct _GParamSpecUnichar
+{
+ GParamSpec parent_instance;
+
+ gunichar default_value;
+};
+# 748 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecEnum
+{
+ GParamSpec parent_instance;
+
+ GEnumClass *enum_class;
+ gint default_value;
+};
+# 764 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecFlags
+{
+ GParamSpec parent_instance;
+
+ GFlagsClass *flags_class;
+ guint default_value;
+};
+# 782 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecFloat
+{
+ GParamSpec parent_instance;
+
+ gfloat minimum;
+ gfloat maximum;
+ gfloat default_value;
+ gfloat epsilon;
+};
+# 802 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecDouble
+{
+ GParamSpec parent_instance;
+
+ gdouble minimum;
+ gdouble maximum;
+ gdouble default_value;
+ gdouble epsilon;
+};
+# 824 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecString
+{
+ GParamSpec parent_instance;
+
+ gchar *default_value;
+ gchar *cset_first;
+ gchar *cset_nth;
+ gchar substitutor;
+ guint null_fold_if_empty : 1;
+ guint ensure_non_null : 1;
+};
+
+
+
+
+
+
+
+struct _GParamSpecParam
+{
+ GParamSpec parent_instance;
+};
+
+
+
+
+
+
+struct _GParamSpecBoxed
+{
+ GParamSpec parent_instance;
+};
+
+
+
+
+
+
+struct _GParamSpecPointer
+{
+ GParamSpec parent_instance;
+};
+# 874 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecValueArray
+{
+ GParamSpec parent_instance;
+ GParamSpec *element_spec;
+ guint fixed_n_elements;
+};
+
+
+
+
+
+
+struct _GParamSpecObject
+{
+ GParamSpec parent_instance;
+};
+# 904 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecOverride
+{
+
+ GParamSpec parent_instance;
+ GParamSpec *overridden;
+};
+# 919 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+struct _GParamSpecGType
+{
+ GParamSpec parent_instance;
+ GType is_a_type;
+};
+
+
+GParamSpec* g_param_spec_char (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gint8 minimum,
+ gint8 maximum,
+ gint8 default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_uchar (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ guint8 minimum,
+ guint8 maximum,
+ guint8 default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_boolean (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gboolean default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_int (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gint minimum,
+ gint maximum,
+ gint default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_uint (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ guint minimum,
+ guint maximum,
+ guint default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_long (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ glong minimum,
+ glong maximum,
+ glong default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_ulong (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gulong minimum,
+ gulong maximum,
+ gulong default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_int64 (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gint64 minimum,
+ gint64 maximum,
+ gint64 default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_uint64 (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ guint64 minimum,
+ guint64 maximum,
+ guint64 default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_unichar (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gunichar default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_enum (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GType enum_type,
+ gint default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_flags (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GType flags_type,
+ guint default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_float (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gfloat minimum,
+ gfloat maximum,
+ gfloat default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_double (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gdouble minimum,
+ gdouble maximum,
+ gdouble default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_string (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ const gchar *default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_param (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GType param_type,
+ GParamFlags flags);
+GParamSpec* g_param_spec_boxed (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GType boxed_type,
+ GParamFlags flags);
+GParamSpec* g_param_spec_pointer (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags);
+GParamSpec* g_param_spec_value_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamSpec *element_spec,
+ GParamFlags flags);
+GParamSpec* g_param_spec_object (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GType object_type,
+ GParamFlags flags);
+GParamSpec* g_param_spec_override (const gchar *name,
+ GParamSpec *overridden);
+GParamSpec* g_param_spec_gtype (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GType is_a_type,
+ GParamFlags flags);
+# 1079 "/usr/include/glib-2.0/gobject/gparamspecs.h"
+extern GType *g_param_spec_types;
+
+
+# 30 "/usr/include/glib-2.0/glib-object.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gsignal.h" 1
+# 31 "/usr/include/glib-2.0/glib-object.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gsourceclosure.h" 1
+# 26 "/usr/include/glib-2.0/gobject/gsourceclosure.h"
+# 1 "/usr/include/glib-2.0/gobject/gclosure.h" 1
+# 27 "/usr/include/glib-2.0/gobject/gsourceclosure.h" 2
+
+
+
+void g_source_set_closure (GSource *source,
+ GClosure *closure);
+
+GType g_io_channel_get_type (void);
+GType g_io_condition_get_type (void);
+# 49 "/usr/include/glib-2.0/gobject/gsourceclosure.h"
+
+# 32 "/usr/include/glib-2.0/glib-object.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gtype.h" 1
+# 33 "/usr/include/glib-2.0/glib-object.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gtypemodule.h" 1
+# 26 "/usr/include/glib-2.0/gobject/gtypemodule.h"
+# 1 "/usr/include/glib-2.0/gobject/gobject.h" 1
+# 27 "/usr/include/glib-2.0/gobject/gtypemodule.h" 2
+# 1 "/usr/include/glib-2.0/gobject/genums.h" 1
+# 28 "/usr/include/glib-2.0/gobject/gtypemodule.h" 2
+
+
+
+typedef struct _GTypeModule GTypeModule;
+typedef struct _GTypeModuleClass GTypeModuleClass;
+# 48 "/usr/include/glib-2.0/gobject/gtypemodule.h"
+struct _GTypeModule
+{
+ GObject parent_instance;
+
+ guint use_count;
+ GSList *type_infos;
+ GSList *interface_infos;
+
+
+ gchar *name;
+};
+# 70 "/usr/include/glib-2.0/gobject/gtypemodule.h"
+struct _GTypeModuleClass
+{
+ GObjectClass parent_class;
+
+
+ gboolean (* load) (GTypeModule *module);
+ void (* unload) (GTypeModule *module);
+
+
+
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+};
+# 219 "/usr/include/glib-2.0/gobject/gtypemodule.h"
+GType g_type_module_get_type (void) __attribute__((__const__));
+gboolean g_type_module_use (GTypeModule *module);
+void g_type_module_unuse (GTypeModule *module);
+void g_type_module_set_name (GTypeModule *module,
+ const gchar *name);
+GType g_type_module_register_type (GTypeModule *module,
+ GType parent_type,
+ const gchar *type_name,
+ const GTypeInfo *type_info,
+ GTypeFlags flags);
+void g_type_module_add_interface (GTypeModule *module,
+ GType instance_type,
+ GType interface_type,
+ const GInterfaceInfo *interface_info);
+GType g_type_module_register_enum (GTypeModule *module,
+ const gchar *name,
+ const GEnumValue *const_static_values);
+GType g_type_module_register_flags (GTypeModule *module,
+ const gchar *name,
+ const GFlagsValue *const_static_values);
+
+
+# 34 "/usr/include/glib-2.0/glib-object.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gtypeplugin.h" 1
+# 26 "/usr/include/glib-2.0/gobject/gtypeplugin.h"
+# 1 "/usr/include/glib-2.0/gobject/gtype.h" 1
+# 27 "/usr/include/glib-2.0/gobject/gtypeplugin.h" 2
+
+
+# 40 "/usr/include/glib-2.0/gobject/gtypeplugin.h"
+typedef struct _GTypePluginClass GTypePluginClass;
+
+
+
+
+
+
+
+typedef void (*GTypePluginUse) (GTypePlugin *plugin);
+
+
+
+
+
+
+typedef void (*GTypePluginUnuse) (GTypePlugin *plugin);
+# 65 "/usr/include/glib-2.0/gobject/gtypeplugin.h"
+typedef void (*GTypePluginCompleteTypeInfo) (GTypePlugin *plugin,
+ GType g_type,
+ GTypeInfo *info,
+ GTypeValueTable *value_table);
+# 79 "/usr/include/glib-2.0/gobject/gtypeplugin.h"
+typedef void (*GTypePluginCompleteInterfaceInfo) (GTypePlugin *plugin,
+ GType instance_type,
+ GType interface_type,
+ GInterfaceInfo *info);
+# 106 "/usr/include/glib-2.0/gobject/gtypeplugin.h"
+struct _GTypePluginClass
+{
+
+ GTypeInterface base_iface;
+
+
+ GTypePluginUse use_plugin;
+ GTypePluginUnuse unuse_plugin;
+ GTypePluginCompleteTypeInfo complete_type_info;
+ GTypePluginCompleteInterfaceInfo complete_interface_info;
+};
+
+
+
+GType g_type_plugin_get_type (void) __attribute__((__const__));
+void g_type_plugin_use (GTypePlugin *plugin);
+void g_type_plugin_unuse (GTypePlugin *plugin);
+void g_type_plugin_complete_type_info (GTypePlugin *plugin,
+ GType g_type,
+ GTypeInfo *info,
+ GTypeValueTable *value_table);
+void g_type_plugin_complete_interface_info (GTypePlugin *plugin,
+ GType instance_type,
+ GType interface_type,
+ GInterfaceInfo *info);
+
+
+# 35 "/usr/include/glib-2.0/glib-object.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gvalue.h" 1
+# 36 "/usr/include/glib-2.0/glib-object.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gvaluearray.h" 1
+# 28 "/usr/include/glib-2.0/gobject/gvaluearray.h"
+# 1 "/usr/include/glib-2.0/gobject/gvalue.h" 1
+# 29 "/usr/include/glib-2.0/gobject/gvaluearray.h" 2
+
+
+
+
+
+
+typedef struct _GValueArray GValueArray;
+
+
+
+
+
+
+
+struct _GValueArray
+{
+ guint n_values;
+ GValue *values;
+
+
+ guint n_prealloced;
+};
+
+
+
+GValue* g_value_array_get_nth (GValueArray *value_array,
+ guint index_);
+GValueArray* g_value_array_new (guint n_prealloced);
+void g_value_array_free (GValueArray *value_array);
+GValueArray* g_value_array_copy (const GValueArray *value_array);
+GValueArray* g_value_array_prepend (GValueArray *value_array,
+ const GValue *value);
+GValueArray* g_value_array_append (GValueArray *value_array,
+ const GValue *value);
+GValueArray* g_value_array_insert (GValueArray *value_array,
+ guint index_,
+ const GValue *value);
+GValueArray* g_value_array_remove (GValueArray *value_array,
+ guint index_);
+GValueArray* g_value_array_sort (GValueArray *value_array,
+ GCompareFunc compare_func);
+GValueArray* g_value_array_sort_with_data (GValueArray *value_array,
+ GCompareDataFunc compare_func,
+ gpointer user_data);
+
+
+
+# 37 "/usr/include/glib-2.0/glib-object.h" 2
+# 1 "/usr/include/glib-2.0/gobject/gvaluetypes.h" 1
+# 28 "/usr/include/glib-2.0/gobject/gvaluetypes.h"
+# 1 "/usr/include/glib-2.0/gobject/gvalue.h" 1
+# 29 "/usr/include/glib-2.0/gobject/gvaluetypes.h" 2
+
+
+# 169 "/usr/include/glib-2.0/gobject/gvaluetypes.h"
+void g_value_set_char (GValue *value,
+ gchar v_char);
+gchar g_value_get_char (const GValue *value);
+void g_value_set_uchar (GValue *value,
+ guchar v_uchar);
+guchar g_value_get_uchar (const GValue *value);
+void g_value_set_boolean (GValue *value,
+ gboolean v_boolean);
+gboolean g_value_get_boolean (const GValue *value);
+void g_value_set_int (GValue *value,
+ gint v_int);
+gint g_value_get_int (const GValue *value);
+void g_value_set_uint (GValue *value,
+ guint v_uint);
+guint g_value_get_uint (const GValue *value);
+void g_value_set_long (GValue *value,
+ glong v_long);
+glong g_value_get_long (const GValue *value);
+void g_value_set_ulong (GValue *value,
+ gulong v_ulong);
+gulong g_value_get_ulong (const GValue *value);
+void g_value_set_int64 (GValue *value,
+ gint64 v_int64);
+gint64 g_value_get_int64 (const GValue *value);
+void g_value_set_uint64 (GValue *value,
+ guint64 v_uint64);
+guint64 g_value_get_uint64 (const GValue *value);
+void g_value_set_float (GValue *value,
+ gfloat v_float);
+gfloat g_value_get_float (const GValue *value);
+void g_value_set_double (GValue *value,
+ gdouble v_double);
+gdouble g_value_get_double (const GValue *value);
+void g_value_set_string (GValue *value,
+ const gchar *v_string);
+void g_value_set_static_string (GValue *value,
+ const gchar *v_string);
+const gchar* g_value_get_string (const GValue *value);
+gchar* g_value_dup_string (const GValue *value);
+void g_value_set_pointer (GValue *value,
+ gpointer v_pointer);
+gpointer g_value_get_pointer (const GValue *value);
+GType g_gtype_get_type (void);
+void g_value_set_gtype (GValue *value,
+ GType v_gtype);
+GType g_value_get_gtype (const GValue *value);
+
+
+
+GType g_pointer_type_register_static (const gchar *name);
+
+
+gchar* g_strdup_value_contents (const GValue *value);
+
+
+void g_value_take_string (GValue *value,
+ gchar *v_string);
+
+void g_value_set_string_take_ownership (GValue *value,
+ gchar *v_string);
+# 238 "/usr/include/glib-2.0/gobject/gvaluetypes.h"
+typedef gchar* gchararray;
+
+
+
+# 38 "/usr/include/glib-2.0/glib-object.h" 2
+# 8 "/usr/include/gstreamer-0.10/gst/gstenumtypes.h" 2
+
+
+
+
+GType gst_object_flags_get_type (void);
+
+
+
+GType gst_bin_flags_get_type (void);
+
+
+
+GType gst_buffer_flag_get_type (void);
+
+GType gst_buffer_copy_flags_get_type (void);
+
+
+
+GType gst_buffer_list_item_get_type (void);
+
+
+
+GType gst_bus_flags_get_type (void);
+
+GType gst_bus_sync_reply_get_type (void);
+
+
+
+GType gst_caps_flags_get_type (void);
+
+
+
+GType gst_clock_return_get_type (void);
+
+GType gst_clock_entry_type_get_type (void);
+
+GType gst_clock_flags_get_type (void);
+
+
+
+GType gst_debug_graph_details_get_type (void);
+
+
+
+GType gst_state_get_type (void);
+
+GType gst_state_change_return_get_type (void);
+
+GType gst_state_change_get_type (void);
+
+GType gst_element_flags_get_type (void);
+
+
+
+GType gst_core_error_get_type (void);
+
+GType gst_library_error_get_type (void);
+
+GType gst_resource_error_get_type (void);
+
+GType gst_stream_error_get_type (void);
+
+
+
+GType gst_event_type_flags_get_type (void);
+
+GType gst_event_type_get_type (void);
+
+GType gst_seek_type_get_type (void);
+
+GType gst_seek_flags_get_type (void);
+
+
+
+GType gst_format_get_type (void);
+
+
+
+GType gst_index_certainty_get_type (void);
+
+GType gst_index_entry_type_get_type (void);
+
+GType gst_index_lookup_method_get_type (void);
+
+GType gst_assoc_flags_get_type (void);
+
+GType gst_index_resolver_method_get_type (void);
+
+GType gst_index_flags_get_type (void);
+
+
+
+GType gst_debug_level_get_type (void);
+
+GType gst_debug_color_flags_get_type (void);
+
+
+
+GType gst_iterator_result_get_type (void);
+
+GType gst_iterator_item_get_type (void);
+
+
+
+GType gst_message_type_get_type (void);
+
+GType gst_structure_change_type_get_type (void);
+
+GType gst_stream_status_type_get_type (void);
+
+
+
+GType gst_mini_object_flags_get_type (void);
+
+
+
+GType gst_pad_link_return_get_type (void);
+
+GType gst_flow_return_get_type (void);
+
+GType gst_activate_mode_get_type (void);
+
+GType gst_pad_direction_get_type (void);
+
+GType gst_pad_flags_get_type (void);
+
+
+
+GType gst_pad_presence_get_type (void);
+
+GType gst_pad_template_flags_get_type (void);
+
+
+
+GType gst_pipeline_flags_get_type (void);
+
+
+
+GType gst_plugin_error_get_type (void);
+
+GType gst_plugin_flags_get_type (void);
+
+GType gst_plugin_dependency_flags_get_type (void);
+
+
+
+GType gst_rank_get_type (void);
+
+
+
+GType gst_query_type_get_type (void);
+
+GType gst_buffering_mode_get_type (void);
+
+
+
+GType gst_clock_type_get_type (void);
+
+
+
+GType gst_tag_merge_mode_get_type (void);
+
+GType gst_tag_flag_get_type (void);
+
+
+
+GType gst_task_state_get_type (void);
+
+
+
+GType gst_alloc_trace_flags_get_type (void);
+
+
+
+GType gst_type_find_probability_get_type (void);
+
+
+
+GType gst_uri_type_get_type (void);
+
+
+
+GType gst_search_mode_get_type (void);
+
+
+
+GType gst_parse_error_get_type (void);
+
+GType gst_parse_flags_get_type (void);
+
+
+# 32 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstversion.h" 1
+# 41 "/usr/include/gstreamer-0.10/gst/gstversion.h"
+
+# 86 "/usr/include/gstreamer-0.10/gst/gstversion.h"
+
+# 33 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstbin.h" 1
+# 27 "/usr/include/gstreamer-0.10/gst/gstbin.h"
+# 1 "/usr/include/gstreamer-0.10/gst/gstelement.h" 1
+# 28 "/usr/include/gstreamer-0.10/gst/gstelement.h"
+typedef struct _GstElement GstElement;
+typedef struct _GstElementClass GstElementClass;
+# 42 "/usr/include/gstreamer-0.10/gst/gstelement.h"
+typedef enum {
+ GST_STATE_VOID_PENDING = 0,
+ GST_STATE_NULL = 1,
+ GST_STATE_READY = 2,
+ GST_STATE_PAUSED = 3,
+ GST_STATE_PLAYING = 4
+} GstState;
+
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstconfig.h" 1
+# 171 "/usr/include/gstreamer-0.10/gst/gstconfig.h"
+# 1 "/usr/include/libxml2/libxml/parser.h" 1
+# 15 "/usr/include/libxml2/libxml/parser.h"
+# 1 "/usr/include/libxml2/libxml/xmlversion.h" 1
+# 13 "/usr/include/libxml2/libxml/xmlversion.h"
+# 1 "/usr/include/libxml2/libxml/xmlexports.h" 1
+# 14 "/usr/include/libxml2/libxml/xmlversion.h" 2
+# 24 "/usr/include/libxml2/libxml/xmlversion.h"
+ void xmlCheckVersion(int version);
+# 16 "/usr/include/libxml2/libxml/parser.h" 2
+# 1 "/usr/include/libxml2/libxml/tree.h" 1
+# 17 "/usr/include/libxml2/libxml/tree.h"
+# 1 "/usr/include/libxml2/libxml/xmlstring.h" 1
+# 28 "/usr/include/libxml2/libxml/xmlstring.h"
+typedef unsigned char xmlChar;
+# 40 "/usr/include/libxml2/libxml/xmlstring.h"
+ xmlChar *
+ xmlStrdup (const xmlChar *cur);
+ xmlChar *
+ xmlStrndup (const xmlChar *cur,
+ int len);
+ xmlChar *
+ xmlCharStrndup (const char *cur,
+ int len);
+ xmlChar *
+ xmlCharStrdup (const char *cur);
+ xmlChar *
+ xmlStrsub (const xmlChar *str,
+ int start,
+ int len);
+ const xmlChar *
+ xmlStrchr (const xmlChar *str,
+ xmlChar val);
+ const xmlChar *
+ xmlStrstr (const xmlChar *str,
+ const xmlChar *val);
+ const xmlChar *
+ xmlStrcasestr (const xmlChar *str,
+ const xmlChar *val);
+ int
+ xmlStrcmp (const xmlChar *str1,
+ const xmlChar *str2);
+ int
+ xmlStrncmp (const xmlChar *str1,
+ const xmlChar *str2,
+ int len);
+ int
+ xmlStrcasecmp (const xmlChar *str1,
+ const xmlChar *str2);
+ int
+ xmlStrncasecmp (const xmlChar *str1,
+ const xmlChar *str2,
+ int len);
+ int
+ xmlStrEqual (const xmlChar *str1,
+ const xmlChar *str2);
+ int
+ xmlStrQEqual (const xmlChar *pref,
+ const xmlChar *name,
+ const xmlChar *str);
+ int
+ xmlStrlen (const xmlChar *str);
+ xmlChar *
+ xmlStrcat (xmlChar *cur,
+ const xmlChar *add);
+ xmlChar *
+ xmlStrncat (xmlChar *cur,
+ const xmlChar *add,
+ int len);
+ xmlChar *
+ xmlStrncatNew (const xmlChar *str1,
+ const xmlChar *str2,
+ int len);
+ int
+ xmlStrPrintf (xmlChar *buf,
+ int len,
+ const xmlChar *msg,
+ ...);
+ int
+ xmlStrVPrintf (xmlChar *buf,
+ int len,
+ const xmlChar *msg,
+ va_list ap);
+
+ int
+ xmlGetUTF8Char (const unsigned char *utf,
+ int *len);
+ int
+ xmlCheckUTF8 (const unsigned char *utf);
+ int
+ xmlUTF8Strsize (const xmlChar *utf,
+ int len);
+ xmlChar *
+ xmlUTF8Strndup (const xmlChar *utf,
+ int len);
+ const xmlChar *
+ xmlUTF8Strpos (const xmlChar *utf,
+ int pos);
+ int
+ xmlUTF8Strloc (const xmlChar *utf,
+ const xmlChar *utfchar);
+ xmlChar *
+ xmlUTF8Strsub (const xmlChar *utf,
+ int start,
+ int len);
+ int
+ xmlUTF8Strlen (const xmlChar *utf);
+ int
+ xmlUTF8Size (const xmlChar *utf);
+ int
+ xmlUTF8Charcmp (const xmlChar *utf1,
+ const xmlChar *utf2);
+# 18 "/usr/include/libxml2/libxml/tree.h" 2
+# 27 "/usr/include/libxml2/libxml/tree.h"
+typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
+typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
+
+typedef struct _xmlOutputBuffer xmlOutputBuffer;
+typedef xmlOutputBuffer *xmlOutputBufferPtr;
+
+
+typedef struct _xmlParserInput xmlParserInput;
+typedef xmlParserInput *xmlParserInputPtr;
+
+typedef struct _xmlParserCtxt xmlParserCtxt;
+typedef xmlParserCtxt *xmlParserCtxtPtr;
+
+typedef struct _xmlSAXLocator xmlSAXLocator;
+typedef xmlSAXLocator *xmlSAXLocatorPtr;
+
+typedef struct _xmlSAXHandler xmlSAXHandler;
+typedef xmlSAXHandler *xmlSAXHandlerPtr;
+
+
+typedef struct _xmlEntity xmlEntity;
+typedef xmlEntity *xmlEntityPtr;
+# 73 "/usr/include/libxml2/libxml/tree.h"
+typedef enum {
+ XML_BUFFER_ALLOC_DOUBLEIT,
+ XML_BUFFER_ALLOC_EXACT,
+ XML_BUFFER_ALLOC_IMMUTABLE,
+ XML_BUFFER_ALLOC_IO
+} xmlBufferAllocationScheme;
+
+
+
+
+
+
+typedef struct _xmlBuffer xmlBuffer;
+typedef xmlBuffer *xmlBufferPtr;
+struct _xmlBuffer {
+ xmlChar *content;
+ unsigned int use;
+ unsigned int size;
+ xmlBufferAllocationScheme alloc;
+ xmlChar *contentIO;
+};
+# 120 "/usr/include/libxml2/libxml/tree.h"
+typedef enum {
+ XML_ELEMENT_NODE= 1,
+ XML_ATTRIBUTE_NODE= 2,
+ XML_TEXT_NODE= 3,
+ XML_CDATA_SECTION_NODE= 4,
+ XML_ENTITY_REF_NODE= 5,
+ XML_ENTITY_NODE= 6,
+ XML_PI_NODE= 7,
+ XML_COMMENT_NODE= 8,
+ XML_DOCUMENT_NODE= 9,
+ XML_DOCUMENT_TYPE_NODE= 10,
+ XML_DOCUMENT_FRAG_NODE= 11,
+ XML_NOTATION_NODE= 12,
+ XML_HTML_DOCUMENT_NODE= 13,
+ XML_DTD_NODE= 14,
+ XML_ELEMENT_DECL= 15,
+ XML_ATTRIBUTE_DECL= 16,
+ XML_ENTITY_DECL= 17,
+ XML_NAMESPACE_DECL= 18,
+ XML_XINCLUDE_START= 19,
+ XML_XINCLUDE_END= 20
+
+ ,XML_DOCB_DOCUMENT_NODE= 21
+
+} xmlElementType;
+# 153 "/usr/include/libxml2/libxml/tree.h"
+typedef struct _xmlNotation xmlNotation;
+typedef xmlNotation *xmlNotationPtr;
+struct _xmlNotation {
+ const xmlChar *name;
+ const xmlChar *PublicID;
+ const xmlChar *SystemID;
+};
+
+
+
+
+
+
+
+typedef enum {
+ XML_ATTRIBUTE_CDATA = 1,
+ XML_ATTRIBUTE_ID,
+ XML_ATTRIBUTE_IDREF ,
+ XML_ATTRIBUTE_IDREFS,
+ XML_ATTRIBUTE_ENTITY,
+ XML_ATTRIBUTE_ENTITIES,
+ XML_ATTRIBUTE_NMTOKEN,
+ XML_ATTRIBUTE_NMTOKENS,
+ XML_ATTRIBUTE_ENUMERATION,
+ XML_ATTRIBUTE_NOTATION
+} xmlAttributeType;
+
+
+
+
+
+
+
+typedef enum {
+ XML_ATTRIBUTE_NONE = 1,
+ XML_ATTRIBUTE_REQUIRED,
+ XML_ATTRIBUTE_IMPLIED,
+ XML_ATTRIBUTE_FIXED
+} xmlAttributeDefault;
+
+
+
+
+
+
+
+typedef struct _xmlEnumeration xmlEnumeration;
+typedef xmlEnumeration *xmlEnumerationPtr;
+struct _xmlEnumeration {
+ struct _xmlEnumeration *next;
+ const xmlChar *name;
+};
+
+
+
+
+
+
+
+typedef struct _xmlAttribute xmlAttribute;
+typedef xmlAttribute *xmlAttributePtr;
+struct _xmlAttribute {
+ void *_private;
+ xmlElementType type;
+ const xmlChar *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlDtd *parent;
+ struct _xmlNode *next;
+ struct _xmlNode *prev;
+ struct _xmlDoc *doc;
+
+ struct _xmlAttribute *nexth;
+ xmlAttributeType atype;
+ xmlAttributeDefault def;
+ const xmlChar *defaultValue;
+ xmlEnumerationPtr tree;
+ const xmlChar *prefix;
+ const xmlChar *elem;
+};
+
+
+
+
+
+
+typedef enum {
+ XML_ELEMENT_CONTENT_PCDATA = 1,
+ XML_ELEMENT_CONTENT_ELEMENT,
+ XML_ELEMENT_CONTENT_SEQ,
+ XML_ELEMENT_CONTENT_OR
+} xmlElementContentType;
+
+
+
+
+
+
+typedef enum {
+ XML_ELEMENT_CONTENT_ONCE = 1,
+ XML_ELEMENT_CONTENT_OPT,
+ XML_ELEMENT_CONTENT_MULT,
+ XML_ELEMENT_CONTENT_PLUS
+} xmlElementContentOccur;
+# 265 "/usr/include/libxml2/libxml/tree.h"
+typedef struct _xmlElementContent xmlElementContent;
+typedef xmlElementContent *xmlElementContentPtr;
+struct _xmlElementContent {
+ xmlElementContentType type;
+ xmlElementContentOccur ocur;
+ const xmlChar *name;
+ struct _xmlElementContent *c1;
+ struct _xmlElementContent *c2;
+ struct _xmlElementContent *parent;
+ const xmlChar *prefix;
+};
+
+
+
+
+
+
+
+typedef enum {
+ XML_ELEMENT_TYPE_UNDEFINED = 0,
+ XML_ELEMENT_TYPE_EMPTY = 1,
+ XML_ELEMENT_TYPE_ANY,
+ XML_ELEMENT_TYPE_MIXED,
+ XML_ELEMENT_TYPE_ELEMENT
+} xmlElementTypeVal;
+
+
+
+
+# 1 "/usr/include/libxml2/libxml/xmlregexp.h" 1
+# 28 "/usr/include/libxml2/libxml/xmlregexp.h"
+typedef struct _xmlRegexp xmlRegexp;
+typedef xmlRegexp *xmlRegexpPtr;
+
+
+
+
+
+
+typedef struct _xmlRegExecCtxt xmlRegExecCtxt;
+typedef xmlRegExecCtxt *xmlRegExecCtxtPtr;
+
+
+
+
+# 1 "/usr/include/libxml2/libxml/tree.h" 1
+# 43 "/usr/include/libxml2/libxml/xmlregexp.h" 2
+# 1 "/usr/include/libxml2/libxml/dict.h" 1
+# 24 "/usr/include/libxml2/libxml/dict.h"
+typedef struct _xmlDict xmlDict;
+typedef xmlDict *xmlDictPtr;
+
+
+
+
+ xmlDictPtr
+ xmlDictCreate (void);
+ xmlDictPtr
+ xmlDictCreateSub(xmlDictPtr sub);
+ int
+ xmlDictReference(xmlDictPtr dict);
+ void
+ xmlDictFree (xmlDictPtr dict);
+
+
+
+
+ const xmlChar *
+ xmlDictLookup (xmlDictPtr dict,
+ const xmlChar *name,
+ int len);
+ const xmlChar *
+ xmlDictExists (xmlDictPtr dict,
+ const xmlChar *name,
+ int len);
+ const xmlChar *
+ xmlDictQLookup (xmlDictPtr dict,
+ const xmlChar *prefix,
+ const xmlChar *name);
+ int
+ xmlDictOwns (xmlDictPtr dict,
+ const xmlChar *str);
+ int
+ xmlDictSize (xmlDictPtr dict);
+
+
+
+
+ void
+ xmlDictCleanup (void);
+# 44 "/usr/include/libxml2/libxml/xmlregexp.h" 2
+
+
+
+
+
+
+
+ xmlRegexpPtr
+ xmlRegexpCompile (const xmlChar *regexp);
+ void xmlRegFreeRegexp(xmlRegexpPtr regexp);
+ int
+ xmlRegexpExec (xmlRegexpPtr comp,
+ const xmlChar *value);
+ void
+ xmlRegexpPrint (FILE *output,
+ xmlRegexpPtr regexp);
+ int
+ xmlRegexpIsDeterminist(xmlRegexpPtr comp);
+# 72 "/usr/include/libxml2/libxml/xmlregexp.h"
+typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec,
+ const xmlChar *token,
+ void *transdata,
+ void *inputdata);
+
+
+
+
+ xmlRegExecCtxtPtr
+ xmlRegNewExecCtxt (xmlRegexpPtr comp,
+ xmlRegExecCallbacks callback,
+ void *data);
+ void
+ xmlRegFreeExecCtxt (xmlRegExecCtxtPtr exec);
+ int
+ xmlRegExecPushString(xmlRegExecCtxtPtr exec,
+ const xmlChar *value,
+ void *data);
+ int
+ xmlRegExecPushString2(xmlRegExecCtxtPtr exec,
+ const xmlChar *value,
+ const xmlChar *value2,
+ void *data);
+
+ int
+ xmlRegExecNextValues(xmlRegExecCtxtPtr exec,
+ int *nbval,
+ int *nbneg,
+ xmlChar **values,
+ int *terminal);
+ int
+ xmlRegExecErrInfo (xmlRegExecCtxtPtr exec,
+ const xmlChar **string,
+ int *nbval,
+ int *nbneg,
+ xmlChar **values,
+ int *terminal);
+
+
+
+
+
+
+
+typedef struct _xmlExpCtxt xmlExpCtxt;
+typedef xmlExpCtxt *xmlExpCtxtPtr;
+
+ void
+ xmlExpFreeCtxt (xmlExpCtxtPtr ctxt);
+ xmlExpCtxtPtr
+ xmlExpNewCtxt (int maxNodes,
+ xmlDictPtr dict);
+
+ int
+ xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt);
+ int
+ xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt);
+
+
+typedef struct _xmlExpNode xmlExpNode;
+typedef xmlExpNode *xmlExpNodePtr;
+
+typedef enum {
+ XML_EXP_EMPTY = 0,
+ XML_EXP_FORBID = 1,
+ XML_EXP_ATOM = 2,
+ XML_EXP_SEQ = 3,
+ XML_EXP_OR = 4,
+ XML_EXP_COUNT = 5
+} xmlExpNodeType;
+
+
+
+
+
+extern xmlExpNodePtr forbiddenExp;
+extern xmlExpNodePtr emptyExp;
+
+
+
+
+ void
+ xmlExpFree (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr expr);
+ void
+ xmlExpRef (xmlExpNodePtr expr);
+
+
+
+
+ xmlExpNodePtr
+ xmlExpParse (xmlExpCtxtPtr ctxt,
+ const char *expr);
+ xmlExpNodePtr
+ xmlExpNewAtom (xmlExpCtxtPtr ctxt,
+ const xmlChar *name,
+ int len);
+ xmlExpNodePtr
+ xmlExpNewOr (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr left,
+ xmlExpNodePtr right);
+ xmlExpNodePtr
+ xmlExpNewSeq (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr left,
+ xmlExpNodePtr right);
+ xmlExpNodePtr
+ xmlExpNewRange (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr subset,
+ int min,
+ int max);
+
+
+
+ int
+ xmlExpIsNillable(xmlExpNodePtr expr);
+ int
+ xmlExpMaxToken (xmlExpNodePtr expr);
+ int
+ xmlExpGetLanguage(xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr expr,
+ const xmlChar**langList,
+ int len);
+ int
+ xmlExpGetStart (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr expr,
+ const xmlChar**tokList,
+ int len);
+ xmlExpNodePtr
+ xmlExpStringDerive(xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr expr,
+ const xmlChar *str,
+ int len);
+ xmlExpNodePtr
+ xmlExpExpDerive (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr expr,
+ xmlExpNodePtr sub);
+ int
+ xmlExpSubsume (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr expr,
+ xmlExpNodePtr sub);
+ void
+ xmlExpDump (xmlBufferPtr buf,
+ xmlExpNodePtr expr);
+# 295 "/usr/include/libxml2/libxml/tree.h" 2
+# 305 "/usr/include/libxml2/libxml/tree.h"
+typedef struct _xmlElement xmlElement;
+typedef xmlElement *xmlElementPtr;
+struct _xmlElement {
+ void *_private;
+ xmlElementType type;
+ const xmlChar *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlDtd *parent;
+ struct _xmlNode *next;
+ struct _xmlNode *prev;
+ struct _xmlDoc *doc;
+
+ xmlElementTypeVal etype;
+ xmlElementContentPtr content;
+ xmlAttributePtr attributes;
+ const xmlChar *prefix;
+
+ xmlRegexpPtr contModel;
+
+
+
+};
+# 336 "/usr/include/libxml2/libxml/tree.h"
+typedef xmlElementType xmlNsType;
+# 348 "/usr/include/libxml2/libxml/tree.h"
+typedef struct _xmlNs xmlNs;
+typedef xmlNs *xmlNsPtr;
+struct _xmlNs {
+ struct _xmlNs *next;
+ xmlNsType type;
+ const xmlChar *href;
+ const xmlChar *prefix;
+ void *_private;
+ struct _xmlDoc *context;
+};
+
+
+
+
+
+
+
+typedef struct _xmlDtd xmlDtd;
+typedef xmlDtd *xmlDtdPtr;
+struct _xmlDtd {
+ void *_private;
+ xmlElementType type;
+ const xmlChar *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlDoc *parent;
+ struct _xmlNode *next;
+ struct _xmlNode *prev;
+ struct _xmlDoc *doc;
+
+
+ void *notations;
+ void *elements;
+ void *attributes;
+ void *entities;
+ const xmlChar *ExternalID;
+ const xmlChar *SystemID;
+ void *pentities;
+};
+
+
+
+
+
+
+typedef struct _xmlAttr xmlAttr;
+typedef xmlAttr *xmlAttrPtr;
+struct _xmlAttr {
+ void *_private;
+ xmlElementType type;
+ const xmlChar *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlNode *parent;
+ struct _xmlAttr *next;
+ struct _xmlAttr *prev;
+ struct _xmlDoc *doc;
+ xmlNs *ns;
+ xmlAttributeType atype;
+ void *psvi;
+};
+
+
+
+
+
+
+
+typedef struct _xmlID xmlID;
+typedef xmlID *xmlIDPtr;
+struct _xmlID {
+ struct _xmlID *next;
+ const xmlChar *value;
+ xmlAttrPtr attr;
+ const xmlChar *name;
+ int lineno;
+ struct _xmlDoc *doc;
+};
+
+
+
+
+
+
+
+typedef struct _xmlRef xmlRef;
+typedef xmlRef *xmlRefPtr;
+struct _xmlRef {
+ struct _xmlRef *next;
+ const xmlChar *value;
+ xmlAttrPtr attr;
+ const xmlChar *name;
+ int lineno;
+};
+
+
+
+
+
+
+typedef struct _xmlNode xmlNode;
+typedef xmlNode *xmlNodePtr;
+struct _xmlNode {
+ void *_private;
+ xmlElementType type;
+ const xmlChar *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlNode *parent;
+ struct _xmlNode *next;
+ struct _xmlNode *prev;
+ struct _xmlDoc *doc;
+
+
+ xmlNs *ns;
+ xmlChar *content;
+ struct _xmlAttr *properties;
+ xmlNs *nsDef;
+ void *psvi;
+ unsigned short line;
+ unsigned short extra;
+};
+# 493 "/usr/include/libxml2/libxml/tree.h"
+typedef enum {
+ XML_DOC_WELLFORMED = 1<<0,
+ XML_DOC_NSVALID = 1<<1,
+ XML_DOC_OLD10 = 1<<2,
+ XML_DOC_DTDVALID = 1<<3,
+ XML_DOC_XINCLUDE = 1<<4,
+ XML_DOC_USERBUILT = 1<<5,
+
+ XML_DOC_INTERNAL = 1<<6,
+ XML_DOC_HTML = 1<<7
+} xmlDocProperties;
+
+
+
+
+
+
+typedef struct _xmlDoc xmlDoc;
+typedef xmlDoc *xmlDocPtr;
+struct _xmlDoc {
+ void *_private;
+ xmlElementType type;
+ char *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlNode *parent;
+ struct _xmlNode *next;
+ struct _xmlNode *prev;
+ struct _xmlDoc *doc;
+
+
+ int compression;
+ int standalone;
+
+
+
+
+
+ struct _xmlDtd *intSubset;
+ struct _xmlDtd *extSubset;
+ struct _xmlNs *oldNs;
+ const xmlChar *version;
+ const xmlChar *encoding;
+ void *ids;
+ void *refs;
+ const xmlChar *URL;
+ int charset;
+
+ struct _xmlDict *dict;
+ void *psvi;
+ int parseFlags;
+
+ int properties;
+
+};
+
+
+typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt;
+typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;
+# 564 "/usr/include/libxml2/libxml/tree.h"
+typedef xmlNsPtr (*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxtPtr ctxt,
+ xmlNodePtr node,
+ const xmlChar *nsName,
+ const xmlChar *nsPrefix);
+
+
+
+
+
+
+struct _xmlDOMWrapCtxt {
+ void * _private;
+
+
+
+
+ int type;
+
+
+
+ void * namespaceMap;
+
+
+
+
+ xmlDOMWrapAcquireNsFunction getNsForNodeFunc;
+};
+# 620 "/usr/include/libxml2/libxml/tree.h"
+ int
+ xmlValidateNCName (const xmlChar *value,
+ int space);
+
+
+
+ int
+ xmlValidateQName (const xmlChar *value,
+ int space);
+ int
+ xmlValidateName (const xmlChar *value,
+ int space);
+ int
+ xmlValidateNMToken (const xmlChar *value,
+ int space);
+
+
+ xmlChar *
+ xmlBuildQName (const xmlChar *ncname,
+ const xmlChar *prefix,
+ xmlChar *memory,
+ int len);
+ xmlChar *
+ xmlSplitQName2 (const xmlChar *name,
+ xmlChar **prefix);
+ const xmlChar *
+ xmlSplitQName3 (const xmlChar *name,
+ int *len);
+
+
+
+
+
+ void
+ xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
+ xmlBufferAllocationScheme
+ xmlGetBufferAllocationScheme(void);
+
+ xmlBufferPtr
+ xmlBufferCreate (void);
+ xmlBufferPtr
+ xmlBufferCreateSize (size_t size);
+ xmlBufferPtr
+ xmlBufferCreateStatic (void *mem,
+ size_t size);
+ int
+ xmlBufferResize (xmlBufferPtr buf,
+ unsigned int size);
+ void
+ xmlBufferFree (xmlBufferPtr buf);
+ int
+ xmlBufferDump (FILE *file,
+ xmlBufferPtr buf);
+ int
+ xmlBufferAdd (xmlBufferPtr buf,
+ const xmlChar *str,
+ int len);
+ int
+ xmlBufferAddHead (xmlBufferPtr buf,
+ const xmlChar *str,
+ int len);
+ int
+ xmlBufferCat (xmlBufferPtr buf,
+ const xmlChar *str);
+ int
+ xmlBufferCCat (xmlBufferPtr buf,
+ const char *str);
+ int
+ xmlBufferShrink (xmlBufferPtr buf,
+ unsigned int len);
+ int
+ xmlBufferGrow (xmlBufferPtr buf,
+ unsigned int len);
+ void
+ xmlBufferEmpty (xmlBufferPtr buf);
+ const xmlChar*
+ xmlBufferContent (const xmlBufferPtr buf);
+ void
+ xmlBufferSetAllocationScheme(xmlBufferPtr buf,
+ xmlBufferAllocationScheme scheme);
+ int
+ xmlBufferLength (const xmlBufferPtr buf);
+
+
+
+
+ xmlDtdPtr
+ xmlCreateIntSubset (xmlDocPtr doc,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ xmlDtdPtr
+ xmlNewDtd (xmlDocPtr doc,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ xmlDtdPtr
+ xmlGetIntSubset (xmlDocPtr doc);
+ void
+ xmlFreeDtd (xmlDtdPtr cur);
+
+ xmlNsPtr
+ xmlNewGlobalNs (xmlDocPtr doc,
+ const xmlChar *href,
+ const xmlChar *prefix);
+
+ xmlNsPtr
+ xmlNewNs (xmlNodePtr node,
+ const xmlChar *href,
+ const xmlChar *prefix);
+ void
+ xmlFreeNs (xmlNsPtr cur);
+ void
+ xmlFreeNsList (xmlNsPtr cur);
+ xmlDocPtr
+ xmlNewDoc (const xmlChar *version);
+ void
+ xmlFreeDoc (xmlDocPtr cur);
+ xmlAttrPtr
+ xmlNewDocProp (xmlDocPtr doc,
+ const xmlChar *name,
+ const xmlChar *value);
+
+
+ xmlAttrPtr
+ xmlNewProp (xmlNodePtr node,
+ const xmlChar *name,
+ const xmlChar *value);
+
+ xmlAttrPtr
+ xmlNewNsProp (xmlNodePtr node,
+ xmlNsPtr ns,
+ const xmlChar *name,
+ const xmlChar *value);
+ xmlAttrPtr
+ xmlNewNsPropEatName (xmlNodePtr node,
+ xmlNsPtr ns,
+ xmlChar *name,
+ const xmlChar *value);
+ void
+ xmlFreePropList (xmlAttrPtr cur);
+ void
+ xmlFreeProp (xmlAttrPtr cur);
+ xmlAttrPtr
+ xmlCopyProp (xmlNodePtr target,
+ xmlAttrPtr cur);
+ xmlAttrPtr
+ xmlCopyPropList (xmlNodePtr target,
+ xmlAttrPtr cur);
+
+ xmlDtdPtr
+ xmlCopyDtd (xmlDtdPtr dtd);
+
+
+ xmlDocPtr
+ xmlCopyDoc (xmlDocPtr doc,
+ int recursive);
+
+
+
+
+ xmlNodePtr
+ xmlNewDocNode (xmlDocPtr doc,
+ xmlNsPtr ns,
+ const xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewDocNodeEatName (xmlDocPtr doc,
+ xmlNsPtr ns,
+ xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewNode (xmlNsPtr ns,
+ const xmlChar *name);
+ xmlNodePtr
+ xmlNewNodeEatName (xmlNsPtr ns,
+ xmlChar *name);
+
+ xmlNodePtr
+ xmlNewChild (xmlNodePtr parent,
+ xmlNsPtr ns,
+ const xmlChar *name,
+ const xmlChar *content);
+
+ xmlNodePtr
+ xmlNewDocText (xmlDocPtr doc,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewText (const xmlChar *content);
+ xmlNodePtr
+ xmlNewDocPI (xmlDocPtr doc,
+ const xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewPI (const xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewDocTextLen (xmlDocPtr doc,
+ const xmlChar *content,
+ int len);
+ xmlNodePtr
+ xmlNewTextLen (const xmlChar *content,
+ int len);
+ xmlNodePtr
+ xmlNewDocComment (xmlDocPtr doc,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewComment (const xmlChar *content);
+ xmlNodePtr
+ xmlNewCDataBlock (xmlDocPtr doc,
+ const xmlChar *content,
+ int len);
+ xmlNodePtr
+ xmlNewCharRef (xmlDocPtr doc,
+ const xmlChar *name);
+ xmlNodePtr
+ xmlNewReference (xmlDocPtr doc,
+ const xmlChar *name);
+ xmlNodePtr
+ xmlCopyNode (const xmlNodePtr node,
+ int recursive);
+ xmlNodePtr
+ xmlDocCopyNode (const xmlNodePtr node,
+ xmlDocPtr doc,
+ int recursive);
+ xmlNodePtr
+ xmlDocCopyNodeList (xmlDocPtr doc,
+ const xmlNodePtr node);
+ xmlNodePtr
+ xmlCopyNodeList (const xmlNodePtr node);
+
+ xmlNodePtr
+ xmlNewTextChild (xmlNodePtr parent,
+ xmlNsPtr ns,
+ const xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewDocRawNode (xmlDocPtr doc,
+ xmlNsPtr ns,
+ const xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewDocFragment (xmlDocPtr doc);
+
+
+
+
+
+ long
+ xmlGetLineNo (xmlNodePtr node);
+
+ xmlChar *
+ xmlGetNodePath (xmlNodePtr node);
+
+ xmlNodePtr
+ xmlDocGetRootElement (xmlDocPtr doc);
+ xmlNodePtr
+ xmlGetLastChild (xmlNodePtr parent);
+ int
+ xmlNodeIsText (xmlNodePtr node);
+ int
+ xmlIsBlankNode (xmlNodePtr node);
+
+
+
+
+
+ xmlNodePtr
+ xmlDocSetRootElement (xmlDocPtr doc,
+ xmlNodePtr root);
+
+
+ void
+ xmlNodeSetName (xmlNodePtr cur,
+ const xmlChar *name);
+
+ xmlNodePtr
+ xmlAddChild (xmlNodePtr parent,
+ xmlNodePtr cur);
+ xmlNodePtr
+ xmlAddChildList (xmlNodePtr parent,
+ xmlNodePtr cur);
+
+ xmlNodePtr
+ xmlReplaceNode (xmlNodePtr old,
+ xmlNodePtr cur);
+
+
+
+ xmlNodePtr
+ xmlAddPrevSibling (xmlNodePtr cur,
+ xmlNodePtr elem);
+
+ xmlNodePtr
+ xmlAddSibling (xmlNodePtr cur,
+ xmlNodePtr elem);
+ xmlNodePtr
+ xmlAddNextSibling (xmlNodePtr cur,
+ xmlNodePtr elem);
+ void
+ xmlUnlinkNode (xmlNodePtr cur);
+ xmlNodePtr
+ xmlTextMerge (xmlNodePtr first,
+ xmlNodePtr second);
+ int
+ xmlTextConcat (xmlNodePtr node,
+ const xmlChar *content,
+ int len);
+ void
+ xmlFreeNodeList (xmlNodePtr cur);
+ void
+ xmlFreeNode (xmlNodePtr cur);
+ void
+ xmlSetTreeDoc (xmlNodePtr tree,
+ xmlDocPtr doc);
+ void
+ xmlSetListDoc (xmlNodePtr list,
+ xmlDocPtr doc);
+
+
+
+ xmlNsPtr
+ xmlSearchNs (xmlDocPtr doc,
+ xmlNodePtr node,
+ const xmlChar *nameSpace);
+ xmlNsPtr
+ xmlSearchNsByHref (xmlDocPtr doc,
+ xmlNodePtr node,
+ const xmlChar *href);
+
+ xmlNsPtr *
+ xmlGetNsList (xmlDocPtr doc,
+ xmlNodePtr node);
+
+
+ void
+ xmlSetNs (xmlNodePtr node,
+ xmlNsPtr ns);
+ xmlNsPtr
+ xmlCopyNamespace (xmlNsPtr cur);
+ xmlNsPtr
+ xmlCopyNamespaceList (xmlNsPtr cur);
+
+
+
+
+
+ xmlAttrPtr
+ xmlSetProp (xmlNodePtr node,
+ const xmlChar *name,
+ const xmlChar *value);
+ xmlAttrPtr
+ xmlSetNsProp (xmlNodePtr node,
+ xmlNsPtr ns,
+ const xmlChar *name,
+ const xmlChar *value);
+
+ xmlChar *
+ xmlGetNoNsProp (xmlNodePtr node,
+ const xmlChar *name);
+ xmlChar *
+ xmlGetProp (xmlNodePtr node,
+ const xmlChar *name);
+ xmlAttrPtr
+ xmlHasProp (xmlNodePtr node,
+ const xmlChar *name);
+ xmlAttrPtr
+ xmlHasNsProp (xmlNodePtr node,
+ const xmlChar *name,
+ const xmlChar *nameSpace);
+ xmlChar *
+ xmlGetNsProp (xmlNodePtr node,
+ const xmlChar *name,
+ const xmlChar *nameSpace);
+ xmlNodePtr
+ xmlStringGetNodeList (xmlDocPtr doc,
+ const xmlChar *value);
+ xmlNodePtr
+ xmlStringLenGetNodeList (xmlDocPtr doc,
+ const xmlChar *value,
+ int len);
+ xmlChar *
+ xmlNodeListGetString (xmlDocPtr doc,
+ xmlNodePtr list,
+ int inLine);
+
+ xmlChar *
+ xmlNodeListGetRawString (xmlDocPtr doc,
+ xmlNodePtr list,
+ int inLine);
+
+ void
+ xmlNodeSetContent (xmlNodePtr cur,
+ const xmlChar *content);
+
+ void
+ xmlNodeSetContentLen (xmlNodePtr cur,
+ const xmlChar *content,
+ int len);
+
+ void
+ xmlNodeAddContent (xmlNodePtr cur,
+ const xmlChar *content);
+ void
+ xmlNodeAddContentLen (xmlNodePtr cur,
+ const xmlChar *content,
+ int len);
+ xmlChar *
+ xmlNodeGetContent (xmlNodePtr cur);
+ int
+ xmlNodeBufGetContent (xmlBufferPtr buffer,
+ xmlNodePtr cur);
+ xmlChar *
+ xmlNodeGetLang (xmlNodePtr cur);
+ int
+ xmlNodeGetSpacePreserve (xmlNodePtr cur);
+
+ void
+ xmlNodeSetLang (xmlNodePtr cur,
+ const xmlChar *lang);
+ void
+ xmlNodeSetSpacePreserve (xmlNodePtr cur,
+ int val);
+
+ xmlChar *
+ xmlNodeGetBase (xmlDocPtr doc,
+ xmlNodePtr cur);
+
+ void
+ xmlNodeSetBase (xmlNodePtr cur,
+ const xmlChar *uri);
+
+
+
+
+
+ int
+ xmlRemoveProp (xmlAttrPtr cur);
+
+ int
+ xmlUnsetNsProp (xmlNodePtr node,
+ xmlNsPtr ns,
+ const xmlChar *name);
+ int
+ xmlUnsetProp (xmlNodePtr node,
+ const xmlChar *name);
+
+
+
+
+
+ void
+ xmlBufferWriteCHAR (xmlBufferPtr buf,
+ const xmlChar *string);
+ void
+ xmlBufferWriteChar (xmlBufferPtr buf,
+ const char *string);
+ void
+ xmlBufferWriteQuotedString(xmlBufferPtr buf,
+ const xmlChar *string);
+
+
+ void xmlAttrSerializeTxtContent(xmlBufferPtr buf,
+ xmlDocPtr doc,
+ xmlAttrPtr attr,
+ const xmlChar *string);
+
+
+
+
+
+
+ int
+ xmlReconciliateNs (xmlDocPtr doc,
+ xmlNodePtr tree);
+
+
+
+
+
+
+ void
+ xmlDocDumpFormatMemory (xmlDocPtr cur,
+ xmlChar **mem,
+ int *size,
+ int format);
+ void
+ xmlDocDumpMemory (xmlDocPtr cur,
+ xmlChar **mem,
+ int *size);
+ void
+ xmlDocDumpMemoryEnc (xmlDocPtr out_doc,
+ xmlChar **doc_txt_ptr,
+ int * doc_txt_len,
+ const char *txt_encoding);
+ void
+ xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
+ xmlChar **doc_txt_ptr,
+ int * doc_txt_len,
+ const char *txt_encoding,
+ int format);
+ int
+ xmlDocFormatDump (FILE *f,
+ xmlDocPtr cur,
+ int format);
+ int
+ xmlDocDump (FILE *f,
+ xmlDocPtr cur);
+ void
+ xmlElemDump (FILE *f,
+ xmlDocPtr doc,
+ xmlNodePtr cur);
+ int
+ xmlSaveFile (const char *filename,
+ xmlDocPtr cur);
+ int
+ xmlSaveFormatFile (const char *filename,
+ xmlDocPtr cur,
+ int format);
+ int
+ xmlNodeDump (xmlBufferPtr buf,
+ xmlDocPtr doc,
+ xmlNodePtr cur,
+ int level,
+ int format);
+
+ int
+ xmlSaveFileTo (xmlOutputBufferPtr buf,
+ xmlDocPtr cur,
+ const char *encoding);
+ int
+ xmlSaveFormatFileTo (xmlOutputBufferPtr buf,
+ xmlDocPtr cur,
+ const char *encoding,
+ int format);
+ void
+ xmlNodeDumpOutput (xmlOutputBufferPtr buf,
+ xmlDocPtr doc,
+ xmlNodePtr cur,
+ int level,
+ int format,
+ const char *encoding);
+
+ int
+ xmlSaveFormatFileEnc (const char *filename,
+ xmlDocPtr cur,
+ const char *encoding,
+ int format);
+
+ int
+ xmlSaveFileEnc (const char *filename,
+ xmlDocPtr cur,
+ const char *encoding);
+
+
+
+
+
+ int
+ xmlIsXHTML (const xmlChar *systemID,
+ const xmlChar *publicID);
+
+
+
+
+ int
+ xmlGetDocCompressMode (xmlDocPtr doc);
+ void
+ xmlSetDocCompressMode (xmlDocPtr doc,
+ int mode);
+ int
+ xmlGetCompressMode (void);
+ void
+ xmlSetCompressMode (int mode);
+
+
+
+
+ xmlDOMWrapCtxtPtr
+ xmlDOMWrapNewCtxt (void);
+ void
+ xmlDOMWrapFreeCtxt (xmlDOMWrapCtxtPtr ctxt);
+ int
+ xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt,
+ xmlNodePtr elem,
+ int options);
+ int
+ xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt,
+ xmlDocPtr sourceDoc,
+ xmlNodePtr node,
+ xmlDocPtr destDoc,
+ xmlNodePtr destParent,
+ int options);
+ int
+ xmlDOMWrapRemoveNode (xmlDOMWrapCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr node,
+ int options);
+ int
+ xmlDOMWrapCloneNode (xmlDOMWrapCtxtPtr ctxt,
+ xmlDocPtr sourceDoc,
+ xmlNodePtr node,
+ xmlNodePtr *clonedNode,
+ xmlDocPtr destDoc,
+ xmlNodePtr destParent,
+ int deep,
+ int options);
+
+
+
+
+
+
+ unsigned long
+ xmlChildElementCount (xmlNodePtr parent);
+ xmlNodePtr
+ xmlNextElementSibling (xmlNodePtr node);
+ xmlNodePtr
+ xmlFirstElementChild (xmlNodePtr parent);
+ xmlNodePtr
+ xmlLastElementChild (xmlNodePtr parent);
+ xmlNodePtr
+ xmlPreviousElementSibling (xmlNodePtr node);
+# 17 "/usr/include/libxml2/libxml/parser.h" 2
+
+# 1 "/usr/include/libxml2/libxml/hash.h" 1
+# 21 "/usr/include/libxml2/libxml/hash.h"
+typedef struct _xmlHashTable xmlHashTable;
+typedef xmlHashTable *xmlHashTablePtr;
+
+
+
+
+
+
+# 1 "/usr/include/libxml2/libxml/parser.h" 1
+# 30 "/usr/include/libxml2/libxml/hash.h" 2
+# 69 "/usr/include/libxml2/libxml/hash.h"
+typedef void (*xmlHashDeallocator)(void *payload, xmlChar *name);
+# 79 "/usr/include/libxml2/libxml/hash.h"
+typedef void *(*xmlHashCopier)(void *payload, xmlChar *name);
+# 88 "/usr/include/libxml2/libxml/hash.h"
+typedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name);
+# 99 "/usr/include/libxml2/libxml/hash.h"
+typedef void (*xmlHashScannerFull)(void *payload, void *data,
+ const xmlChar *name, const xmlChar *name2,
+ const xmlChar *name3);
+
+
+
+
+ xmlHashTablePtr
+ xmlHashCreate (int size);
+ xmlHashTablePtr
+ xmlHashCreateDict(int size,
+ xmlDictPtr dict);
+ void
+ xmlHashFree (xmlHashTablePtr table,
+ xmlHashDeallocator f);
+
+
+
+
+ int
+ xmlHashAddEntry (xmlHashTablePtr table,
+ const xmlChar *name,
+ void *userdata);
+ int
+ xmlHashUpdateEntry(xmlHashTablePtr table,
+ const xmlChar *name,
+ void *userdata,
+ xmlHashDeallocator f);
+ int
+ xmlHashAddEntry2(xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ void *userdata);
+ int
+ xmlHashUpdateEntry2(xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ void *userdata,
+ xmlHashDeallocator f);
+ int
+ xmlHashAddEntry3(xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ const xmlChar *name3,
+ void *userdata);
+ int
+ xmlHashUpdateEntry3(xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ const xmlChar *name3,
+ void *userdata,
+ xmlHashDeallocator f);
+
+
+
+
+ int
+ xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name,
+ xmlHashDeallocator f);
+ int
+ xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name,
+ const xmlChar *name2, xmlHashDeallocator f);
+ int
+ xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name,
+ const xmlChar *name2, const xmlChar *name3,
+ xmlHashDeallocator f);
+
+
+
+
+ void *
+ xmlHashLookup (xmlHashTablePtr table,
+ const xmlChar *name);
+ void *
+ xmlHashLookup2 (xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2);
+ void *
+ xmlHashLookup3 (xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ const xmlChar *name3);
+ void *
+ xmlHashQLookup (xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *prefix);
+ void *
+ xmlHashQLookup2 (xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *prefix,
+ const xmlChar *name2,
+ const xmlChar *prefix2);
+ void *
+ xmlHashQLookup3 (xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *prefix,
+ const xmlChar *name2,
+ const xmlChar *prefix2,
+ const xmlChar *name3,
+ const xmlChar *prefix3);
+
+
+
+
+ xmlHashTablePtr
+ xmlHashCopy (xmlHashTablePtr table,
+ xmlHashCopier f);
+ int
+ xmlHashSize (xmlHashTablePtr table);
+ void
+ xmlHashScan (xmlHashTablePtr table,
+ xmlHashScanner f,
+ void *data);
+ void
+ xmlHashScan3 (xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ const xmlChar *name3,
+ xmlHashScanner f,
+ void *data);
+ void
+ xmlHashScanFull (xmlHashTablePtr table,
+ xmlHashScannerFull f,
+ void *data);
+ void
+ xmlHashScanFull3(xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ const xmlChar *name3,
+ xmlHashScannerFull f,
+ void *data);
+# 19 "/usr/include/libxml2/libxml/parser.h" 2
+# 1 "/usr/include/libxml2/libxml/valid.h" 1
+# 15 "/usr/include/libxml2/libxml/valid.h"
+# 1 "/usr/include/libxml2/libxml/xmlerror.h" 1
+# 24 "/usr/include/libxml2/libxml/xmlerror.h"
+typedef enum {
+ XML_ERR_NONE = 0,
+ XML_ERR_WARNING = 1,
+ XML_ERR_ERROR = 2,
+ XML_ERR_FATAL = 3
+} xmlErrorLevel;
+
+
+
+
+
+
+typedef enum {
+ XML_FROM_NONE = 0,
+ XML_FROM_PARSER,
+ XML_FROM_TREE,
+ XML_FROM_NAMESPACE,
+ XML_FROM_DTD,
+ XML_FROM_HTML,
+ XML_FROM_MEMORY,
+ XML_FROM_OUTPUT,
+ XML_FROM_IO,
+ XML_FROM_FTP,
+ XML_FROM_HTTP,
+ XML_FROM_XINCLUDE,
+ XML_FROM_XPATH,
+ XML_FROM_XPOINTER,
+ XML_FROM_REGEXP,
+ XML_FROM_DATATYPE,
+ XML_FROM_SCHEMASP,
+ XML_FROM_SCHEMASV,
+ XML_FROM_RELAXNGP,
+ XML_FROM_RELAXNGV,
+ XML_FROM_CATALOG,
+ XML_FROM_C14N,
+ XML_FROM_XSLT,
+ XML_FROM_VALID,
+ XML_FROM_CHECK,
+ XML_FROM_WRITER,
+ XML_FROM_MODULE,
+ XML_FROM_I18N,
+ XML_FROM_SCHEMATRONV
+} xmlErrorDomain;
+
+
+
+
+
+
+
+typedef struct _xmlError xmlError;
+typedef xmlError *xmlErrorPtr;
+struct _xmlError {
+ int domain;
+ int code;
+ char *message;
+ xmlErrorLevel level;
+ char *file;
+ int line;
+ char *str1;
+ char *str2;
+ char *str3;
+ int int1;
+ int int2;
+ void *ctxt;
+ void *node;
+};
+
+
+
+
+
+
+typedef enum {
+ XML_ERR_OK = 0,
+ XML_ERR_INTERNAL_ERROR,
+ XML_ERR_NO_MEMORY,
+ XML_ERR_DOCUMENT_START,
+ XML_ERR_DOCUMENT_EMPTY,
+ XML_ERR_DOCUMENT_END,
+ XML_ERR_INVALID_HEX_CHARREF,
+ XML_ERR_INVALID_DEC_CHARREF,
+ XML_ERR_INVALID_CHARREF,
+ XML_ERR_INVALID_CHAR,
+ XML_ERR_CHARREF_AT_EOF,
+ XML_ERR_CHARREF_IN_PROLOG,
+ XML_ERR_CHARREF_IN_EPILOG,
+ XML_ERR_CHARREF_IN_DTD,
+ XML_ERR_ENTITYREF_AT_EOF,
+ XML_ERR_ENTITYREF_IN_PROLOG,
+ XML_ERR_ENTITYREF_IN_EPILOG,
+ XML_ERR_ENTITYREF_IN_DTD,
+ XML_ERR_PEREF_AT_EOF,
+ XML_ERR_PEREF_IN_PROLOG,
+ XML_ERR_PEREF_IN_EPILOG,
+ XML_ERR_PEREF_IN_INT_SUBSET,
+ XML_ERR_ENTITYREF_NO_NAME,
+ XML_ERR_ENTITYREF_SEMICOL_MISSING,
+ XML_ERR_PEREF_NO_NAME,
+ XML_ERR_PEREF_SEMICOL_MISSING,
+ XML_ERR_UNDECLARED_ENTITY,
+ XML_WAR_UNDECLARED_ENTITY,
+ XML_ERR_UNPARSED_ENTITY,
+ XML_ERR_ENTITY_IS_EXTERNAL,
+ XML_ERR_ENTITY_IS_PARAMETER,
+ XML_ERR_UNKNOWN_ENCODING,
+ XML_ERR_UNSUPPORTED_ENCODING,
+ XML_ERR_STRING_NOT_STARTED,
+ XML_ERR_STRING_NOT_CLOSED,
+ XML_ERR_NS_DECL_ERROR,
+ XML_ERR_ENTITY_NOT_STARTED,
+ XML_ERR_ENTITY_NOT_FINISHED,
+ XML_ERR_LT_IN_ATTRIBUTE,
+ XML_ERR_ATTRIBUTE_NOT_STARTED,
+ XML_ERR_ATTRIBUTE_NOT_FINISHED,
+ XML_ERR_ATTRIBUTE_WITHOUT_VALUE,
+ XML_ERR_ATTRIBUTE_REDEFINED,
+ XML_ERR_LITERAL_NOT_STARTED,
+ XML_ERR_LITERAL_NOT_FINISHED,
+ XML_ERR_COMMENT_NOT_FINISHED,
+ XML_ERR_PI_NOT_STARTED,
+ XML_ERR_PI_NOT_FINISHED,
+ XML_ERR_NOTATION_NOT_STARTED,
+ XML_ERR_NOTATION_NOT_FINISHED,
+ XML_ERR_ATTLIST_NOT_STARTED,
+ XML_ERR_ATTLIST_NOT_FINISHED,
+ XML_ERR_MIXED_NOT_STARTED,
+ XML_ERR_MIXED_NOT_FINISHED,
+ XML_ERR_ELEMCONTENT_NOT_STARTED,
+ XML_ERR_ELEMCONTENT_NOT_FINISHED,
+ XML_ERR_XMLDECL_NOT_STARTED,
+ XML_ERR_XMLDECL_NOT_FINISHED,
+ XML_ERR_CONDSEC_NOT_STARTED,
+ XML_ERR_CONDSEC_NOT_FINISHED,
+ XML_ERR_EXT_SUBSET_NOT_FINISHED,
+ XML_ERR_DOCTYPE_NOT_FINISHED,
+ XML_ERR_MISPLACED_CDATA_END,
+ XML_ERR_CDATA_NOT_FINISHED,
+ XML_ERR_RESERVED_XML_NAME,
+ XML_ERR_SPACE_REQUIRED,
+ XML_ERR_SEPARATOR_REQUIRED,
+ XML_ERR_NMTOKEN_REQUIRED,
+ XML_ERR_NAME_REQUIRED,
+ XML_ERR_PCDATA_REQUIRED,
+ XML_ERR_URI_REQUIRED,
+ XML_ERR_PUBID_REQUIRED,
+ XML_ERR_LT_REQUIRED,
+ XML_ERR_GT_REQUIRED,
+ XML_ERR_LTSLASH_REQUIRED,
+ XML_ERR_EQUAL_REQUIRED,
+ XML_ERR_TAG_NAME_MISMATCH,
+ XML_ERR_TAG_NOT_FINISHED,
+ XML_ERR_STANDALONE_VALUE,
+ XML_ERR_ENCODING_NAME,
+ XML_ERR_HYPHEN_IN_COMMENT,
+ XML_ERR_INVALID_ENCODING,
+ XML_ERR_EXT_ENTITY_STANDALONE,
+ XML_ERR_CONDSEC_INVALID,
+ XML_ERR_VALUE_REQUIRED,
+ XML_ERR_NOT_WELL_BALANCED,
+ XML_ERR_EXTRA_CONTENT,
+ XML_ERR_ENTITY_CHAR_ERROR,
+ XML_ERR_ENTITY_PE_INTERNAL,
+ XML_ERR_ENTITY_LOOP,
+ XML_ERR_ENTITY_BOUNDARY,
+ XML_ERR_INVALID_URI,
+ XML_ERR_URI_FRAGMENT,
+ XML_WAR_CATALOG_PI,
+ XML_ERR_NO_DTD,
+ XML_ERR_CONDSEC_INVALID_KEYWORD,
+ XML_ERR_VERSION_MISSING,
+ XML_WAR_UNKNOWN_VERSION,
+ XML_WAR_LANG_VALUE,
+ XML_WAR_NS_URI,
+ XML_WAR_NS_URI_RELATIVE,
+ XML_ERR_MISSING_ENCODING,
+ XML_WAR_SPACE_VALUE,
+ XML_ERR_NOT_STANDALONE,
+ XML_ERR_ENTITY_PROCESSING,
+ XML_ERR_NOTATION_PROCESSING,
+ XML_WAR_NS_COLUMN,
+ XML_WAR_ENTITY_REDEFINED,
+ XML_ERR_UNKNOWN_VERSION,
+ XML_ERR_VERSION_MISMATCH,
+ XML_NS_ERR_XML_NAMESPACE = 200,
+ XML_NS_ERR_UNDEFINED_NAMESPACE,
+ XML_NS_ERR_QNAME,
+ XML_NS_ERR_ATTRIBUTE_REDEFINED,
+ XML_NS_ERR_EMPTY,
+ XML_NS_ERR_COLON,
+ XML_DTD_ATTRIBUTE_DEFAULT = 500,
+ XML_DTD_ATTRIBUTE_REDEFINED,
+ XML_DTD_ATTRIBUTE_VALUE,
+ XML_DTD_CONTENT_ERROR,
+ XML_DTD_CONTENT_MODEL,
+ XML_DTD_CONTENT_NOT_DETERMINIST,
+ XML_DTD_DIFFERENT_PREFIX,
+ XML_DTD_ELEM_DEFAULT_NAMESPACE,
+ XML_DTD_ELEM_NAMESPACE,
+ XML_DTD_ELEM_REDEFINED,
+ XML_DTD_EMPTY_NOTATION,
+ XML_DTD_ENTITY_TYPE,
+ XML_DTD_ID_FIXED,
+ XML_DTD_ID_REDEFINED,
+ XML_DTD_ID_SUBSET,
+ XML_DTD_INVALID_CHILD,
+ XML_DTD_INVALID_DEFAULT,
+ XML_DTD_LOAD_ERROR,
+ XML_DTD_MISSING_ATTRIBUTE,
+ XML_DTD_MIXED_CORRUPT,
+ XML_DTD_MULTIPLE_ID,
+ XML_DTD_NO_DOC,
+ XML_DTD_NO_DTD,
+ XML_DTD_NO_ELEM_NAME,
+ XML_DTD_NO_PREFIX,
+ XML_DTD_NO_ROOT,
+ XML_DTD_NOTATION_REDEFINED,
+ XML_DTD_NOTATION_VALUE,
+ XML_DTD_NOT_EMPTY,
+ XML_DTD_NOT_PCDATA,
+ XML_DTD_NOT_STANDALONE,
+ XML_DTD_ROOT_NAME,
+ XML_DTD_STANDALONE_WHITE_SPACE,
+ XML_DTD_UNKNOWN_ATTRIBUTE,
+ XML_DTD_UNKNOWN_ELEM,
+ XML_DTD_UNKNOWN_ENTITY,
+ XML_DTD_UNKNOWN_ID,
+ XML_DTD_UNKNOWN_NOTATION,
+ XML_DTD_STANDALONE_DEFAULTED,
+ XML_DTD_XMLID_VALUE,
+ XML_DTD_XMLID_TYPE,
+ XML_DTD_DUP_TOKEN,
+ XML_HTML_STRUCURE_ERROR = 800,
+ XML_HTML_UNKNOWN_TAG,
+ XML_RNGP_ANYNAME_ATTR_ANCESTOR = 1000,
+ XML_RNGP_ATTR_CONFLICT,
+ XML_RNGP_ATTRIBUTE_CHILDREN,
+ XML_RNGP_ATTRIBUTE_CONTENT,
+ XML_RNGP_ATTRIBUTE_EMPTY,
+ XML_RNGP_ATTRIBUTE_NOOP,
+ XML_RNGP_CHOICE_CONTENT,
+ XML_RNGP_CHOICE_EMPTY,
+ XML_RNGP_CREATE_FAILURE,
+ XML_RNGP_DATA_CONTENT,
+ XML_RNGP_DEF_CHOICE_AND_INTERLEAVE,
+ XML_RNGP_DEFINE_CREATE_FAILED,
+ XML_RNGP_DEFINE_EMPTY,
+ XML_RNGP_DEFINE_MISSING,
+ XML_RNGP_DEFINE_NAME_MISSING,
+ XML_RNGP_ELEM_CONTENT_EMPTY,
+ XML_RNGP_ELEM_CONTENT_ERROR,
+ XML_RNGP_ELEMENT_EMPTY,
+ XML_RNGP_ELEMENT_CONTENT,
+ XML_RNGP_ELEMENT_NAME,
+ XML_RNGP_ELEMENT_NO_CONTENT,
+ XML_RNGP_ELEM_TEXT_CONFLICT,
+ XML_RNGP_EMPTY,
+ XML_RNGP_EMPTY_CONSTRUCT,
+ XML_RNGP_EMPTY_CONTENT,
+ XML_RNGP_EMPTY_NOT_EMPTY,
+ XML_RNGP_ERROR_TYPE_LIB,
+ XML_RNGP_EXCEPT_EMPTY,
+ XML_RNGP_EXCEPT_MISSING,
+ XML_RNGP_EXCEPT_MULTIPLE,
+ XML_RNGP_EXCEPT_NO_CONTENT,
+ XML_RNGP_EXTERNALREF_EMTPY,
+ XML_RNGP_EXTERNAL_REF_FAILURE,
+ XML_RNGP_EXTERNALREF_RECURSE,
+ XML_RNGP_FORBIDDEN_ATTRIBUTE,
+ XML_RNGP_FOREIGN_ELEMENT,
+ XML_RNGP_GRAMMAR_CONTENT,
+ XML_RNGP_GRAMMAR_EMPTY,
+ XML_RNGP_GRAMMAR_MISSING,
+ XML_RNGP_GRAMMAR_NO_START,
+ XML_RNGP_GROUP_ATTR_CONFLICT,
+ XML_RNGP_HREF_ERROR,
+ XML_RNGP_INCLUDE_EMPTY,
+ XML_RNGP_INCLUDE_FAILURE,
+ XML_RNGP_INCLUDE_RECURSE,
+ XML_RNGP_INTERLEAVE_ADD,
+ XML_RNGP_INTERLEAVE_CREATE_FAILED,
+ XML_RNGP_INTERLEAVE_EMPTY,
+ XML_RNGP_INTERLEAVE_NO_CONTENT,
+ XML_RNGP_INVALID_DEFINE_NAME,
+ XML_RNGP_INVALID_URI,
+ XML_RNGP_INVALID_VALUE,
+ XML_RNGP_MISSING_HREF,
+ XML_RNGP_NAME_MISSING,
+ XML_RNGP_NEED_COMBINE,
+ XML_RNGP_NOTALLOWED_NOT_EMPTY,
+ XML_RNGP_NSNAME_ATTR_ANCESTOR,
+ XML_RNGP_NSNAME_NO_NS,
+ XML_RNGP_PARAM_FORBIDDEN,
+ XML_RNGP_PARAM_NAME_MISSING,
+ XML_RNGP_PARENTREF_CREATE_FAILED,
+ XML_RNGP_PARENTREF_NAME_INVALID,
+ XML_RNGP_PARENTREF_NO_NAME,
+ XML_RNGP_PARENTREF_NO_PARENT,
+ XML_RNGP_PARENTREF_NOT_EMPTY,
+ XML_RNGP_PARSE_ERROR,
+ XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME,
+ XML_RNGP_PAT_ATTR_ATTR,
+ XML_RNGP_PAT_ATTR_ELEM,
+ XML_RNGP_PAT_DATA_EXCEPT_ATTR,
+ XML_RNGP_PAT_DATA_EXCEPT_ELEM,
+ XML_RNGP_PAT_DATA_EXCEPT_EMPTY,
+ XML_RNGP_PAT_DATA_EXCEPT_GROUP,
+ XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE,
+ XML_RNGP_PAT_DATA_EXCEPT_LIST,
+ XML_RNGP_PAT_DATA_EXCEPT_ONEMORE,
+ XML_RNGP_PAT_DATA_EXCEPT_REF,
+ XML_RNGP_PAT_DATA_EXCEPT_TEXT,
+ XML_RNGP_PAT_LIST_ATTR,
+ XML_RNGP_PAT_LIST_ELEM,
+ XML_RNGP_PAT_LIST_INTERLEAVE,
+ XML_RNGP_PAT_LIST_LIST,
+ XML_RNGP_PAT_LIST_REF,
+ XML_RNGP_PAT_LIST_TEXT,
+ XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME,
+ XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME,
+ XML_RNGP_PAT_ONEMORE_GROUP_ATTR,
+ XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR,
+ XML_RNGP_PAT_START_ATTR,
+ XML_RNGP_PAT_START_DATA,
+ XML_RNGP_PAT_START_EMPTY,
+ XML_RNGP_PAT_START_GROUP,
+ XML_RNGP_PAT_START_INTERLEAVE,
+ XML_RNGP_PAT_START_LIST,
+ XML_RNGP_PAT_START_ONEMORE,
+ XML_RNGP_PAT_START_TEXT,
+ XML_RNGP_PAT_START_VALUE,
+ XML_RNGP_PREFIX_UNDEFINED,
+ XML_RNGP_REF_CREATE_FAILED,
+ XML_RNGP_REF_CYCLE,
+ XML_RNGP_REF_NAME_INVALID,
+ XML_RNGP_REF_NO_DEF,
+ XML_RNGP_REF_NO_NAME,
+ XML_RNGP_REF_NOT_EMPTY,
+ XML_RNGP_START_CHOICE_AND_INTERLEAVE,
+ XML_RNGP_START_CONTENT,
+ XML_RNGP_START_EMPTY,
+ XML_RNGP_START_MISSING,
+ XML_RNGP_TEXT_EXPECTED,
+ XML_RNGP_TEXT_HAS_CHILD,
+ XML_RNGP_TYPE_MISSING,
+ XML_RNGP_TYPE_NOT_FOUND,
+ XML_RNGP_TYPE_VALUE,
+ XML_RNGP_UNKNOWN_ATTRIBUTE,
+ XML_RNGP_UNKNOWN_COMBINE,
+ XML_RNGP_UNKNOWN_CONSTRUCT,
+ XML_RNGP_UNKNOWN_TYPE_LIB,
+ XML_RNGP_URI_FRAGMENT,
+ XML_RNGP_URI_NOT_ABSOLUTE,
+ XML_RNGP_VALUE_EMPTY,
+ XML_RNGP_VALUE_NO_CONTENT,
+ XML_RNGP_XMLNS_NAME,
+ XML_RNGP_XML_NS,
+ XML_XPATH_EXPRESSION_OK = 1200,
+ XML_XPATH_NUMBER_ERROR,
+ XML_XPATH_UNFINISHED_LITERAL_ERROR,
+ XML_XPATH_START_LITERAL_ERROR,
+ XML_XPATH_VARIABLE_REF_ERROR,
+ XML_XPATH_UNDEF_VARIABLE_ERROR,
+ XML_XPATH_INVALID_PREDICATE_ERROR,
+ XML_XPATH_EXPR_ERROR,
+ XML_XPATH_UNCLOSED_ERROR,
+ XML_XPATH_UNKNOWN_FUNC_ERROR,
+ XML_XPATH_INVALID_OPERAND,
+ XML_XPATH_INVALID_TYPE,
+ XML_XPATH_INVALID_ARITY,
+ XML_XPATH_INVALID_CTXT_SIZE,
+ XML_XPATH_INVALID_CTXT_POSITION,
+ XML_XPATH_MEMORY_ERROR,
+ XML_XPTR_SYNTAX_ERROR,
+ XML_XPTR_RESOURCE_ERROR,
+ XML_XPTR_SUB_RESOURCE_ERROR,
+ XML_XPATH_UNDEF_PREFIX_ERROR,
+ XML_XPATH_ENCODING_ERROR,
+ XML_XPATH_INVALID_CHAR_ERROR,
+ XML_TREE_INVALID_HEX = 1300,
+ XML_TREE_INVALID_DEC,
+ XML_TREE_UNTERMINATED_ENTITY,
+ XML_TREE_NOT_UTF8,
+ XML_SAVE_NOT_UTF8 = 1400,
+ XML_SAVE_CHAR_INVALID,
+ XML_SAVE_NO_DOCTYPE,
+ XML_SAVE_UNKNOWN_ENCODING,
+ XML_REGEXP_COMPILE_ERROR = 1450,
+ XML_IO_UNKNOWN = 1500,
+ XML_IO_EACCES,
+ XML_IO_EAGAIN,
+ XML_IO_EBADF,
+ XML_IO_EBADMSG,
+ XML_IO_EBUSY,
+ XML_IO_ECANCELED,
+ XML_IO_ECHILD,
+ XML_IO_EDEADLK,
+ XML_IO_EDOM,
+ XML_IO_EEXIST,
+ XML_IO_EFAULT,
+ XML_IO_EFBIG,
+ XML_IO_EINPROGRESS,
+ XML_IO_EINTR,
+ XML_IO_EINVAL,
+ XML_IO_EIO,
+ XML_IO_EISDIR,
+ XML_IO_EMFILE,
+ XML_IO_EMLINK,
+ XML_IO_EMSGSIZE,
+ XML_IO_ENAMETOOLONG,
+ XML_IO_ENFILE,
+ XML_IO_ENODEV,
+ XML_IO_ENOENT,
+ XML_IO_ENOEXEC,
+ XML_IO_ENOLCK,
+ XML_IO_ENOMEM,
+ XML_IO_ENOSPC,
+ XML_IO_ENOSYS,
+ XML_IO_ENOTDIR,
+ XML_IO_ENOTEMPTY,
+ XML_IO_ENOTSUP,
+ XML_IO_ENOTTY,
+ XML_IO_ENXIO,
+ XML_IO_EPERM,
+ XML_IO_EPIPE,
+ XML_IO_ERANGE,
+ XML_IO_EROFS,
+ XML_IO_ESPIPE,
+ XML_IO_ESRCH,
+ XML_IO_ETIMEDOUT,
+ XML_IO_EXDEV,
+ XML_IO_NETWORK_ATTEMPT,
+ XML_IO_ENCODER,
+ XML_IO_FLUSH,
+ XML_IO_WRITE,
+ XML_IO_NO_INPUT,
+ XML_IO_BUFFER_FULL,
+ XML_IO_LOAD_ERROR,
+ XML_IO_ENOTSOCK,
+ XML_IO_EISCONN,
+ XML_IO_ECONNREFUSED,
+ XML_IO_ENETUNREACH,
+ XML_IO_EADDRINUSE,
+ XML_IO_EALREADY,
+ XML_IO_EAFNOSUPPORT,
+ XML_XINCLUDE_RECURSION=1600,
+ XML_XINCLUDE_PARSE_VALUE,
+ XML_XINCLUDE_ENTITY_DEF_MISMATCH,
+ XML_XINCLUDE_NO_HREF,
+ XML_XINCLUDE_NO_FALLBACK,
+ XML_XINCLUDE_HREF_URI,
+ XML_XINCLUDE_TEXT_FRAGMENT,
+ XML_XINCLUDE_TEXT_DOCUMENT,
+ XML_XINCLUDE_INVALID_CHAR,
+ XML_XINCLUDE_BUILD_FAILED,
+ XML_XINCLUDE_UNKNOWN_ENCODING,
+ XML_XINCLUDE_MULTIPLE_ROOT,
+ XML_XINCLUDE_XPTR_FAILED,
+ XML_XINCLUDE_XPTR_RESULT,
+ XML_XINCLUDE_INCLUDE_IN_INCLUDE,
+ XML_XINCLUDE_FALLBACKS_IN_INCLUDE,
+ XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE,
+ XML_XINCLUDE_DEPRECATED_NS,
+ XML_XINCLUDE_FRAGMENT_ID,
+ XML_CATALOG_MISSING_ATTR = 1650,
+ XML_CATALOG_ENTRY_BROKEN,
+ XML_CATALOG_PREFER_VALUE,
+ XML_CATALOG_NOT_CATALOG,
+ XML_CATALOG_RECURSION,
+ XML_SCHEMAP_PREFIX_UNDEFINED = 1700,
+ XML_SCHEMAP_ATTRFORMDEFAULT_VALUE,
+ XML_SCHEMAP_ATTRGRP_NONAME_NOREF,
+ XML_SCHEMAP_ATTR_NONAME_NOREF,
+ XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF,
+ XML_SCHEMAP_ELEMFORMDEFAULT_VALUE,
+ XML_SCHEMAP_ELEM_NONAME_NOREF,
+ XML_SCHEMAP_EXTENSION_NO_BASE,
+ XML_SCHEMAP_FACET_NO_VALUE,
+ XML_SCHEMAP_FAILED_BUILD_IMPORT,
+ XML_SCHEMAP_GROUP_NONAME_NOREF,
+ XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI,
+ XML_SCHEMAP_IMPORT_REDEFINE_NSNAME,
+ XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI,
+ XML_SCHEMAP_INVALID_BOOLEAN,
+ XML_SCHEMAP_INVALID_ENUM,
+ XML_SCHEMAP_INVALID_FACET,
+ XML_SCHEMAP_INVALID_FACET_VALUE,
+ XML_SCHEMAP_INVALID_MAXOCCURS,
+ XML_SCHEMAP_INVALID_MINOCCURS,
+ XML_SCHEMAP_INVALID_REF_AND_SUBTYPE,
+ XML_SCHEMAP_INVALID_WHITE_SPACE,
+ XML_SCHEMAP_NOATTR_NOREF,
+ XML_SCHEMAP_NOTATION_NO_NAME,
+ XML_SCHEMAP_NOTYPE_NOREF,
+ XML_SCHEMAP_REF_AND_SUBTYPE,
+ XML_SCHEMAP_RESTRICTION_NONAME_NOREF,
+ XML_SCHEMAP_SIMPLETYPE_NONAME,
+ XML_SCHEMAP_TYPE_AND_SUBTYPE,
+ XML_SCHEMAP_UNKNOWN_ALL_CHILD,
+ XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD,
+ XML_SCHEMAP_UNKNOWN_ATTR_CHILD,
+ XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD,
+ XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP,
+ XML_SCHEMAP_UNKNOWN_BASE_TYPE,
+ XML_SCHEMAP_UNKNOWN_CHOICE_CHILD,
+ XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD,
+ XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD,
+ XML_SCHEMAP_UNKNOWN_ELEM_CHILD,
+ XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD,
+ XML_SCHEMAP_UNKNOWN_FACET_CHILD,
+ XML_SCHEMAP_UNKNOWN_FACET_TYPE,
+ XML_SCHEMAP_UNKNOWN_GROUP_CHILD,
+ XML_SCHEMAP_UNKNOWN_IMPORT_CHILD,
+ XML_SCHEMAP_UNKNOWN_LIST_CHILD,
+ XML_SCHEMAP_UNKNOWN_NOTATION_CHILD,
+ XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD,
+ XML_SCHEMAP_UNKNOWN_REF,
+ XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD,
+ XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD,
+ XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD,
+ XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD,
+ XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD,
+ XML_SCHEMAP_UNKNOWN_TYPE,
+ XML_SCHEMAP_UNKNOWN_UNION_CHILD,
+ XML_SCHEMAP_ELEM_DEFAULT_FIXED,
+ XML_SCHEMAP_REGEXP_INVALID,
+ XML_SCHEMAP_FAILED_LOAD,
+ XML_SCHEMAP_NOTHING_TO_PARSE,
+ XML_SCHEMAP_NOROOT,
+ XML_SCHEMAP_REDEFINED_GROUP,
+ XML_SCHEMAP_REDEFINED_TYPE,
+ XML_SCHEMAP_REDEFINED_ELEMENT,
+ XML_SCHEMAP_REDEFINED_ATTRGROUP,
+ XML_SCHEMAP_REDEFINED_ATTR,
+ XML_SCHEMAP_REDEFINED_NOTATION,
+ XML_SCHEMAP_FAILED_PARSE,
+ XML_SCHEMAP_UNKNOWN_PREFIX,
+ XML_SCHEMAP_DEF_AND_PREFIX,
+ XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD,
+ XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI,
+ XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI,
+ XML_SCHEMAP_NOT_SCHEMA,
+ XML_SCHEMAP_UNKNOWN_MEMBER_TYPE,
+ XML_SCHEMAP_INVALID_ATTR_USE,
+ XML_SCHEMAP_RECURSIVE,
+ XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE,
+ XML_SCHEMAP_INVALID_ATTR_COMBINATION,
+ XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION,
+ XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD,
+ XML_SCHEMAP_INVALID_ATTR_NAME,
+ XML_SCHEMAP_REF_AND_CONTENT,
+ XML_SCHEMAP_CT_PROPS_CORRECT_1,
+ XML_SCHEMAP_CT_PROPS_CORRECT_2,
+ XML_SCHEMAP_CT_PROPS_CORRECT_3,
+ XML_SCHEMAP_CT_PROPS_CORRECT_4,
+ XML_SCHEMAP_CT_PROPS_CORRECT_5,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3,
+ XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER,
+ XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE,
+ XML_SCHEMAP_UNION_NOT_EXPRESSIBLE,
+ XML_SCHEMAP_SRC_IMPORT_3_1,
+ XML_SCHEMAP_SRC_IMPORT_3_2,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3,
+ XML_SCHEMAP_COS_CT_EXTENDS_1_3,
+ XML_SCHEMAV_NOROOT = 1801,
+ XML_SCHEMAV_UNDECLAREDELEM,
+ XML_SCHEMAV_NOTTOPLEVEL,
+ XML_SCHEMAV_MISSING,
+ XML_SCHEMAV_WRONGELEM,
+ XML_SCHEMAV_NOTYPE,
+ XML_SCHEMAV_NOROLLBACK,
+ XML_SCHEMAV_ISABSTRACT,
+ XML_SCHEMAV_NOTEMPTY,
+ XML_SCHEMAV_ELEMCONT,
+ XML_SCHEMAV_HAVEDEFAULT,
+ XML_SCHEMAV_NOTNILLABLE,
+ XML_SCHEMAV_EXTRACONTENT,
+ XML_SCHEMAV_INVALIDATTR,
+ XML_SCHEMAV_INVALIDELEM,
+ XML_SCHEMAV_NOTDETERMINIST,
+ XML_SCHEMAV_CONSTRUCT,
+ XML_SCHEMAV_INTERNAL,
+ XML_SCHEMAV_NOTSIMPLE,
+ XML_SCHEMAV_ATTRUNKNOWN,
+ XML_SCHEMAV_ATTRINVALID,
+ XML_SCHEMAV_VALUE,
+ XML_SCHEMAV_FACET,
+ XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1,
+ XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2,
+ XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3,
+ XML_SCHEMAV_CVC_TYPE_3_1_1,
+ XML_SCHEMAV_CVC_TYPE_3_1_2,
+ XML_SCHEMAV_CVC_FACET_VALID,
+ XML_SCHEMAV_CVC_LENGTH_VALID,
+ XML_SCHEMAV_CVC_MINLENGTH_VALID,
+ XML_SCHEMAV_CVC_MAXLENGTH_VALID,
+ XML_SCHEMAV_CVC_MININCLUSIVE_VALID,
+ XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID,
+ XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID,
+ XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID,
+ XML_SCHEMAV_CVC_TOTALDIGITS_VALID,
+ XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID,
+ XML_SCHEMAV_CVC_PATTERN_VALID,
+ XML_SCHEMAV_CVC_ENUMERATION_VALID,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4,
+ XML_SCHEMAV_CVC_ELT_1,
+ XML_SCHEMAV_CVC_ELT_2,
+ XML_SCHEMAV_CVC_ELT_3_1,
+ XML_SCHEMAV_CVC_ELT_3_2_1,
+ XML_SCHEMAV_CVC_ELT_3_2_2,
+ XML_SCHEMAV_CVC_ELT_4_1,
+ XML_SCHEMAV_CVC_ELT_4_2,
+ XML_SCHEMAV_CVC_ELT_4_3,
+ XML_SCHEMAV_CVC_ELT_5_1_1,
+ XML_SCHEMAV_CVC_ELT_5_1_2,
+ XML_SCHEMAV_CVC_ELT_5_2_1,
+ XML_SCHEMAV_CVC_ELT_5_2_2_1,
+ XML_SCHEMAV_CVC_ELT_5_2_2_2_1,
+ XML_SCHEMAV_CVC_ELT_5_2_2_2_2,
+ XML_SCHEMAV_CVC_ELT_6,
+ XML_SCHEMAV_CVC_ELT_7,
+ XML_SCHEMAV_CVC_ATTRIBUTE_1,
+ XML_SCHEMAV_CVC_ATTRIBUTE_2,
+ XML_SCHEMAV_CVC_ATTRIBUTE_3,
+ XML_SCHEMAV_CVC_ATTRIBUTE_4,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_4,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2,
+ XML_SCHEMAV_ELEMENT_CONTENT,
+ XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_1,
+ XML_SCHEMAV_CVC_AU,
+ XML_SCHEMAV_CVC_TYPE_1,
+ XML_SCHEMAV_CVC_TYPE_2,
+ XML_SCHEMAV_CVC_IDC,
+ XML_SCHEMAV_CVC_WILDCARD,
+ XML_SCHEMAV_MISC,
+ XML_XPTR_UNKNOWN_SCHEME = 1900,
+ XML_XPTR_CHILDSEQ_START,
+ XML_XPTR_EVAL_FAILED,
+ XML_XPTR_EXTRA_OBJECTS,
+ XML_C14N_CREATE_CTXT = 1950,
+ XML_C14N_REQUIRES_UTF8,
+ XML_C14N_CREATE_STACK,
+ XML_C14N_INVALID_NODE,
+ XML_C14N_UNKNOW_NODE,
+ XML_C14N_RELATIVE_NAMESPACE,
+ XML_FTP_PASV_ANSWER = 2000,
+ XML_FTP_EPSV_ANSWER,
+ XML_FTP_ACCNT,
+ XML_FTP_URL_SYNTAX,
+ XML_HTTP_URL_SYNTAX = 2020,
+ XML_HTTP_USE_IP,
+ XML_HTTP_UNKNOWN_HOST,
+ XML_SCHEMAP_SRC_SIMPLE_TYPE_1 = 3000,
+ XML_SCHEMAP_SRC_SIMPLE_TYPE_2,
+ XML_SCHEMAP_SRC_SIMPLE_TYPE_3,
+ XML_SCHEMAP_SRC_SIMPLE_TYPE_4,
+ XML_SCHEMAP_SRC_RESOLVE,
+ XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE,
+ XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE,
+ XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES,
+ XML_SCHEMAP_ST_PROPS_CORRECT_1,
+ XML_SCHEMAP_ST_PROPS_CORRECT_2,
+ XML_SCHEMAP_ST_PROPS_CORRECT_3,
+ XML_SCHEMAP_COS_ST_RESTRICTS_1_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_1_2,
+ XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5,
+ XML_SCHEMAP_COS_ST_DERIVED_OK_2_1,
+ XML_SCHEMAP_COS_ST_DERIVED_OK_2_2,
+ XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED,
+ XML_SCHEMAP_S4S_ELEM_MISSING,
+ XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED,
+ XML_SCHEMAP_S4S_ATTR_MISSING,
+ XML_SCHEMAP_S4S_ATTR_INVALID_VALUE,
+ XML_SCHEMAP_SRC_ELEMENT_1,
+ XML_SCHEMAP_SRC_ELEMENT_2_1,
+ XML_SCHEMAP_SRC_ELEMENT_2_2,
+ XML_SCHEMAP_SRC_ELEMENT_3,
+ XML_SCHEMAP_P_PROPS_CORRECT_1,
+ XML_SCHEMAP_P_PROPS_CORRECT_2_1,
+ XML_SCHEMAP_P_PROPS_CORRECT_2_2,
+ XML_SCHEMAP_E_PROPS_CORRECT_2,
+ XML_SCHEMAP_E_PROPS_CORRECT_3,
+ XML_SCHEMAP_E_PROPS_CORRECT_4,
+ XML_SCHEMAP_E_PROPS_CORRECT_5,
+ XML_SCHEMAP_E_PROPS_CORRECT_6,
+ XML_SCHEMAP_SRC_INCLUDE,
+ XML_SCHEMAP_SRC_ATTRIBUTE_1,
+ XML_SCHEMAP_SRC_ATTRIBUTE_2,
+ XML_SCHEMAP_SRC_ATTRIBUTE_3_1,
+ XML_SCHEMAP_SRC_ATTRIBUTE_3_2,
+ XML_SCHEMAP_SRC_ATTRIBUTE_4,
+ XML_SCHEMAP_NO_XMLNS,
+ XML_SCHEMAP_NO_XSI,
+ XML_SCHEMAP_COS_VALID_DEFAULT_1,
+ XML_SCHEMAP_COS_VALID_DEFAULT_2_1,
+ XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1,
+ XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2,
+ XML_SCHEMAP_CVC_SIMPLE_TYPE,
+ XML_SCHEMAP_COS_CT_EXTENDS_1_1,
+ XML_SCHEMAP_SRC_IMPORT_1_1,
+ XML_SCHEMAP_SRC_IMPORT_1_2,
+ XML_SCHEMAP_SRC_IMPORT_2,
+ XML_SCHEMAP_SRC_IMPORT_2_1,
+ XML_SCHEMAP_SRC_IMPORT_2_2,
+ XML_SCHEMAP_INTERNAL,
+ XML_SCHEMAP_NOT_DETERMINISTIC,
+ XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1,
+ XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2,
+ XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3,
+ XML_SCHEMAP_MG_PROPS_CORRECT_1,
+ XML_SCHEMAP_MG_PROPS_CORRECT_2,
+ XML_SCHEMAP_SRC_CT_1,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3,
+ XML_SCHEMAP_AU_PROPS_CORRECT_2,
+ XML_SCHEMAP_A_PROPS_CORRECT_2,
+ XML_SCHEMAP_C_PROPS_CORRECT,
+ XML_SCHEMAP_SRC_REDEFINE,
+ XML_SCHEMAP_SRC_IMPORT,
+ XML_SCHEMAP_WARN_SKIP_SCHEMA,
+ XML_SCHEMAP_WARN_UNLOCATED_SCHEMA,
+ XML_SCHEMAP_WARN_ATTR_REDECL_PROH,
+ XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH,
+ XML_SCHEMAP_AG_PROPS_CORRECT,
+ XML_SCHEMAP_COS_CT_EXTENDS_1_2,
+ XML_SCHEMAP_AU_PROPS_CORRECT,
+ XML_SCHEMAP_A_PROPS_CORRECT_3,
+ XML_SCHEMAP_COS_ALL_LIMITED,
+ XML_SCHEMATRONV_ASSERT = 4000,
+ XML_SCHEMATRONV_REPORT,
+ XML_MODULE_OPEN = 4900,
+ XML_MODULE_CLOSE,
+ XML_CHECK_FOUND_ELEMENT = 5000,
+ XML_CHECK_FOUND_ATTRIBUTE,
+ XML_CHECK_FOUND_TEXT,
+ XML_CHECK_FOUND_CDATA,
+ XML_CHECK_FOUND_ENTITYREF,
+ XML_CHECK_FOUND_ENTITY,
+ XML_CHECK_FOUND_PI,
+ XML_CHECK_FOUND_COMMENT,
+ XML_CHECK_FOUND_DOCTYPE,
+ XML_CHECK_FOUND_FRAGMENT,
+ XML_CHECK_FOUND_NOTATION,
+ XML_CHECK_UNKNOWN_NODE,
+ XML_CHECK_ENTITY_TYPE,
+ XML_CHECK_NO_PARENT,
+ XML_CHECK_NO_DOC,
+ XML_CHECK_NO_NAME,
+ XML_CHECK_NO_ELEM,
+ XML_CHECK_WRONG_DOC,
+ XML_CHECK_NO_PREV,
+ XML_CHECK_WRONG_PREV,
+ XML_CHECK_NO_NEXT,
+ XML_CHECK_WRONG_NEXT,
+ XML_CHECK_NOT_DTD,
+ XML_CHECK_NOT_ATTR,
+ XML_CHECK_NOT_ATTR_DECL,
+ XML_CHECK_NOT_ELEM_DECL,
+ XML_CHECK_NOT_ENTITY_DECL,
+ XML_CHECK_NOT_NS_DECL,
+ XML_CHECK_NO_HREF,
+ XML_CHECK_WRONG_PARENT,
+ XML_CHECK_NS_SCOPE,
+ XML_CHECK_NS_ANCESTOR,
+ XML_CHECK_NOT_UTF8,
+ XML_CHECK_NO_DICT,
+ XML_CHECK_NOT_NCNAME,
+ XML_CHECK_OUTSIDE_DICT,
+ XML_CHECK_WRONG_NAME,
+ XML_CHECK_NAME_NOT_NULL,
+ XML_I18N_NO_NAME = 6000,
+ XML_I18N_NO_HANDLER,
+ XML_I18N_EXCESS_HANDLER,
+ XML_I18N_CONV_FAILED,
+ XML_I18N_NO_OUTPUT
+
+
+
+
+} xmlParserErrors;
+# 844 "/usr/include/libxml2/libxml/xmlerror.h"
+typedef void ( *xmlGenericErrorFunc) (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+# 855 "/usr/include/libxml2/libxml/xmlerror.h"
+typedef void ( *xmlStructuredErrorFunc) (void *userData, xmlErrorPtr error);
+
+
+
+
+
+ void
+ xmlSetGenericErrorFunc (void *ctx,
+ xmlGenericErrorFunc handler);
+ void
+ initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler);
+
+ void
+ xmlSetStructuredErrorFunc (void *ctx,
+ xmlStructuredErrorFunc handler);
+
+
+
+
+ void
+ xmlParserError (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+ void
+ xmlParserWarning (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+ void
+ xmlParserValidityError (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+ void
+ xmlParserValidityWarning (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+ void
+ xmlParserPrintFileInfo (xmlParserInputPtr input);
+ void
+ xmlParserPrintFileContext (xmlParserInputPtr input);
+
+
+
+
+ xmlErrorPtr
+ xmlGetLastError (void);
+ void
+ xmlResetLastError (void);
+ xmlErrorPtr
+ xmlCtxtGetLastError (void *ctx);
+ void
+ xmlCtxtResetLastError (void *ctx);
+ void
+ xmlResetError (xmlErrorPtr err);
+ int
+ xmlCopyError (xmlErrorPtr from,
+ xmlErrorPtr to);
+# 16 "/usr/include/libxml2/libxml/valid.h" 2
+
+# 1 "/usr/include/libxml2/libxml/list.h" 1
+# 20 "/usr/include/libxml2/libxml/list.h"
+typedef struct _xmlLink xmlLink;
+typedef xmlLink *xmlLinkPtr;
+
+typedef struct _xmlList xmlList;
+typedef xmlList *xmlListPtr;
+
+
+
+
+
+
+
+typedef void (*xmlListDeallocator) (xmlLinkPtr lk);
+# 42 "/usr/include/libxml2/libxml/list.h"
+typedef int (*xmlListDataCompare) (const void *data0, const void *data1);
+# 52 "/usr/include/libxml2/libxml/list.h"
+typedef int (*xmlListWalker) (const void *data, const void *user);
+
+
+ xmlListPtr
+ xmlListCreate (xmlListDeallocator deallocator,
+ xmlListDataCompare compare);
+ void
+ xmlListDelete (xmlListPtr l);
+
+
+ void *
+ xmlListSearch (xmlListPtr l,
+ void *data);
+ void *
+ xmlListReverseSearch (xmlListPtr l,
+ void *data);
+ int
+ xmlListInsert (xmlListPtr l,
+ void *data) ;
+ int
+ xmlListAppend (xmlListPtr l,
+ void *data) ;
+ int
+ xmlListRemoveFirst (xmlListPtr l,
+ void *data);
+ int
+ xmlListRemoveLast (xmlListPtr l,
+ void *data);
+ int
+ xmlListRemoveAll (xmlListPtr l,
+ void *data);
+ void
+ xmlListClear (xmlListPtr l);
+ int
+ xmlListEmpty (xmlListPtr l);
+ xmlLinkPtr
+ xmlListFront (xmlListPtr l);
+ xmlLinkPtr
+ xmlListEnd (xmlListPtr l);
+ int
+ xmlListSize (xmlListPtr l);
+
+ void
+ xmlListPopFront (xmlListPtr l);
+ void
+ xmlListPopBack (xmlListPtr l);
+ int
+ xmlListPushFront (xmlListPtr l,
+ void *data);
+ int
+ xmlListPushBack (xmlListPtr l,
+ void *data);
+
+
+ void
+ xmlListReverse (xmlListPtr l);
+ void
+ xmlListSort (xmlListPtr l);
+ void
+ xmlListWalk (xmlListPtr l,
+ xmlListWalker walker,
+ const void *user);
+ void
+ xmlListReverseWalk (xmlListPtr l,
+ xmlListWalker walker,
+ const void *user);
+ void
+ xmlListMerge (xmlListPtr l1,
+ xmlListPtr l2);
+ xmlListPtr
+ xmlListDup (const xmlListPtr old);
+ int
+ xmlListCopy (xmlListPtr cur,
+ const xmlListPtr old);
+
+ void *
+ xmlLinkGetData (xmlLinkPtr lk);
+# 18 "/usr/include/libxml2/libxml/valid.h" 2
+# 1 "/usr/include/libxml2/libxml/xmlautomata.h" 1
+# 29 "/usr/include/libxml2/libxml/xmlautomata.h"
+typedef struct _xmlAutomata xmlAutomata;
+typedef xmlAutomata *xmlAutomataPtr;
+
+
+
+
+
+
+typedef struct _xmlAutomataState xmlAutomataState;
+typedef xmlAutomataState *xmlAutomataStatePtr;
+
+
+
+
+ xmlAutomataPtr
+ xmlNewAutomata (void);
+ void
+ xmlFreeAutomata (xmlAutomataPtr am);
+
+ xmlAutomataStatePtr
+ xmlAutomataGetInitState (xmlAutomataPtr am);
+ int
+ xmlAutomataSetFinalState (xmlAutomataPtr am,
+ xmlAutomataStatePtr state);
+ xmlAutomataStatePtr
+ xmlAutomataNewState (xmlAutomataPtr am);
+ xmlAutomataStatePtr
+ xmlAutomataNewTransition (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewTransition2 (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ const xmlChar *token2,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewNegTrans (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ const xmlChar *token2,
+ void *data);
+
+ xmlAutomataStatePtr
+ xmlAutomataNewCountTrans (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ int min,
+ int max,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewCountTrans2 (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ const xmlChar *token2,
+ int min,
+ int max,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewOnceTrans (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ int min,
+ int max,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewOnceTrans2 (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ const xmlChar *token2,
+ int min,
+ int max,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewAllTrans (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ int lax);
+ xmlAutomataStatePtr
+ xmlAutomataNewEpsilon (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to);
+ xmlAutomataStatePtr
+ xmlAutomataNewCountedTrans (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ int counter);
+ xmlAutomataStatePtr
+ xmlAutomataNewCounterTrans (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ int counter);
+ int
+ xmlAutomataNewCounter (xmlAutomataPtr am,
+ int min,
+ int max);
+
+ xmlRegexpPtr
+ xmlAutomataCompile (xmlAutomataPtr am);
+ int
+ xmlAutomataIsDeterminist (xmlAutomataPtr am);
+# 19 "/usr/include/libxml2/libxml/valid.h" 2
+# 28 "/usr/include/libxml2/libxml/valid.h"
+typedef struct _xmlValidState xmlValidState;
+typedef xmlValidState *xmlValidStatePtr;
+# 42 "/usr/include/libxml2/libxml/valid.h"
+typedef void ( *xmlValidityErrorFunc) (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+# 57 "/usr/include/libxml2/libxml/valid.h"
+typedef void ( *xmlValidityWarningFunc) (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+# 80 "/usr/include/libxml2/libxml/valid.h"
+typedef struct _xmlValidCtxt xmlValidCtxt;
+typedef xmlValidCtxt *xmlValidCtxtPtr;
+struct _xmlValidCtxt {
+ void *userData;
+ xmlValidityErrorFunc error;
+ xmlValidityWarningFunc warning;
+
+
+ xmlNodePtr node;
+ int nodeNr;
+ int nodeMax;
+ xmlNodePtr *nodeTab;
+
+ unsigned int finishDtd;
+ xmlDocPtr doc;
+ int valid;
+
+
+ xmlValidState *vstate;
+ int vstateNr;
+ int vstateMax;
+ xmlValidState *vstateTab;
+
+
+ xmlAutomataPtr am;
+ xmlAutomataStatePtr state;
+
+
+
+
+};
+
+
+
+
+
+
+typedef struct _xmlHashTable xmlNotationTable;
+typedef xmlNotationTable *xmlNotationTablePtr;
+
+
+
+
+
+
+typedef struct _xmlHashTable xmlElementTable;
+typedef xmlElementTable *xmlElementTablePtr;
+
+
+
+
+
+
+typedef struct _xmlHashTable xmlAttributeTable;
+typedef xmlAttributeTable *xmlAttributeTablePtr;
+
+
+
+
+
+
+typedef struct _xmlHashTable xmlIDTable;
+typedef xmlIDTable *xmlIDTablePtr;
+
+
+
+
+
+
+typedef struct _xmlHashTable xmlRefTable;
+typedef xmlRefTable *xmlRefTablePtr;
+
+
+ xmlNotationPtr
+ xmlAddNotationDecl (xmlValidCtxtPtr ctxt,
+ xmlDtdPtr dtd,
+ const xmlChar *name,
+ const xmlChar *PublicID,
+ const xmlChar *SystemID);
+
+ xmlNotationTablePtr
+ xmlCopyNotationTable (xmlNotationTablePtr table);
+
+ void
+ xmlFreeNotationTable (xmlNotationTablePtr table);
+
+ void
+ xmlDumpNotationDecl (xmlBufferPtr buf,
+ xmlNotationPtr nota);
+ void
+ xmlDumpNotationTable (xmlBufferPtr buf,
+ xmlNotationTablePtr table);
+
+
+
+
+ xmlElementContentPtr
+ xmlNewElementContent (const xmlChar *name,
+ xmlElementContentType type);
+ xmlElementContentPtr
+ xmlCopyElementContent (xmlElementContentPtr content);
+ void
+ xmlFreeElementContent (xmlElementContentPtr cur);
+
+ xmlElementContentPtr
+ xmlNewDocElementContent (xmlDocPtr doc,
+ const xmlChar *name,
+ xmlElementContentType type);
+ xmlElementContentPtr
+ xmlCopyDocElementContent(xmlDocPtr doc,
+ xmlElementContentPtr content);
+ void
+ xmlFreeDocElementContent(xmlDocPtr doc,
+ xmlElementContentPtr cur);
+ void
+ xmlSnprintfElementContent(char *buf,
+ int size,
+ xmlElementContentPtr content,
+ int englob);
+
+
+ void
+ xmlSprintfElementContent(char *buf,
+ xmlElementContentPtr content,
+ int englob);
+
+
+
+
+ xmlElementPtr
+ xmlAddElementDecl (xmlValidCtxtPtr ctxt,
+ xmlDtdPtr dtd,
+ const xmlChar *name,
+ xmlElementTypeVal type,
+ xmlElementContentPtr content);
+
+ xmlElementTablePtr
+ xmlCopyElementTable (xmlElementTablePtr table);
+
+ void
+ xmlFreeElementTable (xmlElementTablePtr table);
+
+ void
+ xmlDumpElementTable (xmlBufferPtr buf,
+ xmlElementTablePtr table);
+ void
+ xmlDumpElementDecl (xmlBufferPtr buf,
+ xmlElementPtr elem);
+
+
+
+ xmlEnumerationPtr
+ xmlCreateEnumeration (const xmlChar *name);
+ void
+ xmlFreeEnumeration (xmlEnumerationPtr cur);
+
+ xmlEnumerationPtr
+ xmlCopyEnumeration (xmlEnumerationPtr cur);
+
+
+
+ xmlAttributePtr
+ xmlAddAttributeDecl (xmlValidCtxtPtr ctxt,
+ xmlDtdPtr dtd,
+ const xmlChar *elem,
+ const xmlChar *name,
+ const xmlChar *ns,
+ xmlAttributeType type,
+ xmlAttributeDefault def,
+ const xmlChar *defaultValue,
+ xmlEnumerationPtr tree);
+
+ xmlAttributeTablePtr
+ xmlCopyAttributeTable (xmlAttributeTablePtr table);
+
+ void
+ xmlFreeAttributeTable (xmlAttributeTablePtr table);
+
+ void
+ xmlDumpAttributeTable (xmlBufferPtr buf,
+ xmlAttributeTablePtr table);
+ void
+ xmlDumpAttributeDecl (xmlBufferPtr buf,
+ xmlAttributePtr attr);
+
+
+
+ xmlIDPtr
+ xmlAddID (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ const xmlChar *value,
+ xmlAttrPtr attr);
+ void
+ xmlFreeIDTable (xmlIDTablePtr table);
+ xmlAttrPtr
+ xmlGetID (xmlDocPtr doc,
+ const xmlChar *ID);
+ int
+ xmlIsID (xmlDocPtr doc,
+ xmlNodePtr elem,
+ xmlAttrPtr attr);
+ int
+ xmlRemoveID (xmlDocPtr doc,
+ xmlAttrPtr attr);
+
+
+ xmlRefPtr
+ xmlAddRef (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ const xmlChar *value,
+ xmlAttrPtr attr);
+ void
+ xmlFreeRefTable (xmlRefTablePtr table);
+ int
+ xmlIsRef (xmlDocPtr doc,
+ xmlNodePtr elem,
+ xmlAttrPtr attr);
+ int
+ xmlRemoveRef (xmlDocPtr doc,
+ xmlAttrPtr attr);
+ xmlListPtr
+ xmlGetRefs (xmlDocPtr doc,
+ const xmlChar *ID);
+
+
+
+
+
+
+ xmlValidCtxtPtr
+ xmlNewValidCtxt(void);
+ void
+ xmlFreeValidCtxt(xmlValidCtxtPtr);
+
+ int
+ xmlValidateRoot (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc);
+ int
+ xmlValidateElementDecl (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlElementPtr elem);
+ xmlChar *
+ xmlValidNormalizeAttributeValue(xmlDocPtr doc,
+ xmlNodePtr elem,
+ const xmlChar *name,
+ const xmlChar *value);
+ xmlChar *
+ xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem,
+ const xmlChar *name,
+ const xmlChar *value);
+ int
+ xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlAttributePtr attr);
+ int
+ xmlValidateAttributeValue(xmlAttributeType type,
+ const xmlChar *value);
+ int
+ xmlValidateNotationDecl (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNotationPtr nota);
+ int
+ xmlValidateDtd (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlDtdPtr dtd);
+ int
+ xmlValidateDtdFinal (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc);
+ int
+ xmlValidateDocument (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc);
+ int
+ xmlValidateElement (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem);
+ int
+ xmlValidateOneElement (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem);
+ int
+ xmlValidateOneAttribute (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem,
+ xmlAttrPtr attr,
+ const xmlChar *value);
+ int
+ xmlValidateOneNamespace (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem,
+ const xmlChar *prefix,
+ xmlNsPtr ns,
+ const xmlChar *value);
+ int
+ xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc);
+
+
+
+ int
+ xmlValidateNotationUse (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ const xmlChar *notationName);
+
+
+ int
+ xmlIsMixedElement (xmlDocPtr doc,
+ const xmlChar *name);
+ xmlAttributePtr
+ xmlGetDtdAttrDesc (xmlDtdPtr dtd,
+ const xmlChar *elem,
+ const xmlChar *name);
+ xmlAttributePtr
+ xmlGetDtdQAttrDesc (xmlDtdPtr dtd,
+ const xmlChar *elem,
+ const xmlChar *name,
+ const xmlChar *prefix);
+ xmlNotationPtr
+ xmlGetDtdNotationDesc (xmlDtdPtr dtd,
+ const xmlChar *name);
+ xmlElementPtr
+ xmlGetDtdQElementDesc (xmlDtdPtr dtd,
+ const xmlChar *name,
+ const xmlChar *prefix);
+ xmlElementPtr
+ xmlGetDtdElementDesc (xmlDtdPtr dtd,
+ const xmlChar *name);
+
+
+
+ int
+ xmlValidGetPotentialChildren(xmlElementContent *ctree,
+ const xmlChar **names,
+ int *len,
+ int max);
+
+ int
+ xmlValidGetValidElements(xmlNode *prev,
+ xmlNode *next,
+ const xmlChar **names,
+ int max);
+ int
+ xmlValidateNameValue (const xmlChar *value);
+ int
+ xmlValidateNamesValue (const xmlChar *value);
+ int
+ xmlValidateNmtokenValue (const xmlChar *value);
+ int
+ xmlValidateNmtokensValue(const xmlChar *value);
+
+
+
+
+
+ int
+ xmlValidBuildContentModel(xmlValidCtxtPtr ctxt,
+ xmlElementPtr elem);
+
+ int
+ xmlValidatePushElement (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem,
+ const xmlChar *qname);
+ int
+ xmlValidatePushCData (xmlValidCtxtPtr ctxt,
+ const xmlChar *data,
+ int len);
+ int
+ xmlValidatePopElement (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem,
+ const xmlChar *qname);
+# 20 "/usr/include/libxml2/libxml/parser.h" 2
+# 1 "/usr/include/libxml2/libxml/entities.h" 1
+# 24 "/usr/include/libxml2/libxml/entities.h"
+typedef enum {
+ XML_INTERNAL_GENERAL_ENTITY = 1,
+ XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2,
+ XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3,
+ XML_INTERNAL_PARAMETER_ENTITY = 4,
+ XML_EXTERNAL_PARAMETER_ENTITY = 5,
+ XML_INTERNAL_PREDEFINED_ENTITY = 6
+} xmlEntityType;
+
+
+
+
+
+
+struct _xmlEntity {
+ void *_private;
+ xmlElementType type;
+ const xmlChar *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlDtd *parent;
+ struct _xmlNode *next;
+ struct _xmlNode *prev;
+ struct _xmlDoc *doc;
+
+ xmlChar *orig;
+ xmlChar *content;
+ int length;
+ xmlEntityType etype;
+ const xmlChar *ExternalID;
+ const xmlChar *SystemID;
+
+ struct _xmlEntity *nexte;
+ const xmlChar *URI;
+ int owner;
+ int checked;
+
+
+};
+
+
+
+
+
+
+typedef struct _xmlHashTable xmlEntitiesTable;
+typedef xmlEntitiesTable *xmlEntitiesTablePtr;
+
+
+
+
+
+
+ void
+ xmlInitializePredefinedEntities (void);
+
+
+ xmlEntityPtr
+ xmlNewEntity (xmlDocPtr doc,
+ const xmlChar *name,
+ int type,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID,
+ const xmlChar *content);
+ xmlEntityPtr
+ xmlAddDocEntity (xmlDocPtr doc,
+ const xmlChar *name,
+ int type,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID,
+ const xmlChar *content);
+ xmlEntityPtr
+ xmlAddDtdEntity (xmlDocPtr doc,
+ const xmlChar *name,
+ int type,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID,
+ const xmlChar *content);
+ xmlEntityPtr
+ xmlGetPredefinedEntity (const xmlChar *name);
+ xmlEntityPtr
+ xmlGetDocEntity (xmlDocPtr doc,
+ const xmlChar *name);
+ xmlEntityPtr
+ xmlGetDtdEntity (xmlDocPtr doc,
+ const xmlChar *name);
+ xmlEntityPtr
+ xmlGetParameterEntity (xmlDocPtr doc,
+ const xmlChar *name);
+
+ const xmlChar *
+ xmlEncodeEntities (xmlDocPtr doc,
+ const xmlChar *input);
+
+ xmlChar *
+ xmlEncodeEntitiesReentrant(xmlDocPtr doc,
+ const xmlChar *input);
+ xmlChar *
+ xmlEncodeSpecialChars (xmlDocPtr doc,
+ const xmlChar *input);
+ xmlEntitiesTablePtr
+ xmlCreateEntitiesTable (void);
+
+ xmlEntitiesTablePtr
+ xmlCopyEntitiesTable (xmlEntitiesTablePtr table);
+
+ void
+ xmlFreeEntitiesTable (xmlEntitiesTablePtr table);
+
+ void
+ xmlDumpEntitiesTable (xmlBufferPtr buf,
+ xmlEntitiesTablePtr table);
+ void
+ xmlDumpEntityDecl (xmlBufferPtr buf,
+ xmlEntityPtr ent);
+
+
+ void
+ xmlCleanupPredefinedEntities(void);
+# 21 "/usr/include/libxml2/libxml/parser.h" 2
+# 1 "/usr/include/libxml2/libxml/xmlerror.h" 1
+# 22 "/usr/include/libxml2/libxml/parser.h" 2
+# 52 "/usr/include/libxml2/libxml/parser.h"
+typedef void (* xmlParserInputDeallocate)(xmlChar *str);
+
+struct _xmlParserInput {
+
+ xmlParserInputBufferPtr buf;
+
+ const char *filename;
+ const char *directory;
+ const xmlChar *base;
+ const xmlChar *cur;
+ const xmlChar *end;
+ int length;
+ int line;
+ int col;
+
+
+
+
+
+ unsigned long consumed;
+ xmlParserInputDeallocate free;
+ const xmlChar *encoding;
+ const xmlChar *version;
+ int standalone;
+ int id;
+};
+# 86 "/usr/include/libxml2/libxml/parser.h"
+typedef struct _xmlParserNodeInfo xmlParserNodeInfo;
+typedef xmlParserNodeInfo *xmlParserNodeInfoPtr;
+
+struct _xmlParserNodeInfo {
+ const struct _xmlNode* node;
+
+ unsigned long begin_pos;
+ unsigned long begin_line;
+ unsigned long end_pos;
+ unsigned long end_line;
+};
+
+typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
+typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
+struct _xmlParserNodeInfoSeq {
+ unsigned long maximum;
+ unsigned long length;
+ xmlParserNodeInfo* buffer;
+};
+
+
+
+
+
+
+
+typedef enum {
+ XML_PARSER_EOF = -1,
+ XML_PARSER_START = 0,
+ XML_PARSER_MISC,
+ XML_PARSER_PI,
+ XML_PARSER_DTD,
+ XML_PARSER_PROLOG,
+ XML_PARSER_COMMENT,
+ XML_PARSER_START_TAG,
+ XML_PARSER_CONTENT,
+ XML_PARSER_CDATA_SECTION,
+ XML_PARSER_END_TAG,
+ XML_PARSER_ENTITY_DECL,
+ XML_PARSER_ENTITY_VALUE,
+ XML_PARSER_ATTRIBUTE_VALUE,
+ XML_PARSER_SYSTEM_LITERAL,
+ XML_PARSER_EPILOG,
+ XML_PARSER_IGNORE,
+ XML_PARSER_PUBLIC_LITERAL
+} xmlParserInputState;
+# 163 "/usr/include/libxml2/libxml/parser.h"
+typedef enum {
+ XML_PARSE_UNKNOWN = 0,
+ XML_PARSE_DOM = 1,
+ XML_PARSE_SAX = 2,
+ XML_PARSE_PUSH_DOM = 3,
+ XML_PARSE_PUSH_SAX = 4,
+ XML_PARSE_READER = 5
+} xmlParserMode;
+# 184 "/usr/include/libxml2/libxml/parser.h"
+struct _xmlParserCtxt {
+ struct _xmlSAXHandler *sax;
+ void *userData;
+ xmlDocPtr myDoc;
+ int wellFormed;
+ int replaceEntities;
+ const xmlChar *version;
+ const xmlChar *encoding;
+ int standalone;
+ int html;
+
+
+
+
+
+ xmlParserInputPtr input;
+ int inputNr;
+ int inputMax;
+ xmlParserInputPtr *inputTab;
+
+
+ xmlNodePtr node;
+ int nodeNr;
+ int nodeMax;
+ xmlNodePtr *nodeTab;
+
+ int record_info;
+ xmlParserNodeInfoSeq node_seq;
+
+ int errNo;
+
+ int hasExternalSubset;
+ int hasPErefs;
+ int external;
+
+ int valid;
+ int validate;
+ xmlValidCtxt vctxt;
+
+ xmlParserInputState instate;
+ int token;
+
+ char *directory;
+
+
+ const xmlChar *name;
+ int nameNr;
+ int nameMax;
+ const xmlChar * *nameTab;
+
+ long nbChars;
+ long checkIndex;
+ int keepBlanks;
+ int disableSAX;
+ int inSubset;
+ const xmlChar * intSubName;
+ xmlChar * extSubURI;
+ xmlChar * extSubSystem;
+
+
+ int * space;
+ int spaceNr;
+ int spaceMax;
+ int * spaceTab;
+
+ int depth;
+ xmlParserInputPtr entity;
+ int charset;
+
+ int nodelen;
+ int nodemem;
+ int pedantic;
+ void *_private;
+
+ int loadsubset;
+ int linenumbers;
+ void *catalogs;
+ int recovery;
+ int progressive;
+ xmlDictPtr dict;
+ const xmlChar * *atts;
+ int maxatts;
+ int docdict;
+
+
+
+
+ const xmlChar *str_xml;
+ const xmlChar *str_xmlns;
+ const xmlChar *str_xml_ns;
+
+
+
+
+ int sax2;
+ int nsNr;
+ int nsMax;
+ const xmlChar * *nsTab;
+ int *attallocs;
+ void * *pushTab;
+ xmlHashTablePtr attsDefault;
+ xmlHashTablePtr attsSpecial;
+ int nsWellFormed;
+ int options;
+
+
+
+
+ int dictNames;
+ int freeElemsNr;
+ xmlNodePtr freeElems;
+ int freeAttrsNr;
+ xmlAttrPtr freeAttrs;
+
+
+
+
+ xmlError lastError;
+ xmlParserMode parseMode;
+ unsigned long nbentities;
+ unsigned long sizeentities;
+};
+
+
+
+
+
+
+struct _xmlSAXLocator {
+ const xmlChar *(*getPublicId)(void *ctx);
+ const xmlChar *(*getSystemId)(void *ctx);
+ int (*getLineNumber)(void *ctx);
+ int (*getColumnNumber)(void *ctx);
+};
+# 341 "/usr/include/libxml2/libxml/parser.h"
+typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx,
+ const xmlChar *publicId,
+ const xmlChar *systemId);
+# 353 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*internalSubsetSAXFunc) (void *ctx,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+# 366 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*externalSubsetSAXFunc) (void *ctx,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+# 379 "/usr/include/libxml2/libxml/parser.h"
+typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx,
+ const xmlChar *name);
+# 390 "/usr/include/libxml2/libxml/parser.h"
+typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx,
+ const xmlChar *name);
+# 403 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*entityDeclSAXFunc) (void *ctx,
+ const xmlChar *name,
+ int type,
+ const xmlChar *publicId,
+ const xmlChar *systemId,
+ xmlChar *content);
+# 418 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*notationDeclSAXFunc)(void *ctx,
+ const xmlChar *name,
+ const xmlChar *publicId,
+ const xmlChar *systemId);
+# 434 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*attributeDeclSAXFunc)(void *ctx,
+ const xmlChar *elem,
+ const xmlChar *fullname,
+ int type,
+ int def,
+ const xmlChar *defaultValue,
+ xmlEnumerationPtr tree);
+# 450 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*elementDeclSAXFunc)(void *ctx,
+ const xmlChar *name,
+ int type,
+ xmlElementContentPtr content);
+# 464 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*unparsedEntityDeclSAXFunc)(void *ctx,
+ const xmlChar *name,
+ const xmlChar *publicId,
+ const xmlChar *systemId,
+ const xmlChar *notationName);
+# 477 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*setDocumentLocatorSAXFunc) (void *ctx,
+ xmlSAXLocatorPtr loc);
+
+
+
+
+
+
+typedef void (*startDocumentSAXFunc) (void *ctx);
+
+
+
+
+
+
+typedef void (*endDocumentSAXFunc) (void *ctx);
+# 501 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*startElementSAXFunc) (void *ctx,
+ const xmlChar *name,
+ const xmlChar **atts);
+
+
+
+
+
+
+
+typedef void (*endElementSAXFunc) (void *ctx,
+ const xmlChar *name);
+# 524 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*attributeSAXFunc) (void *ctx,
+ const xmlChar *name,
+ const xmlChar *value);
+
+
+
+
+
+
+
+typedef void (*referenceSAXFunc) (void *ctx,
+ const xmlChar *name);
+# 544 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*charactersSAXFunc) (void *ctx,
+ const xmlChar *ch,
+ int len);
+# 556 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*ignorableWhitespaceSAXFunc) (void *ctx,
+ const xmlChar *ch,
+ int len);
+# 567 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*processingInstructionSAXFunc) (void *ctx,
+ const xmlChar *target,
+ const xmlChar *data);
+
+
+
+
+
+
+
+typedef void (*commentSAXFunc) (void *ctx,
+ const xmlChar *value);
+# 587 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*cdataBlockSAXFunc) (
+ void *ctx,
+ const xmlChar *value,
+ int len);
+# 599 "/usr/include/libxml2/libxml/parser.h"
+typedef void ( *warningSAXFunc) (void *ctx,
+ const char *msg, ...) __attribute__((__format__(__printf__,2,3)));
+# 609 "/usr/include/libxml2/libxml/parser.h"
+typedef void ( *errorSAXFunc) (void *ctx,
+ const char *msg, ...) __attribute__((__format__(__printf__,2,3)));
+# 621 "/usr/include/libxml2/libxml/parser.h"
+typedef void ( *fatalErrorSAXFunc) (void *ctx,
+ const char *msg, ...) __attribute__((__format__(__printf__,2,3)));
+# 631 "/usr/include/libxml2/libxml/parser.h"
+typedef int (*isStandaloneSAXFunc) (void *ctx);
+# 640 "/usr/include/libxml2/libxml/parser.h"
+typedef int (*hasInternalSubsetSAXFunc) (void *ctx);
+# 650 "/usr/include/libxml2/libxml/parser.h"
+typedef int (*hasExternalSubsetSAXFunc) (void *ctx);
+# 683 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*startElementNsSAX2Func) (void *ctx,
+ const xmlChar *localname,
+ const xmlChar *prefix,
+ const xmlChar *URI,
+ int nb_namespaces,
+ const xmlChar **namespaces,
+ int nb_attributes,
+ int nb_defaulted,
+ const xmlChar **attributes);
+# 704 "/usr/include/libxml2/libxml/parser.h"
+typedef void (*endElementNsSAX2Func) (void *ctx,
+ const xmlChar *localname,
+ const xmlChar *prefix,
+ const xmlChar *URI);
+
+
+struct _xmlSAXHandler {
+ internalSubsetSAXFunc internalSubset;
+ isStandaloneSAXFunc isStandalone;
+ hasInternalSubsetSAXFunc hasInternalSubset;
+ hasExternalSubsetSAXFunc hasExternalSubset;
+ resolveEntitySAXFunc resolveEntity;
+ getEntitySAXFunc getEntity;
+ entityDeclSAXFunc entityDecl;
+ notationDeclSAXFunc notationDecl;
+ attributeDeclSAXFunc attributeDecl;
+ elementDeclSAXFunc elementDecl;
+ unparsedEntityDeclSAXFunc unparsedEntityDecl;
+ setDocumentLocatorSAXFunc setDocumentLocator;
+ startDocumentSAXFunc startDocument;
+ endDocumentSAXFunc endDocument;
+ startElementSAXFunc startElement;
+ endElementSAXFunc endElement;
+ referenceSAXFunc reference;
+ charactersSAXFunc characters;
+ ignorableWhitespaceSAXFunc ignorableWhitespace;
+ processingInstructionSAXFunc processingInstruction;
+ commentSAXFunc comment;
+ warningSAXFunc warning;
+ errorSAXFunc error;
+ fatalErrorSAXFunc fatalError;
+ getParameterEntitySAXFunc getParameterEntity;
+ cdataBlockSAXFunc cdataBlock;
+ externalSubsetSAXFunc externalSubset;
+ unsigned int initialized;
+
+ void *_private;
+ startElementNsSAX2Func startElementNs;
+ endElementNsSAX2Func endElementNs;
+ xmlStructuredErrorFunc serror;
+};
+
+
+
+
+typedef struct _xmlSAXHandlerV1 xmlSAXHandlerV1;
+typedef xmlSAXHandlerV1 *xmlSAXHandlerV1Ptr;
+struct _xmlSAXHandlerV1 {
+ internalSubsetSAXFunc internalSubset;
+ isStandaloneSAXFunc isStandalone;
+ hasInternalSubsetSAXFunc hasInternalSubset;
+ hasExternalSubsetSAXFunc hasExternalSubset;
+ resolveEntitySAXFunc resolveEntity;
+ getEntitySAXFunc getEntity;
+ entityDeclSAXFunc entityDecl;
+ notationDeclSAXFunc notationDecl;
+ attributeDeclSAXFunc attributeDecl;
+ elementDeclSAXFunc elementDecl;
+ unparsedEntityDeclSAXFunc unparsedEntityDecl;
+ setDocumentLocatorSAXFunc setDocumentLocator;
+ startDocumentSAXFunc startDocument;
+ endDocumentSAXFunc endDocument;
+ startElementSAXFunc startElement;
+ endElementSAXFunc endElement;
+ referenceSAXFunc reference;
+ charactersSAXFunc characters;
+ ignorableWhitespaceSAXFunc ignorableWhitespace;
+ processingInstructionSAXFunc processingInstruction;
+ commentSAXFunc comment;
+ warningSAXFunc warning;
+ errorSAXFunc error;
+ fatalErrorSAXFunc fatalError;
+ getParameterEntitySAXFunc getParameterEntity;
+ cdataBlockSAXFunc cdataBlock;
+ externalSubsetSAXFunc externalSubset;
+ unsigned int initialized;
+};
+# 793 "/usr/include/libxml2/libxml/parser.h"
+typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL,
+ const char *ID,
+ xmlParserCtxtPtr context);
+
+
+
+
+
+# 1 "/usr/include/libxml2/libxml/encoding.h" 1
+# 28 "/usr/include/libxml2/libxml/encoding.h"
+# 1 "/usr/include/iconv.h" 1 3 4
+# 24 "/usr/include/iconv.h" 3 4
+# 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.4.2/include/stddef.h" 1 3 4
+# 25 "/usr/include/iconv.h" 2 3 4
+
+
+
+
+
+typedef void *iconv_t;
+
+
+
+
+
+
+
+extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode);
+
+
+
+
+extern size_t iconv (iconv_t __cd, char **__restrict __inbuf,
+ size_t *__restrict __inbytesleft,
+ char **__restrict __outbuf,
+ size_t *__restrict __outbytesleft);
+
+
+
+
+
+extern int iconv_close (iconv_t __cd);
+
+
+# 29 "/usr/include/libxml2/libxml/encoding.h" 2
+# 55 "/usr/include/libxml2/libxml/encoding.h"
+typedef enum {
+ XML_CHAR_ENCODING_ERROR= -1,
+ XML_CHAR_ENCODING_NONE= 0,
+ XML_CHAR_ENCODING_UTF8= 1,
+ XML_CHAR_ENCODING_UTF16LE= 2,
+ XML_CHAR_ENCODING_UTF16BE= 3,
+ XML_CHAR_ENCODING_UCS4LE= 4,
+ XML_CHAR_ENCODING_UCS4BE= 5,
+ XML_CHAR_ENCODING_EBCDIC= 6,
+ XML_CHAR_ENCODING_UCS4_2143=7,
+ XML_CHAR_ENCODING_UCS4_3412=8,
+ XML_CHAR_ENCODING_UCS2= 9,
+ XML_CHAR_ENCODING_8859_1= 10,
+ XML_CHAR_ENCODING_8859_2= 11,
+ XML_CHAR_ENCODING_8859_3= 12,
+ XML_CHAR_ENCODING_8859_4= 13,
+ XML_CHAR_ENCODING_8859_5= 14,
+ XML_CHAR_ENCODING_8859_6= 15,
+ XML_CHAR_ENCODING_8859_7= 16,
+ XML_CHAR_ENCODING_8859_8= 17,
+ XML_CHAR_ENCODING_8859_9= 18,
+ XML_CHAR_ENCODING_2022_JP= 19,
+ XML_CHAR_ENCODING_SHIFT_JIS=20,
+ XML_CHAR_ENCODING_EUC_JP= 21,
+ XML_CHAR_ENCODING_ASCII= 22
+} xmlCharEncoding;
+# 98 "/usr/include/libxml2/libxml/encoding.h"
+typedef int (* xmlCharEncodingInputFunc)(unsigned char *out, int *outlen,
+ const unsigned char *in, int *inlen);
+# 120 "/usr/include/libxml2/libxml/encoding.h"
+typedef int (* xmlCharEncodingOutputFunc)(unsigned char *out, int *outlen,
+ const unsigned char *in, int *inlen);
+
+
+
+
+
+
+
+typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler;
+typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr;
+struct _xmlCharEncodingHandler {
+ char *name;
+ xmlCharEncodingInputFunc input;
+ xmlCharEncodingOutputFunc output;
+
+ iconv_t iconv_in;
+ iconv_t iconv_out;
+
+};
+# 152 "/usr/include/libxml2/libxml/encoding.h"
+ void
+ xmlInitCharEncodingHandlers (void);
+ void
+ xmlCleanupCharEncodingHandlers (void);
+ void
+ xmlRegisterCharEncodingHandler (xmlCharEncodingHandlerPtr handler);
+ xmlCharEncodingHandlerPtr
+ xmlGetCharEncodingHandler (xmlCharEncoding enc);
+ xmlCharEncodingHandlerPtr
+ xmlFindCharEncodingHandler (const char *name);
+ xmlCharEncodingHandlerPtr
+ xmlNewCharEncodingHandler (const char *name,
+ xmlCharEncodingInputFunc input,
+ xmlCharEncodingOutputFunc output);
+
+
+
+
+ int
+ xmlAddEncodingAlias (const char *name,
+ const char *alias);
+ int
+ xmlDelEncodingAlias (const char *alias);
+ const char *
+ xmlGetEncodingAlias (const char *alias);
+ void
+ xmlCleanupEncodingAliases (void);
+ xmlCharEncoding
+ xmlParseCharEncoding (const char *name);
+ const char *
+ xmlGetCharEncodingName (xmlCharEncoding enc);
+
+
+
+
+ xmlCharEncoding
+ xmlDetectCharEncoding (const unsigned char *in,
+ int len);
+
+ int
+ xmlCharEncOutFunc (xmlCharEncodingHandler *handler,
+ xmlBufferPtr out,
+ xmlBufferPtr in);
+
+ int
+ xmlCharEncInFunc (xmlCharEncodingHandler *handler,
+ xmlBufferPtr out,
+ xmlBufferPtr in);
+ int
+ xmlCharEncFirstLine (xmlCharEncodingHandler *handler,
+ xmlBufferPtr out,
+ xmlBufferPtr in);
+ int
+ xmlCharEncCloseFunc (xmlCharEncodingHandler *handler);
+
+
+
+
+
+ int
+ UTF8Toisolat1 (unsigned char *out,
+ int *outlen,
+ const unsigned char *in,
+ int *inlen);
+
+ int
+ isolat1ToUTF8 (unsigned char *out,
+ int *outlen,
+ const unsigned char *in,
+ int *inlen);
+# 802 "/usr/include/libxml2/libxml/parser.h" 2
+# 1 "/usr/include/libxml2/libxml/xmlIO.h" 1
+# 34 "/usr/include/libxml2/libxml/xmlIO.h"
+typedef int ( *xmlInputMatchCallback) (char const *filename);
+# 43 "/usr/include/libxml2/libxml/xmlIO.h"
+typedef void * ( *xmlInputOpenCallback) (char const *filename);
+# 54 "/usr/include/libxml2/libxml/xmlIO.h"
+typedef int ( *xmlInputReadCallback) (void * context, char * buffer, int len);
+# 63 "/usr/include/libxml2/libxml/xmlIO.h"
+typedef int ( *xmlInputCloseCallback) (void * context);
+# 80 "/usr/include/libxml2/libxml/xmlIO.h"
+typedef int ( *xmlOutputMatchCallback) (char const *filename);
+# 89 "/usr/include/libxml2/libxml/xmlIO.h"
+typedef void * ( *xmlOutputOpenCallback) (char const *filename);
+# 100 "/usr/include/libxml2/libxml/xmlIO.h"
+typedef int ( *xmlOutputWriteCallback) (void * context, const char * buffer,
+ int len);
+# 110 "/usr/include/libxml2/libxml/xmlIO.h"
+typedef int ( *xmlOutputCloseCallback) (void * context);
+
+
+
+
+
+
+# 1 "/usr/include/libxml2/libxml/globals.h" 1
+# 19 "/usr/include/libxml2/libxml/globals.h"
+# 1 "/usr/include/libxml2/libxml/xmlerror.h" 1
+# 20 "/usr/include/libxml2/libxml/globals.h" 2
+# 1 "/usr/include/libxml2/libxml/SAX.h" 1
+# 19 "/usr/include/libxml2/libxml/SAX.h"
+# 1 "/usr/include/libxml2/libxml/xlink.h" 1
+# 32 "/usr/include/libxml2/libxml/xlink.h"
+typedef xmlChar *xlinkHRef;
+typedef xmlChar *xlinkRole;
+typedef xmlChar *xlinkTitle;
+
+typedef enum {
+ XLINK_TYPE_NONE = 0,
+ XLINK_TYPE_SIMPLE,
+ XLINK_TYPE_EXTENDED,
+ XLINK_TYPE_EXTENDED_SET
+} xlinkType;
+
+typedef enum {
+ XLINK_SHOW_NONE = 0,
+ XLINK_SHOW_NEW,
+ XLINK_SHOW_EMBED,
+ XLINK_SHOW_REPLACE
+} xlinkShow;
+
+typedef enum {
+ XLINK_ACTUATE_NONE = 0,
+ XLINK_ACTUATE_AUTO,
+ XLINK_ACTUATE_ONREQUEST
+} xlinkActuate;
+# 64 "/usr/include/libxml2/libxml/xlink.h"
+typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNodePtr node);
+# 81 "/usr/include/libxml2/libxml/xlink.h"
+typedef void
+(*xlinkSimpleLinkFunk) (void *ctx,
+ xmlNodePtr node,
+ const xlinkHRef href,
+ const xlinkRole role,
+ const xlinkTitle title);
+# 106 "/usr/include/libxml2/libxml/xlink.h"
+typedef void
+(*xlinkExtendedLinkFunk)(void *ctx,
+ xmlNodePtr node,
+ int nbLocators,
+ const xlinkHRef *hrefs,
+ const xlinkRole *roles,
+ int nbArcs,
+ const xlinkRole *from,
+ const xlinkRole *to,
+ xlinkShow *show,
+ xlinkActuate *actuate,
+ int nbTitles,
+ const xlinkTitle *titles,
+ const xmlChar **langs);
+# 134 "/usr/include/libxml2/libxml/xlink.h"
+typedef void
+(*xlinkExtendedLinkSetFunk) (void *ctx,
+ xmlNodePtr node,
+ int nbLocators,
+ const xlinkHRef *hrefs,
+ const xlinkRole *roles,
+ int nbTitles,
+ const xlinkTitle *titles,
+ const xmlChar **langs);
+
+
+
+
+
+
+
+typedef struct _xlinkHandler xlinkHandler;
+typedef xlinkHandler *xlinkHandlerPtr;
+struct _xlinkHandler {
+ xlinkSimpleLinkFunk simple;
+ xlinkExtendedLinkFunk extended;
+ xlinkExtendedLinkSetFunk set;
+};
+
+
+
+
+
+
+ xlinkNodeDetectFunc
+ xlinkGetDefaultDetect (void);
+ void
+ xlinkSetDefaultDetect (xlinkNodeDetectFunc func);
+
+
+
+
+ xlinkHandlerPtr
+ xlinkGetDefaultHandler (void);
+ void
+ xlinkSetDefaultHandler (xlinkHandlerPtr handler);
+
+
+
+
+ xlinkType
+ xlinkIsLink (xmlDocPtr doc,
+ xmlNodePtr node);
+# 20 "/usr/include/libxml2/libxml/SAX.h" 2
+
+
+
+
+
+
+ const xmlChar *
+ getPublicId (void *ctx);
+ const xmlChar *
+ getSystemId (void *ctx);
+ void
+ setDocumentLocator (void *ctx,
+ xmlSAXLocatorPtr loc);
+
+ int
+ getLineNumber (void *ctx);
+ int
+ getColumnNumber (void *ctx);
+
+ int
+ isStandalone (void *ctx);
+ int
+ hasInternalSubset (void *ctx);
+ int
+ hasExternalSubset (void *ctx);
+
+ void
+ internalSubset (void *ctx,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ void
+ externalSubset (void *ctx,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ xmlEntityPtr
+ getEntity (void *ctx,
+ const xmlChar *name);
+ xmlEntityPtr
+ getParameterEntity (void *ctx,
+ const xmlChar *name);
+ xmlParserInputPtr
+ resolveEntity (void *ctx,
+ const xmlChar *publicId,
+ const xmlChar *systemId);
+
+ void
+ entityDecl (void *ctx,
+ const xmlChar *name,
+ int type,
+ const xmlChar *publicId,
+ const xmlChar *systemId,
+ xmlChar *content);
+ void
+ attributeDecl (void *ctx,
+ const xmlChar *elem,
+ const xmlChar *fullname,
+ int type,
+ int def,
+ const xmlChar *defaultValue,
+ xmlEnumerationPtr tree);
+ void
+ elementDecl (void *ctx,
+ const xmlChar *name,
+ int type,
+ xmlElementContentPtr content);
+ void
+ notationDecl (void *ctx,
+ const xmlChar *name,
+ const xmlChar *publicId,
+ const xmlChar *systemId);
+ void
+ unparsedEntityDecl (void *ctx,
+ const xmlChar *name,
+ const xmlChar *publicId,
+ const xmlChar *systemId,
+ const xmlChar *notationName);
+
+ void
+ startDocument (void *ctx);
+ void
+ endDocument (void *ctx);
+ void
+ attribute (void *ctx,
+ const xmlChar *fullname,
+ const xmlChar *value);
+ void
+ startElement (void *ctx,
+ const xmlChar *fullname,
+ const xmlChar **atts);
+ void
+ endElement (void *ctx,
+ const xmlChar *name);
+ void
+ reference (void *ctx,
+ const xmlChar *name);
+ void
+ characters (void *ctx,
+ const xmlChar *ch,
+ int len);
+ void
+ ignorableWhitespace (void *ctx,
+ const xmlChar *ch,
+ int len);
+ void
+ processingInstruction (void *ctx,
+ const xmlChar *target,
+ const xmlChar *data);
+ void
+ globalNamespace (void *ctx,
+ const xmlChar *href,
+ const xmlChar *prefix);
+ void
+ setNamespace (void *ctx,
+ const xmlChar *name);
+ xmlNsPtr
+ getNamespace (void *ctx);
+ int
+ checkNamespace (void *ctx,
+ xmlChar *nameSpace);
+ void
+ namespaceDecl (void *ctx,
+ const xmlChar *href,
+ const xmlChar *prefix);
+ void
+ comment (void *ctx,
+ const xmlChar *value);
+ void
+ cdataBlock (void *ctx,
+ const xmlChar *value,
+ int len);
+
+
+ void
+ initxmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr,
+ int warning);
+
+ void
+ inithtmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr);
+
+
+ void
+ initdocbDefaultSAXHandler (xmlSAXHandlerV1 *hdlr);
+# 21 "/usr/include/libxml2/libxml/globals.h" 2
+# 1 "/usr/include/libxml2/libxml/SAX2.h" 1
+# 24 "/usr/include/libxml2/libxml/SAX2.h"
+ const xmlChar *
+ xmlSAX2GetPublicId (void *ctx);
+ const xmlChar *
+ xmlSAX2GetSystemId (void *ctx);
+ void
+ xmlSAX2SetDocumentLocator (void *ctx,
+ xmlSAXLocatorPtr loc);
+
+ int
+ xmlSAX2GetLineNumber (void *ctx);
+ int
+ xmlSAX2GetColumnNumber (void *ctx);
+
+ int
+ xmlSAX2IsStandalone (void *ctx);
+ int
+ xmlSAX2HasInternalSubset (void *ctx);
+ int
+ xmlSAX2HasExternalSubset (void *ctx);
+
+ void
+ xmlSAX2InternalSubset (void *ctx,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ void
+ xmlSAX2ExternalSubset (void *ctx,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ xmlEntityPtr
+ xmlSAX2GetEntity (void *ctx,
+ const xmlChar *name);
+ xmlEntityPtr
+ xmlSAX2GetParameterEntity (void *ctx,
+ const xmlChar *name);
+ xmlParserInputPtr
+ xmlSAX2ResolveEntity (void *ctx,
+ const xmlChar *publicId,
+ const xmlChar *systemId);
+
+ void
+ xmlSAX2EntityDecl (void *ctx,
+ const xmlChar *name,
+ int type,
+ const xmlChar *publicId,
+ const xmlChar *systemId,
+ xmlChar *content);
+ void
+ xmlSAX2AttributeDecl (void *ctx,
+ const xmlChar *elem,
+ const xmlChar *fullname,
+ int type,
+ int def,
+ const xmlChar *defaultValue,
+ xmlEnumerationPtr tree);
+ void
+ xmlSAX2ElementDecl (void *ctx,
+ const xmlChar *name,
+ int type,
+ xmlElementContentPtr content);
+ void
+ xmlSAX2NotationDecl (void *ctx,
+ const xmlChar *name,
+ const xmlChar *publicId,
+ const xmlChar *systemId);
+ void
+ xmlSAX2UnparsedEntityDecl (void *ctx,
+ const xmlChar *name,
+ const xmlChar *publicId,
+ const xmlChar *systemId,
+ const xmlChar *notationName);
+
+ void
+ xmlSAX2StartDocument (void *ctx);
+ void
+ xmlSAX2EndDocument (void *ctx);
+
+ void
+ xmlSAX2StartElement (void *ctx,
+ const xmlChar *fullname,
+ const xmlChar **atts);
+ void
+ xmlSAX2EndElement (void *ctx,
+ const xmlChar *name);
+
+ void
+ xmlSAX2StartElementNs (void *ctx,
+ const xmlChar *localname,
+ const xmlChar *prefix,
+ const xmlChar *URI,
+ int nb_namespaces,
+ const xmlChar **namespaces,
+ int nb_attributes,
+ int nb_defaulted,
+ const xmlChar **attributes);
+ void
+ xmlSAX2EndElementNs (void *ctx,
+ const xmlChar *localname,
+ const xmlChar *prefix,
+ const xmlChar *URI);
+ void
+ xmlSAX2Reference (void *ctx,
+ const xmlChar *name);
+ void
+ xmlSAX2Characters (void *ctx,
+ const xmlChar *ch,
+ int len);
+ void
+ xmlSAX2IgnorableWhitespace (void *ctx,
+ const xmlChar *ch,
+ int len);
+ void
+ xmlSAX2ProcessingInstruction (void *ctx,
+ const xmlChar *target,
+ const xmlChar *data);
+ void
+ xmlSAX2Comment (void *ctx,
+ const xmlChar *value);
+ void
+ xmlSAX2CDataBlock (void *ctx,
+ const xmlChar *value,
+ int len);
+
+
+ int
+ xmlSAXDefaultVersion (int version);
+
+
+ int
+ xmlSAXVersion (xmlSAXHandler *hdlr,
+ int version);
+ void
+ xmlSAX2InitDefaultSAXHandler (xmlSAXHandler *hdlr,
+ int warning);
+
+ void
+ xmlSAX2InitHtmlDefaultSAXHandler(xmlSAXHandler *hdlr);
+ void
+ htmlDefaultSAXHandlerInit (void);
+
+
+ void
+ xmlSAX2InitDocbDefaultSAXHandler(xmlSAXHandler *hdlr);
+ void
+ docbDefaultSAXHandlerInit (void);
+
+ void
+ xmlDefaultSAXHandlerInit (void);
+# 22 "/usr/include/libxml2/libxml/globals.h" 2
+# 1 "/usr/include/libxml2/libxml/xmlmemory.h" 1
+# 57 "/usr/include/libxml2/libxml/xmlmemory.h"
+typedef void ( *xmlFreeFunc)(void *mem);
+# 66 "/usr/include/libxml2/libxml/xmlmemory.h"
+typedef void *(__attribute__((alloc_size(1))) *xmlMallocFunc)(size_t size);
+# 77 "/usr/include/libxml2/libxml/xmlmemory.h"
+typedef void *( *xmlReallocFunc)(void *mem, size_t size);
+# 87 "/usr/include/libxml2/libxml/xmlmemory.h"
+typedef char *( *xmlStrdupFunc)(const char *str);
+# 103 "/usr/include/libxml2/libxml/xmlmemory.h"
+ int
+ xmlMemSetup (xmlFreeFunc freeFunc,
+ xmlMallocFunc mallocFunc,
+ xmlReallocFunc reallocFunc,
+ xmlStrdupFunc strdupFunc);
+ int
+ xmlMemGet (xmlFreeFunc *freeFunc,
+ xmlMallocFunc *mallocFunc,
+ xmlReallocFunc *reallocFunc,
+ xmlStrdupFunc *strdupFunc);
+ int
+ xmlGcMemSetup (xmlFreeFunc freeFunc,
+ xmlMallocFunc mallocFunc,
+ xmlMallocFunc mallocAtomicFunc,
+ xmlReallocFunc reallocFunc,
+ xmlStrdupFunc strdupFunc);
+ int
+ xmlGcMemGet (xmlFreeFunc *freeFunc,
+ xmlMallocFunc *mallocFunc,
+ xmlMallocFunc *mallocAtomicFunc,
+ xmlReallocFunc *reallocFunc,
+ xmlStrdupFunc *strdupFunc);
+
+
+
+
+ int
+ xmlInitMemory (void);
+
+
+
+
+ void
+ xmlCleanupMemory (void);
+
+
+
+ int
+ xmlMemUsed (void);
+ int
+ xmlMemBlocks (void);
+ void
+ xmlMemDisplay (FILE *fp);
+ void
+ xmlMemDisplayLast(FILE *fp, long nbBytes);
+ void
+ xmlMemShow (FILE *fp, int nr);
+ void
+ xmlMemoryDump (void);
+ void *
+ xmlMemMalloc (size_t size) __attribute__((alloc_size(1)));
+ void *
+ xmlMemRealloc (void *ptr,size_t size);
+ void
+ xmlMemFree (void *ptr);
+ char *
+ xmlMemoryStrdup (const char *str);
+ void *
+ xmlMallocLoc (size_t size, const char *file, int line) __attribute__((alloc_size(1)));
+ void *
+ xmlReallocLoc (void *ptr, size_t size, const char *file, int line);
+ void *
+ xmlMallocAtomicLoc (size_t size, const char *file, int line) __attribute__((alloc_size(1)));
+ char *
+ xmlMemStrdupLoc (const char *str, const char *file, int line);
+# 23 "/usr/include/libxml2/libxml/globals.h" 2
+
+
+
+
+
+ void xmlInitGlobals(void);
+ void xmlCleanupGlobals(void);
+# 42 "/usr/include/libxml2/libxml/globals.h"
+typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI, xmlCharEncoding enc);
+# 55 "/usr/include/libxml2/libxml/globals.h"
+typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI, xmlCharEncodingHandlerPtr encoder, int compression);
+
+ xmlParserInputBufferCreateFilenameFunc
+ xmlParserInputBufferCreateFilenameDefault (xmlParserInputBufferCreateFilenameFunc func);
+ xmlOutputBufferCreateFilenameFunc
+ xmlOutputBufferCreateFilenameDefault (xmlOutputBufferCreateFilenameFunc func);
+# 107 "/usr/include/libxml2/libxml/globals.h"
+typedef void (*xmlRegisterNodeFunc) (xmlNodePtr node);
+
+
+
+
+
+
+typedef void (*xmlDeregisterNodeFunc) (xmlNodePtr node);
+
+typedef struct _xmlGlobalState xmlGlobalState;
+typedef xmlGlobalState *xmlGlobalStatePtr;
+struct _xmlGlobalState
+{
+ const char *xmlParserVersion;
+
+ xmlSAXLocator xmlDefaultSAXLocator;
+ xmlSAXHandlerV1 xmlDefaultSAXHandler;
+ xmlSAXHandlerV1 docbDefaultSAXHandler;
+ xmlSAXHandlerV1 htmlDefaultSAXHandler;
+
+ xmlFreeFunc xmlFree;
+ xmlMallocFunc xmlMalloc;
+ xmlStrdupFunc xmlMemStrdup;
+ xmlReallocFunc xmlRealloc;
+
+ xmlGenericErrorFunc xmlGenericError;
+ xmlStructuredErrorFunc xmlStructuredError;
+ void *xmlGenericErrorContext;
+
+ int oldXMLWDcompatibility;
+
+ xmlBufferAllocationScheme xmlBufferAllocScheme;
+ int xmlDefaultBufferSize;
+
+ int xmlSubstituteEntitiesDefaultValue;
+ int xmlDoValidityCheckingDefaultValue;
+ int xmlGetWarningsDefaultValue;
+ int xmlKeepBlanksDefaultValue;
+ int xmlLineNumbersDefaultValue;
+ int xmlLoadExtDtdDefaultValue;
+ int xmlParserDebugEntities;
+ int xmlPedanticParserDefaultValue;
+
+ int xmlSaveNoEmptyTags;
+ int xmlIndentTreeOutput;
+ const char *xmlTreeIndentString;
+
+ xmlRegisterNodeFunc xmlRegisterNodeDefaultValue;
+ xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue;
+
+ xmlMallocFunc xmlMallocAtomic;
+ xmlError xmlLastError;
+
+ xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue;
+ xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue;
+
+ void *xmlStructuredErrorContext;
+};
+
+
+
+
+# 1 "/usr/include/libxml2/libxml/threads.h" 1
+# 23 "/usr/include/libxml2/libxml/threads.h"
+typedef struct _xmlMutex xmlMutex;
+typedef xmlMutex *xmlMutexPtr;
+
+
+
+
+typedef struct _xmlRMutex xmlRMutex;
+typedef xmlRMutex *xmlRMutexPtr;
+
+
+
+
+# 1 "/usr/include/libxml2/libxml/globals.h" 1
+# 36 "/usr/include/libxml2/libxml/threads.h" 2
+
+
+
+ xmlMutexPtr
+ xmlNewMutex (void);
+ void
+ xmlMutexLock (xmlMutexPtr tok);
+ void
+ xmlMutexUnlock (xmlMutexPtr tok);
+ void
+ xmlFreeMutex (xmlMutexPtr tok);
+
+ xmlRMutexPtr
+ xmlNewRMutex (void);
+ void
+ xmlRMutexLock (xmlRMutexPtr tok);
+ void
+ xmlRMutexUnlock (xmlRMutexPtr tok);
+ void
+ xmlFreeRMutex (xmlRMutexPtr tok);
+
+
+
+
+ void
+ xmlInitThreads (void);
+ void
+ xmlLockLibrary (void);
+ void
+ xmlUnlockLibrary(void);
+ int
+ xmlGetThreadId (void);
+ int
+ xmlIsMainThread (void);
+ void
+ xmlCleanupThreads(void);
+ xmlGlobalStatePtr
+ xmlGetGlobalState(void);
+# 170 "/usr/include/libxml2/libxml/globals.h" 2
+
+
+
+
+ void xmlInitializeGlobalState(xmlGlobalStatePtr gs);
+
+ void xmlThrDefSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler);
+
+ void xmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler);
+
+ xmlRegisterNodeFunc xmlRegisterNodeDefault(xmlRegisterNodeFunc func);
+ xmlRegisterNodeFunc xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func);
+ xmlDeregisterNodeFunc xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func);
+ xmlDeregisterNodeFunc xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func);
+
+ xmlOutputBufferCreateFilenameFunc
+ xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func);
+ xmlParserInputBufferCreateFilenameFunc
+ xmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func);
+# 243 "/usr/include/libxml2/libxml/globals.h"
+extern xmlMallocFunc xmlMalloc;
+extern xmlMallocFunc xmlMallocAtomic;
+extern xmlReallocFunc xmlRealloc;
+extern xmlFreeFunc xmlFree;
+extern xmlStrdupFunc xmlMemStrdup;
+
+
+
+ xmlSAXHandlerV1 * __docbDefaultSAXHandler(void);
+# 261 "/usr/include/libxml2/libxml/globals.h"
+ xmlSAXHandlerV1 * __htmlDefaultSAXHandler(void);
+# 270 "/usr/include/libxml2/libxml/globals.h"
+ xmlError * __xmlLastError(void);
+# 285 "/usr/include/libxml2/libxml/globals.h"
+ int * __oldXMLWDcompatibility(void);
+
+
+
+
+
+
+
+ xmlBufferAllocationScheme * __xmlBufferAllocScheme(void);
+
+
+
+
+
+
+ xmlBufferAllocationScheme xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v);
+
+ int * __xmlDefaultBufferSize(void);
+
+
+
+
+
+
+ int xmlThrDefDefaultBufferSize(int v);
+
+ xmlSAXHandlerV1 * __xmlDefaultSAXHandler(void);
+
+
+
+
+
+
+
+ xmlSAXLocator * __xmlDefaultSAXLocator(void);
+
+
+
+
+
+
+
+ int * __xmlDoValidityCheckingDefaultValue(void);
+
+
+
+
+
+
+ int xmlThrDefDoValidityCheckingDefaultValue(int v);
+
+ xmlGenericErrorFunc * __xmlGenericError(void);
+
+
+
+
+
+
+
+ xmlStructuredErrorFunc * __xmlStructuredError(void);
+
+
+
+
+
+
+
+ void * * __xmlGenericErrorContext(void);
+
+
+
+
+
+
+
+ void * * __xmlStructuredErrorContext(void);
+
+
+
+
+
+
+
+ int * __xmlGetWarningsDefaultValue(void);
+
+
+
+
+
+
+ int xmlThrDefGetWarningsDefaultValue(int v);
+
+ int * __xmlIndentTreeOutput(void);
+
+
+
+
+
+
+ int xmlThrDefIndentTreeOutput(int v);
+
+ const char * * __xmlTreeIndentString(void);
+
+
+
+
+
+
+ const char * xmlThrDefTreeIndentString(const char * v);
+
+ int * __xmlKeepBlanksDefaultValue(void);
+
+
+
+
+
+
+ int xmlThrDefKeepBlanksDefaultValue(int v);
+
+ int * __xmlLineNumbersDefaultValue(void);
+
+
+
+
+
+
+ int xmlThrDefLineNumbersDefaultValue(int v);
+
+ int * __xmlLoadExtDtdDefaultValue(void);
+
+
+
+
+
+
+ int xmlThrDefLoadExtDtdDefaultValue(int v);
+
+ int * __xmlParserDebugEntities(void);
+
+
+
+
+
+
+ int xmlThrDefParserDebugEntities(int v);
+
+ const char * * __xmlParserVersion(void);
+
+
+
+
+
+
+
+ int * __xmlPedanticParserDefaultValue(void);
+
+
+
+
+
+
+ int xmlThrDefPedanticParserDefaultValue(int v);
+
+ int * __xmlSaveNoEmptyTags(void);
+
+
+
+
+
+
+ int xmlThrDefSaveNoEmptyTags(int v);
+
+ int * __xmlSubstituteEntitiesDefaultValue(void);
+
+
+
+
+
+
+ int xmlThrDefSubstituteEntitiesDefaultValue(int v);
+
+ xmlRegisterNodeFunc * __xmlRegisterNodeDefaultValue(void);
+
+
+
+
+
+
+
+ xmlDeregisterNodeFunc * __xmlDeregisterNodeDefaultValue(void);
+
+
+
+
+
+
+
+ xmlParserInputBufferCreateFilenameFunc * __xmlParserInputBufferCreateFilenameValue(void);
+
+
+
+
+
+
+
+ xmlOutputBufferCreateFilenameFunc * __xmlOutputBufferCreateFilenameValue(void);
+# 118 "/usr/include/libxml2/libxml/xmlIO.h" 2
+
+
+
+
+
+
+
+struct _xmlParserInputBuffer {
+ void* context;
+ xmlInputReadCallback readcallback;
+ xmlInputCloseCallback closecallback;
+
+ xmlCharEncodingHandlerPtr encoder;
+
+ xmlBufferPtr buffer;
+ xmlBufferPtr raw;
+ int compressed;
+ int error;
+ unsigned long rawconsumed;
+};
+
+
+
+struct _xmlOutputBuffer {
+ void* context;
+ xmlOutputWriteCallback writecallback;
+ xmlOutputCloseCallback closecallback;
+
+ xmlCharEncodingHandlerPtr encoder;
+
+ xmlBufferPtr buffer;
+ xmlBufferPtr conv;
+ int written;
+ int error;
+};
+
+
+
+
+
+ void
+ xmlCleanupInputCallbacks (void);
+
+ int
+ xmlPopInputCallbacks (void);
+
+ void
+ xmlRegisterDefaultInputCallbacks (void);
+ xmlParserInputBufferPtr
+ xmlAllocParserInputBuffer (xmlCharEncoding enc);
+
+ xmlParserInputBufferPtr
+ xmlParserInputBufferCreateFilename (const char *URI,
+ xmlCharEncoding enc);
+ xmlParserInputBufferPtr
+ xmlParserInputBufferCreateFile (FILE *file,
+ xmlCharEncoding enc);
+ xmlParserInputBufferPtr
+ xmlParserInputBufferCreateFd (int fd,
+ xmlCharEncoding enc);
+ xmlParserInputBufferPtr
+ xmlParserInputBufferCreateMem (const char *mem, int size,
+ xmlCharEncoding enc);
+ xmlParserInputBufferPtr
+ xmlParserInputBufferCreateStatic (const char *mem, int size,
+ xmlCharEncoding enc);
+ xmlParserInputBufferPtr
+ xmlParserInputBufferCreateIO (xmlInputReadCallback ioread,
+ xmlInputCloseCallback ioclose,
+ void *ioctx,
+ xmlCharEncoding enc);
+ int
+ xmlParserInputBufferRead (xmlParserInputBufferPtr in,
+ int len);
+ int
+ xmlParserInputBufferGrow (xmlParserInputBufferPtr in,
+ int len);
+ int
+ xmlParserInputBufferPush (xmlParserInputBufferPtr in,
+ int len,
+ const char *buf);
+ void
+ xmlFreeParserInputBuffer (xmlParserInputBufferPtr in);
+ char *
+ xmlParserGetDirectory (const char *filename);
+
+ int
+ xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc,
+ xmlInputOpenCallback openFunc,
+ xmlInputReadCallback readFunc,
+ xmlInputCloseCallback closeFunc);
+
+xmlParserInputBufferPtr
+ __xmlParserInputBufferCreateFilename(const char *URI,
+ xmlCharEncoding enc);
+
+
+
+
+
+ void
+ xmlCleanupOutputCallbacks (void);
+ void
+ xmlRegisterDefaultOutputCallbacks(void);
+ xmlOutputBufferPtr
+ xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder);
+
+ xmlOutputBufferPtr
+ xmlOutputBufferCreateFilename (const char *URI,
+ xmlCharEncodingHandlerPtr encoder,
+ int compression);
+
+ xmlOutputBufferPtr
+ xmlOutputBufferCreateFile (FILE *file,
+ xmlCharEncodingHandlerPtr encoder);
+
+ xmlOutputBufferPtr
+ xmlOutputBufferCreateBuffer (xmlBufferPtr buffer,
+ xmlCharEncodingHandlerPtr encoder);
+
+ xmlOutputBufferPtr
+ xmlOutputBufferCreateFd (int fd,
+ xmlCharEncodingHandlerPtr encoder);
+
+ xmlOutputBufferPtr
+ xmlOutputBufferCreateIO (xmlOutputWriteCallback iowrite,
+ xmlOutputCloseCallback ioclose,
+ void *ioctx,
+ xmlCharEncodingHandlerPtr encoder);
+
+ int
+ xmlOutputBufferWrite (xmlOutputBufferPtr out,
+ int len,
+ const char *buf);
+ int
+ xmlOutputBufferWriteString (xmlOutputBufferPtr out,
+ const char *str);
+ int
+ xmlOutputBufferWriteEscape (xmlOutputBufferPtr out,
+ const xmlChar *str,
+ xmlCharEncodingOutputFunc escaping);
+
+ int
+ xmlOutputBufferFlush (xmlOutputBufferPtr out);
+ int
+ xmlOutputBufferClose (xmlOutputBufferPtr out);
+
+ int
+ xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc,
+ xmlOutputOpenCallback openFunc,
+ xmlOutputWriteCallback writeFunc,
+ xmlOutputCloseCallback closeFunc);
+
+xmlOutputBufferPtr
+ __xmlOutputBufferCreateFilename(const char *URI,
+ xmlCharEncodingHandlerPtr encoder,
+ int compression);
+
+
+
+ void
+ xmlRegisterHTTPPostCallbacks (void );
+
+
+
+
+ xmlParserInputPtr
+ xmlCheckHTTPInput (xmlParserCtxtPtr ctxt,
+ xmlParserInputPtr ret);
+
+
+
+
+ xmlParserInputPtr
+ xmlNoNetExternalEntityLoader (const char *URL,
+ const char *ID,
+ xmlParserCtxtPtr ctxt);
+
+
+
+
+
+ xmlChar *
+ xmlNormalizeWindowsPath (const xmlChar *path);
+
+ int
+ xmlCheckFilename (const char *path);
+
+
+
+ int
+ xmlFileMatch (const char *filename);
+ void *
+ xmlFileOpen (const char *filename);
+ int
+ xmlFileRead (void * context,
+ char * buffer,
+ int len);
+ int
+ xmlFileClose (void * context);
+
+
+
+
+
+ int
+ xmlIOHTTPMatch (const char *filename);
+ void *
+ xmlIOHTTPOpen (const char *filename);
+
+ void *
+ xmlIOHTTPOpenW (const char * post_uri,
+ int compression );
+
+ int
+ xmlIOHTTPRead (void * context,
+ char * buffer,
+ int len);
+ int
+ xmlIOHTTPClose (void * context);
+
+
+
+
+
+
+ int
+ xmlIOFTPMatch (const char *filename);
+ void *
+ xmlIOFTPOpen (const char *filename);
+ int
+ xmlIOFTPRead (void * context,
+ char * buffer,
+ int len);
+ int
+ xmlIOFTPClose (void * context);
+# 803 "/usr/include/libxml2/libxml/parser.h" 2
+# 813 "/usr/include/libxml2/libxml/parser.h"
+ void
+ xmlInitParser (void);
+ void
+ xmlCleanupParser (void);
+
+
+
+
+ int
+ xmlParserInputRead (xmlParserInputPtr in,
+ int len);
+ int
+ xmlParserInputGrow (xmlParserInputPtr in,
+ int len);
+
+
+
+
+
+ xmlDocPtr
+ xmlParseDoc (const xmlChar *cur);
+ xmlDocPtr
+ xmlParseFile (const char *filename);
+ xmlDocPtr
+ xmlParseMemory (const char *buffer,
+ int size);
+
+ int
+ xmlSubstituteEntitiesDefault(int val);
+ int
+ xmlKeepBlanksDefault (int val);
+ void
+ xmlStopParser (xmlParserCtxtPtr ctxt);
+ int
+ xmlPedanticParserDefault(int val);
+ int
+ xmlLineNumbersDefault (int val);
+
+
+
+
+
+ xmlDocPtr
+ xmlRecoverDoc (const xmlChar *cur);
+ xmlDocPtr
+ xmlRecoverMemory (const char *buffer,
+ int size);
+ xmlDocPtr
+ xmlRecoverFile (const char *filename);
+
+
+
+
+
+ int
+ xmlParseDocument (xmlParserCtxtPtr ctxt);
+ int
+ xmlParseExtParsedEnt (xmlParserCtxtPtr ctxt);
+
+ int
+ xmlSAXUserParseFile (xmlSAXHandlerPtr sax,
+ void *user_data,
+ const char *filename);
+ int
+ xmlSAXUserParseMemory (xmlSAXHandlerPtr sax,
+ void *user_data,
+ const char *buffer,
+ int size);
+ xmlDocPtr
+ xmlSAXParseDoc (xmlSAXHandlerPtr sax,
+ const xmlChar *cur,
+ int recovery);
+ xmlDocPtr
+ xmlSAXParseMemory (xmlSAXHandlerPtr sax,
+ const char *buffer,
+ int size,
+ int recovery);
+ xmlDocPtr
+ xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
+ const char *buffer,
+ int size,
+ int recovery,
+ void *data);
+ xmlDocPtr
+ xmlSAXParseFile (xmlSAXHandlerPtr sax,
+ const char *filename,
+ int recovery);
+ xmlDocPtr
+ xmlSAXParseFileWithData (xmlSAXHandlerPtr sax,
+ const char *filename,
+ int recovery,
+ void *data);
+ xmlDocPtr
+ xmlSAXParseEntity (xmlSAXHandlerPtr sax,
+ const char *filename);
+ xmlDocPtr
+ xmlParseEntity (const char *filename);
+
+
+
+ xmlDtdPtr
+ xmlSAXParseDTD (xmlSAXHandlerPtr sax,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ xmlDtdPtr
+ xmlParseDTD (const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ xmlDtdPtr
+ xmlIOParseDTD (xmlSAXHandlerPtr sax,
+ xmlParserInputBufferPtr input,
+ xmlCharEncoding enc);
+
+
+ int
+ xmlParseBalancedChunkMemory(xmlDocPtr doc,
+ xmlSAXHandlerPtr sax,
+ void *user_data,
+ int depth,
+ const xmlChar *string,
+ xmlNodePtr *lst);
+
+ xmlParserErrors
+ xmlParseInNodeContext (xmlNodePtr node,
+ const char *data,
+ int datalen,
+ int options,
+ xmlNodePtr *lst);
+
+ int
+ xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc,
+ xmlSAXHandlerPtr sax,
+ void *user_data,
+ int depth,
+ const xmlChar *string,
+ xmlNodePtr *lst,
+ int recover);
+ int
+ xmlParseExternalEntity (xmlDocPtr doc,
+ xmlSAXHandlerPtr sax,
+ void *user_data,
+ int depth,
+ const xmlChar *URL,
+ const xmlChar *ID,
+ xmlNodePtr *lst);
+
+ int
+ xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
+ const xmlChar *URL,
+ const xmlChar *ID,
+ xmlNodePtr *lst);
+
+
+
+
+ xmlParserCtxtPtr
+ xmlNewParserCtxt (void);
+ int
+ xmlInitParserCtxt (xmlParserCtxtPtr ctxt);
+ void
+ xmlClearParserCtxt (xmlParserCtxtPtr ctxt);
+ void
+ xmlFreeParserCtxt (xmlParserCtxtPtr ctxt);
+
+ void
+ xmlSetupParserForBuffer (xmlParserCtxtPtr ctxt,
+ const xmlChar* buffer,
+ const char *filename);
+
+ xmlParserCtxtPtr
+ xmlCreateDocParserCtxt (const xmlChar *cur);
+
+
+
+
+
+ int
+ xmlGetFeaturesList (int *len,
+ const char **result);
+ int
+ xmlGetFeature (xmlParserCtxtPtr ctxt,
+ const char *name,
+ void *result);
+ int
+ xmlSetFeature (xmlParserCtxtPtr ctxt,
+ const char *name,
+ void *value);
+
+
+
+
+
+
+ xmlParserCtxtPtr
+ xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
+ void *user_data,
+ const char *chunk,
+ int size,
+ const char *filename);
+ int
+ xmlParseChunk (xmlParserCtxtPtr ctxt,
+ const char *chunk,
+ int size,
+ int terminate);
+
+
+
+
+
+
+ xmlParserCtxtPtr
+ xmlCreateIOParserCtxt (xmlSAXHandlerPtr sax,
+ void *user_data,
+ xmlInputReadCallback ioread,
+ xmlInputCloseCallback ioclose,
+ void *ioctx,
+ xmlCharEncoding enc);
+
+ xmlParserInputPtr
+ xmlNewIOInputStream (xmlParserCtxtPtr ctxt,
+ xmlParserInputBufferPtr input,
+ xmlCharEncoding enc);
+
+
+
+
+ const xmlParserNodeInfo*
+ xmlParserFindNodeInfo (const xmlParserCtxtPtr ctxt,
+ const xmlNodePtr node);
+ void
+ xmlInitNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
+ void
+ xmlClearNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
+ unsigned long
+ xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq,
+ const xmlNodePtr node);
+ void
+ xmlParserAddNodeInfo (xmlParserCtxtPtr ctxt,
+ const xmlParserNodeInfoPtr info);
+
+
+
+
+
+ void
+ xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
+ xmlExternalEntityLoader
+ xmlGetExternalEntityLoader(void);
+ xmlParserInputPtr
+ xmlLoadExternalEntity (const char *URL,
+ const char *ID,
+ xmlParserCtxtPtr ctxt);
+
+
+
+
+ long
+ xmlByteConsumed (xmlParserCtxtPtr ctxt);
+# 1080 "/usr/include/libxml2/libxml/parser.h"
+typedef enum {
+ XML_PARSE_RECOVER = 1<<0,
+ XML_PARSE_NOENT = 1<<1,
+ XML_PARSE_DTDLOAD = 1<<2,
+ XML_PARSE_DTDATTR = 1<<3,
+ XML_PARSE_DTDVALID = 1<<4,
+ XML_PARSE_NOERROR = 1<<5,
+ XML_PARSE_NOWARNING = 1<<6,
+ XML_PARSE_PEDANTIC = 1<<7,
+ XML_PARSE_NOBLANKS = 1<<8,
+ XML_PARSE_SAX1 = 1<<9,
+ XML_PARSE_XINCLUDE = 1<<10,
+ XML_PARSE_NONET = 1<<11,
+ XML_PARSE_NODICT = 1<<12,
+ XML_PARSE_NSCLEAN = 1<<13,
+ XML_PARSE_NOCDATA = 1<<14,
+ XML_PARSE_NOXINCNODE= 1<<15,
+ XML_PARSE_COMPACT = 1<<16,
+
+
+ XML_PARSE_OLD10 = 1<<17,
+ XML_PARSE_NOBASEFIX = 1<<18,
+ XML_PARSE_HUGE = 1<<19,
+ XML_PARSE_OLDSAX = 1<<20
+} xmlParserOption;
+
+ void
+ xmlCtxtReset (xmlParserCtxtPtr ctxt);
+ int
+ xmlCtxtResetPush (xmlParserCtxtPtr ctxt,
+ const char *chunk,
+ int size,
+ const char *filename,
+ const char *encoding);
+ int
+ xmlCtxtUseOptions (xmlParserCtxtPtr ctxt,
+ int options);
+ xmlDocPtr
+ xmlReadDoc (const xmlChar *cur,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlReadFile (const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlReadMemory (const char *buffer,
+ int size,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlReadFd (int fd,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlReadIO (xmlInputReadCallback ioread,
+ xmlInputCloseCallback ioclose,
+ void *ioctx,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlCtxtReadDoc (xmlParserCtxtPtr ctxt,
+ const xmlChar *cur,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlCtxtReadFile (xmlParserCtxtPtr ctxt,
+ const char *filename,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlCtxtReadMemory (xmlParserCtxtPtr ctxt,
+ const char *buffer,
+ int size,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlCtxtReadFd (xmlParserCtxtPtr ctxt,
+ int fd,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlCtxtReadIO (xmlParserCtxtPtr ctxt,
+ xmlInputReadCallback ioread,
+ xmlInputCloseCallback ioclose,
+ void *ioctx,
+ const char *URL,
+ const char *encoding,
+ int options);
+# 1187 "/usr/include/libxml2/libxml/parser.h"
+typedef enum {
+ XML_WITH_THREAD = 1,
+ XML_WITH_TREE = 2,
+ XML_WITH_OUTPUT = 3,
+ XML_WITH_PUSH = 4,
+ XML_WITH_READER = 5,
+ XML_WITH_PATTERN = 6,
+ XML_WITH_WRITER = 7,
+ XML_WITH_SAX1 = 8,
+ XML_WITH_FTP = 9,
+ XML_WITH_HTTP = 10,
+ XML_WITH_VALID = 11,
+ XML_WITH_HTML = 12,
+ XML_WITH_LEGACY = 13,
+ XML_WITH_C14N = 14,
+ XML_WITH_CATALOG = 15,
+ XML_WITH_XPATH = 16,
+ XML_WITH_XPTR = 17,
+ XML_WITH_XINCLUDE = 18,
+ XML_WITH_ICONV = 19,
+ XML_WITH_ISO8859X = 20,
+ XML_WITH_UNICODE = 21,
+ XML_WITH_REGEXP = 22,
+ XML_WITH_AUTOMATA = 23,
+ XML_WITH_EXPR = 24,
+ XML_WITH_SCHEMAS = 25,
+ XML_WITH_SCHEMATRON = 26,
+ XML_WITH_MODULES = 27,
+ XML_WITH_DEBUG = 28,
+ XML_WITH_DEBUG_MEM = 29,
+ XML_WITH_DEBUG_RUN = 30,
+ XML_WITH_ZLIB = 31,
+ XML_WITH_NONE = 99999
+} xmlFeature;
+
+ int
+ xmlHasFeature (xmlFeature feature);
+# 172 "/usr/include/gstreamer-0.10/gst/gstconfig.h" 2
+# 52 "/usr/include/gstreamer-0.10/gst/gstelement.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstobject.h" 1
+# 31 "/usr/include/gstreamer-0.10/gst/gstobject.h"
+
+# 59 "/usr/include/gstreamer-0.10/gst/gstobject.h"
+typedef enum
+{
+ GST_OBJECT_DISPOSING = (1<<0),
+ GST_OBJECT_FLOATING = (1<<1),
+
+ GST_OBJECT_FLAG_LAST = (1<<4)
+} GstObjectFlags;
+# 181 "/usr/include/gstreamer-0.10/gst/gstobject.h"
+typedef struct _GstObject GstObject;
+typedef struct _GstObjectClass GstObjectClass;
+# 195 "/usr/include/gstreamer-0.10/gst/gstobject.h"
+struct _GstObject {
+ GObject object;
+
+
+ gint refcount;
+
+
+ GMutex *lock;
+ gchar *name;
+ gchar *name_prefix;
+ GstObject *parent;
+ guint32 flags;
+
+
+ gpointer _gst_reserved;
+};
+# 249 "/usr/include/gstreamer-0.10/gst/gstobject.h"
+struct _GstObjectClass {
+ GObjectClass parent_class;
+
+ gchar *path_string_separator;
+ GObject *signal_object;
+
+ GStaticRecMutex *lock;
+
+
+ void (*parent_set) (GstObject * object, GstObject * parent);
+ void (*parent_unset) (GstObject * object, GstObject * parent);
+ void (*object_saved) (GstObject * object, xmlNodePtr parent);
+ void (*deep_notify) (GstObject * object, GstObject * orig, GParamSpec * pspec);
+
+
+
+ xmlNodePtr (*save_thyself) (GstObject * object, xmlNodePtr parent);
+ void (*restore_thyself) (GstObject * object, xmlNodePtr self);
+
+
+ gpointer _gst_reserved[4];
+};
+
+
+GType gst_object_get_type (void);
+
+
+gboolean gst_object_set_name (GstObject *object, const gchar *name);
+gchar* gst_object_get_name (GstObject *object);
+void gst_object_set_name_prefix (GstObject *object, const gchar *name_prefix);
+gchar* gst_object_get_name_prefix (GstObject *object);
+
+
+gboolean gst_object_set_parent (GstObject *object, GstObject *parent);
+GstObject* gst_object_get_parent (GstObject *object);
+void gst_object_unparent (GstObject *object);
+gboolean gst_object_has_ancestor (GstObject *object, GstObject *ancestor);
+
+void gst_object_default_deep_notify (GObject *object, GstObject *orig,
+ GParamSpec *pspec, gchar **excluded_props);
+
+
+gpointer gst_object_ref (gpointer object);
+void gst_object_unref (gpointer object);
+void gst_object_ref_sink (gpointer object);
+void gst_object_sink (gpointer object);
+
+
+void gst_object_replace (GstObject **oldobj, GstObject *newobj);
+
+
+gchar * gst_object_get_path_string (GstObject *object);
+
+
+gboolean gst_object_check_uniqueness (GList *list, const gchar *name);
+
+
+
+xmlNodePtr gst_object_save_thyself (GstObject *object, xmlNodePtr parent);
+void gst_object_restore_thyself (GstObject *object, xmlNodePtr self);
+# 317 "/usr/include/gstreamer-0.10/gst/gstobject.h"
+guint gst_class_signal_connect (GstObjectClass *klass,
+ const gchar *name,
+ gpointer func,
+ gpointer func_data);
+
+
+void gst_class_signal_emit_by_name (GstObject * object,
+ const gchar * name,
+ xmlNodePtr self);
+
+
+
+
+
+
+
+
+# 53 "/usr/include/gstreamer-0.10/gst/gstelement.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstpad.h" 1
+# 30 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+# 1 "/usr/include/gstreamer-0.10/gst/gstbuffer.h" 1
+# 27 "/usr/include/gstreamer-0.10/gst/gstbuffer.h"
+# 1 "/usr/include/gstreamer-0.10/gst/gstminiobject.h" 1
+# 30 "/usr/include/gstreamer-0.10/gst/gstminiobject.h"
+
+# 40 "/usr/include/gstreamer-0.10/gst/gstminiobject.h"
+typedef struct _GstMiniObject GstMiniObject;
+typedef struct _GstMiniObjectClass GstMiniObjectClass;
+# 51 "/usr/include/gstreamer-0.10/gst/gstminiobject.h"
+typedef GstMiniObject * (*GstMiniObjectCopyFunction) (const GstMiniObject *obj);
+# 62 "/usr/include/gstreamer-0.10/gst/gstminiobject.h"
+typedef void (*GstMiniObjectFinalizeFunction) (GstMiniObject *obj);
+# 112 "/usr/include/gstreamer-0.10/gst/gstminiobject.h"
+typedef enum
+{
+ GST_MINI_OBJECT_FLAG_READONLY = (1<<0),
+
+ GST_MINI_OBJECT_FLAG_LAST = (1<<4)
+} GstMiniObjectFlags;
+# 142 "/usr/include/gstreamer-0.10/gst/gstminiobject.h"
+struct _GstMiniObject {
+ GTypeInstance instance;
+
+ gint refcount;
+ guint flags;
+
+
+ gpointer _gst_reserved;
+};
+
+struct _GstMiniObjectClass {
+ GTypeClass type_class;
+
+ GstMiniObjectCopyFunction copy;
+ GstMiniObjectFinalizeFunction finalize;
+
+
+ gpointer _gst_reserved;
+};
+
+GType gst_mini_object_get_type (void);
+
+GstMiniObject* gst_mini_object_new (GType type);
+GstMiniObject* gst_mini_object_copy (const GstMiniObject *mini_object);
+gboolean gst_mini_object_is_writable (const GstMiniObject *mini_object);
+GstMiniObject* gst_mini_object_make_writable (GstMiniObject *mini_object);
+
+
+GstMiniObject* gst_mini_object_ref (GstMiniObject *mini_object);
+void gst_mini_object_unref (GstMiniObject *mini_object);
+void gst_mini_object_replace (GstMiniObject **olddata, GstMiniObject *newdata);
+# 183 "/usr/include/gstreamer-0.10/gst/gstminiobject.h"
+typedef struct _GstParamSpecMiniObject GstParamSpecMiniObject;
+# 192 "/usr/include/gstreamer-0.10/gst/gstminiobject.h"
+struct _GstParamSpecMiniObject
+{
+ GParamSpec parent_instance;
+};
+
+
+GType gst_param_spec_mini_object_get_type (void);
+
+GParamSpec* gst_param_spec_mini_object (const char *name, const char *nick,
+ const char *blurb, GType object_type,
+ GParamFlags flags);
+
+
+
+void gst_value_set_mini_object (GValue *value, GstMiniObject *mini_object);
+void gst_value_take_mini_object (GValue *value, GstMiniObject *mini_object);
+GstMiniObject* gst_value_get_mini_object (const GValue *value);
+GstMiniObject* gst_value_dup_mini_object (const GValue *value);
+
+
+
+# 28 "/usr/include/gstreamer-0.10/gst/gstbuffer.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstclock.h" 1
+# 29 "/usr/include/gstreamer-0.10/gst/gstclock.h"
+
+# 48 "/usr/include/gstreamer-0.10/gst/gstclock.h"
+typedef guint64 GstClockTime;
+# 62 "/usr/include/gstreamer-0.10/gst/gstclock.h"
+typedef gint64 GstClockTimeDiff;
+
+
+
+
+
+typedef gpointer GstClockID;
+# 235 "/usr/include/gstreamer-0.10/gst/gstclock.h"
+typedef struct _GstClockEntry GstClockEntry;
+typedef struct _GstClock GstClock;
+typedef struct _GstClockClass GstClockClass;
+typedef struct _GstClockPrivate GstClockPrivate;
+# 252 "/usr/include/gstreamer-0.10/gst/gstclock.h"
+typedef gboolean (*GstClockCallback) (GstClock *clock, GstClockTime time,
+ GstClockID id, gpointer user_data);
+# 266 "/usr/include/gstreamer-0.10/gst/gstclock.h"
+typedef enum
+{
+ GST_CLOCK_OK = 0,
+ GST_CLOCK_EARLY = 1,
+ GST_CLOCK_UNSCHEDULED = 2,
+ GST_CLOCK_BUSY = 3,
+ GST_CLOCK_BADTIME = 4,
+ GST_CLOCK_ERROR = 5,
+ GST_CLOCK_UNSUPPORTED = 6
+} GstClockReturn;
+# 284 "/usr/include/gstreamer-0.10/gst/gstclock.h"
+typedef enum {
+ GST_CLOCK_ENTRY_SINGLE,
+ GST_CLOCK_ENTRY_PERIODIC
+} GstClockEntryType;
+# 339 "/usr/include/gstreamer-0.10/gst/gstclock.h"
+struct _GstClockEntry {
+ gint refcount;
+
+ GstClock *clock;
+ GstClockEntryType type;
+ GstClockTime time;
+ GstClockTime interval;
+ GstClockReturn status;
+ GstClockCallback func;
+ gpointer user_data;
+};
+# 363 "/usr/include/gstreamer-0.10/gst/gstclock.h"
+typedef enum {
+ GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC = (GST_OBJECT_FLAG_LAST << 0),
+ GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC = (GST_OBJECT_FLAG_LAST << 1),
+ GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC = (GST_OBJECT_FLAG_LAST << 2),
+ GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC = (GST_OBJECT_FLAG_LAST << 3),
+ GST_CLOCK_FLAG_CAN_SET_RESOLUTION = (GST_OBJECT_FLAG_LAST << 4),
+ GST_CLOCK_FLAG_CAN_SET_MASTER = (GST_OBJECT_FLAG_LAST << 5),
+
+ GST_CLOCK_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 8)
+} GstClockFlags;
+# 420 "/usr/include/gstreamer-0.10/gst/gstclock.h"
+struct _GstClock {
+ GstObject object;
+
+ GMutex *slave_lock;
+
+
+ GstClockTime internal_calibration;
+ GstClockTime external_calibration;
+ GstClockTime rate_numerator;
+ GstClockTime rate_denominator;
+ GstClockTime last_time;
+ GList *entries;
+ GCond *entries_changed;
+
+
+ GstClockTime resolution;
+ gboolean stats;
+
+
+ GstClock *master;
+
+
+ gboolean filling;
+ gint window_size;
+ gint window_threshold;
+ gint time_index;
+ GstClockTime timeout;
+ GstClockTime *times;
+ GstClockID clockid;
+
+
+ union {
+ GstClockPrivate *priv;
+ GstClockTime _gst_reserved[4];
+ } ABI;
+};
+# 474 "/usr/include/gstreamer-0.10/gst/gstclock.h"
+struct _GstClockClass {
+ GstObjectClass parent_class;
+
+
+
+ GstClockTime (*change_resolution) (GstClock *clock,
+ GstClockTime old_resolution,
+ GstClockTime new_resolution);
+ GstClockTime (*get_resolution) (GstClock *clock);
+
+ GstClockTime (*get_internal_time) (GstClock *clock);
+
+
+ GstClockReturn (*wait) (GstClock *clock, GstClockEntry *entry);
+ GstClockReturn (*wait_async) (GstClock *clock, GstClockEntry *entry);
+ void (*unschedule) (GstClock *clock, GstClockEntry *entry);
+
+
+ GstClockReturn (*wait_jitter) (GstClock *clock, GstClockEntry *entry,
+ GstClockTimeDiff *jitter);
+
+ gpointer _gst_reserved[4 - 1];
+};
+
+GType gst_clock_get_type (void);
+
+GstClockTime gst_clock_set_resolution (GstClock *clock,
+ GstClockTime resolution);
+GstClockTime gst_clock_get_resolution (GstClock *clock);
+
+GstClockTime gst_clock_get_time (GstClock *clock);
+void gst_clock_set_calibration (GstClock *clock, GstClockTime internal,
+ GstClockTime external,
+ GstClockTime rate_num,
+ GstClockTime rate_denom);
+void gst_clock_get_calibration (GstClock *clock, GstClockTime *internal,
+ GstClockTime *external,
+ GstClockTime *rate_num,
+ GstClockTime *rate_denom);
+
+
+gboolean gst_clock_set_master (GstClock *clock, GstClock *master);
+GstClock* gst_clock_get_master (GstClock *clock);
+gboolean gst_clock_add_observation (GstClock *clock, GstClockTime slave,
+ GstClockTime master, gdouble *r_squared);
+
+
+
+GstClockTime gst_clock_get_internal_time (GstClock *clock);
+GstClockTime gst_clock_adjust_unlocked (GstClock *clock, GstClockTime internal);
+GstClockTime gst_clock_unadjust_unlocked (GstClock * clock, GstClockTime external);
+
+
+
+GstClockID gst_clock_new_single_shot_id (GstClock *clock,
+ GstClockTime time);
+GstClockID gst_clock_new_periodic_id (GstClock *clock,
+ GstClockTime start_time,
+ GstClockTime interval);
+
+
+GstClockID gst_clock_id_ref (GstClockID id);
+void gst_clock_id_unref (GstClockID id);
+
+
+gint gst_clock_id_compare_func (gconstpointer id1, gconstpointer id2);
+
+GstClockTime gst_clock_id_get_time (GstClockID id);
+GstClockReturn gst_clock_id_wait (GstClockID id,
+ GstClockTimeDiff *jitter);
+GstClockReturn gst_clock_id_wait_async (GstClockID id,
+ GstClockCallback func,
+ gpointer user_data);
+void gst_clock_id_unschedule (GstClockID id);
+
+
+
+# 29 "/usr/include/gstreamer-0.10/gst/gstbuffer.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstcaps.h" 1
+# 24 "/usr/include/gstreamer-0.10/gst/gstcaps.h"
+# 1 "/usr/include/gstreamer-0.10/gst/gststructure.h" 1
+# 28 "/usr/include/gstreamer-0.10/gst/gststructure.h"
+
+
+
+
+
+
+typedef struct _GstStructure GstStructure;
+# 48 "/usr/include/gstreamer-0.10/gst/gststructure.h"
+typedef gboolean (*GstStructureForeachFunc) (GQuark field_id,
+ const GValue * value,
+ gpointer user_data);
+# 64 "/usr/include/gstreamer-0.10/gst/gststructure.h"
+typedef gboolean (*GstStructureMapFunc) (GQuark field_id,
+ GValue * value,
+ gpointer user_data);
+
+
+
+
+
+
+
+struct _GstStructure {
+ GType type;
+
+
+ GQuark name;
+
+
+ gint *parent_refcount;
+
+ GArray *fields;
+
+ gpointer _gst_reserved;
+};
+
+GType gst_structure_get_type (void);
+
+GstStructure * gst_structure_empty_new (const gchar * name);
+GstStructure * gst_structure_id_empty_new (GQuark quark);
+GstStructure * gst_structure_new (const gchar * name,
+ const gchar * firstfield,
+ ...);
+GstStructure * gst_structure_new_valist (const gchar * name,
+ const gchar * firstfield,
+ va_list varargs);
+GstStructure * gst_structure_id_new (GQuark name_quark,
+ GQuark field_quark,
+ ...);
+GstStructure * gst_structure_copy (const GstStructure *structure);
+void gst_structure_set_parent_refcount (GstStructure *structure,
+ gint *refcount);
+void gst_structure_free (GstStructure *structure);
+
+const gchar * gst_structure_get_name (const GstStructure *structure);
+GQuark gst_structure_get_name_id (const GstStructure *structure);
+gboolean gst_structure_has_name (const GstStructure *structure,
+ const gchar *name);
+void gst_structure_set_name (GstStructure *structure,
+ const gchar *name);
+
+void gst_structure_id_set_value (GstStructure *structure,
+ GQuark field,
+ const GValue *value);
+void gst_structure_set_value (GstStructure *structure,
+ const gchar *fieldname,
+ const GValue *value);
+void gst_structure_set (GstStructure *structure,
+ const gchar *fieldname,
+ ...) __attribute__((__sentinel__));
+
+void gst_structure_set_valist (GstStructure *structure,
+ const gchar *fieldname,
+ va_list varargs);
+
+void gst_structure_id_set (GstStructure *structure,
+ GQuark fieldname,
+ ...) __attribute__((__sentinel__));
+
+void gst_structure_id_set_valist (GstStructure *structure,
+ GQuark fieldname,
+ va_list varargs);
+
+gboolean gst_structure_get_valist (GstStructure *structure,
+ const char *first_fieldname,
+ va_list args);
+
+gboolean gst_structure_get (GstStructure *structure,
+ const char *first_fieldname,
+ ...) __attribute__((__sentinel__));
+
+gboolean gst_structure_id_get_valist (GstStructure *structure,
+ GQuark first_field_id,
+ va_list args);
+
+gboolean gst_structure_id_get (GstStructure *structure,
+ GQuark first_field_id,
+ ...) __attribute__((__sentinel__));
+
+const GValue * gst_structure_id_get_value (const GstStructure *structure,
+ GQuark field);
+const GValue * gst_structure_get_value (const GstStructure *structure,
+ const gchar *fieldname);
+void gst_structure_remove_field (GstStructure *structure,
+ const gchar *fieldname);
+void gst_structure_remove_fields (GstStructure *structure,
+ const gchar *fieldname,
+ ...) __attribute__((__sentinel__));
+void gst_structure_remove_fields_valist (GstStructure *structure,
+ const gchar *fieldname,
+ va_list varargs);
+void gst_structure_remove_all_fields (GstStructure *structure);
+
+GType gst_structure_get_field_type (const GstStructure *structure,
+ const gchar *fieldname);
+gboolean gst_structure_foreach (const GstStructure *structure,
+ GstStructureForeachFunc func,
+ gpointer user_data);
+gboolean gst_structure_map_in_place (GstStructure *structure,
+ GstStructureMapFunc func,
+ gpointer user_data);
+gint gst_structure_n_fields (const GstStructure *structure);
+const gchar * gst_structure_nth_field_name (const GstStructure *structure, guint index);
+gboolean gst_structure_has_field (const GstStructure *structure,
+ const gchar *fieldname);
+gboolean gst_structure_has_field_typed (const GstStructure *structure,
+ const gchar *fieldname,
+ GType type);
+
+
+gboolean gst_structure_get_boolean (const GstStructure *structure,
+ const gchar *fieldname,
+ gboolean *value);
+gboolean gst_structure_get_int (const GstStructure *structure,
+ const gchar *fieldname,
+ gint *value);
+gboolean gst_structure_get_uint (const GstStructure *structure,
+ const gchar *fieldname,
+ guint *value);
+gboolean gst_structure_get_fourcc (const GstStructure *structure,
+ const gchar *fieldname,
+ guint32 *value);
+gboolean gst_structure_get_double (const GstStructure *structure,
+ const gchar *fieldname,
+ gdouble *value);
+gboolean gst_structure_get_date (const GstStructure *structure,
+ const gchar *fieldname,
+ GDate **value);
+gboolean gst_structure_get_clock_time (const GstStructure *structure,
+ const gchar *fieldname,
+ GstClockTime *value);
+const gchar * gst_structure_get_string (const GstStructure *structure,
+ const gchar *fieldname);
+gboolean gst_structure_get_enum (const GstStructure *structure,
+ const gchar *fieldname,
+ GType enumtype,
+ gint *value);
+gboolean gst_structure_get_fraction (const GstStructure *structure,
+ const gchar *fieldname,
+ gint *value_numerator,
+ gint *value_denominator);
+
+gchar * gst_structure_to_string (const GstStructure *structure);
+GstStructure * gst_structure_from_string (const gchar *string,
+ gchar **end);
+
+gboolean gst_structure_fixate_field_nearest_int (GstStructure *structure,
+ const char *field_name,
+ int target);
+gboolean gst_structure_fixate_field_nearest_double (GstStructure *structure,
+ const char *field_name,
+ double target);
+
+gboolean gst_structure_fixate_field_boolean (GstStructure *structure,
+ const char *field_name,
+ gboolean target);
+gboolean gst_structure_fixate_field_nearest_fraction (GstStructure *structure,
+ const char *field_name,
+ const gint target_numerator,
+ const gint target_denominator);
+
+
+# 25 "/usr/include/gstreamer-0.10/gst/gstcaps.h" 2
+
+
+
+# 42 "/usr/include/gstreamer-0.10/gst/gstcaps.h"
+typedef enum {
+ GST_CAPS_FLAGS_ANY = (1 << 0)
+} GstCapsFlags;
+# 114 "/usr/include/gstreamer-0.10/gst/gstcaps.h"
+typedef struct _GstCaps GstCaps;
+typedef struct _GstStaticCaps GstStaticCaps;
+# 141 "/usr/include/gstreamer-0.10/gst/gstcaps.h"
+struct _GstCaps {
+ GType type;
+
+
+
+ gint refcount;
+
+
+ GstCapsFlags flags;
+
+
+ GPtrArray *structs;
+
+
+ gpointer _gst_reserved[4];
+};
+# 167 "/usr/include/gstreamer-0.10/gst/gstcaps.h"
+struct _GstStaticCaps {
+
+ GstCaps caps;
+ const char *string;
+
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_caps_get_type (void);
+GstCaps * gst_caps_new_empty (void);
+GstCaps * gst_caps_new_any (void);
+GstCaps * gst_caps_new_simple (const char *media_type,
+ const char *fieldname,
+ ...);
+GstCaps * gst_caps_new_full (GstStructure *struct1, ...);
+GstCaps * gst_caps_new_full_valist (GstStructure *structure,
+ va_list var_args);
+
+
+GstCaps * gst_caps_ref (GstCaps *caps);
+GstCaps * gst_caps_copy (const GstCaps *caps);
+GstCaps * gst_caps_make_writable (GstCaps *caps);
+void gst_caps_unref (GstCaps *caps);
+
+GType gst_static_caps_get_type (void);
+GstCaps * gst_static_caps_get (GstStaticCaps *static_caps);
+
+
+void gst_caps_append (GstCaps *caps1,
+ GstCaps *caps2);
+void gst_caps_merge (GstCaps *caps1,
+ GstCaps *caps2);
+void gst_caps_append_structure (GstCaps *caps,
+ GstStructure *structure);
+void gst_caps_remove_structure (GstCaps *caps, guint idx);
+void gst_caps_merge_structure (GstCaps *caps,
+ GstStructure *structure);
+guint gst_caps_get_size (const GstCaps *caps);
+GstStructure * gst_caps_get_structure (const GstCaps *caps,
+ guint index);
+GstCaps * gst_caps_copy_nth (const GstCaps *caps, guint nth);
+void gst_caps_truncate (GstCaps *caps);
+void gst_caps_set_simple (GstCaps *caps,
+ const char *field, ...) __attribute__((__sentinel__));
+void gst_caps_set_simple_valist (GstCaps *caps,
+ const char *field,
+ va_list varargs);
+
+
+gboolean gst_caps_is_any (const GstCaps *caps);
+gboolean gst_caps_is_empty (const GstCaps *caps);
+gboolean gst_caps_is_fixed (const GstCaps *caps);
+gboolean gst_caps_is_always_compatible (const GstCaps *caps1,
+ const GstCaps *caps2);
+gboolean gst_caps_is_subset (const GstCaps *subset,
+ const GstCaps *superset);
+gboolean gst_caps_is_equal (const GstCaps *caps1,
+ const GstCaps *caps2);
+gboolean gst_caps_is_equal_fixed (const GstCaps *caps1,
+ const GstCaps *caps2);
+
+
+
+GstCaps * gst_caps_intersect (const GstCaps *caps1,
+ const GstCaps *caps2);
+GstCaps * gst_caps_subtract (const GstCaps *minuend,
+ const GstCaps *subtrahend);
+GstCaps * gst_caps_union (const GstCaps *caps1,
+ const GstCaps *caps2);
+GstCaps * gst_caps_normalize (const GstCaps *caps);
+gboolean gst_caps_do_simplify (GstCaps *caps);
+
+
+xmlNodePtr gst_caps_save_thyself (const GstCaps *caps,
+ xmlNodePtr parent);
+GstCaps * gst_caps_load_thyself (xmlNodePtr parent);
+
+
+
+void gst_caps_replace (GstCaps **caps,
+ GstCaps *newcaps);
+gchar * gst_caps_to_string (const GstCaps *caps);
+GstCaps * gst_caps_from_string (const gchar *string);
+
+
+# 30 "/usr/include/gstreamer-0.10/gst/gstbuffer.h" 2
+
+
+
+typedef struct _GstBuffer GstBuffer;
+typedef struct _GstBufferClass GstBufferClass;
+# 227 "/usr/include/gstreamer-0.10/gst/gstbuffer.h"
+typedef enum {
+ GST_BUFFER_FLAG_READONLY = GST_MINI_OBJECT_FLAG_READONLY,
+ GST_BUFFER_FLAG_PREROLL = (GST_MINI_OBJECT_FLAG_LAST << 0),
+ GST_BUFFER_FLAG_DISCONT = (GST_MINI_OBJECT_FLAG_LAST << 1),
+ GST_BUFFER_FLAG_IN_CAPS = (GST_MINI_OBJECT_FLAG_LAST << 2),
+ GST_BUFFER_FLAG_GAP = (GST_MINI_OBJECT_FLAG_LAST << 3),
+ GST_BUFFER_FLAG_DELTA_UNIT = (GST_MINI_OBJECT_FLAG_LAST << 4),
+ GST_BUFFER_FLAG_MEDIA1 = (GST_MINI_OBJECT_FLAG_LAST << 5),
+ GST_BUFFER_FLAG_MEDIA2 = (GST_MINI_OBJECT_FLAG_LAST << 6),
+ GST_BUFFER_FLAG_MEDIA3 = (GST_MINI_OBJECT_FLAG_LAST << 7),
+ GST_BUFFER_FLAG_LAST = (GST_MINI_OBJECT_FLAG_LAST << 8)
+} GstBufferFlag;
+# 265 "/usr/include/gstreamer-0.10/gst/gstbuffer.h"
+struct _GstBuffer {
+ GstMiniObject mini_object;
+
+
+
+ guint8 *data;
+ guint size;
+
+
+ GstClockTime timestamp;
+ GstClockTime duration;
+
+
+ GstCaps *caps;
+
+
+ guint64 offset;
+ guint64 offset_end;
+
+ guint8 *malloc_data;
+
+ GFreeFunc free_func;
+
+
+ gpointer _gst_reserved[4 - 1];
+};
+
+struct _GstBufferClass {
+ GstMiniObjectClass mini_object_class;
+};
+
+GType gst_buffer_get_type (void);
+
+
+GstBuffer * gst_buffer_new (void);
+GstBuffer * gst_buffer_new_and_alloc (guint size);
+GstBuffer * gst_buffer_try_new_and_alloc (guint size);
+# 342 "/usr/include/gstreamer-0.10/gst/gstbuffer.h"
+static inline GstBuffer *
+gst_buffer_ref (GstBuffer * buf)
+{
+ return (GstBuffer *) gst_mini_object_ref (((GstMiniObject*)(buf)));
+}
+# 360 "/usr/include/gstreamer-0.10/gst/gstbuffer.h"
+static inline void
+gst_buffer_unref (GstBuffer * buf)
+{
+ gst_mini_object_unref (((GstMiniObject*)(buf)));
+}
+# 380 "/usr/include/gstreamer-0.10/gst/gstbuffer.h"
+static inline GstBuffer *
+gst_buffer_copy (const GstBuffer * buf)
+{
+ return ((((GstBuffer*) g_type_check_instance_cast ((GTypeInstance*) ((gst_mini_object_copy (((GstMiniObject*)(buf))))), ((gst_buffer_get_type()))))));
+}
+# 399 "/usr/include/gstreamer-0.10/gst/gstbuffer.h"
+typedef enum {
+ GST_BUFFER_COPY_FLAGS = (1 << 0),
+ GST_BUFFER_COPY_TIMESTAMPS = (1 << 1),
+ GST_BUFFER_COPY_CAPS = (1 << 2)
+} GstBufferCopyFlags;
+# 416 "/usr/include/gstreamer-0.10/gst/gstbuffer.h"
+void gst_buffer_copy_metadata (GstBuffer *dest, const GstBuffer *src,
+ GstBufferCopyFlags flags);
+# 441 "/usr/include/gstreamer-0.10/gst/gstbuffer.h"
+gboolean gst_buffer_is_metadata_writable (GstBuffer *buf);
+GstBuffer* gst_buffer_make_metadata_writable (GstBuffer *buf);
+# 464 "/usr/include/gstreamer-0.10/gst/gstbuffer.h"
+GstCaps* gst_buffer_get_caps (GstBuffer *buffer);
+void gst_buffer_set_caps (GstBuffer *buffer, GstCaps *caps);
+
+
+GstBuffer* gst_buffer_create_sub (GstBuffer *parent, guint offset, guint size);
+
+
+gboolean gst_buffer_is_span_fast (GstBuffer *buf1, GstBuffer *buf2);
+GstBuffer* gst_buffer_span (GstBuffer *buf1, guint32 offset, GstBuffer *buf2, guint32 len);
+# 500 "/usr/include/gstreamer-0.10/gst/gstbuffer.h"
+
+# 31 "/usr/include/gstreamer-0.10/gst/gstpad.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstbufferlist.h" 1
+# 28 "/usr/include/gstreamer-0.10/gst/gstbufferlist.h"
+
+# 38 "/usr/include/gstreamer-0.10/gst/gstbufferlist.h"
+typedef struct _GstBufferList GstBufferList;
+typedef struct _GstBufferListClass GstBufferListClass;
+typedef struct _GstBufferListIterator GstBufferListIterator;
+# 62 "/usr/include/gstreamer-0.10/gst/gstbufferlist.h"
+typedef GstBuffer* (*GstBufferListDoFunction) (GstBuffer * buffer, gpointer user_data);
+# 72 "/usr/include/gstreamer-0.10/gst/gstbufferlist.h"
+typedef enum {
+ GST_BUFFER_LIST_CONTINUE,
+ GST_BUFFER_LIST_SKIP_GROUP,
+ GST_BUFFER_LIST_END
+} GstBufferListItem;
+# 101 "/usr/include/gstreamer-0.10/gst/gstbufferlist.h"
+typedef GstBufferListItem (*GstBufferListFunc) (GstBuffer **buffer, guint group, guint idx,
+ gpointer user_data);
+
+
+GType gst_buffer_list_get_type (void);
+
+
+GstBufferList *gst_buffer_list_new (void);
+# 128 "/usr/include/gstreamer-0.10/gst/gstbufferlist.h"
+static inline GstBufferList *
+gst_buffer_list_ref (GstBufferList * list)
+{
+ return ((GstBufferList *)gst_mini_object_ref (((GstMiniObject*)(list))));
+
+}
+# 146 "/usr/include/gstreamer-0.10/gst/gstbufferlist.h"
+static inline void
+gst_buffer_list_unref (GstBufferList * list)
+{
+ gst_mini_object_unref (((GstMiniObject*)(list)));
+}
+# 167 "/usr/include/gstreamer-0.10/gst/gstbufferlist.h"
+static inline GstBufferList *
+gst_buffer_list_copy (const GstBufferList * list)
+{
+ return ((((GstBufferList*) g_type_check_instance_cast ((GTypeInstance*) ((gst_mini_object_copy (((GstMiniObject*)(list))))), ((gst_buffer_list_get_type ()))))));
+}
+# 191 "/usr/include/gstreamer-0.10/gst/gstbufferlist.h"
+guint gst_buffer_list_n_groups (GstBufferList *list);
+
+void gst_buffer_list_foreach (GstBufferList *list,
+ GstBufferListFunc func,
+ gpointer user_data);
+GstBuffer * gst_buffer_list_get (GstBufferList *list, guint group, guint idx);
+
+
+GstBufferListIterator * gst_buffer_list_iterate (GstBufferList *list);
+void gst_buffer_list_iterator_free (GstBufferListIterator *it);
+
+guint gst_buffer_list_iterator_n_buffers (const GstBufferListIterator *it);
+GstBuffer * gst_buffer_list_iterator_next (GstBufferListIterator *it);
+gboolean gst_buffer_list_iterator_next_group (GstBufferListIterator *it);
+
+void gst_buffer_list_iterator_add (GstBufferListIterator *it, GstBuffer *buffer);
+void gst_buffer_list_iterator_add_group (GstBufferListIterator *it);
+void gst_buffer_list_iterator_remove (GstBufferListIterator *it);
+GstBuffer * gst_buffer_list_iterator_steal (GstBufferListIterator *it);
+void gst_buffer_list_iterator_take (GstBufferListIterator *it, GstBuffer *buffer);
+
+GstBuffer * gst_buffer_list_iterator_do (GstBufferListIterator *it, GstBufferListDoFunction do_func,
+ gpointer user_data);
+
+
+GstBuffer * gst_buffer_list_iterator_merge_group (const GstBufferListIterator *it);
+
+
+# 32 "/usr/include/gstreamer-0.10/gst/gstpad.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstevent.h" 1
+# 29 "/usr/include/gstreamer-0.10/gst/gstevent.h"
+# 1 "/usr/include/gstreamer-0.10/gst/gstformat.h" 1
+# 30 "/usr/include/gstreamer-0.10/gst/gstformat.h"
+# 1 "/usr/include/gstreamer-0.10/gst/gstiterator.h" 1
+# 28 "/usr/include/gstreamer-0.10/gst/gstiterator.h"
+
+# 39 "/usr/include/gstreamer-0.10/gst/gstiterator.h"
+typedef enum {
+ GST_ITERATOR_DONE = 0,
+ GST_ITERATOR_OK = 1,
+ GST_ITERATOR_RESYNC = 2,
+ GST_ITERATOR_ERROR = 3
+} GstIteratorResult;
+
+typedef struct _GstIterator GstIterator;
+# 56 "/usr/include/gstreamer-0.10/gst/gstiterator.h"
+typedef enum {
+ GST_ITERATOR_ITEM_SKIP = 0,
+ GST_ITERATOR_ITEM_PASS = 1,
+ GST_ITERATOR_ITEM_END = 2
+} GstIteratorItem;
+# 69 "/usr/include/gstreamer-0.10/gst/gstiterator.h"
+typedef void (*GstIteratorDisposeFunction) (gpointer owner);
+# 85 "/usr/include/gstreamer-0.10/gst/gstiterator.h"
+typedef GstIteratorResult (*GstIteratorNextFunction) (GstIterator *it, gpointer *result);
+# 101 "/usr/include/gstreamer-0.10/gst/gstiterator.h"
+typedef GstIteratorItem (*GstIteratorItemFunction) (GstIterator *it, gpointer item);
+# 115 "/usr/include/gstreamer-0.10/gst/gstiterator.h"
+typedef void (*GstIteratorResyncFunction) (GstIterator *it);
+# 126 "/usr/include/gstreamer-0.10/gst/gstiterator.h"
+typedef void (*GstIteratorFreeFunction) (GstIterator *it);
+# 138 "/usr/include/gstreamer-0.10/gst/gstiterator.h"
+typedef gboolean (*GstIteratorFoldFunction) (gpointer item, GValue *ret, gpointer user_data);
+# 192 "/usr/include/gstreamer-0.10/gst/gstiterator.h"
+struct _GstIterator {
+
+ GstIteratorNextFunction next;
+ GstIteratorItemFunction item;
+ GstIteratorResyncFunction resync;
+ GstIteratorFreeFunction free;
+
+ GstIterator *pushed;
+
+ GType type;
+ GMutex *lock;
+ guint32 cookie;
+ guint32 *master_cookie;
+
+
+
+ gpointer _gst_reserved[4];
+};
+
+
+GstIterator* gst_iterator_new (guint size,
+ GType type,
+ GMutex *lock,
+ guint32 *master_cookie,
+ GstIteratorNextFunction next,
+ GstIteratorItemFunction item,
+ GstIteratorResyncFunction resync,
+ GstIteratorFreeFunction free);
+
+GstIterator* gst_iterator_new_list (GType type,
+ GMutex *lock,
+ guint32 *master_cookie,
+ GList **list,
+ gpointer owner,
+ GstIteratorItemFunction item,
+ GstIteratorDisposeFunction free);
+
+
+GstIteratorResult gst_iterator_next (GstIterator *it, gpointer *elem);
+void gst_iterator_resync (GstIterator *it);
+void gst_iterator_free (GstIterator *it);
+
+void gst_iterator_push (GstIterator *it, GstIterator *other);
+
+
+GstIterator* gst_iterator_filter (GstIterator *it, GCompareFunc func,
+ gpointer user_data);
+GstIteratorResult gst_iterator_fold (GstIterator *it,
+ GstIteratorFoldFunction func,
+ GValue *ret, gpointer user_data);
+GstIteratorResult gst_iterator_foreach (GstIterator *it,
+ GFunc func, gpointer user_data);
+gpointer gst_iterator_find_custom (GstIterator *it, GCompareFunc func,
+ gpointer user_data);
+
+
+# 31 "/usr/include/gstreamer-0.10/gst/gstformat.h" 2
+
+
+# 52 "/usr/include/gstreamer-0.10/gst/gstformat.h"
+typedef enum {
+ GST_FORMAT_UNDEFINED = 0,
+ GST_FORMAT_DEFAULT = 1,
+ GST_FORMAT_BYTES = 2,
+ GST_FORMAT_TIME = 3,
+ GST_FORMAT_BUFFERS = 4,
+ GST_FORMAT_PERCENT = 5
+} GstFormat;
+# 76 "/usr/include/gstreamer-0.10/gst/gstformat.h"
+typedef struct _GstFormatDefinition GstFormatDefinition;
+# 87 "/usr/include/gstreamer-0.10/gst/gstformat.h"
+struct _GstFormatDefinition
+{
+ GstFormat value;
+ gchar *nick;
+ gchar *description;
+ GQuark quark;
+};
+
+const gchar* gst_format_get_name (GstFormat format);
+GQuark gst_format_to_quark (GstFormat format);
+
+
+GstFormat gst_format_register (const gchar *nick,
+ const gchar *description);
+GstFormat gst_format_get_by_nick (const gchar *nick);
+
+
+gboolean gst_formats_contains (const GstFormat *formats, GstFormat format);
+
+
+const GstFormatDefinition*
+ gst_format_get_details (GstFormat format);
+GstIterator* gst_format_iterate_definitions (void);
+
+
+# 30 "/usr/include/gstreamer-0.10/gst/gstevent.h" 2
+
+
+
+# 1 "/usr/include/gstreamer-0.10/gst/gsttaglist.h" 1
+# 30 "/usr/include/gstreamer-0.10/gst/gsttaglist.h"
+
+# 110 "/usr/include/gstreamer-0.10/gst/gsttaglist.h"
+typedef enum {
+ GST_TAG_MERGE_UNDEFINED,
+ GST_TAG_MERGE_REPLACE_ALL,
+ GST_TAG_MERGE_REPLACE,
+ GST_TAG_MERGE_APPEND,
+ GST_TAG_MERGE_PREPEND,
+ GST_TAG_MERGE_KEEP,
+ GST_TAG_MERGE_KEEP_ALL,
+
+ GST_TAG_MERGE_COUNT
+} GstTagMergeMode;
+# 134 "/usr/include/gstreamer-0.10/gst/gsttaglist.h"
+typedef enum {
+ GST_TAG_FLAG_UNDEFINED,
+ GST_TAG_FLAG_META,
+ GST_TAG_FLAG_ENCODED,
+ GST_TAG_FLAG_DECODED,
+ GST_TAG_FLAG_COUNT
+} GstTagFlag;
+# 149 "/usr/include/gstreamer-0.10/gst/gsttaglist.h"
+typedef GstStructure GstTagList;
+# 163 "/usr/include/gstreamer-0.10/gst/gsttaglist.h"
+typedef void (*GstTagForeachFunc) (const GstTagList * list,
+ const gchar * tag,
+ gpointer user_data);
+# 175 "/usr/include/gstreamer-0.10/gst/gsttaglist.h"
+typedef void (* GstTagMergeFunc) (GValue *dest, const GValue *src);
+
+GType gst_tag_list_get_type (void);
+
+
+void gst_tag_register (const gchar * name,
+ GstTagFlag flag,
+ GType type,
+ const gchar * nick,
+ const gchar * blurb,
+ GstTagMergeFunc func);
+
+
+void gst_tag_merge_use_first (GValue * dest, const GValue * src);
+void gst_tag_merge_strings_with_comma (GValue * dest, const GValue * src);
+
+
+gboolean gst_tag_exists (const gchar * tag);
+GType gst_tag_get_type (const gchar * tag);
+const gchar * gst_tag_get_nick (const gchar * tag);
+const gchar * gst_tag_get_description (const gchar * tag);
+GstTagFlag gst_tag_get_flag (const gchar * tag);
+gboolean gst_tag_is_fixed (const gchar * tag);
+
+
+GstTagList * gst_tag_list_new (void);
+GstTagList * gst_tag_list_new_full (const gchar * tag, ...);
+GstTagList * gst_tag_list_new_full_valist (va_list var_args);
+
+gboolean gst_is_tag_list (gconstpointer p);
+GstTagList * gst_tag_list_copy (const GstTagList * list);
+gboolean gst_tag_list_is_empty (const GstTagList * list);
+void gst_tag_list_insert (GstTagList * into,
+ const GstTagList * from,
+ GstTagMergeMode mode);
+GstTagList * gst_tag_list_merge (const GstTagList * list1,
+ const GstTagList * list2,
+ GstTagMergeMode mode);
+void gst_tag_list_free (GstTagList * list);
+guint gst_tag_list_get_tag_size (const GstTagList * list,
+ const gchar * tag);
+void gst_tag_list_add (GstTagList * list,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ ...) __attribute__((__sentinel__));
+void gst_tag_list_add_values (GstTagList * list,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ ...) __attribute__((__sentinel__));
+void gst_tag_list_add_valist (GstTagList * list,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ va_list var_args);
+void gst_tag_list_add_valist_values (GstTagList * list,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ va_list var_args);
+void gst_tag_list_add_value (GstTagList * list,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ const GValue * value);
+void gst_tag_list_remove_tag (GstTagList * list,
+ const gchar * tag);
+void gst_tag_list_foreach (const GstTagList * list,
+ GstTagForeachFunc func,
+ gpointer user_data);
+
+const GValue *
+ gst_tag_list_get_value_index (const GstTagList * list,
+ const gchar * tag,
+ guint index);
+gboolean gst_tag_list_copy_value (GValue * dest,
+ const GstTagList * list,
+ const gchar * tag);
+
+
+gboolean gst_tag_list_get_char (const GstTagList * list,
+ const gchar * tag,
+ gchar * value);
+gboolean gst_tag_list_get_char_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gchar * value);
+gboolean gst_tag_list_get_uchar (const GstTagList * list,
+ const gchar * tag,
+ guchar * value);
+gboolean gst_tag_list_get_uchar_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ guchar * value);
+gboolean gst_tag_list_get_boolean (const GstTagList * list,
+ const gchar * tag,
+ gboolean * value);
+gboolean gst_tag_list_get_boolean_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gboolean * value);
+gboolean gst_tag_list_get_int (const GstTagList * list,
+ const gchar * tag,
+ gint * value);
+gboolean gst_tag_list_get_int_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gint * value);
+gboolean gst_tag_list_get_uint (const GstTagList * list,
+ const gchar * tag,
+ guint * value);
+gboolean gst_tag_list_get_uint_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ guint * value);
+gboolean gst_tag_list_get_long (const GstTagList * list,
+ const gchar * tag,
+ glong * value);
+gboolean gst_tag_list_get_long_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ glong * value);
+gboolean gst_tag_list_get_ulong (const GstTagList * list,
+ const gchar * tag,
+ gulong * value);
+gboolean gst_tag_list_get_ulong_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gulong * value);
+gboolean gst_tag_list_get_int64 (const GstTagList * list,
+ const gchar * tag,
+ gint64 * value);
+gboolean gst_tag_list_get_int64_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gint64 * value);
+gboolean gst_tag_list_get_uint64 (const GstTagList * list,
+ const gchar * tag,
+ guint64 * value);
+gboolean gst_tag_list_get_uint64_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ guint64 * value);
+gboolean gst_tag_list_get_float (const GstTagList * list,
+ const gchar * tag,
+ gfloat * value);
+gboolean gst_tag_list_get_float_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gfloat * value);
+gboolean gst_tag_list_get_double (const GstTagList * list,
+ const gchar * tag,
+ gdouble * value);
+gboolean gst_tag_list_get_double_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gdouble * value);
+gboolean gst_tag_list_get_string (const GstTagList * list,
+ const gchar * tag,
+ gchar ** value);
+gboolean gst_tag_list_get_string_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gchar ** value);
+gboolean gst_tag_list_get_pointer (const GstTagList * list,
+ const gchar * tag,
+ gpointer * value);
+gboolean gst_tag_list_get_pointer_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gpointer * value);
+gboolean gst_tag_list_get_date (const GstTagList * list,
+ const gchar * tag,
+ GDate ** value);
+gboolean gst_tag_list_get_date_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ GDate ** value);
+gboolean gst_tag_list_get_buffer (const GstTagList * list,
+ const gchar * tag,
+ GstBuffer ** value);
+gboolean gst_tag_list_get_buffer_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ GstBuffer ** value);
+# 769 "/usr/include/gstreamer-0.10/gst/gsttaglist.h"
+
+# 34 "/usr/include/gstreamer-0.10/gst/gstevent.h" 2
+
+
+# 48 "/usr/include/gstreamer-0.10/gst/gstevent.h"
+typedef enum {
+ GST_EVENT_TYPE_UPSTREAM = 1 << 0,
+ GST_EVENT_TYPE_DOWNSTREAM = 1 << 1,
+ GST_EVENT_TYPE_SERIALIZED = 1 << 2
+} GstEventTypeFlags;
+# 113 "/usr/include/gstreamer-0.10/gst/gstevent.h"
+typedef enum {
+ GST_EVENT_UNKNOWN = (((0) << 4) | (0)),
+
+ GST_EVENT_FLUSH_START = (((1) << 4) | ((GST_EVENT_TYPE_UPSTREAM | GST_EVENT_TYPE_DOWNSTREAM))),
+ GST_EVENT_FLUSH_STOP = (((2) << 4) | ((GST_EVENT_TYPE_UPSTREAM | GST_EVENT_TYPE_DOWNSTREAM) | GST_EVENT_TYPE_SERIALIZED)),
+
+ GST_EVENT_EOS = (((5) << 4) | (GST_EVENT_TYPE_DOWNSTREAM | GST_EVENT_TYPE_SERIALIZED)),
+ GST_EVENT_NEWSEGMENT = (((6) << 4) | (GST_EVENT_TYPE_DOWNSTREAM | GST_EVENT_TYPE_SERIALIZED)),
+ GST_EVENT_TAG = (((7) << 4) | (GST_EVENT_TYPE_DOWNSTREAM | GST_EVENT_TYPE_SERIALIZED)),
+ GST_EVENT_BUFFERSIZE = (((8) << 4) | (GST_EVENT_TYPE_DOWNSTREAM | GST_EVENT_TYPE_SERIALIZED)),
+
+ GST_EVENT_QOS = (((15) << 4) | (GST_EVENT_TYPE_UPSTREAM)),
+ GST_EVENT_SEEK = (((16) << 4) | (GST_EVENT_TYPE_UPSTREAM)),
+ GST_EVENT_NAVIGATION = (((17) << 4) | (GST_EVENT_TYPE_UPSTREAM)),
+ GST_EVENT_LATENCY = (((18) << 4) | (GST_EVENT_TYPE_UPSTREAM)),
+ GST_EVENT_STEP = (((19) << 4) | (GST_EVENT_TYPE_UPSTREAM)),
+
+
+ GST_EVENT_CUSTOM_UPSTREAM = (((32) << 4) | (GST_EVENT_TYPE_UPSTREAM)),
+ GST_EVENT_CUSTOM_DOWNSTREAM = (((32) << 4) | (GST_EVENT_TYPE_DOWNSTREAM | GST_EVENT_TYPE_SERIALIZED)),
+ GST_EVENT_CUSTOM_DOWNSTREAM_OOB = (((32) << 4) | (GST_EVENT_TYPE_DOWNSTREAM)),
+ GST_EVENT_CUSTOM_BOTH = (((32) << 4) | ((GST_EVENT_TYPE_UPSTREAM | GST_EVENT_TYPE_DOWNSTREAM) | GST_EVENT_TYPE_SERIALIZED)),
+ GST_EVENT_CUSTOM_BOTH_OOB = (((32) << 4) | ((GST_EVENT_TYPE_UPSTREAM | GST_EVENT_TYPE_DOWNSTREAM)))
+} GstEventType;
+# 146 "/usr/include/gstreamer-0.10/gst/gstevent.h"
+typedef struct _GstEvent GstEvent;
+typedef struct _GstEventClass GstEventClass;
+# 245 "/usr/include/gstreamer-0.10/gst/gstevent.h"
+typedef enum {
+
+ GST_SEEK_TYPE_NONE = 0,
+ GST_SEEK_TYPE_CUR = 1,
+ GST_SEEK_TYPE_SET = 2,
+ GST_SEEK_TYPE_END = 3
+} GstSeekType;
+# 288 "/usr/include/gstreamer-0.10/gst/gstevent.h"
+typedef enum {
+ GST_SEEK_FLAG_NONE = 0,
+ GST_SEEK_FLAG_FLUSH = (1 << 0),
+ GST_SEEK_FLAG_ACCURATE = (1 << 1),
+ GST_SEEK_FLAG_KEY_UNIT = (1 << 2),
+ GST_SEEK_FLAG_SEGMENT = (1 << 3),
+ GST_SEEK_FLAG_SKIP = (1 << 4)
+} GstSeekFlags;
+# 307 "/usr/include/gstreamer-0.10/gst/gstevent.h"
+struct _GstEvent {
+ GstMiniObject mini_object;
+
+
+ GstEventType type;
+ guint64 timestamp;
+ GstObject *src;
+
+ GstStructure *structure;
+
+
+ union {
+ guint32 seqnum;
+ gpointer _gst_reserved;
+ } abidata;
+};
+
+struct _GstEventClass {
+ GstMiniObjectClass mini_object_class;
+
+
+ gpointer _gst_reserved[4];
+};
+
+const gchar* gst_event_type_get_name (GstEventType type);
+GQuark gst_event_type_to_quark (GstEventType type);
+GstEventTypeFlags
+ gst_event_type_get_flags (GstEventType type);
+
+
+GType gst_event_get_type (void);
+# 352 "/usr/include/gstreamer-0.10/gst/gstevent.h"
+static inline GstEvent *
+gst_event_ref (GstEvent * event)
+{
+ return (GstEvent *) gst_mini_object_ref (((((GstMiniObject*) g_type_check_instance_cast ((GTypeInstance*) ((event)), ((gst_mini_object_get_type())))))));
+}
+# 368 "/usr/include/gstreamer-0.10/gst/gstevent.h"
+static inline void
+gst_event_unref (GstEvent * event)
+{
+ gst_mini_object_unref (((((GstMiniObject*) g_type_check_instance_cast ((GTypeInstance*) ((event)), ((gst_mini_object_get_type())))))));
+}
+# 385 "/usr/include/gstreamer-0.10/gst/gstevent.h"
+static inline GstEvent *
+gst_event_copy (const GstEvent * event)
+{
+ return ((GstEvent *)(gst_mini_object_copy (((((GstMiniObject*) g_type_check_instance_cast ((GTypeInstance*) ((event)), ((gst_mini_object_get_type())))))))));
+}
+
+
+
+GstEvent* gst_event_new_custom (GstEventType type, GstStructure *structure);
+
+const GstStructure *
+ gst_event_get_structure (GstEvent *event);
+
+gboolean gst_event_has_name (GstEvent *event, const gchar *name);
+
+
+guint32 gst_event_get_seqnum (GstEvent *event);
+void gst_event_set_seqnum (GstEvent *event, guint32 seqnum);
+
+
+GstEvent * gst_event_new_flush_start (void);
+GstEvent * gst_event_new_flush_stop (void);
+
+
+GstEvent * gst_event_new_eos (void);
+
+
+GstEvent* gst_event_new_new_segment (gboolean update, gdouble rate,
+ GstFormat format,
+ gint64 start, gint64 stop,
+ gint64 position);
+GstEvent* gst_event_new_new_segment_full (gboolean update, gdouble rate,
+ gdouble applied_rate,
+ GstFormat format,
+ gint64 start, gint64 stop,
+ gint64 position);
+void gst_event_parse_new_segment (GstEvent *event,
+ gboolean *update,
+ gdouble *rate,
+ GstFormat *format,
+ gint64 *start, gint64 *stop,
+ gint64 *position);
+void gst_event_parse_new_segment_full (GstEvent *event,
+ gboolean *update,
+ gdouble *rate,
+ gdouble *applied_rate,
+ GstFormat *format,
+ gint64 *start, gint64 *stop,
+ gint64 *position);
+
+
+GstEvent* gst_event_new_tag (GstTagList *taglist);
+void gst_event_parse_tag (GstEvent *event, GstTagList **taglist);
+
+
+GstEvent * gst_event_new_buffer_size (GstFormat format, gint64 minsize, gint64 maxsize,
+ gboolean async);
+void gst_event_parse_buffer_size (GstEvent *event, GstFormat *format, gint64 *minsize,
+ gint64 *maxsize, gboolean *async);
+
+
+GstEvent* gst_event_new_qos (gdouble proportion, GstClockTimeDiff diff,
+ GstClockTime timestamp);
+void gst_event_parse_qos (GstEvent *event, gdouble *proportion, GstClockTimeDiff *diff,
+ GstClockTime *timestamp);
+
+GstEvent* gst_event_new_seek (gdouble rate, GstFormat format, GstSeekFlags flags,
+ GstSeekType start_type, gint64 start,
+ GstSeekType stop_type, gint64 stop);
+void gst_event_parse_seek (GstEvent *event, gdouble *rate, GstFormat *format,
+ GstSeekFlags *flags,
+ GstSeekType *start_type, gint64 *start,
+ GstSeekType *stop_type, gint64 *stop);
+
+GstEvent* gst_event_new_navigation (GstStructure *structure);
+
+
+GstEvent* gst_event_new_latency (GstClockTime latency);
+void gst_event_parse_latency (GstEvent *event, GstClockTime *latency);
+
+
+GstEvent* gst_event_new_step (GstFormat format, guint64 amount, gdouble rate,
+ gboolean flush, gboolean intermediate);
+void gst_event_parse_step (GstEvent *event, GstFormat *format, guint64 *amount,
+ gdouble *rate, gboolean *flush, gboolean *intermediate);
+
+
+# 34 "/usr/include/gstreamer-0.10/gst/gstpad.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstquery.h" 1
+# 35 "/usr/include/gstreamer-0.10/gst/gstquery.h"
+
+# 59 "/usr/include/gstreamer-0.10/gst/gstquery.h"
+typedef enum {
+ GST_QUERY_NONE = 0,
+ GST_QUERY_POSITION,
+ GST_QUERY_DURATION,
+ GST_QUERY_LATENCY,
+ GST_QUERY_JITTER,
+ GST_QUERY_RATE,
+ GST_QUERY_SEEKING,
+ GST_QUERY_SEGMENT,
+ GST_QUERY_CONVERT,
+ GST_QUERY_FORMATS,
+ GST_QUERY_BUFFERING,
+ GST_QUERY_CUSTOM,
+ GST_QUERY_URI
+} GstQueryType;
+# 84 "/usr/include/gstreamer-0.10/gst/gstquery.h"
+typedef enum {
+ GST_BUFFERING_STREAM,
+ GST_BUFFERING_DOWNLOAD,
+ GST_BUFFERING_TIMESHIFT,
+ GST_BUFFERING_LIVE
+} GstBufferingMode;
+
+typedef struct _GstQueryTypeDefinition GstQueryTypeDefinition;
+typedef struct _GstQuery GstQuery;
+typedef struct _GstQueryClass GstQueryClass;
+# 104 "/usr/include/gstreamer-0.10/gst/gstquery.h"
+struct _GstQueryTypeDefinition
+{
+ GstQueryType value;
+ gchar *nick;
+ gchar *description;
+ GQuark quark;
+};
+# 148 "/usr/include/gstreamer-0.10/gst/gstquery.h"
+struct _GstQuery
+{
+ GstMiniObject mini_object;
+
+
+ GstQueryType type;
+
+ GstStructure *structure;
+
+
+ gpointer _gst_reserved;
+};
+
+struct _GstQueryClass {
+ GstMiniObjectClass mini_object_class;
+
+
+ gpointer _gst_reserved[4];
+};
+
+const gchar* gst_query_type_get_name (GstQueryType query);
+GQuark gst_query_type_to_quark (GstQueryType query);
+
+GType gst_query_get_type (void);
+
+
+GstQueryType gst_query_type_register (const gchar *nick,
+ const gchar *description);
+GstQueryType gst_query_type_get_by_nick (const gchar *nick);
+
+
+gboolean gst_query_types_contains (const GstQueryType *types,
+ GstQueryType type);
+
+
+
+const GstQueryTypeDefinition*
+ gst_query_type_get_details (GstQueryType type);
+GstIterator* gst_query_type_iterate_definitions (void);
+# 201 "/usr/include/gstreamer-0.10/gst/gstquery.h"
+static inline GstQuery *
+gst_query_ref (GstQuery * q)
+{
+ return ((((GstQuery*) g_type_check_instance_cast ((GTypeInstance*) ((gst_mini_object_ref (((GstMiniObject*)(q))))), ((gst_query_get_type()))))));
+}
+# 218 "/usr/include/gstreamer-0.10/gst/gstquery.h"
+static inline void
+gst_query_unref (GstQuery * q)
+{
+ gst_mini_object_unref (((GstMiniObject*)(q)));
+}
+# 238 "/usr/include/gstreamer-0.10/gst/gstquery.h"
+static inline GstQuery *
+gst_query_copy (const GstQuery * q)
+{
+ return ((((GstQuery*) g_type_check_instance_cast ((GTypeInstance*) ((gst_mini_object_copy (((GstMiniObject*)(q))))), ((gst_query_get_type()))))));
+}
+# 253 "/usr/include/gstreamer-0.10/gst/gstquery.h"
+GstQuery* gst_query_new_position (GstFormat format);
+void gst_query_set_position (GstQuery *query, GstFormat format, gint64 cur);
+void gst_query_parse_position (GstQuery *query, GstFormat *format, gint64 *cur);
+
+
+GstQuery* gst_query_new_duration (GstFormat format);
+void gst_query_set_duration (GstQuery *query, GstFormat format, gint64 duration);
+void gst_query_parse_duration (GstQuery *query, GstFormat *format, gint64 *duration);
+
+
+GstQuery* gst_query_new_latency (void);
+void gst_query_set_latency (GstQuery *query, gboolean live, GstClockTime min_latency,
+ GstClockTime max_latency);
+void gst_query_parse_latency (GstQuery *query, gboolean *live, GstClockTime *min_latency,
+ GstClockTime *max_latency);
+
+
+GstQuery* gst_query_new_convert (GstFormat src_format, gint64 value, GstFormat dest_format);
+void gst_query_set_convert (GstQuery *query, GstFormat src_format, gint64 src_value,
+ GstFormat dest_format, gint64 dest_value);
+void gst_query_parse_convert (GstQuery *query, GstFormat *src_format, gint64 *src_value,
+ GstFormat *dest_format, gint64 *dest_value);
+
+GstQuery* gst_query_new_segment (GstFormat format);
+void gst_query_set_segment (GstQuery *query, gdouble rate, GstFormat format,
+ gint64 start_value, gint64 stop_value);
+void gst_query_parse_segment (GstQuery *query, gdouble *rate, GstFormat *format,
+ gint64 *start_value, gint64 *stop_value);
+
+
+GstQuery * gst_query_new_application (GstQueryType type,
+ GstStructure *structure);
+GstStructure * gst_query_get_structure (GstQuery *query);
+
+
+GstQuery* gst_query_new_seeking (GstFormat format);
+void gst_query_set_seeking (GstQuery *query, GstFormat format,
+ gboolean seekable,
+ gint64 segment_start,
+ gint64 segment_end);
+void gst_query_parse_seeking (GstQuery *query, GstFormat *format,
+ gboolean *seekable,
+ gint64 *segment_start,
+ gint64 *segment_end);
+
+GstQuery* gst_query_new_formats (void);
+void gst_query_set_formats (GstQuery *query, gint n_formats, ...);
+void gst_query_set_formatsv (GstQuery *query, gint n_formats, GstFormat *formats);
+void gst_query_parse_formats_length (GstQuery *query, guint *n_formats);
+void gst_query_parse_formats_nth (GstQuery *query, guint nth, GstFormat *format);
+
+
+GstQuery* gst_query_new_buffering (GstFormat format);
+void gst_query_set_buffering_percent (GstQuery *query, gboolean busy, gint percent);
+void gst_query_parse_buffering_percent (GstQuery *query, gboolean *busy, gint *percent);
+
+void gst_query_set_buffering_stats (GstQuery *query, GstBufferingMode mode,
+ gint avg_in, gint avg_out,
+ gint64 buffering_left);
+void gst_query_parse_buffering_stats (GstQuery *query, GstBufferingMode *mode,
+ gint *avg_in, gint *avg_out,
+ gint64 *buffering_left);
+
+void gst_query_set_buffering_range (GstQuery *query, GstFormat format,
+ gint64 start, gint64 stop,
+ gint64 estimated_total);
+void gst_query_parse_buffering_range (GstQuery *query, GstFormat *format,
+ gint64 *start, gint64 *stop,
+ gint64 *estimated_total);
+
+GstQuery * gst_query_new_uri (void);
+void gst_query_parse_uri (GstQuery *query, gchar **uri);
+void gst_query_set_uri (GstQuery *query, const gchar *uri);
+
+
+# 35 "/usr/include/gstreamer-0.10/gst/gstpad.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gsttask.h" 1
+# 27 "/usr/include/gstreamer-0.10/gst/gsttask.h"
+# 1 "/usr/include/gstreamer-0.10/gst/gsttaskpool.h" 1
+# 27 "/usr/include/gstreamer-0.10/gst/gsttaskpool.h"
+
+# 38 "/usr/include/gstreamer-0.10/gst/gsttaskpool.h"
+typedef struct _GstTaskPool GstTaskPool;
+typedef struct _GstTaskPoolClass GstTaskPoolClass;
+
+typedef void (*GstTaskPoolFunction) (void *data);
+
+
+
+
+
+
+struct _GstTaskPool {
+ GstObject object;
+
+
+ GThreadPool *pool;
+
+ gpointer _gst_reserved[4];
+};
+# 67 "/usr/include/gstreamer-0.10/gst/gsttaskpool.h"
+struct _GstTaskPoolClass {
+ GstObjectClass parent_class;
+
+
+ void (*prepare) (GstTaskPool *pool, GError **error);
+ void (*cleanup) (GstTaskPool *pool);
+
+ gpointer (*push) (GstTaskPool *pool, GstTaskPoolFunction func,
+ gpointer user_data, GError **error);
+ void (*join) (GstTaskPool *pool, gpointer id);
+
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_task_pool_get_type (void);
+
+GstTaskPool * gst_task_pool_new (void);
+void gst_task_pool_prepare (GstTaskPool *pool, GError **error);
+
+gpointer gst_task_pool_push (GstTaskPool *pool, GstTaskPoolFunction func,
+ gpointer user_data, GError **error);
+void gst_task_pool_join (GstTaskPool *pool, gpointer id);
+
+void gst_task_pool_cleanup (GstTaskPool *pool);
+
+
+# 28 "/usr/include/gstreamer-0.10/gst/gsttask.h" 2
+
+
+# 38 "/usr/include/gstreamer-0.10/gst/gsttask.h"
+typedef void (*GstTaskFunction) (void *data);
+# 49 "/usr/include/gstreamer-0.10/gst/gsttask.h"
+typedef struct _GstTask GstTask;
+typedef struct _GstTaskClass GstTaskClass;
+typedef struct _GstTaskPrivate GstTaskPrivate;
+# 61 "/usr/include/gstreamer-0.10/gst/gsttask.h"
+typedef enum {
+ GST_TASK_STARTED,
+ GST_TASK_STOPPED,
+ GST_TASK_PAUSED
+} GstTaskState;
+# 123 "/usr/include/gstreamer-0.10/gst/gsttask.h"
+typedef struct {
+
+ void (*enter_thread) (GstTask *task, GThread *thread, gpointer user_data);
+ void (*leave_thread) (GstTask *task, GThread *thread, gpointer user_data);
+
+ gpointer _gst_reserved[4];
+} GstTaskThreadCallbacks;
+# 142 "/usr/include/gstreamer-0.10/gst/gsttask.h"
+struct _GstTask {
+ GstObject object;
+
+
+ GstTaskState state;
+ GCond *cond;
+
+ GStaticRecMutex *lock;
+
+ GstTaskFunction func;
+ gpointer data;
+
+ gboolean running;
+
+
+ union {
+ struct {
+
+ GThread *thread;
+ } ABI;
+ gpointer _gst_reserved[4 - 1];
+ } abidata;
+
+ GstTaskPrivate *priv;
+};
+
+struct _GstTaskClass {
+ GstObjectClass parent_class;
+
+
+ GstTaskPool *pool;
+
+
+ gpointer _gst_reserved[4];
+};
+
+void gst_task_cleanup_all (void);
+
+GType gst_task_get_type (void);
+
+GstTask* gst_task_create (GstTaskFunction func, gpointer data);
+void gst_task_set_lock (GstTask *task, GStaticRecMutex *mutex);
+void gst_task_set_priority (GstTask *task, GThreadPriority priority);
+
+GstTaskPool * gst_task_get_pool (GstTask *task);
+void gst_task_set_pool (GstTask *task, GstTaskPool *pool);
+
+void gst_task_set_thread_callbacks (GstTask *task,
+ GstTaskThreadCallbacks *callbacks,
+ gpointer user_data,
+ GDestroyNotify notify);
+
+GstTaskState gst_task_get_state (GstTask *task);
+gboolean gst_task_set_state (GstTask *task, GstTaskState state);
+
+gboolean gst_task_start (GstTask *task);
+gboolean gst_task_stop (GstTask *task);
+gboolean gst_task_pause (GstTask *task);
+
+gboolean gst_task_join (GstTask *task);
+
+
+# 36 "/usr/include/gstreamer-0.10/gst/gstpad.h" 2
+
+
+# 50 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef struct _GstPad GstPad;
+typedef struct _GstPadPrivate GstPadPrivate;
+typedef struct _GstPadClass GstPadClass;
+# 66 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef enum {
+ GST_PAD_LINK_OK = 0,
+ GST_PAD_LINK_WRONG_HIERARCHY = -1,
+ GST_PAD_LINK_WAS_LINKED = -2,
+ GST_PAD_LINK_WRONG_DIRECTION = -3,
+ GST_PAD_LINK_NOFORMAT = -4,
+ GST_PAD_LINK_NOSCHED = -5,
+ GST_PAD_LINK_REFUSED = -6
+} GstPadLinkReturn;
+# 118 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef enum {
+
+ GST_FLOW_CUSTOM_SUCCESS = 100,
+
+
+ GST_FLOW_RESEND = 1,
+ GST_FLOW_OK = 0,
+
+ GST_FLOW_NOT_LINKED = -1,
+ GST_FLOW_WRONG_STATE = -2,
+
+ GST_FLOW_UNEXPECTED = -3,
+ GST_FLOW_NOT_NEGOTIATED = -4,
+ GST_FLOW_ERROR = -5,
+ GST_FLOW_NOT_SUPPORTED = -6,
+
+
+ GST_FLOW_CUSTOM_ERROR = -100
+} GstFlowReturn;
+# 163 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+const gchar* gst_flow_get_name (GstFlowReturn ret);
+GQuark gst_flow_to_quark (GstFlowReturn ret);
+# 176 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef enum {
+ GST_ACTIVATE_NONE,
+ GST_ACTIVATE_PUSH,
+ GST_ACTIVATE_PULL
+} GstActivateMode;
+# 203 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef gboolean (*GstPadActivateFunction) (GstPad *pad);
+# 213 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef gboolean (*GstPadActivateModeFunction) (GstPad *pad, gboolean active);
+# 234 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef GstFlowReturn (*GstPadChainFunction) (GstPad *pad, GstBuffer *buffer);
+# 253 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef GstFlowReturn (*GstPadChainListFunction) (GstPad *pad, GstBufferList *list);
+# 296 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef GstFlowReturn (*GstPadGetRangeFunction) (GstPad *pad, guint64 offset,
+ guint length, GstBuffer **buffer);
+# 308 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef gboolean (*GstPadEventFunction) (GstPad *pad, GstEvent *event);
+# 323 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef gboolean (*GstPadCheckGetRangeFunction) (GstPad *pad);
+# 339 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef GList* (*GstPadIntLinkFunction) (GstPad *pad);
+# 354 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef GstIterator* (*GstPadIterIntLinkFunction) (GstPad *pad);
+# 365 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef const GstQueryType* (*GstPadQueryTypeFunction) (GstPad *pad);
+# 376 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef gboolean (*GstPadQueryFunction) (GstPad *pad, GstQuery *query);
+# 389 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef GstPadLinkReturn (*GstPadLinkFunction) (GstPad *pad, GstPad *peer);
+
+
+
+
+
+
+typedef void (*GstPadUnlinkFunction) (GstPad *pad);
+# 410 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef GstCaps* (*GstPadGetCapsFunction) (GstPad *pad);
+# 423 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef gboolean (*GstPadSetCapsFunction) (GstPad *pad, GstCaps *caps);
+# 435 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef gboolean (*GstPadAcceptCapsFunction) (GstPad *pad, GstCaps *caps);
+# 446 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef void (*GstPadFixateCapsFunction) (GstPad *pad, GstCaps *caps);
+# 480 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef GstFlowReturn (*GstPadBufferAllocFunction) (GstPad *pad, guint64 offset, guint size,
+ GstCaps *caps, GstBuffer **buf);
+# 494 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef gboolean (*GstPadDispatcherFunction) (GstPad *pad, gpointer data);
+# 505 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef void (*GstPadBlockCallback) (GstPad *pad, gboolean blocked, gpointer user_data);
+# 515 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef enum {
+ GST_PAD_UNKNOWN,
+ GST_PAD_SRC,
+ GST_PAD_SINK
+} GstPadDirection;
+# 532 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+typedef enum {
+ GST_PAD_BLOCKED = (GST_OBJECT_FLAG_LAST << 0),
+ GST_PAD_FLUSHING = (GST_OBJECT_FLAG_LAST << 1),
+ GST_PAD_IN_GETCAPS = (GST_OBJECT_FLAG_LAST << 2),
+ GST_PAD_IN_SETCAPS = (GST_OBJECT_FLAG_LAST << 3),
+ GST_PAD_BLOCKING = (GST_OBJECT_FLAG_LAST << 4),
+
+ GST_PAD_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 8)
+} GstPadFlags;
+
+
+typedef struct _GstPadTemplate GstPadTemplate;
+# 587 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+struct _GstPad {
+ GstObject object;
+
+
+ gpointer element_private;
+
+ GstPadTemplate *padtemplate;
+
+ GstPadDirection direction;
+
+
+
+ GStaticRecMutex *stream_rec_lock;
+ GstTask *task;
+
+ GMutex *preroll_lock;
+ GCond *preroll_cond;
+
+
+
+ GCond *block_cond;
+ GstPadBlockCallback block_callback;
+ gpointer block_data;
+
+
+ GstCaps *caps;
+ GstPadGetCapsFunction getcapsfunc;
+ GstPadSetCapsFunction setcapsfunc;
+ GstPadAcceptCapsFunction acceptcapsfunc;
+ GstPadFixateCapsFunction fixatecapsfunc;
+
+ GstPadActivateFunction activatefunc;
+ GstPadActivateModeFunction activatepushfunc;
+ GstPadActivateModeFunction activatepullfunc;
+
+
+ GstPadLinkFunction linkfunc;
+ GstPadUnlinkFunction unlinkfunc;
+ GstPad *peer;
+
+ gpointer sched_private;
+
+
+ GstPadChainFunction chainfunc;
+ GstPadCheckGetRangeFunction checkgetrangefunc;
+ GstPadGetRangeFunction getrangefunc;
+ GstPadEventFunction eventfunc;
+
+ GstActivateMode mode;
+
+
+ GstPadQueryTypeFunction querytypefunc;
+ GstPadQueryFunction queryfunc;
+
+
+ GstPadIntLinkFunction intlinkfunc;
+
+ GstPadBufferAllocFunction bufferallocfunc;
+
+
+
+ gint do_buffer_signals;
+ gint do_event_signals;
+
+
+
+ GstPadIterIntLinkFunction iterintlinkfunc;
+
+
+ GDestroyNotify block_destroy_data;
+
+
+ union {
+ struct {
+ gboolean block_callback_called;
+ GstPadPrivate *priv;
+ } ABI;
+ gpointer _gst_reserved[4 - 2];
+ } abidata;
+};
+
+struct _GstPadClass {
+ GstObjectClass parent_class;
+
+
+ void (*linked) (GstPad *pad, GstPad *peer);
+ void (*unlinked) (GstPad *pad, GstPad *peer);
+ void (*request_link) (GstPad *pad);
+ gboolean (*have_data) (GstPad *pad, GstMiniObject *data);
+
+
+ gpointer _gst_reserved[4];
+};
+# 803 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+# 1 "/usr/include/gstreamer-0.10/gst/gstpadtemplate.h" 1
+# 36 "/usr/include/gstreamer-0.10/gst/gstpadtemplate.h"
+
+
+
+
+typedef struct _GstPadTemplateClass GstPadTemplateClass;
+typedef struct _GstStaticPadTemplate GstStaticPadTemplate;
+# 60 "/usr/include/gstreamer-0.10/gst/gstpadtemplate.h"
+typedef enum {
+ GST_PAD_ALWAYS,
+ GST_PAD_SOMETIMES,
+ GST_PAD_REQUEST
+} GstPadPresence;
+# 105 "/usr/include/gstreamer-0.10/gst/gstpadtemplate.h"
+typedef enum {
+ GST_PAD_TEMPLATE_FIXED = (GST_OBJECT_FLAG_LAST << 0),
+
+ GST_PAD_TEMPLATE_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 4)
+} GstPadTemplateFlags;
+# 124 "/usr/include/gstreamer-0.10/gst/gstpadtemplate.h"
+struct _GstPadTemplate {
+ GstObject object;
+
+ gchar *name_template;
+ GstPadDirection direction;
+ GstPadPresence presence;
+ GstCaps *caps;
+
+ gpointer _gst_reserved[4];
+};
+
+struct _GstPadTemplateClass {
+ GstObjectClass parent_class;
+
+
+ void (*pad_created) (GstPadTemplate *templ, GstPad *pad);
+
+ gpointer _gst_reserved[4];
+};
+# 153 "/usr/include/gstreamer-0.10/gst/gstpadtemplate.h"
+struct _GstStaticPadTemplate {
+ const gchar *name_template;
+ GstPadDirection direction;
+ GstPadPresence presence;
+ GstStaticCaps static_caps;
+};
+# 179 "/usr/include/gstreamer-0.10/gst/gstpadtemplate.h"
+GType gst_pad_template_get_type (void);
+GType gst_static_pad_template_get_type (void);
+
+GstPadTemplate* gst_pad_template_new (const gchar *name_template,
+ GstPadDirection direction, GstPadPresence presence,
+ GstCaps *caps);
+
+GstPadTemplate * gst_static_pad_template_get (GstStaticPadTemplate *pad_template);
+GstCaps* gst_static_pad_template_get_caps (GstStaticPadTemplate *templ);
+GstCaps* gst_pad_template_get_caps (GstPadTemplate *templ);
+
+void gst_pad_template_pad_created (GstPadTemplate * templ, GstPad * pad);
+
+
+# 804 "/usr/include/gstreamer-0.10/gst/gstpad.h" 2
+
+GType gst_pad_get_type (void);
+
+
+GstPad* gst_pad_new (const gchar *name, GstPadDirection direction);
+GstPad* gst_pad_new_from_template (GstPadTemplate *templ, const gchar *name);
+GstPad* gst_pad_new_from_static_template (GstStaticPadTemplate *templ, const gchar *name);
+# 834 "/usr/include/gstreamer-0.10/gst/gstpad.h"
+GstPadDirection gst_pad_get_direction (GstPad *pad);
+
+gboolean gst_pad_set_active (GstPad *pad, gboolean active);
+gboolean gst_pad_is_active (GstPad *pad);
+gboolean gst_pad_activate_pull (GstPad *pad, gboolean active);
+gboolean gst_pad_activate_push (GstPad *pad, gboolean active);
+
+gboolean gst_pad_set_blocked (GstPad *pad, gboolean blocked);
+gboolean gst_pad_set_blocked_async (GstPad *pad, gboolean blocked,
+ GstPadBlockCallback callback, gpointer user_data);
+gboolean gst_pad_set_blocked_async_full (GstPad *pad, gboolean blocked,
+ GstPadBlockCallback callback, gpointer user_data,
+ GDestroyNotify destroy_data);
+gboolean gst_pad_is_blocked (GstPad *pad);
+gboolean gst_pad_is_blocking (GstPad *pad);
+
+void gst_pad_set_element_private (GstPad *pad, gpointer priv);
+gpointer gst_pad_get_element_private (GstPad *pad);
+
+GstPadTemplate* gst_pad_get_pad_template (GstPad *pad);
+
+void gst_pad_set_bufferalloc_function (GstPad *pad, GstPadBufferAllocFunction bufalloc);
+GstFlowReturn gst_pad_alloc_buffer (GstPad *pad, guint64 offset, gint size,
+ GstCaps *caps, GstBuffer **buf);
+GstFlowReturn gst_pad_alloc_buffer_and_set_caps (GstPad *pad, guint64 offset, gint size,
+ GstCaps *caps, GstBuffer **buf);
+
+
+void gst_pad_set_activate_function (GstPad *pad, GstPadActivateFunction activate);
+void gst_pad_set_activatepull_function (GstPad *pad, GstPadActivateModeFunction activatepull);
+void gst_pad_set_activatepush_function (GstPad *pad, GstPadActivateModeFunction activatepush);
+void gst_pad_set_chain_function (GstPad *pad, GstPadChainFunction chain);
+void gst_pad_set_chain_list_function (GstPad *pad, GstPadChainListFunction chainlist);
+void gst_pad_set_getrange_function (GstPad *pad, GstPadGetRangeFunction get);
+void gst_pad_set_checkgetrange_function (GstPad *pad, GstPadCheckGetRangeFunction check);
+void gst_pad_set_event_function (GstPad *pad, GstPadEventFunction event);
+
+
+void gst_pad_set_link_function (GstPad *pad, GstPadLinkFunction link);
+void gst_pad_set_unlink_function (GstPad *pad, GstPadUnlinkFunction unlink);
+
+gboolean gst_pad_can_link (GstPad *srcpad, GstPad *sinkpad);
+GstPadLinkReturn gst_pad_link (GstPad *srcpad, GstPad *sinkpad);
+gboolean gst_pad_unlink (GstPad *srcpad, GstPad *sinkpad);
+gboolean gst_pad_is_linked (GstPad *pad);
+
+GstPad* gst_pad_get_peer (GstPad *pad);
+
+
+void gst_pad_set_getcaps_function (GstPad *pad, GstPadGetCapsFunction getcaps);
+void gst_pad_set_acceptcaps_function (GstPad *pad, GstPadAcceptCapsFunction acceptcaps);
+void gst_pad_set_fixatecaps_function (GstPad *pad, GstPadFixateCapsFunction fixatecaps);
+void gst_pad_set_setcaps_function (GstPad *pad, GstPadSetCapsFunction setcaps);
+
+const GstCaps* gst_pad_get_pad_template_caps (GstPad *pad);
+
+
+GstCaps * gst_pad_get_caps (GstPad * pad);
+void gst_pad_fixate_caps (GstPad * pad, GstCaps *caps);
+gboolean gst_pad_accept_caps (GstPad * pad, GstCaps *caps);
+gboolean gst_pad_set_caps (GstPad * pad, GstCaps *caps);
+
+GstCaps * gst_pad_peer_get_caps (GstPad * pad);
+gboolean gst_pad_peer_accept_caps (GstPad * pad, GstCaps *caps);
+
+
+GstCaps * gst_pad_get_allowed_caps (GstPad * pad);
+GstCaps * gst_pad_get_negotiated_caps (GstPad * pad);
+
+
+GstFlowReturn gst_pad_push (GstPad *pad, GstBuffer *buffer);
+GstFlowReturn gst_pad_push_list (GstPad *pad, GstBufferList *list);
+gboolean gst_pad_check_pull_range (GstPad *pad);
+GstFlowReturn gst_pad_pull_range (GstPad *pad, guint64 offset, guint size,
+ GstBuffer **buffer);
+gboolean gst_pad_push_event (GstPad *pad, GstEvent *event);
+gboolean gst_pad_event_default (GstPad *pad, GstEvent *event);
+
+
+GstFlowReturn gst_pad_chain (GstPad *pad, GstBuffer *buffer);
+GstFlowReturn gst_pad_chain_list (GstPad *pad, GstBufferList *list);
+GstFlowReturn gst_pad_get_range (GstPad *pad, guint64 offset, guint size,
+ GstBuffer **buffer);
+gboolean gst_pad_send_event (GstPad *pad, GstEvent *event);
+
+
+gboolean gst_pad_start_task (GstPad *pad, GstTaskFunction func,
+ gpointer data);
+gboolean gst_pad_pause_task (GstPad *pad);
+gboolean gst_pad_stop_task (GstPad *pad);
+
+
+void gst_pad_set_internal_link_function (GstPad *pad, GstPadIntLinkFunction intlink);
+GList* gst_pad_get_internal_links (GstPad *pad);
+GList* gst_pad_get_internal_links_default (GstPad *pad);
+
+void gst_pad_set_iterate_internal_links_function (GstPad * pad,
+ GstPadIterIntLinkFunction iterintlink);
+GstIterator * gst_pad_iterate_internal_links (GstPad * pad);
+GstIterator * gst_pad_iterate_internal_links_default (GstPad * pad);
+
+
+
+void gst_pad_set_query_type_function (GstPad *pad, GstPadQueryTypeFunction type_func);
+const GstQueryType*
+ gst_pad_get_query_types (GstPad *pad);
+const GstQueryType*
+ gst_pad_get_query_types_default (GstPad *pad);
+
+gboolean gst_pad_query (GstPad *pad, GstQuery *query);
+gboolean gst_pad_peer_query (GstPad *pad, GstQuery *query);
+void gst_pad_set_query_function (GstPad *pad, GstPadQueryFunction query);
+gboolean gst_pad_query_default (GstPad *pad, GstQuery *query);
+
+
+gboolean gst_pad_dispatcher (GstPad *pad, GstPadDispatcherFunction dispatch,
+ gpointer data);
+
+
+void gst_pad_load_and_link (xmlNodePtr self, GstObject *parent);
+
+
+
+# 54 "/usr/include/gstreamer-0.10/gst/gstelement.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstbus.h" 1
+# 25 "/usr/include/gstreamer-0.10/gst/gstbus.h"
+typedef struct _GstBus GstBus;
+typedef struct _GstBusPrivate GstBusPrivate;
+typedef struct _GstBusClass GstBusClass;
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstmessage.h" 1
+# 25 "/usr/include/gstreamer-0.10/gst/gstmessage.h"
+
+
+typedef struct _GstMessage GstMessage;
+typedef struct _GstMessageClass GstMessageClass;
+# 95 "/usr/include/gstreamer-0.10/gst/gstmessage.h"
+typedef enum
+{
+ GST_MESSAGE_UNKNOWN = 0,
+ GST_MESSAGE_EOS = (1 << 0),
+ GST_MESSAGE_ERROR = (1 << 1),
+ GST_MESSAGE_WARNING = (1 << 2),
+ GST_MESSAGE_INFO = (1 << 3),
+ GST_MESSAGE_TAG = (1 << 4),
+ GST_MESSAGE_BUFFERING = (1 << 5),
+ GST_MESSAGE_STATE_CHANGED = (1 << 6),
+ GST_MESSAGE_STATE_DIRTY = (1 << 7),
+ GST_MESSAGE_STEP_DONE = (1 << 8),
+ GST_MESSAGE_CLOCK_PROVIDE = (1 << 9),
+ GST_MESSAGE_CLOCK_LOST = (1 << 10),
+ GST_MESSAGE_NEW_CLOCK = (1 << 11),
+ GST_MESSAGE_STRUCTURE_CHANGE = (1 << 12),
+ GST_MESSAGE_STREAM_STATUS = (1 << 13),
+ GST_MESSAGE_APPLICATION = (1 << 14),
+ GST_MESSAGE_ELEMENT = (1 << 15),
+ GST_MESSAGE_SEGMENT_START = (1 << 16),
+ GST_MESSAGE_SEGMENT_DONE = (1 << 17),
+ GST_MESSAGE_DURATION = (1 << 18),
+ GST_MESSAGE_LATENCY = (1 << 19),
+ GST_MESSAGE_ASYNC_START = (1 << 20),
+ GST_MESSAGE_ASYNC_DONE = (1 << 21),
+ GST_MESSAGE_REQUEST_STATE = (1 << 22),
+ GST_MESSAGE_STEP_START = (1 << 23),
+ GST_MESSAGE_ANY = ~0
+} GstMessageType;
+
+
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstelement.h" 1
+# 128 "/usr/include/gstreamer-0.10/gst/gstmessage.h" 2
+# 208 "/usr/include/gstreamer-0.10/gst/gstmessage.h"
+typedef enum {
+ GST_STRUCTURE_CHANGE_TYPE_PAD_LINK = 0,
+ GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK = 1
+} GstStructureChangeType;
+# 228 "/usr/include/gstreamer-0.10/gst/gstmessage.h"
+typedef enum {
+ GST_STREAM_STATUS_TYPE_CREATE = 0,
+ GST_STREAM_STATUS_TYPE_ENTER = 1,
+ GST_STREAM_STATUS_TYPE_LEAVE = 2,
+ GST_STREAM_STATUS_TYPE_DESTROY = 3,
+
+ GST_STREAM_STATUS_TYPE_START = 8,
+ GST_STREAM_STATUS_TYPE_PAUSE = 9,
+ GST_STREAM_STATUS_TYPE_STOP = 10
+} GstStreamStatusType;
+# 249 "/usr/include/gstreamer-0.10/gst/gstmessage.h"
+struct _GstMessage
+{
+ GstMiniObject mini_object;
+
+
+ GMutex *lock;
+ GCond *cond;
+
+
+ GstMessageType type;
+ guint64 timestamp;
+ GstObject *src;
+
+ GstStructure *structure;
+
+
+ union {
+ struct {
+ guint32 seqnum;
+ } ABI;
+
+ gpointer _gst_reserved[4 + 0];
+ } abidata;
+};
+
+struct _GstMessageClass {
+ GstMiniObjectClass mini_object_class;
+
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_message_get_type (void);
+
+const gchar* gst_message_type_get_name (GstMessageType type);
+GQuark gst_message_type_to_quark (GstMessageType type);
+# 299 "/usr/include/gstreamer-0.10/gst/gstmessage.h"
+static inline GstMessage *
+gst_message_ref (GstMessage * msg)
+{
+ return (GstMessage *) gst_mini_object_ref (((((GstMiniObject*) g_type_check_instance_cast ((GTypeInstance*) ((msg)), ((gst_mini_object_get_type())))))));
+}
+# 316 "/usr/include/gstreamer-0.10/gst/gstmessage.h"
+static inline void
+gst_message_unref (GstMessage * msg)
+{
+ gst_mini_object_unref (((GstMiniObject*)(msg)));
+}
+# 337 "/usr/include/gstreamer-0.10/gst/gstmessage.h"
+static inline GstMessage *
+gst_message_copy (const GstMessage * msg)
+{
+ return ((((GstMessage*) g_type_check_instance_cast ((GTypeInstance*) ((gst_mini_object_copy (((GstMiniObject*)(msg))))), ((gst_message_get_type()))))));
+}
+# 355 "/usr/include/gstreamer-0.10/gst/gstmessage.h"
+guint32 gst_message_get_seqnum (GstMessage *message);
+void gst_message_set_seqnum (GstMessage *message, guint32 seqnum);
+
+
+GstMessage * gst_message_new_eos (GstObject * src);
+
+
+
+GstMessage * gst_message_new_error (GstObject * src, GError * error, const gchar * debug);
+void gst_message_parse_error (GstMessage *message, GError **gerror, gchar **debug);
+
+
+GstMessage * gst_message_new_warning (GstObject * src, GError * error, const gchar * debug);
+void gst_message_parse_warning (GstMessage *message, GError **gerror, gchar **debug);
+
+
+GstMessage * gst_message_new_info (GstObject * src, GError * error, const gchar * debug);
+void gst_message_parse_info (GstMessage *message, GError **gerror, gchar **debug);
+
+
+GstMessage * gst_message_new_tag (GstObject * src, GstTagList * tag_list);
+GstMessage * gst_message_new_tag_full (GstObject * src, GstPad *pad, GstTagList * tag_list);
+void gst_message_parse_tag (GstMessage *message, GstTagList **tag_list);
+void gst_message_parse_tag_full (GstMessage *message, GstPad **pad, GstTagList **tag_list);
+
+
+GstMessage * gst_message_new_buffering (GstObject * src, gint percent);
+void gst_message_parse_buffering (GstMessage *message, gint *percent);
+void gst_message_set_buffering_stats (GstMessage *message, GstBufferingMode mode,
+ gint avg_in, gint avg_out,
+ gint64 buffering_left);
+void gst_message_parse_buffering_stats (GstMessage *message, GstBufferingMode *mode,
+ gint *avg_in, gint *avg_out,
+ gint64 *buffering_left);
+
+
+GstMessage * gst_message_new_state_changed (GstObject * src, GstState oldstate,
+ GstState newstate, GstState pending);
+void gst_message_parse_state_changed (GstMessage *message, GstState *oldstate,
+ GstState *newstate, GstState *pending);
+
+
+GstMessage * gst_message_new_state_dirty (GstObject * src);
+
+
+GstMessage * gst_message_new_step_done (GstObject * src, GstFormat format, guint64 amount,
+ gdouble rate, gboolean flush, gboolean intermediate,
+ guint64 duration, gboolean eos);
+void gst_message_parse_step_done (GstMessage * message, GstFormat *format, guint64 *amount,
+ gdouble *rate, gboolean *flush, gboolean *intermediate,
+ guint64 *duration, gboolean *eos);
+
+GstMessage * gst_message_new_clock_provide (GstObject * src, GstClock *clock, gboolean ready);
+void gst_message_parse_clock_provide (GstMessage *message, GstClock **clock,
+ gboolean *ready);
+
+
+GstMessage * gst_message_new_clock_lost (GstObject * src, GstClock *clock);
+void gst_message_parse_clock_lost (GstMessage *message, GstClock **clock);
+
+
+GstMessage * gst_message_new_new_clock (GstObject * src, GstClock *clock);
+void gst_message_parse_new_clock (GstMessage *message, GstClock **clock);
+
+
+GstMessage * gst_message_new_application (GstObject * src, GstStructure * structure);
+
+
+GstMessage * gst_message_new_element (GstObject * src, GstStructure * structure);
+
+
+GstMessage * gst_message_new_segment_start (GstObject * src, GstFormat format, gint64 position);
+void gst_message_parse_segment_start (GstMessage *message, GstFormat *format,
+ gint64 *position);
+
+
+GstMessage * gst_message_new_segment_done (GstObject * src, GstFormat format, gint64 position);
+void gst_message_parse_segment_done (GstMessage *message, GstFormat *format,
+ gint64 *position);
+
+
+GstMessage * gst_message_new_duration (GstObject * src, GstFormat format, gint64 duration);
+void gst_message_parse_duration (GstMessage *message, GstFormat *format,
+ gint64 *duration);
+
+
+GstMessage * gst_message_new_latency (GstObject * src);
+
+
+GstMessage * gst_message_new_async_start (GstObject * src, gboolean new_base_time);
+void gst_message_parse_async_start (GstMessage *message, gboolean *new_base_time);
+
+
+GstMessage * gst_message_new_async_done (GstObject * src);
+
+
+GstMessage * gst_message_new_structure_change (GstObject * src, GstStructureChangeType type,
+ GstElement *owner, gboolean busy);
+void gst_message_parse_structure_change (GstMessage *message, GstStructureChangeType *type,
+ GstElement **owner, gboolean *busy);
+
+
+GstMessage * gst_message_new_stream_status (GstObject * src, GstStreamStatusType type,
+ GstElement *owner);
+void gst_message_parse_stream_status (GstMessage *message, GstStreamStatusType *type,
+ GstElement **owner);
+void gst_message_set_stream_status_object (GstMessage *message, const GValue *object);
+const GValue * gst_message_get_stream_status_object (GstMessage *message);
+
+
+GstMessage * gst_message_new_request_state (GstObject * src, GstState state);
+void gst_message_parse_request_state (GstMessage * message, GstState *state);
+
+
+GstMessage * gst_message_new_step_start (GstObject * src, gboolean active, GstFormat format,
+ guint64 amount, gdouble rate, gboolean flush,
+ gboolean intermediate);
+void gst_message_parse_step_start (GstMessage * message, gboolean *active, GstFormat *format,
+ guint64 *amount, gdouble *rate, gboolean *flush,
+ gboolean *intermediate);
+
+
+GstMessage * gst_message_new_custom (GstMessageType type,
+ GstObject * src,
+ GstStructure * structure);
+const GstStructure * gst_message_get_structure (GstMessage *message);
+
+
+# 30 "/usr/include/gstreamer-0.10/gst/gstbus.h" 2
+
+
+
+# 50 "/usr/include/gstreamer-0.10/gst/gstbus.h"
+typedef enum {
+ GST_BUS_FLUSHING = (GST_OBJECT_FLAG_LAST << 0),
+
+ GST_BUS_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 1)
+} GstBusFlags;
+# 64 "/usr/include/gstreamer-0.10/gst/gstbus.h"
+typedef enum
+{
+ GST_BUS_DROP = 0,
+ GST_BUS_PASS = 1,
+ GST_BUS_ASYNC = 2
+} GstBusSyncReply;
+# 86 "/usr/include/gstreamer-0.10/gst/gstbus.h"
+typedef GstBusSyncReply (*GstBusSyncHandler) (GstBus * bus, GstMessage * message, gpointer data);
+# 106 "/usr/include/gstreamer-0.10/gst/gstbus.h"
+typedef gboolean (*GstBusFunc) (GstBus * bus, GstMessage * message, gpointer data);
+
+
+
+
+
+
+struct _GstBus
+{
+ GstObject object;
+
+
+ GQueue *queue;
+ GMutex *queue_lock;
+
+ GstBusSyncHandler sync_handler;
+ gpointer sync_handler_data;
+
+ guint signal_watch_id;
+ guint num_signal_watchers;
+
+
+ GstBusPrivate *priv;
+ gpointer _gst_reserved[4 - 1];
+};
+
+struct _GstBusClass
+{
+ GstObjectClass parent_class;
+
+
+ void (*message) (GstBus *bus, GstMessage *message);
+ void (*sync_message) (GstBus *bus, GstMessage *message);
+
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_bus_get_type (void);
+
+GstBus* gst_bus_new (void);
+
+gboolean gst_bus_post (GstBus * bus, GstMessage * message);
+
+gboolean gst_bus_have_pending (GstBus * bus);
+GstMessage * gst_bus_peek (GstBus * bus);
+GstMessage * gst_bus_pop (GstBus * bus);
+GstMessage * gst_bus_pop_filtered (GstBus * bus, GstMessageType types);
+GstMessage * gst_bus_timed_pop (GstBus * bus, GstClockTime timeout);
+GstMessage * gst_bus_timed_pop_filtered (GstBus * bus, GstClockTime timeout, GstMessageType types);
+void gst_bus_set_flushing (GstBus * bus, gboolean flushing);
+
+
+void gst_bus_set_sync_handler (GstBus * bus, GstBusSyncHandler func,
+ gpointer data);
+
+GSource * gst_bus_create_watch (GstBus * bus);
+guint gst_bus_add_watch_full (GstBus * bus,
+ gint priority,
+ GstBusFunc func,
+ gpointer user_data,
+ GDestroyNotify notify);
+guint gst_bus_add_watch (GstBus * bus,
+ GstBusFunc func,
+ gpointer user_data);
+
+
+GstMessage* gst_bus_poll (GstBus *bus, GstMessageType events,
+ GstClockTimeDiff timeout);
+
+
+gboolean gst_bus_async_signal_func (GstBus *bus, GstMessage *message,
+ gpointer data);
+GstBusSyncReply gst_bus_sync_signal_handler (GstBus *bus, GstMessage *message,
+ gpointer data);
+
+
+void gst_bus_add_signal_watch (GstBus * bus);
+void gst_bus_add_signal_watch_full (GstBus * bus, gint priority);
+void gst_bus_remove_signal_watch (GstBus * bus);
+
+void gst_bus_enable_sync_message_emission (GstBus * bus);
+void gst_bus_disable_sync_message_emission (GstBus * bus);
+
+
+# 55 "/usr/include/gstreamer-0.10/gst/gstelement.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstelementfactory.h" 1
+# 27 "/usr/include/gstreamer-0.10/gst/gstelementfactory.h"
+typedef struct _GstElementFactory GstElementFactory;
+typedef struct _GstElementFactoryClass GstElementFactoryClass;
+
+
+
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstplugin.h" 1
+# 32 "/usr/include/gstreamer-0.10/gst/gstplugin.h"
+# 1 "/usr/include/glib-2.0/gmodule.h" 1
+# 32 "/usr/include/glib-2.0/gmodule.h"
+
+# 44 "/usr/include/glib-2.0/gmodule.h"
+typedef enum
+{
+ G_MODULE_BIND_LAZY = 1 << 0,
+ G_MODULE_BIND_LOCAL = 1 << 1,
+ G_MODULE_BIND_MASK = 0x03
+} GModuleFlags;
+
+typedef struct _GModule GModule;
+typedef const gchar* (*GModuleCheckInit) (GModule *module);
+typedef void (*GModuleUnload) (GModule *module);
+
+
+
+
+
+
+
+gboolean g_module_supported (void) __attribute__((__const__));
+
+
+GModule* g_module_open (const gchar *file_name,
+ GModuleFlags flags);
+
+
+gboolean g_module_close (GModule *module);
+
+
+void g_module_make_resident (GModule *module);
+
+
+const gchar* g_module_error (void);
+
+
+gboolean g_module_symbol (GModule *module,
+ const gchar *symbol_name,
+ gpointer *symbol);
+
+
+const gchar* g_module_name (GModule *module);
+# 95 "/usr/include/glib-2.0/gmodule.h"
+gchar* g_module_build_path (const gchar *directory,
+ const gchar *module_name);
+
+
+
+# 33 "/usr/include/gstreamer-0.10/gst/gstplugin.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstmacros.h" 1
+# 29 "/usr/include/gstreamer-0.10/gst/gstmacros.h"
+
+# 49 "/usr/include/gstreamer-0.10/gst/gstmacros.h"
+
+# 35 "/usr/include/gstreamer-0.10/gst/gstplugin.h" 2
+
+
+
+
+typedef struct _GstPlugin GstPlugin;
+typedef struct _GstPluginClass GstPluginClass;
+typedef struct _GstPluginPrivate GstPluginPrivate;
+typedef struct _GstPluginDesc GstPluginDesc;
+# 51 "/usr/include/gstreamer-0.10/gst/gstplugin.h"
+GQuark gst_plugin_error_quark (void);
+# 67 "/usr/include/gstreamer-0.10/gst/gstplugin.h"
+typedef enum
+{
+ GST_PLUGIN_ERROR_MODULE,
+ GST_PLUGIN_ERROR_DEPENDENCIES,
+ GST_PLUGIN_ERROR_NAME_MISMATCH
+} GstPluginError;
+
+
+typedef enum
+{
+ GST_PLUGIN_FLAG_CACHED = (1<<0)
+} GstPluginFlags;
+# 94 "/usr/include/gstreamer-0.10/gst/gstplugin.h"
+typedef enum {
+ GST_PLUGIN_DEPENDENCY_FLAG_NONE = 0,
+ GST_PLUGIN_DEPENDENCY_FLAG_RECURSE = (1 << 0),
+ GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY = (1 << 1),
+ GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX = (1 << 2)
+} GstPluginDependencyFlags;
+# 111 "/usr/include/gstreamer-0.10/gst/gstplugin.h"
+typedef gboolean (*GstPluginInitFunc) (GstPlugin *plugin);
+# 128 "/usr/include/gstreamer-0.10/gst/gstplugin.h"
+typedef gboolean (*GstPluginInitFullFunc) (GstPlugin *plugin, gpointer user_data);
+# 150 "/usr/include/gstreamer-0.10/gst/gstplugin.h"
+struct _GstPluginDesc {
+ gint major_version;
+ gint minor_version;
+ const gchar *name;
+ gchar *description;
+ GstPluginInitFunc plugin_init;
+ const gchar *version;
+ const gchar *license;
+ const gchar *source;
+ const gchar *package;
+ const gchar *origin;
+
+ gpointer _gst_reserved[4];
+};
+# 179 "/usr/include/gstreamer-0.10/gst/gstplugin.h"
+struct _GstPlugin {
+ GstObject object;
+
+
+ GstPluginDesc desc;
+
+ GstPluginDesc *orig_desc;
+
+ unsigned int flags;
+
+ gchar * filename;
+ gchar * basename;
+
+ GModule * module;
+
+ off_t file_size;
+ time_t file_mtime;
+ gboolean registered;
+
+
+ GstPluginPrivate *priv;
+ gpointer _gst_reserved[4 - 1];
+};
+
+struct _GstPluginClass {
+ GstObjectClass object_class;
+
+
+ gpointer _gst_reserved[4];
+};
+# 309 "/usr/include/gstreamer-0.10/gst/gstplugin.h"
+typedef gboolean (*GstPluginFilter) (GstPlugin *plugin,
+ gpointer user_data);
+
+GType gst_plugin_get_type (void);
+
+
+void _gst_plugin_register_static (GstPluginDesc *desc);
+
+
+gboolean gst_plugin_register_static (gint major_version,
+ gint minor_version,
+ const gchar *name,
+ gchar *description,
+ GstPluginInitFunc init_func,
+ const gchar *version,
+ const gchar *license,
+ const gchar *source,
+ const gchar *package,
+ const gchar *origin);
+
+gboolean gst_plugin_register_static_full (gint major_version,
+ gint minor_version,
+ const gchar *name,
+ gchar *description,
+ GstPluginInitFullFunc init_full_func,
+ const gchar *version,
+ const gchar *license,
+ const gchar *source,
+ const gchar *package,
+ const gchar *origin,
+ gpointer user_data);
+
+const gchar* gst_plugin_get_name (GstPlugin *plugin);
+const gchar* gst_plugin_get_description (GstPlugin *plugin);
+const gchar* gst_plugin_get_filename (GstPlugin *plugin);
+const gchar* gst_plugin_get_version (GstPlugin *plugin);
+const gchar* gst_plugin_get_license (GstPlugin *plugin);
+const gchar* gst_plugin_get_source (GstPlugin *plugin);
+const gchar* gst_plugin_get_package (GstPlugin *plugin);
+const gchar* gst_plugin_get_origin (GstPlugin *plugin);
+const GstStructure* gst_plugin_get_cache_data (GstPlugin * plugin);
+void gst_plugin_set_cache_data (GstPlugin * plugin, GstStructure *cache_data);
+
+GModule * gst_plugin_get_module (GstPlugin *plugin);
+gboolean gst_plugin_is_loaded (GstPlugin *plugin);
+
+gboolean gst_plugin_name_filter (GstPlugin *plugin, const gchar *name);
+
+GstPlugin * gst_plugin_load_file (const gchar *filename, GError** error);
+
+GstPlugin * gst_plugin_load (GstPlugin *plugin);
+GstPlugin * gst_plugin_load_by_name (const gchar *name);
+
+void gst_plugin_add_dependency (GstPlugin * plugin,
+ const gchar ** env_vars,
+ const gchar ** paths,
+ const gchar ** names,
+ GstPluginDependencyFlags flags);
+
+void gst_plugin_add_dependency_simple (GstPlugin * plugin,
+ const gchar * env_vars,
+ const gchar * paths,
+ const gchar * names,
+ GstPluginDependencyFlags flags);
+
+void gst_plugin_list_free (GList *list);
+
+
+# 34 "/usr/include/gstreamer-0.10/gst/gstelementfactory.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstpluginfeature.h" 1
+# 30 "/usr/include/gstreamer-0.10/gst/gstpluginfeature.h"
+
+# 48 "/usr/include/gstreamer-0.10/gst/gstpluginfeature.h"
+typedef struct _GstPluginFeature GstPluginFeature;
+typedef struct _GstPluginFeatureClass GstPluginFeatureClass;
+# 66 "/usr/include/gstreamer-0.10/gst/gstpluginfeature.h"
+typedef enum {
+ GST_RANK_NONE = 0,
+ GST_RANK_MARGINAL = 64,
+ GST_RANK_SECONDARY = 128,
+ GST_RANK_PRIMARY = 256
+} GstRank;
+
+
+
+
+
+
+struct _GstPluginFeature {
+ GstObject object;
+
+
+ gboolean loaded;
+ gchar *name;
+ guint rank;
+
+ const gchar *plugin_name;
+
+
+ gpointer _gst_reserved[4];
+};
+
+struct _GstPluginFeatureClass {
+ GstObjectClass parent_class;
+
+
+ gpointer _gst_reserved[4];
+};
+# 106 "/usr/include/gstreamer-0.10/gst/gstpluginfeature.h"
+typedef struct {
+ const gchar *name;
+ GType type;
+} GstTypeNameData;
+# 122 "/usr/include/gstreamer-0.10/gst/gstpluginfeature.h"
+typedef gboolean (*GstPluginFeatureFilter) (GstPluginFeature *feature,
+ gpointer user_data);
+
+
+GType gst_plugin_feature_get_type (void);
+
+GstPluginFeature *
+ gst_plugin_feature_load (GstPluginFeature *feature);
+
+gboolean gst_plugin_feature_type_name_filter (GstPluginFeature *feature,
+ GstTypeNameData *data);
+
+void gst_plugin_feature_set_rank (GstPluginFeature *feature, guint rank);
+void gst_plugin_feature_set_name (GstPluginFeature *feature, const gchar *name);
+guint gst_plugin_feature_get_rank (GstPluginFeature *feature);
+const gchar *gst_plugin_feature_get_name (GstPluginFeature *feature);
+
+void gst_plugin_feature_list_free (GList *list);
+
+gboolean gst_plugin_feature_check_version (GstPluginFeature *feature,
+ guint min_major,
+ guint min_minor,
+ guint min_micro);
+
+
+# 35 "/usr/include/gstreamer-0.10/gst/gstelementfactory.h" 2
+
+
+
+
+typedef struct _GstElementDetails GstElementDetails;
+# 60 "/usr/include/gstreamer-0.10/gst/gstelementfactory.h"
+struct _GstElementDetails
+{
+
+ gchar *longname;
+ gchar *klass;
+ gchar *description;
+ gchar *author;
+
+
+ gpointer _gst_reserved[4];
+};
+# 111 "/usr/include/gstreamer-0.10/gst/gstelementfactory.h"
+struct _GstElementFactory {
+ GstPluginFeature parent;
+
+ GType type;
+
+ GstElementDetails details;
+
+ GList * staticpadtemplates;
+ guint numpadtemplates;
+
+
+ guint uri_type;
+ gchar ** uri_protocols;
+
+ GList * interfaces;
+
+ gpointer _gst_reserved[4];
+};
+
+struct _GstElementFactoryClass {
+ GstPluginFeatureClass parent_class;
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_element_factory_get_type (void);
+
+GstElementFactory * gst_element_factory_find (const gchar *name);
+
+GType gst_element_factory_get_element_type (GstElementFactory *factory);
+const gchar * gst_element_factory_get_longname (GstElementFactory *factory);
+const gchar * gst_element_factory_get_klass (GstElementFactory *factory);
+const gchar * gst_element_factory_get_description (GstElementFactory *factory);
+const gchar * gst_element_factory_get_author (GstElementFactory *factory);
+guint gst_element_factory_get_num_pad_templates (GstElementFactory *factory);
+const GList * gst_element_factory_get_static_pad_templates (GstElementFactory *factory);
+gint gst_element_factory_get_uri_type (GstElementFactory *factory);
+gchar ** gst_element_factory_get_uri_protocols (GstElementFactory *factory);
+gboolean gst_element_factory_has_interface (GstElementFactory *factory,
+ const gchar *interfacename);
+
+GstElement* gst_element_factory_create (GstElementFactory *factory,
+ const gchar *name);
+GstElement* gst_element_factory_make (const gchar *factoryname, const gchar *name);
+
+
+void __gst_element_factory_add_static_pad_template (GstElementFactory *elementfactory,
+ GstStaticPadTemplate *templ);
+void __gst_element_factory_add_interface (GstElementFactory *elementfactory,
+ const gchar *interfacename);
+gboolean gst_element_register (GstPlugin *plugin, const gchar *name,
+ guint rank, GType type);
+
+
+
+
+# 57 "/usr/include/gstreamer-0.10/gst/gstelement.h" 2
+
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstindex.h" 1
+# 31 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+
+# 42 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+typedef struct _GstIndexEntry GstIndexEntry;
+typedef struct _GstIndexGroup GstIndexGroup;
+typedef struct _GstIndex GstIndex;
+typedef struct _GstIndexClass GstIndexClass;
+# 55 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+typedef enum {
+ GST_INDEX_UNKNOWN,
+ GST_INDEX_CERTAIN,
+ GST_INDEX_FUZZY
+} GstIndexCertainty;
+# 70 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+typedef enum {
+ GST_INDEX_ENTRY_ID,
+ GST_INDEX_ENTRY_ASSOCIATION,
+ GST_INDEX_ENTRY_OBJECT,
+ GST_INDEX_ENTRY_FORMAT
+} GstIndexEntryType;
+# 85 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+typedef enum {
+ GST_INDEX_LOOKUP_EXACT,
+ GST_INDEX_LOOKUP_BEFORE,
+ GST_INDEX_LOOKUP_AFTER
+} GstIndexLookupMethod;
+# 125 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+typedef struct _GstIndexAssociation GstIndexAssociation;
+# 134 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+struct _GstIndexAssociation {
+ GstFormat format;
+ gint64 value;
+};
+# 150 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+typedef enum {
+ GST_ASSOCIATION_FLAG_NONE = 0,
+ GST_ASSOCIATION_FLAG_KEY_UNIT = (1 << 0),
+ GST_ASSOCIATION_FLAG_DELTA_UNIT = (1 << 1),
+
+
+ GST_ASSOCIATION_FLAG_LAST = (1 << 8)
+} GstAssocFlags;
+# 195 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+struct _GstIndexEntry {
+
+ GstIndexEntryType type;
+ gint id;
+
+ union {
+ struct {
+ gchar *description;
+ } id;
+ struct {
+ gint nassocs;
+ GstIndexAssociation
+ *assocs;
+ GstAssocFlags flags;
+ } assoc;
+ struct {
+ gchar *key;
+ GType type;
+ gpointer object;
+ } object;
+ struct {
+ GstFormat format;
+ const gchar *key;
+ } format;
+ } data;
+};
+
+
+
+
+
+
+
+struct _GstIndexGroup {
+
+
+ gint groupnum;
+
+
+ GList *entries;
+
+
+ GstIndexCertainty certainty;
+
+
+ gint peergroup;
+};
+# 255 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+typedef gboolean (*GstIndexFilter) (GstIndex *index,
+ GstIndexEntry *entry,
+ gpointer user_data);
+# 266 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+typedef enum {
+ GST_INDEX_RESOLVER_CUSTOM,
+ GST_INDEX_RESOLVER_GTYPE,
+ GST_INDEX_RESOLVER_PATH
+} GstIndexResolverMethod;
+# 283 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+typedef gboolean (*GstIndexResolver) (GstIndex *index,
+ GstObject *writer,
+ gchar **writer_string,
+ gpointer user_data);
+# 296 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+typedef enum {
+ GST_INDEX_WRITABLE = (GST_OBJECT_FLAG_LAST << 0),
+ GST_INDEX_READABLE = (GST_OBJECT_FLAG_LAST << 1),
+
+ GST_INDEX_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 8)
+} GstIndexFlags;
+# 324 "/usr/include/gstreamer-0.10/gst/gstindex.h"
+struct _GstIndex {
+ GstObject object;
+
+
+ GList *groups;
+ GstIndexGroup *curgroup;
+ gint maxgroup;
+
+ GstIndexResolverMethod method;
+ GstIndexResolver resolver;
+ gpointer resolver_user_data;
+
+ GstIndexFilter filter;
+ gpointer filter_user_data;
+ GDestroyNotify filter_user_data_destroy;
+
+ GHashTable *writers;
+ gint last_id;
+
+
+ GDestroyNotify resolver_user_data_destroy;
+
+
+ gpointer _gst_reserved[4 - 1];
+};
+
+struct _GstIndexClass {
+ GstObjectClass parent_class;
+
+
+ gboolean (*get_writer_id) (GstIndex *index, gint *writer_id, gchar *writer_string);
+
+ void (*commit) (GstIndex *index, gint id);
+
+
+ void (*add_entry) (GstIndex *index, GstIndexEntry *entry);
+
+ GstIndexEntry* (*get_assoc_entry) (GstIndex *index, gint id,
+ GstIndexLookupMethod method, GstAssocFlags flags,
+ GstFormat format, gint64 value,
+ GCompareDataFunc func,
+ gpointer user_data);
+
+ void (*entry_added) (GstIndex *index, GstIndexEntry *entry);
+
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_index_get_type (void);
+GstIndex* gst_index_new (void);
+void gst_index_commit (GstIndex *index, gint id);
+
+gint gst_index_get_group (GstIndex *index);
+gint gst_index_new_group (GstIndex *index);
+gboolean gst_index_set_group (GstIndex *index, gint groupnum);
+
+void gst_index_set_certainty (GstIndex *index,
+ GstIndexCertainty certainty);
+GstIndexCertainty gst_index_get_certainty (GstIndex *index);
+
+void gst_index_set_filter (GstIndex *index,
+ GstIndexFilter filter, gpointer user_data);
+void gst_index_set_filter_full (GstIndex *index,
+ GstIndexFilter filter, gpointer user_data,
+ GDestroyNotify user_data_destroy);
+void gst_index_set_resolver (GstIndex *index,
+ GstIndexResolver resolver, gpointer user_data);
+void gst_index_set_resolver_full (GstIndex *index, GstIndexResolver resolver,
+ gpointer user_data,
+ GDestroyNotify user_data_destroy);
+
+gboolean gst_index_get_writer_id (GstIndex *index, GstObject *writer, gint *id);
+
+GstIndexEntry* gst_index_add_format (GstIndex *index, gint id, GstFormat format);
+GstIndexEntry* gst_index_add_associationv (GstIndex * index, gint id, GstAssocFlags flags,
+ gint n, const GstIndexAssociation * list);
+GstIndexEntry* gst_index_add_association (GstIndex *index, gint id, GstAssocFlags flags,
+ GstFormat format, gint64 value, ...);
+GstIndexEntry* gst_index_add_object (GstIndex *index, gint id, gchar *key,
+ GType type, gpointer object);
+GstIndexEntry* gst_index_add_id (GstIndex *index, gint id,
+ gchar *description);
+
+GstIndexEntry* gst_index_get_assoc_entry (GstIndex *index, gint id,
+ GstIndexLookupMethod method, GstAssocFlags flags,
+ GstFormat format, gint64 value);
+GstIndexEntry* gst_index_get_assoc_entry_full (GstIndex *index, gint id,
+ GstIndexLookupMethod method, GstAssocFlags flags,
+ GstFormat format, gint64 value,
+ GCompareDataFunc func,
+ gpointer user_data);
+
+
+GType gst_index_entry_get_type (void);
+GstIndexEntry * gst_index_entry_copy (GstIndexEntry *entry);
+void gst_index_entry_free (GstIndexEntry *entry);
+gboolean gst_index_entry_assoc_map (GstIndexEntry *entry,
+ GstFormat format, gint64 *value);
+
+
+# 60 "/usr/include/gstreamer-0.10/gst/gstelement.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstindexfactory.h" 1
+# 31 "/usr/include/gstreamer-0.10/gst/gstindexfactory.h"
+
+# 40 "/usr/include/gstreamer-0.10/gst/gstindexfactory.h"
+typedef struct _GstIndexFactory GstIndexFactory;
+typedef struct _GstIndexFactoryClass GstIndexFactoryClass;
+
+
+
+
+
+
+struct _GstIndexFactory {
+ GstPluginFeature feature;
+
+ gchar *longdesc;
+ GType type;
+
+ gpointer _gst_reserved[4];
+};
+
+struct _GstIndexFactoryClass {
+ GstPluginFeatureClass parent;
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_index_factory_get_type (void);
+
+GstIndexFactory* gst_index_factory_new (const gchar *name,
+ const gchar *longdesc, GType type);
+void gst_index_factory_destroy (GstIndexFactory *factory);
+
+GstIndexFactory* gst_index_factory_find (const gchar *name);
+
+GstIndex* gst_index_factory_create (GstIndexFactory *factory);
+GstIndex* gst_index_factory_make (const gchar *name);
+
+
+# 61 "/usr/include/gstreamer-0.10/gst/gstelement.h" 2
+
+
+
+
+
+# 87 "/usr/include/gstreamer-0.10/gst/gstelement.h"
+typedef enum {
+ GST_STATE_CHANGE_FAILURE = 0,
+ GST_STATE_CHANGE_SUCCESS = 1,
+ GST_STATE_CHANGE_ASYNC = 2,
+ GST_STATE_CHANGE_NO_PREROLL = 3
+} GstStateChangeReturn;
+# 186 "/usr/include/gstreamer-0.10/gst/gstelement.h"
+typedef enum
+{
+ GST_STATE_CHANGE_NULL_TO_READY = (GST_STATE_NULL<<3) | GST_STATE_READY,
+ GST_STATE_CHANGE_READY_TO_PAUSED = (GST_STATE_READY<<3) | GST_STATE_PAUSED,
+ GST_STATE_CHANGE_PAUSED_TO_PLAYING = (GST_STATE_PAUSED<<3) | GST_STATE_PLAYING,
+ GST_STATE_CHANGE_PLAYING_TO_PAUSED = (GST_STATE_PLAYING<<3) | GST_STATE_PAUSED,
+ GST_STATE_CHANGE_PAUSED_TO_READY = (GST_STATE_PAUSED<<3) | GST_STATE_READY,
+ GST_STATE_CHANGE_READY_TO_NULL = (GST_STATE_READY<<3) | GST_STATE_NULL
+} GstStateChange;
+# 206 "/usr/include/gstreamer-0.10/gst/gstelement.h"
+typedef enum
+{
+ GST_ELEMENT_LOCKED_STATE = (GST_OBJECT_FLAG_LAST << 0),
+ GST_ELEMENT_IS_SINK = (GST_OBJECT_FLAG_LAST << 1),
+ GST_ELEMENT_UNPARENTING = (GST_OBJECT_FLAG_LAST << 2),
+
+ GST_ELEMENT_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 16)
+} GstElementFlags;
+# 419 "/usr/include/gstreamer-0.10/gst/gstelement.h"
+struct _GstElement
+{
+ GstObject object;
+
+
+ GStaticRecMutex *state_lock;
+
+
+ GCond *state_cond;
+ guint32 state_cookie;
+ GstState current_state;
+ GstState next_state;
+ GstState pending_state;
+ GstStateChangeReturn last_return;
+
+ GstBus *bus;
+
+
+ GstClock *clock;
+ GstClockTimeDiff base_time;
+
+
+
+ guint16 numpads;
+ GList *pads;
+ guint16 numsrcpads;
+ GList *srcpads;
+ guint16 numsinkpads;
+ GList *sinkpads;
+ guint32 pads_cookie;
+
+
+ union {
+ struct {
+
+ GstState target_state;
+
+ GstClockTime start_time;
+ } ABI;
+
+ gpointer _gst_reserved[4 + 0];
+ } abidata;
+};
+# 488 "/usr/include/gstreamer-0.10/gst/gstelement.h"
+struct _GstElementClass
+{
+ GstObjectClass parent_class;
+
+
+
+ GstElementDetails details;
+
+
+ GstElementFactory *elementfactory;
+
+
+ GList *padtemplates;
+ gint numpadtemplates;
+ guint32 pad_templ_cookie;
+
+
+
+ void (*pad_added) (GstElement *element, GstPad *pad);
+ void (*pad_removed) (GstElement *element, GstPad *pad);
+ void (*no_more_pads) (GstElement *element);
+
+
+
+
+
+ GstPad* (*request_new_pad) (GstElement *element, GstPadTemplate *templ, const gchar* name);
+ void (*release_pad) (GstElement *element, GstPad *pad);
+
+
+ GstStateChangeReturn (*get_state) (GstElement * element, GstState * state,
+ GstState * pending, GstClockTime timeout);
+ GstStateChangeReturn (*set_state) (GstElement *element, GstState state);
+ GstStateChangeReturn (*change_state) (GstElement *element, GstStateChange transition);
+
+
+ void (*set_bus) (GstElement * element, GstBus * bus);
+
+
+ GstClock* (*provide_clock) (GstElement *element);
+ gboolean (*set_clock) (GstElement *element, GstClock *clock);
+
+
+ GstIndex* (*get_index) (GstElement *element);
+ void (*set_index) (GstElement *element, GstIndex *index);
+
+
+ gboolean (*send_event) (GstElement *element, GstEvent *event);
+
+ const GstQueryType* (*get_query_types) (GstElement *element);
+ gboolean (*query) (GstElement *element, GstQuery *query);
+
+
+ gpointer _gst_reserved[4];
+};
+
+
+void gst_element_class_add_pad_template (GstElementClass *klass, GstPadTemplate *templ);
+GstPadTemplate* gst_element_class_get_pad_template (GstElementClass *element_class, const gchar *name);
+GList* gst_element_class_get_pad_template_list (GstElementClass *element_class);
+void gst_element_class_set_details (GstElementClass *klass, const GstElementDetails *details);
+void gst_element_class_set_details_simple (GstElementClass *klass,
+ const gchar *longname,
+ const gchar *classification,
+ const gchar *description,
+ const gchar *author);
+
+
+GType gst_element_get_type (void);
+# 595 "/usr/include/gstreamer-0.10/gst/gstelement.h"
+gboolean gst_element_requires_clock (GstElement *element);
+gboolean gst_element_provides_clock (GstElement *element);
+GstClock* gst_element_provide_clock (GstElement *element);
+GstClock* gst_element_get_clock (GstElement *element);
+gboolean gst_element_set_clock (GstElement *element, GstClock *clock);
+void gst_element_set_base_time (GstElement *element, GstClockTime time);
+GstClockTime gst_element_get_base_time (GstElement *element);
+void gst_element_set_start_time (GstElement *element, GstClockTime time);
+GstClockTime gst_element_get_start_time (GstElement *element);
+
+
+gboolean gst_element_is_indexable (GstElement *element);
+void gst_element_set_index (GstElement *element, GstIndex *index);
+GstIndex* gst_element_get_index (GstElement *element);
+
+
+void gst_element_set_bus (GstElement * element, GstBus * bus);
+GstBus * gst_element_get_bus (GstElement * element);
+
+
+gboolean gst_element_add_pad (GstElement *element, GstPad *pad);
+gboolean gst_element_remove_pad (GstElement *element, GstPad *pad);
+void gst_element_no_more_pads (GstElement *element);
+
+
+GstPad* gst_element_get_pad (GstElement *element, const gchar *name);
+
+GstPad* gst_element_get_static_pad (GstElement *element, const gchar *name);
+GstPad* gst_element_get_request_pad (GstElement *element, const gchar *name);
+void gst_element_release_request_pad (GstElement *element, GstPad *pad);
+
+GstIterator * gst_element_iterate_pads (GstElement * element);
+GstIterator * gst_element_iterate_src_pads (GstElement * element);
+GstIterator * gst_element_iterate_sink_pads (GstElement * element);
+
+
+gboolean gst_element_send_event (GstElement *element, GstEvent *event);
+gboolean gst_element_seek (GstElement *element, gdouble rate,
+ GstFormat format, GstSeekFlags flags,
+ GstSeekType cur_type, gint64 cur,
+ GstSeekType stop_type, gint64 stop);
+const GstQueryType*
+ gst_element_get_query_types (GstElement *element);
+gboolean gst_element_query (GstElement *element, GstQuery *query);
+
+
+gboolean gst_element_post_message (GstElement * element, GstMessage * message);
+
+
+
+
+gchar * _gst_element_error_printf (const gchar *format, ...);
+
+
+
+void gst_element_message_full (GstElement * element, GstMessageType type,
+ GQuark domain, gint code, gchar * text,
+ gchar * debug, const gchar * file,
+ const gchar * function, gint line);
+
+
+gboolean gst_element_is_locked_state (GstElement *element);
+gboolean gst_element_set_locked_state (GstElement *element, gboolean locked_state);
+gboolean gst_element_sync_state_with_parent (GstElement *element);
+
+GstStateChangeReturn gst_element_get_state (GstElement * element,
+ GstState * state,
+ GstState * pending,
+ GstClockTime timeout);
+GstStateChangeReturn gst_element_set_state (GstElement *element, GstState state);
+
+void gst_element_abort_state (GstElement * element);
+GstStateChangeReturn gst_element_change_state (GstElement * element,
+ GstStateChange transition);
+GstStateChangeReturn gst_element_continue_state (GstElement * element,
+ GstStateChangeReturn ret);
+void gst_element_lost_state (GstElement * element);
+void gst_element_lost_state_full (GstElement * element, gboolean new_base_time);
+
+
+GstElementFactory* gst_element_get_factory (GstElement *element);
+
+
+# 28 "/usr/include/gstreamer-0.10/gst/gstbin.h" 2
+
+
+
+
+# 50 "/usr/include/gstreamer-0.10/gst/gstbin.h"
+typedef enum {
+
+ GST_BIN_FLAG_LAST = (GST_ELEMENT_FLAG_LAST << 5)
+} GstBinFlags;
+
+typedef struct _GstBin GstBin;
+typedef struct _GstBinClass GstBinClass;
+typedef struct _GstBinPrivate GstBinPrivate;
+# 97 "/usr/include/gstreamer-0.10/gst/gstbin.h"
+struct _GstBin {
+ GstElement element;
+
+
+
+
+ gint numchildren;
+ GList *children;
+ guint32 children_cookie;
+
+ GstBus *child_bus;
+ GList *messages;
+
+ gboolean polling;
+ gboolean state_dirty;
+
+ gboolean clock_dirty;
+ GstClock *provided_clock;
+ GstElement *clock_provider;
+
+
+ GstBinPrivate *priv;
+
+ gpointer _gst_reserved[4 - 1];
+};
+# 137 "/usr/include/gstreamer-0.10/gst/gstbin.h"
+struct _GstBinClass {
+ GstElementClass parent_class;
+
+
+ GThreadPool *pool;
+
+
+ void (*element_added) (GstBin *bin, GstElement *child);
+ void (*element_removed) (GstBin *bin, GstElement *child);
+
+
+
+ gboolean (*add_element) (GstBin *bin, GstElement *element);
+ gboolean (*remove_element) (GstBin *bin, GstElement *element);
+
+ void (*handle_message) (GstBin *bin, GstMessage *message);
+
+
+
+ gboolean (*do_latency) (GstBin *bin);
+
+
+ gpointer _gst_reserved[4 -1];
+};
+
+GType gst_bin_get_type (void);
+GstElement* gst_bin_new (const gchar *name);
+
+
+gboolean gst_bin_add (GstBin *bin, GstElement *element);
+gboolean gst_bin_remove (GstBin *bin, GstElement *element);
+
+
+GstElement* gst_bin_get_by_name (GstBin *bin, const gchar *name);
+GstElement* gst_bin_get_by_name_recurse_up (GstBin *bin, const gchar *name);
+GstElement* gst_bin_get_by_interface (GstBin *bin, GType iface);
+
+
+GstIterator* gst_bin_iterate_elements (GstBin *bin);
+GstIterator* gst_bin_iterate_sorted (GstBin *bin);
+GstIterator* gst_bin_iterate_recurse (GstBin *bin);
+
+GstIterator* gst_bin_iterate_sinks (GstBin *bin);
+GstIterator* gst_bin_iterate_sources (GstBin *bin);
+GstIterator* gst_bin_iterate_all_by_interface (GstBin *bin, GType iface);
+
+
+gboolean gst_bin_recalculate_latency (GstBin * bin);
+
+
+
+# 35 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstchildproxy.h" 1
+# 26 "/usr/include/gstreamer-0.10/gst/gstchildproxy.h"
+# 1 "/usr/include/gstreamer-0.10/gst/gst.h" 1
+# 27 "/usr/include/gstreamer-0.10/gst/gstchildproxy.h" 2
+
+
+# 41 "/usr/include/gstreamer-0.10/gst/gstchildproxy.h"
+typedef struct _GstChildProxy GstChildProxy;
+typedef struct _GstChildProxyInterface GstChildProxyInterface;
+# 52 "/usr/include/gstreamer-0.10/gst/gstchildproxy.h"
+struct _GstChildProxyInterface
+{
+ GTypeInterface parent;
+
+
+ GstObject *(*get_child_by_index) (GstChildProxy * parent, guint index);
+ guint (*get_children_count) (GstChildProxy * parent);
+
+
+ void (*child_added) (GstChildProxy * parent, GstObject * child);
+ void (*child_removed) (GstChildProxy * parent, GstObject * child);
+
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_child_proxy_get_type (void);
+
+GstObject *gst_child_proxy_get_child_by_name (GstChildProxy * parent, const gchar * name);
+GstObject *gst_child_proxy_get_child_by_index (GstChildProxy * parent, guint index);
+guint gst_child_proxy_get_children_count (GstChildProxy * parent);
+
+gboolean gst_child_proxy_lookup (GstObject *object, const gchar *name,
+ GstObject **target, GParamSpec **pspec);
+void gst_child_proxy_get_property (GstObject * object, const gchar *name, GValue *value);
+void gst_child_proxy_get_valist (GstObject * object,
+ const gchar * first_property_name, va_list var_args);
+void gst_child_proxy_get (GstObject * object, const gchar * first_property_name,
+ ...) __attribute__((__sentinel__));
+void gst_child_proxy_set_property (GstObject * object, const gchar *name, const GValue *value);
+void gst_child_proxy_set_valist (GstObject* object,
+ const gchar * first_property_name, va_list var_args);
+void gst_child_proxy_set (GstObject * object, const gchar * first_property_name,
+ ...) __attribute__((__sentinel__));
+void gst_child_proxy_child_added (GstObject * object, GstObject * child);
+void gst_child_proxy_child_removed (GstObject * object, GstObject * child);
+
+
+# 39 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstdebugutils.h" 1
+# 30 "/usr/include/gstreamer-0.10/gst/gstdebugutils.h"
+
+# 45 "/usr/include/gstreamer-0.10/gst/gstdebugutils.h"
+typedef enum {
+ GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE = (1<<0),
+ GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS = (1<<1),
+ GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS = (1<<2),
+ GST_DEBUG_GRAPH_SHOW_STATES = (1<<3),
+ GST_DEBUG_GRAPH_SHOW_ALL = ((1<<4)-1)
+} GstDebugGraphDetails;
+
+
+
+
+
+
+void _gst_debug_bin_to_dot_file (GstBin *bin, GstDebugGraphDetails details, const gchar *file_name);
+void _gst_debug_bin_to_dot_file_with_ts (GstBin *bin, GstDebugGraphDetails details, const gchar *file_name);
+# 106 "/usr/include/gstreamer-0.10/gst/gstdebugutils.h"
+
+# 41 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gsterror.h" 1
+# 25 "/usr/include/gstreamer-0.10/gst/gsterror.h"
+# 1 "/usr/include/errno.h" 1 3 4
+# 26 "/usr/include/gstreamer-0.10/gst/gsterror.h" 2
+
+
+# 63 "/usr/include/gstreamer-0.10/gst/gsterror.h"
+typedef enum
+{
+ GST_CORE_ERROR_FAILED = 1,
+ GST_CORE_ERROR_TOO_LAZY,
+ GST_CORE_ERROR_NOT_IMPLEMENTED,
+ GST_CORE_ERROR_STATE_CHANGE,
+ GST_CORE_ERROR_PAD,
+ GST_CORE_ERROR_THREAD,
+ GST_CORE_ERROR_NEGOTIATION,
+ GST_CORE_ERROR_EVENT,
+ GST_CORE_ERROR_SEEK,
+ GST_CORE_ERROR_CAPS,
+ GST_CORE_ERROR_TAG,
+ GST_CORE_ERROR_MISSING_PLUGIN,
+ GST_CORE_ERROR_CLOCK,
+ GST_CORE_ERROR_DISABLED,
+ GST_CORE_ERROR_NUM_ERRORS
+} GstCoreError;
+# 97 "/usr/include/gstreamer-0.10/gst/gsterror.h"
+typedef enum
+{
+ GST_LIBRARY_ERROR_FAILED = 1,
+ GST_LIBRARY_ERROR_TOO_LAZY,
+ GST_LIBRARY_ERROR_INIT,
+ GST_LIBRARY_ERROR_SHUTDOWN,
+ GST_LIBRARY_ERROR_SETTINGS,
+ GST_LIBRARY_ERROR_ENCODE,
+ GST_LIBRARY_ERROR_NUM_ERRORS
+} GstLibraryError;
+# 133 "/usr/include/gstreamer-0.10/gst/gsterror.h"
+typedef enum
+{
+ GST_RESOURCE_ERROR_FAILED = 1,
+ GST_RESOURCE_ERROR_TOO_LAZY,
+ GST_RESOURCE_ERROR_NOT_FOUND,
+ GST_RESOURCE_ERROR_BUSY,
+ GST_RESOURCE_ERROR_OPEN_READ,
+ GST_RESOURCE_ERROR_OPEN_WRITE,
+ GST_RESOURCE_ERROR_OPEN_READ_WRITE,
+ GST_RESOURCE_ERROR_CLOSE,
+ GST_RESOURCE_ERROR_READ,
+ GST_RESOURCE_ERROR_WRITE,
+ GST_RESOURCE_ERROR_SEEK,
+ GST_RESOURCE_ERROR_SYNC,
+ GST_RESOURCE_ERROR_SETTINGS,
+ GST_RESOURCE_ERROR_NO_SPACE_LEFT,
+ GST_RESOURCE_ERROR_NUM_ERRORS
+} GstResourceError;
+# 182 "/usr/include/gstreamer-0.10/gst/gsterror.h"
+typedef enum
+{
+ GST_STREAM_ERROR_FAILED = 1,
+ GST_STREAM_ERROR_TOO_LAZY,
+ GST_STREAM_ERROR_NOT_IMPLEMENTED,
+ GST_STREAM_ERROR_TYPE_NOT_FOUND,
+ GST_STREAM_ERROR_WRONG_TYPE,
+ GST_STREAM_ERROR_CODEC_NOT_FOUND,
+ GST_STREAM_ERROR_DECODE,
+ GST_STREAM_ERROR_ENCODE,
+ GST_STREAM_ERROR_DEMUX,
+ GST_STREAM_ERROR_MUX,
+ GST_STREAM_ERROR_FORMAT,
+ GST_STREAM_ERROR_DECRYPT,
+ GST_STREAM_ERROR_DECRYPT_NOKEY,
+ GST_STREAM_ERROR_NUM_ERRORS
+} GstStreamError;
+# 243 "/usr/include/gstreamer-0.10/gst/gsterror.h"
+GType gst_g_error_get_type (void);
+gchar *gst_error_get_message (GQuark domain, gint code);
+GQuark gst_stream_error_quark (void);
+GQuark gst_core_error_quark (void);
+GQuark gst_resource_error_quark (void);
+GQuark gst_library_error_quark (void);
+
+
+# 43 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstghostpad.h" 1
+# 32 "/usr/include/gstreamer-0.10/gst/gstghostpad.h"
+
+
+
+
+
+
+
+
+typedef struct _GstProxyPad GstProxyPad;
+typedef struct _GstProxyPadPrivate GstProxyPadPrivate;
+typedef struct _GstProxyPadClass GstProxyPadClass;
+
+struct _GstProxyPad
+{
+ GstPad pad;
+
+
+ GstProxyPadPrivate *priv;
+};
+
+struct _GstProxyPadClass
+{
+ GstPadClass parent_class;
+
+
+ gpointer _gst_reserved[1];
+};
+
+GType gst_proxy_pad_get_type (void);
+# 75 "/usr/include/gstreamer-0.10/gst/gstghostpad.h"
+typedef struct _GstGhostPad GstGhostPad;
+typedef struct _GstGhostPadPrivate GstGhostPadPrivate;
+typedef struct _GstGhostPadClass GstGhostPadClass;
+
+struct _GstGhostPad
+{
+ GstProxyPad pad;
+
+
+ GstGhostPadPrivate *priv;
+};
+
+struct _GstGhostPadClass
+{
+ GstProxyPadClass parent_class;
+
+
+ gpointer _gst_reserved[4];
+};
+
+
+GType gst_ghost_pad_get_type (void);
+
+GstPad* gst_ghost_pad_new (const gchar *name, GstPad *target);
+GstPad* gst_ghost_pad_new_no_target (const gchar *name, GstPadDirection dir);
+
+GstPad* gst_ghost_pad_new_from_template (const gchar *name, GstPad * target, GstPadTemplate * templ);
+GstPad* gst_ghost_pad_new_no_target_from_template (const gchar *name, GstPadTemplate * templ);
+
+GstPad* gst_ghost_pad_get_target (GstGhostPad *gpad);
+gboolean gst_ghost_pad_set_target (GstGhostPad *gpad, GstPad *newtarget);
+
+gboolean gst_ghost_pad_construct (GstGhostPad *gpad);
+
+
+# 45 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstinfo.h" 1
+# 35 "/usr/include/gstreamer-0.10/gst/gstinfo.h"
+
+# 75 "/usr/include/gstreamer-0.10/gst/gstinfo.h"
+typedef enum {
+ GST_LEVEL_NONE = 0,
+ GST_LEVEL_ERROR,
+ GST_LEVEL_WARNING,
+ GST_LEVEL_INFO,
+ GST_LEVEL_DEBUG,
+ GST_LEVEL_LOG,
+ GST_LEVEL_FIXME = 6,
+
+ GST_LEVEL_MEMDUMP = 9,
+
+ GST_LEVEL_COUNT
+} GstDebugLevel;
+# 136 "/usr/include/gstreamer-0.10/gst/gstinfo.h"
+typedef enum {
+
+ GST_DEBUG_FG_BLACK = 0x0000,
+ GST_DEBUG_FG_RED = 0x0001,
+ GST_DEBUG_FG_GREEN = 0x0002,
+ GST_DEBUG_FG_YELLOW = 0x0003,
+ GST_DEBUG_FG_BLUE = 0x0004,
+ GST_DEBUG_FG_MAGENTA = 0x0005,
+ GST_DEBUG_FG_CYAN = 0x0006,
+ GST_DEBUG_FG_WHITE = 0x0007,
+
+ GST_DEBUG_BG_BLACK = 0x0000,
+ GST_DEBUG_BG_RED = 0x0010,
+ GST_DEBUG_BG_GREEN = 0x0020,
+ GST_DEBUG_BG_YELLOW = 0x0030,
+ GST_DEBUG_BG_BLUE = 0x0040,
+ GST_DEBUG_BG_MAGENTA = 0x0050,
+ GST_DEBUG_BG_CYAN = 0x0060,
+ GST_DEBUG_BG_WHITE = 0x0070,
+
+ GST_DEBUG_BOLD = 0x0100,
+ GST_DEBUG_UNDERLINE = 0x0200
+} GstDebugColorFlags;
+
+
+
+
+
+typedef struct _GstDebugCategory GstDebugCategory;
+
+
+
+
+
+
+struct _GstDebugCategory {
+
+ gint threshold;
+ guint color;
+
+ const gchar * name;
+ const gchar * description;
+};
+# 231 "/usr/include/gstreamer-0.10/gst/gstinfo.h"
+typedef struct _GstDebugMessage GstDebugMessage;
+# 248 "/usr/include/gstreamer-0.10/gst/gstinfo.h"
+typedef void (*GstLogFunction) (GstDebugCategory * category,
+ GstDebugLevel level,
+ const gchar * file,
+ const gchar * function,
+ gint line,
+ GObject * object,
+ GstDebugMessage * message,
+ gpointer data);
+
+
+
+
+void _gst_debug_init (void);
+
+
+
+
+
+void gst_debug_log (GstDebugCategory * category,
+ GstDebugLevel level,
+ const gchar * file,
+ const gchar * function,
+ gint line,
+ GObject * object,
+ const gchar * format,
+ ...) __attribute__((__no_instrument_function__));
+# 288 "/usr/include/gstreamer-0.10/gst/gstinfo.h"
+void gst_debug_log_valist (GstDebugCategory * category,
+ GstDebugLevel level,
+ const gchar * file,
+ const gchar * function,
+ gint line,
+ GObject * object,
+ const gchar * format,
+ va_list args) __attribute__((__no_instrument_function__));
+
+const gchar * gst_debug_message_get (GstDebugMessage * message);
+
+void gst_debug_log_default (GstDebugCategory * category,
+ GstDebugLevel level,
+ const gchar * file,
+ const gchar * function,
+ gint line,
+ GObject * object,
+ GstDebugMessage * message,
+ gpointer unused) __attribute__((__no_instrument_function__));
+
+const gchar *
+ gst_debug_level_get_name (GstDebugLevel level);
+
+void gst_debug_add_log_function (GstLogFunction func,
+ gpointer data);
+guint gst_debug_remove_log_function (GstLogFunction func);
+guint gst_debug_remove_log_function_by_data (gpointer data);
+
+void gst_debug_set_active (gboolean active);
+gboolean gst_debug_is_active (void);
+
+void gst_debug_set_colored (gboolean colored);
+gboolean gst_debug_is_colored (void);
+
+void gst_debug_set_default_threshold (GstDebugLevel level);
+GstDebugLevel gst_debug_get_default_threshold (void);
+void gst_debug_set_threshold_for_name (const gchar * name,
+ GstDebugLevel level);
+void gst_debug_unset_threshold_for_name (const gchar * name);
+# 355 "/usr/include/gstreamer-0.10/gst/gstinfo.h"
+GstDebugCategory *_gst_debug_category_new (const gchar * name,
+ guint color,
+ const gchar * description);
+# 398 "/usr/include/gstreamer-0.10/gst/gstinfo.h"
+void gst_debug_category_free (GstDebugCategory * category);
+void gst_debug_category_set_threshold (GstDebugCategory * category,
+ GstDebugLevel level);
+void gst_debug_category_reset_threshold(GstDebugCategory * category);
+GstDebugLevel
+ gst_debug_category_get_threshold (GstDebugCategory * category);
+const gchar *
+ gst_debug_category_get_name (GstDebugCategory * category);
+guint gst_debug_category_get_color (GstDebugCategory * category);
+const gchar *
+ gst_debug_category_get_description (GstDebugCategory * category);
+GSList *
+ gst_debug_get_all_categories (void);
+
+
+GstDebugCategory *_gst_debug_get_category (const gchar *name);
+# 449 "/usr/include/gstreamer-0.10/gst/gstinfo.h"
+gchar * gst_debug_construct_term_color (guint colorinfo);
+gint gst_debug_construct_win_color (guint colorinfo);
+
+
+
+
+
+
+
+extern GstDebugCategory * GST_CAT_DEFAULT;
+
+extern gboolean __gst_debug_enabled;
+
+
+
+extern GstDebugLevel __gst_debug_min;
+# 517 "/usr/include/gstreamer-0.10/gst/gstinfo.h"
+void _gst_debug_dump_mem (GstDebugCategory * cat, const gchar * file,
+ const gchar * func, gint line, GObject * obj, const gchar * msg,
+ const guint8 * data, guint length);
+# 1097 "/usr/include/gstreamer-0.10/gst/gstinfo.h"
+typedef void (* GstDebugFuncPtr) (void);
+void _gst_debug_register_funcptr (GstDebugFuncPtr func,
+ const gchar * ptrname);
+const gchar *
+ _gst_debug_nameof_funcptr (GstDebugFuncPtr func);
+# 1393 "/usr/include/gstreamer-0.10/gst/gstinfo.h"
+void gst_debug_print_stack_trace (void);
+
+
+# 48 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstinterface.h" 1
+# 28 "/usr/include/gstreamer-0.10/gst/gstinterface.h"
+
+# 46 "/usr/include/gstreamer-0.10/gst/gstinterface.h"
+typedef struct _GstImplementsInterface GstImplementsInterface;
+
+typedef struct _GstImplementsInterfaceClass GstImplementsInterfaceClass;
+
+
+
+
+
+struct _GstImplementsInterfaceClass {
+ GTypeInterface parent;
+
+
+ gboolean (* supported) (GstImplementsInterface *iface,
+ GType iface_type);
+
+ gpointer _gst_reserved[4];
+};
+
+
+
+
+
+
+GType gst_implements_interface_get_type (void);
+
+
+gboolean gst_element_implements_interface (GstElement *element,
+ GType iface_type);
+gpointer gst_implements_interface_cast (gpointer from,
+ GType type);
+gboolean gst_implements_interface_check (gpointer from,
+ GType type);
+
+
+# 49 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstmarshal.h" 1
+
+
+
+
+
+
+
+# 25 "/usr/include/gstreamer-0.10/gst/gstmarshal.h"
+extern void gst_marshal_VOID__BOXED_OBJECT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+
+
+
+extern void gst_marshal_VOID__POINTER_OBJECT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+
+
+
+extern void gst_marshal_VOID__OBJECT_OBJECT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void gst_marshal_VOID__OBJECT_PARAM (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void gst_marshal_VOID__OBJECT_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void gst_marshal_VOID__OBJECT_BOXED (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void gst_marshal_VOID__OBJECT_BOXED_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void gst_marshal_VOID__OBJECT_OBJECT_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void gst_marshal_VOID__OBJECT_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void gst_marshal_VOID__INT_INT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void gst_marshal_VOID__INT64 (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void gst_marshal_VOID__UINT_BOXED (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+
+
+
+extern void gst_marshal_BOOLEAN__VOID (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void gst_marshal_BOOLEAN__POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void gst_marshal_POINTER__POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+extern void gst_marshal_BOXED__BOXED (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+
+
+# 51 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+
+
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstparamspecs.h" 1
+# 23 "/usr/include/gstreamer-0.10/gst/gstparamspecs.h"
+# 1 "/usr/include/gstreamer-0.10/gst/gstvalue.h" 1
+# 27 "/usr/include/gstreamer-0.10/gst/gstvalue.h"
+
+# 304 "/usr/include/gstreamer-0.10/gst/gstvalue.h"
+typedef gint (* GstValueCompareFunc) (const GValue *value1,
+ const GValue *value2);
+# 315 "/usr/include/gstreamer-0.10/gst/gstvalue.h"
+typedef gchar * (* GstValueSerializeFunc) (const GValue *value1);
+# 326 "/usr/include/gstreamer-0.10/gst/gstvalue.h"
+typedef gboolean (* GstValueDeserializeFunc) (GValue *dest,
+ const gchar *s);
+# 340 "/usr/include/gstreamer-0.10/gst/gstvalue.h"
+typedef gboolean (* GstValueUnionFunc) (GValue *dest,
+ const GValue *value1,
+ const GValue *value2);
+# 358 "/usr/include/gstreamer-0.10/gst/gstvalue.h"
+typedef gboolean (* GstValueIntersectFunc) (GValue *dest,
+ const GValue *value1,
+ const GValue *value2);
+# 373 "/usr/include/gstreamer-0.10/gst/gstvalue.h"
+typedef gboolean (* GstValueSubtractFunc) (GValue *dest,
+ const GValue *minuend,
+ const GValue *subtrahend);
+
+typedef struct _GstValueTable GstValueTable;
+# 387 "/usr/include/gstreamer-0.10/gst/gstvalue.h"
+struct _GstValueTable {
+ GType type;
+ GstValueCompareFunc compare;
+ GstValueSerializeFunc serialize;
+ GstValueDeserializeFunc deserialize;
+
+
+ void *_gst_reserved [4];
+};
+
+GType gst_int_range_get_type (void);
+GType gst_double_range_get_type (void);
+GType gst_fraction_range_get_type (void);
+GType gst_fourcc_get_type (void);
+GType gst_fraction_get_type (void);
+GType gst_value_list_get_type (void);
+GType gst_value_array_get_type (void);
+
+GType gst_date_get_type (void);
+
+void gst_value_register (const GstValueTable *table);
+void gst_value_init_and_copy (GValue *dest,
+ const GValue *src);
+
+gchar * gst_value_serialize (const GValue *value);
+gboolean gst_value_deserialize (GValue *dest,
+ const gchar *src);
+
+
+void gst_value_list_append_value (GValue *value,
+ const GValue *append_value);
+void gst_value_list_prepend_value (GValue *value,
+ const GValue *prepend_value);
+void gst_value_list_concat (GValue *dest,
+ const GValue *value1,
+ const GValue *value2);
+guint gst_value_list_get_size (const GValue *value);
+const GValue *
+ gst_value_list_get_value (const GValue *value,
+ guint index);
+
+
+void gst_value_array_append_value (GValue *value,
+ const GValue *append_value);
+void gst_value_array_prepend_value (GValue *value,
+ const GValue *prepend_value);
+guint gst_value_array_get_size (const GValue *value);
+const GValue *
+ gst_value_array_get_value (const GValue *value,
+ guint index);
+
+
+void gst_value_set_fourcc (GValue *value,
+ guint32 fourcc);
+guint32 gst_value_get_fourcc (const GValue *value);
+
+
+void gst_value_set_int_range (GValue *value,
+ gint start,
+ gint end);
+gint gst_value_get_int_range_min (const GValue *value);
+gint gst_value_get_int_range_max (const GValue *value);
+
+
+void gst_value_set_double_range (GValue *value,
+ gdouble start,
+ gdouble end);
+gdouble gst_value_get_double_range_min (const GValue *value);
+gdouble gst_value_get_double_range_max (const GValue *value);
+
+
+const GstCaps *
+ gst_value_get_caps (const GValue *value);
+void gst_value_set_caps (GValue *value,
+ const GstCaps *caps);
+
+
+const GstStructure *
+ gst_value_get_structure (const GValue *value);
+void gst_value_set_structure (GValue *value,
+ const GstStructure *structure);
+
+
+void gst_value_set_fraction (GValue *value,
+ gint numerator,
+ gint denominator);
+gint gst_value_get_fraction_numerator (const GValue *value);
+gint gst_value_get_fraction_denominator(const GValue *value);
+gboolean gst_value_fraction_multiply (GValue *product,
+ const GValue *factor1,
+ const GValue *factor2);
+gboolean gst_value_fraction_subtract (GValue * dest,
+ const GValue * minuend,
+ const GValue * subtrahend);
+
+
+void gst_value_set_fraction_range (GValue *value,
+ const GValue *start,
+ const GValue *end);
+void gst_value_set_fraction_range_full (GValue *value,
+ gint numerator_start,
+ gint denominator_start,
+ gint numerator_end,
+ gint denominator_end);
+const GValue *gst_value_get_fraction_range_min (const GValue *value);
+const GValue *gst_value_get_fraction_range_max (const GValue *value);
+
+
+const GDate *
+ gst_value_get_date (const GValue *value);
+void gst_value_set_date (GValue *value,
+ const GDate *date);
+
+
+gint gst_value_compare (const GValue *value1,
+ const GValue *value2);
+gboolean gst_value_can_compare (const GValue *value1,
+ const GValue *value2);
+
+gboolean gst_value_union (GValue *dest,
+ const GValue *value1,
+ const GValue *value2);
+gboolean gst_value_can_union (const GValue *value1,
+ const GValue *value2);
+void gst_value_register_union_func (GType type1,
+ GType type2,
+ GstValueUnionFunc func);
+
+
+gboolean gst_value_intersect (GValue *dest,
+ const GValue *value1,
+ const GValue *value2);
+gboolean gst_value_can_intersect (const GValue *value1,
+ const GValue *value2);
+void gst_value_register_intersect_func (GType type1,
+ GType type2,
+ GstValueIntersectFunc func);
+
+
+gboolean gst_value_subtract (GValue *dest,
+ const GValue *minuend,
+ const GValue *subtrahend);
+gboolean gst_value_can_subtract (const GValue *minuend,
+ const GValue *subtrahend);
+void gst_value_register_subtract_func (GType minuend_type,
+ GType subtrahend_type,
+ GstValueSubtractFunc func);
+
+
+gboolean gst_value_is_fixed (const GValue *value);
+
+
+# 24 "/usr/include/gstreamer-0.10/gst/gstparamspecs.h" 2
+
+
+# 86 "/usr/include/gstreamer-0.10/gst/gstparamspecs.h"
+GType gst_param_spec_fraction_get_type (void);
+
+
+
+
+typedef struct _GstParamSpecFraction GstParamSpecFraction;
+# 106 "/usr/include/gstreamer-0.10/gst/gstparamspecs.h"
+struct _GstParamSpecFraction {
+ GParamSpec parent_instance;
+
+ gint min_num, min_den;
+ gint max_num, max_den;
+ gint def_num, def_den;
+};
+
+
+
+
+GParamSpec * gst_param_spec_fraction (const gchar * name,
+ const gchar * nick,
+ const gchar * blurb,
+ gint min_num, gint min_denom,
+ gint max_num, gint max_denom,
+ gint default_num, gint default_denom,
+ GParamFlags flags);
+
+
+# 56 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstpipeline.h" 1
+# 29 "/usr/include/gstreamer-0.10/gst/gstpipeline.h"
+
+# 39 "/usr/include/gstreamer-0.10/gst/gstpipeline.h"
+typedef struct _GstPipeline GstPipeline;
+typedef struct _GstPipelineClass GstPipelineClass;
+typedef struct _GstPipelinePrivate GstPipelinePrivate;
+# 50 "/usr/include/gstreamer-0.10/gst/gstpipeline.h"
+typedef enum {
+ GST_PIPELINE_FLAG_FIXED_CLOCK = (GST_BIN_FLAG_LAST << 0),
+
+ GST_PIPELINE_FLAG_LAST = (GST_BIN_FLAG_LAST << 4)
+} GstPipelineFlags;
+# 69 "/usr/include/gstreamer-0.10/gst/gstpipeline.h"
+struct _GstPipeline {
+ GstBin bin;
+
+
+ GstClock *fixed_clock;
+
+ GstClockTime stream_time;
+ GstClockTime delay;
+
+
+ GstPipelinePrivate *priv;
+
+ gpointer _gst_reserved[4 -1];
+};
+
+struct _GstPipelineClass {
+ GstBinClass parent_class;
+
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_pipeline_get_type (void);
+GstElement* gst_pipeline_new (const gchar *name);
+
+GstBus* gst_pipeline_get_bus (GstPipeline *pipeline);
+
+
+void gst_pipeline_set_new_stream_time (GstPipeline *pipeline, GstClockTime time);
+GstClockTime gst_pipeline_get_last_stream_time (GstPipeline *pipeline);
+
+
+void gst_pipeline_use_clock (GstPipeline *pipeline, GstClock *clock);
+gboolean gst_pipeline_set_clock (GstPipeline *pipeline, GstClock *clock);
+GstClock* gst_pipeline_get_clock (GstPipeline *pipeline);
+void gst_pipeline_auto_clock (GstPipeline *pipeline);
+
+void gst_pipeline_set_delay (GstPipeline *pipeline, GstClockTime delay);
+GstClockTime gst_pipeline_get_delay (GstPipeline *pipeline);
+
+void gst_pipeline_set_auto_flush_bus (GstPipeline *pipeline, gboolean auto_flush);
+gboolean gst_pipeline_get_auto_flush_bus (GstPipeline *pipeline);
+
+
+# 57 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstpoll.h" 1
+# 32 "/usr/include/gstreamer-0.10/gst/gstpoll.h"
+
+
+
+
+
+
+
+typedef struct _GstPoll GstPoll;
+
+
+
+
+
+
+
+typedef struct {
+ int fd;
+
+
+ gint idx;
+} GstPollFD;
+# 66 "/usr/include/gstreamer-0.10/gst/gstpoll.h"
+GstPoll* gst_poll_new (gboolean controllable);
+GstPoll* gst_poll_new_timer (void);
+void gst_poll_free (GstPoll *set);
+
+void gst_poll_fd_init (GstPollFD *fd);
+
+gboolean gst_poll_add_fd (GstPoll *set, GstPollFD *fd);
+gboolean gst_poll_remove_fd (GstPoll *set, GstPollFD *fd);
+
+gboolean gst_poll_fd_ctl_write (GstPoll *set, GstPollFD *fd, gboolean active);
+gboolean gst_poll_fd_ctl_read (GstPoll *set, GstPollFD *fd, gboolean active);
+void gst_poll_fd_ignored (GstPoll *set, GstPollFD *fd);
+
+gboolean gst_poll_fd_has_closed (const GstPoll *set, GstPollFD *fd);
+gboolean gst_poll_fd_has_error (const GstPoll *set, GstPollFD *fd);
+gboolean gst_poll_fd_can_read (const GstPoll *set, GstPollFD *fd);
+gboolean gst_poll_fd_can_write (const GstPoll *set, GstPollFD *fd);
+
+gint gst_poll_wait (GstPoll *set, GstClockTime timeout);
+
+gboolean gst_poll_set_controllable (GstPoll *set, gboolean controllable);
+void gst_poll_restart (GstPoll *set);
+void gst_poll_set_flushing (GstPoll *set, gboolean flushing);
+
+gboolean gst_poll_write_control (GstPoll *set);
+gboolean gst_poll_read_control (GstPoll *set);
+
+
+# 59 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstpreset.h" 1
+# 28 "/usr/include/gstreamer-0.10/gst/gstpreset.h"
+
+# 40 "/usr/include/gstreamer-0.10/gst/gstpreset.h"
+typedef struct _GstPreset GstPreset;
+typedef struct _GstPresetInterface GstPresetInterface;
+# 57 "/usr/include/gstreamer-0.10/gst/gstpreset.h"
+struct _GstPresetInterface
+{
+ GTypeInterface parent;
+
+
+ gchar** (*get_preset_names) (GstPreset *preset);
+
+ gchar** (*get_property_names) (GstPreset *preset);
+
+ gboolean (*load_preset) (GstPreset *preset, const gchar *name);
+ gboolean (*save_preset) (GstPreset *preset, const gchar *name);
+ gboolean (*rename_preset) (GstPreset *preset, const gchar *old_name,
+ const gchar *new_name);
+ gboolean (*delete_preset) (GstPreset *preset, const gchar *name);
+
+ gboolean (*set_meta) (GstPreset *preset, const gchar *name,
+ const gchar *tag, const gchar *value);
+ gboolean (*get_meta) (GstPreset *preset, const gchar *name,
+ const gchar *tag, gchar **value);
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_preset_get_type(void);
+
+gchar** gst_preset_get_preset_names (GstPreset *preset);
+
+gchar** gst_preset_get_property_names (GstPreset *preset);
+
+gboolean gst_preset_load_preset (GstPreset *preset, const gchar *name);
+gboolean gst_preset_save_preset (GstPreset *preset, const gchar *name);
+gboolean gst_preset_rename_preset (GstPreset *preset, const gchar *old_name,
+ const gchar *new_name);
+gboolean gst_preset_delete_preset (GstPreset *preset, const gchar *name);
+
+gboolean gst_preset_set_meta (GstPreset *preset, const gchar *name,
+ const gchar *tag, const gchar *value);
+gboolean gst_preset_get_meta (GstPreset *preset, const gchar *name,
+ const gchar *tag, gchar **value);
+
+
+# 60 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstregistry.h" 1
+# 32 "/usr/include/gstreamer-0.10/gst/gstregistry.h"
+
+# 41 "/usr/include/gstreamer-0.10/gst/gstregistry.h"
+typedef struct _GstRegistry GstRegistry;
+typedef struct _GstRegistryClass GstRegistryClass;
+
+
+
+
+
+
+struct _GstRegistry {
+ GstObject object;
+
+
+ GList *plugins;
+ GList *features;
+
+ GList *paths;
+
+
+ int cache_file;
+
+
+ GHashTable *feature_hash;
+
+
+ gpointer _gst_reserved[4 -1];
+};
+
+struct _GstRegistryClass {
+ GstObjectClass parent_class;
+
+
+ void (*plugin_added) (GstRegistry *registry, GstPlugin *plugin);
+ void (*feature_added) (GstRegistry *registry, GstPluginFeature *feature);
+
+
+ gpointer _gst_reserved[4];
+};
+
+
+
+GType gst_registry_get_type (void);
+
+GstRegistry * gst_registry_get_default (void);
+
+gboolean gst_registry_scan_path (GstRegistry *registry, const gchar *path);
+void gst_registry_add_path (GstRegistry * registry, const gchar * path);
+GList* gst_registry_get_path_list (GstRegistry *registry);
+
+gboolean gst_registry_add_plugin (GstRegistry *registry, GstPlugin *plugin);
+void gst_registry_remove_plugin (GstRegistry *registry, GstPlugin *plugin);
+gboolean gst_registry_add_feature (GstRegistry * registry, GstPluginFeature * feature);
+void gst_registry_remove_feature (GstRegistry * registry, GstPluginFeature * feature);
+
+GList* gst_registry_get_plugin_list (GstRegistry *registry);
+GList* gst_registry_plugin_filter (GstRegistry *registry,
+ GstPluginFilter filter,
+ gboolean first,
+ gpointer user_data);
+GList* gst_registry_feature_filter (GstRegistry *registry,
+ GstPluginFeatureFilter filter,
+ gboolean first,
+ gpointer user_data);
+GList * gst_registry_get_feature_list (GstRegistry *registry,
+ GType type);
+GList * gst_registry_get_feature_list_by_plugin (GstRegistry *registry, const gchar *name);
+
+GstPlugin* gst_registry_find_plugin (GstRegistry *registry, const gchar *name);
+GstPluginFeature* gst_registry_find_feature (GstRegistry *registry, const gchar *name, GType type);
+
+GstPlugin * gst_registry_lookup (GstRegistry *registry, const char *filename);
+GstPluginFeature * gst_registry_lookup_feature (GstRegistry *registry, const char *name);
+
+
+gboolean gst_registry_xml_read_cache (GstRegistry * registry, const char *location);
+gboolean gst_registry_xml_write_cache (GstRegistry * registry, const char *location);
+# 203 "/usr/include/gstreamer-0.10/gst/gstregistry.h"
+gboolean gst_default_registry_check_feature_version (const gchar *feature_name,
+ guint min_major,
+ guint min_minor,
+ guint min_micro);
+
+
+# 62 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstsegment.h" 1
+# 29 "/usr/include/gstreamer-0.10/gst/gstsegment.h"
+
+
+
+
+typedef struct _GstSegment GstSegment;
+# 52 "/usr/include/gstreamer-0.10/gst/gstsegment.h"
+struct _GstSegment {
+
+ gdouble rate;
+ gdouble abs_rate;
+ GstFormat format;
+ GstSeekFlags flags;
+ gint64 start;
+ gint64 stop;
+ gint64 time;
+ gint64 accum;
+
+ gint64 last_stop;
+ gint64 duration;
+
+
+ gdouble applied_rate;
+
+
+
+ guint8 _gst_reserved[(sizeof (gpointer) * 4) - sizeof (gdouble)];
+};
+
+GType gst_segment_get_type (void);
+
+GstSegment * gst_segment_new (void);
+GstSegment * gst_segment_copy (GstSegment *segment);
+void gst_segment_free (GstSegment *segment);
+
+void gst_segment_init (GstSegment *segment, GstFormat format);
+
+void gst_segment_set_duration (GstSegment *segment, GstFormat format, gint64 duration);
+void gst_segment_set_last_stop (GstSegment *segment, GstFormat format, gint64 position);
+
+void gst_segment_set_seek (GstSegment *segment, gdouble rate,
+ GstFormat format, GstSeekFlags flags,
+ GstSeekType start_type, gint64 start,
+ GstSeekType stop_type, gint64 stop,
+ gboolean *update);
+
+void gst_segment_set_newsegment (GstSegment *segment, gboolean update, gdouble rate,
+ GstFormat format, gint64 start, gint64 stop, gint64 time);
+void gst_segment_set_newsegment_full (GstSegment *segment, gboolean update, gdouble rate,
+ gdouble applied_rate, GstFormat format, gint64 start,
+ gint64 stop, gint64 time);
+
+gint64 gst_segment_to_stream_time (GstSegment *segment, GstFormat format, gint64 position);
+gint64 gst_segment_to_running_time (GstSegment *segment, GstFormat format, gint64 position);
+gint64 gst_segment_to_position (GstSegment *segment, GstFormat format, gint64 running_time);
+
+gboolean gst_segment_clip (GstSegment *segment, GstFormat format, gint64 start,
+ gint64 stop, gint64 *clip_start, gint64 *clip_stop);
+
+gboolean gst_segment_set_running_time (GstSegment *segment, GstFormat format, gint64 running_time);
+
+
+
+# 63 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstsystemclock.h" 1
+# 30 "/usr/include/gstreamer-0.10/gst/gstsystemclock.h"
+
+# 41 "/usr/include/gstreamer-0.10/gst/gstsystemclock.h"
+typedef struct _GstSystemClock GstSystemClock;
+typedef struct _GstSystemClockClass GstSystemClockClass;
+typedef struct _GstSystemClockPrivate GstSystemClockPrivate;
+# 53 "/usr/include/gstreamer-0.10/gst/gstsystemclock.h"
+typedef enum {
+ GST_CLOCK_TYPE_REALTIME = 0,
+ GST_CLOCK_TYPE_MONOTONIC = 1
+} GstClockType;
+
+
+
+
+
+
+
+struct _GstSystemClock {
+ GstClock clock;
+
+
+ GThread *thread;
+ gboolean stopping;
+
+
+ GstSystemClockPrivate *priv;
+
+ gpointer _gst_reserved[4 - 1];
+};
+
+struct _GstSystemClockClass {
+ GstClockClass parent_class;
+
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_system_clock_get_type (void);
+
+GstClock* gst_system_clock_obtain (void);
+
+
+# 65 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gsttagsetter.h" 1
+# 27 "/usr/include/gstreamer-0.10/gst/gsttagsetter.h"
+
+# 39 "/usr/include/gstreamer-0.10/gst/gsttagsetter.h"
+typedef struct _GstTagSetter GstTagSetter;
+typedef struct _GstTagSetterIFace GstTagSetterIFace;
+# 50 "/usr/include/gstreamer-0.10/gst/gsttagsetter.h"
+struct _GstTagSetterIFace
+{
+ GTypeInterface g_iface;
+
+
+
+
+};
+
+GType gst_tag_setter_get_type (void);
+
+void gst_tag_setter_reset_tags (GstTagSetter * setter);
+
+void gst_tag_setter_merge_tags (GstTagSetter * setter,
+ const GstTagList * list,
+ GstTagMergeMode mode);
+void gst_tag_setter_add_tags (GstTagSetter * setter,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ ...) __attribute__((__sentinel__));
+
+void gst_tag_setter_add_tag_values (GstTagSetter * setter,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ ...) __attribute__((__sentinel__));
+
+void gst_tag_setter_add_tag_valist (GstTagSetter * setter,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ va_list var_args);
+
+void gst_tag_setter_add_tag_valist_values(GstTagSetter * setter,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ va_list var_args);
+
+void gst_tag_setter_add_tag_value (GstTagSetter * setter,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ const GValue * value);
+
+const GstTagList *
+ gst_tag_setter_get_tag_list (GstTagSetter * setter);
+
+void gst_tag_setter_set_tag_merge_mode (GstTagSetter * setter,
+ GstTagMergeMode mode);
+GstTagMergeMode gst_tag_setter_get_tag_merge_mode (GstTagSetter * setter);
+
+
+# 67 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+
+# 1 "/usr/include/gstreamer-0.10/gst/gsttrace.h" 1
+# 29 "/usr/include/gstreamer-0.10/gst/gsttrace.h"
+
+# 38 "/usr/include/gstreamer-0.10/gst/gsttrace.h"
+typedef enum {
+ GST_ALLOC_TRACE_LIVE = (1 << 0),
+ GST_ALLOC_TRACE_MEM_LIVE = (1 << 1)
+} GstAllocTraceFlags;
+
+typedef struct _GstAllocTrace GstAllocTrace;
+# 54 "/usr/include/gstreamer-0.10/gst/gsttrace.h"
+struct _GstAllocTrace {
+ gchar *name;
+ gint flags;
+
+ gint live;
+ GSList *mem_live;
+};
+
+
+
+typedef struct _GstTrace GstTrace;
+typedef struct _GstTraceEntry GstTraceEntry;
+
+
+
+
+
+
+struct _GstTrace {
+
+
+ gchar *filename;
+ int fd;
+
+
+ GstTraceEntry *buf;
+ gint bufsize;
+ gint bufoffset;
+};
+
+struct _GstTraceEntry {
+ gint64 timestamp;
+ guint32 sequence;
+ guint32 data;
+ gchar message[112];
+};
+
+GstTrace* gst_trace_new (gchar *filename, gint size);
+
+void gst_trace_destroy (GstTrace *trace);
+void gst_trace_flush (GstTrace *trace);
+void gst_trace_text_flush (GstTrace *trace);
+# 117 "/usr/include/gstreamer-0.10/gst/gsttrace.h"
+void gst_trace_set_default (GstTrace *trace);
+
+void _gst_trace_add_entry (GstTrace *trace, guint32 seq,
+ guint32 data, gchar *msg);
+
+void gst_trace_read_tsc (gint64 *dst);
+
+
+extern GStaticMutex _gst_trace_mutex;
+
+gboolean gst_alloc_trace_available (void);
+const GList* gst_alloc_trace_list (void);
+GstAllocTrace* _gst_alloc_trace_register (const gchar *name);
+
+int gst_alloc_trace_live_all (void);
+void gst_alloc_trace_print_all (void);
+void gst_alloc_trace_print_live (void);
+void gst_alloc_trace_set_flags_all (GstAllocTraceFlags flags);
+
+GstAllocTrace* gst_alloc_trace_get (const gchar *name);
+void gst_alloc_trace_print (const GstAllocTrace *trace);
+void gst_alloc_trace_set_flags (GstAllocTrace *trace, GstAllocTraceFlags flags);
+# 197 "/usr/include/gstreamer-0.10/gst/gsttrace.h"
+extern gint _gst_trace_on;
+# 250 "/usr/include/gstreamer-0.10/gst/gsttrace.h"
+
+# 70 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gsttypefind.h" 1
+# 30 "/usr/include/gstreamer-0.10/gst/gsttypefind.h"
+
+
+
+
+typedef struct _GstTypeFind GstTypeFind;
+# 43 "/usr/include/gstreamer-0.10/gst/gsttypefind.h"
+typedef void (* GstTypeFindFunction) (GstTypeFind *find, gpointer data);
+# 56 "/usr/include/gstreamer-0.10/gst/gsttypefind.h"
+typedef enum {
+ GST_TYPE_FIND_MINIMUM = 1,
+ GST_TYPE_FIND_POSSIBLE = 50,
+ GST_TYPE_FIND_LIKELY = 80,
+ GST_TYPE_FIND_NEARLY_CERTAIN = 99,
+ GST_TYPE_FIND_MAXIMUM = 100
+} GstTypeFindProbability;
+# 73 "/usr/include/gstreamer-0.10/gst/gsttypefind.h"
+struct _GstTypeFind {
+
+ guint8 * (* peek) (gpointer data,
+ gint64 offset,
+ guint size);
+
+ void (* suggest) (gpointer data,
+ guint probability,
+ const GstCaps * caps);
+
+ gpointer data;
+
+
+ guint64 (* get_length) (gpointer data);
+
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_type_find_get_type (void);
+
+
+guint8 * gst_type_find_peek (GstTypeFind * find,
+ gint64 offset,
+ guint size);
+
+void gst_type_find_suggest (GstTypeFind * find,
+ guint probability,
+ const GstCaps * caps);
+
+void gst_type_find_suggest_simple (GstTypeFind * find,
+ guint probability,
+ const char * media_type,
+ const char * fieldname, ...);
+
+guint64 gst_type_find_get_length (GstTypeFind * find);
+
+
+gboolean gst_type_find_register (GstPlugin * plugin,
+ const gchar * name,
+ guint rank,
+ GstTypeFindFunction func,
+ gchar ** extensions,
+ const GstCaps * possible_caps,
+ gpointer data,
+ GDestroyNotify data_notify);
+
+
+# 71 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gsttypefindfactory.h" 1
+# 30 "/usr/include/gstreamer-0.10/gst/gsttypefindfactory.h"
+
+# 39 "/usr/include/gstreamer-0.10/gst/gsttypefindfactory.h"
+typedef struct _GstTypeFindFactory GstTypeFindFactory;
+typedef struct _GstTypeFindFactoryClass GstTypeFindFactoryClass;
+
+
+
+
+
+
+struct _GstTypeFindFactory {
+ GstPluginFeature feature;
+
+
+ GstTypeFindFunction function;
+ gchar ** extensions;
+ GstCaps * caps;
+
+ gpointer user_data;
+ GDestroyNotify user_data_notify;
+
+ gpointer _gst_reserved[4];
+};
+
+struct _GstTypeFindFactoryClass {
+ GstPluginFeatureClass parent;
+
+
+ gpointer _gst_reserved[4];
+};
+
+
+
+GType gst_type_find_factory_get_type (void);
+
+GList * gst_type_find_factory_get_list (void);
+
+gchar ** gst_type_find_factory_get_extensions (GstTypeFindFactory *factory);
+GstCaps * gst_type_find_factory_get_caps (GstTypeFindFactory *factory);
+void gst_type_find_factory_call_function (GstTypeFindFactory *factory,
+ GstTypeFind *find);
+
+
+# 72 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gsturi.h" 1
+# 31 "/usr/include/gstreamer-0.10/gst/gsturi.h"
+
+# 42 "/usr/include/gstreamer-0.10/gst/gsturi.h"
+typedef enum {
+ GST_URI_UNKNOWN,
+ GST_URI_SINK,
+ GST_URI_SRC
+} GstURIType;
+# 67 "/usr/include/gstreamer-0.10/gst/gsturi.h"
+typedef struct _GstURIHandler GstURIHandler;
+typedef struct _GstURIHandlerInterface GstURIHandlerInterface;
+# 88 "/usr/include/gstreamer-0.10/gst/gsturi.h"
+struct _GstURIHandlerInterface {
+ GTypeInterface parent;
+
+
+
+ void (* new_uri) (GstURIHandler * handler,
+ const gchar * uri);
+# 105 "/usr/include/gstreamer-0.10/gst/gsturi.h"
+ GstURIType (* get_type) (void);
+ gchar ** (* get_protocols) (void);
+
+
+ const gchar *(* get_uri) (GstURIHandler * handler);
+ gboolean (* set_uri) (GstURIHandler * handler,
+ const gchar * uri);
+
+ GstURIType (* get_type_full) (GType type);
+ gchar ** (* get_protocols_full) (GType type);
+
+
+
+
+
+ gpointer _gst_reserved[4 - 2];
+};
+
+
+
+gboolean gst_uri_protocol_is_valid (const gchar * protocol);
+gboolean gst_uri_protocol_is_supported (const GstURIType type,
+ const gchar *protocol);
+gboolean gst_uri_is_valid (const gchar * uri);
+gchar * gst_uri_get_protocol (const gchar * uri);
+gboolean gst_uri_has_protocol (const gchar * uri,
+ const gchar * protocol);
+gchar * gst_uri_get_location (const gchar * uri);
+gchar * gst_uri_construct (const gchar * protocol,
+ const gchar * location);
+
+GstElement * gst_element_make_from_uri (const GstURIType type,
+ const gchar * uri,
+ const gchar * elementname);
+
+
+GType gst_uri_handler_get_type (void);
+
+guint gst_uri_handler_get_uri_type (GstURIHandler * handler);
+gchar ** gst_uri_handler_get_protocols (GstURIHandler * handler);
+const
+gchar * gst_uri_handler_get_uri (GstURIHandler * handler);
+gboolean gst_uri_handler_set_uri (GstURIHandler * handler,
+ const gchar * uri);
+void gst_uri_handler_new_uri (GstURIHandler * handler,
+ const gchar * uri);
+
+
+# 73 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+# 1 "/usr/include/gstreamer-0.10/gst/gstutils.h" 1
+# 30 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+# 1 "/usr/include/gstreamer-0.10/gst/gstparse.h" 1
+# 28 "/usr/include/gstreamer-0.10/gst/gstparse.h"
+
+
+GQuark gst_parse_error_quark (void);
+# 50 "/usr/include/gstreamer-0.10/gst/gstparse.h"
+typedef enum
+{
+ GST_PARSE_ERROR_SYNTAX,
+ GST_PARSE_ERROR_NO_SUCH_ELEMENT,
+ GST_PARSE_ERROR_NO_SUCH_PROPERTY,
+ GST_PARSE_ERROR_LINK,
+ GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY,
+ GST_PARSE_ERROR_EMPTY_BIN,
+ GST_PARSE_ERROR_EMPTY
+} GstParseError;
+# 72 "/usr/include/gstreamer-0.10/gst/gstparse.h"
+typedef enum
+{
+ GST_PARSE_FLAG_NONE = 0,
+ GST_PARSE_FLAG_FATAL_ERRORS = (1 << 0)
+} GstParseFlags;
+# 85 "/usr/include/gstreamer-0.10/gst/gstparse.h"
+typedef struct _GstParseContext GstParseContext;
+
+
+
+GstParseContext * gst_parse_context_new (void);
+
+gchar ** gst_parse_context_get_missing_elements (GstParseContext * context);
+
+void gst_parse_context_free (GstParseContext * context);
+
+
+
+
+GstElement * gst_parse_launch (const gchar * pipeline_description,
+ GError ** error);
+
+GstElement * gst_parse_launchv (const gchar ** argv,
+ GError ** error);
+
+GstElement * gst_parse_launch_full (const gchar * pipeline_description,
+ GstParseContext * context,
+ GstParseFlags flags,
+ GError ** error);
+
+GstElement * gst_parse_launchv_full (const gchar ** argv,
+ GstParseContext * context,
+ GstParseFlags flags,
+ GError ** error);
+
+
+# 31 "/usr/include/gstreamer-0.10/gst/gstutils.h" 2
+
+
+
+void gst_util_set_value_from_string (GValue *value, const gchar *value_str);
+void gst_util_set_object_arg (GObject *object, const gchar *name, const gchar *value);
+void gst_util_dump_mem (const guchar *mem, guint size);
+
+guint64 gst_util_gdouble_to_guint64 (gdouble value) __attribute__((__pure__));
+gdouble gst_util_guint64_to_gdouble (guint64 value) __attribute__((__pure__));
+# 66 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+guint64 gst_util_uint64_scale (guint64 val, guint64 num, guint64 denom) __attribute__((__pure__));
+
+guint64 gst_util_uint64_scale_int (guint64 val, gint num, gint denom) __attribute__((__pure__));
+
+guint32 gst_util_seqnum_next (void);
+gint32 gst_util_seqnum_compare (guint32 s1, guint32 s2);
+
+void gst_print_pad_caps (GString *buf, gint indent, GstPad *pad);
+void gst_print_element_args (GString *buf, gint indent, GstElement *element);
+
+
+GType gst_type_register_static_full (GType parent_type,
+ const gchar *type_name,
+ guint class_size,
+ GBaseInitFunc base_init,
+ GBaseFinalizeFunc base_finalize,
+ GClassInitFunc class_init,
+ GClassFinalizeFunc class_finalize,
+ gconstpointer class_data,
+ guint instance_size,
+ guint16 n_preallocs,
+ GInstanceInitFunc instance_init,
+ const GTypeValueTable *value_table,
+ GTypeFlags flags);
+# 526 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+inline static gfloat
+GFLOAT_SWAP_LE_BE(gfloat in)
+{
+ union
+ {
+ guint32 i;
+ gfloat f;
+ } u;
+
+ u.f = in;
+ u.i = (((guint32) ( (((guint32) (u.i) & (guint32) 0x000000ffU) << 24) | (((guint32) (u.i) & (guint32) 0x0000ff00U) << 8) | (((guint32) (u.i) & (guint32) 0x00ff0000U) >> 8) | (((guint32) (u.i) & (guint32) 0xff000000U) >> 24))));
+ return u.f;
+}
+# 555 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+inline static gdouble
+GDOUBLE_SWAP_LE_BE(gdouble in)
+{
+ union
+ {
+ guint64 i;
+ gdouble d;
+ } u;
+
+ u.d = in;
+ u.i = (((guint64) ( (((guint64) (u.i) & (guint64) (0x00000000000000ffUL)) << 56) | (((guint64) (u.i) & (guint64) (0x000000000000ff00UL)) << 40) | (((guint64) (u.i) & (guint64) (0x0000000000ff0000UL)) << 24) | (((guint64) (u.i) & (guint64) (0x00000000ff000000UL)) << 8) | (((guint64) (u.i) & (guint64) (0x000000ff00000000UL)) >> 8) | (((guint64) (u.i) & (guint64) (0x0000ff0000000000UL)) >> 24) | (((guint64) (u.i) & (guint64) (0x00ff000000000000UL)) >> 40) | (((guint64) (u.i) & (guint64) (0xff00000000000000UL)) >> 56))));
+ return u.d;
+}
+# 689 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+inline static gfloat
+GST_READ_FLOAT_LE(const guint8 *data)
+{
+ union
+ {
+ guint32 i;
+ gfloat f;
+ } u;
+
+ u.i = ((((guint32) (((guint8 *) (data))[3])) << (24)) | (((guint32) (((guint8 *) (data))[2])) << (16)) | (((guint32) (((guint8 *) (data))[1])) << (8)) | (((guint32) (((guint8 *) (data))[0])) << (0)));
+ return u.f;
+}
+# 717 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+inline static gfloat
+GST_READ_FLOAT_BE(const guint8 *data)
+{
+ union
+ {
+ guint32 i;
+ gfloat f;
+ } u;
+
+ u.i = ((((guint32) (((guint8 *) (data))[0])) << (24)) | (((guint32) (((guint8 *) (data))[1])) << (16)) | (((guint32) (((guint8 *) (data))[2])) << (8)) | (((guint32) (((guint8 *) (data))[3])) << (0)));
+ return u.f;
+}
+# 745 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+inline static gdouble
+GST_READ_DOUBLE_LE(const guint8 *data)
+{
+ union
+ {
+ guint64 i;
+ gdouble d;
+ } u;
+
+ u.i = ((((guint64) (((guint8 *) (data))[7])) << (56)) | (((guint64) (((guint8 *) (data))[6])) << (48)) | (((guint64) (((guint8 *) (data))[5])) << (40)) | (((guint64) (((guint8 *) (data))[4])) << (32)) | (((guint64) (((guint8 *) (data))[3])) << (24)) | (((guint64) (((guint8 *) (data))[2])) << (16)) | (((guint64) (((guint8 *) (data))[1])) << (8)) | (((guint64) (((guint8 *) (data))[0])) << (0)));
+ return u.d;
+}
+# 773 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+inline static gdouble
+GST_READ_DOUBLE_BE(const guint8 *data)
+{
+ union
+ {
+ guint64 i;
+ gdouble d;
+ } u;
+
+ u.i = ((((guint64) (((guint8 *) (data))[0])) << (56)) | (((guint64) (((guint8 *) (data))[1])) << (48)) | (((guint64) (((guint8 *) (data))[2])) << (40)) | (((guint64) (((guint8 *) (data))[3])) << (32)) | (((guint64) (((guint8 *) (data))[4])) << (24)) | (((guint64) (((guint8 *) (data))[5])) << (16)) | (((guint64) (((guint8 *) (data))[6])) << (8)) | (((guint64) (((guint8 *) (data))[7])) << (0)));
+ return u.d;
+}
+# 800 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+inline static void
+GST_WRITE_FLOAT_LE(guint8 *data, gfloat num)
+{
+ union
+ {
+ guint32 i;
+ gfloat f;
+ } u;
+
+ u.f = num;
+ do { (((guint8 *) (data))[0] = (((guint32) (u.i)) >> (0)) & 0xff); (((guint8 *) (data))[1] = (((guint32) (u.i)) >> (8)) & 0xff); (((guint8 *) (data))[2] = (((guint32) (u.i)) >> (16)) & 0xff); (((guint8 *) (data))[3] = (((guint32) (u.i)) >> (24)) & 0xff); } while (0);
+}
+# 827 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+inline static void
+GST_WRITE_FLOAT_BE(guint8 *data, gfloat num)
+{
+ union
+ {
+ guint32 i;
+ gfloat f;
+ } u;
+
+ u.f = num;
+ do { (((guint8 *) (data))[0] = (((guint32) (u.i)) >> (24)) & 0xff); (((guint8 *) (data))[1] = (((guint32) (u.i)) >> (16)) & 0xff); (((guint8 *) (data))[2] = (((guint32) (u.i)) >> (8)) & 0xff); (((guint8 *) (data))[3] = (((guint32) (u.i)) >> (0)) & 0xff); } while (0);
+}
+# 854 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+inline static void
+GST_WRITE_DOUBLE_LE(guint8 *data, gdouble num)
+{
+ union
+ {
+ guint64 i;
+ gdouble d;
+ } u;
+
+ u.d = num;
+ do { (((guint8 *) (data))[0] = (((guint64) (u.i)) >> (0)) & 0xff); (((guint8 *) (data))[1] = (((guint64) (u.i)) >> (8)) & 0xff); (((guint8 *) (data))[2] = (((guint64) (u.i)) >> (16)) & 0xff); (((guint8 *) (data))[3] = (((guint64) (u.i)) >> (24)) & 0xff); (((guint8 *) (data))[4] = (((guint64) (u.i)) >> (32)) & 0xff); (((guint8 *) (data))[5] = (((guint64) (u.i)) >> (40)) & 0xff); (((guint8 *) (data))[6] = (((guint64) (u.i)) >> (48)) & 0xff); (((guint8 *) (data))[7] = (((guint64) (u.i)) >> (56)) & 0xff); } while (0);
+}
+# 881 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+inline static void
+GST_WRITE_DOUBLE_BE(guint8 *data, gdouble num)
+{
+ union
+ {
+ guint64 i;
+ gdouble d;
+ } u;
+
+ u.d = num;
+ do { (((guint8 *) (data))[0] = (((guint64) (u.i)) >> (56)) & 0xff); (((guint8 *) (data))[1] = (((guint64) (u.i)) >> (48)) & 0xff); (((guint8 *) (data))[2] = (((guint64) (u.i)) >> (40)) & 0xff); (((guint8 *) (data))[3] = (((guint64) (u.i)) >> (32)) & 0xff); (((guint8 *) (data))[4] = (((guint64) (u.i)) >> (24)) & 0xff); (((guint8 *) (data))[5] = (((guint64) (u.i)) >> (16)) & 0xff); (((guint8 *) (data))[6] = (((guint64) (u.i)) >> (8)) & 0xff); (((guint8 *) (data))[7] = (((guint64) (u.i)) >> (0)) & 0xff); } while (0);
+}
+# 994 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+void gst_object_default_error (GstObject * source,
+ GError * error, gchar * debug);
+
+
+void gst_element_create_all_pads (GstElement *element);
+GstPad* gst_element_get_compatible_pad (GstElement *element, GstPad *pad,
+ const GstCaps *caps);
+
+GstPadTemplate* gst_element_get_compatible_pad_template (GstElement *element, GstPadTemplate *compattempl);
+
+const gchar* gst_element_state_get_name (GstState state);
+const gchar * gst_element_state_change_return_get_name (GstStateChangeReturn state_ret);
+
+gboolean gst_element_link (GstElement *src, GstElement *dest);
+gboolean gst_element_link_many (GstElement *element_1,
+ GstElement *element_2, ...) __attribute__((__sentinel__));
+gboolean gst_element_link_filtered (GstElement * src,
+ GstElement * dest,
+ GstCaps *filter);
+void gst_element_unlink (GstElement *src, GstElement *dest);
+void gst_element_unlink_many (GstElement *element_1,
+ GstElement *element_2, ...) __attribute__((__sentinel__));
+
+gboolean gst_element_link_pads (GstElement *src, const gchar *srcpadname,
+ GstElement *dest, const gchar *destpadname);
+void gst_element_unlink_pads (GstElement *src, const gchar *srcpadname,
+ GstElement *dest, const gchar *destpadname);
+
+gboolean gst_element_link_pads_filtered (GstElement * src, const gchar * srcpadname,
+ GstElement * dest, const gchar * destpadname,
+ GstCaps *filter);
+
+gboolean gst_element_seek_simple (GstElement *element,
+ GstFormat format,
+ GstSeekFlags seek_flags,
+ gint64 seek_pos);
+
+
+gboolean gst_element_factory_can_src_caps(GstElementFactory *factory, const GstCaps *caps);
+gboolean gst_element_factory_can_sink_caps(GstElementFactory *factory, const GstCaps *caps);
+
+
+gboolean gst_element_query_position (GstElement *element, GstFormat *format,
+ gint64 *cur);
+gboolean gst_element_query_duration (GstElement *element, GstFormat *format,
+ gint64 *duration);
+gboolean gst_element_query_convert (GstElement *element, GstFormat src_format, gint64 src_val,
+ GstFormat *dest_format, gint64 *dest_val);
+
+
+void gst_element_class_install_std_props (GstElementClass * klass,
+ const gchar * first_name, ...) __attribute__((__sentinel__));
+
+
+void gst_pad_use_fixed_caps (GstPad *pad);
+GstCaps* gst_pad_get_fixed_caps_func (GstPad *pad);
+GstCaps* gst_pad_proxy_getcaps (GstPad * pad);
+gboolean gst_pad_proxy_setcaps (GstPad * pad, GstCaps * caps);
+
+GstElement* gst_pad_get_parent_element (GstPad *pad);
+
+
+gboolean gst_pad_query_position (GstPad *pad, GstFormat *format,
+ gint64 *cur);
+gboolean gst_pad_query_duration (GstPad *pad, GstFormat *format,
+ gint64 *duration);
+gboolean gst_pad_query_convert (GstPad *pad, GstFormat src_format, gint64 src_val,
+ GstFormat *dest_format, gint64 *dest_val);
+
+gboolean gst_pad_query_peer_position (GstPad *pad, GstFormat *format,
+ gint64 *cur);
+gboolean gst_pad_query_peer_duration (GstPad *pad, GstFormat *format,
+ gint64 *duration);
+gboolean gst_pad_query_peer_convert (GstPad *pad, GstFormat src_format, gint64 src_val,
+ GstFormat *dest_format, gint64 *dest_val);
+
+
+void gst_bin_add_many (GstBin *bin, GstElement *element_1, ...) __attribute__((__sentinel__));
+void gst_bin_remove_many (GstBin *bin, GstElement *element_1, ...) __attribute__((__sentinel__));
+GstPad * gst_bin_find_unlinked_pad (GstBin *bin, GstPadDirection direction);
+
+GstPad * gst_bin_find_unconnected_pad (GstBin *bin, GstPadDirection direction);
+
+
+
+GstBuffer * gst_buffer_merge (GstBuffer * buf1, GstBuffer * buf2);
+GstBuffer * gst_buffer_join (GstBuffer * buf1, GstBuffer * buf2);
+
+void gst_buffer_stamp (GstBuffer * dest, const GstBuffer * src);
+
+
+
+
+void gst_atomic_int_set (gint * atomic_int, gint value);
+
+
+
+gulong gst_pad_add_data_probe (GstPad * pad,
+ GCallback handler,
+ gpointer data);
+
+gulong gst_pad_add_data_probe_full (GstPad * pad,
+ GCallback handler,
+ gpointer data,
+ GDestroyNotify notify);
+
+void gst_pad_remove_data_probe (GstPad * pad, guint handler_id);
+
+gulong gst_pad_add_event_probe (GstPad * pad,
+ GCallback handler,
+ gpointer data);
+
+gulong gst_pad_add_event_probe_full (GstPad * pad,
+ GCallback handler,
+ gpointer data,
+ GDestroyNotify notify);
+
+void gst_pad_remove_event_probe (GstPad * pad, guint handler_id);
+
+gulong gst_pad_add_buffer_probe (GstPad * pad,
+ GCallback handler,
+ gpointer data);
+
+gulong gst_pad_add_buffer_probe_full (GstPad * pad,
+ GCallback handler,
+ gpointer data,
+ GDestroyNotify notify);
+
+void gst_pad_remove_buffer_probe (GstPad * pad, guint handler_id);
+
+
+void gst_element_found_tags_for_pad (GstElement * element,
+ GstPad * pad,
+ GstTagList * list);
+void gst_element_found_tags (GstElement * element,
+ GstTagList * list);
+
+
+GstElement * gst_parse_bin_from_description (const gchar * bin_description,
+ gboolean ghost_unlinked_pads,
+ GError ** err);
+
+GstElement * gst_parse_bin_from_description_full (const gchar * bin_description,
+ gboolean ghost_unlinked_pads,
+ GstParseContext * context,
+ GstParseFlags flags,
+ GError ** err);
+
+GstClockTime gst_util_get_timestamp (void);
+# 1154 "/usr/include/gstreamer-0.10/gst/gstutils.h"
+typedef enum {
+ GST_SEARCH_MODE_EXACT = 0,
+ GST_SEARCH_MODE_BEFORE,
+ GST_SEARCH_MODE_AFTER
+} GstSearchMode;
+
+gpointer gst_util_array_binary_search (gpointer array, guint num_elements,
+ gsize element_size, GCompareDataFunc search_func,
+ GstSearchMode mode, gconstpointer search_data,
+ gpointer user_data);
+
+
+# 74 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstxml.h" 1
+# 32 "/usr/include/gstreamer-0.10/gst/gstxml.h"
+
+# 41 "/usr/include/gstreamer-0.10/gst/gstxml.h"
+typedef struct _GstXML GstXML;
+typedef struct _GstXMLClass GstXMLClass;
+# 51 "/usr/include/gstreamer-0.10/gst/gstxml.h"
+struct _GstXML {
+ GstObject object;
+
+
+ GList *topelements;
+
+ xmlNsPtr ns;
+
+
+ gpointer _gst_reserved[4];
+};
+
+struct _GstXMLClass {
+ GstObjectClass parent_class;
+
+
+ void (*object_loaded) (GstXML *xml, GstObject *object, xmlNodePtr self);
+ void (*object_saved) (GstXML *xml, GstObject *object, xmlNodePtr self);
+
+ gpointer _gst_reserved[4];
+};
+
+GType gst_xml_get_type (void);
+
+
+
+xmlDocPtr gst_xml_write (GstElement *element);
+
+
+gint gst_xml_write_file (GstElement *element, FILE *out);
+
+GstXML* gst_xml_new (void);
+
+gboolean gst_xml_parse_doc (GstXML *xml, xmlDocPtr doc, const guchar *root);
+gboolean gst_xml_parse_file (GstXML *xml, const guchar *fname, const guchar *root);
+gboolean gst_xml_parse_memory (GstXML *xml, guchar *buffer, guint size, const gchar *root);
+
+
+GstElement* gst_xml_get_element (GstXML *xml, const guchar *name);
+GList* gst_xml_get_topelements (GstXML *xml);
+
+GstElement* gst_xml_make_element (xmlNodePtr cur, GstObject *parent);
+
+
+# 76 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+
+
+
+# 1 "/usr/include/gstreamer-0.10/gst/gstcompat.h" 1
+# 35 "/usr/include/gstreamer-0.10/gst/gstcompat.h"
+
+
+
+
+
+
+
+# 81 "/usr/include/gstreamer-0.10/gst/gst.h" 2
+
+
+
+void gst_init (int *argc, char **argv[]);
+gboolean gst_init_check (int *argc, char **argv[],
+ GError ** err);
+GOptionGroup * gst_init_get_option_group (void);
+void gst_deinit (void);
+
+void gst_version (guint *major, guint *minor,
+ guint *micro, guint *nano);
+gchar * gst_version_string (void);
+
+gboolean gst_segtrap_is_enabled (void);
+void gst_segtrap_set_enabled (gboolean enabled);
+
+gboolean gst_registry_fork_is_enabled (void);
+void gst_registry_fork_set_enabled (gboolean enabled);
+
+gboolean gst_update_registry (void);
+
+
+# 12 "bigloo.c" 2
+
+
+
+
+extern obj_t BGl_readz00zz__readerz00(obj_t, obj_t);
+extern obj_t BGl_mainz00zzrecettez00(obj_t);
+static obj_t BGl_cnstzd2initzd2zzrecettez00();
+extern obj_t BGl_exitz00zz__errorz00(obj_t);
+extern obj_t BGl_modulezd2initializa7ationz75zzrecettez00(long, char *);
+extern obj_t BGl_modulezd2initializa7ationz75zz__gstreamer_gstreamerz00(long, char *);
+extern obj_t BGl_modulezd2initializa7ationz75zz__pth_threadz00(long, char *);
+extern obj_t BGl_modulezd2initializa7ationz75zz__readerz00(long, char *);
+extern obj_t BGl_modulezd2initializa7ationz75zz__errorz00(long, char *);
+static obj_t BGl_toplevelzd2initzd2zzrecettez00();
+extern obj_t BGl_modulezd2initzd2errorz00zz__errorz00(char *, char *);
+extern obj_t bigloo_main(obj_t);
+static obj_t BGl_methodzd2initzd2zzrecettez00();
+static obj_t BGl__mainz00zzrecettez00(obj_t, obj_t);
+extern obj_t BGl_bigloozd2typezd2errorz00zz__errorz00(obj_t, obj_t, obj_t);
+static obj_t BGl_requirezd2initializa7ationz75zzrecettez00 = ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));
+static obj_t BGl_genericzd2initzd2zzrecettez00();
+extern obj_t BGl_bigloozd2initializa7edz12z67zz__paramz00();
+extern long BGl_bitzd2andzd2zz__bitz00(long, long);
+extern obj_t bgl_open_input_string(obj_t, int);
+extern bool_t BGl_zd3fxzd3zz__r4_numbers_6_5_fixnumz00(long, long);
+static obj_t BGl_libraryzd2moduleszd2initz00zzrecettez00();
+static obj_t __cnst[ 1 ] ;
+
+
+static struct { double _; int length; char string[11 +1]; } BgL_bgl_string2166za700za7za7r2189za7 = { 0.0, 11, "recette.scm" }; static obj_t BGl_string2166z00zzrecettez00 = ((obj_t)((long)&(BgL_bgl_string2166za700za7za7r2189za7.length) + 7));
+static struct { double _; int length; char string[4 +1]; } BgL_bgl_string2167za700za7za7r2190za7 = { 0.0, 4, "pair" }; static obj_t BGl_string2167z00zzrecettez00 = ((obj_t)((long)&(BgL_bgl_string2167za700za7za7r2190za7.length) + 7));
+static struct { double _; int length; char string[6 +1]; } BgL_bgl_string2168za700za7za7r2191za7 = { 0.0, 6, "_main " }; static obj_t BGl_string2168z00zzrecettez00 = ((obj_t)((long)&(BgL_bgl_string2168za700za7za7r2191za7.length) + 7));
+static struct { double _; header_t header; obj_t (*entry)(); obj_t (*va_entry)(); obj_t attr; int arity; } const BgL_bgl__mainza700za7za7recett2192za7 = { 0.0, ((header_t)((long)(((long)(3) << (3 + 16)) | 0<<3))), (obj_t (*)())BGl__mainz00zzrecettez00, (obj_t (*)())0L, ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2))), 1 }; const obj_t BGl_mainzd2envzd2zzrecettez00 = ((obj_t)(&(BgL_bgl__mainza700za7za7recett2192za7.header)));
+
+
+
+extern void bglpth_setup(int, char *[], char *[]);
+
+long bigloo_abort(long n) { return n; }
+
+int main(int argc, char *argv[], char *env[])
+{
+
+bglpth_setup(argc, argv, env);
+
+return _bigloo_main(argc, argv, env, &bigloo_main);}
+
+
+
+
+ obj_t BGl_modulezd2initializa7ationz75zzrecettez00(long BgL_checksumz00_509, char * BgL_fromz00_510)
+{ ;
+{
+{
+bool_t BgL_test2176z00_511;
+{
+obj_t BgL_arg2181z00_513;
+BgL_arg2181z00_513 =
+(obj_t)((long)(((long)(BGl_bitzd2andzd2zz__bitz00(BgL_checksumz00_509, ((long)67281932))) << 3) | 1));
+
+BgL_test2176z00_511 =
+BGl_zd3fxzd3zz__r4_numbers_6_5_fixnumz00(
+(long)(long)((long)((long)(BgL_arg2181z00_513) >> 3)), BgL_checksumz00_509); }
+if(BgL_test2176z00_511)
+{
+if(
+(BGl_requirezd2initializa7ationz75zzrecettez00 != ((obj_t)(obj_t)((long)(((long)(1) << 3) | 2)))))
+{
+BGl_requirezd2initializa7ationz75zzrecettez00 =
+(((bool_t)0) ? ((obj_t)(obj_t)((long)(((long)(2) << 3) | 2))) : ((obj_t)(obj_t)((long)(((long)(1) << 3) | 2))));
+BGl_libraryzd2moduleszd2initz00zzrecettez00();
+BGl_cnstzd2initzd2zzrecettez00();
+BGl_genericzd2initzd2zzrecettez00();
+BGl_methodzd2initzd2zzrecettez00();
+BGl_toplevelzd2initzd2zzrecettez00();
+return ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));} else
+{
+return ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));} } else
+{
+char * BgL_sz00_512;
+BgL_sz00_512 =
+"recette";
+return
+BGl_modulezd2initzd2errorz00zz__errorz00(BgL_sz00_512, BgL_fromz00_510);} } }
+}
+
+
+
+
+ obj_t bigloo_main(obj_t BgL_argvz00_514)
+{ ;
+{
+BGl_modulezd2initializa7ationz75zzrecettez00(((long)0), "recette");
+BGl_bigloozd2initializa7edz12z67zz__paramz00();
+{
+obj_t BgL_arg2188z00_515;
+BgL_arg2188z00_515 =
+BGl_mainz00zzrecettez00(BgL_argvz00_514);
+return
+bigloo_exit(BgL_arg2188z00_515);} }
+}
+
+
+
+
+obj_t BGl_libraryzd2moduleszd2initz00zzrecettez00()
+{ ;
+{
+BGl_modulezd2initializa7ationz75zz__readerz00(((long)0), "recette");
+BGl_modulezd2initializa7ationz75zz__errorz00(((long)0), "recette");
+BGl_modulezd2initializa7ationz75zz__gstreamer_gstreamerz00(((long)0), "recette");
+BGl_modulezd2initializa7ationz75zz__pth_threadz00(((long)0), "recette");
+return ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));}
+}
+
+
+
+
+obj_t BGl_cnstzd2initzd2zzrecettez00()
+{ ;
+{
+{
+obj_t BgL_cportz00_501;
+BgL_cportz00_501 =
+bgl_open_input_string(BGl_string2168z00zzrecettez00,
+(int)(((long)0)));
+{
+long BgL_iz00_502;
+BgL_iz00_502 = ((long)0);
+BgL_loopz00_503:
+{
+bool_t BgL_test2169z00_504;
+BgL_test2169z00_504 =
+(BgL_iz00_502==((long)-1));
+if(BgL_test2169z00_504)
+{
+return ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));} else
+{
+{
+obj_t BgL_arg2175z00_505;
+{
+
+{
+obj_t BgL_iportz00_506;
+BgL_iportz00_506 = BgL_cportz00_501;
+{
+obj_t BgL_locationz00_507;
+BgL_locationz00_507 =
+(((bool_t)0) ? ((obj_t)(obj_t)((long)(((long)(2) << 3) | 2))) : ((obj_t)(obj_t)((long)(((long)(1) << 3) | 2))));
+{
+
+BgL_arg2175z00_505 =
+BGl_readz00zz__readerz00(BgL_iportz00_506, BgL_locationz00_507); } } } }
+{
+int BgL_auxz00_545;
+BgL_auxz00_545 =
+(int)(BgL_iz00_502);
+( __cnst[ BgL_auxz00_545 ] = BgL_arg2175z00_505, ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2))) ); } }
+{
+int BgL_auxz00_508;
+BgL_auxz00_508 =
+(int)(
+(BgL_iz00_502-((long)1)));
+{
+long BgL_iz00_550;
+BgL_iz00_550 =
+(long)(BgL_auxz00_508);
+BgL_iz00_502 = BgL_iz00_550;
+goto BgL_loopz00_503;} } } } } } }
+}
+
+
+
+
+obj_t BGl_toplevelzd2initzd2zzrecettez00()
+{ ;
+{
+BGl_modulezd2initializa7ationz75zz__gstreamer_gstreamerz00(((long)0),
+((char *)(&((((obj_t)((long)BGl_string2166z00zzrecettez00 - 7))->string_t).char0))));
+BGl_modulezd2initializa7ationz75zz__pth_threadz00(((long)0),
+((char *)(&((((obj_t)((long)BGl_string2166z00zzrecettez00 - 7))->string_t).char0))));
+return ((obj_t)(obj_t)((long)(((long)(1) << 3) | 2)));}
+}
+
+
+
+
+ obj_t BGl_mainz00zzrecettez00(obj_t BgL_argvz00_1)
+{ ;
+{
+{
+obj_t BgL_list2163z00_496;
+BgL_list2163z00_496 =
+({ obj_t an_object; an_object = (obj_t)GC_malloc( (sizeof( struct pair )) ); an_object->pair_t.car = (obj_t)((long)(((long)(((long)0)) << 3) | 1)); an_object->pair_t.cdr = ((obj_t)(obj_t)((long)(((long)(0) << 3) | 2))); ( ((obj_t)((long)an_object | 3)) ); });
+
+return
+BGl_exitz00zz__errorz00(BgL_list2163z00_496);} }
+}
+
+
+
+
+obj_t BGl__mainz00zzrecettez00(obj_t BgL_envz00_497, obj_t BgL_argvz00_498)
+{ ;
+{
+{
+obj_t BgL_auxz00_559;
+{
+obj_t BgL_aux2164z00_499;
+BgL_aux2164z00_499 = BgL_argvz00_498;
+{
+bool_t BgL_test2165z00_500;
+BgL_test2165z00_500 =
+((((long)BgL_aux2164z00_499) & ((1 << 3) - 1)) == 3);
+if(BgL_test2165z00_500)
+{
+BgL_auxz00_559 = BgL_aux2164z00_499
+; } else
+{
+BGl_bigloozd2typezd2errorz00zz__errorz00(
+__cnst[ ((long)0) ], BGl_string2167z00zzrecettez00, BgL_aux2164z00_499);
+exit( -1 );} } }
+return
+BGl_mainz00zzrecettez00(BgL_auxz00_559);} }
+}
+
+
+
+
+obj_t BGl_genericzd2initzd2zzrecettez00()
+{ ;
+{
+return ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));}
+}
+
+
+
+
+obj_t BGl_methodzd2initzd2zzrecettez00()
+{ ;
+{
+return ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));}
+}
--- /dev/null
+typedef long unsigned int size_t;
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+typedef signed long int __int64_t;
+typedef unsigned long int __uint64_t;
+typedef long int __quad_t;
+typedef unsigned long int __u_quad_t;
+typedef unsigned long int __dev_t;
+typedef unsigned int __uid_t;
+typedef unsigned int __gid_t;
+typedef unsigned long int __ino_t;
+typedef unsigned long int __ino64_t;
+typedef unsigned int __mode_t;
+typedef unsigned long int __nlink_t;
+typedef long int __off_t;
+typedef long int __off64_t;
+typedef int __pid_t;
+typedef struct { int __val[2]; } __fsid_t;
+typedef long int __clock_t;
+typedef unsigned long int __rlim_t;
+typedef unsigned long int __rlim64_t;
+typedef unsigned int __id_t;
+typedef long int __time_t;
+typedef unsigned int __useconds_t;
+typedef long int __suseconds_t;
+typedef int __daddr_t;
+typedef long int __swblk_t;
+typedef int __key_t;
+typedef int __clockid_t;
+typedef void * __timer_t;
+typedef long int __blksize_t;
+typedef long int __blkcnt_t;
+typedef long int __blkcnt64_t;
+typedef unsigned long int __fsblkcnt_t;
+typedef unsigned long int __fsblkcnt64_t;
+typedef unsigned long int __fsfilcnt_t;
+typedef unsigned long int __fsfilcnt64_t;
+typedef long int __ssize_t;
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+typedef long int __intptr_t;
+typedef unsigned int __socklen_t;
+struct _IO_FILE;
+typedef struct _IO_FILE FILE;
+typedef struct _IO_FILE __FILE;
+typedef struct
+{
+ int __count;
+ union
+ {
+ unsigned int __wch;
+ char __wchb[4];
+ } __value;
+} __mbstate_t;
+typedef struct
+{
+ __off_t __pos;
+ __mbstate_t __state;
+} _G_fpos_t;
+typedef struct
+{
+ __off64_t __pos;
+ __mbstate_t __state;
+} _G_fpos64_t;
+typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
+typedef __builtin_va_list __gnuc_va_list;
+struct _IO_jump_t; struct _IO_FILE;
+typedef void _IO_lock_t;
+struct _IO_marker {
+ struct _IO_marker *_next;
+ struct _IO_FILE *_sbuf;
+ int _pos;
+};
+enum __codecvt_result
+{
+ __codecvt_ok,
+ __codecvt_partial,
+ __codecvt_error,
+ __codecvt_noconv
+};
+struct _IO_FILE {
+ int _flags;
+ char* _IO_read_ptr;
+ char* _IO_read_end;
+ char* _IO_read_base;
+ char* _IO_write_base;
+ char* _IO_write_ptr;
+ char* _IO_write_end;
+ char* _IO_buf_base;
+ char* _IO_buf_end;
+ char *_IO_save_base;
+ char *_IO_backup_base;
+ char *_IO_save_end;
+ struct _IO_marker *_markers;
+ struct _IO_FILE *_chain;
+ int _fileno;
+ int _flags2;
+ __off_t _old_offset;
+ unsigned short _cur_column;
+ signed char _vtable_offset;
+ char _shortbuf[1];
+ _IO_lock_t *_lock;
+ __off64_t _offset;
+ void *__pad1;
+ void *__pad2;
+ void *__pad3;
+ void *__pad4;
+ size_t __pad5;
+ int _mode;
+ char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+};
+typedef struct _IO_FILE _IO_FILE;
+struct _IO_FILE_plus;
+extern struct _IO_FILE_plus _IO_2_1_stdin_;
+extern struct _IO_FILE_plus _IO_2_1_stdout_;
+extern struct _IO_FILE_plus _IO_2_1_stderr_;
+typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
+typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
+ size_t __n);
+typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
+typedef int __io_close_fn (void *__cookie);
+extern int __underflow (_IO_FILE *);
+extern int __uflow (_IO_FILE *);
+extern int __overflow (_IO_FILE *, int);
+extern int _IO_getc (_IO_FILE *__fp);
+extern int _IO_putc (int __c, _IO_FILE *__fp);
+extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_peekc_locked (_IO_FILE *__fp);
+extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
+ __gnuc_va_list, int *__restrict);
+extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
+ __gnuc_va_list);
+extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
+extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
+extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
+extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
+extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
+typedef _G_fpos_t fpos_t;
+extern struct _IO_FILE *stdin;
+extern struct _IO_FILE *stdout;
+extern struct _IO_FILE *stderr;
+extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
+extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
+extern int renameat (int __oldfd, __const char *__old, int __newfd,
+ __const char *__new) __attribute__ ((__nothrow__));
+extern FILE *tmpfile (void) ;
+extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;
+extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern int fclose (FILE *__stream);
+extern int fflush (FILE *__stream);
+extern int fflush_unlocked (FILE *__stream);
+extern FILE *fopen (__const char *__restrict __filename,
+ __const char *__restrict __modes) ;
+extern FILE *freopen (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) ;
+extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
+extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
+ __attribute__ ((__nothrow__)) ;
+extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __attribute__ ((__nothrow__)) ;
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+ int __modes, size_t __n) __attribute__ ((__nothrow__));
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+ size_t __size) __attribute__ ((__nothrow__));
+extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
+extern int fprintf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...);
+extern int printf (__const char *__restrict __format, ...);
+extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg);
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg) __attribute__ ((__nothrow__));
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+extern int vdprintf (int __fd, __const char *__restrict __fmt,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__printf__, 2, 0)));
+extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
+ __attribute__ ((__format__ (__printf__, 2, 3)));
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) ;
+extern int scanf (__const char *__restrict __format, ...) ;
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int fscanf (FILE *__restrict __stream, __const char *__restrict __format, ...) __asm__ ("" "__isoc99_fscanf") ;
+extern int scanf (__const char *__restrict __format, ...) __asm__ ("" "__isoc99_scanf") ;
+extern int sscanf (__const char *__restrict __s, __const char *__restrict __format, ...) __asm__ ("" "__isoc99_sscanf") __attribute__ ((__nothrow__));
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 2, 0))) ;
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__format__ (__scanf__, 1, 0))) ;
+extern int vsscanf (__const char *__restrict __s,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
+extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vfscanf")
+ __attribute__ ((__format__ (__scanf__, 2, 0))) ;
+extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vscanf")
+ __attribute__ ((__format__ (__scanf__, 1, 0))) ;
+extern int vsscanf (__const char *__restrict __s, __const char *__restrict __format, __gnuc_va_list __arg) __asm__ ("" "__isoc99_vsscanf")
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2, 0)));
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+extern int getchar (void);
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+extern int fgetc_unlocked (FILE *__stream);
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+extern int putchar (int __c);
+extern int fputc_unlocked (int __c, FILE *__stream);
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+extern int getw (FILE *__stream);
+extern int putw (int __w, FILE *__stream);
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+ ;
+extern char *gets (char *__s) ;
+extern __ssize_t __getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+extern __ssize_t getdelim (char **__restrict __lineptr,
+ size_t *__restrict __n, int __delimiter,
+ FILE *__restrict __stream) ;
+extern __ssize_t getline (char **__restrict __lineptr,
+ size_t *__restrict __n,
+ FILE *__restrict __stream) ;
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+extern int puts (__const char *__s);
+extern int ungetc (int __c, FILE *__stream);
+extern size_t fread (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __s) ;
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern int fseek (FILE *__stream, long int __off, int __whence);
+extern long int ftell (FILE *__stream) ;
+extern void rewind (FILE *__stream);
+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
+extern __off_t ftello (FILE *__stream) ;
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern void perror (__const char *__s);
+extern int sys_nerr;
+extern __const char *__const sys_errlist[];
+extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern FILE *popen (__const char *__command, __const char *__modes) ;
+extern int pclose (FILE *__stream);
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
+extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
+typedef long int __jmp_buf[8];
+typedef int __sig_atomic_t;
+typedef struct
+ {
+ unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+ } __sigset_t;
+struct __jmp_buf_tag
+ {
+ __jmp_buf __jmpbuf;
+ int __mask_was_saved;
+ __sigset_t __saved_mask;
+ };
+typedef struct __jmp_buf_tag jmp_buf[1];
+extern int setjmp (jmp_buf __env) __attribute__ ((__nothrow__));
+extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) __attribute__ ((__nothrow__));
+extern int _setjmp (struct __jmp_buf_tag __env[1]) __attribute__ ((__nothrow__));
+extern void longjmp (struct __jmp_buf_tag __env[1], int __val)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern void _longjmp (struct __jmp_buf_tag __env[1], int __val)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+typedef struct __jmp_buf_tag sigjmp_buf[1];
+extern void siglongjmp (sigjmp_buf __env, int __val)
+ __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern int *__errno_location (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+typedef int wchar_t;
+typedef struct
+ {
+ int quot;
+ int rem;
+ } div_t;
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } ldiv_t;
+__extension__ typedef struct
+ {
+ long long int quot;
+ long long int rem;
+ } lldiv_t;
+extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;
+extern double atof (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern int atoi (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern long int atol (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__ extern long long int atoll (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern double strtod (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern float strtof (__const char *__restrict __nptr,
+ char **__restrict __endptr) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern long double strtold (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern long int strtol (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
+extern long int a64l (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+typedef __loff_t loff_t;
+typedef __ino_t ino_t;
+typedef __dev_t dev_t;
+typedef __gid_t gid_t;
+typedef __mode_t mode_t;
+typedef __nlink_t nlink_t;
+typedef __uid_t uid_t;
+typedef __off_t off_t;
+typedef __pid_t pid_t;
+typedef __id_t id_t;
+typedef __ssize_t ssize_t;
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+typedef __key_t key_t;
+typedef __time_t time_t;
+typedef __clockid_t clockid_t;
+typedef __timer_t timer_t;
+typedef unsigned long int ulong;
+typedef unsigned short int ushort;
+typedef unsigned int uint;
+typedef int int8_t __attribute__ ((__mode__ (__QI__)));
+typedef int int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int int32_t __attribute__ ((__mode__ (__SI__)));
+typedef int int64_t __attribute__ ((__mode__ (__DI__)));
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+typedef __sigset_t sigset_t;
+struct timespec
+ {
+ __time_t tv_sec;
+ long int tv_nsec;
+ };
+struct timeval
+ {
+ __time_t tv_sec;
+ __suseconds_t tv_usec;
+ };
+typedef __suseconds_t suseconds_t;
+typedef long int __fd_mask;
+typedef struct
+ {
+ __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];
+ } fd_set;
+typedef __fd_mask fd_mask;
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ struct timeval *__restrict __timeout);
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+ const __sigset_t *__restrict __sigmask);
+__extension__
+extern unsigned int gnu_dev_major (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned int gnu_dev_minor (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned long long int gnu_dev_makedev (unsigned int __major,
+ unsigned int __minor)
+ __attribute__ ((__nothrow__));
+typedef __blkcnt_t blkcnt_t;
+typedef __fsblkcnt_t fsblkcnt_t;
+typedef __fsfilcnt_t fsfilcnt_t;
+typedef unsigned long int pthread_t;
+typedef union
+{
+ char __size[56];
+ long int __align;
+} pthread_attr_t;
+typedef struct __pthread_internal_list
+{
+ struct __pthread_internal_list *__prev;
+ struct __pthread_internal_list *__next;
+} __pthread_list_t;
+typedef union
+{
+ struct __pthread_mutex_s
+ {
+ int __lock;
+ unsigned int __count;
+ int __owner;
+ unsigned int __nusers;
+ int __kind;
+ int __spins;
+ __pthread_list_t __list;
+ } __data;
+ char __size[40];
+ long int __align;
+} pthread_mutex_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_mutexattr_t;
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __futex;
+ __extension__ unsigned long long int __total_seq;
+ __extension__ unsigned long long int __wakeup_seq;
+ __extension__ unsigned long long int __woken_seq;
+ void *__mutex;
+ unsigned int __nwaiters;
+ unsigned int __broadcast_seq;
+ } __data;
+ char __size[48];
+ __extension__ long long int __align;
+} pthread_cond_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_condattr_t;
+typedef unsigned int pthread_key_t;
+typedef int pthread_once_t;
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __nr_readers;
+ unsigned int __readers_wakeup;
+ unsigned int __writer_wakeup;
+ unsigned int __nr_readers_queued;
+ unsigned int __nr_writers_queued;
+ int __writer;
+ int __shared;
+ unsigned long int __pad1;
+ unsigned long int __pad2;
+ unsigned int __flags;
+ } __data;
+ char __size[56];
+ long int __align;
+} pthread_rwlock_t;
+typedef union
+{
+ char __size[8];
+ long int __align;
+} pthread_rwlockattr_t;
+typedef volatile int pthread_spinlock_t;
+typedef union
+{
+ char __size[32];
+ long int __align;
+} pthread_barrier_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_barrierattr_t;
+extern long int random (void) __attribute__ ((__nothrow__));
+extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
+extern char *initstate (unsigned int __seed, char *__statebuf,
+ size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+struct random_data
+ {
+ int32_t *fptr;
+ int32_t *rptr;
+ int32_t *state;
+ int rand_type;
+ int rand_deg;
+ int rand_sep;
+ int32_t *end_ptr;
+ };
+extern int random_r (struct random_data *__restrict __buf,
+ int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+ size_t __statelen,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int rand (void) __attribute__ ((__nothrow__));
+extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
+extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
+extern double drand48 (void) __attribute__ ((__nothrow__));
+extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern long int lrand48 (void) __attribute__ ((__nothrow__));
+extern long int nrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern long int mrand48 (void) __attribute__ ((__nothrow__));
+extern long int jrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+struct drand48_data
+ {
+ unsigned short int __x[3];
+ unsigned short int __old_x[3];
+ unsigned short int __c;
+ unsigned short int __init;
+ unsigned long long int __a;
+ };
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int seed48_r (unsigned short int __seed16v[3],
+ struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int lcong48_r (unsigned short int __param[7],
+ struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern void *calloc (size_t __nmemb, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern void *realloc (void *__ptr, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern void free (void *__ptr) __attribute__ ((__nothrow__));
+extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
+extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
+extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern void _Exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern char *__secure_getenv (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
+extern int clearenv (void) __attribute__ ((__nothrow__));
+extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
+extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int system (__const char *__command) ;
+extern char *realpath (__const char *__restrict __name,
+ char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+extern void *bsearch (__const void *__key, __const void *__base,
+ size_t __nmemb, size_t __size, __compar_fn_t __compar)
+ __attribute__ ((__nonnull__ (1, 2, 5))) ;
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+ __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+__extension__ extern long long int llabs (long long int __x)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern div_t div (int __numer, int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern ldiv_t ldiv (long int __numer, long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+__extension__ extern lldiv_t lldiv (long long int __numer,
+ long long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+extern char *qecvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *qfcvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *qgcvt (long double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qecvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qfcvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
+extern int mbtowc (wchar_t *__restrict __pwc,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
+extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
+extern size_t mbstowcs (wchar_t *__restrict __pwcs,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
+extern size_t wcstombs (char *__restrict __s,
+ __const wchar_t *__restrict __pwcs, size_t __n)
+ __attribute__ ((__nothrow__));
+extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int posix_openpt (int __oflag) ;
+extern int getloadavg (double __loadavg[], int __nelem)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+typedef float float_t;
+typedef double double_t;
+extern double acos (double __x) __attribute__ ((__nothrow__)); extern double __acos (double __x) __attribute__ ((__nothrow__));
+extern double asin (double __x) __attribute__ ((__nothrow__)); extern double __asin (double __x) __attribute__ ((__nothrow__));
+extern double atan (double __x) __attribute__ ((__nothrow__)); extern double __atan (double __x) __attribute__ ((__nothrow__));
+extern double atan2 (double __y, double __x) __attribute__ ((__nothrow__)); extern double __atan2 (double __y, double __x) __attribute__ ((__nothrow__));
+extern double cos (double __x) __attribute__ ((__nothrow__)); extern double __cos (double __x) __attribute__ ((__nothrow__));
+extern double sin (double __x) __attribute__ ((__nothrow__)); extern double __sin (double __x) __attribute__ ((__nothrow__));
+extern double tan (double __x) __attribute__ ((__nothrow__)); extern double __tan (double __x) __attribute__ ((__nothrow__));
+extern double cosh (double __x) __attribute__ ((__nothrow__)); extern double __cosh (double __x) __attribute__ ((__nothrow__));
+extern double sinh (double __x) __attribute__ ((__nothrow__)); extern double __sinh (double __x) __attribute__ ((__nothrow__));
+extern double tanh (double __x) __attribute__ ((__nothrow__)); extern double __tanh (double __x) __attribute__ ((__nothrow__));
+extern double acosh (double __x) __attribute__ ((__nothrow__)); extern double __acosh (double __x) __attribute__ ((__nothrow__));
+extern double asinh (double __x) __attribute__ ((__nothrow__)); extern double __asinh (double __x) __attribute__ ((__nothrow__));
+extern double atanh (double __x) __attribute__ ((__nothrow__)); extern double __atanh (double __x) __attribute__ ((__nothrow__));
+extern double exp (double __x) __attribute__ ((__nothrow__)); extern double __exp (double __x) __attribute__ ((__nothrow__));
+extern double frexp (double __x, int *__exponent) __attribute__ ((__nothrow__)); extern double __frexp (double __x, int *__exponent) __attribute__ ((__nothrow__));
+extern double ldexp (double __x, int __exponent) __attribute__ ((__nothrow__)); extern double __ldexp (double __x, int __exponent) __attribute__ ((__nothrow__));
+extern double log (double __x) __attribute__ ((__nothrow__)); extern double __log (double __x) __attribute__ ((__nothrow__));
+extern double log10 (double __x) __attribute__ ((__nothrow__)); extern double __log10 (double __x) __attribute__ ((__nothrow__));
+extern double modf (double __x, double *__iptr) __attribute__ ((__nothrow__)); extern double __modf (double __x, double *__iptr) __attribute__ ((__nothrow__));
+extern double expm1 (double __x) __attribute__ ((__nothrow__)); extern double __expm1 (double __x) __attribute__ ((__nothrow__));
+extern double log1p (double __x) __attribute__ ((__nothrow__)); extern double __log1p (double __x) __attribute__ ((__nothrow__));
+extern double logb (double __x) __attribute__ ((__nothrow__)); extern double __logb (double __x) __attribute__ ((__nothrow__));
+extern double exp2 (double __x) __attribute__ ((__nothrow__)); extern double __exp2 (double __x) __attribute__ ((__nothrow__));
+extern double log2 (double __x) __attribute__ ((__nothrow__)); extern double __log2 (double __x) __attribute__ ((__nothrow__));
+extern double pow (double __x, double __y) __attribute__ ((__nothrow__)); extern double __pow (double __x, double __y) __attribute__ ((__nothrow__));
+extern double sqrt (double __x) __attribute__ ((__nothrow__)); extern double __sqrt (double __x) __attribute__ ((__nothrow__));
+extern double hypot (double __x, double __y) __attribute__ ((__nothrow__)); extern double __hypot (double __x, double __y) __attribute__ ((__nothrow__));
+extern double cbrt (double __x) __attribute__ ((__nothrow__)); extern double __cbrt (double __x) __attribute__ ((__nothrow__));
+extern double ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __ceil (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __fabs (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __floor (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double fmod (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmod (double __x, double __y) __attribute__ ((__nothrow__));
+extern int __isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int __finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int isinf (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int finite (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double drem (double __x, double __y) __attribute__ ((__nothrow__)); extern double __drem (double __x, double __y) __attribute__ ((__nothrow__));
+extern double significand (double __x) __attribute__ ((__nothrow__)); extern double __significand (double __x) __attribute__ ((__nothrow__));
+extern double copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __copysign (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nan (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int __isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int isnan (double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double j0 (double) __attribute__ ((__nothrow__)); extern double __j0 (double) __attribute__ ((__nothrow__));
+extern double j1 (double) __attribute__ ((__nothrow__)); extern double __j1 (double) __attribute__ ((__nothrow__));
+extern double jn (int, double) __attribute__ ((__nothrow__)); extern double __jn (int, double) __attribute__ ((__nothrow__));
+extern double y0 (double) __attribute__ ((__nothrow__)); extern double __y0 (double) __attribute__ ((__nothrow__));
+extern double y1 (double) __attribute__ ((__nothrow__)); extern double __y1 (double) __attribute__ ((__nothrow__));
+extern double yn (int, double) __attribute__ ((__nothrow__)); extern double __yn (int, double) __attribute__ ((__nothrow__));
+extern double erf (double) __attribute__ ((__nothrow__)); extern double __erf (double) __attribute__ ((__nothrow__));
+extern double erfc (double) __attribute__ ((__nothrow__)); extern double __erfc (double) __attribute__ ((__nothrow__));
+extern double lgamma (double) __attribute__ ((__nothrow__)); extern double __lgamma (double) __attribute__ ((__nothrow__));
+extern double tgamma (double) __attribute__ ((__nothrow__)); extern double __tgamma (double) __attribute__ ((__nothrow__));
+extern double gamma (double) __attribute__ ((__nothrow__)); extern double __gamma (double) __attribute__ ((__nothrow__));
+extern double lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__)); extern double __lgamma_r (double, int *__signgamp) __attribute__ ((__nothrow__));
+extern double rint (double __x) __attribute__ ((__nothrow__)); extern double __rint (double __x) __attribute__ ((__nothrow__));
+extern double nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double remainder (double __x, double __y) __attribute__ ((__nothrow__)); extern double __remainder (double __x, double __y) __attribute__ ((__nothrow__));
+extern double scalbn (double __x, int __n) __attribute__ ((__nothrow__)); extern double __scalbn (double __x, int __n) __attribute__ ((__nothrow__));
+extern int ilogb (double __x) __attribute__ ((__nothrow__)); extern int __ilogb (double __x) __attribute__ ((__nothrow__));
+extern double scalbln (double __x, long int __n) __attribute__ ((__nothrow__)); extern double __scalbln (double __x, long int __n) __attribute__ ((__nothrow__));
+extern double nearbyint (double __x) __attribute__ ((__nothrow__)); extern double __nearbyint (double __x) __attribute__ ((__nothrow__));
+extern double round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __round (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern double __trunc (double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern double remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__)); extern double __remquo (double __x, double __y, int *__quo) __attribute__ ((__nothrow__));
+extern long int lrint (double __x) __attribute__ ((__nothrow__)); extern long int __lrint (double __x) __attribute__ ((__nothrow__));
+extern long long int llrint (double __x) __attribute__ ((__nothrow__)); extern long long int __llrint (double __x) __attribute__ ((__nothrow__));
+extern long int lround (double __x) __attribute__ ((__nothrow__)); extern long int __lround (double __x) __attribute__ ((__nothrow__));
+extern long long int llround (double __x) __attribute__ ((__nothrow__)); extern long long int __llround (double __x) __attribute__ ((__nothrow__));
+extern double fdim (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fdim (double __x, double __y) __attribute__ ((__nothrow__));
+extern double fmax (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmax (double __x, double __y) __attribute__ ((__nothrow__));
+extern double fmin (double __x, double __y) __attribute__ ((__nothrow__)); extern double __fmin (double __x, double __y) __attribute__ ((__nothrow__));
+extern int __fpclassify (double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+extern int __signbit (double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+extern double fma (double __x, double __y, double __z) __attribute__ ((__nothrow__)); extern double __fma (double __x, double __y, double __z) __attribute__ ((__nothrow__));
+extern double scalb (double __x, double __n) __attribute__ ((__nothrow__)); extern double __scalb (double __x, double __n) __attribute__ ((__nothrow__));
+extern float acosf (float __x) __attribute__ ((__nothrow__)); extern float __acosf (float __x) __attribute__ ((__nothrow__));
+extern float asinf (float __x) __attribute__ ((__nothrow__)); extern float __asinf (float __x) __attribute__ ((__nothrow__));
+extern float atanf (float __x) __attribute__ ((__nothrow__)); extern float __atanf (float __x) __attribute__ ((__nothrow__));
+extern float atan2f (float __y, float __x) __attribute__ ((__nothrow__)); extern float __atan2f (float __y, float __x) __attribute__ ((__nothrow__));
+extern float cosf (float __x) __attribute__ ((__nothrow__)); extern float __cosf (float __x) __attribute__ ((__nothrow__));
+extern float sinf (float __x) __attribute__ ((__nothrow__)); extern float __sinf (float __x) __attribute__ ((__nothrow__));
+extern float tanf (float __x) __attribute__ ((__nothrow__)); extern float __tanf (float __x) __attribute__ ((__nothrow__));
+extern float coshf (float __x) __attribute__ ((__nothrow__)); extern float __coshf (float __x) __attribute__ ((__nothrow__));
+extern float sinhf (float __x) __attribute__ ((__nothrow__)); extern float __sinhf (float __x) __attribute__ ((__nothrow__));
+extern float tanhf (float __x) __attribute__ ((__nothrow__)); extern float __tanhf (float __x) __attribute__ ((__nothrow__));
+extern float acoshf (float __x) __attribute__ ((__nothrow__)); extern float __acoshf (float __x) __attribute__ ((__nothrow__));
+extern float asinhf (float __x) __attribute__ ((__nothrow__)); extern float __asinhf (float __x) __attribute__ ((__nothrow__));
+extern float atanhf (float __x) __attribute__ ((__nothrow__)); extern float __atanhf (float __x) __attribute__ ((__nothrow__));
+extern float expf (float __x) __attribute__ ((__nothrow__)); extern float __expf (float __x) __attribute__ ((__nothrow__));
+extern float frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__)); extern float __frexpf (float __x, int *__exponent) __attribute__ ((__nothrow__));
+extern float ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__)); extern float __ldexpf (float __x, int __exponent) __attribute__ ((__nothrow__));
+extern float logf (float __x) __attribute__ ((__nothrow__)); extern float __logf (float __x) __attribute__ ((__nothrow__));
+extern float log10f (float __x) __attribute__ ((__nothrow__)); extern float __log10f (float __x) __attribute__ ((__nothrow__));
+extern float modff (float __x, float *__iptr) __attribute__ ((__nothrow__)); extern float __modff (float __x, float *__iptr) __attribute__ ((__nothrow__));
+extern float expm1f (float __x) __attribute__ ((__nothrow__)); extern float __expm1f (float __x) __attribute__ ((__nothrow__));
+extern float log1pf (float __x) __attribute__ ((__nothrow__)); extern float __log1pf (float __x) __attribute__ ((__nothrow__));
+extern float logbf (float __x) __attribute__ ((__nothrow__)); extern float __logbf (float __x) __attribute__ ((__nothrow__));
+extern float exp2f (float __x) __attribute__ ((__nothrow__)); extern float __exp2f (float __x) __attribute__ ((__nothrow__));
+extern float log2f (float __x) __attribute__ ((__nothrow__)); extern float __log2f (float __x) __attribute__ ((__nothrow__));
+extern float powf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __powf (float __x, float __y) __attribute__ ((__nothrow__));
+extern float sqrtf (float __x) __attribute__ ((__nothrow__)); extern float __sqrtf (float __x) __attribute__ ((__nothrow__));
+extern float hypotf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __hypotf (float __x, float __y) __attribute__ ((__nothrow__));
+extern float cbrtf (float __x) __attribute__ ((__nothrow__)); extern float __cbrtf (float __x) __attribute__ ((__nothrow__));
+extern float ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __ceilf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __fabsf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __floorf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float fmodf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmodf (float __x, float __y) __attribute__ ((__nothrow__));
+extern int __isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int __finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int isinff (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int finitef (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float dremf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __dremf (float __x, float __y) __attribute__ ((__nothrow__));
+extern float significandf (float __x) __attribute__ ((__nothrow__)); extern float __significandf (float __x) __attribute__ ((__nothrow__));
+extern float copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int __isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int isnanf (float __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float j0f (float) __attribute__ ((__nothrow__)); extern float __j0f (float) __attribute__ ((__nothrow__));
+extern float j1f (float) __attribute__ ((__nothrow__)); extern float __j1f (float) __attribute__ ((__nothrow__));
+extern float jnf (int, float) __attribute__ ((__nothrow__)); extern float __jnf (int, float) __attribute__ ((__nothrow__));
+extern float y0f (float) __attribute__ ((__nothrow__)); extern float __y0f (float) __attribute__ ((__nothrow__));
+extern float y1f (float) __attribute__ ((__nothrow__)); extern float __y1f (float) __attribute__ ((__nothrow__));
+extern float ynf (int, float) __attribute__ ((__nothrow__)); extern float __ynf (int, float) __attribute__ ((__nothrow__));
+extern float erff (float) __attribute__ ((__nothrow__)); extern float __erff (float) __attribute__ ((__nothrow__));
+extern float erfcf (float) __attribute__ ((__nothrow__)); extern float __erfcf (float) __attribute__ ((__nothrow__));
+extern float lgammaf (float) __attribute__ ((__nothrow__)); extern float __lgammaf (float) __attribute__ ((__nothrow__));
+extern float tgammaf (float) __attribute__ ((__nothrow__)); extern float __tgammaf (float) __attribute__ ((__nothrow__));
+extern float gammaf (float) __attribute__ ((__nothrow__)); extern float __gammaf (float) __attribute__ ((__nothrow__));
+extern float lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__)); extern float __lgammaf_r (float, int *__signgamp) __attribute__ ((__nothrow__));
+extern float rintf (float __x) __attribute__ ((__nothrow__)); extern float __rintf (float __x) __attribute__ ((__nothrow__));
+extern float nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float remainderf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __remainderf (float __x, float __y) __attribute__ ((__nothrow__));
+extern float scalbnf (float __x, int __n) __attribute__ ((__nothrow__)); extern float __scalbnf (float __x, int __n) __attribute__ ((__nothrow__));
+extern int ilogbf (float __x) __attribute__ ((__nothrow__)); extern int __ilogbf (float __x) __attribute__ ((__nothrow__));
+extern float scalblnf (float __x, long int __n) __attribute__ ((__nothrow__)); extern float __scalblnf (float __x, long int __n) __attribute__ ((__nothrow__));
+extern float nearbyintf (float __x) __attribute__ ((__nothrow__)); extern float __nearbyintf (float __x) __attribute__ ((__nothrow__));
+extern float roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __roundf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern float __truncf (float __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern float remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__)); extern float __remquof (float __x, float __y, int *__quo) __attribute__ ((__nothrow__));
+extern long int lrintf (float __x) __attribute__ ((__nothrow__)); extern long int __lrintf (float __x) __attribute__ ((__nothrow__));
+extern long long int llrintf (float __x) __attribute__ ((__nothrow__)); extern long long int __llrintf (float __x) __attribute__ ((__nothrow__));
+extern long int lroundf (float __x) __attribute__ ((__nothrow__)); extern long int __lroundf (float __x) __attribute__ ((__nothrow__));
+extern long long int llroundf (float __x) __attribute__ ((__nothrow__)); extern long long int __llroundf (float __x) __attribute__ ((__nothrow__));
+extern float fdimf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fdimf (float __x, float __y) __attribute__ ((__nothrow__));
+extern float fmaxf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fmaxf (float __x, float __y) __attribute__ ((__nothrow__));
+extern float fminf (float __x, float __y) __attribute__ ((__nothrow__)); extern float __fminf (float __x, float __y) __attribute__ ((__nothrow__));
+extern int __fpclassifyf (float __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+extern int __signbitf (float __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+extern float fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__)); extern float __fmaf (float __x, float __y, float __z) __attribute__ ((__nothrow__));
+extern float scalbf (float __x, float __n) __attribute__ ((__nothrow__)); extern float __scalbf (float __x, float __n) __attribute__ ((__nothrow__));
+extern long double acosl (long double __x) __attribute__ ((__nothrow__)); extern long double __acosl (long double __x) __attribute__ ((__nothrow__));
+extern long double asinl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinl (long double __x) __attribute__ ((__nothrow__));
+extern long double atanl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanl (long double __x) __attribute__ ((__nothrow__));
+extern long double atan2l (long double __y, long double __x) __attribute__ ((__nothrow__)); extern long double __atan2l (long double __y, long double __x) __attribute__ ((__nothrow__));
+extern long double cosl (long double __x) __attribute__ ((__nothrow__)); extern long double __cosl (long double __x) __attribute__ ((__nothrow__));
+extern long double sinl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinl (long double __x) __attribute__ ((__nothrow__));
+extern long double tanl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanl (long double __x) __attribute__ ((__nothrow__));
+extern long double coshl (long double __x) __attribute__ ((__nothrow__)); extern long double __coshl (long double __x) __attribute__ ((__nothrow__));
+extern long double sinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __sinhl (long double __x) __attribute__ ((__nothrow__));
+extern long double tanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __tanhl (long double __x) __attribute__ ((__nothrow__));
+extern long double acoshl (long double __x) __attribute__ ((__nothrow__)); extern long double __acoshl (long double __x) __attribute__ ((__nothrow__));
+extern long double asinhl (long double __x) __attribute__ ((__nothrow__)); extern long double __asinhl (long double __x) __attribute__ ((__nothrow__));
+extern long double atanhl (long double __x) __attribute__ ((__nothrow__)); extern long double __atanhl (long double __x) __attribute__ ((__nothrow__));
+extern long double expl (long double __x) __attribute__ ((__nothrow__)); extern long double __expl (long double __x) __attribute__ ((__nothrow__));
+extern long double frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__)); extern long double __frexpl (long double __x, int *__exponent) __attribute__ ((__nothrow__));
+extern long double ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__)); extern long double __ldexpl (long double __x, int __exponent) __attribute__ ((__nothrow__));
+extern long double logl (long double __x) __attribute__ ((__nothrow__)); extern long double __logl (long double __x) __attribute__ ((__nothrow__));
+extern long double log10l (long double __x) __attribute__ ((__nothrow__)); extern long double __log10l (long double __x) __attribute__ ((__nothrow__));
+extern long double modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__)); extern long double __modfl (long double __x, long double *__iptr) __attribute__ ((__nothrow__));
+extern long double expm1l (long double __x) __attribute__ ((__nothrow__)); extern long double __expm1l (long double __x) __attribute__ ((__nothrow__));
+extern long double log1pl (long double __x) __attribute__ ((__nothrow__)); extern long double __log1pl (long double __x) __attribute__ ((__nothrow__));
+extern long double logbl (long double __x) __attribute__ ((__nothrow__)); extern long double __logbl (long double __x) __attribute__ ((__nothrow__));
+extern long double exp2l (long double __x) __attribute__ ((__nothrow__)); extern long double __exp2l (long double __x) __attribute__ ((__nothrow__));
+extern long double log2l (long double __x) __attribute__ ((__nothrow__)); extern long double __log2l (long double __x) __attribute__ ((__nothrow__));
+extern long double powl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __powl (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern long double sqrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __sqrtl (long double __x) __attribute__ ((__nothrow__));
+extern long double hypotl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __hypotl (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern long double cbrtl (long double __x) __attribute__ ((__nothrow__)); extern long double __cbrtl (long double __x) __attribute__ ((__nothrow__));
+extern long double ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __ceill (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __fabsl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __floorl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double fmodl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmodl (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern int __isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int __finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int isinfl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int finitel (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double dreml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __dreml (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern long double significandl (long double __x) __attribute__ ((__nothrow__)); extern long double __significandl (long double __x) __attribute__ ((__nothrow__));
+extern long double copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __copysignl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nanl (__const char *__tagb) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int __isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int isnanl (long double __value) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double j0l (long double) __attribute__ ((__nothrow__)); extern long double __j0l (long double) __attribute__ ((__nothrow__));
+extern long double j1l (long double) __attribute__ ((__nothrow__)); extern long double __j1l (long double) __attribute__ ((__nothrow__));
+extern long double jnl (int, long double) __attribute__ ((__nothrow__)); extern long double __jnl (int, long double) __attribute__ ((__nothrow__));
+extern long double y0l (long double) __attribute__ ((__nothrow__)); extern long double __y0l (long double) __attribute__ ((__nothrow__));
+extern long double y1l (long double) __attribute__ ((__nothrow__)); extern long double __y1l (long double) __attribute__ ((__nothrow__));
+extern long double ynl (int, long double) __attribute__ ((__nothrow__)); extern long double __ynl (int, long double) __attribute__ ((__nothrow__));
+extern long double erfl (long double) __attribute__ ((__nothrow__)); extern long double __erfl (long double) __attribute__ ((__nothrow__));
+extern long double erfcl (long double) __attribute__ ((__nothrow__)); extern long double __erfcl (long double) __attribute__ ((__nothrow__));
+extern long double lgammal (long double) __attribute__ ((__nothrow__)); extern long double __lgammal (long double) __attribute__ ((__nothrow__));
+extern long double tgammal (long double) __attribute__ ((__nothrow__)); extern long double __tgammal (long double) __attribute__ ((__nothrow__));
+extern long double gammal (long double) __attribute__ ((__nothrow__)); extern long double __gammal (long double) __attribute__ ((__nothrow__));
+extern long double lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__)); extern long double __lgammal_r (long double, int *__signgamp) __attribute__ ((__nothrow__));
+extern long double rintl (long double __x) __attribute__ ((__nothrow__)); extern long double __rintl (long double __x) __attribute__ ((__nothrow__));
+extern long double nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nextafterl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __nexttowardl (long double __x, long double __y) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double remainderl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __remainderl (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern long double scalbnl (long double __x, int __n) __attribute__ ((__nothrow__)); extern long double __scalbnl (long double __x, int __n) __attribute__ ((__nothrow__));
+extern int ilogbl (long double __x) __attribute__ ((__nothrow__)); extern int __ilogbl (long double __x) __attribute__ ((__nothrow__));
+extern long double scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__)); extern long double __scalblnl (long double __x, long int __n) __attribute__ ((__nothrow__));
+extern long double nearbyintl (long double __x) __attribute__ ((__nothrow__)); extern long double __nearbyintl (long double __x) __attribute__ ((__nothrow__));
+extern long double roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __roundl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)); extern long double __truncl (long double __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern long double remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__)); extern long double __remquol (long double __x, long double __y, int *__quo) __attribute__ ((__nothrow__));
+extern long int lrintl (long double __x) __attribute__ ((__nothrow__)); extern long int __lrintl (long double __x) __attribute__ ((__nothrow__));
+extern long long int llrintl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llrintl (long double __x) __attribute__ ((__nothrow__));
+extern long int lroundl (long double __x) __attribute__ ((__nothrow__)); extern long int __lroundl (long double __x) __attribute__ ((__nothrow__));
+extern long long int llroundl (long double __x) __attribute__ ((__nothrow__)); extern long long int __llroundl (long double __x) __attribute__ ((__nothrow__));
+extern long double fdiml (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fdiml (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern long double fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fmaxl (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern long double fminl (long double __x, long double __y) __attribute__ ((__nothrow__)); extern long double __fminl (long double __x, long double __y) __attribute__ ((__nothrow__));
+extern int __fpclassifyl (long double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+extern int __signbitl (long double __value) __attribute__ ((__nothrow__))
+ __attribute__ ((__const__));
+extern long double fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__)); extern long double __fmal (long double __x, long double __y, long double __z) __attribute__ ((__nothrow__));
+extern long double scalbl (long double __x, long double __n) __attribute__ ((__nothrow__)); extern long double __scalbl (long double __x, long double __n) __attribute__ ((__nothrow__));
+extern int signgam;
+enum
+ {
+ FP_NAN,
+ FP_INFINITE,
+ FP_ZERO,
+ FP_SUBNORMAL,
+ FP_NORMAL
+ };
+typedef enum
+{
+ _IEEE_ = -1,
+ _SVID_,
+ _XOPEN_,
+ _POSIX_,
+ _ISOC_
+} _LIB_VERSION_TYPE;
+extern _LIB_VERSION_TYPE _LIB_VERSION;
+struct exception
+ {
+ int type;
+ char *name;
+ double arg1;
+ double arg2;
+ double retval;
+ };
+extern int matherr (struct exception *__exc);
+enum
+{
+ _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
+ _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
+ _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
+ _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
+ _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
+ _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
+ _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
+ _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
+ _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
+ _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
+ _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
+ _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
+};
+extern __const unsigned short int **__ctype_b_loc (void)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const));
+extern __const __int32_t **__ctype_tolower_loc (void)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const));
+extern __const __int32_t **__ctype_toupper_loc (void)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const));
+extern int isalnum (int) __attribute__ ((__nothrow__));
+extern int isalpha (int) __attribute__ ((__nothrow__));
+extern int iscntrl (int) __attribute__ ((__nothrow__));
+extern int isdigit (int) __attribute__ ((__nothrow__));
+extern int islower (int) __attribute__ ((__nothrow__));
+extern int isgraph (int) __attribute__ ((__nothrow__));
+extern int isprint (int) __attribute__ ((__nothrow__));
+extern int ispunct (int) __attribute__ ((__nothrow__));
+extern int isspace (int) __attribute__ ((__nothrow__));
+extern int isupper (int) __attribute__ ((__nothrow__));
+extern int isxdigit (int) __attribute__ ((__nothrow__));
+extern int tolower (int __c) __attribute__ ((__nothrow__));
+extern int toupper (int __c) __attribute__ ((__nothrow__));
+extern int isblank (int) __attribute__ ((__nothrow__));
+extern int isascii (int __c) __attribute__ ((__nothrow__));
+extern int toascii (int __c) __attribute__ ((__nothrow__));
+extern int _toupper (int) __attribute__ ((__nothrow__));
+extern int _tolower (int) __attribute__ ((__nothrow__));
+typedef struct __locale_struct
+{
+ struct locale_data *__locales[13];
+ const unsigned short int *__ctype_b;
+ const int *__ctype_tolower;
+ const int *__ctype_toupper;
+ const char *__names[13];
+} *__locale_t;
+typedef __locale_t locale_t;
+extern int isalnum_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isalpha_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int iscntrl_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int islower_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isgraph_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isprint_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int ispunct_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isspace_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isupper_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isxdigit_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int isblank_l (int, __locale_t) __attribute__ ((__nothrow__));
+extern int __tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int tolower_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int __toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+extern int toupper_l (int __c, __locale_t __l) __attribute__ ((__nothrow__));
+typedef __useconds_t useconds_t;
+typedef __intptr_t intptr_t;
+typedef __socklen_t socklen_t;
+extern int access (__const char *__name, int __type) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int faccessat (int __fd, __const char *__file, int __type, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ;
+extern __off_t lseek (int __fd, __off_t __offset, int __whence) __attribute__ ((__nothrow__));
+extern int close (int __fd);
+extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;
+extern ssize_t write (int __fd, __const void *__buf, size_t __n) ;
+extern int pipe (int __pipedes[2]) __attribute__ ((__nothrow__)) ;
+extern unsigned int alarm (unsigned int __seconds) __attribute__ ((__nothrow__));
+extern unsigned int sleep (unsigned int __seconds);
+extern __useconds_t ualarm (__useconds_t __value, __useconds_t __interval)
+ __attribute__ ((__nothrow__));
+extern int usleep (__useconds_t __useconds);
+extern int pause (void);
+extern int chown (__const char *__file, __uid_t __owner, __gid_t __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int fchown (int __fd, __uid_t __owner, __gid_t __group) __attribute__ ((__nothrow__)) ;
+extern int lchown (__const char *__file, __uid_t __owner, __gid_t __group)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int fchownat (int __fd, __const char *__file, __uid_t __owner,
+ __gid_t __group, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ;
+extern int chdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int fchdir (int __fd) __attribute__ ((__nothrow__)) ;
+extern char *getcwd (char *__buf, size_t __size) __attribute__ ((__nothrow__)) ;
+extern char *getwd (char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__)) ;
+extern int dup (int __fd) __attribute__ ((__nothrow__)) ;
+extern int dup2 (int __fd, int __fd2) __attribute__ ((__nothrow__));
+extern char **__environ;
+extern int execve (__const char *__path, char *__const __argv[],
+ char *__const __envp[]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int fexecve (int __fd, char *__const __argv[], char *__const __envp[])
+ __attribute__ ((__nothrow__));
+extern int execv (__const char *__path, char *__const __argv[])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int execle (__const char *__path, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int execl (__const char *__path, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int execvp (__const char *__file, char *__const __argv[])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int execlp (__const char *__file, __const char *__arg, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int nice (int __inc) __attribute__ ((__nothrow__)) ;
+extern void _exit (int __status) __attribute__ ((__noreturn__));
+enum
+ {
+ _PC_LINK_MAX,
+ _PC_MAX_CANON,
+ _PC_MAX_INPUT,
+ _PC_NAME_MAX,
+ _PC_PATH_MAX,
+ _PC_PIPE_BUF,
+ _PC_CHOWN_RESTRICTED,
+ _PC_NO_TRUNC,
+ _PC_VDISABLE,
+ _PC_SYNC_IO,
+ _PC_ASYNC_IO,
+ _PC_PRIO_IO,
+ _PC_SOCK_MAXBUF,
+ _PC_FILESIZEBITS,
+ _PC_REC_INCR_XFER_SIZE,
+ _PC_REC_MAX_XFER_SIZE,
+ _PC_REC_MIN_XFER_SIZE,
+ _PC_REC_XFER_ALIGN,
+ _PC_ALLOC_SIZE_MIN,
+ _PC_SYMLINK_MAX,
+ _PC_2_SYMLINKS
+ };
+enum
+ {
+ _SC_ARG_MAX,
+ _SC_CHILD_MAX,
+ _SC_CLK_TCK,
+ _SC_NGROUPS_MAX,
+ _SC_OPEN_MAX,
+ _SC_STREAM_MAX,
+ _SC_TZNAME_MAX,
+ _SC_JOB_CONTROL,
+ _SC_SAVED_IDS,
+ _SC_REALTIME_SIGNALS,
+ _SC_PRIORITY_SCHEDULING,
+ _SC_TIMERS,
+ _SC_ASYNCHRONOUS_IO,
+ _SC_PRIORITIZED_IO,
+ _SC_SYNCHRONIZED_IO,
+ _SC_FSYNC,
+ _SC_MAPPED_FILES,
+ _SC_MEMLOCK,
+ _SC_MEMLOCK_RANGE,
+ _SC_MEMORY_PROTECTION,
+ _SC_MESSAGE_PASSING,
+ _SC_SEMAPHORES,
+ _SC_SHARED_MEMORY_OBJECTS,
+ _SC_AIO_LISTIO_MAX,
+ _SC_AIO_MAX,
+ _SC_AIO_PRIO_DELTA_MAX,
+ _SC_DELAYTIMER_MAX,
+ _SC_MQ_OPEN_MAX,
+ _SC_MQ_PRIO_MAX,
+ _SC_VERSION,
+ _SC_PAGESIZE,
+ _SC_RTSIG_MAX,
+ _SC_SEM_NSEMS_MAX,
+ _SC_SEM_VALUE_MAX,
+ _SC_SIGQUEUE_MAX,
+ _SC_TIMER_MAX,
+ _SC_BC_BASE_MAX,
+ _SC_BC_DIM_MAX,
+ _SC_BC_SCALE_MAX,
+ _SC_BC_STRING_MAX,
+ _SC_COLL_WEIGHTS_MAX,
+ _SC_EQUIV_CLASS_MAX,
+ _SC_EXPR_NEST_MAX,
+ _SC_LINE_MAX,
+ _SC_RE_DUP_MAX,
+ _SC_CHARCLASS_NAME_MAX,
+ _SC_2_VERSION,
+ _SC_2_C_BIND,
+ _SC_2_C_DEV,
+ _SC_2_FORT_DEV,
+ _SC_2_FORT_RUN,
+ _SC_2_SW_DEV,
+ _SC_2_LOCALEDEF,
+ _SC_PII,
+ _SC_PII_XTI,
+ _SC_PII_SOCKET,
+ _SC_PII_INTERNET,
+ _SC_PII_OSI,
+ _SC_POLL,
+ _SC_SELECT,
+ _SC_UIO_MAXIOV,
+ _SC_IOV_MAX = _SC_UIO_MAXIOV,
+ _SC_PII_INTERNET_STREAM,
+ _SC_PII_INTERNET_DGRAM,
+ _SC_PII_OSI_COTS,
+ _SC_PII_OSI_CLTS,
+ _SC_PII_OSI_M,
+ _SC_T_IOV_MAX,
+ _SC_THREADS,
+ _SC_THREAD_SAFE_FUNCTIONS,
+ _SC_GETGR_R_SIZE_MAX,
+ _SC_GETPW_R_SIZE_MAX,
+ _SC_LOGIN_NAME_MAX,
+ _SC_TTY_NAME_MAX,
+ _SC_THREAD_DESTRUCTOR_ITERATIONS,
+ _SC_THREAD_KEYS_MAX,
+ _SC_THREAD_STACK_MIN,
+ _SC_THREAD_THREADS_MAX,
+ _SC_THREAD_ATTR_STACKADDR,
+ _SC_THREAD_ATTR_STACKSIZE,
+ _SC_THREAD_PRIORITY_SCHEDULING,
+ _SC_THREAD_PRIO_INHERIT,
+ _SC_THREAD_PRIO_PROTECT,
+ _SC_THREAD_PROCESS_SHARED,
+ _SC_NPROCESSORS_CONF,
+ _SC_NPROCESSORS_ONLN,
+ _SC_PHYS_PAGES,
+ _SC_AVPHYS_PAGES,
+ _SC_ATEXIT_MAX,
+ _SC_PASS_MAX,
+ _SC_XOPEN_VERSION,
+ _SC_XOPEN_XCU_VERSION,
+ _SC_XOPEN_UNIX,
+ _SC_XOPEN_CRYPT,
+ _SC_XOPEN_ENH_I18N,
+ _SC_XOPEN_SHM,
+ _SC_2_CHAR_TERM,
+ _SC_2_C_VERSION,
+ _SC_2_UPE,
+ _SC_XOPEN_XPG2,
+ _SC_XOPEN_XPG3,
+ _SC_XOPEN_XPG4,
+ _SC_CHAR_BIT,
+ _SC_CHAR_MAX,
+ _SC_CHAR_MIN,
+ _SC_INT_MAX,
+ _SC_INT_MIN,
+ _SC_LONG_BIT,
+ _SC_WORD_BIT,
+ _SC_MB_LEN_MAX,
+ _SC_NZERO,
+ _SC_SSIZE_MAX,
+ _SC_SCHAR_MAX,
+ _SC_SCHAR_MIN,
+ _SC_SHRT_MAX,
+ _SC_SHRT_MIN,
+ _SC_UCHAR_MAX,
+ _SC_UINT_MAX,
+ _SC_ULONG_MAX,
+ _SC_USHRT_MAX,
+ _SC_NL_ARGMAX,
+ _SC_NL_LANGMAX,
+ _SC_NL_MSGMAX,
+ _SC_NL_NMAX,
+ _SC_NL_SETMAX,
+ _SC_NL_TEXTMAX,
+ _SC_XBS5_ILP32_OFF32,
+ _SC_XBS5_ILP32_OFFBIG,
+ _SC_XBS5_LP64_OFF64,
+ _SC_XBS5_LPBIG_OFFBIG,
+ _SC_XOPEN_LEGACY,
+ _SC_XOPEN_REALTIME,
+ _SC_XOPEN_REALTIME_THREADS,
+ _SC_ADVISORY_INFO,
+ _SC_BARRIERS,
+ _SC_BASE,
+ _SC_C_LANG_SUPPORT,
+ _SC_C_LANG_SUPPORT_R,
+ _SC_CLOCK_SELECTION,
+ _SC_CPUTIME,
+ _SC_THREAD_CPUTIME,
+ _SC_DEVICE_IO,
+ _SC_DEVICE_SPECIFIC,
+ _SC_DEVICE_SPECIFIC_R,
+ _SC_FD_MGMT,
+ _SC_FIFO,
+ _SC_PIPE,
+ _SC_FILE_ATTRIBUTES,
+ _SC_FILE_LOCKING,
+ _SC_FILE_SYSTEM,
+ _SC_MONOTONIC_CLOCK,
+ _SC_MULTI_PROCESS,
+ _SC_SINGLE_PROCESS,
+ _SC_NETWORKING,
+ _SC_READER_WRITER_LOCKS,
+ _SC_SPIN_LOCKS,
+ _SC_REGEXP,
+ _SC_REGEX_VERSION,
+ _SC_SHELL,
+ _SC_SIGNALS,
+ _SC_SPAWN,
+ _SC_SPORADIC_SERVER,
+ _SC_THREAD_SPORADIC_SERVER,
+ _SC_SYSTEM_DATABASE,
+ _SC_SYSTEM_DATABASE_R,
+ _SC_TIMEOUTS,
+ _SC_TYPED_MEMORY_OBJECTS,
+ _SC_USER_GROUPS,
+ _SC_USER_GROUPS_R,
+ _SC_2_PBS,
+ _SC_2_PBS_ACCOUNTING,
+ _SC_2_PBS_LOCATE,
+ _SC_2_PBS_MESSAGE,
+ _SC_2_PBS_TRACK,
+ _SC_SYMLOOP_MAX,
+ _SC_STREAMS,
+ _SC_2_PBS_CHECKPOINT,
+ _SC_V6_ILP32_OFF32,
+ _SC_V6_ILP32_OFFBIG,
+ _SC_V6_LP64_OFF64,
+ _SC_V6_LPBIG_OFFBIG,
+ _SC_HOST_NAME_MAX,
+ _SC_TRACE,
+ _SC_TRACE_EVENT_FILTER,
+ _SC_TRACE_INHERIT,
+ _SC_TRACE_LOG,
+ _SC_LEVEL1_ICACHE_SIZE,
+ _SC_LEVEL1_ICACHE_ASSOC,
+ _SC_LEVEL1_ICACHE_LINESIZE,
+ _SC_LEVEL1_DCACHE_SIZE,
+ _SC_LEVEL1_DCACHE_ASSOC,
+ _SC_LEVEL1_DCACHE_LINESIZE,
+ _SC_LEVEL2_CACHE_SIZE,
+ _SC_LEVEL2_CACHE_ASSOC,
+ _SC_LEVEL2_CACHE_LINESIZE,
+ _SC_LEVEL3_CACHE_SIZE,
+ _SC_LEVEL3_CACHE_ASSOC,
+ _SC_LEVEL3_CACHE_LINESIZE,
+ _SC_LEVEL4_CACHE_SIZE,
+ _SC_LEVEL4_CACHE_ASSOC,
+ _SC_LEVEL4_CACHE_LINESIZE,
+ _SC_IPV6 = _SC_LEVEL1_ICACHE_SIZE + 50,
+ _SC_RAW_SOCKETS,
+ _SC_V7_ILP32_OFF32,
+ _SC_V7_ILP32_OFFBIG,
+ _SC_V7_LP64_OFF64,
+ _SC_V7_LPBIG_OFFBIG,
+ _SC_SS_REPL_MAX,
+ _SC_TRACE_EVENT_NAME_MAX,
+ _SC_TRACE_NAME_MAX,
+ _SC_TRACE_SYS_MAX,
+ _SC_TRACE_USER_EVENT_MAX,
+ _SC_XOPEN_STREAMS,
+ _SC_THREAD_ROBUST_PRIO_INHERIT,
+ _SC_THREAD_ROBUST_PRIO_PROTECT,
+ };
+enum
+ {
+ _CS_PATH,
+ _CS_V6_WIDTH_RESTRICTED_ENVS,
+ _CS_GNU_LIBC_VERSION,
+ _CS_GNU_LIBPTHREAD_VERSION,
+ _CS_V5_WIDTH_RESTRICTED_ENVS,
+ _CS_V7_WIDTH_RESTRICTED_ENVS,
+ _CS_LFS_CFLAGS = 1000,
+ _CS_LFS_LDFLAGS,
+ _CS_LFS_LIBS,
+ _CS_LFS_LINTFLAGS,
+ _CS_LFS64_CFLAGS,
+ _CS_LFS64_LDFLAGS,
+ _CS_LFS64_LIBS,
+ _CS_LFS64_LINTFLAGS,
+ _CS_XBS5_ILP32_OFF32_CFLAGS = 1100,
+ _CS_XBS5_ILP32_OFF32_LDFLAGS,
+ _CS_XBS5_ILP32_OFF32_LIBS,
+ _CS_XBS5_ILP32_OFF32_LINTFLAGS,
+ _CS_XBS5_ILP32_OFFBIG_CFLAGS,
+ _CS_XBS5_ILP32_OFFBIG_LDFLAGS,
+ _CS_XBS5_ILP32_OFFBIG_LIBS,
+ _CS_XBS5_ILP32_OFFBIG_LINTFLAGS,
+ _CS_XBS5_LP64_OFF64_CFLAGS,
+ _CS_XBS5_LP64_OFF64_LDFLAGS,
+ _CS_XBS5_LP64_OFF64_LIBS,
+ _CS_XBS5_LP64_OFF64_LINTFLAGS,
+ _CS_XBS5_LPBIG_OFFBIG_CFLAGS,
+ _CS_XBS5_LPBIG_OFFBIG_LDFLAGS,
+ _CS_XBS5_LPBIG_OFFBIG_LIBS,
+ _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS,
+ _CS_POSIX_V6_ILP32_OFF32_CFLAGS,
+ _CS_POSIX_V6_ILP32_OFF32_LDFLAGS,
+ _CS_POSIX_V6_ILP32_OFF32_LIBS,
+ _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS,
+ _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS,
+ _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS,
+ _CS_POSIX_V6_ILP32_OFFBIG_LIBS,
+ _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS,
+ _CS_POSIX_V6_LP64_OFF64_CFLAGS,
+ _CS_POSIX_V6_LP64_OFF64_LDFLAGS,
+ _CS_POSIX_V6_LP64_OFF64_LIBS,
+ _CS_POSIX_V6_LP64_OFF64_LINTFLAGS,
+ _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS,
+ _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS,
+ _CS_POSIX_V6_LPBIG_OFFBIG_LIBS,
+ _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS,
+ _CS_POSIX_V7_ILP32_OFF32_CFLAGS,
+ _CS_POSIX_V7_ILP32_OFF32_LDFLAGS,
+ _CS_POSIX_V7_ILP32_OFF32_LIBS,
+ _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS,
+ _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS,
+ _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS,
+ _CS_POSIX_V7_ILP32_OFFBIG_LIBS,
+ _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS,
+ _CS_POSIX_V7_LP64_OFF64_CFLAGS,
+ _CS_POSIX_V7_LP64_OFF64_LDFLAGS,
+ _CS_POSIX_V7_LP64_OFF64_LIBS,
+ _CS_POSIX_V7_LP64_OFF64_LINTFLAGS,
+ _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS,
+ _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS,
+ _CS_POSIX_V7_LPBIG_OFFBIG_LIBS,
+ _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS
+ };
+extern long int pathconf (__const char *__path, int __name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern long int fpathconf (int __fd, int __name) __attribute__ ((__nothrow__));
+extern long int sysconf (int __name) __attribute__ ((__nothrow__));
+extern size_t confstr (int __name, char *__buf, size_t __len) __attribute__ ((__nothrow__));
+extern __pid_t getpid (void) __attribute__ ((__nothrow__));
+extern __pid_t getppid (void) __attribute__ ((__nothrow__));
+extern __pid_t getpgrp (void) __attribute__ ((__nothrow__));
+extern __pid_t __getpgid (__pid_t __pid) __attribute__ ((__nothrow__));
+extern int setpgid (__pid_t __pid, __pid_t __pgid) __attribute__ ((__nothrow__));
+extern int setpgrp (void) __attribute__ ((__nothrow__));
+extern __pid_t setsid (void) __attribute__ ((__nothrow__));
+extern __uid_t getuid (void) __attribute__ ((__nothrow__));
+extern __uid_t geteuid (void) __attribute__ ((__nothrow__));
+extern __gid_t getgid (void) __attribute__ ((__nothrow__));
+extern __gid_t getegid (void) __attribute__ ((__nothrow__));
+extern int getgroups (int __size, __gid_t __list[]) __attribute__ ((__nothrow__)) ;
+extern int setuid (__uid_t __uid) __attribute__ ((__nothrow__));
+extern int setreuid (__uid_t __ruid, __uid_t __euid) __attribute__ ((__nothrow__));
+extern int seteuid (__uid_t __uid) __attribute__ ((__nothrow__));
+extern int setgid (__gid_t __gid) __attribute__ ((__nothrow__));
+extern int setregid (__gid_t __rgid, __gid_t __egid) __attribute__ ((__nothrow__));
+extern int setegid (__gid_t __gid) __attribute__ ((__nothrow__));
+extern __pid_t fork (void) __attribute__ ((__nothrow__));
+extern __pid_t vfork (void) __attribute__ ((__nothrow__));
+extern char *ttyname (int __fd) __attribute__ ((__nothrow__));
+extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ;
+extern int isatty (int __fd) __attribute__ ((__nothrow__));
+extern int ttyslot (void) __attribute__ ((__nothrow__));
+extern int link (__const char *__from, __const char *__to)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ;
+extern int linkat (int __fromfd, __const char *__from, int __tofd,
+ __const char *__to, int __flags)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4))) ;
+extern int symlink (__const char *__from, __const char *__to)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ;
+extern ssize_t readlink (__const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2))) ;
+extern int symlinkat (__const char *__from, int __tofd,
+ __const char *__to) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 3))) ;
+extern ssize_t readlinkat (int __fd, __const char *__restrict __path,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3))) ;
+extern int unlink (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int unlinkat (int __fd, __const char *__name, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int rmdir (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern __pid_t tcgetpgrp (int __fd) __attribute__ ((__nothrow__));
+extern int tcsetpgrp (int __fd, __pid_t __pgrp_id) __attribute__ ((__nothrow__));
+extern char *getlogin (void);
+extern int getlogin_r (char *__name, size_t __name_len) __attribute__ ((__nonnull__ (1)));
+extern int setlogin (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern char *optarg;
+extern int optind;
+extern int opterr;
+extern int optopt;
+extern int getopt (int ___argc, char *const *___argv, const char *__shortopts)
+ __attribute__ ((__nothrow__));
+extern int gethostname (char *__name, size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int sethostname (__const char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int sethostid (long int __id) __attribute__ ((__nothrow__)) ;
+extern int getdomainname (char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int setdomainname (__const char *__name, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int vhangup (void) __attribute__ ((__nothrow__));
+extern int revoke (__const char *__file) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int profil (unsigned short int *__sample_buffer, size_t __size,
+ size_t __offset, unsigned int __scale)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int acct (__const char *__name) __attribute__ ((__nothrow__));
+extern char *getusershell (void) __attribute__ ((__nothrow__));
+extern void endusershell (void) __attribute__ ((__nothrow__));
+extern void setusershell (void) __attribute__ ((__nothrow__));
+extern int daemon (int __nochdir, int __noclose) __attribute__ ((__nothrow__)) ;
+extern int chroot (__const char *__path) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern char *getpass (__const char *__prompt) __attribute__ ((__nonnull__ (1)));
+extern int fsync (int __fd);
+extern long int gethostid (void);
+extern void sync (void) __attribute__ ((__nothrow__));
+extern int getpagesize (void) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int getdtablesize (void) __attribute__ ((__nothrow__));
+extern int truncate (__const char *__file, __off_t __length)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int ftruncate (int __fd, __off_t __length) __attribute__ ((__nothrow__)) ;
+extern int brk (void *__addr) __attribute__ ((__nothrow__)) ;
+extern void *sbrk (intptr_t __delta) __attribute__ ((__nothrow__));
+extern long int syscall (long int __sysno, ...) __attribute__ ((__nothrow__));
+extern int lockf (int __fd, int __cmd, __off_t __len) ;
+extern int fdatasync (int __fildes);
+extern int __sigismember (__const __sigset_t *, int);
+extern int __sigaddset (__sigset_t *, int);
+extern int __sigdelset (__sigset_t *, int);
+typedef __sig_atomic_t sig_atomic_t;
+typedef union sigval
+ {
+ int sival_int;
+ void *sival_ptr;
+ } sigval_t;
+typedef struct siginfo
+ {
+ int si_signo;
+ int si_errno;
+ int si_code;
+ union
+ {
+ int _pad[((128 / sizeof (int)) - 4)];
+ struct
+ {
+ __pid_t si_pid;
+ __uid_t si_uid;
+ } _kill;
+ struct
+ {
+ int si_tid;
+ int si_overrun;
+ sigval_t si_sigval;
+ } _timer;
+ struct
+ {
+ __pid_t si_pid;
+ __uid_t si_uid;
+ sigval_t si_sigval;
+ } _rt;
+ struct
+ {
+ __pid_t si_pid;
+ __uid_t si_uid;
+ int si_status;
+ __clock_t si_utime;
+ __clock_t si_stime;
+ } _sigchld;
+ struct
+ {
+ void *si_addr;
+ } _sigfault;
+ struct
+ {
+ long int si_band;
+ int si_fd;
+ } _sigpoll;
+ } _sifields;
+ } siginfo_t;
+enum
+{
+ SI_ASYNCNL = -60,
+ SI_TKILL = -6,
+ SI_SIGIO,
+ SI_ASYNCIO,
+ SI_MESGQ,
+ SI_TIMER,
+ SI_QUEUE,
+ SI_USER,
+ SI_KERNEL = 0x80
+};
+enum
+{
+ ILL_ILLOPC = 1,
+ ILL_ILLOPN,
+ ILL_ILLADR,
+ ILL_ILLTRP,
+ ILL_PRVOPC,
+ ILL_PRVREG,
+ ILL_COPROC,
+ ILL_BADSTK
+};
+enum
+{
+ FPE_INTDIV = 1,
+ FPE_INTOVF,
+ FPE_FLTDIV,
+ FPE_FLTOVF,
+ FPE_FLTUND,
+ FPE_FLTRES,
+ FPE_FLTINV,
+ FPE_FLTSUB
+};
+enum
+{
+ SEGV_MAPERR = 1,
+ SEGV_ACCERR
+};
+enum
+{
+ BUS_ADRALN = 1,
+ BUS_ADRERR,
+ BUS_OBJERR
+};
+enum
+{
+ TRAP_BRKPT = 1,
+ TRAP_TRACE
+};
+enum
+{
+ CLD_EXITED = 1,
+ CLD_KILLED,
+ CLD_DUMPED,
+ CLD_TRAPPED,
+ CLD_STOPPED,
+ CLD_CONTINUED
+};
+enum
+{
+ POLL_IN = 1,
+ POLL_OUT,
+ POLL_MSG,
+ POLL_ERR,
+ POLL_PRI,
+ POLL_HUP
+};
+typedef struct sigevent
+ {
+ sigval_t sigev_value;
+ int sigev_signo;
+ int sigev_notify;
+ union
+ {
+ int _pad[((64 / sizeof (int)) - 4)];
+ __pid_t _tid;
+ struct
+ {
+ void (*_function) (sigval_t);
+ void *_attribute;
+ } _sigev_thread;
+ } _sigev_un;
+ } sigevent_t;
+enum
+{
+ SIGEV_SIGNAL = 0,
+ SIGEV_NONE,
+ SIGEV_THREAD,
+ SIGEV_THREAD_ID = 4
+};
+typedef void (*__sighandler_t) (int);
+extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
+ __attribute__ ((__nothrow__));
+extern __sighandler_t signal (int __sig, __sighandler_t __handler)
+ __attribute__ ((__nothrow__));
+extern int kill (__pid_t __pid, int __sig) __attribute__ ((__nothrow__));
+extern int killpg (__pid_t __pgrp, int __sig) __attribute__ ((__nothrow__));
+extern int raise (int __sig) __attribute__ ((__nothrow__));
+extern __sighandler_t ssignal (int __sig, __sighandler_t __handler)
+ __attribute__ ((__nothrow__));
+extern int gsignal (int __sig) __attribute__ ((__nothrow__));
+extern void psignal (int __sig, __const char *__s);
+extern void psiginfo (__const siginfo_t *__pinfo, __const char *__s);
+extern int __sigpause (int __sig_or_mask, int __is_sig);
+extern int sigblock (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
+extern int sigsetmask (int __mask) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
+extern int siggetmask (void) __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
+typedef __sighandler_t sig_t;
+extern int sigemptyset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int sigfillset (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int sigaddset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int sigdelset (sigset_t *__set, int __signo) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int sigismember (__const sigset_t *__set, int __signo)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+struct sigaction
+ {
+ union
+ {
+ __sighandler_t sa_handler;
+ void (*sa_sigaction) (int, siginfo_t *, void *);
+ }
+ __sigaction_handler;
+ __sigset_t sa_mask;
+ int sa_flags;
+ void (*sa_restorer) (void);
+ };
+extern int sigprocmask (int __how, __const sigset_t *__restrict __set,
+ sigset_t *__restrict __oset) __attribute__ ((__nothrow__));
+extern int sigsuspend (__const sigset_t *__set) __attribute__ ((__nonnull__ (1)));
+extern int sigaction (int __sig, __const struct sigaction *__restrict __act,
+ struct sigaction *__restrict __oact) __attribute__ ((__nothrow__));
+extern int sigpending (sigset_t *__set) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int sigwait (__const sigset_t *__restrict __set, int *__restrict __sig)
+ __attribute__ ((__nonnull__ (1, 2)));
+extern int sigwaitinfo (__const sigset_t *__restrict __set,
+ siginfo_t *__restrict __info) __attribute__ ((__nonnull__ (1)));
+extern int sigtimedwait (__const sigset_t *__restrict __set,
+ siginfo_t *__restrict __info,
+ __const struct timespec *__restrict __timeout)
+ __attribute__ ((__nonnull__ (1)));
+extern int sigqueue (__pid_t __pid, int __sig, __const union sigval __val)
+ __attribute__ ((__nothrow__));
+extern __const char *__const _sys_siglist[65];
+extern __const char *__const sys_siglist[65];
+struct sigvec
+ {
+ __sighandler_t sv_handler;
+ int sv_mask;
+ int sv_flags;
+ };
+extern int sigvec (int __sig, __const struct sigvec *__vec,
+ struct sigvec *__ovec) __attribute__ ((__nothrow__));
+struct _fpreg
+{
+ unsigned short significand[4];
+ unsigned short exponent;
+};
+struct _fpxreg
+{
+ unsigned short significand[4];
+ unsigned short exponent;
+ unsigned short padding[3];
+};
+struct _xmmreg
+{
+ __uint32_t element[4];
+};
+struct _fpstate
+{
+ __uint16_t cwd;
+ __uint16_t swd;
+ __uint16_t ftw;
+ __uint16_t fop;
+ __uint64_t rip;
+ __uint64_t rdp;
+ __uint32_t mxcsr;
+ __uint32_t mxcr_mask;
+ struct _fpxreg _st[8];
+ struct _xmmreg _xmm[16];
+ __uint32_t padding[24];
+};
+struct sigcontext
+{
+ unsigned long r8;
+ unsigned long r9;
+ unsigned long r10;
+ unsigned long r11;
+ unsigned long r12;
+ unsigned long r13;
+ unsigned long r14;
+ unsigned long r15;
+ unsigned long rdi;
+ unsigned long rsi;
+ unsigned long rbp;
+ unsigned long rbx;
+ unsigned long rdx;
+ unsigned long rax;
+ unsigned long rcx;
+ unsigned long rsp;
+ unsigned long rip;
+ unsigned long eflags;
+ unsigned short cs;
+ unsigned short gs;
+ unsigned short fs;
+ unsigned short __pad0;
+ unsigned long err;
+ unsigned long trapno;
+ unsigned long oldmask;
+ unsigned long cr2;
+ struct _fpstate * fpstate;
+ unsigned long __reserved1 [8];
+};
+extern int sigreturn (struct sigcontext *__scp) __attribute__ ((__nothrow__));
+extern int siginterrupt (int __sig, int __interrupt) __attribute__ ((__nothrow__));
+struct sigstack
+ {
+ void *ss_sp;
+ int ss_onstack;
+ };
+enum
+{
+ SS_ONSTACK = 1,
+ SS_DISABLE
+};
+typedef struct sigaltstack
+ {
+ void *ss_sp;
+ int ss_flags;
+ size_t ss_size;
+ } stack_t;
+extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
+ __attribute__ ((__nothrow__)) __attribute__ ((__deprecated__));
+extern int sigaltstack (__const struct sigaltstack *__restrict __ss,
+ struct sigaltstack *__restrict __oss) __attribute__ ((__nothrow__));
+extern int pthread_sigmask (int __how,
+ __const __sigset_t *__restrict __newmask,
+ __sigset_t *__restrict __oldmask)__attribute__ ((__nothrow__));
+extern int pthread_kill (pthread_t __threadid, int __signo) __attribute__ ((__nothrow__));
+extern int __libc_current_sigrtmin (void) __attribute__ ((__nothrow__));
+extern int __libc_current_sigrtmax (void) __attribute__ ((__nothrow__));
+struct stat
+ {
+ __dev_t st_dev;
+ __ino_t st_ino;
+ __nlink_t st_nlink;
+ __mode_t st_mode;
+ __uid_t st_uid;
+ __gid_t st_gid;
+ int __pad0;
+ __dev_t st_rdev;
+ __off_t st_size;
+ __blksize_t st_blksize;
+ __blkcnt_t st_blocks;
+ struct timespec st_atim;
+ struct timespec st_mtim;
+ struct timespec st_ctim;
+ long int __unused[3];
+ };
+extern int stat (__const char *__restrict __file,
+ struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int fstat (int __fd, struct stat *__buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int fstatat (int __fd, __const char *__restrict __file,
+ struct stat *__restrict __buf, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern int lstat (__const char *__restrict __file,
+ struct stat *__restrict __buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int chmod (__const char *__file, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int lchmod (__const char *__file, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int fchmod (int __fd, __mode_t __mode) __attribute__ ((__nothrow__));
+extern int fchmodat (int __fd, __const char *__file, __mode_t __mode,
+ int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2))) ;
+extern __mode_t umask (__mode_t __mask) __attribute__ ((__nothrow__));
+extern int mkdir (__const char *__path, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int mkdirat (int __fd, __const char *__path, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int mknod (__const char *__path, __mode_t __mode, __dev_t __dev)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int mknodat (int __fd, __const char *__path, __mode_t __mode,
+ __dev_t __dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int mkfifo (__const char *__path, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int mkfifoat (int __fd, __const char *__path, __mode_t __mode)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int utimensat (int __fd, __const char *__path,
+ __const struct timespec __times[2],
+ int __flags)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int futimens (int __fd, __const struct timespec __times[2]) __attribute__ ((__nothrow__));
+extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3)));
+extern int __xstat (int __ver, __const char *__filename,
+ struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern int __lxstat (int __ver, __const char *__filename,
+ struct stat *__stat_buf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern int __fxstatat (int __ver, int __fildes, __const char *__filename,
+ struct stat *__stat_buf, int __flag)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4)));
+extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
+ __dev_t *__dev) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+extern int __xmknodat (int __ver, int __fd, __const char *__path,
+ __mode_t __mode, __dev_t *__dev)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 5)));
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned int uint32_t;
+typedef unsigned long int uint64_t;
+typedef signed char int_least8_t;
+typedef short int int_least16_t;
+typedef int int_least32_t;
+typedef long int int_least64_t;
+typedef unsigned char uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int uint_least32_t;
+typedef unsigned long int uint_least64_t;
+typedef signed char int_fast8_t;
+typedef long int int_fast16_t;
+typedef long int int_fast32_t;
+typedef long int int_fast64_t;
+typedef unsigned char uint_fast8_t;
+typedef unsigned long int uint_fast16_t;
+typedef unsigned long int uint_fast32_t;
+typedef unsigned long int uint_fast64_t;
+typedef unsigned long int uintptr_t;
+typedef long int intmax_t;
+typedef unsigned long int uintmax_t;
+typedef unsigned long int mp_limb_t;
+typedef long int mp_limb_signed_t;
+typedef struct
+{
+ int _mp_alloc;
+ int _mp_size;
+ mp_limb_t *_mp_d;
+} __mpz_struct;
+typedef __mpz_struct MP_INT;
+typedef __mpz_struct mpz_t[1];
+typedef mp_limb_t * mp_ptr;
+typedef const mp_limb_t * mp_srcptr;
+typedef long int mp_size_t;
+typedef long int mp_exp_t;
+typedef struct
+{
+ __mpz_struct _mp_num;
+ __mpz_struct _mp_den;
+} __mpq_struct;
+typedef __mpq_struct MP_RAT;
+typedef __mpq_struct mpq_t[1];
+typedef struct
+{
+ int _mp_prec;
+ int _mp_size;
+ mp_exp_t _mp_exp;
+ mp_limb_t *_mp_d;
+} __mpf_struct;
+typedef __mpf_struct mpf_t[1];
+typedef enum
+{
+ GMP_RAND_ALG_DEFAULT = 0,
+ GMP_RAND_ALG_LC = GMP_RAND_ALG_DEFAULT
+} gmp_randalg_t;
+typedef struct
+{
+ mpz_t _mp_seed;
+ gmp_randalg_t _mp_alg;
+ union {
+ void *_mp_lc;
+ } _mp_algdata;
+} __gmp_randstate_struct;
+typedef __gmp_randstate_struct gmp_randstate_t[1];
+typedef const __mpz_struct *mpz_srcptr;
+typedef __mpz_struct *mpz_ptr;
+typedef const __mpf_struct *mpf_srcptr;
+typedef __mpf_struct *mpf_ptr;
+typedef const __mpq_struct *mpq_srcptr;
+typedef __mpq_struct *mpq_ptr;
+ void __gmp_set_memory_functions (void *(*) (size_t), void *(*) (void *, size_t, size_t), void (*) (void *, size_t)) ;
+ void __gmp_get_memory_functions (void *(**) (size_t), void *(**) (void *, size_t, size_t), void (**) (void *, size_t)) ;
+ extern const int __gmp_bits_per_limb;
+ extern int __gmp_errno;
+ extern const char * const __gmp_version;
+ void __gmp_randinit (gmp_randstate_t, gmp_randalg_t, ...);
+ void __gmp_randinit_default (gmp_randstate_t);
+ void __gmp_randinit_lc_2exp (gmp_randstate_t, mpz_srcptr, unsigned long int, unsigned long int);
+ int __gmp_randinit_lc_2exp_size (gmp_randstate_t, unsigned long);
+ void __gmp_randinit_mt (gmp_randstate_t);
+ void __gmp_randinit_set (gmp_randstate_t, const __gmp_randstate_struct *);
+ void __gmp_randseed (gmp_randstate_t, mpz_srcptr);
+ void __gmp_randseed_ui (gmp_randstate_t, unsigned long int);
+ void __gmp_randclear (gmp_randstate_t);
+ unsigned long __gmp_urandomb_ui (gmp_randstate_t, unsigned long);
+ unsigned long __gmp_urandomm_ui (gmp_randstate_t, unsigned long);
+ int __gmp_asprintf (char **, const char *, ...);
+ int __gmp_fprintf (FILE *, const char *, ...);
+ int __gmp_printf (const char *, ...);
+ int __gmp_snprintf (char *, size_t, const char *, ...);
+ int __gmp_sprintf (char *, const char *, ...);
+ int __gmp_fscanf (FILE *, const char *, ...);
+ int __gmp_scanf (const char *, ...);
+ int __gmp_sscanf (const char *, const char *, ...);
+ void *__gmpz_realloc (mpz_ptr, mp_size_t);
+ void __gmpz_abs (mpz_ptr, mpz_srcptr);
+ void __gmpz_add (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_add_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_addmul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_addmul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_and (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_array_init (mpz_ptr, mp_size_t, mp_size_t);
+ void __gmpz_bin_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_bin_uiui (mpz_ptr, unsigned long int, unsigned long int);
+ void __gmpz_cdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_cdiv_q_2exp (mpz_ptr, mpz_srcptr, unsigned long);
+ unsigned long int __gmpz_cdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_cdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+ unsigned long int __gmpz_cdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_cdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_cdiv_r_2exp (mpz_ptr, mpz_srcptr, unsigned long);
+ unsigned long int __gmpz_cdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ unsigned long int __gmpz_cdiv_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+ void __gmpz_clear (mpz_ptr);
+ void __gmpz_clrbit (mpz_ptr, unsigned long int);
+ int __gmpz_cmp (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__));
+ int __gmpz_cmp_d (mpz_srcptr, double) __attribute__ ((__pure__));
+ int __gmpz_cmp_si (mpz_srcptr, signed long int) __attribute__ ((__pure__));
+ int __gmpz_cmp_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+ int __gmpz_cmpabs (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__));
+ int __gmpz_cmpabs_d (mpz_srcptr, double) __attribute__ ((__pure__));
+ int __gmpz_cmpabs_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+ void __gmpz_com (mpz_ptr, mpz_srcptr);
+ void __gmpz_combit (mpz_ptr, unsigned long int);
+ int __gmpz_congruent_p (mpz_srcptr, mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__));
+ int __gmpz_congruent_2exp_p (mpz_srcptr, mpz_srcptr, unsigned long) __attribute__ ((__pure__));
+ int __gmpz_congruent_ui_p (mpz_srcptr, unsigned long, unsigned long) __attribute__ ((__pure__));
+ void __gmpz_divexact (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_divexact_ui (mpz_ptr, mpz_srcptr, unsigned long);
+ int __gmpz_divisible_p (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__));
+ int __gmpz_divisible_ui_p (mpz_srcptr, unsigned long) __attribute__ ((__pure__));
+ int __gmpz_divisible_2exp_p (mpz_srcptr, unsigned long) __attribute__ ((__pure__));
+ void __gmpz_dump (mpz_srcptr);
+ void *__gmpz_export (void *, size_t *, int, size_t, int, size_t, mpz_srcptr);
+ void __gmpz_fac_ui (mpz_ptr, unsigned long int);
+ void __gmpz_fdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_fdiv_q_2exp (mpz_ptr, mpz_srcptr, unsigned long int);
+ unsigned long int __gmpz_fdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_fdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+ unsigned long int __gmpz_fdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_fdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_fdiv_r_2exp (mpz_ptr, mpz_srcptr, unsigned long int);
+ unsigned long int __gmpz_fdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ unsigned long int __gmpz_fdiv_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+ void __gmpz_fib_ui (mpz_ptr, unsigned long int);
+ void __gmpz_fib2_ui (mpz_ptr, mpz_ptr, unsigned long int);
+ int __gmpz_fits_sint_p (mpz_srcptr) __attribute__ ((__pure__));
+ int __gmpz_fits_slong_p (mpz_srcptr) __attribute__ ((__pure__));
+ int __gmpz_fits_sshort_p (mpz_srcptr) __attribute__ ((__pure__));
+ int __gmpz_fits_uint_p (mpz_srcptr) __attribute__ ((__pure__));
+ int __gmpz_fits_ulong_p (mpz_srcptr) __attribute__ ((__pure__));
+ int __gmpz_fits_ushort_p (mpz_srcptr) __attribute__ ((__pure__));
+ void __gmpz_gcd (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ unsigned long int __gmpz_gcd_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_gcdext (mpz_ptr, mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+ double __gmpz_get_d (mpz_srcptr) __attribute__ ((__pure__));
+ double __gmpz_get_d_2exp (signed long int *, mpz_srcptr);
+ long int __gmpz_get_si (mpz_srcptr) __attribute__ ((__pure__));
+ char *__gmpz_get_str (char *, int, mpz_srcptr);
+ unsigned long int __gmpz_get_ui (mpz_srcptr) __attribute__ ((__pure__));
+ mp_limb_t __gmpz_getlimbn (mpz_srcptr, mp_size_t) __attribute__ ((__pure__));
+ unsigned long int __gmpz_hamdist (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__));
+ void __gmpz_import (mpz_ptr, size_t, int, size_t, int, size_t, const void *);
+ void __gmpz_init (mpz_ptr);
+ void __gmpz_init2 (mpz_ptr, unsigned long);
+ void __gmpz_init_set (mpz_ptr, mpz_srcptr);
+ void __gmpz_init_set_d (mpz_ptr, double);
+ void __gmpz_init_set_si (mpz_ptr, signed long int);
+ int __gmpz_init_set_str (mpz_ptr, const char *, int);
+ void __gmpz_init_set_ui (mpz_ptr, unsigned long int);
+ size_t __gmpz_inp_raw (mpz_ptr, FILE *);
+ size_t __gmpz_inp_str (mpz_ptr, FILE *, int);
+ int __gmpz_invert (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_ior (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ int __gmpz_jacobi (mpz_srcptr, mpz_srcptr) __attribute__ ((__pure__));
+ int __gmpz_kronecker_si (mpz_srcptr, long) __attribute__ ((__pure__));
+ int __gmpz_kronecker_ui (mpz_srcptr, unsigned long) __attribute__ ((__pure__));
+ int __gmpz_si_kronecker (long, mpz_srcptr) __attribute__ ((__pure__));
+ int __gmpz_ui_kronecker (unsigned long, mpz_srcptr) __attribute__ ((__pure__));
+ void __gmpz_lcm (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_lcm_ui (mpz_ptr, mpz_srcptr, unsigned long);
+ void __gmpz_lucnum_ui (mpz_ptr, unsigned long int);
+ void __gmpz_lucnum2_ui (mpz_ptr, mpz_ptr, unsigned long int);
+ int __gmpz_millerrabin (mpz_srcptr, int) __attribute__ ((__pure__));
+ void __gmpz_mod (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_mul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_mul_2exp (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_mul_si (mpz_ptr, mpz_srcptr, long int);
+ void __gmpz_mul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_neg (mpz_ptr, mpz_srcptr);
+ void __gmpz_nextprime (mpz_ptr, mpz_srcptr);
+ size_t __gmpz_out_raw (FILE *, mpz_srcptr);
+ size_t __gmpz_out_str (FILE *, int, mpz_srcptr);
+ int __gmpz_perfect_power_p (mpz_srcptr) __attribute__ ((__pure__));
+ int __gmpz_perfect_square_p (mpz_srcptr) __attribute__ ((__pure__));
+ unsigned long int __gmpz_popcount (mpz_srcptr) __attribute__ ((__pure__));
+ void __gmpz_pow_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_powm (mpz_ptr, mpz_srcptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_powm_ui (mpz_ptr, mpz_srcptr, unsigned long int, mpz_srcptr);
+ int __gmpz_probab_prime_p (mpz_srcptr, int) __attribute__ ((__pure__));
+ void __gmpz_random (mpz_ptr, mp_size_t);
+ void __gmpz_random2 (mpz_ptr, mp_size_t);
+ void __gmpz_realloc2 (mpz_ptr, unsigned long);
+ unsigned long int __gmpz_remove (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ int __gmpz_root (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_rootrem (mpz_ptr,mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_rrandomb (mpz_ptr, gmp_randstate_t, unsigned long int);
+ unsigned long int __gmpz_scan0 (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+ unsigned long int __gmpz_scan1 (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+ void __gmpz_set (mpz_ptr, mpz_srcptr);
+ void __gmpz_set_d (mpz_ptr, double);
+ void __gmpz_set_f (mpz_ptr, mpf_srcptr);
+ void __gmpz_set_q (mpz_ptr, mpq_srcptr);
+ void __gmpz_set_si (mpz_ptr, signed long int);
+ int __gmpz_set_str (mpz_ptr, const char *, int);
+ void __gmpz_set_ui (mpz_ptr, unsigned long int);
+ void __gmpz_setbit (mpz_ptr, unsigned long int);
+ size_t __gmpz_size (mpz_srcptr) __attribute__ ((__pure__));
+ size_t __gmpz_sizeinbase (mpz_srcptr, int) __attribute__ ((__pure__));
+ void __gmpz_sqrt (mpz_ptr, mpz_srcptr);
+ void __gmpz_sqrtrem (mpz_ptr, mpz_ptr, mpz_srcptr);
+ void __gmpz_sub (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_sub_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_ui_sub (mpz_ptr, unsigned long int, mpz_srcptr);
+ void __gmpz_submul (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_submul_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_swap (mpz_ptr, mpz_ptr) ;
+ unsigned long int __gmpz_tdiv_ui (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+ void __gmpz_tdiv_q (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_tdiv_q_2exp (mpz_ptr, mpz_srcptr, unsigned long int);
+ unsigned long int __gmpz_tdiv_q_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_tdiv_qr (mpz_ptr, mpz_ptr, mpz_srcptr, mpz_srcptr);
+ unsigned long int __gmpz_tdiv_qr_ui (mpz_ptr, mpz_ptr, mpz_srcptr, unsigned long int);
+ void __gmpz_tdiv_r (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpz_tdiv_r_2exp (mpz_ptr, mpz_srcptr, unsigned long int);
+ unsigned long int __gmpz_tdiv_r_ui (mpz_ptr, mpz_srcptr, unsigned long int);
+ int __gmpz_tstbit (mpz_srcptr, unsigned long int) __attribute__ ((__pure__));
+ void __gmpz_ui_pow_ui (mpz_ptr, unsigned long int, unsigned long int);
+ void __gmpz_urandomb (mpz_ptr, gmp_randstate_t, unsigned long int);
+ void __gmpz_urandomm (mpz_ptr, gmp_randstate_t, mpz_srcptr);
+ void __gmpz_xor (mpz_ptr, mpz_srcptr, mpz_srcptr);
+ void __gmpq_abs (mpq_ptr, mpq_srcptr);
+ void __gmpq_add (mpq_ptr, mpq_srcptr, mpq_srcptr);
+ void __gmpq_canonicalize (mpq_ptr);
+ void __gmpq_clear (mpq_ptr);
+ int __gmpq_cmp (mpq_srcptr, mpq_srcptr) __attribute__ ((__pure__));
+ int __gmpq_cmp_si (mpq_srcptr, long, unsigned long) __attribute__ ((__pure__));
+ int __gmpq_cmp_ui (mpq_srcptr, unsigned long int, unsigned long int) __attribute__ ((__pure__));
+ void __gmpq_div (mpq_ptr, mpq_srcptr, mpq_srcptr);
+ void __gmpq_div_2exp (mpq_ptr, mpq_srcptr, unsigned long);
+ int __gmpq_equal (mpq_srcptr, mpq_srcptr) __attribute__ ((__pure__));
+ void __gmpq_get_num (mpz_ptr, mpq_srcptr);
+ void __gmpq_get_den (mpz_ptr, mpq_srcptr);
+ double __gmpq_get_d (mpq_srcptr) __attribute__ ((__pure__));
+ char *__gmpq_get_str (char *, int, mpq_srcptr);
+ void __gmpq_init (mpq_ptr);
+ size_t __gmpq_inp_str (mpq_ptr, FILE *, int);
+ void __gmpq_inv (mpq_ptr, mpq_srcptr);
+ void __gmpq_mul (mpq_ptr, mpq_srcptr, mpq_srcptr);
+ void __gmpq_mul_2exp (mpq_ptr, mpq_srcptr, unsigned long);
+ void __gmpq_neg (mpq_ptr, mpq_srcptr);
+ size_t __gmpq_out_str (FILE *, int, mpq_srcptr);
+ void __gmpq_set (mpq_ptr, mpq_srcptr);
+ void __gmpq_set_d (mpq_ptr, double);
+ void __gmpq_set_den (mpq_ptr, mpz_srcptr);
+ void __gmpq_set_f (mpq_ptr, mpf_srcptr);
+ void __gmpq_set_num (mpq_ptr, mpz_srcptr);
+ void __gmpq_set_si (mpq_ptr, signed long int, unsigned long int);
+ int __gmpq_set_str (mpq_ptr, const char *, int);
+ void __gmpq_set_ui (mpq_ptr, unsigned long int, unsigned long int);
+ void __gmpq_set_z (mpq_ptr, mpz_srcptr);
+ void __gmpq_sub (mpq_ptr, mpq_srcptr, mpq_srcptr);
+ void __gmpq_swap (mpq_ptr, mpq_ptr) ;
+ void __gmpf_abs (mpf_ptr, mpf_srcptr);
+ void __gmpf_add (mpf_ptr, mpf_srcptr, mpf_srcptr);
+ void __gmpf_add_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+ void __gmpf_ceil (mpf_ptr, mpf_srcptr);
+ void __gmpf_clear (mpf_ptr);
+ int __gmpf_cmp (mpf_srcptr, mpf_srcptr) __attribute__ ((__pure__));
+ int __gmpf_cmp_d (mpf_srcptr, double) __attribute__ ((__pure__));
+ int __gmpf_cmp_si (mpf_srcptr, signed long int) __attribute__ ((__pure__));
+ int __gmpf_cmp_ui (mpf_srcptr, unsigned long int) __attribute__ ((__pure__));
+ void __gmpf_div (mpf_ptr, mpf_srcptr, mpf_srcptr);
+ void __gmpf_div_2exp (mpf_ptr, mpf_srcptr, unsigned long int);
+ void __gmpf_div_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+ void __gmpf_dump (mpf_srcptr);
+ int __gmpf_eq (mpf_srcptr, mpf_srcptr, unsigned long int) __attribute__ ((__pure__));
+ int __gmpf_fits_sint_p (mpf_srcptr) __attribute__ ((__pure__));
+ int __gmpf_fits_slong_p (mpf_srcptr) __attribute__ ((__pure__));
+ int __gmpf_fits_sshort_p (mpf_srcptr) __attribute__ ((__pure__));
+ int __gmpf_fits_uint_p (mpf_srcptr) __attribute__ ((__pure__));
+ int __gmpf_fits_ulong_p (mpf_srcptr) __attribute__ ((__pure__));
+ int __gmpf_fits_ushort_p (mpf_srcptr) __attribute__ ((__pure__));
+ void __gmpf_floor (mpf_ptr, mpf_srcptr);
+ double __gmpf_get_d (mpf_srcptr) __attribute__ ((__pure__));
+ double __gmpf_get_d_2exp (signed long int *, mpf_srcptr);
+ unsigned long int __gmpf_get_default_prec (void) __attribute__ ((__pure__));
+ unsigned long int __gmpf_get_prec (mpf_srcptr) __attribute__ ((__pure__));
+ long __gmpf_get_si (mpf_srcptr) __attribute__ ((__pure__));
+ char *__gmpf_get_str (char *, mp_exp_t *, int, size_t, mpf_srcptr);
+ unsigned long __gmpf_get_ui (mpf_srcptr) __attribute__ ((__pure__));
+ void __gmpf_init (mpf_ptr);
+ void __gmpf_init2 (mpf_ptr, unsigned long int);
+ void __gmpf_init_set (mpf_ptr, mpf_srcptr);
+ void __gmpf_init_set_d (mpf_ptr, double);
+ void __gmpf_init_set_si (mpf_ptr, signed long int);
+ int __gmpf_init_set_str (mpf_ptr, const char *, int);
+ void __gmpf_init_set_ui (mpf_ptr, unsigned long int);
+ size_t __gmpf_inp_str (mpf_ptr, FILE *, int);
+ int __gmpf_integer_p (mpf_srcptr) __attribute__ ((__pure__));
+ void __gmpf_mul (mpf_ptr, mpf_srcptr, mpf_srcptr);
+ void __gmpf_mul_2exp (mpf_ptr, mpf_srcptr, unsigned long int);
+ void __gmpf_mul_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+ void __gmpf_neg (mpf_ptr, mpf_srcptr);
+ size_t __gmpf_out_str (FILE *, int, size_t, mpf_srcptr);
+ void __gmpf_pow_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+ void __gmpf_random2 (mpf_ptr, mp_size_t, mp_exp_t);
+ void __gmpf_reldiff (mpf_ptr, mpf_srcptr, mpf_srcptr);
+ void __gmpf_set (mpf_ptr, mpf_srcptr);
+ void __gmpf_set_d (mpf_ptr, double);
+ void __gmpf_set_default_prec (unsigned long int) ;
+ void __gmpf_set_prec (mpf_ptr, unsigned long int);
+ void __gmpf_set_prec_raw (mpf_ptr, unsigned long int) ;
+ void __gmpf_set_q (mpf_ptr, mpq_srcptr);
+ void __gmpf_set_si (mpf_ptr, signed long int);
+ int __gmpf_set_str (mpf_ptr, const char *, int);
+ void __gmpf_set_ui (mpf_ptr, unsigned long int);
+ void __gmpf_set_z (mpf_ptr, mpz_srcptr);
+ size_t __gmpf_size (mpf_srcptr) __attribute__ ((__pure__));
+ void __gmpf_sqrt (mpf_ptr, mpf_srcptr);
+ void __gmpf_sqrt_ui (mpf_ptr, unsigned long int);
+ void __gmpf_sub (mpf_ptr, mpf_srcptr, mpf_srcptr);
+ void __gmpf_sub_ui (mpf_ptr, mpf_srcptr, unsigned long int);
+ void __gmpf_swap (mpf_ptr, mpf_ptr) ;
+ void __gmpf_trunc (mpf_ptr, mpf_srcptr);
+ void __gmpf_ui_div (mpf_ptr, unsigned long int, mpf_srcptr);
+ void __gmpf_ui_sub (mpf_ptr, unsigned long int, mpf_srcptr);
+ void __gmpf_urandomb (mpf_t, gmp_randstate_t, unsigned long int);
+ mp_limb_t __gmpn_add (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t);
+ mp_limb_t __gmpn_add_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) ;
+ mp_limb_t __gmpn_add_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+ mp_limb_t __gmpn_addmul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+ mp_limb_t __gmpn_bdivmod (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, unsigned long int);
+ int __gmpn_cmp (mp_srcptr, mp_srcptr, mp_size_t) __attribute__ ((__pure__));
+ mp_limb_t __gmpn_divexact_by3c (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+ mp_limb_t __gmpn_divrem (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr, mp_size_t);
+ mp_limb_t __gmpn_divrem_1 (mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_limb_t);
+ mp_limb_t __gmpn_divrem_2 (mp_ptr, mp_size_t, mp_ptr, mp_size_t, mp_srcptr);
+ mp_size_t __gmpn_gcd (mp_ptr, mp_ptr, mp_size_t, mp_ptr, mp_size_t);
+ mp_limb_t __gmpn_gcd_1 (mp_srcptr, mp_size_t, mp_limb_t) __attribute__ ((__pure__));
+ mp_limb_t __gmpn_gcdext_1 (mp_ptr, mp_ptr, mp_limb_t, mp_limb_t);
+ mp_size_t __gmpn_gcdext (mp_ptr, mp_ptr, mp_size_t *, mp_ptr, mp_size_t, mp_ptr, mp_size_t);
+ size_t __gmpn_get_str (unsigned char *, int, mp_ptr, mp_size_t);
+ unsigned long int __gmpn_hamdist (mp_srcptr, mp_srcptr, mp_size_t) __attribute__ ((__pure__));
+ mp_limb_t __gmpn_lshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
+ mp_limb_t __gmpn_mod_1 (mp_srcptr, mp_size_t, mp_limb_t) __attribute__ ((__pure__));
+ mp_limb_t __gmpn_mul (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+ mp_limb_t __gmpn_mul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+ void __gmpn_mul_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+ mp_limb_t __gmpn_neg_n (mp_ptr, mp_srcptr, mp_size_t);
+ int __gmpn_perfect_square_p (mp_srcptr, mp_size_t) __attribute__ ((__pure__));
+ unsigned long int __gmpn_popcount (mp_srcptr, mp_size_t) __attribute__ ((__pure__));
+ mp_size_t __gmpn_pow_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t, mp_ptr);
+ mp_limb_t __gmpn_preinv_mod_1 (mp_srcptr, mp_size_t, mp_limb_t, mp_limb_t) __attribute__ ((__pure__));
+ void __gmpn_random (mp_ptr, mp_size_t);
+ void __gmpn_random2 (mp_ptr, mp_size_t);
+ mp_limb_t __gmpn_rshift (mp_ptr, mp_srcptr, mp_size_t, unsigned int);
+ unsigned long int __gmpn_scan0 (mp_srcptr, unsigned long int) __attribute__ ((__pure__));
+ unsigned long int __gmpn_scan1 (mp_srcptr, unsigned long int) __attribute__ ((__pure__));
+ mp_size_t __gmpn_set_str (mp_ptr, const unsigned char *, size_t, int);
+ mp_size_t __gmpn_sqrtrem (mp_ptr, mp_ptr, mp_srcptr, mp_size_t);
+ mp_limb_t __gmpn_sub (mp_ptr, mp_srcptr, mp_size_t, mp_srcptr,mp_size_t);
+ mp_limb_t __gmpn_sub_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t) ;
+ mp_limb_t __gmpn_sub_n (mp_ptr, mp_srcptr, mp_srcptr, mp_size_t);
+ mp_limb_t __gmpn_submul_1 (mp_ptr, mp_srcptr, mp_size_t, mp_limb_t);
+ void __gmpn_tdiv_qr (mp_ptr, mp_ptr, mp_size_t, mp_srcptr, mp_size_t, mp_srcptr, mp_size_t);
+extern __inline__ void
+__gmpz_abs (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ __gmpz_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_size = ((__gmp_w->_mp_size) >= 0 ? (__gmp_w->_mp_size) : -(__gmp_w->_mp_size));
+}
+extern __inline__
+int
+__gmpz_fits_uint_p (mpz_srcptr __gmp_z)
+{
+ mp_size_t __gmp_n = __gmp_z->_mp_size; mp_ptr __gmp_p = __gmp_z->_mp_d; return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= (~ (unsigned) 0)));;
+}
+extern __inline__
+int
+__gmpz_fits_ulong_p (mpz_srcptr __gmp_z)
+{
+ mp_size_t __gmp_n = __gmp_z->_mp_size; mp_ptr __gmp_p = __gmp_z->_mp_d; return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= (~ (unsigned long) 0)));;
+}
+extern __inline__
+int
+__gmpz_fits_ushort_p (mpz_srcptr __gmp_z)
+{
+ mp_size_t __gmp_n = __gmp_z->_mp_size; mp_ptr __gmp_p = __gmp_z->_mp_d; return (__gmp_n == 0 || (__gmp_n == 1 && __gmp_p[0] <= ((unsigned short) ~0)));;
+}
+extern __inline__
+unsigned long
+__gmpz_get_ui (mpz_srcptr __gmp_z)
+{
+ mp_ptr __gmp_p = __gmp_z->_mp_d;
+ mp_size_t __gmp_n = __gmp_z->_mp_size;
+ mp_limb_t __gmp_l = __gmp_p[0];
+ return (__gmp_n != 0 ? __gmp_l : 0);
+}
+extern __inline__
+mp_limb_t
+__gmpz_getlimbn (mpz_srcptr __gmp_z, mp_size_t __gmp_n)
+{
+ mp_limb_t __gmp_result = 0;
+ if (__builtin_expect ((__gmp_n >= 0 && __gmp_n < ((__gmp_z->_mp_size) >= 0 ? (__gmp_z->_mp_size) : -(__gmp_z->_mp_size))) != 0, 1))
+ __gmp_result = __gmp_z->_mp_d[__gmp_n];
+ return __gmp_result;
+}
+extern __inline__ void
+__gmpz_neg (mpz_ptr __gmp_w, mpz_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ __gmpz_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_size = - __gmp_w->_mp_size;
+}
+extern __inline__
+int
+__gmpz_perfect_square_p (mpz_srcptr __gmp_a)
+{
+ mp_size_t __gmp_asize;
+ int __gmp_result;
+ __gmp_asize = __gmp_a->_mp_size;
+ __gmp_result = (__gmp_asize >= 0);
+ if (__builtin_expect ((__gmp_asize > 0) != 0, 1))
+ __gmp_result = __gmpn_perfect_square_p (__gmp_a->_mp_d, __gmp_asize);
+ return __gmp_result;
+}
+extern __inline__
+unsigned long
+__gmpz_popcount (mpz_srcptr __gmp_u)
+{
+ mp_size_t __gmp_usize;
+ unsigned long __gmp_result;
+ __gmp_usize = __gmp_u->_mp_size;
+ __gmp_result = (__gmp_usize < 0 ? (~ (unsigned long) 0) : 0);
+ if (__builtin_expect ((__gmp_usize > 0) != 0, 1))
+ __gmp_result = __gmpn_popcount (__gmp_u->_mp_d, __gmp_usize);
+ return __gmp_result;
+}
+extern __inline__
+void
+__gmpz_set_q (mpz_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ __gmpz_tdiv_q (__gmp_w, (&((__gmp_u)->_mp_num)), (&((__gmp_u)->_mp_den)));
+}
+extern __inline__
+size_t
+__gmpz_size (mpz_srcptr __gmp_z)
+{
+ return ((__gmp_z->_mp_size) >= 0 ? (__gmp_z->_mp_size) : -(__gmp_z->_mp_size));
+}
+extern __inline__ void
+__gmpq_abs (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ __gmpq_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_num._mp_size = ((__gmp_w->_mp_num._mp_size) >= 0 ? (__gmp_w->_mp_num._mp_size) : -(__gmp_w->_mp_num._mp_size));
+}
+extern __inline__ void
+__gmpq_neg (mpq_ptr __gmp_w, mpq_srcptr __gmp_u)
+{
+ if (__gmp_w != __gmp_u)
+ __gmpq_set (__gmp_w, __gmp_u);
+ __gmp_w->_mp_num._mp_size = - __gmp_w->_mp_num._mp_size;
+}
+extern __inline__
+mp_limb_t
+__gmpn_add (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
+{
+ mp_limb_t __gmp_c;
+ do { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = (__gmp_ysize); if (__gmp_i != 0) { if (__gmpn_add_n (__gmp_wp, __gmp_xp, __gmp_yp, __gmp_i)) { do { if (__gmp_i >= (__gmp_xsize)) { (__gmp_c) = 1; goto __gmp_done; } __gmp_x = (__gmp_xp)[__gmp_i]; } while ((((__gmp_wp)[__gmp_i++] = (__gmp_x + 1) & ((~ ((mp_limb_t) (0))) >> 0)) == 0)); } } if ((__gmp_wp) != (__gmp_xp)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_xsize); __gmp_j++) (__gmp_wp)[__gmp_j] = (__gmp_xp)[__gmp_j]; } while (0); (__gmp_c) = 0; __gmp_done: ; } while (0);
+ return __gmp_c;
+}
+extern __inline__
+mp_limb_t
+__gmpn_add_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n)
+{
+ mp_limb_t __gmp_c;
+ do { mp_size_t __gmp_i; mp_limb_t __gmp_x, __gmp_r; __gmp_x = (__gmp_src)[0]; __gmp_r = __gmp_x + (__gmp_n); (__gmp_dst)[0] = __gmp_r; if (((__gmp_r) < ((__gmp_n)))) { (__gmp_c) = 1; for (__gmp_i = 1; __gmp_i < (__gmp_size);) { __gmp_x = (__gmp_src)[__gmp_i]; __gmp_r = __gmp_x + 1; (__gmp_dst)[__gmp_i] = __gmp_r; ++__gmp_i; if (!((__gmp_r) < (1))) { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; break; } } } else { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (1); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; } } while (0);
+ return __gmp_c;
+}
+extern __inline__
+int
+__gmpn_cmp (mp_srcptr __gmp_xp, mp_srcptr __gmp_yp, mp_size_t __gmp_size)
+{
+ int __gmp_result;
+ do { mp_size_t __gmp_i; mp_limb_t __gmp_x, __gmp_y; (__gmp_result) = 0; __gmp_i = (__gmp_size); while (--__gmp_i >= 0) { __gmp_x = (__gmp_xp)[__gmp_i]; __gmp_y = (__gmp_yp)[__gmp_i]; if (__gmp_x != __gmp_y) { (__gmp_result) = (__gmp_x > __gmp_y ? 1 : -1); break; } } } while (0);
+ return __gmp_result;
+}
+extern __inline__
+mp_limb_t
+__gmpn_sub (mp_ptr __gmp_wp, mp_srcptr __gmp_xp, mp_size_t __gmp_xsize, mp_srcptr __gmp_yp, mp_size_t __gmp_ysize)
+{
+ mp_limb_t __gmp_c;
+ do { mp_size_t __gmp_i; mp_limb_t __gmp_x; __gmp_i = (__gmp_ysize); if (__gmp_i != 0) { if (__gmpn_sub_n (__gmp_wp, __gmp_xp, __gmp_yp, __gmp_i)) { do { if (__gmp_i >= (__gmp_xsize)) { (__gmp_c) = 1; goto __gmp_done; } __gmp_x = (__gmp_xp)[__gmp_i]; } while ((((__gmp_wp)[__gmp_i++] = (__gmp_x - 1) & ((~ ((mp_limb_t) (0))) >> 0)), __gmp_x == 0)); } } if ((__gmp_wp) != (__gmp_xp)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_xsize); __gmp_j++) (__gmp_wp)[__gmp_j] = (__gmp_xp)[__gmp_j]; } while (0); (__gmp_c) = 0; __gmp_done: ; } while (0);
+ return __gmp_c;
+}
+extern __inline__
+mp_limb_t
+__gmpn_sub_1 (mp_ptr __gmp_dst, mp_srcptr __gmp_src, mp_size_t __gmp_size, mp_limb_t __gmp_n)
+{
+ mp_limb_t __gmp_c;
+ do { mp_size_t __gmp_i; mp_limb_t __gmp_x, __gmp_r; __gmp_x = (__gmp_src)[0]; __gmp_r = __gmp_x - (__gmp_n); (__gmp_dst)[0] = __gmp_r; if (((__gmp_x) < ((__gmp_n)))) { (__gmp_c) = 1; for (__gmp_i = 1; __gmp_i < (__gmp_size);) { __gmp_x = (__gmp_src)[__gmp_i]; __gmp_r = __gmp_x - 1; (__gmp_dst)[__gmp_i] = __gmp_r; ++__gmp_i; if (!((__gmp_x) < (1))) { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (__gmp_i); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; break; } } } else { if ((__gmp_src) != (__gmp_dst)) do { mp_size_t __gmp_j; ; for (__gmp_j = (1); __gmp_j < (__gmp_size); __gmp_j++) (__gmp_dst)[__gmp_j] = (__gmp_src)[__gmp_j]; } while (0); (__gmp_c) = 0; } } while (0);
+ return __gmp_c;
+}
+extern __inline__
+mp_limb_t
+__gmpn_neg_n (mp_ptr __gmp_rp, mp_srcptr __gmp_up, mp_size_t __gmp_n)
+{
+ mp_limb_t __gmp_ul, __gmp_cy;
+ __gmp_cy = 0;
+ do {
+ __gmp_ul = *__gmp_up++;
+ *__gmp_rp++ = -__gmp_ul - __gmp_cy;
+ __gmp_cy |= __gmp_ul != 0;
+ } while (--__gmp_n != 0);
+ return __gmp_cy;
+}
+enum
+{
+ GMP_ERROR_NONE = 0,
+ GMP_ERROR_UNSUPPORTED_ARGUMENT = 1,
+ GMP_ERROR_DIVISION_BY_ZERO = 2,
+ GMP_ERROR_SQRT_OF_NEGATIVE = 4,
+ GMP_ERROR_INVALID_ARGUMENT = 8
+};
+typedef long int_t;
+typedef int_t header_t;
+typedef int bool_t;
+typedef unsigned short ucs2_t;
+struct bgl_dframe {
+ union scmobj *symbol;
+ struct bgl_dframe *link;
+};
+typedef union scmobj {
+ int_t integer;
+ header_t header;
+ struct pair {
+ union scmobj *car;
+ union scmobj *cdr;
+ } pair_t;
+ struct extended_pair {
+ union scmobj *car;
+ union scmobj *cdr;
+ union scmobj *eheader;
+ union scmobj *cer;
+ } extended_pair_t;
+ struct string {
+ int length;
+ unsigned char char0;
+ } string_t;
+ struct ucs2_string {
+ header_t header;
+ int length;
+ ucs2_t char0;
+ } ucs2_string_t;
+ struct vector {
+ int length;
+ union scmobj *obj0;
+ } vector_t;
+ struct tvector {
+ header_t header;
+ int length;
+ union scmobj *descr;
+ } tvector_t;
+ struct procedure {
+ header_t header;
+ union scmobj *(*entry)();
+ union scmobj *(*va_entry)();
+ union scmobj *attr;
+ int arity;
+ union scmobj *obj0;
+ } procedure_t;
+ struct procedure_light {
+ union scmobj *(*entry)();
+ union scmobj *obj0;
+ } procedure_light_t;
+ struct symbol {
+ header_t header;
+ union scmobj *string;
+ union scmobj *cval;
+ } symbol_t;
+ struct port {
+ header_t header;
+ union scmobj *kindof;
+ union scmobj *name;
+ void *stream;
+ union scmobj *chook;
+ void *timeout;
+ void *userdata;
+ int (*sysclose)();
+ long (*sysseek)();
+ } port_t;
+ struct output_port {
+ struct port port;
+ union scmobj *buf;
+ long cnt;
+ char *ptr;
+ int bufmode;
+ size_t (*syswrite)();
+ union scmobj *(*sysflush)();
+ union scmobj *fhook;
+ union scmobj *flushbuf;
+ } output_port_t;
+ struct input_port {
+ struct port port;
+ long filepos;
+ long fillbarrier;
+ long (*sysread)();
+ bool_t eof;
+ long matchstart;
+ long matchstop;
+ long forward;
+ long bufpos;
+ union scmobj *buf;
+ int lastchar;
+ } input_port_t;
+ struct input_procedure_port {
+ struct input_port iport;
+ union scmobj *pbuffer;
+ long pbufpos;
+ } input_procedure_port_t;
+ struct input_gzip_port {
+ struct input_procedure_port iport;
+ union scmobj *gzip;
+ } input_gzip_port_t;
+ struct binary_port {
+ header_t header;
+ union scmobj *name;
+ FILE *file;
+ int io;
+ } binary_port_t;
+ struct cell {
+ union scmobj *val;
+ } cell_t;
+ struct structure {
+ header_t header;
+ union scmobj *key;
+ int length;
+ union scmobj *obj0;
+ } struct_t;
+ struct real {
+ double real;
+ } real_t;
+ struct stack {
+ header_t header;
+ union scmobj *self;
+ union scmobj *exitd_top;
+ union scmobj *stamp;
+ long size;
+ struct befored *before_top;
+ char *stack_top;
+ char *stack_bot;
+ struct bgl_dframe *top_frame;
+ void *stack;
+ } stack_t;
+ struct foreign {
+ header_t header;
+ union scmobj *id;
+ void *cobj;
+ } foreign_t;
+ struct elong {
+ header_t header;
+ long elong;
+ } elong_t;
+ struct llong {
+ header_t header;
+ long long llong;
+ } llong_t;
+ struct bignum {
+ header_t header;
+ __mpz_struct mpz;
+ } bignum_t;
+ struct process {
+ header_t header;
+ int pid;
+ int index;
+ union scmobj *stream[ 3 ];
+ int exited;
+ int exit_status;
+ } process_t;
+ struct socket {
+ header_t header;
+ int portnum;
+ union scmobj *hostname;
+ union scmobj *hostip;
+ int fd;
+ union scmobj *input;
+ union scmobj *output;
+ int stype;
+ union scmobj *chook;
+ union scmobj *(*accept)();
+ void *userdata;
+ } socket_t;
+ struct custom {
+ header_t header;
+ char *identifier;
+ int (*final)();
+ int (*equal)();
+ long (*hash)();
+ char *(*to_string)();
+ union scmobj *(*output)();
+ } custom_t;
+ struct bgl_date {
+ header_t header;
+ int sec;
+ int min;
+ int hour;
+ int mday;
+ int mon;
+ int year;
+ int wday;
+ int yday;
+ long timezone;
+ int isdst;
+ } date_t;
+ struct bgl_mutex {
+ header_t header;
+ union scmobj *name;
+ void *mutex;
+ } mutex_t;
+ struct bgl_condvar {
+ header_t header;
+ union scmobj *name;
+ void *condvar;
+ } condvar_t;
+ struct bgl_mmap {
+ header_t header;
+ union scmobj *name;
+ int fd;
+ long length;
+ long rp;
+ long wp;
+ unsigned char *map;
+ } mmap_t;
+ struct bgl_hvector {
+ header_t header;
+ unsigned int length;
+ } hvector_t;
+ struct bgl_weakptr {
+ header_t header;
+ union scmobj *data;
+ } weakptr_t;
+ struct bgl_dynamic_env {
+ header_t header;
+ union scmobj *current_output_port;
+ union scmobj *current_input_port;
+ union scmobj *current_error_port;
+ union scmobj *current_display;
+ int mvalues_number;
+ union scmobj *mvalues[ 16 ];
+ char *stack_bottom;
+ union scmobj *exitd_top;
+ union scmobj *exitd_stamp;
+ struct befored *befored_top;
+ union scmobj *exitd_val;
+ union scmobj *error_handler;
+ union scmobj *error_notifiers;
+ union scmobj *uncaught_exception_handler;
+ union scmobj *interrupt_notifier;
+ union scmobj *debug_alist;
+ struct bgl_dframe top;
+ struct bgl_dframe *top_of_frame;
+ void *current_thread;
+ union scmobj *lexical_stack;
+ union scmobj *bytecode;
+ union scmobj *module;
+ union scmobj *abase;
+ union scmobj *parameters;
+ union scmobj *thread_backend;
+ union scmobj *user_data;
+ } dynamic_env_t;
+} *obj_t;
+typedef obj_t (*function_t)();
+typedef struct __object_bgl {
+ header_t header;
+ obj_t widening;
+} *object_bglt;
+typedef struct __bgl__object_00_bgl {
+ header_t header;
+ obj_t widening;
+} *bgl__object_00_bglt;
+typedef struct BgL__object_00_bgl {
+ header_t header;
+ obj_t widening;
+} *BgL__object_00_bglt;
+typedef struct BgL_objectz00_bgl {
+ header_t header;
+ obj_t widening;
+} *BgL_objectz00_bglt;
+struct bgl_input_timeout {
+ long timeout;
+ long (*sysread)( void *, size_t, size_t, obj_t );
+ int (*sysclose)( obj_t );
+};
+ extern obj_t GC_malloc( size_t );
+ extern obj_t GC_realloc( obj_t, size_t );
+ extern void GC_free( obj_t );
+ extern void GC_gcollect();
+ extern obj_t GC_malloc_atomic( size_t );
+ extern obj_t GC_debug_malloc( size_t, char *, long );
+ extern obj_t GC_debug_malloc_atomic( size_t, char *, long );
+ extern int GC_gc_no;
+ extern int GC_size( void * );
+ extern void GC_init();
+ extern void GC_expand_hp( size_t );
+ extern void GC_register_displacement( int );
+ extern void GC_debug_register_displacement( int );
+ extern void* GC_base( void* );
+ extern int GC_invoke_finalizers();
+ extern int GC_general_register_disappearing_link( obj_t * , obj_t );
+ extern int GC_unregister_disappearing_link( obj_t * );
+ typedef obj_t (*GC_fn_type) ( obj_t client_data );
+ extern obj_t GC_call_with_alloc_lock( GC_fn_type fn, obj_t client_data );
+ typedef void (*GC_finalization_proc)( void *obj, void *client_data );
+ extern void GC_register_finalizer( void *obj,
+ GC_finalization_proc fn, void *d,
+ GC_finalization_proc *ofn, void **od );
+extern obj_t alloc_hvector( int, int, int );
+extern obj_t make_weakptr( obj_t );
+extern obj_t weakptr_data( obj_t );
+extern void weakptr_data_set( obj_t , obj_t );
+extern obj_t single_thread_denv;
+extern void bgl_init_dynamic_env();
+extern obj_t make_dynamic_env();
+extern obj_t bgl_dup_dynamic_env( obj_t );
+extern obj_t (*bgl_multithread_dynamic_denv)();
+extern gmp_randstate_t gmp_random_state;
+extern obj_t bgl_safe_plus_fx( long, long );
+extern obj_t bgl_safe_minus_fx( long, long );
+extern obj_t bgl_safe_mul_fx( long, long );
+extern obj_t bgl_safe_quotient_fx( long, long );
+extern obj_t bgl_safe_plus_elong( long, long );
+extern obj_t bgl_safe_minus_elong( long, long );
+extern obj_t bgl_safe_mul_elong( long, long );
+extern obj_t bgl_safe_quotient_elong( long, long );
+extern obj_t bgl_safe_plus_llong( long long, long long );
+extern obj_t bgl_safe_minus_llong( long long, long long );
+extern obj_t bgl_safe_mul_llong( long long, long long );
+extern obj_t bgl_safe_quotient_llong( long long, long long );
+extern obj_t _exit_value_;
+typedef jmp_buf callcc_jmp_buf;
+struct exitd {
+ void *exit;
+ long userp;
+ obj_t stamp;
+ struct exitd *prev;
+};
+struct befored {
+ obj_t before;
+ struct befored *prev;
+};
+extern header_t bgl_opaque_nil;
+extern obj_t bigloo_exit( obj_t );
+extern obj_t va_generic_entry( obj_t, ... );
+extern obj_t opt_generic_entry( obj_t, ... );
+extern obj_t apply( obj_t, obj_t );
+extern void bgl_init_module_debug_start( char * );
+extern void bgl_init_module_debug_library( char * );
+extern void bgl_init_module_debug_import( char *, char * );
+extern void bgl_init_module_debug_object( char * );
+extern void bgl_init_module_debug_end( char * );
+extern obj_t the_failure( obj_t, obj_t, obj_t );
+extern obj_t bgl_system_failure( int, obj_t, obj_t, obj_t );
+extern obj_t bgl_make_procedure( obj_t, int, int );
+extern obj_t make_fx_procedure( function_t, int, int );
+extern obj_t make_va_procedure( function_t, int, int );
+extern obj_t bgl_time( obj_t );
+extern obj_t bgl_procedure_entry_to_string( obj_t );
+extern obj_t bgl_string_to_procedure_entry( obj_t );
+extern obj_t make_pair( obj_t, obj_t );
+extern obj_t make_extended_pair( obj_t a, obj_t d, obj_t e );
+extern obj_t make_cell( obj_t );
+extern obj_t make_real( double );
+extern obj_t make_belong( long );
+extern obj_t make_bllong( long long );
+extern obj_t bgl_string_to_bignum( char *, int );
+extern obj_t bgl_reverse( obj_t );
+extern obj_t bgl_reverse_bang( obj_t );
+extern long bgl_list_length( obj_t );
+extern obj_t bgl_remq( obj_t, obj_t );
+extern obj_t bgl_remq_bang( obj_t, obj_t );
+extern obj_t bgl_make_output_port( obj_t, void *, obj_t, obj_t, size_t (*)(), long (*)(), int (*)() );
+extern void bgl_output_port_buffer_set( obj_t, obj_t );
+extern obj_t bgl_close_output_port( obj_t );
+extern obj_t get_output_string( obj_t );
+extern obj_t bgl_file_to_output_port( FILE *, obj_t );
+extern obj_t bgl_open_output_file( obj_t, obj_t );
+extern obj_t bgl_append_output_file( obj_t, obj_t );
+extern obj_t bgl_open_output_string( obj_t );
+extern obj_t bgl_open_output_procedure( obj_t, obj_t, obj_t, obj_t );
+extern obj_t create_vector( int );
+extern obj_t make_string_sans_fill();
+extern obj_t string_to_bstring( char * );
+extern obj_t string_to_bstring_len( char *, int );
+extern obj_t close_init_string();
+extern obj_t bgl_string_shrink( obj_t, long );
+extern obj_t bgl_find_runtime_type( obj_t );
+extern obj_t cobj_to_foreign( obj_t, void * );
+extern long obj_to_cobj( obj_t );
+extern int _bigloo_main( int, char *[], char *[], obj_t (*)(obj_t) );
+extern obj_t string_to_symbol( char * );
+extern obj_t bstring_to_symbol( obj_t );
+extern obj_t bgl_symbol_genname( obj_t, char * );
+extern obj_t string_to_keyword( char * );
+extern obj_t bgl_open_input_string( obj_t, int );
+extern long bgl_file_size( char * );
+extern obj_t create_custom( long );
+extern void bgl_input_port_buffer_set( obj_t, obj_t );
+extern obj_t bgl_reset_output_string_port( obj_t );
+extern obj_t bgl_display_string( obj_t, obj_t );
+extern obj_t bgl_display_symbol( obj_t, obj_t );
+extern obj_t bgl_display_fixnum( obj_t, obj_t );
+extern obj_t bgl_display_char( char, obj_t );
+extern obj_t bgl_output_flush( obj_t, char *, size_t );
+extern obj_t bgl_make_date();
+extern obj_t bgl_make_mutex( obj_t );
+extern obj_t bgl_make_condvar( obj_t );
+extern bool_t (*bgl_mutex_lock)( obj_t );
+extern bool_t (*bgl_mutex_timed_lock)( obj_t, long );
+extern bool_t (*bgl_mutex_unlock)( obj_t );
+extern obj_t (*bgl_mutex_state)( obj_t );
+extern bool_t (*bgl_condvar_wait)( obj_t, obj_t );
+extern bool_t (*bgl_condvar_timed_wait)( obj_t, obj_t, long );
+extern bool_t (*bgl_condvar_signal)( obj_t );
+extern bool_t (*bgl_condvar_broadcast)( obj_t );
+extern obj_t bgl_open_mmap( obj_t, bool_t, bool_t );
+ obj_t bgl_close_mmap( obj_t );
+extern void (*bgl_gc_do_blocking )( void (*fun)(), void * );
+extern obj_t bgl_make_client_socket( obj_t, int, int, obj_t, obj_t );
+extern obj_t bgl_make_server_socket( obj_t, int, int );
+extern obj_t bgl_socket_accept( obj_t, bool_t, obj_t, obj_t );
+extern long bgl_socket_accept_many( obj_t, bool_t, obj_t, obj_t, obj_t );
+extern obj_t bgl_gethostname();
+extern obj_t bgl_socket_hostname();
+extern obj_t bgl_getsockopt( obj_t, obj_t );
+extern obj_t bgl_setsockopt( obj_t, obj_t, obj_t );
+extern void bgl_init_trace( void );
+extern int bgl_sigprocmask( int );
+extern long bgl_rgc_blit_string( obj_t, char *, long, long );
+extern obj_t bigloo_nan, bigloo_infinity, bigloo_minfinity;
+typedef long int ptrdiff_t;
+typedef signed char gint8;
+typedef unsigned char guint8;
+typedef signed short gint16;
+typedef unsigned short guint16;
+typedef signed int gint32;
+typedef unsigned int guint32;
+typedef signed long gint64;
+typedef unsigned long guint64;
+typedef signed long gssize;
+typedef unsigned long gsize;
+typedef gint64 goffset;
+typedef signed long gintptr;
+typedef unsigned long guintptr;
+typedef struct _GStaticMutex GStaticMutex;
+struct _GStaticMutex
+{
+ struct _GMutex *runtime_mutex;
+ union {
+ char pad[40];
+ double dummy_double;
+ void *dummy_pointer;
+ long dummy_long;
+ } static_mutex;
+};
+typedef union _GSystemThread GSystemThread;
+union _GSystemThread
+{
+ char data[8];
+ double dummy_double;
+ void *dummy_pointer;
+ long dummy_long;
+};
+typedef int GPid;
+typedef char gchar;
+typedef short gshort;
+typedef long glong;
+typedef int gint;
+typedef gint gboolean;
+typedef unsigned char guchar;
+typedef unsigned short gushort;
+typedef unsigned long gulong;
+typedef unsigned int guint;
+typedef float gfloat;
+typedef double gdouble;
+typedef void* gpointer;
+typedef const void *gconstpointer;
+typedef gint (*GCompareFunc) (gconstpointer a,
+ gconstpointer b);
+typedef gint (*GCompareDataFunc) (gconstpointer a,
+ gconstpointer b,
+ gpointer user_data);
+typedef gboolean (*GEqualFunc) (gconstpointer a,
+ gconstpointer b);
+typedef void (*GDestroyNotify) (gpointer data);
+typedef void (*GFunc) (gpointer data,
+ gpointer user_data);
+typedef guint (*GHashFunc) (gconstpointer key);
+typedef void (*GHFunc) (gpointer key,
+ gpointer value,
+ gpointer user_data);
+typedef void (*GFreeFunc) (gpointer data);
+typedef const gchar * (*GTranslateFunc) (const gchar *str,
+ gpointer data);
+typedef union _GDoubleIEEE754 GDoubleIEEE754;
+typedef union _GFloatIEEE754 GFloatIEEE754;
+union _GFloatIEEE754
+{
+ gfloat v_float;
+ struct {
+ guint mantissa : 23;
+ guint biased_exponent : 8;
+ guint sign : 1;
+ } mpn;
+};
+union _GDoubleIEEE754
+{
+ gdouble v_double;
+ struct {
+ guint mantissa_low : 32;
+ guint mantissa_high : 20;
+ guint biased_exponent : 11;
+ guint sign : 1;
+ } mpn;
+};
+typedef struct _GTimeVal GTimeVal;
+struct _GTimeVal
+{
+ glong tv_sec;
+ glong tv_usec;
+};
+typedef struct _GArray GArray;
+typedef struct _GByteArray GByteArray;
+typedef struct _GPtrArray GPtrArray;
+struct _GArray
+{
+ gchar *data;
+ guint len;
+};
+struct _GByteArray
+{
+ guint8 *data;
+ guint len;
+};
+struct _GPtrArray
+{
+ gpointer *pdata;
+ guint len;
+};
+GArray* g_array_new (gboolean zero_terminated,
+ gboolean clear_,
+ guint element_size);
+GArray* g_array_sized_new (gboolean zero_terminated,
+ gboolean clear_,
+ guint element_size,
+ guint reserved_size);
+gchar* g_array_free (GArray *array,
+ gboolean free_segment);
+GArray* g_array_append_vals (GArray *array,
+ gconstpointer data,
+ guint len);
+GArray* g_array_prepend_vals (GArray *array,
+ gconstpointer data,
+ guint len);
+GArray* g_array_insert_vals (GArray *array,
+ guint index_,
+ gconstpointer data,
+ guint len);
+GArray* g_array_set_size (GArray *array,
+ guint length);
+GArray* g_array_remove_index (GArray *array,
+ guint index_);
+GArray* g_array_remove_index_fast (GArray *array,
+ guint index_);
+GArray* g_array_remove_range (GArray *array,
+ guint index_,
+ guint length);
+void g_array_sort (GArray *array,
+ GCompareFunc compare_func);
+void g_array_sort_with_data (GArray *array,
+ GCompareDataFunc compare_func,
+ gpointer user_data);
+GPtrArray* g_ptr_array_new (void);
+GPtrArray* g_ptr_array_sized_new (guint reserved_size);
+gpointer* g_ptr_array_free (GPtrArray *array,
+ gboolean free_seg);
+void g_ptr_array_set_size (GPtrArray *array,
+ gint length);
+gpointer g_ptr_array_remove_index (GPtrArray *array,
+ guint index_);
+gpointer g_ptr_array_remove_index_fast (GPtrArray *array,
+ guint index_);
+gboolean g_ptr_array_remove (GPtrArray *array,
+ gpointer data);
+gboolean g_ptr_array_remove_fast (GPtrArray *array,
+ gpointer data);
+void g_ptr_array_remove_range (GPtrArray *array,
+ guint index_,
+ guint length);
+void g_ptr_array_add (GPtrArray *array,
+ gpointer data);
+void g_ptr_array_sort (GPtrArray *array,
+ GCompareFunc compare_func);
+void g_ptr_array_sort_with_data (GPtrArray *array,
+ GCompareDataFunc compare_func,
+ gpointer user_data);
+void g_ptr_array_foreach (GPtrArray *array,
+ GFunc func,
+ gpointer user_data);
+GByteArray* g_byte_array_new (void);
+GByteArray* g_byte_array_sized_new (guint reserved_size);
+guint8* g_byte_array_free (GByteArray *array,
+ gboolean free_segment);
+GByteArray* g_byte_array_append (GByteArray *array,
+ const guint8 *data,
+ guint len);
+GByteArray* g_byte_array_prepend (GByteArray *array,
+ const guint8 *data,
+ guint len);
+GByteArray* g_byte_array_set_size (GByteArray *array,
+ guint length);
+GByteArray* g_byte_array_remove_index (GByteArray *array,
+ guint index_);
+GByteArray* g_byte_array_remove_index_fast (GByteArray *array,
+ guint index_);
+GByteArray* g_byte_array_remove_range (GByteArray *array,
+ guint index_,
+ guint length);
+void g_byte_array_sort (GByteArray *array,
+ GCompareFunc compare_func);
+void g_byte_array_sort_with_data (GByteArray *array,
+ GCompareDataFunc compare_func,
+ gpointer user_data);
+typedef guint32 GQuark;
+GQuark g_quark_try_string (const gchar *string);
+GQuark g_quark_from_static_string (const gchar *string);
+GQuark g_quark_from_string (const gchar *string);
+const gchar* g_quark_to_string (GQuark quark) __attribute__((__const__));
+const gchar* g_intern_string (const gchar *string);
+const gchar* g_intern_static_string (const gchar *string);
+typedef struct _GError GError;
+struct _GError
+{
+ GQuark domain;
+ gint code;
+ gchar *message;
+};
+GError* g_error_new (GQuark domain,
+ gint code,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 3, 4)));
+GError* g_error_new_literal (GQuark domain,
+ gint code,
+ const gchar *message);
+void g_error_free (GError *error);
+GError* g_error_copy (const GError *error);
+gboolean g_error_matches (const GError *error,
+ GQuark domain,
+ gint code);
+void g_set_error (GError **err,
+ GQuark domain,
+ gint code,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 4, 5)));
+void g_set_error_literal (GError **err,
+ GQuark domain,
+ gint code,
+ const gchar *message);
+void g_propagate_error (GError **dest,
+ GError *src);
+void g_clear_error (GError **err);
+void g_prefix_error (GError **err,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+void g_propagate_prefixed_error (GError **dest,
+ GError *src,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 3, 4)));
+typedef __gnuc_va_list va_list;
+const gchar* g_get_user_name (void);
+const gchar* g_get_real_name (void);
+const gchar* g_get_home_dir (void);
+const gchar* g_get_tmp_dir (void);
+const gchar* g_get_host_name (void);
+gchar* g_get_prgname (void);
+void g_set_prgname (const gchar *prgname);
+const gchar* g_get_application_name (void);
+void g_set_application_name (const gchar *application_name);
+const gchar* g_get_user_data_dir (void);
+const gchar* g_get_user_config_dir (void);
+const gchar* g_get_user_cache_dir (void);
+const gchar* const * g_get_system_data_dirs (void);
+const gchar* const * g_get_system_config_dirs (void);
+const gchar* const * g_get_language_names (void);
+typedef enum {
+ G_USER_DIRECTORY_DESKTOP,
+ G_USER_DIRECTORY_DOCUMENTS,
+ G_USER_DIRECTORY_DOWNLOAD,
+ G_USER_DIRECTORY_MUSIC,
+ G_USER_DIRECTORY_PICTURES,
+ G_USER_DIRECTORY_PUBLIC_SHARE,
+ G_USER_DIRECTORY_TEMPLATES,
+ G_USER_DIRECTORY_VIDEOS,
+ G_USER_N_DIRECTORIES
+} GUserDirectory;
+const gchar* g_get_user_special_dir (GUserDirectory directory);
+typedef struct _GDebugKey GDebugKey;
+struct _GDebugKey
+{
+ const gchar *key;
+ guint value;
+};
+guint g_parse_debug_string (const gchar *string,
+ const GDebugKey *keys,
+ guint nkeys);
+gint g_snprintf (gchar *string,
+ gulong n,
+ gchar const *format,
+ ...) __attribute__((__format__ (__printf__, 3, 4)));
+gint g_vsnprintf (gchar *string,
+ gulong n,
+ gchar const *format,
+ va_list args);
+gboolean g_path_is_absolute (const gchar *file_name);
+const gchar* g_path_skip_root (const gchar *file_name);
+const gchar* g_basename (const gchar *file_name);
+gchar* g_get_current_dir (void);
+gchar* g_path_get_basename (const gchar *file_name) __attribute__((__malloc__));
+gchar* g_path_get_dirname (const gchar *file_name) __attribute__((__malloc__));
+void g_nullify_pointer (gpointer *nullify_location);
+const gchar* g_getenv (const gchar *variable);
+gboolean g_setenv (const gchar *variable,
+ const gchar *value,
+ gboolean overwrite);
+void g_unsetenv (const gchar *variable);
+gchar** g_listenv (void);
+const gchar* _g_getenv_nomalloc (const gchar *variable,
+ gchar buffer[1024]);
+typedef void (*GVoidFunc) (void);
+void g_atexit (GVoidFunc func);
+gchar* g_find_program_in_path (const gchar *program);
+static __inline __attribute__ ((unused)) gint g_bit_nth_lsf (gulong mask,
+ gint nth_bit) __attribute__((__const__));
+static __inline __attribute__ ((unused)) gint g_bit_nth_msf (gulong mask,
+ gint nth_bit) __attribute__((__const__));
+static __inline __attribute__ ((unused)) guint g_bit_storage (gulong number) __attribute__((__const__));
+typedef struct _GTrashStack GTrashStack;
+struct _GTrashStack
+{
+ GTrashStack *next;
+};
+static __inline __attribute__ ((unused)) void g_trash_stack_push (GTrashStack **stack_p,
+ gpointer data_p);
+static __inline __attribute__ ((unused)) gpointer g_trash_stack_pop (GTrashStack **stack_p);
+static __inline __attribute__ ((unused)) gpointer g_trash_stack_peek (GTrashStack **stack_p);
+static __inline __attribute__ ((unused)) guint g_trash_stack_height (GTrashStack **stack_p);
+static __inline __attribute__ ((unused)) gint
+g_bit_nth_lsf (gulong mask,
+ gint nth_bit)
+{
+ if ((nth_bit < -1))
+ nth_bit = -1;
+ while (nth_bit < ((8 * 8) - 1))
+ {
+ nth_bit++;
+ if (mask & (1UL << nth_bit))
+ return nth_bit;
+ }
+ return -1;
+}
+static __inline __attribute__ ((unused)) gint
+g_bit_nth_msf (gulong mask,
+ gint nth_bit)
+{
+ if (nth_bit < 0 || (nth_bit > 8 * 8))
+ nth_bit = 8 * 8;
+ while (nth_bit > 0)
+ {
+ nth_bit--;
+ if (mask & (1UL << nth_bit))
+ return nth_bit;
+ }
+ return -1;
+}
+static __inline __attribute__ ((unused)) guint
+g_bit_storage (gulong number)
+{
+ register guint n_bits = 0;
+ do
+ {
+ n_bits++;
+ number >>= 1;
+ }
+ while (number);
+ return n_bits;
+}
+static __inline __attribute__ ((unused)) void
+g_trash_stack_push (GTrashStack **stack_p,
+ gpointer data_p)
+{
+ GTrashStack *data = (GTrashStack *) data_p;
+ data->next = *stack_p;
+ *stack_p = data;
+}
+static __inline __attribute__ ((unused)) gpointer
+g_trash_stack_pop (GTrashStack **stack_p)
+{
+ GTrashStack *data;
+ data = *stack_p;
+ if (data)
+ {
+ *stack_p = data->next;
+ data->next = ((void *)0);
+ }
+ return data;
+}
+static __inline __attribute__ ((unused)) gpointer
+g_trash_stack_peek (GTrashStack **stack_p)
+{
+ GTrashStack *data;
+ data = *stack_p;
+ return data;
+}
+static __inline __attribute__ ((unused)) guint
+g_trash_stack_height (GTrashStack **stack_p)
+{
+ GTrashStack *data;
+ guint i = 0;
+ for (data = *stack_p; data; data = data->next)
+ i++;
+ return i;
+}
+extern const guint glib_major_version;
+extern const guint glib_minor_version;
+extern const guint glib_micro_version;
+extern const guint glib_interface_age;
+extern const guint glib_binary_age;
+const gchar * glib_check_version (guint required_major,
+ guint required_minor,
+ guint required_micro);
+gint g_atomic_int_exchange_and_add (volatile gint __attribute__((may_alias)) *atomic,
+ gint val);
+void g_atomic_int_add (volatile gint __attribute__((may_alias)) *atomic,
+ gint val);
+gboolean g_atomic_int_compare_and_exchange (volatile gint __attribute__((may_alias)) *atomic,
+ gint oldval,
+ gint newval);
+gboolean g_atomic_pointer_compare_and_exchange (volatile gpointer __attribute__((may_alias)) *atomic,
+ gpointer oldval,
+ gpointer newval);
+gint g_atomic_int_get (volatile gint __attribute__((may_alias)) *atomic);
+void g_atomic_int_set (volatile gint __attribute__((may_alias)) *atomic,
+ gint newval);
+gpointer g_atomic_pointer_get (volatile gpointer __attribute__((may_alias)) *atomic);
+void g_atomic_pointer_set (volatile gpointer __attribute__((may_alias)) *atomic,
+ gpointer newval);
+extern GQuark g_thread_error_quark (void);
+typedef enum
+{
+ G_THREAD_ERROR_AGAIN
+} GThreadError;
+typedef gpointer (*GThreadFunc) (gpointer data);
+typedef enum
+{
+ G_THREAD_PRIORITY_LOW,
+ G_THREAD_PRIORITY_NORMAL,
+ G_THREAD_PRIORITY_HIGH,
+ G_THREAD_PRIORITY_URGENT
+} GThreadPriority;
+typedef struct _GThread GThread;
+struct _GThread
+{
+ GThreadFunc func;
+ gpointer data;
+ gboolean joinable;
+ GThreadPriority priority;
+};
+typedef struct _GMutex GMutex;
+typedef struct _GCond GCond;
+typedef struct _GPrivate GPrivate;
+typedef struct _GStaticPrivate GStaticPrivate;
+typedef struct _GThreadFunctions GThreadFunctions;
+struct _GThreadFunctions
+{
+ GMutex* (*mutex_new) (void);
+ void (*mutex_lock) (GMutex *mutex);
+ gboolean (*mutex_trylock) (GMutex *mutex);
+ void (*mutex_unlock) (GMutex *mutex);
+ void (*mutex_free) (GMutex *mutex);
+ GCond* (*cond_new) (void);
+ void (*cond_signal) (GCond *cond);
+ void (*cond_broadcast) (GCond *cond);
+ void (*cond_wait) (GCond *cond,
+ GMutex *mutex);
+ gboolean (*cond_timed_wait) (GCond *cond,
+ GMutex *mutex,
+ GTimeVal *end_time);
+ void (*cond_free) (GCond *cond);
+ GPrivate* (*private_new) (GDestroyNotify destructor);
+ gpointer (*private_get) (GPrivate *private_key);
+ void (*private_set) (GPrivate *private_key,
+ gpointer data);
+ void (*thread_create) (GThreadFunc func,
+ gpointer data,
+ gulong stack_size,
+ gboolean joinable,
+ gboolean bound,
+ GThreadPriority priority,
+ gpointer thread,
+ GError **error);
+ void (*thread_yield) (void);
+ void (*thread_join) (gpointer thread);
+ void (*thread_exit) (void);
+ void (*thread_set_priority)(gpointer thread,
+ GThreadPriority priority);
+ void (*thread_self) (gpointer thread);
+ gboolean (*thread_equal) (gpointer thread1,
+ gpointer thread2);
+};
+extern GThreadFunctions g_thread_functions_for_glib_use;
+extern gboolean g_thread_use_default_impl;
+extern gboolean g_threads_got_initialized;
+extern guint64 (*g_thread_gettime) (void);
+void g_thread_init (GThreadFunctions *vtable);
+void g_thread_init_with_errorcheck_mutexes (GThreadFunctions* vtable);
+gboolean g_thread_get_initialized (void);
+GMutex* g_static_mutex_get_mutex_impl (GMutex **mutex);
+GThread* g_thread_create_full (GThreadFunc func,
+ gpointer data,
+ gulong stack_size,
+ gboolean joinable,
+ gboolean bound,
+ GThreadPriority priority,
+ GError **error);
+GThread* g_thread_self (void);
+void g_thread_exit (gpointer retval);
+gpointer g_thread_join (GThread *thread);
+void g_thread_set_priority (GThread *thread,
+ GThreadPriority priority);
+void g_static_mutex_init (GStaticMutex *mutex);
+void g_static_mutex_free (GStaticMutex *mutex);
+struct _GStaticPrivate
+{
+ guint index;
+};
+void g_static_private_init (GStaticPrivate *private_key);
+gpointer g_static_private_get (GStaticPrivate *private_key);
+void g_static_private_set (GStaticPrivate *private_key,
+ gpointer data,
+ GDestroyNotify notify);
+void g_static_private_free (GStaticPrivate *private_key);
+typedef struct _GStaticRecMutex GStaticRecMutex;
+struct _GStaticRecMutex
+{
+ GStaticMutex mutex;
+ guint depth;
+ GSystemThread owner;
+};
+void g_static_rec_mutex_init (GStaticRecMutex *mutex);
+void g_static_rec_mutex_lock (GStaticRecMutex *mutex);
+gboolean g_static_rec_mutex_trylock (GStaticRecMutex *mutex);
+void g_static_rec_mutex_unlock (GStaticRecMutex *mutex);
+void g_static_rec_mutex_lock_full (GStaticRecMutex *mutex,
+ guint depth);
+guint g_static_rec_mutex_unlock_full (GStaticRecMutex *mutex);
+void g_static_rec_mutex_free (GStaticRecMutex *mutex);
+typedef struct _GStaticRWLock GStaticRWLock;
+struct _GStaticRWLock
+{
+ GStaticMutex mutex;
+ GCond *read_cond;
+ GCond *write_cond;
+ guint read_counter;
+ gboolean have_writer;
+ guint want_to_read;
+ guint want_to_write;
+};
+void g_static_rw_lock_init (GStaticRWLock* lock);
+void g_static_rw_lock_reader_lock (GStaticRWLock* lock);
+gboolean g_static_rw_lock_reader_trylock (GStaticRWLock* lock);
+void g_static_rw_lock_reader_unlock (GStaticRWLock* lock);
+void g_static_rw_lock_writer_lock (GStaticRWLock* lock);
+gboolean g_static_rw_lock_writer_trylock (GStaticRWLock* lock);
+void g_static_rw_lock_writer_unlock (GStaticRWLock* lock);
+void g_static_rw_lock_free (GStaticRWLock* lock);
+void g_thread_foreach (GFunc thread_func,
+ gpointer user_data);
+typedef enum
+{
+ G_ONCE_STATUS_NOTCALLED,
+ G_ONCE_STATUS_PROGRESS,
+ G_ONCE_STATUS_READY
+} GOnceStatus;
+typedef struct _GOnce GOnce;
+struct _GOnce
+{
+ volatile GOnceStatus status;
+ volatile gpointer retval;
+};
+gpointer g_once_impl (GOnce *once, GThreadFunc func, gpointer arg);
+static __inline __attribute__ ((unused)) gboolean g_once_init_enter (volatile gsize *value_location);
+gboolean g_once_init_enter_impl (volatile gsize *value_location);
+void g_once_init_leave (volatile gsize *value_location,
+ gsize initialization_value);
+static __inline __attribute__ ((unused)) gboolean
+g_once_init_enter (volatile gsize *value_location)
+{
+ if ((gpointer) ((gpointer)*(value_location)) != ((void *)0))
+ return (0);
+ else
+ return g_once_init_enter_impl (value_location);
+}
+extern void glib_dummy_decl (void);
+typedef struct _GAsyncQueue GAsyncQueue;
+GAsyncQueue* g_async_queue_new (void);
+GAsyncQueue* g_async_queue_new_full (GDestroyNotify item_free_func);
+void g_async_queue_lock (GAsyncQueue *queue);
+void g_async_queue_unlock (GAsyncQueue *queue);
+GAsyncQueue* g_async_queue_ref (GAsyncQueue *queue);
+void g_async_queue_unref (GAsyncQueue *queue);
+void g_async_queue_ref_unlocked (GAsyncQueue *queue);
+void g_async_queue_unref_and_unlock (GAsyncQueue *queue);
+void g_async_queue_push (GAsyncQueue *queue,
+ gpointer data);
+void g_async_queue_push_unlocked (GAsyncQueue *queue,
+ gpointer data);
+void g_async_queue_push_sorted (GAsyncQueue *queue,
+ gpointer data,
+ GCompareDataFunc func,
+ gpointer user_data);
+void g_async_queue_push_sorted_unlocked (GAsyncQueue *queue,
+ gpointer data,
+ GCompareDataFunc func,
+ gpointer user_data);
+gpointer g_async_queue_pop (GAsyncQueue *queue);
+gpointer g_async_queue_pop_unlocked (GAsyncQueue *queue);
+gpointer g_async_queue_try_pop (GAsyncQueue *queue);
+gpointer g_async_queue_try_pop_unlocked (GAsyncQueue *queue);
+gpointer g_async_queue_timed_pop (GAsyncQueue *queue,
+ GTimeVal *end_time);
+gpointer g_async_queue_timed_pop_unlocked (GAsyncQueue *queue,
+ GTimeVal *end_time);
+gint g_async_queue_length (GAsyncQueue *queue);
+gint g_async_queue_length_unlocked (GAsyncQueue *queue);
+void g_async_queue_sort (GAsyncQueue *queue,
+ GCompareDataFunc func,
+ gpointer user_data);
+void g_async_queue_sort_unlocked (GAsyncQueue *queue,
+ GCompareDataFunc func,
+ gpointer user_data);
+GMutex* _g_async_queue_get_mutex (GAsyncQueue *queue);
+void g_on_error_query (const gchar *prg_name);
+void g_on_error_stack_trace (const gchar *prg_name);
+gsize g_base64_encode_step (const guchar *in,
+ gsize len,
+ gboolean break_lines,
+ gchar *out,
+ gint *state,
+ gint *save);
+gsize g_base64_encode_close (gboolean break_lines,
+ gchar *out,
+ gint *state,
+ gint *save);
+gchar* g_base64_encode (const guchar *data,
+ gsize len) __attribute__((__malloc__));
+gsize g_base64_decode_step (const gchar *in,
+ gsize len,
+ guchar *out,
+ gint *state,
+ guint *save);
+guchar *g_base64_decode (const gchar *text,
+ gsize *out_len) __attribute__((__malloc__));
+guchar *g_base64_decode_inplace (gchar *text,
+ gsize *out_len);
+typedef __clock_t clock_t;
+struct tm
+{
+ int tm_sec;
+ int tm_min;
+ int tm_hour;
+ int tm_mday;
+ int tm_mon;
+ int tm_year;
+ int tm_wday;
+ int tm_yday;
+ int tm_isdst;
+ long int tm_gmtoff;
+ __const char *tm_zone;
+};
+struct itimerspec
+ {
+ struct timespec it_interval;
+ struct timespec it_value;
+ };
+struct sigevent;
+extern clock_t clock (void) __attribute__ ((__nothrow__));
+extern time_t time (time_t *__timer) __attribute__ ((__nothrow__));
+extern double difftime (time_t __time1, time_t __time0)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern time_t mktime (struct tm *__tp) __attribute__ ((__nothrow__));
+extern size_t strftime (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format,
+ __const struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+extern size_t strftime_l (char *__restrict __s, size_t __maxsize,
+ __const char *__restrict __format,
+ __const struct tm *__restrict __tp,
+ __locale_t __loc) __attribute__ ((__nothrow__));
+extern struct tm *gmtime (__const time_t *__timer) __attribute__ ((__nothrow__));
+extern struct tm *localtime (__const time_t *__timer) __attribute__ ((__nothrow__));
+extern struct tm *gmtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+extern struct tm *localtime_r (__const time_t *__restrict __timer,
+ struct tm *__restrict __tp) __attribute__ ((__nothrow__));
+extern char *asctime (__const struct tm *__tp) __attribute__ ((__nothrow__));
+extern char *ctime (__const time_t *__timer) __attribute__ ((__nothrow__));
+extern char *asctime_r (__const struct tm *__restrict __tp,
+ char *__restrict __buf) __attribute__ ((__nothrow__));
+extern char *ctime_r (__const time_t *__restrict __timer,
+ char *__restrict __buf) __attribute__ ((__nothrow__));
+extern char *__tzname[2];
+extern int __daylight;
+extern long int __timezone;
+extern char *tzname[2];
+extern void tzset (void) __attribute__ ((__nothrow__));
+extern int daylight;
+extern long int timezone;
+extern int stime (__const time_t *__when) __attribute__ ((__nothrow__));
+extern time_t timegm (struct tm *__tp) __attribute__ ((__nothrow__));
+extern time_t timelocal (struct tm *__tp) __attribute__ ((__nothrow__));
+extern int dysize (int __year) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int nanosleep (__const struct timespec *__requested_time,
+ struct timespec *__remaining);
+extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __attribute__ ((__nothrow__));
+extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __attribute__ ((__nothrow__));
+extern int clock_settime (clockid_t __clock_id, __const struct timespec *__tp)
+ __attribute__ ((__nothrow__));
+extern int clock_nanosleep (clockid_t __clock_id, int __flags,
+ __const struct timespec *__req,
+ struct timespec *__rem);
+extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __attribute__ ((__nothrow__));
+extern int timer_create (clockid_t __clock_id,
+ struct sigevent *__restrict __evp,
+ timer_t *__restrict __timerid) __attribute__ ((__nothrow__));
+extern int timer_delete (timer_t __timerid) __attribute__ ((__nothrow__));
+extern int timer_settime (timer_t __timerid, int __flags,
+ __const struct itimerspec *__restrict __value,
+ struct itimerspec *__restrict __ovalue) __attribute__ ((__nothrow__));
+extern int timer_gettime (timer_t __timerid, struct itimerspec *__value)
+ __attribute__ ((__nothrow__));
+extern int timer_getoverrun (timer_t __timerid) __attribute__ ((__nothrow__));
+typedef enum
+{
+ G_BOOKMARK_FILE_ERROR_INVALID_URI,
+ G_BOOKMARK_FILE_ERROR_INVALID_VALUE,
+ G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED,
+ G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND,
+ G_BOOKMARK_FILE_ERROR_READ,
+ G_BOOKMARK_FILE_ERROR_UNKNOWN_ENCODING,
+ G_BOOKMARK_FILE_ERROR_WRITE,
+ G_BOOKMARK_FILE_ERROR_FILE_NOT_FOUND
+} GBookmarkFileError;
+GQuark g_bookmark_file_error_quark (void);
+typedef struct _GBookmarkFile GBookmarkFile;
+GBookmarkFile *g_bookmark_file_new (void);
+void g_bookmark_file_free (GBookmarkFile *bookmark);
+gboolean g_bookmark_file_load_from_file (GBookmarkFile *bookmark,
+ const gchar *filename,
+ GError **error);
+gboolean g_bookmark_file_load_from_data (GBookmarkFile *bookmark,
+ const gchar *data,
+ gsize length,
+ GError **error);
+gboolean g_bookmark_file_load_from_data_dirs (GBookmarkFile *bookmark,
+ const gchar *file,
+ gchar **full_path,
+ GError **error);
+gchar * g_bookmark_file_to_data (GBookmarkFile *bookmark,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+gboolean g_bookmark_file_to_file (GBookmarkFile *bookmark,
+ const gchar *filename,
+ GError **error);
+void g_bookmark_file_set_title (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *title);
+gchar * g_bookmark_file_get_title (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error) __attribute__((__malloc__));
+void g_bookmark_file_set_description (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *description);
+gchar * g_bookmark_file_get_description (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error) __attribute__((__malloc__));
+void g_bookmark_file_set_mime_type (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *mime_type);
+gchar * g_bookmark_file_get_mime_type (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error) __attribute__((__malloc__));
+void g_bookmark_file_set_groups (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar **groups,
+ gsize length);
+void g_bookmark_file_add_group (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *group);
+gboolean g_bookmark_file_has_group (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *group,
+ GError **error);
+gchar ** g_bookmark_file_get_groups (GBookmarkFile *bookmark,
+ const gchar *uri,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+void g_bookmark_file_add_application (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *name,
+ const gchar *exec);
+gboolean g_bookmark_file_has_application (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *name,
+ GError **error);
+gchar ** g_bookmark_file_get_applications (GBookmarkFile *bookmark,
+ const gchar *uri,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+gboolean g_bookmark_file_set_app_info (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *name,
+ const gchar *exec,
+ gint count,
+ time_t stamp,
+ GError **error);
+gboolean g_bookmark_file_get_app_info (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *name,
+ gchar **exec,
+ guint *count,
+ time_t *stamp,
+ GError **error);
+void g_bookmark_file_set_is_private (GBookmarkFile *bookmark,
+ const gchar *uri,
+ gboolean is_private);
+gboolean g_bookmark_file_get_is_private (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error);
+void g_bookmark_file_set_icon (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *href,
+ const gchar *mime_type);
+gboolean g_bookmark_file_get_icon (GBookmarkFile *bookmark,
+ const gchar *uri,
+ gchar **href,
+ gchar **mime_type,
+ GError **error);
+void g_bookmark_file_set_added (GBookmarkFile *bookmark,
+ const gchar *uri,
+ time_t added);
+time_t g_bookmark_file_get_added (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error);
+void g_bookmark_file_set_modified (GBookmarkFile *bookmark,
+ const gchar *uri,
+ time_t modified);
+time_t g_bookmark_file_get_modified (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error);
+void g_bookmark_file_set_visited (GBookmarkFile *bookmark,
+ const gchar *uri,
+ time_t visited);
+time_t g_bookmark_file_get_visited (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error);
+gboolean g_bookmark_file_has_item (GBookmarkFile *bookmark,
+ const gchar *uri);
+gint g_bookmark_file_get_size (GBookmarkFile *bookmark);
+gchar ** g_bookmark_file_get_uris (GBookmarkFile *bookmark,
+ gsize *length) __attribute__((__malloc__));
+gboolean g_bookmark_file_remove_group (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *group,
+ GError **error);
+gboolean g_bookmark_file_remove_application (GBookmarkFile *bookmark,
+ const gchar *uri,
+ const gchar *name,
+ GError **error);
+gboolean g_bookmark_file_remove_item (GBookmarkFile *bookmark,
+ const gchar *uri,
+ GError **error);
+gboolean g_bookmark_file_move_item (GBookmarkFile *bookmark,
+ const gchar *old_uri,
+ const gchar *new_uri,
+ GError **error);
+gpointer g_slice_alloc (gsize block_size) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+gpointer g_slice_alloc0 (gsize block_size) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+gpointer g_slice_copy (gsize block_size,
+ gconstpointer mem_block) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+void g_slice_free1 (gsize block_size,
+ gpointer mem_block);
+void g_slice_free_chain_with_offset (gsize block_size,
+ gpointer mem_chain,
+ gsize next_offset);
+typedef enum {
+ G_SLICE_CONFIG_ALWAYS_MALLOC = 1,
+ G_SLICE_CONFIG_BYPASS_MAGAZINES,
+ G_SLICE_CONFIG_WORKING_SET_MSECS,
+ G_SLICE_CONFIG_COLOR_INCREMENT,
+ G_SLICE_CONFIG_CHUNK_SIZES,
+ G_SLICE_CONFIG_CONTENTION_COUNTER
+} GSliceConfig;
+void g_slice_set_config (GSliceConfig ckey, gint64 value);
+gint64 g_slice_get_config (GSliceConfig ckey);
+gint64* g_slice_get_config_state (GSliceConfig ckey, gint64 address, guint *n_values);
+typedef struct _GMemVTable GMemVTable;
+gpointer g_malloc (gsize n_bytes) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+gpointer g_malloc0 (gsize n_bytes) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+gpointer g_realloc (gpointer mem,
+ gsize n_bytes) __attribute__((warn_unused_result));
+void g_free (gpointer mem);
+gpointer g_try_malloc (gsize n_bytes) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+gpointer g_try_malloc0 (gsize n_bytes) __attribute__((__malloc__)) __attribute__((__alloc_size__(1)));
+gpointer g_try_realloc (gpointer mem,
+ gsize n_bytes) __attribute__((warn_unused_result));
+struct _GMemVTable
+{
+ gpointer (*malloc) (gsize n_bytes);
+ gpointer (*realloc) (gpointer mem,
+ gsize n_bytes);
+ void (*free) (gpointer mem);
+ gpointer (*calloc) (gsize n_blocks,
+ gsize n_block_bytes);
+ gpointer (*try_malloc) (gsize n_bytes);
+ gpointer (*try_realloc) (gpointer mem,
+ gsize n_bytes);
+};
+void g_mem_set_vtable (GMemVTable *vtable);
+gboolean g_mem_is_system_malloc (void);
+extern gboolean g_mem_gc_friendly;
+extern GMemVTable *glib_mem_profiler_table;
+void g_mem_profile (void);
+typedef struct _GAllocator GAllocator;
+typedef struct _GMemChunk GMemChunk;
+GMemChunk* g_mem_chunk_new (const gchar *name,
+ gint atom_size,
+ gsize area_size,
+ gint type);
+void g_mem_chunk_destroy (GMemChunk *mem_chunk);
+gpointer g_mem_chunk_alloc (GMemChunk *mem_chunk);
+gpointer g_mem_chunk_alloc0 (GMemChunk *mem_chunk);
+void g_mem_chunk_free (GMemChunk *mem_chunk,
+ gpointer mem);
+void g_mem_chunk_clean (GMemChunk *mem_chunk);
+void g_mem_chunk_reset (GMemChunk *mem_chunk);
+void g_mem_chunk_print (GMemChunk *mem_chunk);
+void g_mem_chunk_info (void);
+void g_blow_chunks (void);
+GAllocator*g_allocator_new (const gchar *name,
+ guint n_preallocs);
+void g_allocator_free (GAllocator *allocator);
+typedef struct _GList GList;
+struct _GList
+{
+ gpointer data;
+ GList *next;
+ GList *prev;
+};
+GList* g_list_alloc (void) __attribute__((warn_unused_result));
+void g_list_free (GList *list);
+void g_list_free_1 (GList *list);
+GList* g_list_append (GList *list,
+ gpointer data) __attribute__((warn_unused_result));
+GList* g_list_prepend (GList *list,
+ gpointer data) __attribute__((warn_unused_result));
+GList* g_list_insert (GList *list,
+ gpointer data,
+ gint position) __attribute__((warn_unused_result));
+GList* g_list_insert_sorted (GList *list,
+ gpointer data,
+ GCompareFunc func) __attribute__((warn_unused_result));
+GList* g_list_insert_sorted_with_data (GList *list,
+ gpointer data,
+ GCompareDataFunc func,
+ gpointer user_data) __attribute__((warn_unused_result));
+GList* g_list_insert_before (GList *list,
+ GList *sibling,
+ gpointer data) __attribute__((warn_unused_result));
+GList* g_list_concat (GList *list1,
+ GList *list2) __attribute__((warn_unused_result));
+GList* g_list_remove (GList *list,
+ gconstpointer data) __attribute__((warn_unused_result));
+GList* g_list_remove_all (GList *list,
+ gconstpointer data) __attribute__((warn_unused_result));
+GList* g_list_remove_link (GList *list,
+ GList *llink) __attribute__((warn_unused_result));
+GList* g_list_delete_link (GList *list,
+ GList *link_) __attribute__((warn_unused_result));
+GList* g_list_reverse (GList *list) __attribute__((warn_unused_result));
+GList* g_list_copy (GList *list) __attribute__((warn_unused_result));
+GList* g_list_nth (GList *list,
+ guint n);
+GList* g_list_nth_prev (GList *list,
+ guint n);
+GList* g_list_find (GList *list,
+ gconstpointer data);
+GList* g_list_find_custom (GList *list,
+ gconstpointer data,
+ GCompareFunc func);
+gint g_list_position (GList *list,
+ GList *llink);
+gint g_list_index (GList *list,
+ gconstpointer data);
+GList* g_list_last (GList *list);
+GList* g_list_first (GList *list);
+guint g_list_length (GList *list);
+void g_list_foreach (GList *list,
+ GFunc func,
+ gpointer user_data);
+GList* g_list_sort (GList *list,
+ GCompareFunc compare_func) __attribute__((warn_unused_result));
+GList* g_list_sort_with_data (GList *list,
+ GCompareDataFunc compare_func,
+ gpointer user_data) __attribute__((warn_unused_result));
+gpointer g_list_nth_data (GList *list,
+ guint n);
+void g_list_push_allocator (gpointer allocator);
+void g_list_pop_allocator (void);
+typedef struct _GCache GCache;
+typedef gpointer (*GCacheNewFunc) (gpointer key);
+typedef gpointer (*GCacheDupFunc) (gpointer value);
+typedef void (*GCacheDestroyFunc) (gpointer value);
+GCache* g_cache_new (GCacheNewFunc value_new_func,
+ GCacheDestroyFunc value_destroy_func,
+ GCacheDupFunc key_dup_func,
+ GCacheDestroyFunc key_destroy_func,
+ GHashFunc hash_key_func,
+ GHashFunc hash_value_func,
+ GEqualFunc key_equal_func);
+void g_cache_destroy (GCache *cache);
+gpointer g_cache_insert (GCache *cache,
+ gpointer key);
+void g_cache_remove (GCache *cache,
+ gconstpointer value);
+void g_cache_key_foreach (GCache *cache,
+ GHFunc func,
+ gpointer user_data);
+void g_cache_value_foreach (GCache *cache,
+ GHFunc func,
+ gpointer user_data);
+typedef enum {
+ G_CHECKSUM_MD5,
+ G_CHECKSUM_SHA1,
+ G_CHECKSUM_SHA256
+} GChecksumType;
+typedef struct _GChecksum GChecksum;
+gssize g_checksum_type_get_length (GChecksumType checksum_type);
+GChecksum * g_checksum_new (GChecksumType checksum_type);
+void g_checksum_reset (GChecksum *checksum);
+GChecksum * g_checksum_copy (const GChecksum *checksum);
+void g_checksum_free (GChecksum *checksum);
+void g_checksum_update (GChecksum *checksum,
+ const guchar *data,
+ gssize length);
+const gchar *g_checksum_get_string (GChecksum *checksum);
+void g_checksum_get_digest (GChecksum *checksum,
+ guint8 *buffer,
+ gsize *digest_len);
+gchar *g_compute_checksum_for_data (GChecksumType checksum_type,
+ const guchar *data,
+ gsize length);
+gchar *g_compute_checksum_for_string (GChecksumType checksum_type,
+ const gchar *str,
+ gssize length);
+typedef struct _GCompletion GCompletion;
+typedef gchar* (*GCompletionFunc) (gpointer);
+typedef gint (*GCompletionStrncmpFunc) (const gchar *s1,
+ const gchar *s2,
+ gsize n);
+struct _GCompletion
+{
+ GList* items;
+ GCompletionFunc func;
+ gchar* prefix;
+ GList* cache;
+ GCompletionStrncmpFunc strncmp_func;
+};
+GCompletion* g_completion_new (GCompletionFunc func);
+void g_completion_add_items (GCompletion* cmp,
+ GList* items);
+void g_completion_remove_items (GCompletion* cmp,
+ GList* items);
+void g_completion_clear_items (GCompletion* cmp);
+GList* g_completion_complete (GCompletion* cmp,
+ const gchar* prefix,
+ gchar** new_prefix);
+GList* g_completion_complete_utf8 (GCompletion *cmp,
+ const gchar* prefix,
+ gchar** new_prefix);
+void g_completion_set_compare (GCompletion *cmp,
+ GCompletionStrncmpFunc strncmp_func);
+void g_completion_free (GCompletion* cmp);
+typedef enum
+{
+ G_CONVERT_ERROR_NO_CONVERSION,
+ G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
+ G_CONVERT_ERROR_FAILED,
+ G_CONVERT_ERROR_PARTIAL_INPUT,
+ G_CONVERT_ERROR_BAD_URI,
+ G_CONVERT_ERROR_NOT_ABSOLUTE_PATH
+} GConvertError;
+GQuark g_convert_error_quark (void);
+typedef struct _GIConv *GIConv;
+GIConv g_iconv_open (const gchar *to_codeset,
+ const gchar *from_codeset);
+gsize g_iconv (GIConv converter,
+ gchar **inbuf,
+ gsize *inbytes_left,
+ gchar **outbuf,
+ gsize *outbytes_left);
+gint g_iconv_close (GIConv converter);
+gchar* g_convert (const gchar *str,
+ gssize len,
+ const gchar *to_codeset,
+ const gchar *from_codeset,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_convert_with_iconv (const gchar *str,
+ gssize len,
+ GIConv converter,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_convert_with_fallback (const gchar *str,
+ gssize len,
+ const gchar *to_codeset,
+ const gchar *from_codeset,
+ gchar *fallback,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_locale_to_utf8 (const gchar *opsysstring,
+ gssize len,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_locale_from_utf8 (const gchar *utf8string,
+ gssize len,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_filename_to_utf8 (const gchar *opsysstring,
+ gssize len,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_filename_from_utf8 (const gchar *utf8string,
+ gssize len,
+ gsize *bytes_read,
+ gsize *bytes_written,
+ GError **error) __attribute__((__malloc__));
+gchar *g_filename_from_uri (const gchar *uri,
+ gchar **hostname,
+ GError **error) __attribute__((__malloc__));
+gchar *g_filename_to_uri (const gchar *filename,
+ const gchar *hostname,
+ GError **error) __attribute__((__malloc__));
+gchar *g_filename_display_name (const gchar *filename) __attribute__((__malloc__));
+gboolean g_get_filename_charsets (const gchar ***charsets);
+gchar *g_filename_display_basename (const gchar *filename) __attribute__((__malloc__));
+gchar **g_uri_list_extract_uris (const gchar *uri_list) __attribute__((__malloc__));
+typedef struct _GData GData;
+typedef void (*GDataForeachFunc) (GQuark key_id,
+ gpointer data,
+ gpointer user_data);
+void g_datalist_init (GData **datalist);
+void g_datalist_clear (GData **datalist);
+gpointer g_datalist_id_get_data (GData **datalist,
+ GQuark key_id);
+void g_datalist_id_set_data_full (GData **datalist,
+ GQuark key_id,
+ gpointer data,
+ GDestroyNotify destroy_func);
+gpointer g_datalist_id_remove_no_notify (GData **datalist,
+ GQuark key_id);
+void g_datalist_foreach (GData **datalist,
+ GDataForeachFunc func,
+ gpointer user_data);
+void g_datalist_set_flags (GData **datalist,
+ guint flags);
+void g_datalist_unset_flags (GData **datalist,
+ guint flags);
+guint g_datalist_get_flags (GData **datalist);
+void g_dataset_destroy (gconstpointer dataset_location);
+gpointer g_dataset_id_get_data (gconstpointer dataset_location,
+ GQuark key_id);
+void g_dataset_id_set_data_full (gconstpointer dataset_location,
+ GQuark key_id,
+ gpointer data,
+ GDestroyNotify destroy_func);
+gpointer g_dataset_id_remove_no_notify (gconstpointer dataset_location,
+ GQuark key_id);
+void g_dataset_foreach (gconstpointer dataset_location,
+ GDataForeachFunc func,
+ gpointer user_data);
+typedef gint32 GTime;
+typedef guint16 GDateYear;
+typedef guint8 GDateDay;
+typedef struct _GDate GDate;
+typedef enum
+{
+ G_DATE_DAY = 0,
+ G_DATE_MONTH = 1,
+ G_DATE_YEAR = 2
+} GDateDMY;
+typedef enum
+{
+ G_DATE_BAD_WEEKDAY = 0,
+ G_DATE_MONDAY = 1,
+ G_DATE_TUESDAY = 2,
+ G_DATE_WEDNESDAY = 3,
+ G_DATE_THURSDAY = 4,
+ G_DATE_FRIDAY = 5,
+ G_DATE_SATURDAY = 6,
+ G_DATE_SUNDAY = 7
+} GDateWeekday;
+typedef enum
+{
+ G_DATE_BAD_MONTH = 0,
+ G_DATE_JANUARY = 1,
+ G_DATE_FEBRUARY = 2,
+ G_DATE_MARCH = 3,
+ G_DATE_APRIL = 4,
+ G_DATE_MAY = 5,
+ G_DATE_JUNE = 6,
+ G_DATE_JULY = 7,
+ G_DATE_AUGUST = 8,
+ G_DATE_SEPTEMBER = 9,
+ G_DATE_OCTOBER = 10,
+ G_DATE_NOVEMBER = 11,
+ G_DATE_DECEMBER = 12
+} GDateMonth;
+struct _GDate
+{
+ guint julian_days : 32;
+ guint julian : 1;
+ guint dmy : 1;
+ guint day : 6;
+ guint month : 4;
+ guint year : 16;
+};
+GDate* g_date_new (void);
+GDate* g_date_new_dmy (GDateDay day,
+ GDateMonth month,
+ GDateYear year);
+GDate* g_date_new_julian (guint32 julian_day);
+void g_date_free (GDate *date);
+gboolean g_date_valid (const GDate *date);
+gboolean g_date_valid_day (GDateDay day) __attribute__((__const__));
+gboolean g_date_valid_month (GDateMonth month) __attribute__((__const__));
+gboolean g_date_valid_year (GDateYear year) __attribute__((__const__));
+gboolean g_date_valid_weekday (GDateWeekday weekday) __attribute__((__const__));
+gboolean g_date_valid_julian (guint32 julian_date) __attribute__((__const__));
+gboolean g_date_valid_dmy (GDateDay day,
+ GDateMonth month,
+ GDateYear year) __attribute__((__const__));
+GDateWeekday g_date_get_weekday (const GDate *date);
+GDateMonth g_date_get_month (const GDate *date);
+GDateYear g_date_get_year (const GDate *date);
+GDateDay g_date_get_day (const GDate *date);
+guint32 g_date_get_julian (const GDate *date);
+guint g_date_get_day_of_year (const GDate *date);
+guint g_date_get_monday_week_of_year (const GDate *date);
+guint g_date_get_sunday_week_of_year (const GDate *date);
+guint g_date_get_iso8601_week_of_year (const GDate *date);
+void g_date_clear (GDate *date,
+ guint n_dates);
+void g_date_set_parse (GDate *date,
+ const gchar *str);
+void g_date_set_time_t (GDate *date,
+ time_t timet);
+void g_date_set_time_val (GDate *date,
+ GTimeVal *timeval);
+void g_date_set_time (GDate *date,
+ GTime time_);
+void g_date_set_month (GDate *date,
+ GDateMonth month);
+void g_date_set_day (GDate *date,
+ GDateDay day);
+void g_date_set_year (GDate *date,
+ GDateYear year);
+void g_date_set_dmy (GDate *date,
+ GDateDay day,
+ GDateMonth month,
+ GDateYear y);
+void g_date_set_julian (GDate *date,
+ guint32 julian_date);
+gboolean g_date_is_first_of_month (const GDate *date);
+gboolean g_date_is_last_of_month (const GDate *date);
+void g_date_add_days (GDate *date,
+ guint n_days);
+void g_date_subtract_days (GDate *date,
+ guint n_days);
+void g_date_add_months (GDate *date,
+ guint n_months);
+void g_date_subtract_months (GDate *date,
+ guint n_months);
+void g_date_add_years (GDate *date,
+ guint n_years);
+void g_date_subtract_years (GDate *date,
+ guint n_years);
+gboolean g_date_is_leap_year (GDateYear year) __attribute__((__const__));
+guint8 g_date_get_days_in_month (GDateMonth month,
+ GDateYear year) __attribute__((__const__));
+guint8 g_date_get_monday_weeks_in_year (GDateYear year) __attribute__((__const__));
+guint8 g_date_get_sunday_weeks_in_year (GDateYear year) __attribute__((__const__));
+gint g_date_days_between (const GDate *date1,
+ const GDate *date2);
+gint g_date_compare (const GDate *lhs,
+ const GDate *rhs);
+void g_date_to_struct_tm (const GDate *date,
+ struct tm *tm);
+void g_date_clamp (GDate *date,
+ const GDate *min_date,
+ const GDate *max_date);
+void g_date_order (GDate *date1, GDate *date2);
+gsize g_date_strftime (gchar *s,
+ gsize slen,
+ const gchar *format,
+ const GDate *date);
+typedef struct _GDir GDir;
+GDir * g_dir_open (const gchar *path,
+ guint flags,
+ GError **error);
+const gchar *g_dir_read_name (GDir *dir);
+void g_dir_rewind (GDir *dir);
+void g_dir_close (GDir *dir);
+typedef enum
+{
+ G_FILE_ERROR_EXIST,
+ G_FILE_ERROR_ISDIR,
+ G_FILE_ERROR_ACCES,
+ G_FILE_ERROR_NAMETOOLONG,
+ G_FILE_ERROR_NOENT,
+ G_FILE_ERROR_NOTDIR,
+ G_FILE_ERROR_NXIO,
+ G_FILE_ERROR_NODEV,
+ G_FILE_ERROR_ROFS,
+ G_FILE_ERROR_TXTBSY,
+ G_FILE_ERROR_FAULT,
+ G_FILE_ERROR_LOOP,
+ G_FILE_ERROR_NOSPC,
+ G_FILE_ERROR_NOMEM,
+ G_FILE_ERROR_MFILE,
+ G_FILE_ERROR_NFILE,
+ G_FILE_ERROR_BADF,
+ G_FILE_ERROR_INVAL,
+ G_FILE_ERROR_PIPE,
+ G_FILE_ERROR_AGAIN,
+ G_FILE_ERROR_INTR,
+ G_FILE_ERROR_IO,
+ G_FILE_ERROR_PERM,
+ G_FILE_ERROR_NOSYS,
+ G_FILE_ERROR_FAILED
+} GFileError;
+typedef enum
+{
+ G_FILE_TEST_IS_REGULAR = 1 << 0,
+ G_FILE_TEST_IS_SYMLINK = 1 << 1,
+ G_FILE_TEST_IS_DIR = 1 << 2,
+ G_FILE_TEST_IS_EXECUTABLE = 1 << 3,
+ G_FILE_TEST_EXISTS = 1 << 4
+} GFileTest;
+GQuark g_file_error_quark (void);
+GFileError g_file_error_from_errno (gint err_no);
+gboolean g_file_test (const gchar *filename,
+ GFileTest test);
+gboolean g_file_get_contents (const gchar *filename,
+ gchar **contents,
+ gsize *length,
+ GError **error);
+gboolean g_file_set_contents (const gchar *filename,
+ const gchar *contents,
+ gssize length,
+ GError **error);
+gchar *g_file_read_link (const gchar *filename,
+ GError **error);
+gint g_mkstemp (gchar *tmpl);
+gint g_file_open_tmp (const gchar *tmpl,
+ gchar **name_used,
+ GError **error);
+char *g_format_size_for_display (goffset size);
+gchar *g_build_path (const gchar *separator,
+ const gchar *first_element,
+ ...) __attribute__((__malloc__)) __attribute__((__sentinel__));
+gchar *g_build_pathv (const gchar *separator,
+ gchar **args) __attribute__((__malloc__));
+gchar *g_build_filename (const gchar *first_element,
+ ...) __attribute__((__malloc__)) __attribute__((__sentinel__));
+gchar *g_build_filenamev (gchar **args) __attribute__((__malloc__));
+int g_mkdir_with_parents (const gchar *pathname,
+ int mode);
+typedef struct _GHashTable GHashTable;
+typedef gboolean (*GHRFunc) (gpointer key,
+ gpointer value,
+ gpointer user_data);
+typedef struct _GHashTableIter GHashTableIter;
+struct _GHashTableIter
+{
+ gpointer dummy1;
+ gpointer dummy2;
+ gpointer dummy3;
+ int dummy4;
+ gboolean dummy5;
+ gpointer dummy6;
+};
+GHashTable* g_hash_table_new (GHashFunc hash_func,
+ GEqualFunc key_equal_func);
+GHashTable* g_hash_table_new_full (GHashFunc hash_func,
+ GEqualFunc key_equal_func,
+ GDestroyNotify key_destroy_func,
+ GDestroyNotify value_destroy_func);
+void g_hash_table_destroy (GHashTable *hash_table);
+void g_hash_table_insert (GHashTable *hash_table,
+ gpointer key,
+ gpointer value);
+void g_hash_table_replace (GHashTable *hash_table,
+ gpointer key,
+ gpointer value);
+gboolean g_hash_table_remove (GHashTable *hash_table,
+ gconstpointer key);
+void g_hash_table_remove_all (GHashTable *hash_table);
+gboolean g_hash_table_steal (GHashTable *hash_table,
+ gconstpointer key);
+void g_hash_table_steal_all (GHashTable *hash_table);
+gpointer g_hash_table_lookup (GHashTable *hash_table,
+ gconstpointer key);
+gboolean g_hash_table_lookup_extended (GHashTable *hash_table,
+ gconstpointer lookup_key,
+ gpointer *orig_key,
+ gpointer *value);
+void g_hash_table_foreach (GHashTable *hash_table,
+ GHFunc func,
+ gpointer user_data);
+gpointer g_hash_table_find (GHashTable *hash_table,
+ GHRFunc predicate,
+ gpointer user_data);
+guint g_hash_table_foreach_remove (GHashTable *hash_table,
+ GHRFunc func,
+ gpointer user_data);
+guint g_hash_table_foreach_steal (GHashTable *hash_table,
+ GHRFunc func,
+ gpointer user_data);
+guint g_hash_table_size (GHashTable *hash_table);
+GList * g_hash_table_get_keys (GHashTable *hash_table);
+GList * g_hash_table_get_values (GHashTable *hash_table);
+void g_hash_table_iter_init (GHashTableIter *iter,
+ GHashTable *hash_table);
+gboolean g_hash_table_iter_next (GHashTableIter *iter,
+ gpointer *key,
+ gpointer *value);
+GHashTable* g_hash_table_iter_get_hash_table (GHashTableIter *iter);
+void g_hash_table_iter_remove (GHashTableIter *iter);
+void g_hash_table_iter_steal (GHashTableIter *iter);
+GHashTable* g_hash_table_ref (GHashTable *hash_table);
+void g_hash_table_unref (GHashTable *hash_table);
+gboolean g_str_equal (gconstpointer v1,
+ gconstpointer v2);
+guint g_str_hash (gconstpointer v);
+gboolean g_int_equal (gconstpointer v1,
+ gconstpointer v2);
+guint g_int_hash (gconstpointer v);
+guint g_direct_hash (gconstpointer v) __attribute__((__const__));
+gboolean g_direct_equal (gconstpointer v1,
+ gconstpointer v2) __attribute__((__const__));
+typedef struct _GHook GHook;
+typedef struct _GHookList GHookList;
+typedef gint (*GHookCompareFunc) (GHook *new_hook,
+ GHook *sibling);
+typedef gboolean (*GHookFindFunc) (GHook *hook,
+ gpointer data);
+typedef void (*GHookMarshaller) (GHook *hook,
+ gpointer marshal_data);
+typedef gboolean (*GHookCheckMarshaller) (GHook *hook,
+ gpointer marshal_data);
+typedef void (*GHookFunc) (gpointer data);
+typedef gboolean (*GHookCheckFunc) (gpointer data);
+typedef void (*GHookFinalizeFunc) (GHookList *hook_list,
+ GHook *hook);
+typedef enum
+{
+ G_HOOK_FLAG_ACTIVE = 1 << 0,
+ G_HOOK_FLAG_IN_CALL = 1 << 1,
+ G_HOOK_FLAG_MASK = 0x0f
+} GHookFlagMask;
+struct _GHookList
+{
+ gulong seq_id;
+ guint hook_size : 16;
+ guint is_setup : 1;
+ GHook *hooks;
+ gpointer dummy3;
+ GHookFinalizeFunc finalize_hook;
+ gpointer dummy[2];
+};
+struct _GHook
+{
+ gpointer data;
+ GHook *next;
+ GHook *prev;
+ guint ref_count;
+ gulong hook_id;
+ guint flags;
+ gpointer func;
+ GDestroyNotify destroy;
+};
+void g_hook_list_init (GHookList *hook_list,
+ guint hook_size);
+void g_hook_list_clear (GHookList *hook_list);
+GHook* g_hook_alloc (GHookList *hook_list);
+void g_hook_free (GHookList *hook_list,
+ GHook *hook);
+GHook * g_hook_ref (GHookList *hook_list,
+ GHook *hook);
+void g_hook_unref (GHookList *hook_list,
+ GHook *hook);
+gboolean g_hook_destroy (GHookList *hook_list,
+ gulong hook_id);
+void g_hook_destroy_link (GHookList *hook_list,
+ GHook *hook);
+void g_hook_prepend (GHookList *hook_list,
+ GHook *hook);
+void g_hook_insert_before (GHookList *hook_list,
+ GHook *sibling,
+ GHook *hook);
+void g_hook_insert_sorted (GHookList *hook_list,
+ GHook *hook,
+ GHookCompareFunc func);
+GHook* g_hook_get (GHookList *hook_list,
+ gulong hook_id);
+GHook* g_hook_find (GHookList *hook_list,
+ gboolean need_valids,
+ GHookFindFunc func,
+ gpointer data);
+GHook* g_hook_find_data (GHookList *hook_list,
+ gboolean need_valids,
+ gpointer data);
+GHook* g_hook_find_func (GHookList *hook_list,
+ gboolean need_valids,
+ gpointer func);
+GHook* g_hook_find_func_data (GHookList *hook_list,
+ gboolean need_valids,
+ gpointer func,
+ gpointer data);
+GHook* g_hook_first_valid (GHookList *hook_list,
+ gboolean may_be_in_call);
+GHook* g_hook_next_valid (GHookList *hook_list,
+ GHook *hook,
+ gboolean may_be_in_call);
+gint g_hook_compare_ids (GHook *new_hook,
+ GHook *sibling);
+void g_hook_list_invoke (GHookList *hook_list,
+ gboolean may_recurse);
+void g_hook_list_invoke_check (GHookList *hook_list,
+ gboolean may_recurse);
+void g_hook_list_marshal (GHookList *hook_list,
+ gboolean may_recurse,
+ GHookMarshaller marshaller,
+ gpointer marshal_data);
+void g_hook_list_marshal_check (GHookList *hook_list,
+ gboolean may_recurse,
+ GHookCheckMarshaller marshaller,
+ gpointer marshal_data);
+typedef struct _GPollFD GPollFD;
+typedef gint (*GPollFunc) (GPollFD *ufds,
+ guint nfsd,
+ gint timeout_);
+struct _GPollFD
+{
+ gint fd;
+ gushort events;
+ gushort revents;
+};
+gint g_poll (GPollFD *fds,
+ guint nfds,
+ gint timeout);
+typedef struct _GSList GSList;
+struct _GSList
+{
+ gpointer data;
+ GSList *next;
+};
+GSList* g_slist_alloc (void) __attribute__((warn_unused_result));
+void g_slist_free (GSList *list);
+void g_slist_free_1 (GSList *list);
+GSList* g_slist_append (GSList *list,
+ gpointer data) __attribute__((warn_unused_result));
+GSList* g_slist_prepend (GSList *list,
+ gpointer data) __attribute__((warn_unused_result));
+GSList* g_slist_insert (GSList *list,
+ gpointer data,
+ gint position) __attribute__((warn_unused_result));
+GSList* g_slist_insert_sorted (GSList *list,
+ gpointer data,
+ GCompareFunc func) __attribute__((warn_unused_result));
+GSList* g_slist_insert_sorted_with_data (GSList *list,
+ gpointer data,
+ GCompareDataFunc func,
+ gpointer user_data) __attribute__((warn_unused_result));
+GSList* g_slist_insert_before (GSList *slist,
+ GSList *sibling,
+ gpointer data) __attribute__((warn_unused_result));
+GSList* g_slist_concat (GSList *list1,
+ GSList *list2) __attribute__((warn_unused_result));
+GSList* g_slist_remove (GSList *list,
+ gconstpointer data) __attribute__((warn_unused_result));
+GSList* g_slist_remove_all (GSList *list,
+ gconstpointer data) __attribute__((warn_unused_result));
+GSList* g_slist_remove_link (GSList *list,
+ GSList *link_) __attribute__((warn_unused_result));
+GSList* g_slist_delete_link (GSList *list,
+ GSList *link_) __attribute__((warn_unused_result));
+GSList* g_slist_reverse (GSList *list) __attribute__((warn_unused_result));
+GSList* g_slist_copy (GSList *list) __attribute__((warn_unused_result));
+GSList* g_slist_nth (GSList *list,
+ guint n);
+GSList* g_slist_find (GSList *list,
+ gconstpointer data);
+GSList* g_slist_find_custom (GSList *list,
+ gconstpointer data,
+ GCompareFunc func);
+gint g_slist_position (GSList *list,
+ GSList *llink);
+gint g_slist_index (GSList *list,
+ gconstpointer data);
+GSList* g_slist_last (GSList *list);
+guint g_slist_length (GSList *list);
+void g_slist_foreach (GSList *list,
+ GFunc func,
+ gpointer user_data);
+GSList* g_slist_sort (GSList *list,
+ GCompareFunc compare_func) __attribute__((warn_unused_result));
+GSList* g_slist_sort_with_data (GSList *list,
+ GCompareDataFunc compare_func,
+ gpointer user_data) __attribute__((warn_unused_result));
+gpointer g_slist_nth_data (GSList *list,
+ guint n);
+void g_slist_push_allocator (gpointer dummy);
+void g_slist_pop_allocator (void);
+typedef struct _GMainContext GMainContext;
+typedef struct _GMainLoop GMainLoop;
+typedef struct _GSource GSource;
+typedef struct _GSourceCallbackFuncs GSourceCallbackFuncs;
+typedef struct _GSourceFuncs GSourceFuncs;
+typedef gboolean (*GSourceFunc) (gpointer data);
+typedef void (*GChildWatchFunc) (GPid pid,
+ gint status,
+ gpointer data);
+struct _GSource
+{
+ gpointer callback_data;
+ GSourceCallbackFuncs *callback_funcs;
+ GSourceFuncs *source_funcs;
+ guint ref_count;
+ GMainContext *context;
+ gint priority;
+ guint flags;
+ guint source_id;
+ GSList *poll_fds;
+ GSource *prev;
+ GSource *next;
+ gpointer reserved1;
+ gpointer reserved2;
+};
+struct _GSourceCallbackFuncs
+{
+ void (*ref) (gpointer cb_data);
+ void (*unref) (gpointer cb_data);
+ void (*get) (gpointer cb_data,
+ GSource *source,
+ GSourceFunc *func,
+ gpointer *data);
+};
+typedef void (*GSourceDummyMarshal) (void);
+struct _GSourceFuncs
+{
+ gboolean (*prepare) (GSource *source,
+ gint *timeout_);
+ gboolean (*check) (GSource *source);
+ gboolean (*dispatch) (GSource *source,
+ GSourceFunc callback,
+ gpointer user_data);
+ void (*finalize) (GSource *source);
+ GSourceFunc closure_callback;
+ GSourceDummyMarshal closure_marshal;
+};
+GMainContext *g_main_context_new (void);
+GMainContext *g_main_context_ref (GMainContext *context);
+void g_main_context_unref (GMainContext *context);
+GMainContext *g_main_context_default (void);
+gboolean g_main_context_iteration (GMainContext *context,
+ gboolean may_block);
+gboolean g_main_context_pending (GMainContext *context);
+GSource *g_main_context_find_source_by_id (GMainContext *context,
+ guint source_id);
+GSource *g_main_context_find_source_by_user_data (GMainContext *context,
+ gpointer user_data);
+GSource *g_main_context_find_source_by_funcs_user_data (GMainContext *context,
+ GSourceFuncs *funcs,
+ gpointer user_data);
+void g_main_context_wakeup (GMainContext *context);
+gboolean g_main_context_acquire (GMainContext *context);
+void g_main_context_release (GMainContext *context);
+gboolean g_main_context_is_owner (GMainContext *context);
+gboolean g_main_context_wait (GMainContext *context,
+ GCond *cond,
+ GMutex *mutex);
+gboolean g_main_context_prepare (GMainContext *context,
+ gint *priority);
+gint g_main_context_query (GMainContext *context,
+ gint max_priority,
+ gint *timeout_,
+ GPollFD *fds,
+ gint n_fds);
+gint g_main_context_check (GMainContext *context,
+ gint max_priority,
+ GPollFD *fds,
+ gint n_fds);
+void g_main_context_dispatch (GMainContext *context);
+void g_main_context_set_poll_func (GMainContext *context,
+ GPollFunc func);
+GPollFunc g_main_context_get_poll_func (GMainContext *context);
+void g_main_context_add_poll (GMainContext *context,
+ GPollFD *fd,
+ gint priority);
+void g_main_context_remove_poll (GMainContext *context,
+ GPollFD *fd);
+gint g_main_depth (void);
+GSource *g_main_current_source (void);
+GMainLoop *g_main_loop_new (GMainContext *context,
+ gboolean is_running);
+void g_main_loop_run (GMainLoop *loop);
+void g_main_loop_quit (GMainLoop *loop);
+GMainLoop *g_main_loop_ref (GMainLoop *loop);
+void g_main_loop_unref (GMainLoop *loop);
+gboolean g_main_loop_is_running (GMainLoop *loop);
+GMainContext *g_main_loop_get_context (GMainLoop *loop);
+GSource *g_source_new (GSourceFuncs *source_funcs,
+ guint struct_size);
+GSource *g_source_ref (GSource *source);
+void g_source_unref (GSource *source);
+guint g_source_attach (GSource *source,
+ GMainContext *context);
+void g_source_destroy (GSource *source);
+void g_source_set_priority (GSource *source,
+ gint priority);
+gint g_source_get_priority (GSource *source);
+void g_source_set_can_recurse (GSource *source,
+ gboolean can_recurse);
+gboolean g_source_get_can_recurse (GSource *source);
+guint g_source_get_id (GSource *source);
+GMainContext *g_source_get_context (GSource *source);
+void g_source_set_callback (GSource *source,
+ GSourceFunc func,
+ gpointer data,
+ GDestroyNotify notify);
+void g_source_set_funcs (GSource *source,
+ GSourceFuncs *funcs);
+gboolean g_source_is_destroyed (GSource *source);
+void g_source_set_callback_indirect (GSource *source,
+ gpointer callback_data,
+ GSourceCallbackFuncs *callback_funcs);
+void g_source_add_poll (GSource *source,
+ GPollFD *fd);
+void g_source_remove_poll (GSource *source,
+ GPollFD *fd);
+void g_source_get_current_time (GSource *source,
+ GTimeVal *timeval);
+GSource *g_idle_source_new (void);
+GSource *g_child_watch_source_new (GPid pid);
+GSource *g_timeout_source_new (guint interval);
+GSource *g_timeout_source_new_seconds (guint interval);
+void g_get_current_time (GTimeVal *result);
+gboolean g_source_remove (guint tag);
+gboolean g_source_remove_by_user_data (gpointer user_data);
+gboolean g_source_remove_by_funcs_user_data (GSourceFuncs *funcs,
+ gpointer user_data);
+guint g_timeout_add_full (gint priority,
+ guint interval,
+ GSourceFunc function,
+ gpointer data,
+ GDestroyNotify notify);
+guint g_timeout_add (guint interval,
+ GSourceFunc function,
+ gpointer data);
+guint g_timeout_add_seconds_full (gint priority,
+ guint interval,
+ GSourceFunc function,
+ gpointer data,
+ GDestroyNotify notify);
+guint g_timeout_add_seconds (guint interval,
+ GSourceFunc function,
+ gpointer data);
+guint g_child_watch_add_full (gint priority,
+ GPid pid,
+ GChildWatchFunc function,
+ gpointer data,
+ GDestroyNotify notify);
+guint g_child_watch_add (GPid pid,
+ GChildWatchFunc function,
+ gpointer data);
+guint g_idle_add (GSourceFunc function,
+ gpointer data);
+guint g_idle_add_full (gint priority,
+ GSourceFunc function,
+ gpointer data,
+ GDestroyNotify notify);
+gboolean g_idle_remove_by_data (gpointer data);
+extern GSourceFuncs g_timeout_funcs;
+extern GSourceFuncs g_child_watch_funcs;
+extern GSourceFuncs g_idle_funcs;
+typedef guint32 gunichar;
+typedef guint16 gunichar2;
+typedef enum
+{
+ G_UNICODE_CONTROL,
+ G_UNICODE_FORMAT,
+ G_UNICODE_UNASSIGNED,
+ G_UNICODE_PRIVATE_USE,
+ G_UNICODE_SURROGATE,
+ G_UNICODE_LOWERCASE_LETTER,
+ G_UNICODE_MODIFIER_LETTER,
+ G_UNICODE_OTHER_LETTER,
+ G_UNICODE_TITLECASE_LETTER,
+ G_UNICODE_UPPERCASE_LETTER,
+ G_UNICODE_COMBINING_MARK,
+ G_UNICODE_ENCLOSING_MARK,
+ G_UNICODE_NON_SPACING_MARK,
+ G_UNICODE_DECIMAL_NUMBER,
+ G_UNICODE_LETTER_NUMBER,
+ G_UNICODE_OTHER_NUMBER,
+ G_UNICODE_CONNECT_PUNCTUATION,
+ G_UNICODE_DASH_PUNCTUATION,
+ G_UNICODE_CLOSE_PUNCTUATION,
+ G_UNICODE_FINAL_PUNCTUATION,
+ G_UNICODE_INITIAL_PUNCTUATION,
+ G_UNICODE_OTHER_PUNCTUATION,
+ G_UNICODE_OPEN_PUNCTUATION,
+ G_UNICODE_CURRENCY_SYMBOL,
+ G_UNICODE_MODIFIER_SYMBOL,
+ G_UNICODE_MATH_SYMBOL,
+ G_UNICODE_OTHER_SYMBOL,
+ G_UNICODE_LINE_SEPARATOR,
+ G_UNICODE_PARAGRAPH_SEPARATOR,
+ G_UNICODE_SPACE_SEPARATOR
+} GUnicodeType;
+typedef enum
+{
+ G_UNICODE_BREAK_MANDATORY,
+ G_UNICODE_BREAK_CARRIAGE_RETURN,
+ G_UNICODE_BREAK_LINE_FEED,
+ G_UNICODE_BREAK_COMBINING_MARK,
+ G_UNICODE_BREAK_SURROGATE,
+ G_UNICODE_BREAK_ZERO_WIDTH_SPACE,
+ G_UNICODE_BREAK_INSEPARABLE,
+ G_UNICODE_BREAK_NON_BREAKING_GLUE,
+ G_UNICODE_BREAK_CONTINGENT,
+ G_UNICODE_BREAK_SPACE,
+ G_UNICODE_BREAK_AFTER,
+ G_UNICODE_BREAK_BEFORE,
+ G_UNICODE_BREAK_BEFORE_AND_AFTER,
+ G_UNICODE_BREAK_HYPHEN,
+ G_UNICODE_BREAK_NON_STARTER,
+ G_UNICODE_BREAK_OPEN_PUNCTUATION,
+ G_UNICODE_BREAK_CLOSE_PUNCTUATION,
+ G_UNICODE_BREAK_QUOTATION,
+ G_UNICODE_BREAK_EXCLAMATION,
+ G_UNICODE_BREAK_IDEOGRAPHIC,
+ G_UNICODE_BREAK_NUMERIC,
+ G_UNICODE_BREAK_INFIX_SEPARATOR,
+ G_UNICODE_BREAK_SYMBOL,
+ G_UNICODE_BREAK_ALPHABETIC,
+ G_UNICODE_BREAK_PREFIX,
+ G_UNICODE_BREAK_POSTFIX,
+ G_UNICODE_BREAK_COMPLEX_CONTEXT,
+ G_UNICODE_BREAK_AMBIGUOUS,
+ G_UNICODE_BREAK_UNKNOWN,
+ G_UNICODE_BREAK_NEXT_LINE,
+ G_UNICODE_BREAK_WORD_JOINER,
+ G_UNICODE_BREAK_HANGUL_L_JAMO,
+ G_UNICODE_BREAK_HANGUL_V_JAMO,
+ G_UNICODE_BREAK_HANGUL_T_JAMO,
+ G_UNICODE_BREAK_HANGUL_LV_SYLLABLE,
+ G_UNICODE_BREAK_HANGUL_LVT_SYLLABLE
+} GUnicodeBreakType;
+typedef enum
+{
+ G_UNICODE_SCRIPT_INVALID_CODE = -1,
+ G_UNICODE_SCRIPT_COMMON = 0,
+ G_UNICODE_SCRIPT_INHERITED,
+ G_UNICODE_SCRIPT_ARABIC,
+ G_UNICODE_SCRIPT_ARMENIAN,
+ G_UNICODE_SCRIPT_BENGALI,
+ G_UNICODE_SCRIPT_BOPOMOFO,
+ G_UNICODE_SCRIPT_CHEROKEE,
+ G_UNICODE_SCRIPT_COPTIC,
+ G_UNICODE_SCRIPT_CYRILLIC,
+ G_UNICODE_SCRIPT_DESERET,
+ G_UNICODE_SCRIPT_DEVANAGARI,
+ G_UNICODE_SCRIPT_ETHIOPIC,
+ G_UNICODE_SCRIPT_GEORGIAN,
+ G_UNICODE_SCRIPT_GOTHIC,
+ G_UNICODE_SCRIPT_GREEK,
+ G_UNICODE_SCRIPT_GUJARATI,
+ G_UNICODE_SCRIPT_GURMUKHI,
+ G_UNICODE_SCRIPT_HAN,
+ G_UNICODE_SCRIPT_HANGUL,
+ G_UNICODE_SCRIPT_HEBREW,
+ G_UNICODE_SCRIPT_HIRAGANA,
+ G_UNICODE_SCRIPT_KANNADA,
+ G_UNICODE_SCRIPT_KATAKANA,
+ G_UNICODE_SCRIPT_KHMER,
+ G_UNICODE_SCRIPT_LAO,
+ G_UNICODE_SCRIPT_LATIN,
+ G_UNICODE_SCRIPT_MALAYALAM,
+ G_UNICODE_SCRIPT_MONGOLIAN,
+ G_UNICODE_SCRIPT_MYANMAR,
+ G_UNICODE_SCRIPT_OGHAM,
+ G_UNICODE_SCRIPT_OLD_ITALIC,
+ G_UNICODE_SCRIPT_ORIYA,
+ G_UNICODE_SCRIPT_RUNIC,
+ G_UNICODE_SCRIPT_SINHALA,
+ G_UNICODE_SCRIPT_SYRIAC,
+ G_UNICODE_SCRIPT_TAMIL,
+ G_UNICODE_SCRIPT_TELUGU,
+ G_UNICODE_SCRIPT_THAANA,
+ G_UNICODE_SCRIPT_THAI,
+ G_UNICODE_SCRIPT_TIBETAN,
+ G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL,
+ G_UNICODE_SCRIPT_YI,
+ G_UNICODE_SCRIPT_TAGALOG,
+ G_UNICODE_SCRIPT_HANUNOO,
+ G_UNICODE_SCRIPT_BUHID,
+ G_UNICODE_SCRIPT_TAGBANWA,
+ G_UNICODE_SCRIPT_BRAILLE,
+ G_UNICODE_SCRIPT_CYPRIOT,
+ G_UNICODE_SCRIPT_LIMBU,
+ G_UNICODE_SCRIPT_OSMANYA,
+ G_UNICODE_SCRIPT_SHAVIAN,
+ G_UNICODE_SCRIPT_LINEAR_B,
+ G_UNICODE_SCRIPT_TAI_LE,
+ G_UNICODE_SCRIPT_UGARITIC,
+ G_UNICODE_SCRIPT_NEW_TAI_LUE,
+ G_UNICODE_SCRIPT_BUGINESE,
+ G_UNICODE_SCRIPT_GLAGOLITIC,
+ G_UNICODE_SCRIPT_TIFINAGH,
+ G_UNICODE_SCRIPT_SYLOTI_NAGRI,
+ G_UNICODE_SCRIPT_OLD_PERSIAN,
+ G_UNICODE_SCRIPT_KHAROSHTHI,
+ G_UNICODE_SCRIPT_UNKNOWN,
+ G_UNICODE_SCRIPT_BALINESE,
+ G_UNICODE_SCRIPT_CUNEIFORM,
+ G_UNICODE_SCRIPT_PHOENICIAN,
+ G_UNICODE_SCRIPT_PHAGS_PA,
+ G_UNICODE_SCRIPT_NKO,
+ G_UNICODE_SCRIPT_KAYAH_LI,
+ G_UNICODE_SCRIPT_LEPCHA,
+ G_UNICODE_SCRIPT_REJANG,
+ G_UNICODE_SCRIPT_SUNDANESE,
+ G_UNICODE_SCRIPT_SAURASHTRA,
+ G_UNICODE_SCRIPT_CHAM,
+ G_UNICODE_SCRIPT_OL_CHIKI,
+ G_UNICODE_SCRIPT_VAI,
+ G_UNICODE_SCRIPT_CARIAN,
+ G_UNICODE_SCRIPT_LYCIAN,
+ G_UNICODE_SCRIPT_LYDIAN
+} GUnicodeScript;
+gboolean g_get_charset (const char **charset);
+gboolean g_unichar_isalnum (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isalpha (gunichar c) __attribute__((__const__));
+gboolean g_unichar_iscntrl (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isdigit (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isgraph (gunichar c) __attribute__((__const__));
+gboolean g_unichar_islower (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isprint (gunichar c) __attribute__((__const__));
+gboolean g_unichar_ispunct (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isspace (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isupper (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isxdigit (gunichar c) __attribute__((__const__));
+gboolean g_unichar_istitle (gunichar c) __attribute__((__const__));
+gboolean g_unichar_isdefined (gunichar c) __attribute__((__const__));
+gboolean g_unichar_iswide (gunichar c) __attribute__((__const__));
+gboolean g_unichar_iswide_cjk(gunichar c) __attribute__((__const__));
+gboolean g_unichar_iszerowidth(gunichar c) __attribute__((__const__));
+gboolean g_unichar_ismark (gunichar c) __attribute__((__const__));
+gunichar g_unichar_toupper (gunichar c) __attribute__((__const__));
+gunichar g_unichar_tolower (gunichar c) __attribute__((__const__));
+gunichar g_unichar_totitle (gunichar c) __attribute__((__const__));
+gint g_unichar_digit_value (gunichar c) __attribute__((__const__));
+gint g_unichar_xdigit_value (gunichar c) __attribute__((__const__));
+GUnicodeType g_unichar_type (gunichar c) __attribute__((__const__));
+GUnicodeBreakType g_unichar_break_type (gunichar c) __attribute__((__const__));
+gint g_unichar_combining_class (gunichar uc) __attribute__((__const__));
+void g_unicode_canonical_ordering (gunichar *string,
+ gsize len);
+gunichar *g_unicode_canonical_decomposition (gunichar ch,
+ gsize *result_len) __attribute__((__malloc__));
+extern const gchar * const g_utf8_skip;
+gunichar g_utf8_get_char (const gchar *p) __attribute__((__pure__));
+gunichar g_utf8_get_char_validated (const gchar *p,
+ gssize max_len) __attribute__((__pure__));
+gchar* g_utf8_offset_to_pointer (const gchar *str,
+ glong offset) __attribute__((__pure__));
+glong g_utf8_pointer_to_offset (const gchar *str,
+ const gchar *pos) __attribute__((__pure__));
+gchar* g_utf8_prev_char (const gchar *p) __attribute__((__pure__));
+gchar* g_utf8_find_next_char (const gchar *p,
+ const gchar *end) __attribute__((__pure__));
+gchar* g_utf8_find_prev_char (const gchar *str,
+ const gchar *p) __attribute__((__pure__));
+glong g_utf8_strlen (const gchar *p,
+ gssize max) __attribute__((__pure__));
+gchar* g_utf8_strncpy (gchar *dest,
+ const gchar *src,
+ gsize n);
+gchar* g_utf8_strchr (const gchar *p,
+ gssize len,
+ gunichar c);
+gchar* g_utf8_strrchr (const gchar *p,
+ gssize len,
+ gunichar c);
+gchar* g_utf8_strreverse (const gchar *str,
+ gssize len);
+gunichar2 *g_utf8_to_utf16 (const gchar *str,
+ glong len,
+ glong *items_read,
+ glong *items_written,
+ GError **error) __attribute__((__malloc__));
+gunichar * g_utf8_to_ucs4 (const gchar *str,
+ glong len,
+ glong *items_read,
+ glong *items_written,
+ GError **error) __attribute__((__malloc__));
+gunichar * g_utf8_to_ucs4_fast (const gchar *str,
+ glong len,
+ glong *items_written) __attribute__((__malloc__));
+gunichar * g_utf16_to_ucs4 (const gunichar2 *str,
+ glong len,
+ glong *items_read,
+ glong *items_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_utf16_to_utf8 (const gunichar2 *str,
+ glong len,
+ glong *items_read,
+ glong *items_written,
+ GError **error) __attribute__((__malloc__));
+gunichar2 *g_ucs4_to_utf16 (const gunichar *str,
+ glong len,
+ glong *items_read,
+ glong *items_written,
+ GError **error) __attribute__((__malloc__));
+gchar* g_ucs4_to_utf8 (const gunichar *str,
+ glong len,
+ glong *items_read,
+ glong *items_written,
+ GError **error) __attribute__((__malloc__));
+gint g_unichar_to_utf8 (gunichar c,
+ gchar *outbuf);
+gboolean g_utf8_validate (const gchar *str,
+ gssize max_len,
+ const gchar **end);
+gboolean g_unichar_validate (gunichar ch) __attribute__((__const__));
+gchar *g_utf8_strup (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+gchar *g_utf8_strdown (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+gchar *g_utf8_casefold (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+typedef enum {
+ G_NORMALIZE_DEFAULT,
+ G_NORMALIZE_NFD = G_NORMALIZE_DEFAULT,
+ G_NORMALIZE_DEFAULT_COMPOSE,
+ G_NORMALIZE_NFC = G_NORMALIZE_DEFAULT_COMPOSE,
+ G_NORMALIZE_ALL,
+ G_NORMALIZE_NFKD = G_NORMALIZE_ALL,
+ G_NORMALIZE_ALL_COMPOSE,
+ G_NORMALIZE_NFKC = G_NORMALIZE_ALL_COMPOSE
+} GNormalizeMode;
+gchar *g_utf8_normalize (const gchar *str,
+ gssize len,
+ GNormalizeMode mode) __attribute__((__malloc__));
+gint g_utf8_collate (const gchar *str1,
+ const gchar *str2) __attribute__((__pure__));
+gchar *g_utf8_collate_key (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+gchar *g_utf8_collate_key_for_filename (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+gboolean g_unichar_get_mirror_char (gunichar ch,
+ gunichar *mirrored_ch);
+GUnicodeScript g_unichar_get_script (gunichar ch) __attribute__((__const__));
+gchar *_g_utf8_make_valid (const gchar *name);
+typedef struct _GString GString;
+typedef struct _GStringChunk GStringChunk;
+struct _GString
+{
+ gchar *str;
+ gsize len;
+ gsize allocated_len;
+};
+GStringChunk* g_string_chunk_new (gsize size);
+void g_string_chunk_free (GStringChunk *chunk);
+void g_string_chunk_clear (GStringChunk *chunk);
+gchar* g_string_chunk_insert (GStringChunk *chunk,
+ const gchar *string);
+gchar* g_string_chunk_insert_len (GStringChunk *chunk,
+ const gchar *string,
+ gssize len);
+gchar* g_string_chunk_insert_const (GStringChunk *chunk,
+ const gchar *string);
+GString* g_string_new (const gchar *init);
+GString* g_string_new_len (const gchar *init,
+ gssize len);
+GString* g_string_sized_new (gsize dfl_size);
+gchar* g_string_free (GString *string,
+ gboolean free_segment);
+gboolean g_string_equal (const GString *v,
+ const GString *v2);
+guint g_string_hash (const GString *str);
+GString* g_string_assign (GString *string,
+ const gchar *rval);
+GString* g_string_truncate (GString *string,
+ gsize len);
+GString* g_string_set_size (GString *string,
+ gsize len);
+GString* g_string_insert_len (GString *string,
+ gssize pos,
+ const gchar *val,
+ gssize len);
+GString* g_string_append (GString *string,
+ const gchar *val);
+GString* g_string_append_len (GString *string,
+ const gchar *val,
+ gssize len);
+GString* g_string_append_c (GString *string,
+ gchar c);
+GString* g_string_append_unichar (GString *string,
+ gunichar wc);
+GString* g_string_prepend (GString *string,
+ const gchar *val);
+GString* g_string_prepend_c (GString *string,
+ gchar c);
+GString* g_string_prepend_unichar (GString *string,
+ gunichar wc);
+GString* g_string_prepend_len (GString *string,
+ const gchar *val,
+ gssize len);
+GString* g_string_insert (GString *string,
+ gssize pos,
+ const gchar *val);
+GString* g_string_insert_c (GString *string,
+ gssize pos,
+ gchar c);
+GString* g_string_insert_unichar (GString *string,
+ gssize pos,
+ gunichar wc);
+GString* g_string_overwrite (GString *string,
+ gsize pos,
+ const gchar *val);
+GString* g_string_overwrite_len (GString *string,
+ gsize pos,
+ const gchar *val,
+ gssize len);
+GString* g_string_erase (GString *string,
+ gssize pos,
+ gssize len);
+GString* g_string_ascii_down (GString *string);
+GString* g_string_ascii_up (GString *string);
+void g_string_vprintf (GString *string,
+ const gchar *format,
+ va_list args);
+void g_string_printf (GString *string,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+void g_string_append_vprintf (GString *string,
+ const gchar *format,
+ va_list args);
+void g_string_append_printf (GString *string,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+GString * g_string_append_uri_escaped(GString *string,
+ const char *unescaped,
+ const char *reserved_chars_allowed,
+ gboolean allow_utf8);
+static inline GString*
+g_string_append_c_inline (GString *gstring,
+ gchar c)
+{
+ if (gstring->len + 1 < gstring->allocated_len)
+ {
+ gstring->str[gstring->len++] = c;
+ gstring->str[gstring->len] = 0;
+ }
+ else
+ g_string_insert_c (gstring, -1, c);
+ return gstring;
+}
+GString* g_string_down (GString *string);
+GString* g_string_up (GString *string);
+typedef struct _GIOChannel GIOChannel;
+typedef struct _GIOFuncs GIOFuncs;
+typedef enum
+{
+ G_IO_ERROR_NONE,
+ G_IO_ERROR_AGAIN,
+ G_IO_ERROR_INVAL,
+ G_IO_ERROR_UNKNOWN
+} GIOError;
+typedef enum
+{
+ G_IO_CHANNEL_ERROR_FBIG,
+ G_IO_CHANNEL_ERROR_INVAL,
+ G_IO_CHANNEL_ERROR_IO,
+ G_IO_CHANNEL_ERROR_ISDIR,
+ G_IO_CHANNEL_ERROR_NOSPC,
+ G_IO_CHANNEL_ERROR_NXIO,
+ G_IO_CHANNEL_ERROR_OVERFLOW,
+ G_IO_CHANNEL_ERROR_PIPE,
+ G_IO_CHANNEL_ERROR_FAILED
+} GIOChannelError;
+typedef enum
+{
+ G_IO_STATUS_ERROR,
+ G_IO_STATUS_NORMAL,
+ G_IO_STATUS_EOF,
+ G_IO_STATUS_AGAIN
+} GIOStatus;
+typedef enum
+{
+ G_SEEK_CUR,
+ G_SEEK_SET,
+ G_SEEK_END
+} GSeekType;
+typedef enum
+{
+ G_IO_IN =1,
+ G_IO_OUT =4,
+ G_IO_PRI =2,
+ G_IO_ERR =8,
+ G_IO_HUP =16,
+ G_IO_NVAL =32
+} GIOCondition;
+typedef enum
+{
+ G_IO_FLAG_APPEND = 1 << 0,
+ G_IO_FLAG_NONBLOCK = 1 << 1,
+ G_IO_FLAG_IS_READABLE = 1 << 2,
+ G_IO_FLAG_IS_WRITEABLE = 1 << 3,
+ G_IO_FLAG_IS_SEEKABLE = 1 << 4,
+ G_IO_FLAG_MASK = (1 << 5) - 1,
+ G_IO_FLAG_GET_MASK = G_IO_FLAG_MASK,
+ G_IO_FLAG_SET_MASK = G_IO_FLAG_APPEND | G_IO_FLAG_NONBLOCK
+} GIOFlags;
+struct _GIOChannel
+{
+ gint ref_count;
+ GIOFuncs *funcs;
+ gchar *encoding;
+ GIConv read_cd;
+ GIConv write_cd;
+ gchar *line_term;
+ guint line_term_len;
+ gsize buf_size;
+ GString *read_buf;
+ GString *encoded_read_buf;
+ GString *write_buf;
+ gchar partial_write_buf[6];
+ guint use_buffer : 1;
+ guint do_encode : 1;
+ guint close_on_unref : 1;
+ guint is_readable : 1;
+ guint is_writeable : 1;
+ guint is_seekable : 1;
+ gpointer reserved1;
+ gpointer reserved2;
+};
+typedef gboolean (*GIOFunc) (GIOChannel *source,
+ GIOCondition condition,
+ gpointer data);
+struct _GIOFuncs
+{
+ GIOStatus (*io_read) (GIOChannel *channel,
+ gchar *buf,
+ gsize count,
+ gsize *bytes_read,
+ GError **err);
+ GIOStatus (*io_write) (GIOChannel *channel,
+ const gchar *buf,
+ gsize count,
+ gsize *bytes_written,
+ GError **err);
+ GIOStatus (*io_seek) (GIOChannel *channel,
+ gint64 offset,
+ GSeekType type,
+ GError **err);
+ GIOStatus (*io_close) (GIOChannel *channel,
+ GError **err);
+ GSource* (*io_create_watch) (GIOChannel *channel,
+ GIOCondition condition);
+ void (*io_free) (GIOChannel *channel);
+ GIOStatus (*io_set_flags) (GIOChannel *channel,
+ GIOFlags flags,
+ GError **err);
+ GIOFlags (*io_get_flags) (GIOChannel *channel);
+};
+void g_io_channel_init (GIOChannel *channel);
+GIOChannel *g_io_channel_ref (GIOChannel *channel);
+void g_io_channel_unref (GIOChannel *channel);
+GIOError g_io_channel_read (GIOChannel *channel,
+ gchar *buf,
+ gsize count,
+ gsize *bytes_read);
+GIOError g_io_channel_write (GIOChannel *channel,
+ const gchar *buf,
+ gsize count,
+ gsize *bytes_written);
+GIOError g_io_channel_seek (GIOChannel *channel,
+ gint64 offset,
+ GSeekType type);
+void g_io_channel_close (GIOChannel *channel);
+GIOStatus g_io_channel_shutdown (GIOChannel *channel,
+ gboolean flush,
+ GError **err);
+guint g_io_add_watch_full (GIOChannel *channel,
+ gint priority,
+ GIOCondition condition,
+ GIOFunc func,
+ gpointer user_data,
+ GDestroyNotify notify);
+GSource * g_io_create_watch (GIOChannel *channel,
+ GIOCondition condition);
+guint g_io_add_watch (GIOChannel *channel,
+ GIOCondition condition,
+ GIOFunc func,
+ gpointer user_data);
+void g_io_channel_set_buffer_size (GIOChannel *channel,
+ gsize size);
+gsize g_io_channel_get_buffer_size (GIOChannel *channel);
+GIOCondition g_io_channel_get_buffer_condition (GIOChannel *channel);
+GIOStatus g_io_channel_set_flags (GIOChannel *channel,
+ GIOFlags flags,
+ GError **error);
+GIOFlags g_io_channel_get_flags (GIOChannel *channel);
+void g_io_channel_set_line_term (GIOChannel *channel,
+ const gchar *line_term,
+ gint length);
+const gchar* g_io_channel_get_line_term (GIOChannel *channel,
+ gint *length);
+void g_io_channel_set_buffered (GIOChannel *channel,
+ gboolean buffered);
+gboolean g_io_channel_get_buffered (GIOChannel *channel);
+GIOStatus g_io_channel_set_encoding (GIOChannel *channel,
+ const gchar *encoding,
+ GError **error);
+const gchar* g_io_channel_get_encoding (GIOChannel *channel);
+void g_io_channel_set_close_on_unref (GIOChannel *channel,
+ gboolean do_close);
+gboolean g_io_channel_get_close_on_unref (GIOChannel *channel);
+GIOStatus g_io_channel_flush (GIOChannel *channel,
+ GError **error);
+GIOStatus g_io_channel_read_line (GIOChannel *channel,
+ gchar **str_return,
+ gsize *length,
+ gsize *terminator_pos,
+ GError **error);
+GIOStatus g_io_channel_read_line_string (GIOChannel *channel,
+ GString *buffer,
+ gsize *terminator_pos,
+ GError **error);
+GIOStatus g_io_channel_read_to_end (GIOChannel *channel,
+ gchar **str_return,
+ gsize *length,
+ GError **error);
+GIOStatus g_io_channel_read_chars (GIOChannel *channel,
+ gchar *buf,
+ gsize count,
+ gsize *bytes_read,
+ GError **error);
+GIOStatus g_io_channel_read_unichar (GIOChannel *channel,
+ gunichar *thechar,
+ GError **error);
+GIOStatus g_io_channel_write_chars (GIOChannel *channel,
+ const gchar *buf,
+ gssize count,
+ gsize *bytes_written,
+ GError **error);
+GIOStatus g_io_channel_write_unichar (GIOChannel *channel,
+ gunichar thechar,
+ GError **error);
+GIOStatus g_io_channel_seek_position (GIOChannel *channel,
+ gint64 offset,
+ GSeekType type,
+ GError **error);
+GIOChannel* g_io_channel_new_file (const gchar *filename,
+ const gchar *mode,
+ GError **error);
+GQuark g_io_channel_error_quark (void);
+GIOChannelError g_io_channel_error_from_errno (gint en);
+GIOChannel* g_io_channel_unix_new (int fd);
+gint g_io_channel_unix_get_fd (GIOChannel *channel);
+extern GSourceFuncs g_io_watch_funcs;
+typedef enum
+{
+ G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
+ G_KEY_FILE_ERROR_PARSE,
+ G_KEY_FILE_ERROR_NOT_FOUND,
+ G_KEY_FILE_ERROR_KEY_NOT_FOUND,
+ G_KEY_FILE_ERROR_GROUP_NOT_FOUND,
+ G_KEY_FILE_ERROR_INVALID_VALUE
+} GKeyFileError;
+GQuark g_key_file_error_quark (void);
+typedef struct _GKeyFile GKeyFile;
+typedef enum
+{
+ G_KEY_FILE_NONE = 0,
+ G_KEY_FILE_KEEP_COMMENTS = 1 << 0,
+ G_KEY_FILE_KEEP_TRANSLATIONS = 1 << 1
+} GKeyFileFlags;
+GKeyFile *g_key_file_new (void);
+void g_key_file_free (GKeyFile *key_file);
+void g_key_file_set_list_separator (GKeyFile *key_file,
+ gchar separator);
+gboolean g_key_file_load_from_file (GKeyFile *key_file,
+ const gchar *file,
+ GKeyFileFlags flags,
+ GError **error);
+gboolean g_key_file_load_from_data (GKeyFile *key_file,
+ const gchar *data,
+ gsize length,
+ GKeyFileFlags flags,
+ GError **error);
+gboolean g_key_file_load_from_dirs (GKeyFile *key_file,
+ const gchar *file,
+ const gchar **search_dirs,
+ gchar **full_path,
+ GKeyFileFlags flags,
+ GError **error);
+gboolean g_key_file_load_from_data_dirs (GKeyFile *key_file,
+ const gchar *file,
+ gchar **full_path,
+ GKeyFileFlags flags,
+ GError **error);
+gchar *g_key_file_to_data (GKeyFile *key_file,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+gchar *g_key_file_get_start_group (GKeyFile *key_file) __attribute__((__malloc__));
+gchar **g_key_file_get_groups (GKeyFile *key_file,
+ gsize *length) __attribute__((__malloc__));
+gchar **g_key_file_get_keys (GKeyFile *key_file,
+ const gchar *group_name,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+gboolean g_key_file_has_group (GKeyFile *key_file,
+ const gchar *group_name);
+gboolean g_key_file_has_key (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error);
+gchar *g_key_file_get_value (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_value (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *value);
+gchar *g_key_file_get_string (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_string (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *string);
+gchar *g_key_file_get_locale_string (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *locale,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_locale_string (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *locale,
+ const gchar *string);
+gboolean g_key_file_get_boolean (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error);
+void g_key_file_set_boolean (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gboolean value);
+gint g_key_file_get_integer (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error);
+void g_key_file_set_integer (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gint value);
+gdouble g_key_file_get_double (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error);
+void g_key_file_set_double (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gdouble value);
+gchar **g_key_file_get_string_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_string_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar * const list[],
+ gsize length);
+gchar **g_key_file_get_locale_string_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *locale,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_locale_string_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *locale,
+ const gchar * const list[],
+ gsize length);
+gboolean *g_key_file_get_boolean_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_boolean_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gboolean list[],
+ gsize length);
+gint *g_key_file_get_integer_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_double_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gdouble list[],
+ gsize length);
+gdouble *g_key_file_get_double_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gsize *length,
+ GError **error) __attribute__((__malloc__));
+void g_key_file_set_integer_list (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ gint list[],
+ gsize length);
+gboolean g_key_file_set_comment (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ const gchar *comment,
+ GError **error);
+gchar *g_key_file_get_comment (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error) __attribute__((__malloc__));
+gboolean g_key_file_remove_comment (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error);
+gboolean g_key_file_remove_key (GKeyFile *key_file,
+ const gchar *group_name,
+ const gchar *key,
+ GError **error);
+gboolean g_key_file_remove_group (GKeyFile *key_file,
+ const gchar *group_name,
+ GError **error);
+typedef struct _GMappedFile GMappedFile;
+GMappedFile *g_mapped_file_new (const gchar *filename,
+ gboolean writable,
+ GError **error) __attribute__((__malloc__));
+gsize g_mapped_file_get_length (GMappedFile *file);
+gchar *g_mapped_file_get_contents (GMappedFile *file);
+void g_mapped_file_free (GMappedFile *file);
+typedef enum
+{
+ G_MARKUP_ERROR_BAD_UTF8,
+ G_MARKUP_ERROR_EMPTY,
+ G_MARKUP_ERROR_PARSE,
+ G_MARKUP_ERROR_UNKNOWN_ELEMENT,
+ G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE,
+ G_MARKUP_ERROR_INVALID_CONTENT,
+ G_MARKUP_ERROR_MISSING_ATTRIBUTE
+} GMarkupError;
+GQuark g_markup_error_quark (void);
+typedef enum
+{
+ G_MARKUP_DO_NOT_USE_THIS_UNSUPPORTED_FLAG = 1 << 0,
+ G_MARKUP_TREAT_CDATA_AS_TEXT = 1 << 1,
+ G_MARKUP_PREFIX_ERROR_POSITION = 1 << 2
+} GMarkupParseFlags;
+typedef struct _GMarkupParseContext GMarkupParseContext;
+typedef struct _GMarkupParser GMarkupParser;
+struct _GMarkupParser
+{
+ void (*start_element) (GMarkupParseContext *context,
+ const gchar *element_name,
+ const gchar **attribute_names,
+ const gchar **attribute_values,
+ gpointer user_data,
+ GError **error);
+ void (*end_element) (GMarkupParseContext *context,
+ const gchar *element_name,
+ gpointer user_data,
+ GError **error);
+ void (*text) (GMarkupParseContext *context,
+ const gchar *text,
+ gsize text_len,
+ gpointer user_data,
+ GError **error);
+ void (*passthrough) (GMarkupParseContext *context,
+ const gchar *passthrough_text,
+ gsize text_len,
+ gpointer user_data,
+ GError **error);
+ void (*error) (GMarkupParseContext *context,
+ GError *error,
+ gpointer user_data);
+};
+GMarkupParseContext *g_markup_parse_context_new (const GMarkupParser *parser,
+ GMarkupParseFlags flags,
+ gpointer user_data,
+ GDestroyNotify user_data_dnotify);
+void g_markup_parse_context_free (GMarkupParseContext *context);
+gboolean g_markup_parse_context_parse (GMarkupParseContext *context,
+ const gchar *text,
+ gssize text_len,
+ GError **error);
+void g_markup_parse_context_push (GMarkupParseContext *context,
+ GMarkupParser *parser,
+ gpointer user_data);
+gpointer g_markup_parse_context_pop (GMarkupParseContext *context);
+gboolean g_markup_parse_context_end_parse (GMarkupParseContext *context,
+ GError **error);
+const gchar *g_markup_parse_context_get_element (GMarkupParseContext *context);
+const GSList *g_markup_parse_context_get_element_stack (GMarkupParseContext *context);
+void g_markup_parse_context_get_position (GMarkupParseContext *context,
+ gint *line_number,
+ gint *char_number);
+gpointer g_markup_parse_context_get_user_data (GMarkupParseContext *context);
+gchar* g_markup_escape_text (const gchar *text,
+ gssize length);
+gchar *g_markup_printf_escaped (const char *format,
+ ...) __attribute__((__format__ (__printf__, 1, 2)));
+gchar *g_markup_vprintf_escaped (const char *format,
+ va_list args);
+typedef enum
+{
+ G_MARKUP_COLLECT_INVALID,
+ G_MARKUP_COLLECT_STRING,
+ G_MARKUP_COLLECT_STRDUP,
+ G_MARKUP_COLLECT_BOOLEAN,
+ G_MARKUP_COLLECT_TRISTATE,
+ G_MARKUP_COLLECT_OPTIONAL = (1 << 16)
+} GMarkupCollectType;
+gboolean g_markup_collect_attributes (const gchar *element_name,
+ const gchar **attribute_names,
+ const gchar **attribute_values,
+ GError **error,
+ GMarkupCollectType first_type,
+ const gchar *first_attr,
+ ...);
+
+gsize g_printf_string_upper_bound (const gchar* format,
+ va_list args);
+typedef enum
+{
+ G_LOG_FLAG_RECURSION = 1 << 0,
+ G_LOG_FLAG_FATAL = 1 << 1,
+ G_LOG_LEVEL_ERROR = 1 << 2,
+ G_LOG_LEVEL_CRITICAL = 1 << 3,
+ G_LOG_LEVEL_WARNING = 1 << 4,
+ G_LOG_LEVEL_MESSAGE = 1 << 5,
+ G_LOG_LEVEL_INFO = 1 << 6,
+ G_LOG_LEVEL_DEBUG = 1 << 7,
+ G_LOG_LEVEL_MASK = ~(G_LOG_FLAG_RECURSION | G_LOG_FLAG_FATAL)
+} GLogLevelFlags;
+typedef void (*GLogFunc) (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *message,
+ gpointer user_data);
+guint g_log_set_handler (const gchar *log_domain,
+ GLogLevelFlags log_levels,
+ GLogFunc log_func,
+ gpointer user_data);
+void g_log_remove_handler (const gchar *log_domain,
+ guint handler_id);
+void g_log_default_handler (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *message,
+ gpointer unused_data);
+GLogFunc g_log_set_default_handler (GLogFunc log_func,
+ gpointer user_data);
+void g_log (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 3, 4)));
+void g_logv (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *format,
+ va_list args);
+GLogLevelFlags g_log_set_fatal_mask (const gchar *log_domain,
+ GLogLevelFlags fatal_mask);
+GLogLevelFlags g_log_set_always_fatal (GLogLevelFlags fatal_mask);
+__attribute__((visibility("hidden"))) void _g_log_fallback_handler (const gchar *log_domain,
+ GLogLevelFlags log_level,
+ const gchar *message,
+ gpointer unused_data);
+void g_return_if_fail_warning (const char *log_domain,
+ const char *pretty_function,
+ const char *expression);
+void g_warn_message (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *warnexpr);
+void g_assert_warning (const char *log_domain,
+ const char *file,
+ const int line,
+ const char *pretty_function,
+ const char *expression) __attribute__((__noreturn__));
+typedef void (*GPrintFunc) (const gchar *string);
+void g_print (const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 1, 2)));
+GPrintFunc g_set_print_handler (GPrintFunc func);
+void g_printerr (const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 1, 2)));
+GPrintFunc g_set_printerr_handler (GPrintFunc func);
+typedef struct _GNode GNode;
+typedef enum
+{
+ G_TRAVERSE_LEAVES = 1 << 0,
+ G_TRAVERSE_NON_LEAVES = 1 << 1,
+ G_TRAVERSE_ALL = G_TRAVERSE_LEAVES | G_TRAVERSE_NON_LEAVES,
+ G_TRAVERSE_MASK = 0x03,
+ G_TRAVERSE_LEAFS = G_TRAVERSE_LEAVES,
+ G_TRAVERSE_NON_LEAFS = G_TRAVERSE_NON_LEAVES
+} GTraverseFlags;
+typedef enum
+{
+ G_IN_ORDER,
+ G_PRE_ORDER,
+ G_POST_ORDER,
+ G_LEVEL_ORDER
+} GTraverseType;
+typedef gboolean (*GNodeTraverseFunc) (GNode *node,
+ gpointer data);
+typedef void (*GNodeForeachFunc) (GNode *node,
+ gpointer data);
+typedef gpointer (*GCopyFunc) (gconstpointer src,
+ gpointer data);
+struct _GNode
+{
+ gpointer data;
+ GNode *next;
+ GNode *prev;
+ GNode *parent;
+ GNode *children;
+};
+GNode* g_node_new (gpointer data);
+void g_node_destroy (GNode *root);
+void g_node_unlink (GNode *node);
+GNode* g_node_copy_deep (GNode *node,
+ GCopyFunc copy_func,
+ gpointer data);
+GNode* g_node_copy (GNode *node);
+GNode* g_node_insert (GNode *parent,
+ gint position,
+ GNode *node);
+GNode* g_node_insert_before (GNode *parent,
+ GNode *sibling,
+ GNode *node);
+GNode* g_node_insert_after (GNode *parent,
+ GNode *sibling,
+ GNode *node);
+GNode* g_node_prepend (GNode *parent,
+ GNode *node);
+guint g_node_n_nodes (GNode *root,
+ GTraverseFlags flags);
+GNode* g_node_get_root (GNode *node);
+gboolean g_node_is_ancestor (GNode *node,
+ GNode *descendant);
+guint g_node_depth (GNode *node);
+GNode* g_node_find (GNode *root,
+ GTraverseType order,
+ GTraverseFlags flags,
+ gpointer data);
+void g_node_traverse (GNode *root,
+ GTraverseType order,
+ GTraverseFlags flags,
+ gint max_depth,
+ GNodeTraverseFunc func,
+ gpointer data);
+guint g_node_max_height (GNode *root);
+void g_node_children_foreach (GNode *node,
+ GTraverseFlags flags,
+ GNodeForeachFunc func,
+ gpointer data);
+void g_node_reverse_children (GNode *node);
+guint g_node_n_children (GNode *node);
+GNode* g_node_nth_child (GNode *node,
+ guint n);
+GNode* g_node_last_child (GNode *node);
+GNode* g_node_find_child (GNode *node,
+ GTraverseFlags flags,
+ gpointer data);
+gint g_node_child_position (GNode *node,
+ GNode *child);
+gint g_node_child_index (GNode *node,
+ gpointer data);
+GNode* g_node_first_sibling (GNode *node);
+GNode* g_node_last_sibling (GNode *node);
+void g_node_push_allocator (gpointer dummy);
+void g_node_pop_allocator (void);
+typedef struct _GOptionContext GOptionContext;
+typedef struct _GOptionGroup GOptionGroup;
+typedef struct _GOptionEntry GOptionEntry;
+typedef enum
+{
+ G_OPTION_FLAG_HIDDEN = 1 << 0,
+ G_OPTION_FLAG_IN_MAIN = 1 << 1,
+ G_OPTION_FLAG_REVERSE = 1 << 2,
+ G_OPTION_FLAG_NO_ARG = 1 << 3,
+ G_OPTION_FLAG_FILENAME = 1 << 4,
+ G_OPTION_FLAG_OPTIONAL_ARG = 1 << 5,
+ G_OPTION_FLAG_NOALIAS = 1 << 6
+} GOptionFlags;
+typedef enum
+{
+ G_OPTION_ARG_NONE,
+ G_OPTION_ARG_STRING,
+ G_OPTION_ARG_INT,
+ G_OPTION_ARG_CALLBACK,
+ G_OPTION_ARG_FILENAME,
+ G_OPTION_ARG_STRING_ARRAY,
+ G_OPTION_ARG_FILENAME_ARRAY,
+ G_OPTION_ARG_DOUBLE,
+ G_OPTION_ARG_INT64
+} GOptionArg;
+typedef gboolean (*GOptionArgFunc) (const gchar *option_name,
+ const gchar *value,
+ gpointer data,
+ GError **error);
+typedef gboolean (*GOptionParseFunc) (GOptionContext *context,
+ GOptionGroup *group,
+ gpointer data,
+ GError **error);
+typedef void (*GOptionErrorFunc) (GOptionContext *context,
+ GOptionGroup *group,
+ gpointer data,
+ GError **error);
+typedef enum
+{
+ G_OPTION_ERROR_UNKNOWN_OPTION,
+ G_OPTION_ERROR_BAD_VALUE,
+ G_OPTION_ERROR_FAILED
+} GOptionError;
+GQuark g_option_error_quark (void);
+struct _GOptionEntry
+{
+ const gchar *long_name;
+ gchar short_name;
+ gint flags;
+ GOptionArg arg;
+ gpointer arg_data;
+ const gchar *description;
+ const gchar *arg_description;
+};
+GOptionContext *g_option_context_new (const gchar *parameter_string);
+void g_option_context_set_summary (GOptionContext *context,
+ const gchar *summary);
+const gchar *g_option_context_get_summary (GOptionContext *context);
+void g_option_context_set_description (GOptionContext *context,
+ const gchar *description);
+const gchar *g_option_context_get_description (GOptionContext *context);
+void g_option_context_free (GOptionContext *context);
+void g_option_context_set_help_enabled (GOptionContext *context,
+ gboolean help_enabled);
+gboolean g_option_context_get_help_enabled (GOptionContext *context);
+void g_option_context_set_ignore_unknown_options (GOptionContext *context,
+ gboolean ignore_unknown);
+gboolean g_option_context_get_ignore_unknown_options (GOptionContext *context);
+void g_option_context_add_main_entries (GOptionContext *context,
+ const GOptionEntry *entries,
+ const gchar *translation_domain);
+gboolean g_option_context_parse (GOptionContext *context,
+ gint *argc,
+ gchar ***argv,
+ GError **error);
+void g_option_context_set_translate_func (GOptionContext *context,
+ GTranslateFunc func,
+ gpointer data,
+ GDestroyNotify destroy_notify);
+void g_option_context_set_translation_domain (GOptionContext *context,
+ const gchar *domain);
+void g_option_context_add_group (GOptionContext *context,
+ GOptionGroup *group);
+void g_option_context_set_main_group (GOptionContext *context,
+ GOptionGroup *group);
+GOptionGroup *g_option_context_get_main_group (GOptionContext *context);
+gchar *g_option_context_get_help (GOptionContext *context,
+ gboolean main_help,
+ GOptionGroup *group);
+GOptionGroup *g_option_group_new (const gchar *name,
+ const gchar *description,
+ const gchar *help_description,
+ gpointer user_data,
+ GDestroyNotify destroy);
+void g_option_group_set_parse_hooks (GOptionGroup *group,
+ GOptionParseFunc pre_parse_func,
+ GOptionParseFunc post_parse_func);
+void g_option_group_set_error_hook (GOptionGroup *group,
+ GOptionErrorFunc error_func);
+void g_option_group_free (GOptionGroup *group);
+void g_option_group_add_entries (GOptionGroup *group,
+ const GOptionEntry *entries);
+void g_option_group_set_translate_func (GOptionGroup *group,
+ GTranslateFunc func,
+ gpointer data,
+ GDestroyNotify destroy_notify);
+void g_option_group_set_translation_domain (GOptionGroup *group,
+ const gchar *domain);
+typedef struct _GPatternSpec GPatternSpec;
+GPatternSpec* g_pattern_spec_new (const gchar *pattern);
+void g_pattern_spec_free (GPatternSpec *pspec);
+gboolean g_pattern_spec_equal (GPatternSpec *pspec1,
+ GPatternSpec *pspec2);
+gboolean g_pattern_match (GPatternSpec *pspec,
+ guint string_length,
+ const gchar *string,
+ const gchar *string_reversed);
+gboolean g_pattern_match_string (GPatternSpec *pspec,
+ const gchar *string);
+gboolean g_pattern_match_simple (const gchar *pattern,
+ const gchar *string);
+guint g_spaced_primes_closest (guint num) __attribute__((__const__));
+void g_qsort_with_data (gconstpointer pbase,
+ gint total_elems,
+ gsize size,
+ GCompareDataFunc compare_func,
+ gpointer user_data);
+typedef struct _GQueue GQueue;
+struct _GQueue
+{
+ GList *head;
+ GList *tail;
+ guint length;
+};
+GQueue* g_queue_new (void);
+void g_queue_free (GQueue *queue);
+void g_queue_init (GQueue *queue);
+void g_queue_clear (GQueue *queue);
+gboolean g_queue_is_empty (GQueue *queue);
+guint g_queue_get_length (GQueue *queue);
+void g_queue_reverse (GQueue *queue);
+GQueue * g_queue_copy (GQueue *queue);
+void g_queue_foreach (GQueue *queue,
+ GFunc func,
+ gpointer user_data);
+GList * g_queue_find (GQueue *queue,
+ gconstpointer data);
+GList * g_queue_find_custom (GQueue *queue,
+ gconstpointer data,
+ GCompareFunc func);
+void g_queue_sort (GQueue *queue,
+ GCompareDataFunc compare_func,
+ gpointer user_data);
+void g_queue_push_head (GQueue *queue,
+ gpointer data);
+void g_queue_push_tail (GQueue *queue,
+ gpointer data);
+void g_queue_push_nth (GQueue *queue,
+ gpointer data,
+ gint n);
+gpointer g_queue_pop_head (GQueue *queue);
+gpointer g_queue_pop_tail (GQueue *queue);
+gpointer g_queue_pop_nth (GQueue *queue,
+ guint n);
+gpointer g_queue_peek_head (GQueue *queue);
+gpointer g_queue_peek_tail (GQueue *queue);
+gpointer g_queue_peek_nth (GQueue *queue,
+ guint n);
+gint g_queue_index (GQueue *queue,
+ gconstpointer data);
+void g_queue_remove (GQueue *queue,
+ gconstpointer data);
+void g_queue_remove_all (GQueue *queue,
+ gconstpointer data);
+void g_queue_insert_before (GQueue *queue,
+ GList *sibling,
+ gpointer data);
+void g_queue_insert_after (GQueue *queue,
+ GList *sibling,
+ gpointer data);
+void g_queue_insert_sorted (GQueue *queue,
+ gpointer data,
+ GCompareDataFunc func,
+ gpointer user_data);
+void g_queue_push_head_link (GQueue *queue,
+ GList *link_);
+void g_queue_push_tail_link (GQueue *queue,
+ GList *link_);
+void g_queue_push_nth_link (GQueue *queue,
+ gint n,
+ GList *link_);
+GList* g_queue_pop_head_link (GQueue *queue);
+GList* g_queue_pop_tail_link (GQueue *queue);
+GList* g_queue_pop_nth_link (GQueue *queue,
+ guint n);
+GList* g_queue_peek_head_link (GQueue *queue);
+GList* g_queue_peek_tail_link (GQueue *queue);
+GList* g_queue_peek_nth_link (GQueue *queue,
+ guint n);
+gint g_queue_link_index (GQueue *queue,
+ GList *link_);
+void g_queue_unlink (GQueue *queue,
+ GList *link_);
+void g_queue_delete_link (GQueue *queue,
+ GList *link_);
+typedef struct _GRand GRand;
+GRand* g_rand_new_with_seed (guint32 seed);
+GRand* g_rand_new_with_seed_array (const guint32 *seed,
+ guint seed_length);
+GRand* g_rand_new (void);
+void g_rand_free (GRand *rand_);
+GRand* g_rand_copy (GRand *rand_);
+void g_rand_set_seed (GRand *rand_,
+ guint32 seed);
+void g_rand_set_seed_array (GRand *rand_,
+ const guint32 *seed,
+ guint seed_length);
+guint32 g_rand_int (GRand *rand_);
+gint32 g_rand_int_range (GRand *rand_,
+ gint32 begin,
+ gint32 end);
+gdouble g_rand_double (GRand *rand_);
+gdouble g_rand_double_range (GRand *rand_,
+ gdouble begin,
+ gdouble end);
+void g_random_set_seed (guint32 seed);
+guint32 g_random_int (void);
+gint32 g_random_int_range (gint32 begin,
+ gint32 end);
+gdouble g_random_double (void);
+gdouble g_random_double_range (gdouble begin,
+ gdouble end);
+typedef struct _GRelation GRelation;
+typedef struct _GTuples GTuples;
+struct _GTuples
+{
+ guint len;
+};
+GRelation* g_relation_new (gint fields);
+void g_relation_destroy (GRelation *relation);
+void g_relation_index (GRelation *relation,
+ gint field,
+ GHashFunc hash_func,
+ GEqualFunc key_equal_func);
+void g_relation_insert (GRelation *relation,
+ ...);
+gint g_relation_delete (GRelation *relation,
+ gconstpointer key,
+ gint field);
+GTuples* g_relation_select (GRelation *relation,
+ gconstpointer key,
+ gint field);
+gint g_relation_count (GRelation *relation,
+ gconstpointer key,
+ gint field);
+gboolean g_relation_exists (GRelation *relation,
+ ...);
+void g_relation_print (GRelation *relation);
+void g_tuples_destroy (GTuples *tuples);
+gpointer g_tuples_index (GTuples *tuples,
+ gint index_,
+ gint field);
+typedef enum
+{
+ G_REGEX_ERROR_COMPILE,
+ G_REGEX_ERROR_OPTIMIZE,
+ G_REGEX_ERROR_REPLACE,
+ G_REGEX_ERROR_MATCH,
+ G_REGEX_ERROR_INTERNAL,
+ G_REGEX_ERROR_STRAY_BACKSLASH = 101,
+ G_REGEX_ERROR_MISSING_CONTROL_CHAR = 102,
+ G_REGEX_ERROR_UNRECOGNIZED_ESCAPE = 103,
+ G_REGEX_ERROR_QUANTIFIERS_OUT_OF_ORDER = 104,
+ G_REGEX_ERROR_QUANTIFIER_TOO_BIG = 105,
+ G_REGEX_ERROR_UNTERMINATED_CHARACTER_CLASS = 106,
+ G_REGEX_ERROR_INVALID_ESCAPE_IN_CHARACTER_CLASS = 107,
+ G_REGEX_ERROR_RANGE_OUT_OF_ORDER = 108,
+ G_REGEX_ERROR_NOTHING_TO_REPEAT = 109,
+ G_REGEX_ERROR_UNRECOGNIZED_CHARACTER = 112,
+ G_REGEX_ERROR_POSIX_NAMED_CLASS_OUTSIDE_CLASS = 113,
+ G_REGEX_ERROR_UNMATCHED_PARENTHESIS = 114,
+ G_REGEX_ERROR_INEXISTENT_SUBPATTERN_REFERENCE = 115,
+ G_REGEX_ERROR_UNTERMINATED_COMMENT = 118,
+ G_REGEX_ERROR_EXPRESSION_TOO_LARGE = 120,
+ G_REGEX_ERROR_MEMORY_ERROR = 121,
+ G_REGEX_ERROR_VARIABLE_LENGTH_LOOKBEHIND = 125,
+ G_REGEX_ERROR_MALFORMED_CONDITION = 126,
+ G_REGEX_ERROR_TOO_MANY_CONDITIONAL_BRANCHES = 127,
+ G_REGEX_ERROR_ASSERTION_EXPECTED = 128,
+ G_REGEX_ERROR_UNKNOWN_POSIX_CLASS_NAME = 130,
+ G_REGEX_ERROR_POSIX_COLLATING_ELEMENTS_NOT_SUPPORTED = 131,
+ G_REGEX_ERROR_HEX_CODE_TOO_LARGE = 134,
+ G_REGEX_ERROR_INVALID_CONDITION = 135,
+ G_REGEX_ERROR_SINGLE_BYTE_MATCH_IN_LOOKBEHIND = 136,
+ G_REGEX_ERROR_INFINITE_LOOP = 140,
+ G_REGEX_ERROR_MISSING_SUBPATTERN_NAME_TERMINATOR = 142,
+ G_REGEX_ERROR_DUPLICATE_SUBPATTERN_NAME = 143,
+ G_REGEX_ERROR_MALFORMED_PROPERTY = 146,
+ G_REGEX_ERROR_UNKNOWN_PROPERTY = 147,
+ G_REGEX_ERROR_SUBPATTERN_NAME_TOO_LONG = 148,
+ G_REGEX_ERROR_TOO_MANY_SUBPATTERNS = 149,
+ G_REGEX_ERROR_INVALID_OCTAL_VALUE = 151,
+ G_REGEX_ERROR_TOO_MANY_BRANCHES_IN_DEFINE = 154,
+ G_REGEX_ERROR_DEFINE_REPETION = 155,
+ G_REGEX_ERROR_INCONSISTENT_NEWLINE_OPTIONS = 156,
+ G_REGEX_ERROR_MISSING_BACK_REFERENCE = 157
+} GRegexError;
+GQuark g_regex_error_quark (void);
+typedef enum
+{
+ G_REGEX_CASELESS = 1 << 0,
+ G_REGEX_MULTILINE = 1 << 1,
+ G_REGEX_DOTALL = 1 << 2,
+ G_REGEX_EXTENDED = 1 << 3,
+ G_REGEX_ANCHORED = 1 << 4,
+ G_REGEX_DOLLAR_ENDONLY = 1 << 5,
+ G_REGEX_UNGREEDY = 1 << 9,
+ G_REGEX_RAW = 1 << 11,
+ G_REGEX_NO_AUTO_CAPTURE = 1 << 12,
+ G_REGEX_OPTIMIZE = 1 << 13,
+ G_REGEX_DUPNAMES = 1 << 19,
+ G_REGEX_NEWLINE_CR = 1 << 20,
+ G_REGEX_NEWLINE_LF = 1 << 21,
+ G_REGEX_NEWLINE_CRLF = G_REGEX_NEWLINE_CR | G_REGEX_NEWLINE_LF
+} GRegexCompileFlags;
+typedef enum
+{
+ G_REGEX_MATCH_ANCHORED = 1 << 4,
+ G_REGEX_MATCH_NOTBOL = 1 << 7,
+ G_REGEX_MATCH_NOTEOL = 1 << 8,
+ G_REGEX_MATCH_NOTEMPTY = 1 << 10,
+ G_REGEX_MATCH_PARTIAL = 1 << 15,
+ G_REGEX_MATCH_NEWLINE_CR = 1 << 20,
+ G_REGEX_MATCH_NEWLINE_LF = 1 << 21,
+ G_REGEX_MATCH_NEWLINE_CRLF = G_REGEX_MATCH_NEWLINE_CR | G_REGEX_MATCH_NEWLINE_LF,
+ G_REGEX_MATCH_NEWLINE_ANY = 1 << 22
+} GRegexMatchFlags;
+typedef struct _GRegex GRegex;
+typedef struct _GMatchInfo GMatchInfo;
+typedef gboolean (*GRegexEvalCallback) (const GMatchInfo *match_info,
+ GString *result,
+ gpointer user_data);
+GRegex *g_regex_new (const gchar *pattern,
+ GRegexCompileFlags compile_options,
+ GRegexMatchFlags match_options,
+ GError **error);
+GRegex *g_regex_ref (GRegex *regex);
+void g_regex_unref (GRegex *regex);
+const gchar *g_regex_get_pattern (const GRegex *regex);
+gint g_regex_get_max_backref (const GRegex *regex);
+gint g_regex_get_capture_count (const GRegex *regex);
+gint g_regex_get_string_number (const GRegex *regex,
+ const gchar *name);
+gchar *g_regex_escape_string (const gchar *string,
+ gint length);
+gboolean g_regex_match_simple (const gchar *pattern,
+ const gchar *string,
+ GRegexCompileFlags compile_options,
+ GRegexMatchFlags match_options);
+gboolean g_regex_match (const GRegex *regex,
+ const gchar *string,
+ GRegexMatchFlags match_options,
+ GMatchInfo **match_info);
+gboolean g_regex_match_full (const GRegex *regex,
+ const gchar *string,
+ gssize string_len,
+ gint start_position,
+ GRegexMatchFlags match_options,
+ GMatchInfo **match_info,
+ GError **error);
+gboolean g_regex_match_all (const GRegex *regex,
+ const gchar *string,
+ GRegexMatchFlags match_options,
+ GMatchInfo **match_info);
+gboolean g_regex_match_all_full (const GRegex *regex,
+ const gchar *string,
+ gssize string_len,
+ gint start_position,
+ GRegexMatchFlags match_options,
+ GMatchInfo **match_info,
+ GError **error);
+gchar **g_regex_split_simple (const gchar *pattern,
+ const gchar *string,
+ GRegexCompileFlags compile_options,
+ GRegexMatchFlags match_options);
+gchar **g_regex_split (const GRegex *regex,
+ const gchar *string,
+ GRegexMatchFlags match_options);
+gchar **g_regex_split_full (const GRegex *regex,
+ const gchar *string,
+ gssize string_len,
+ gint start_position,
+ GRegexMatchFlags match_options,
+ gint max_tokens,
+ GError **error);
+gchar *g_regex_replace (const GRegex *regex,
+ const gchar *string,
+ gssize string_len,
+ gint start_position,
+ const gchar *replacement,
+ GRegexMatchFlags match_options,
+ GError **error);
+gchar *g_regex_replace_literal (const GRegex *regex,
+ const gchar *string,
+ gssize string_len,
+ gint start_position,
+ const gchar *replacement,
+ GRegexMatchFlags match_options,
+ GError **error);
+gchar *g_regex_replace_eval (const GRegex *regex,
+ const gchar *string,
+ gssize string_len,
+ gint start_position,
+ GRegexMatchFlags match_options,
+ GRegexEvalCallback eval,
+ gpointer user_data,
+ GError **error);
+gboolean g_regex_check_replacement (const gchar *replacement,
+ gboolean *has_references,
+ GError **error);
+GRegex *g_match_info_get_regex (const GMatchInfo *match_info);
+const gchar *g_match_info_get_string (const GMatchInfo *match_info);
+void g_match_info_free (GMatchInfo *match_info);
+gboolean g_match_info_next (GMatchInfo *match_info,
+ GError **error);
+gboolean g_match_info_matches (const GMatchInfo *match_info);
+gint g_match_info_get_match_count (const GMatchInfo *match_info);
+gboolean g_match_info_is_partial_match (const GMatchInfo *match_info);
+gchar *g_match_info_expand_references(const GMatchInfo *match_info,
+ const gchar *string_to_expand,
+ GError **error);
+gchar *g_match_info_fetch (const GMatchInfo *match_info,
+ gint match_num);
+gboolean g_match_info_fetch_pos (const GMatchInfo *match_info,
+ gint match_num,
+ gint *start_pos,
+ gint *end_pos);
+gchar *g_match_info_fetch_named (const GMatchInfo *match_info,
+ const gchar *name);
+gboolean g_match_info_fetch_named_pos (const GMatchInfo *match_info,
+ const gchar *name,
+ gint *start_pos,
+ gint *end_pos);
+gchar **g_match_info_fetch_all (const GMatchInfo *match_info);
+typedef struct _GScanner GScanner;
+typedef struct _GScannerConfig GScannerConfig;
+typedef union _GTokenValue GTokenValue;
+typedef void (*GScannerMsgFunc) (GScanner *scanner,
+ gchar *message,
+ gboolean error);
+typedef enum
+{
+ G_ERR_UNKNOWN,
+ G_ERR_UNEXP_EOF,
+ G_ERR_UNEXP_EOF_IN_STRING,
+ G_ERR_UNEXP_EOF_IN_COMMENT,
+ G_ERR_NON_DIGIT_IN_CONST,
+ G_ERR_DIGIT_RADIX,
+ G_ERR_FLOAT_RADIX,
+ G_ERR_FLOAT_MALFORMED
+} GErrorType;
+typedef enum
+{
+ G_TOKEN_EOF = 0,
+ G_TOKEN_LEFT_PAREN = '(',
+ G_TOKEN_RIGHT_PAREN = ')',
+ G_TOKEN_LEFT_CURLY = '{',
+ G_TOKEN_RIGHT_CURLY = '}',
+ G_TOKEN_LEFT_BRACE = '[',
+ G_TOKEN_RIGHT_BRACE = ']',
+ G_TOKEN_EQUAL_SIGN = '=',
+ G_TOKEN_COMMA = ',',
+ G_TOKEN_NONE = 256,
+ G_TOKEN_ERROR,
+ G_TOKEN_CHAR,
+ G_TOKEN_BINARY,
+ G_TOKEN_OCTAL,
+ G_TOKEN_INT,
+ G_TOKEN_HEX,
+ G_TOKEN_FLOAT,
+ G_TOKEN_STRING,
+ G_TOKEN_SYMBOL,
+ G_TOKEN_IDENTIFIER,
+ G_TOKEN_IDENTIFIER_NULL,
+ G_TOKEN_COMMENT_SINGLE,
+ G_TOKEN_COMMENT_MULTI,
+ G_TOKEN_LAST
+} GTokenType;
+union _GTokenValue
+{
+ gpointer v_symbol;
+ gchar *v_identifier;
+ gulong v_binary;
+ gulong v_octal;
+ gulong v_int;
+ guint64 v_int64;
+ gdouble v_float;
+ gulong v_hex;
+ gchar *v_string;
+ gchar *v_comment;
+ guchar v_char;
+ guint v_error;
+};
+struct _GScannerConfig
+{
+ gchar *cset_skip_characters;
+ gchar *cset_identifier_first;
+ gchar *cset_identifier_nth;
+ gchar *cpair_comment_single;
+ guint case_sensitive : 1;
+ guint skip_comment_multi : 1;
+ guint skip_comment_single : 1;
+ guint scan_comment_multi : 1;
+ guint scan_identifier : 1;
+ guint scan_identifier_1char : 1;
+ guint scan_identifier_NULL : 1;
+ guint scan_symbols : 1;
+ guint scan_binary : 1;
+ guint scan_octal : 1;
+ guint scan_float : 1;
+ guint scan_hex : 1;
+ guint scan_hex_dollar : 1;
+ guint scan_string_sq : 1;
+ guint scan_string_dq : 1;
+ guint numbers_2_int : 1;
+ guint int_2_float : 1;
+ guint identifier_2_string : 1;
+ guint char_2_token : 1;
+ guint symbol_2_token : 1;
+ guint scope_0_fallback : 1;
+ guint store_int64 : 1;
+ guint padding_dummy;
+};
+struct _GScanner
+{
+ gpointer user_data;
+ guint max_parse_errors;
+ guint parse_errors;
+ const gchar *input_name;
+ GData *qdata;
+ GScannerConfig *config;
+ GTokenType token;
+ GTokenValue value;
+ guint line;
+ guint position;
+ GTokenType next_token;
+ GTokenValue next_value;
+ guint next_line;
+ guint next_position;
+ GHashTable *symbol_table;
+ gint input_fd;
+ const gchar *text;
+ const gchar *text_end;
+ gchar *buffer;
+ guint scope_id;
+ GScannerMsgFunc msg_handler;
+};
+GScanner* g_scanner_new (const GScannerConfig *config_templ);
+void g_scanner_destroy (GScanner *scanner);
+void g_scanner_input_file (GScanner *scanner,
+ gint input_fd);
+void g_scanner_sync_file_offset (GScanner *scanner);
+void g_scanner_input_text (GScanner *scanner,
+ const gchar *text,
+ guint text_len);
+GTokenType g_scanner_get_next_token (GScanner *scanner);
+GTokenType g_scanner_peek_next_token (GScanner *scanner);
+GTokenType g_scanner_cur_token (GScanner *scanner);
+GTokenValue g_scanner_cur_value (GScanner *scanner);
+guint g_scanner_cur_line (GScanner *scanner);
+guint g_scanner_cur_position (GScanner *scanner);
+gboolean g_scanner_eof (GScanner *scanner);
+guint g_scanner_set_scope (GScanner *scanner,
+ guint scope_id);
+void g_scanner_scope_add_symbol (GScanner *scanner,
+ guint scope_id,
+ const gchar *symbol,
+ gpointer value);
+void g_scanner_scope_remove_symbol (GScanner *scanner,
+ guint scope_id,
+ const gchar *symbol);
+gpointer g_scanner_scope_lookup_symbol (GScanner *scanner,
+ guint scope_id,
+ const gchar *symbol);
+void g_scanner_scope_foreach_symbol (GScanner *scanner,
+ guint scope_id,
+ GHFunc func,
+ gpointer user_data);
+gpointer g_scanner_lookup_symbol (GScanner *scanner,
+ const gchar *symbol);
+void g_scanner_unexp_token (GScanner *scanner,
+ GTokenType expected_token,
+ const gchar *identifier_spec,
+ const gchar *symbol_spec,
+ const gchar *symbol_name,
+ const gchar *message,
+ gint is_error);
+void g_scanner_error (GScanner *scanner,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+void g_scanner_warn (GScanner *scanner,
+ const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+typedef struct _GSequence GSequence;
+typedef struct _GSequenceNode GSequenceIter;
+typedef gint (* GSequenceIterCompareFunc) (GSequenceIter *a,
+ GSequenceIter *b,
+ gpointer data);
+GSequence * g_sequence_new (GDestroyNotify data_destroy);
+void g_sequence_free (GSequence *seq);
+gint g_sequence_get_length (GSequence *seq);
+void g_sequence_foreach (GSequence *seq,
+ GFunc func,
+ gpointer user_data);
+void g_sequence_foreach_range (GSequenceIter *begin,
+ GSequenceIter *end,
+ GFunc func,
+ gpointer user_data);
+void g_sequence_sort (GSequence *seq,
+ GCompareDataFunc cmp_func,
+ gpointer cmp_data);
+void g_sequence_sort_iter (GSequence *seq,
+ GSequenceIterCompareFunc cmp_func,
+ gpointer cmp_data);
+GSequenceIter *g_sequence_get_begin_iter (GSequence *seq);
+GSequenceIter *g_sequence_get_end_iter (GSequence *seq);
+GSequenceIter *g_sequence_get_iter_at_pos (GSequence *seq,
+ gint pos);
+GSequenceIter *g_sequence_append (GSequence *seq,
+ gpointer data);
+GSequenceIter *g_sequence_prepend (GSequence *seq,
+ gpointer data);
+GSequenceIter *g_sequence_insert_before (GSequenceIter *iter,
+ gpointer data);
+void g_sequence_move (GSequenceIter *src,
+ GSequenceIter *dest);
+void g_sequence_swap (GSequenceIter *a,
+ GSequenceIter *b);
+GSequenceIter *g_sequence_insert_sorted (GSequence *seq,
+ gpointer data,
+ GCompareDataFunc cmp_func,
+ gpointer cmp_data);
+GSequenceIter *g_sequence_insert_sorted_iter (GSequence *seq,
+ gpointer data,
+ GSequenceIterCompareFunc iter_cmp,
+ gpointer cmp_data);
+void g_sequence_sort_changed (GSequenceIter *iter,
+ GCompareDataFunc cmp_func,
+ gpointer cmp_data);
+void g_sequence_sort_changed_iter (GSequenceIter *iter,
+ GSequenceIterCompareFunc iter_cmp,
+ gpointer cmp_data);
+void g_sequence_remove (GSequenceIter *iter);
+void g_sequence_remove_range (GSequenceIter *begin,
+ GSequenceIter *end);
+void g_sequence_move_range (GSequenceIter *dest,
+ GSequenceIter *begin,
+ GSequenceIter *end);
+GSequenceIter *g_sequence_search (GSequence *seq,
+ gpointer data,
+ GCompareDataFunc cmp_func,
+ gpointer cmp_data);
+GSequenceIter *g_sequence_search_iter (GSequence *seq,
+ gpointer data,
+ GSequenceIterCompareFunc iter_cmp,
+ gpointer cmp_data);
+gpointer g_sequence_get (GSequenceIter *iter);
+void g_sequence_set (GSequenceIter *iter,
+ gpointer data);
+gboolean g_sequence_iter_is_begin (GSequenceIter *iter);
+gboolean g_sequence_iter_is_end (GSequenceIter *iter);
+GSequenceIter *g_sequence_iter_next (GSequenceIter *iter);
+GSequenceIter *g_sequence_iter_prev (GSequenceIter *iter);
+gint g_sequence_iter_get_position (GSequenceIter *iter);
+GSequenceIter *g_sequence_iter_move (GSequenceIter *iter,
+ gint delta);
+GSequence * g_sequence_iter_get_sequence (GSequenceIter *iter);
+gint g_sequence_iter_compare (GSequenceIter *a,
+ GSequenceIter *b);
+GSequenceIter *g_sequence_range_get_midpoint (GSequenceIter *begin,
+ GSequenceIter *end);
+typedef enum
+{
+ G_SHELL_ERROR_BAD_QUOTING,
+ G_SHELL_ERROR_EMPTY_STRING,
+ G_SHELL_ERROR_FAILED
+} GShellError;
+GQuark g_shell_error_quark (void);
+gchar* g_shell_quote (const gchar *unquoted_string);
+gchar* g_shell_unquote (const gchar *quoted_string,
+ GError **error);
+gboolean g_shell_parse_argv (const gchar *command_line,
+ gint *argcp,
+ gchar ***argvp,
+ GError **error);
+typedef enum
+{
+ G_SPAWN_ERROR_FORK,
+ G_SPAWN_ERROR_READ,
+ G_SPAWN_ERROR_CHDIR,
+ G_SPAWN_ERROR_ACCES,
+ G_SPAWN_ERROR_PERM,
+ G_SPAWN_ERROR_2BIG,
+ G_SPAWN_ERROR_NOEXEC,
+ G_SPAWN_ERROR_NAMETOOLONG,
+ G_SPAWN_ERROR_NOENT,
+ G_SPAWN_ERROR_NOMEM,
+ G_SPAWN_ERROR_NOTDIR,
+ G_SPAWN_ERROR_LOOP,
+ G_SPAWN_ERROR_TXTBUSY,
+ G_SPAWN_ERROR_IO,
+ G_SPAWN_ERROR_NFILE,
+ G_SPAWN_ERROR_MFILE,
+ G_SPAWN_ERROR_INVAL,
+ G_SPAWN_ERROR_ISDIR,
+ G_SPAWN_ERROR_LIBBAD,
+ G_SPAWN_ERROR_FAILED
+} GSpawnError;
+typedef void (* GSpawnChildSetupFunc) (gpointer user_data);
+typedef enum
+{
+ G_SPAWN_LEAVE_DESCRIPTORS_OPEN = 1 << 0,
+ G_SPAWN_DO_NOT_REAP_CHILD = 1 << 1,
+ G_SPAWN_SEARCH_PATH = 1 << 2,
+ G_SPAWN_STDOUT_TO_DEV_NULL = 1 << 3,
+ G_SPAWN_STDERR_TO_DEV_NULL = 1 << 4,
+ G_SPAWN_CHILD_INHERITS_STDIN = 1 << 5,
+ G_SPAWN_FILE_AND_ARGV_ZERO = 1 << 6
+} GSpawnFlags;
+GQuark g_spawn_error_quark (void);
+gboolean g_spawn_async (const gchar *working_directory,
+ gchar **argv,
+ gchar **envp,
+ GSpawnFlags flags,
+ GSpawnChildSetupFunc child_setup,
+ gpointer user_data,
+ GPid *child_pid,
+ GError **error);
+gboolean g_spawn_async_with_pipes (const gchar *working_directory,
+ gchar **argv,
+ gchar **envp,
+ GSpawnFlags flags,
+ GSpawnChildSetupFunc child_setup,
+ gpointer user_data,
+ GPid *child_pid,
+ gint *standard_input,
+ gint *standard_output,
+ gint *standard_error,
+ GError **error);
+gboolean g_spawn_sync (const gchar *working_directory,
+ gchar **argv,
+ gchar **envp,
+ GSpawnFlags flags,
+ GSpawnChildSetupFunc child_setup,
+ gpointer user_data,
+ gchar **standard_output,
+ gchar **standard_error,
+ gint *exit_status,
+ GError **error);
+gboolean g_spawn_command_line_sync (const gchar *command_line,
+ gchar **standard_output,
+ gchar **standard_error,
+ gint *exit_status,
+ GError **error);
+gboolean g_spawn_command_line_async (const gchar *command_line,
+ GError **error);
+void g_spawn_close_pid (GPid pid);
+typedef enum {
+ G_ASCII_ALNUM = 1 << 0,
+ G_ASCII_ALPHA = 1 << 1,
+ G_ASCII_CNTRL = 1 << 2,
+ G_ASCII_DIGIT = 1 << 3,
+ G_ASCII_GRAPH = 1 << 4,
+ G_ASCII_LOWER = 1 << 5,
+ G_ASCII_PRINT = 1 << 6,
+ G_ASCII_PUNCT = 1 << 7,
+ G_ASCII_SPACE = 1 << 8,
+ G_ASCII_UPPER = 1 << 9,
+ G_ASCII_XDIGIT = 1 << 10
+} GAsciiType;
+extern const guint16 * const g_ascii_table;
+gchar g_ascii_tolower (gchar c) __attribute__((__const__));
+gchar g_ascii_toupper (gchar c) __attribute__((__const__));
+gint g_ascii_digit_value (gchar c) __attribute__((__const__));
+gint g_ascii_xdigit_value (gchar c) __attribute__((__const__));
+gchar* g_strdelimit (gchar *string,
+ const gchar *delimiters,
+ gchar new_delimiter);
+gchar* g_strcanon (gchar *string,
+ const gchar *valid_chars,
+ gchar substitutor);
+const gchar* g_strerror (gint errnum) __attribute__((__const__));
+const gchar* g_strsignal (gint signum) __attribute__((__const__));
+gchar* g_strreverse (gchar *string);
+gsize g_strlcpy (gchar *dest,
+ const gchar *src,
+ gsize dest_size);
+gsize g_strlcat (gchar *dest,
+ const gchar *src,
+ gsize dest_size);
+gchar * g_strstr_len (const gchar *haystack,
+ gssize haystack_len,
+ const gchar *needle);
+gchar * g_strrstr (const gchar *haystack,
+ const gchar *needle);
+gchar * g_strrstr_len (const gchar *haystack,
+ gssize haystack_len,
+ const gchar *needle);
+gboolean g_str_has_suffix (const gchar *str,
+ const gchar *suffix);
+gboolean g_str_has_prefix (const gchar *str,
+ const gchar *prefix);
+gdouble g_strtod (const gchar *nptr,
+ gchar **endptr);
+gdouble g_ascii_strtod (const gchar *nptr,
+ gchar **endptr);
+guint64 g_ascii_strtoull (const gchar *nptr,
+ gchar **endptr,
+ guint base);
+gint64 g_ascii_strtoll (const gchar *nptr,
+ gchar **endptr,
+ guint base);
+gchar * g_ascii_dtostr (gchar *buffer,
+ gint buf_len,
+ gdouble d);
+gchar * g_ascii_formatd (gchar *buffer,
+ gint buf_len,
+ const gchar *format,
+ gdouble d);
+gchar* g_strchug (gchar *string);
+gchar* g_strchomp (gchar *string);
+gint g_ascii_strcasecmp (const gchar *s1,
+ const gchar *s2);
+gint g_ascii_strncasecmp (const gchar *s1,
+ const gchar *s2,
+ gsize n);
+gchar* g_ascii_strdown (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+gchar* g_ascii_strup (const gchar *str,
+ gssize len) __attribute__((__malloc__));
+gint g_strcasecmp (const gchar *s1,
+ const gchar *s2);
+gint g_strncasecmp (const gchar *s1,
+ const gchar *s2,
+ guint n);
+gchar* g_strdown (gchar *string);
+gchar* g_strup (gchar *string);
+gchar* g_strdup (const gchar *str) __attribute__((__malloc__));
+gchar* g_strdup_printf (const gchar *format,
+ ...) __attribute__((__format__ (__printf__, 1, 2))) __attribute__((__malloc__));
+gchar* g_strdup_vprintf (const gchar *format,
+ va_list args) __attribute__((__malloc__));
+gchar* g_strndup (const gchar *str,
+ gsize n) __attribute__((__malloc__));
+gchar* g_strnfill (gsize length,
+ gchar fill_char) __attribute__((__malloc__));
+gchar* g_strconcat (const gchar *string1,
+ ...) __attribute__((__malloc__)) __attribute__((__sentinel__));
+gchar* g_strjoin (const gchar *separator,
+ ...) __attribute__((__malloc__)) __attribute__((__sentinel__));
+gchar* g_strcompress (const gchar *source) __attribute__((__malloc__));
+gchar* g_strescape (const gchar *source,
+ const gchar *exceptions) __attribute__((__malloc__));
+gpointer g_memdup (gconstpointer mem,
+ guint byte_size) __attribute__((__malloc__)) __attribute__((__alloc_size__(2)));
+gchar** g_strsplit (const gchar *string,
+ const gchar *delimiter,
+ gint max_tokens) __attribute__((__malloc__));
+gchar ** g_strsplit_set (const gchar *string,
+ const gchar *delimiters,
+ gint max_tokens) __attribute__((__malloc__));
+gchar* g_strjoinv (const gchar *separator,
+ gchar **str_array) __attribute__((__malloc__));
+void g_strfreev (gchar **str_array);
+gchar** g_strdupv (gchar **str_array) __attribute__((__malloc__));
+guint g_strv_length (gchar **str_array);
+gchar* g_stpcpy (gchar *dest,
+ const char *src);
+const gchar *g_strip_context (const gchar *msgid,
+ const gchar *msgval) __attribute__((__format_arg__ (1)));
+const gchar *g_dgettext (const gchar *domain,
+ const gchar *msgid) __attribute__((__format_arg__ (2)));
+const gchar *g_dngettext (const gchar *domain,
+ const gchar *msgid,
+ const gchar *msgid_plural,
+ gulong n) __attribute__((__format_arg__ (3)));
+const gchar *g_dpgettext (const gchar *domain,
+ const gchar *msgctxtid,
+ gsize msgidoffset) __attribute__((__format_arg__ (2)));
+const gchar *g_dpgettext2 (const gchar *domain,
+ const gchar *context,
+ const gchar *msgid) __attribute__((__format_arg__ (3)));
+typedef struct GTestCase GTestCase;
+typedef struct GTestSuite GTestSuite;
+int g_strcmp0 (const char *str1,
+ const char *str2);
+void g_test_minimized_result (double minimized_quantity,
+ const char *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+void g_test_maximized_result (double maximized_quantity,
+ const char *format,
+ ...) __attribute__((__format__ (__printf__, 2, 3)));
+void g_test_init (int *argc,
+ char ***argv,
+ ...);
+int g_test_run (void);
+void g_test_add_func (const char *testpath,
+ void (*test_func) (void));
+void g_test_add_data_func (const char *testpath,
+ gconstpointer test_data,
+ void (*test_func) (gconstpointer));
+void g_test_message (const char *format,
+ ...) __attribute__((__format__ (__printf__, 1, 2)));
+void g_test_bug_base (const char *uri_pattern);
+void g_test_bug (const char *bug_uri_snippet);
+void g_test_timer_start (void);
+double g_test_timer_elapsed (void);
+double g_test_timer_last (void);
+void g_test_queue_free (gpointer gfree_pointer);
+void g_test_queue_destroy (GDestroyNotify destroy_func,
+ gpointer destroy_data);
+typedef enum {
+ G_TEST_TRAP_SILENCE_STDOUT = 1 << 7,
+ G_TEST_TRAP_SILENCE_STDERR = 1 << 8,
+ G_TEST_TRAP_INHERIT_STDIN = 1 << 9
+} GTestTrapFlags;
+gboolean g_test_trap_fork (guint64 usec_timeout,
+ GTestTrapFlags test_trap_flags);
+gboolean g_test_trap_has_passed (void);
+gboolean g_test_trap_reached_timeout (void);
+gint32 g_test_rand_int (void);
+gint32 g_test_rand_int_range (gint32 begin,
+ gint32 end);
+double g_test_rand_double (void);
+double g_test_rand_double_range (double range_start,
+ double range_end);
+GTestCase* g_test_create_case (const char *test_name,
+ gsize data_size,
+ gconstpointer test_data,
+ void (*data_setup) (void),
+ void (*data_test) (void),
+ void (*data_teardown) (void));
+GTestSuite* g_test_create_suite (const char *suite_name);
+GTestSuite* g_test_get_root (void);
+void g_test_suite_add (GTestSuite *suite,
+ GTestCase *test_case);
+void g_test_suite_add_suite (GTestSuite *suite,
+ GTestSuite *nestedsuite);
+int g_test_run_suite (GTestSuite *suite);
+void g_test_trap_assertions (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ guint64 assertion_flags,
+ const char *pattern);
+void g_assertion_message (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *message) __attribute__((__noreturn__));
+void g_assertion_message_expr (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *expr) __attribute__((__noreturn__));
+void g_assertion_message_cmpstr (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *expr,
+ const char *arg1,
+ const char *cmp,
+ const char *arg2) __attribute__((__noreturn__));
+void g_assertion_message_cmpnum (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *expr,
+ long double arg1,
+ const char *cmp,
+ long double arg2,
+ char numtype) __attribute__((__noreturn__));
+void g_assertion_message_error (const char *domain,
+ const char *file,
+ int line,
+ const char *func,
+ const char *expr,
+ GError *error,
+ GQuark error_domain,
+ int error_code) __attribute__((__noreturn__));
+void g_test_add_vtable (const char *testpath,
+ gsize data_size,
+ gconstpointer test_data,
+ void (*data_setup) (void),
+ void (*data_test) (void),
+ void (*data_teardown) (void));
+typedef struct {
+ gboolean test_initialized;
+ gboolean test_quick;
+ gboolean test_perf;
+ gboolean test_verbose;
+ gboolean test_quiet;
+} GTestConfig;
+extern const GTestConfig * const g_test_config_vars;
+typedef enum {
+ G_TEST_LOG_NONE,
+ G_TEST_LOG_ERROR,
+ G_TEST_LOG_START_BINARY,
+ G_TEST_LOG_LIST_CASE,
+ G_TEST_LOG_SKIP_CASE,
+ G_TEST_LOG_START_CASE,
+ G_TEST_LOG_STOP_CASE,
+ G_TEST_LOG_MIN_RESULT,
+ G_TEST_LOG_MAX_RESULT,
+ G_TEST_LOG_MESSAGE
+} GTestLogType;
+typedef struct {
+ GTestLogType log_type;
+ guint n_strings;
+ gchar **strings;
+ guint n_nums;
+ long double *nums;
+} GTestLogMsg;
+typedef struct {
+ GString *data;
+ GSList *msgs;
+} GTestLogBuffer;
+const char* g_test_log_type_name (GTestLogType log_type);
+GTestLogBuffer* g_test_log_buffer_new (void);
+void g_test_log_buffer_free (GTestLogBuffer *tbuffer);
+void g_test_log_buffer_push (GTestLogBuffer *tbuffer,
+ guint n_bytes,
+ const guint8 *bytes);
+GTestLogMsg* g_test_log_buffer_pop (GTestLogBuffer *tbuffer);
+void g_test_log_msg_free (GTestLogMsg *tmsg);
+typedef struct _GThreadPool GThreadPool;
+struct _GThreadPool
+{
+ GFunc func;
+ gpointer user_data;
+ gboolean exclusive;
+};
+GThreadPool* g_thread_pool_new (GFunc func,
+ gpointer user_data,
+ gint max_threads,
+ gboolean exclusive,
+ GError **error);
+void g_thread_pool_push (GThreadPool *pool,
+ gpointer data,
+ GError **error);
+void g_thread_pool_set_max_threads (GThreadPool *pool,
+ gint max_threads,
+ GError **error);
+gint g_thread_pool_get_max_threads (GThreadPool *pool);
+guint g_thread_pool_get_num_threads (GThreadPool *pool);
+guint g_thread_pool_unprocessed (GThreadPool *pool);
+void g_thread_pool_free (GThreadPool *pool,
+ gboolean immediate,
+ gboolean wait_);
+void g_thread_pool_set_max_unused_threads (gint max_threads);
+gint g_thread_pool_get_max_unused_threads (void);
+guint g_thread_pool_get_num_unused_threads (void);
+void g_thread_pool_stop_unused_threads (void);
+void g_thread_pool_set_sort_function (GThreadPool *pool,
+ GCompareDataFunc func,
+ gpointer user_data);
+void g_thread_pool_set_max_idle_time (guint interval);
+guint g_thread_pool_get_max_idle_time (void);
+typedef struct _GTimer GTimer;
+GTimer* g_timer_new (void);
+void g_timer_destroy (GTimer *timer);
+void g_timer_start (GTimer *timer);
+void g_timer_stop (GTimer *timer);
+void g_timer_reset (GTimer *timer);
+void g_timer_continue (GTimer *timer);
+gdouble g_timer_elapsed (GTimer *timer,
+ gulong *microseconds);
+void g_usleep (gulong microseconds);
+void g_time_val_add (GTimeVal *time_,
+ glong microseconds);
+gboolean g_time_val_from_iso8601 (const gchar *iso_date,
+ GTimeVal *time_);
+gchar* g_time_val_to_iso8601 (GTimeVal *time_) __attribute__((__malloc__));
+typedef struct _GTree GTree;
+typedef gboolean (*GTraverseFunc) (gpointer key,
+ gpointer value,
+ gpointer data);
+GTree* g_tree_new (GCompareFunc key_compare_func);
+GTree* g_tree_new_with_data (GCompareDataFunc key_compare_func,
+ gpointer key_compare_data);
+GTree* g_tree_new_full (GCompareDataFunc key_compare_func,
+ gpointer key_compare_data,
+ GDestroyNotify key_destroy_func,
+ GDestroyNotify value_destroy_func);
+void g_tree_destroy (GTree *tree);
+void g_tree_insert (GTree *tree,
+ gpointer key,
+ gpointer value);
+void g_tree_replace (GTree *tree,
+ gpointer key,
+ gpointer value);
+gboolean g_tree_remove (GTree *tree,
+ gconstpointer key);
+gboolean g_tree_steal (GTree *tree,
+ gconstpointer key);
+gpointer g_tree_lookup (GTree *tree,
+ gconstpointer key);
+gboolean g_tree_lookup_extended (GTree *tree,
+ gconstpointer lookup_key,
+ gpointer *orig_key,
+ gpointer *value);
+void g_tree_foreach (GTree *tree,
+ GTraverseFunc func,
+ gpointer user_data);
+void g_tree_traverse (GTree *tree,
+ GTraverseFunc traverse_func,
+ GTraverseType traverse_type,
+ gpointer user_data);
+gpointer g_tree_search (GTree *tree,
+ GCompareFunc search_func,
+ gconstpointer user_data);
+gint g_tree_height (GTree *tree);
+gint g_tree_nnodes (GTree *tree);
+char * g_uri_unescape_string (const char *escaped_string,
+ const char *illegal_characters);
+char * g_uri_unescape_segment (const char *escaped_string,
+ const char *escaped_string_end,
+ const char *illegal_characters);
+char * g_uri_parse_scheme (const char *uri);
+char * g_uri_escape_string (const char *unescaped,
+ const char *reserved_chars_allowed,
+ gboolean allow_utf8);
+typedef gsize GType;
+typedef struct _GValue GValue;
+typedef union _GTypeCValue GTypeCValue;
+typedef struct _GTypePlugin GTypePlugin;
+typedef struct _GTypeClass GTypeClass;
+typedef struct _GTypeInterface GTypeInterface;
+typedef struct _GTypeInstance GTypeInstance;
+typedef struct _GTypeInfo GTypeInfo;
+typedef struct _GTypeFundamentalInfo GTypeFundamentalInfo;
+typedef struct _GInterfaceInfo GInterfaceInfo;
+typedef struct _GTypeValueTable GTypeValueTable;
+typedef struct _GTypeQuery GTypeQuery;
+struct _GTypeClass
+{
+ GType g_type;
+};
+struct _GTypeInstance
+{
+ GTypeClass *g_class;
+};
+struct _GTypeInterface
+{
+ GType g_type;
+ GType g_instance_type;
+};
+struct _GTypeQuery
+{
+ GType type;
+ const gchar *type_name;
+ guint class_size;
+ guint instance_size;
+};
+typedef enum
+{
+ G_TYPE_DEBUG_NONE = 0,
+ G_TYPE_DEBUG_OBJECTS = 1 << 0,
+ G_TYPE_DEBUG_SIGNALS = 1 << 1,
+ G_TYPE_DEBUG_MASK = 0x03
+} GTypeDebugFlags;
+void g_type_init (void);
+void g_type_init_with_debug_flags (GTypeDebugFlags debug_flags);
+const gchar* g_type_name (GType type);
+GQuark g_type_qname (GType type);
+GType g_type_from_name (const gchar *name);
+GType g_type_parent (GType type);
+guint g_type_depth (GType type);
+GType g_type_next_base (GType leaf_type,
+ GType root_type);
+gboolean g_type_is_a (GType type,
+ GType is_a_type);
+gpointer g_type_class_ref (GType type);
+gpointer g_type_class_peek (GType type);
+gpointer g_type_class_peek_static (GType type);
+void g_type_class_unref (gpointer g_class);
+gpointer g_type_class_peek_parent (gpointer g_class);
+gpointer g_type_interface_peek (gpointer instance_class,
+ GType iface_type);
+gpointer g_type_interface_peek_parent (gpointer g_iface);
+gpointer g_type_default_interface_ref (GType g_type);
+gpointer g_type_default_interface_peek (GType g_type);
+void g_type_default_interface_unref (gpointer g_iface);
+GType* g_type_children (GType type,
+ guint *n_children);
+GType* g_type_interfaces (GType type,
+ guint *n_interfaces);
+void g_type_set_qdata (GType type,
+ GQuark quark,
+ gpointer data);
+gpointer g_type_get_qdata (GType type,
+ GQuark quark);
+void g_type_query (GType type,
+ GTypeQuery *query);
+typedef void (*GBaseInitFunc) (gpointer g_class);
+typedef void (*GBaseFinalizeFunc) (gpointer g_class);
+typedef void (*GClassInitFunc) (gpointer g_class,
+ gpointer class_data);
+typedef void (*GClassFinalizeFunc) (gpointer g_class,
+ gpointer class_data);
+typedef void (*GInstanceInitFunc) (GTypeInstance *instance,
+ gpointer g_class);
+typedef void (*GInterfaceInitFunc) (gpointer g_iface,
+ gpointer iface_data);
+typedef void (*GInterfaceFinalizeFunc) (gpointer g_iface,
+ gpointer iface_data);
+typedef gboolean (*GTypeClassCacheFunc) (gpointer cache_data,
+ GTypeClass *g_class);
+typedef void (*GTypeInterfaceCheckFunc) (gpointer check_data,
+ gpointer g_iface);
+typedef enum
+{
+ G_TYPE_FLAG_CLASSED = (1 << 0),
+ G_TYPE_FLAG_INSTANTIATABLE = (1 << 1),
+ G_TYPE_FLAG_DERIVABLE = (1 << 2),
+ G_TYPE_FLAG_DEEP_DERIVABLE = (1 << 3)
+} GTypeFundamentalFlags;
+typedef enum
+{
+ G_TYPE_FLAG_ABSTRACT = (1 << 4),
+ G_TYPE_FLAG_VALUE_ABSTRACT = (1 << 5)
+} GTypeFlags;
+struct _GTypeInfo
+{
+ guint16 class_size;
+ GBaseInitFunc base_init;
+ GBaseFinalizeFunc base_finalize;
+ GClassInitFunc class_init;
+ GClassFinalizeFunc class_finalize;
+ gconstpointer class_data;
+ guint16 instance_size;
+ guint16 n_preallocs;
+ GInstanceInitFunc instance_init;
+ const GTypeValueTable *value_table;
+};
+struct _GTypeFundamentalInfo
+{
+ GTypeFundamentalFlags type_flags;
+};
+struct _GInterfaceInfo
+{
+ GInterfaceInitFunc interface_init;
+ GInterfaceFinalizeFunc interface_finalize;
+ gpointer interface_data;
+};
+struct _GTypeValueTable
+{
+ void (*value_init) (GValue *value);
+ void (*value_free) (GValue *value);
+ void (*value_copy) (const GValue *src_value,
+ GValue *dest_value);
+ gpointer (*value_peek_pointer) (const GValue *value);
+ gchar *collect_format;
+ gchar* (*collect_value) (GValue *value,
+ guint n_collect_values,
+ GTypeCValue *collect_values,
+ guint collect_flags);
+ gchar *lcopy_format;
+ gchar* (*lcopy_value) (const GValue *value,
+ guint n_collect_values,
+ GTypeCValue *collect_values,
+ guint collect_flags);
+};
+GType g_type_register_static (GType parent_type,
+ const gchar *type_name,
+ const GTypeInfo *info,
+ GTypeFlags flags);
+GType g_type_register_static_simple (GType parent_type,
+ const gchar *type_name,
+ guint class_size,
+ GClassInitFunc class_init,
+ guint instance_size,
+ GInstanceInitFunc instance_init,
+ GTypeFlags flags);
+GType g_type_register_dynamic (GType parent_type,
+ const gchar *type_name,
+ GTypePlugin *plugin,
+ GTypeFlags flags);
+GType g_type_register_fundamental (GType type_id,
+ const gchar *type_name,
+ const GTypeInfo *info,
+ const GTypeFundamentalInfo *finfo,
+ GTypeFlags flags);
+void g_type_add_interface_static (GType instance_type,
+ GType interface_type,
+ const GInterfaceInfo *info);
+void g_type_add_interface_dynamic (GType instance_type,
+ GType interface_type,
+ GTypePlugin *plugin);
+void g_type_interface_add_prerequisite (GType interface_type,
+ GType prerequisite_type);
+GType*g_type_interface_prerequisites (GType interface_type,
+ guint *n_prerequisites);
+void g_type_class_add_private (gpointer g_class,
+ gsize private_size);
+gpointer g_type_instance_get_private (GTypeInstance *instance,
+ GType private_type);
+GTypePlugin* g_type_get_plugin (GType type);
+GTypePlugin* g_type_interface_get_plugin (GType instance_type,
+ GType interface_type);
+GType g_type_fundamental_next (void);
+GType g_type_fundamental (GType type_id);
+GTypeInstance* g_type_create_instance (GType type);
+void g_type_free_instance (GTypeInstance *instance);
+void g_type_add_class_cache_func (gpointer cache_data,
+ GTypeClassCacheFunc cache_func);
+void g_type_remove_class_cache_func (gpointer cache_data,
+ GTypeClassCacheFunc cache_func);
+void g_type_class_unref_uncached (gpointer g_class);
+void g_type_add_interface_check (gpointer check_data,
+ GTypeInterfaceCheckFunc check_func);
+void g_type_remove_interface_check (gpointer check_data,
+ GTypeInterfaceCheckFunc check_func);
+GTypeValueTable* g_type_value_table_peek (GType type);
+gboolean g_type_check_instance (GTypeInstance *instance) __attribute__((__pure__));
+GTypeInstance* g_type_check_instance_cast (GTypeInstance *instance,
+ GType iface_type);
+gboolean g_type_check_instance_is_a (GTypeInstance *instance,
+ GType iface_type) __attribute__((__pure__));
+GTypeClass* g_type_check_class_cast (GTypeClass *g_class,
+ GType is_a_type);
+gboolean g_type_check_class_is_a (GTypeClass *g_class,
+ GType is_a_type) __attribute__((__pure__));
+gboolean g_type_check_is_value_type (GType type) __attribute__((__const__));
+gboolean g_type_check_value (GValue *value) __attribute__((__pure__));
+gboolean g_type_check_value_holds (GValue *value,
+ GType type) __attribute__((__pure__));
+gboolean g_type_test_flags (GType type,
+ guint flags) __attribute__((__const__));
+const gchar* g_type_name_from_instance (GTypeInstance *instance);
+const gchar* g_type_name_from_class (GTypeClass *g_class);
+__attribute__((visibility("hidden"))) void g_value_c_init (void);
+__attribute__((visibility("hidden"))) void g_value_types_init (void);
+__attribute__((visibility("hidden"))) void g_enum_types_init (void);
+__attribute__((visibility("hidden"))) void g_param_type_init (void);
+__attribute__((visibility("hidden"))) void g_boxed_type_init (void);
+__attribute__((visibility("hidden"))) void g_object_type_init (void);
+__attribute__((visibility("hidden"))) void g_param_spec_types_init (void);
+__attribute__((visibility("hidden"))) void g_value_transforms_init (void);
+__attribute__((visibility("hidden"))) void g_signal_init (void);
+extern GTypeDebugFlags _g_type_debug_flags;
+typedef gpointer (*GBoxedCopyFunc) (gpointer boxed);
+typedef void (*GBoxedFreeFunc) (gpointer boxed);
+gpointer g_boxed_copy (GType boxed_type,
+ gconstpointer src_boxed);
+void g_boxed_free (GType boxed_type,
+ gpointer boxed);
+void g_value_set_boxed (GValue *value,
+ gconstpointer v_boxed);
+void g_value_set_static_boxed (GValue *value,
+ gconstpointer v_boxed);
+gpointer g_value_get_boxed (const GValue *value);
+gpointer g_value_dup_boxed (const GValue *value);
+GType g_boxed_type_register_static (const gchar *name,
+ GBoxedCopyFunc boxed_copy,
+ GBoxedFreeFunc boxed_free);
+void g_value_take_boxed (GValue *value,
+ gconstpointer v_boxed);
+void g_value_set_boxed_take_ownership (GValue *value,
+ gconstpointer v_boxed);
+GType g_closure_get_type (void) __attribute__((__const__));
+GType g_value_get_type (void) __attribute__((__const__));
+GType g_value_array_get_type (void) __attribute__((__const__));
+GType g_date_get_type (void) __attribute__((__const__));
+GType g_strv_get_type (void) __attribute__((__const__));
+GType g_gstring_get_type (void) __attribute__((__const__));
+GType g_hash_table_get_type (void) __attribute__((__const__));
+GType g_regex_get_type (void) __attribute__((__const__));
+typedef gchar** GStrv;
+typedef struct _GEnumClass GEnumClass;
+typedef struct _GFlagsClass GFlagsClass;
+typedef struct _GEnumValue GEnumValue;
+typedef struct _GFlagsValue GFlagsValue;
+struct _GEnumClass
+{
+ GTypeClass g_type_class;
+ gint minimum;
+ gint maximum;
+ guint n_values;
+ GEnumValue *values;
+};
+struct _GFlagsClass
+{
+ GTypeClass g_type_class;
+ guint mask;
+ guint n_values;
+ GFlagsValue *values;
+};
+struct _GEnumValue
+{
+ gint value;
+ const gchar *value_name;
+ const gchar *value_nick;
+};
+struct _GFlagsValue
+{
+ guint value;
+ const gchar *value_name;
+ const gchar *value_nick;
+};
+GEnumValue* g_enum_get_value (GEnumClass *enum_class,
+ gint value);
+GEnumValue* g_enum_get_value_by_name (GEnumClass *enum_class,
+ const gchar *name);
+GEnumValue* g_enum_get_value_by_nick (GEnumClass *enum_class,
+ const gchar *nick);
+GFlagsValue* g_flags_get_first_value (GFlagsClass *flags_class,
+ guint value);
+GFlagsValue* g_flags_get_value_by_name (GFlagsClass *flags_class,
+ const gchar *name);
+GFlagsValue* g_flags_get_value_by_nick (GFlagsClass *flags_class,
+ const gchar *nick);
+void g_value_set_enum (GValue *value,
+ gint v_enum);
+gint g_value_get_enum (const GValue *value);
+void g_value_set_flags (GValue *value,
+ guint v_flags);
+guint g_value_get_flags (const GValue *value);
+GType g_enum_register_static (const gchar *name,
+ const GEnumValue *const_static_values);
+GType g_flags_register_static (const gchar *name,
+ const GFlagsValue *const_static_values);
+void g_enum_complete_type_info (GType g_enum_type,
+ GTypeInfo *info,
+ const GEnumValue *const_values);
+void g_flags_complete_type_info (GType g_flags_type,
+ GTypeInfo *info,
+ const GFlagsValue *const_values);
+typedef void (*GValueTransform) (const GValue *src_value,
+ GValue *dest_value);
+struct _GValue
+{
+ GType g_type;
+ union {
+ gint v_int;
+ guint v_uint;
+ glong v_long;
+ gulong v_ulong;
+ gint64 v_int64;
+ guint64 v_uint64;
+ gfloat v_float;
+ gdouble v_double;
+ gpointer v_pointer;
+ } data[2];
+};
+GValue* g_value_init (GValue *value,
+ GType g_type);
+void g_value_copy (const GValue *src_value,
+ GValue *dest_value);
+GValue* g_value_reset (GValue *value);
+void g_value_unset (GValue *value);
+void g_value_set_instance (GValue *value,
+ gpointer instance);
+gboolean g_value_fits_pointer (const GValue *value);
+gpointer g_value_peek_pointer (const GValue *value);
+gboolean g_value_type_compatible (GType src_type,
+ GType dest_type);
+gboolean g_value_type_transformable (GType src_type,
+ GType dest_type);
+gboolean g_value_transform (const GValue *src_value,
+ GValue *dest_value);
+void g_value_register_transform_func (GType src_type,
+ GType dest_type,
+ GValueTransform transform_func);
+typedef enum
+{
+ G_PARAM_READABLE = 1 << 0,
+ G_PARAM_WRITABLE = 1 << 1,
+ G_PARAM_CONSTRUCT = 1 << 2,
+ G_PARAM_CONSTRUCT_ONLY = 1 << 3,
+ G_PARAM_LAX_VALIDATION = 1 << 4,
+ G_PARAM_STATIC_NAME = 1 << 5,
+ G_PARAM_PRIVATE = G_PARAM_STATIC_NAME,
+ G_PARAM_STATIC_NICK = 1 << 6,
+ G_PARAM_STATIC_BLURB = 1 << 7
+} GParamFlags;
+typedef struct _GParamSpec GParamSpec;
+typedef struct _GParamSpecClass GParamSpecClass;
+typedef struct _GParameter GParameter;
+typedef struct _GParamSpecPool GParamSpecPool;
+struct _GParamSpec
+{
+ GTypeInstance g_type_instance;
+ gchar *name;
+ GParamFlags flags;
+ GType value_type;
+ GType owner_type;
+ gchar *_nick;
+ gchar *_blurb;
+ GData *qdata;
+ guint ref_count;
+ guint param_id;
+};
+struct _GParamSpecClass
+{
+ GTypeClass g_type_class;
+ GType value_type;
+ void (*finalize) (GParamSpec *pspec);
+ void (*value_set_default) (GParamSpec *pspec,
+ GValue *value);
+ gboolean (*value_validate) (GParamSpec *pspec,
+ GValue *value);
+ gint (*values_cmp) (GParamSpec *pspec,
+ const GValue *value1,
+ const GValue *value2);
+ gpointer dummy[4];
+};
+struct _GParameter
+{
+ const gchar *name;
+ GValue value;
+};
+GParamSpec* g_param_spec_ref (GParamSpec *pspec);
+void g_param_spec_unref (GParamSpec *pspec);
+void g_param_spec_sink (GParamSpec *pspec);
+GParamSpec* g_param_spec_ref_sink (GParamSpec *pspec);
+gpointer g_param_spec_get_qdata (GParamSpec *pspec,
+ GQuark quark);
+void g_param_spec_set_qdata (GParamSpec *pspec,
+ GQuark quark,
+ gpointer data);
+void g_param_spec_set_qdata_full (GParamSpec *pspec,
+ GQuark quark,
+ gpointer data,
+ GDestroyNotify destroy);
+gpointer g_param_spec_steal_qdata (GParamSpec *pspec,
+ GQuark quark);
+GParamSpec* g_param_spec_get_redirect_target (GParamSpec *pspec);
+void g_param_value_set_default (GParamSpec *pspec,
+ GValue *value);
+gboolean g_param_value_defaults (GParamSpec *pspec,
+ GValue *value);
+gboolean g_param_value_validate (GParamSpec *pspec,
+ GValue *value);
+gboolean g_param_value_convert (GParamSpec *pspec,
+ const GValue *src_value,
+ GValue *dest_value,
+ gboolean strict_validation);
+gint g_param_values_cmp (GParamSpec *pspec,
+ const GValue *value1,
+ const GValue *value2);
+const gchar* g_param_spec_get_name (GParamSpec *pspec);
+const gchar* g_param_spec_get_nick (GParamSpec *pspec);
+const gchar* g_param_spec_get_blurb (GParamSpec *pspec);
+void g_value_set_param (GValue *value,
+ GParamSpec *param);
+GParamSpec* g_value_get_param (const GValue *value);
+GParamSpec* g_value_dup_param (const GValue *value);
+void g_value_take_param (GValue *value,
+ GParamSpec *param);
+void g_value_set_param_take_ownership (GValue *value,
+ GParamSpec *param);
+typedef struct _GParamSpecTypeInfo GParamSpecTypeInfo;
+struct _GParamSpecTypeInfo
+{
+ guint16 instance_size;
+ guint16 n_preallocs;
+ void (*instance_init) (GParamSpec *pspec);
+ GType value_type;
+ void (*finalize) (GParamSpec *pspec);
+ void (*value_set_default) (GParamSpec *pspec,
+ GValue *value);
+ gboolean (*value_validate) (GParamSpec *pspec,
+ GValue *value);
+ gint (*values_cmp) (GParamSpec *pspec,
+ const GValue *value1,
+ const GValue *value2);
+};
+GType g_param_type_register_static (const gchar *name,
+ const GParamSpecTypeInfo *pspec_info);
+GType _g_param_type_register_static_constant (const gchar *name,
+ const GParamSpecTypeInfo *pspec_info,
+ GType opt_type);
+gpointer g_param_spec_internal (GType param_type,
+ const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags);
+GParamSpecPool* g_param_spec_pool_new (gboolean type_prefixing);
+void g_param_spec_pool_insert (GParamSpecPool *pool,
+ GParamSpec *pspec,
+ GType owner_type);
+void g_param_spec_pool_remove (GParamSpecPool *pool,
+ GParamSpec *pspec);
+GParamSpec* g_param_spec_pool_lookup (GParamSpecPool *pool,
+ const gchar *param_name,
+ GType owner_type,
+ gboolean walk_ancestors);
+GList* g_param_spec_pool_list_owned (GParamSpecPool *pool,
+ GType owner_type);
+GParamSpec** g_param_spec_pool_list (GParamSpecPool *pool,
+ GType owner_type,
+ guint *n_pspecs_p);
+typedef struct _GClosure GClosure;
+typedef struct _GClosureNotifyData GClosureNotifyData;
+typedef void (*GCallback) (void);
+typedef void (*GClosureNotify) (gpointer data,
+ GClosure *closure);
+typedef void (*GClosureMarshal) (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+typedef struct _GCClosure GCClosure;
+struct _GClosureNotifyData
+{
+ gpointer data;
+ GClosureNotify notify;
+};
+struct _GClosure
+{
+ volatile guint ref_count : 15;
+ volatile guint meta_marshal : 1;
+ volatile guint n_guards : 1;
+ volatile guint n_fnotifiers : 2;
+ volatile guint n_inotifiers : 8;
+ volatile guint in_inotify : 1;
+ volatile guint floating : 1;
+ volatile guint derivative_flag : 1;
+ volatile guint in_marshal : 1;
+ volatile guint is_invalid : 1;
+ void (*marshal) (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+ gpointer data;
+ GClosureNotifyData *notifiers;
+};
+struct _GCClosure
+{
+ GClosure closure;
+ gpointer callback;
+};
+GClosure* g_cclosure_new (GCallback callback_func,
+ gpointer user_data,
+ GClosureNotify destroy_data);
+GClosure* g_cclosure_new_swap (GCallback callback_func,
+ gpointer user_data,
+ GClosureNotify destroy_data);
+GClosure* g_signal_type_cclosure_new (GType itype,
+ guint struct_offset);
+GClosure* g_closure_ref (GClosure *closure);
+void g_closure_sink (GClosure *closure);
+void g_closure_unref (GClosure *closure);
+GClosure* g_closure_new_simple (guint sizeof_closure,
+ gpointer data);
+void g_closure_add_finalize_notifier (GClosure *closure,
+ gpointer notify_data,
+ GClosureNotify notify_func);
+void g_closure_remove_finalize_notifier (GClosure *closure,
+ gpointer notify_data,
+ GClosureNotify notify_func);
+void g_closure_add_invalidate_notifier (GClosure *closure,
+ gpointer notify_data,
+ GClosureNotify notify_func);
+void g_closure_remove_invalidate_notifier (GClosure *closure,
+ gpointer notify_data,
+ GClosureNotify notify_func);
+void g_closure_add_marshal_guards (GClosure *closure,
+ gpointer pre_marshal_data,
+ GClosureNotify pre_marshal_notify,
+ gpointer post_marshal_data,
+ GClosureNotify post_marshal_notify);
+void g_closure_set_marshal (GClosure *closure,
+ GClosureMarshal marshal);
+void g_closure_set_meta_marshal (GClosure *closure,
+ gpointer marshal_data,
+ GClosureMarshal meta_marshal);
+void g_closure_invalidate (GClosure *closure);
+void g_closure_invoke (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint);
+extern void g_cclosure_marshal_VOID__VOID (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__BOOLEAN (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__CHAR (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__UCHAR (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__INT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__UINT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__LONG (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__ULONG (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__ENUM (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__FLAGS (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__FLOAT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__DOUBLE (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__PARAM (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__BOXED (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__OBJECT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_VOID__UINT_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_BOOLEAN__FLAGS (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void g_cclosure_marshal_STRING__OBJECT_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+typedef struct _GSignalQuery GSignalQuery;
+typedef struct _GSignalInvocationHint GSignalInvocationHint;
+typedef GClosureMarshal GSignalCMarshaller;
+typedef gboolean (*GSignalEmissionHook) (GSignalInvocationHint *ihint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer data);
+typedef gboolean (*GSignalAccumulator) (GSignalInvocationHint *ihint,
+ GValue *return_accu,
+ const GValue *handler_return,
+ gpointer data);
+typedef enum
+{
+ G_SIGNAL_RUN_FIRST = 1 << 0,
+ G_SIGNAL_RUN_LAST = 1 << 1,
+ G_SIGNAL_RUN_CLEANUP = 1 << 2,
+ G_SIGNAL_NO_RECURSE = 1 << 3,
+ G_SIGNAL_DETAILED = 1 << 4,
+ G_SIGNAL_ACTION = 1 << 5,
+ G_SIGNAL_NO_HOOKS = 1 << 6
+} GSignalFlags;
+typedef enum
+{
+ G_CONNECT_AFTER = 1 << 0,
+ G_CONNECT_SWAPPED = 1 << 1
+} GConnectFlags;
+typedef enum
+{
+ G_SIGNAL_MATCH_ID = 1 << 0,
+ G_SIGNAL_MATCH_DETAIL = 1 << 1,
+ G_SIGNAL_MATCH_CLOSURE = 1 << 2,
+ G_SIGNAL_MATCH_FUNC = 1 << 3,
+ G_SIGNAL_MATCH_DATA = 1 << 4,
+ G_SIGNAL_MATCH_UNBLOCKED = 1 << 5
+} GSignalMatchType;
+struct _GSignalInvocationHint
+{
+ guint signal_id;
+ GQuark detail;
+ GSignalFlags run_type;
+};
+struct _GSignalQuery
+{
+ guint signal_id;
+ const gchar *signal_name;
+ GType itype;
+ GSignalFlags signal_flags;
+ GType return_type;
+ guint n_params;
+ const GType *param_types;
+};
+guint g_signal_newv (const gchar *signal_name,
+ GType itype,
+ GSignalFlags signal_flags,
+ GClosure *class_closure,
+ GSignalAccumulator accumulator,
+ gpointer accu_data,
+ GSignalCMarshaller c_marshaller,
+ GType return_type,
+ guint n_params,
+ GType *param_types);
+guint g_signal_new_valist (const gchar *signal_name,
+ GType itype,
+ GSignalFlags signal_flags,
+ GClosure *class_closure,
+ GSignalAccumulator accumulator,
+ gpointer accu_data,
+ GSignalCMarshaller c_marshaller,
+ GType return_type,
+ guint n_params,
+ va_list args);
+guint g_signal_new (const gchar *signal_name,
+ GType itype,
+ GSignalFlags signal_flags,
+ guint class_offset,
+ GSignalAccumulator accumulator,
+ gpointer accu_data,
+ GSignalCMarshaller c_marshaller,
+ GType return_type,
+ guint n_params,
+ ...);
+guint g_signal_new_class_handler (const gchar *signal_name,
+ GType itype,
+ GSignalFlags signal_flags,
+ GCallback class_handler,
+ GSignalAccumulator accumulator,
+ gpointer accu_data,
+ GSignalCMarshaller c_marshaller,
+ GType return_type,
+ guint n_params,
+ ...);
+void g_signal_emitv (const GValue *instance_and_params,
+ guint signal_id,
+ GQuark detail,
+ GValue *return_value);
+void g_signal_emit_valist (gpointer instance,
+ guint signal_id,
+ GQuark detail,
+ va_list var_args);
+void g_signal_emit (gpointer instance,
+ guint signal_id,
+ GQuark detail,
+ ...);
+void g_signal_emit_by_name (gpointer instance,
+ const gchar *detailed_signal,
+ ...);
+guint g_signal_lookup (const gchar *name,
+ GType itype);
+const gchar* g_signal_name (guint signal_id);
+void g_signal_query (guint signal_id,
+ GSignalQuery *query);
+guint* g_signal_list_ids (GType itype,
+ guint *n_ids);
+gboolean g_signal_parse_name (const gchar *detailed_signal,
+ GType itype,
+ guint *signal_id_p,
+ GQuark *detail_p,
+ gboolean force_detail_quark);
+GSignalInvocationHint* g_signal_get_invocation_hint (gpointer instance);
+void g_signal_stop_emission (gpointer instance,
+ guint signal_id,
+ GQuark detail);
+void g_signal_stop_emission_by_name (gpointer instance,
+ const gchar *detailed_signal);
+gulong g_signal_add_emission_hook (guint signal_id,
+ GQuark detail,
+ GSignalEmissionHook hook_func,
+ gpointer hook_data,
+ GDestroyNotify data_destroy);
+void g_signal_remove_emission_hook (guint signal_id,
+ gulong hook_id);
+gboolean g_signal_has_handler_pending (gpointer instance,
+ guint signal_id,
+ GQuark detail,
+ gboolean may_be_blocked);
+gulong g_signal_connect_closure_by_id (gpointer instance,
+ guint signal_id,
+ GQuark detail,
+ GClosure *closure,
+ gboolean after);
+gulong g_signal_connect_closure (gpointer instance,
+ const gchar *detailed_signal,
+ GClosure *closure,
+ gboolean after);
+gulong g_signal_connect_data (gpointer instance,
+ const gchar *detailed_signal,
+ GCallback c_handler,
+ gpointer data,
+ GClosureNotify destroy_data,
+ GConnectFlags connect_flags);
+void g_signal_handler_block (gpointer instance,
+ gulong handler_id);
+void g_signal_handler_unblock (gpointer instance,
+ gulong handler_id);
+void g_signal_handler_disconnect (gpointer instance,
+ gulong handler_id);
+gboolean g_signal_handler_is_connected (gpointer instance,
+ gulong handler_id);
+gulong g_signal_handler_find (gpointer instance,
+ GSignalMatchType mask,
+ guint signal_id,
+ GQuark detail,
+ GClosure *closure,
+ gpointer func,
+ gpointer data);
+guint g_signal_handlers_block_matched (gpointer instance,
+ GSignalMatchType mask,
+ guint signal_id,
+ GQuark detail,
+ GClosure *closure,
+ gpointer func,
+ gpointer data);
+guint g_signal_handlers_unblock_matched (gpointer instance,
+ GSignalMatchType mask,
+ guint signal_id,
+ GQuark detail,
+ GClosure *closure,
+ gpointer func,
+ gpointer data);
+guint g_signal_handlers_disconnect_matched (gpointer instance,
+ GSignalMatchType mask,
+ guint signal_id,
+ GQuark detail,
+ GClosure *closure,
+ gpointer func,
+ gpointer data);
+void g_signal_override_class_closure (guint signal_id,
+ GType instance_type,
+ GClosure *class_closure);
+void g_signal_override_class_handler (const gchar *signal_name,
+ GType instance_type,
+ GCallback class_handler);
+void g_signal_chain_from_overridden (const GValue *instance_and_params,
+ GValue *return_value);
+void g_signal_chain_from_overridden_handler (gpointer instance,
+ ...);
+gboolean g_signal_accumulator_true_handled (GSignalInvocationHint *ihint,
+ GValue *return_accu,
+ const GValue *handler_return,
+ gpointer dummy);
+void g_signal_handlers_destroy (gpointer instance);
+void _g_signals_destroy (GType itype);
+typedef struct _GObject GObject;
+typedef struct _GObjectClass GObjectClass;
+typedef struct _GObject GInitiallyUnowned;
+typedef struct _GObjectClass GInitiallyUnownedClass;
+typedef struct _GObjectConstructParam GObjectConstructParam;
+typedef void (*GObjectGetPropertyFunc) (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec);
+typedef void (*GObjectSetPropertyFunc) (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec);
+typedef void (*GObjectFinalizeFunc) (GObject *object);
+typedef void (*GWeakNotify) (gpointer data,
+ GObject *where_the_object_was);
+struct _GObject
+{
+ GTypeInstance g_type_instance;
+ volatile guint ref_count;
+ GData *qdata;
+};
+struct _GObjectClass
+{
+ GTypeClass g_type_class;
+ GSList *construct_properties;
+ GObject* (*constructor) (GType type,
+ guint n_construct_properties,
+ GObjectConstructParam *construct_properties);
+ void (*set_property) (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec);
+ void (*get_property) (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec);
+ void (*dispose) (GObject *object);
+ void (*finalize) (GObject *object);
+ void (*dispatch_properties_changed) (GObject *object,
+ guint n_pspecs,
+ GParamSpec **pspecs);
+ void (*notify) (GObject *object,
+ GParamSpec *pspec);
+ void (*constructed) (GObject *object);
+ gpointer pdummy[7];
+};
+struct _GObjectConstructParam
+{
+ GParamSpec *pspec;
+ GValue *value;
+};
+GType g_initially_unowned_get_type (void);
+void g_object_class_install_property (GObjectClass *oclass,
+ guint property_id,
+ GParamSpec *pspec);
+GParamSpec* g_object_class_find_property (GObjectClass *oclass,
+ const gchar *property_name);
+GParamSpec**g_object_class_list_properties (GObjectClass *oclass,
+ guint *n_properties);
+void g_object_class_override_property (GObjectClass *oclass,
+ guint property_id,
+ const gchar *name);
+void g_object_interface_install_property (gpointer g_iface,
+ GParamSpec *pspec);
+GParamSpec* g_object_interface_find_property (gpointer g_iface,
+ const gchar *property_name);
+GParamSpec**g_object_interface_list_properties (gpointer g_iface,
+ guint *n_properties_p);
+GType g_object_get_type (void) __attribute__((__const__));
+gpointer g_object_new (GType object_type,
+ const gchar *first_property_name,
+ ...);
+gpointer g_object_newv (GType object_type,
+ guint n_parameters,
+ GParameter *parameters);
+GObject* g_object_new_valist (GType object_type,
+ const gchar *first_property_name,
+ va_list var_args);
+void g_object_set (gpointer object,
+ const gchar *first_property_name,
+ ...) __attribute__((__sentinel__));
+void g_object_get (gpointer object,
+ const gchar *first_property_name,
+ ...) __attribute__((__sentinel__));
+gpointer g_object_connect (gpointer object,
+ const gchar *signal_spec,
+ ...) __attribute__((__sentinel__));
+void g_object_disconnect (gpointer object,
+ const gchar *signal_spec,
+ ...) __attribute__((__sentinel__));
+void g_object_set_valist (GObject *object,
+ const gchar *first_property_name,
+ va_list var_args);
+void g_object_get_valist (GObject *object,
+ const gchar *first_property_name,
+ va_list var_args);
+void g_object_set_property (GObject *object,
+ const gchar *property_name,
+ const GValue *value);
+void g_object_get_property (GObject *object,
+ const gchar *property_name,
+ GValue *value);
+void g_object_freeze_notify (GObject *object);
+void g_object_notify (GObject *object,
+ const gchar *property_name);
+void g_object_thaw_notify (GObject *object);
+gboolean g_object_is_floating (gpointer object);
+gpointer g_object_ref_sink (gpointer object);
+gpointer g_object_ref (gpointer object);
+void g_object_unref (gpointer object);
+void g_object_weak_ref (GObject *object,
+ GWeakNotify notify,
+ gpointer data);
+void g_object_weak_unref (GObject *object,
+ GWeakNotify notify,
+ gpointer data);
+void g_object_add_weak_pointer (GObject *object,
+ gpointer *weak_pointer_location);
+void g_object_remove_weak_pointer (GObject *object,
+ gpointer *weak_pointer_location);
+typedef void (*GToggleNotify) (gpointer data,
+ GObject *object,
+ gboolean is_last_ref);
+void g_object_add_toggle_ref (GObject *object,
+ GToggleNotify notify,
+ gpointer data);
+void g_object_remove_toggle_ref (GObject *object,
+ GToggleNotify notify,
+ gpointer data);
+gpointer g_object_get_qdata (GObject *object,
+ GQuark quark);
+void g_object_set_qdata (GObject *object,
+ GQuark quark,
+ gpointer data);
+void g_object_set_qdata_full (GObject *object,
+ GQuark quark,
+ gpointer data,
+ GDestroyNotify destroy);
+gpointer g_object_steal_qdata (GObject *object,
+ GQuark quark);
+gpointer g_object_get_data (GObject *object,
+ const gchar *key);
+void g_object_set_data (GObject *object,
+ const gchar *key,
+ gpointer data);
+void g_object_set_data_full (GObject *object,
+ const gchar *key,
+ gpointer data,
+ GDestroyNotify destroy);
+gpointer g_object_steal_data (GObject *object,
+ const gchar *key);
+void g_object_watch_closure (GObject *object,
+ GClosure *closure);
+GClosure* g_cclosure_new_object (GCallback callback_func,
+ GObject *object);
+GClosure* g_cclosure_new_object_swap (GCallback callback_func,
+ GObject *object);
+GClosure* g_closure_new_object (guint sizeof_closure,
+ GObject *object);
+void g_value_set_object (GValue *value,
+ gpointer v_object);
+gpointer g_value_get_object (const GValue *value);
+gpointer g_value_dup_object (const GValue *value);
+gulong g_signal_connect_object (gpointer instance,
+ const gchar *detailed_signal,
+ GCallback c_handler,
+ gpointer gobject,
+ GConnectFlags connect_flags);
+void g_object_force_floating (GObject *object);
+void g_object_run_dispose (GObject *object);
+void g_value_take_object (GValue *value,
+ gpointer v_object);
+void g_value_set_object_take_ownership (GValue *value,
+ gpointer v_object);
+gsize g_object_compat_control (gsize what,
+ gpointer data);
+typedef struct _GParamSpecChar GParamSpecChar;
+typedef struct _GParamSpecUChar GParamSpecUChar;
+typedef struct _GParamSpecBoolean GParamSpecBoolean;
+typedef struct _GParamSpecInt GParamSpecInt;
+typedef struct _GParamSpecUInt GParamSpecUInt;
+typedef struct _GParamSpecLong GParamSpecLong;
+typedef struct _GParamSpecULong GParamSpecULong;
+typedef struct _GParamSpecInt64 GParamSpecInt64;
+typedef struct _GParamSpecUInt64 GParamSpecUInt64;
+typedef struct _GParamSpecUnichar GParamSpecUnichar;
+typedef struct _GParamSpecEnum GParamSpecEnum;
+typedef struct _GParamSpecFlags GParamSpecFlags;
+typedef struct _GParamSpecFloat GParamSpecFloat;
+typedef struct _GParamSpecDouble GParamSpecDouble;
+typedef struct _GParamSpecString GParamSpecString;
+typedef struct _GParamSpecParam GParamSpecParam;
+typedef struct _GParamSpecBoxed GParamSpecBoxed;
+typedef struct _GParamSpecPointer GParamSpecPointer;
+typedef struct _GParamSpecValueArray GParamSpecValueArray;
+typedef struct _GParamSpecObject GParamSpecObject;
+typedef struct _GParamSpecOverride GParamSpecOverride;
+typedef struct _GParamSpecGType GParamSpecGType;
+struct _GParamSpecChar
+{
+ GParamSpec parent_instance;
+ gint8 minimum;
+ gint8 maximum;
+ gint8 default_value;
+};
+struct _GParamSpecUChar
+{
+ GParamSpec parent_instance;
+ guint8 minimum;
+ guint8 maximum;
+ guint8 default_value;
+};
+struct _GParamSpecBoolean
+{
+ GParamSpec parent_instance;
+ gboolean default_value;
+};
+struct _GParamSpecInt
+{
+ GParamSpec parent_instance;
+ gint minimum;
+ gint maximum;
+ gint default_value;
+};
+struct _GParamSpecUInt
+{
+ GParamSpec parent_instance;
+ guint minimum;
+ guint maximum;
+ guint default_value;
+};
+struct _GParamSpecLong
+{
+ GParamSpec parent_instance;
+ glong minimum;
+ glong maximum;
+ glong default_value;
+};
+struct _GParamSpecULong
+{
+ GParamSpec parent_instance;
+ gulong minimum;
+ gulong maximum;
+ gulong default_value;
+};
+struct _GParamSpecInt64
+{
+ GParamSpec parent_instance;
+ gint64 minimum;
+ gint64 maximum;
+ gint64 default_value;
+};
+struct _GParamSpecUInt64
+{
+ GParamSpec parent_instance;
+ guint64 minimum;
+ guint64 maximum;
+ guint64 default_value;
+};
+struct _GParamSpecUnichar
+{
+ GParamSpec parent_instance;
+ gunichar default_value;
+};
+struct _GParamSpecEnum
+{
+ GParamSpec parent_instance;
+ GEnumClass *enum_class;
+ gint default_value;
+};
+struct _GParamSpecFlags
+{
+ GParamSpec parent_instance;
+ GFlagsClass *flags_class;
+ guint default_value;
+};
+struct _GParamSpecFloat
+{
+ GParamSpec parent_instance;
+ gfloat minimum;
+ gfloat maximum;
+ gfloat default_value;
+ gfloat epsilon;
+};
+struct _GParamSpecDouble
+{
+ GParamSpec parent_instance;
+ gdouble minimum;
+ gdouble maximum;
+ gdouble default_value;
+ gdouble epsilon;
+};
+struct _GParamSpecString
+{
+ GParamSpec parent_instance;
+ gchar *default_value;
+ gchar *cset_first;
+ gchar *cset_nth;
+ gchar substitutor;
+ guint null_fold_if_empty : 1;
+ guint ensure_non_null : 1;
+};
+struct _GParamSpecParam
+{
+ GParamSpec parent_instance;
+};
+struct _GParamSpecBoxed
+{
+ GParamSpec parent_instance;
+};
+struct _GParamSpecPointer
+{
+ GParamSpec parent_instance;
+};
+struct _GParamSpecValueArray
+{
+ GParamSpec parent_instance;
+ GParamSpec *element_spec;
+ guint fixed_n_elements;
+};
+struct _GParamSpecObject
+{
+ GParamSpec parent_instance;
+};
+struct _GParamSpecOverride
+{
+ GParamSpec parent_instance;
+ GParamSpec *overridden;
+};
+struct _GParamSpecGType
+{
+ GParamSpec parent_instance;
+ GType is_a_type;
+};
+GParamSpec* g_param_spec_char (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gint8 minimum,
+ gint8 maximum,
+ gint8 default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_uchar (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ guint8 minimum,
+ guint8 maximum,
+ guint8 default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_boolean (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gboolean default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_int (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gint minimum,
+ gint maximum,
+ gint default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_uint (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ guint minimum,
+ guint maximum,
+ guint default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_long (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ glong minimum,
+ glong maximum,
+ glong default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_ulong (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gulong minimum,
+ gulong maximum,
+ gulong default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_int64 (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gint64 minimum,
+ gint64 maximum,
+ gint64 default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_uint64 (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ guint64 minimum,
+ guint64 maximum,
+ guint64 default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_unichar (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gunichar default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_enum (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GType enum_type,
+ gint default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_flags (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GType flags_type,
+ guint default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_float (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gfloat minimum,
+ gfloat maximum,
+ gfloat default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_double (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ gdouble minimum,
+ gdouble maximum,
+ gdouble default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_string (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ const gchar *default_value,
+ GParamFlags flags);
+GParamSpec* g_param_spec_param (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GType param_type,
+ GParamFlags flags);
+GParamSpec* g_param_spec_boxed (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GType boxed_type,
+ GParamFlags flags);
+GParamSpec* g_param_spec_pointer (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamFlags flags);
+GParamSpec* g_param_spec_value_array (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GParamSpec *element_spec,
+ GParamFlags flags);
+GParamSpec* g_param_spec_object (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GType object_type,
+ GParamFlags flags);
+GParamSpec* g_param_spec_override (const gchar *name,
+ GParamSpec *overridden);
+GParamSpec* g_param_spec_gtype (const gchar *name,
+ const gchar *nick,
+ const gchar *blurb,
+ GType is_a_type,
+ GParamFlags flags);
+extern GType *g_param_spec_types;
+void g_source_set_closure (GSource *source,
+ GClosure *closure);
+GType g_io_channel_get_type (void);
+GType g_io_condition_get_type (void);
+typedef struct _GTypeModule GTypeModule;
+typedef struct _GTypeModuleClass GTypeModuleClass;
+struct _GTypeModule
+{
+ GObject parent_instance;
+ guint use_count;
+ GSList *type_infos;
+ GSList *interface_infos;
+ gchar *name;
+};
+struct _GTypeModuleClass
+{
+ GObjectClass parent_class;
+ gboolean (* load) (GTypeModule *module);
+ void (* unload) (GTypeModule *module);
+ void (*reserved1) (void);
+ void (*reserved2) (void);
+ void (*reserved3) (void);
+ void (*reserved4) (void);
+};
+GType g_type_module_get_type (void) __attribute__((__const__));
+gboolean g_type_module_use (GTypeModule *module);
+void g_type_module_unuse (GTypeModule *module);
+void g_type_module_set_name (GTypeModule *module,
+ const gchar *name);
+GType g_type_module_register_type (GTypeModule *module,
+ GType parent_type,
+ const gchar *type_name,
+ const GTypeInfo *type_info,
+ GTypeFlags flags);
+void g_type_module_add_interface (GTypeModule *module,
+ GType instance_type,
+ GType interface_type,
+ const GInterfaceInfo *interface_info);
+GType g_type_module_register_enum (GTypeModule *module,
+ const gchar *name,
+ const GEnumValue *const_static_values);
+GType g_type_module_register_flags (GTypeModule *module,
+ const gchar *name,
+ const GFlagsValue *const_static_values);
+typedef struct _GTypePluginClass GTypePluginClass;
+typedef void (*GTypePluginUse) (GTypePlugin *plugin);
+typedef void (*GTypePluginUnuse) (GTypePlugin *plugin);
+typedef void (*GTypePluginCompleteTypeInfo) (GTypePlugin *plugin,
+ GType g_type,
+ GTypeInfo *info,
+ GTypeValueTable *value_table);
+typedef void (*GTypePluginCompleteInterfaceInfo) (GTypePlugin *plugin,
+ GType instance_type,
+ GType interface_type,
+ GInterfaceInfo *info);
+struct _GTypePluginClass
+{
+ GTypeInterface base_iface;
+ GTypePluginUse use_plugin;
+ GTypePluginUnuse unuse_plugin;
+ GTypePluginCompleteTypeInfo complete_type_info;
+ GTypePluginCompleteInterfaceInfo complete_interface_info;
+};
+GType g_type_plugin_get_type (void) __attribute__((__const__));
+void g_type_plugin_use (GTypePlugin *plugin);
+void g_type_plugin_unuse (GTypePlugin *plugin);
+void g_type_plugin_complete_type_info (GTypePlugin *plugin,
+ GType g_type,
+ GTypeInfo *info,
+ GTypeValueTable *value_table);
+void g_type_plugin_complete_interface_info (GTypePlugin *plugin,
+ GType instance_type,
+ GType interface_type,
+ GInterfaceInfo *info);
+typedef struct _GValueArray GValueArray;
+struct _GValueArray
+{
+ guint n_values;
+ GValue *values;
+ guint n_prealloced;
+};
+GValue* g_value_array_get_nth (GValueArray *value_array,
+ guint index_);
+GValueArray* g_value_array_new (guint n_prealloced);
+void g_value_array_free (GValueArray *value_array);
+GValueArray* g_value_array_copy (const GValueArray *value_array);
+GValueArray* g_value_array_prepend (GValueArray *value_array,
+ const GValue *value);
+GValueArray* g_value_array_append (GValueArray *value_array,
+ const GValue *value);
+GValueArray* g_value_array_insert (GValueArray *value_array,
+ guint index_,
+ const GValue *value);
+GValueArray* g_value_array_remove (GValueArray *value_array,
+ guint index_);
+GValueArray* g_value_array_sort (GValueArray *value_array,
+ GCompareFunc compare_func);
+GValueArray* g_value_array_sort_with_data (GValueArray *value_array,
+ GCompareDataFunc compare_func,
+ gpointer user_data);
+void g_value_set_char (GValue *value,
+ gchar v_char);
+gchar g_value_get_char (const GValue *value);
+void g_value_set_uchar (GValue *value,
+ guchar v_uchar);
+guchar g_value_get_uchar (const GValue *value);
+void g_value_set_boolean (GValue *value,
+ gboolean v_boolean);
+gboolean g_value_get_boolean (const GValue *value);
+void g_value_set_int (GValue *value,
+ gint v_int);
+gint g_value_get_int (const GValue *value);
+void g_value_set_uint (GValue *value,
+ guint v_uint);
+guint g_value_get_uint (const GValue *value);
+void g_value_set_long (GValue *value,
+ glong v_long);
+glong g_value_get_long (const GValue *value);
+void g_value_set_ulong (GValue *value,
+ gulong v_ulong);
+gulong g_value_get_ulong (const GValue *value);
+void g_value_set_int64 (GValue *value,
+ gint64 v_int64);
+gint64 g_value_get_int64 (const GValue *value);
+void g_value_set_uint64 (GValue *value,
+ guint64 v_uint64);
+guint64 g_value_get_uint64 (const GValue *value);
+void g_value_set_float (GValue *value,
+ gfloat v_float);
+gfloat g_value_get_float (const GValue *value);
+void g_value_set_double (GValue *value,
+ gdouble v_double);
+gdouble g_value_get_double (const GValue *value);
+void g_value_set_string (GValue *value,
+ const gchar *v_string);
+void g_value_set_static_string (GValue *value,
+ const gchar *v_string);
+const gchar* g_value_get_string (const GValue *value);
+gchar* g_value_dup_string (const GValue *value);
+void g_value_set_pointer (GValue *value,
+ gpointer v_pointer);
+gpointer g_value_get_pointer (const GValue *value);
+GType g_gtype_get_type (void);
+void g_value_set_gtype (GValue *value,
+ GType v_gtype);
+GType g_value_get_gtype (const GValue *value);
+GType g_pointer_type_register_static (const gchar *name);
+gchar* g_strdup_value_contents (const GValue *value);
+void g_value_take_string (GValue *value,
+ gchar *v_string);
+void g_value_set_string_take_ownership (GValue *value,
+ gchar *v_string);
+typedef gchar* gchararray;
+GType gst_object_flags_get_type (void);
+GType gst_bin_flags_get_type (void);
+GType gst_buffer_flag_get_type (void);
+GType gst_buffer_copy_flags_get_type (void);
+GType gst_buffer_list_item_get_type (void);
+GType gst_bus_flags_get_type (void);
+GType gst_bus_sync_reply_get_type (void);
+GType gst_caps_flags_get_type (void);
+GType gst_clock_return_get_type (void);
+GType gst_clock_entry_type_get_type (void);
+GType gst_clock_flags_get_type (void);
+GType gst_debug_graph_details_get_type (void);
+GType gst_state_get_type (void);
+GType gst_state_change_return_get_type (void);
+GType gst_state_change_get_type (void);
+GType gst_element_flags_get_type (void);
+GType gst_core_error_get_type (void);
+GType gst_library_error_get_type (void);
+GType gst_resource_error_get_type (void);
+GType gst_stream_error_get_type (void);
+GType gst_event_type_flags_get_type (void);
+GType gst_event_type_get_type (void);
+GType gst_seek_type_get_type (void);
+GType gst_seek_flags_get_type (void);
+GType gst_format_get_type (void);
+GType gst_index_certainty_get_type (void);
+GType gst_index_entry_type_get_type (void);
+GType gst_index_lookup_method_get_type (void);
+GType gst_assoc_flags_get_type (void);
+GType gst_index_resolver_method_get_type (void);
+GType gst_index_flags_get_type (void);
+GType gst_debug_level_get_type (void);
+GType gst_debug_color_flags_get_type (void);
+GType gst_iterator_result_get_type (void);
+GType gst_iterator_item_get_type (void);
+GType gst_message_type_get_type (void);
+GType gst_structure_change_type_get_type (void);
+GType gst_stream_status_type_get_type (void);
+GType gst_mini_object_flags_get_type (void);
+GType gst_pad_link_return_get_type (void);
+GType gst_flow_return_get_type (void);
+GType gst_activate_mode_get_type (void);
+GType gst_pad_direction_get_type (void);
+GType gst_pad_flags_get_type (void);
+GType gst_pad_presence_get_type (void);
+GType gst_pad_template_flags_get_type (void);
+GType gst_pipeline_flags_get_type (void);
+GType gst_plugin_error_get_type (void);
+GType gst_plugin_flags_get_type (void);
+GType gst_plugin_dependency_flags_get_type (void);
+GType gst_rank_get_type (void);
+GType gst_query_type_get_type (void);
+GType gst_buffering_mode_get_type (void);
+GType gst_clock_type_get_type (void);
+GType gst_tag_merge_mode_get_type (void);
+GType gst_tag_flag_get_type (void);
+GType gst_task_state_get_type (void);
+GType gst_alloc_trace_flags_get_type (void);
+GType gst_type_find_probability_get_type (void);
+GType gst_uri_type_get_type (void);
+GType gst_search_mode_get_type (void);
+GType gst_parse_error_get_type (void);
+GType gst_parse_flags_get_type (void);
+typedef struct _GstElement GstElement;
+typedef struct _GstElementClass GstElementClass;
+typedef enum {
+ GST_STATE_VOID_PENDING = 0,
+ GST_STATE_NULL = 1,
+ GST_STATE_READY = 2,
+ GST_STATE_PAUSED = 3,
+ GST_STATE_PLAYING = 4
+} GstState;
+ void xmlCheckVersion(int version);
+typedef unsigned char xmlChar;
+ xmlChar *
+ xmlStrdup (const xmlChar *cur);
+ xmlChar *
+ xmlStrndup (const xmlChar *cur,
+ int len);
+ xmlChar *
+ xmlCharStrndup (const char *cur,
+ int len);
+ xmlChar *
+ xmlCharStrdup (const char *cur);
+ xmlChar *
+ xmlStrsub (const xmlChar *str,
+ int start,
+ int len);
+ const xmlChar *
+ xmlStrchr (const xmlChar *str,
+ xmlChar val);
+ const xmlChar *
+ xmlStrstr (const xmlChar *str,
+ const xmlChar *val);
+ const xmlChar *
+ xmlStrcasestr (const xmlChar *str,
+ const xmlChar *val);
+ int
+ xmlStrcmp (const xmlChar *str1,
+ const xmlChar *str2);
+ int
+ xmlStrncmp (const xmlChar *str1,
+ const xmlChar *str2,
+ int len);
+ int
+ xmlStrcasecmp (const xmlChar *str1,
+ const xmlChar *str2);
+ int
+ xmlStrncasecmp (const xmlChar *str1,
+ const xmlChar *str2,
+ int len);
+ int
+ xmlStrEqual (const xmlChar *str1,
+ const xmlChar *str2);
+ int
+ xmlStrQEqual (const xmlChar *pref,
+ const xmlChar *name,
+ const xmlChar *str);
+ int
+ xmlStrlen (const xmlChar *str);
+ xmlChar *
+ xmlStrcat (xmlChar *cur,
+ const xmlChar *add);
+ xmlChar *
+ xmlStrncat (xmlChar *cur,
+ const xmlChar *add,
+ int len);
+ xmlChar *
+ xmlStrncatNew (const xmlChar *str1,
+ const xmlChar *str2,
+ int len);
+ int
+ xmlStrPrintf (xmlChar *buf,
+ int len,
+ const xmlChar *msg,
+ ...);
+ int
+ xmlStrVPrintf (xmlChar *buf,
+ int len,
+ const xmlChar *msg,
+ va_list ap);
+ int
+ xmlGetUTF8Char (const unsigned char *utf,
+ int *len);
+ int
+ xmlCheckUTF8 (const unsigned char *utf);
+ int
+ xmlUTF8Strsize (const xmlChar *utf,
+ int len);
+ xmlChar *
+ xmlUTF8Strndup (const xmlChar *utf,
+ int len);
+ const xmlChar *
+ xmlUTF8Strpos (const xmlChar *utf,
+ int pos);
+ int
+ xmlUTF8Strloc (const xmlChar *utf,
+ const xmlChar *utfchar);
+ xmlChar *
+ xmlUTF8Strsub (const xmlChar *utf,
+ int start,
+ int len);
+ int
+ xmlUTF8Strlen (const xmlChar *utf);
+ int
+ xmlUTF8Size (const xmlChar *utf);
+ int
+ xmlUTF8Charcmp (const xmlChar *utf1,
+ const xmlChar *utf2);
+typedef struct _xmlParserInputBuffer xmlParserInputBuffer;
+typedef xmlParserInputBuffer *xmlParserInputBufferPtr;
+typedef struct _xmlOutputBuffer xmlOutputBuffer;
+typedef xmlOutputBuffer *xmlOutputBufferPtr;
+typedef struct _xmlParserInput xmlParserInput;
+typedef xmlParserInput *xmlParserInputPtr;
+typedef struct _xmlParserCtxt xmlParserCtxt;
+typedef xmlParserCtxt *xmlParserCtxtPtr;
+typedef struct _xmlSAXLocator xmlSAXLocator;
+typedef xmlSAXLocator *xmlSAXLocatorPtr;
+typedef struct _xmlSAXHandler xmlSAXHandler;
+typedef xmlSAXHandler *xmlSAXHandlerPtr;
+typedef struct _xmlEntity xmlEntity;
+typedef xmlEntity *xmlEntityPtr;
+typedef enum {
+ XML_BUFFER_ALLOC_DOUBLEIT,
+ XML_BUFFER_ALLOC_EXACT,
+ XML_BUFFER_ALLOC_IMMUTABLE,
+ XML_BUFFER_ALLOC_IO
+} xmlBufferAllocationScheme;
+typedef struct _xmlBuffer xmlBuffer;
+typedef xmlBuffer *xmlBufferPtr;
+struct _xmlBuffer {
+ xmlChar *content;
+ unsigned int use;
+ unsigned int size;
+ xmlBufferAllocationScheme alloc;
+ xmlChar *contentIO;
+};
+typedef enum {
+ XML_ELEMENT_NODE= 1,
+ XML_ATTRIBUTE_NODE= 2,
+ XML_TEXT_NODE= 3,
+ XML_CDATA_SECTION_NODE= 4,
+ XML_ENTITY_REF_NODE= 5,
+ XML_ENTITY_NODE= 6,
+ XML_PI_NODE= 7,
+ XML_COMMENT_NODE= 8,
+ XML_DOCUMENT_NODE= 9,
+ XML_DOCUMENT_TYPE_NODE= 10,
+ XML_DOCUMENT_FRAG_NODE= 11,
+ XML_NOTATION_NODE= 12,
+ XML_HTML_DOCUMENT_NODE= 13,
+ XML_DTD_NODE= 14,
+ XML_ELEMENT_DECL= 15,
+ XML_ATTRIBUTE_DECL= 16,
+ XML_ENTITY_DECL= 17,
+ XML_NAMESPACE_DECL= 18,
+ XML_XINCLUDE_START= 19,
+ XML_XINCLUDE_END= 20
+ ,XML_DOCB_DOCUMENT_NODE= 21
+} xmlElementType;
+typedef struct _xmlNotation xmlNotation;
+typedef xmlNotation *xmlNotationPtr;
+struct _xmlNotation {
+ const xmlChar *name;
+ const xmlChar *PublicID;
+ const xmlChar *SystemID;
+};
+typedef enum {
+ XML_ATTRIBUTE_CDATA = 1,
+ XML_ATTRIBUTE_ID,
+ XML_ATTRIBUTE_IDREF ,
+ XML_ATTRIBUTE_IDREFS,
+ XML_ATTRIBUTE_ENTITY,
+ XML_ATTRIBUTE_ENTITIES,
+ XML_ATTRIBUTE_NMTOKEN,
+ XML_ATTRIBUTE_NMTOKENS,
+ XML_ATTRIBUTE_ENUMERATION,
+ XML_ATTRIBUTE_NOTATION
+} xmlAttributeType;
+typedef enum {
+ XML_ATTRIBUTE_NONE = 1,
+ XML_ATTRIBUTE_REQUIRED,
+ XML_ATTRIBUTE_IMPLIED,
+ XML_ATTRIBUTE_FIXED
+} xmlAttributeDefault;
+typedef struct _xmlEnumeration xmlEnumeration;
+typedef xmlEnumeration *xmlEnumerationPtr;
+struct _xmlEnumeration {
+ struct _xmlEnumeration *next;
+ const xmlChar *name;
+};
+typedef struct _xmlAttribute xmlAttribute;
+typedef xmlAttribute *xmlAttributePtr;
+struct _xmlAttribute {
+ void *_private;
+ xmlElementType type;
+ const xmlChar *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlDtd *parent;
+ struct _xmlNode *next;
+ struct _xmlNode *prev;
+ struct _xmlDoc *doc;
+ struct _xmlAttribute *nexth;
+ xmlAttributeType atype;
+ xmlAttributeDefault def;
+ const xmlChar *defaultValue;
+ xmlEnumerationPtr tree;
+ const xmlChar *prefix;
+ const xmlChar *elem;
+};
+typedef enum {
+ XML_ELEMENT_CONTENT_PCDATA = 1,
+ XML_ELEMENT_CONTENT_ELEMENT,
+ XML_ELEMENT_CONTENT_SEQ,
+ XML_ELEMENT_CONTENT_OR
+} xmlElementContentType;
+typedef enum {
+ XML_ELEMENT_CONTENT_ONCE = 1,
+ XML_ELEMENT_CONTENT_OPT,
+ XML_ELEMENT_CONTENT_MULT,
+ XML_ELEMENT_CONTENT_PLUS
+} xmlElementContentOccur;
+typedef struct _xmlElementContent xmlElementContent;
+typedef xmlElementContent *xmlElementContentPtr;
+struct _xmlElementContent {
+ xmlElementContentType type;
+ xmlElementContentOccur ocur;
+ const xmlChar *name;
+ struct _xmlElementContent *c1;
+ struct _xmlElementContent *c2;
+ struct _xmlElementContent *parent;
+ const xmlChar *prefix;
+};
+typedef enum {
+ XML_ELEMENT_TYPE_UNDEFINED = 0,
+ XML_ELEMENT_TYPE_EMPTY = 1,
+ XML_ELEMENT_TYPE_ANY,
+ XML_ELEMENT_TYPE_MIXED,
+ XML_ELEMENT_TYPE_ELEMENT
+} xmlElementTypeVal;
+typedef struct _xmlRegexp xmlRegexp;
+typedef xmlRegexp *xmlRegexpPtr;
+typedef struct _xmlRegExecCtxt xmlRegExecCtxt;
+typedef xmlRegExecCtxt *xmlRegExecCtxtPtr;
+typedef struct _xmlDict xmlDict;
+typedef xmlDict *xmlDictPtr;
+ xmlDictPtr
+ xmlDictCreate (void);
+ xmlDictPtr
+ xmlDictCreateSub(xmlDictPtr sub);
+ int
+ xmlDictReference(xmlDictPtr dict);
+ void
+ xmlDictFree (xmlDictPtr dict);
+ const xmlChar *
+ xmlDictLookup (xmlDictPtr dict,
+ const xmlChar *name,
+ int len);
+ const xmlChar *
+ xmlDictExists (xmlDictPtr dict,
+ const xmlChar *name,
+ int len);
+ const xmlChar *
+ xmlDictQLookup (xmlDictPtr dict,
+ const xmlChar *prefix,
+ const xmlChar *name);
+ int
+ xmlDictOwns (xmlDictPtr dict,
+ const xmlChar *str);
+ int
+ xmlDictSize (xmlDictPtr dict);
+ void
+ xmlDictCleanup (void);
+ xmlRegexpPtr
+ xmlRegexpCompile (const xmlChar *regexp);
+ void xmlRegFreeRegexp(xmlRegexpPtr regexp);
+ int
+ xmlRegexpExec (xmlRegexpPtr comp,
+ const xmlChar *value);
+ void
+ xmlRegexpPrint (FILE *output,
+ xmlRegexpPtr regexp);
+ int
+ xmlRegexpIsDeterminist(xmlRegexpPtr comp);
+typedef void (*xmlRegExecCallbacks) (xmlRegExecCtxtPtr exec,
+ const xmlChar *token,
+ void *transdata,
+ void *inputdata);
+ xmlRegExecCtxtPtr
+ xmlRegNewExecCtxt (xmlRegexpPtr comp,
+ xmlRegExecCallbacks callback,
+ void *data);
+ void
+ xmlRegFreeExecCtxt (xmlRegExecCtxtPtr exec);
+ int
+ xmlRegExecPushString(xmlRegExecCtxtPtr exec,
+ const xmlChar *value,
+ void *data);
+ int
+ xmlRegExecPushString2(xmlRegExecCtxtPtr exec,
+ const xmlChar *value,
+ const xmlChar *value2,
+ void *data);
+ int
+ xmlRegExecNextValues(xmlRegExecCtxtPtr exec,
+ int *nbval,
+ int *nbneg,
+ xmlChar **values,
+ int *terminal);
+ int
+ xmlRegExecErrInfo (xmlRegExecCtxtPtr exec,
+ const xmlChar **string,
+ int *nbval,
+ int *nbneg,
+ xmlChar **values,
+ int *terminal);
+typedef struct _xmlExpCtxt xmlExpCtxt;
+typedef xmlExpCtxt *xmlExpCtxtPtr;
+ void
+ xmlExpFreeCtxt (xmlExpCtxtPtr ctxt);
+ xmlExpCtxtPtr
+ xmlExpNewCtxt (int maxNodes,
+ xmlDictPtr dict);
+ int
+ xmlExpCtxtNbNodes(xmlExpCtxtPtr ctxt);
+ int
+ xmlExpCtxtNbCons(xmlExpCtxtPtr ctxt);
+typedef struct _xmlExpNode xmlExpNode;
+typedef xmlExpNode *xmlExpNodePtr;
+typedef enum {
+ XML_EXP_EMPTY = 0,
+ XML_EXP_FORBID = 1,
+ XML_EXP_ATOM = 2,
+ XML_EXP_SEQ = 3,
+ XML_EXP_OR = 4,
+ XML_EXP_COUNT = 5
+} xmlExpNodeType;
+extern xmlExpNodePtr forbiddenExp;
+extern xmlExpNodePtr emptyExp;
+ void
+ xmlExpFree (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr expr);
+ void
+ xmlExpRef (xmlExpNodePtr expr);
+ xmlExpNodePtr
+ xmlExpParse (xmlExpCtxtPtr ctxt,
+ const char *expr);
+ xmlExpNodePtr
+ xmlExpNewAtom (xmlExpCtxtPtr ctxt,
+ const xmlChar *name,
+ int len);
+ xmlExpNodePtr
+ xmlExpNewOr (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr left,
+ xmlExpNodePtr right);
+ xmlExpNodePtr
+ xmlExpNewSeq (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr left,
+ xmlExpNodePtr right);
+ xmlExpNodePtr
+ xmlExpNewRange (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr subset,
+ int min,
+ int max);
+ int
+ xmlExpIsNillable(xmlExpNodePtr expr);
+ int
+ xmlExpMaxToken (xmlExpNodePtr expr);
+ int
+ xmlExpGetLanguage(xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr expr,
+ const xmlChar**langList,
+ int len);
+ int
+ xmlExpGetStart (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr expr,
+ const xmlChar**tokList,
+ int len);
+ xmlExpNodePtr
+ xmlExpStringDerive(xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr expr,
+ const xmlChar *str,
+ int len);
+ xmlExpNodePtr
+ xmlExpExpDerive (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr expr,
+ xmlExpNodePtr sub);
+ int
+ xmlExpSubsume (xmlExpCtxtPtr ctxt,
+ xmlExpNodePtr expr,
+ xmlExpNodePtr sub);
+ void
+ xmlExpDump (xmlBufferPtr buf,
+ xmlExpNodePtr expr);
+typedef struct _xmlElement xmlElement;
+typedef xmlElement *xmlElementPtr;
+struct _xmlElement {
+ void *_private;
+ xmlElementType type;
+ const xmlChar *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlDtd *parent;
+ struct _xmlNode *next;
+ struct _xmlNode *prev;
+ struct _xmlDoc *doc;
+ xmlElementTypeVal etype;
+ xmlElementContentPtr content;
+ xmlAttributePtr attributes;
+ const xmlChar *prefix;
+ xmlRegexpPtr contModel;
+};
+typedef xmlElementType xmlNsType;
+typedef struct _xmlNs xmlNs;
+typedef xmlNs *xmlNsPtr;
+struct _xmlNs {
+ struct _xmlNs *next;
+ xmlNsType type;
+ const xmlChar *href;
+ const xmlChar *prefix;
+ void *_private;
+ struct _xmlDoc *context;
+};
+typedef struct _xmlDtd xmlDtd;
+typedef xmlDtd *xmlDtdPtr;
+struct _xmlDtd {
+ void *_private;
+ xmlElementType type;
+ const xmlChar *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlDoc *parent;
+ struct _xmlNode *next;
+ struct _xmlNode *prev;
+ struct _xmlDoc *doc;
+ void *notations;
+ void *elements;
+ void *attributes;
+ void *entities;
+ const xmlChar *ExternalID;
+ const xmlChar *SystemID;
+ void *pentities;
+};
+typedef struct _xmlAttr xmlAttr;
+typedef xmlAttr *xmlAttrPtr;
+struct _xmlAttr {
+ void *_private;
+ xmlElementType type;
+ const xmlChar *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlNode *parent;
+ struct _xmlAttr *next;
+ struct _xmlAttr *prev;
+ struct _xmlDoc *doc;
+ xmlNs *ns;
+ xmlAttributeType atype;
+ void *psvi;
+};
+typedef struct _xmlID xmlID;
+typedef xmlID *xmlIDPtr;
+struct _xmlID {
+ struct _xmlID *next;
+ const xmlChar *value;
+ xmlAttrPtr attr;
+ const xmlChar *name;
+ int lineno;
+ struct _xmlDoc *doc;
+};
+typedef struct _xmlRef xmlRef;
+typedef xmlRef *xmlRefPtr;
+struct _xmlRef {
+ struct _xmlRef *next;
+ const xmlChar *value;
+ xmlAttrPtr attr;
+ const xmlChar *name;
+ int lineno;
+};
+typedef struct _xmlNode xmlNode;
+typedef xmlNode *xmlNodePtr;
+struct _xmlNode {
+ void *_private;
+ xmlElementType type;
+ const xmlChar *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlNode *parent;
+ struct _xmlNode *next;
+ struct _xmlNode *prev;
+ struct _xmlDoc *doc;
+ xmlNs *ns;
+ xmlChar *content;
+ struct _xmlAttr *properties;
+ xmlNs *nsDef;
+ void *psvi;
+ unsigned short line;
+ unsigned short extra;
+};
+typedef enum {
+ XML_DOC_WELLFORMED = 1<<0,
+ XML_DOC_NSVALID = 1<<1,
+ XML_DOC_OLD10 = 1<<2,
+ XML_DOC_DTDVALID = 1<<3,
+ XML_DOC_XINCLUDE = 1<<4,
+ XML_DOC_USERBUILT = 1<<5,
+ XML_DOC_INTERNAL = 1<<6,
+ XML_DOC_HTML = 1<<7
+} xmlDocProperties;
+typedef struct _xmlDoc xmlDoc;
+typedef xmlDoc *xmlDocPtr;
+struct _xmlDoc {
+ void *_private;
+ xmlElementType type;
+ char *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlNode *parent;
+ struct _xmlNode *next;
+ struct _xmlNode *prev;
+ struct _xmlDoc *doc;
+ int compression;
+ int standalone;
+ struct _xmlDtd *intSubset;
+ struct _xmlDtd *extSubset;
+ struct _xmlNs *oldNs;
+ const xmlChar *version;
+ const xmlChar *encoding;
+ void *ids;
+ void *refs;
+ const xmlChar *URL;
+ int charset;
+ struct _xmlDict *dict;
+ void *psvi;
+ int parseFlags;
+ int properties;
+};
+typedef struct _xmlDOMWrapCtxt xmlDOMWrapCtxt;
+typedef xmlDOMWrapCtxt *xmlDOMWrapCtxtPtr;
+typedef xmlNsPtr (*xmlDOMWrapAcquireNsFunction) (xmlDOMWrapCtxtPtr ctxt,
+ xmlNodePtr node,
+ const xmlChar *nsName,
+ const xmlChar *nsPrefix);
+struct _xmlDOMWrapCtxt {
+ void * _private;
+ int type;
+ void * namespaceMap;
+ xmlDOMWrapAcquireNsFunction getNsForNodeFunc;
+};
+ int
+ xmlValidateNCName (const xmlChar *value,
+ int space);
+ int
+ xmlValidateQName (const xmlChar *value,
+ int space);
+ int
+ xmlValidateName (const xmlChar *value,
+ int space);
+ int
+ xmlValidateNMToken (const xmlChar *value,
+ int space);
+ xmlChar *
+ xmlBuildQName (const xmlChar *ncname,
+ const xmlChar *prefix,
+ xmlChar *memory,
+ int len);
+ xmlChar *
+ xmlSplitQName2 (const xmlChar *name,
+ xmlChar **prefix);
+ const xmlChar *
+ xmlSplitQName3 (const xmlChar *name,
+ int *len);
+ void
+ xmlSetBufferAllocationScheme(xmlBufferAllocationScheme scheme);
+ xmlBufferAllocationScheme
+ xmlGetBufferAllocationScheme(void);
+ xmlBufferPtr
+ xmlBufferCreate (void);
+ xmlBufferPtr
+ xmlBufferCreateSize (size_t size);
+ xmlBufferPtr
+ xmlBufferCreateStatic (void *mem,
+ size_t size);
+ int
+ xmlBufferResize (xmlBufferPtr buf,
+ unsigned int size);
+ void
+ xmlBufferFree (xmlBufferPtr buf);
+ int
+ xmlBufferDump (FILE *file,
+ xmlBufferPtr buf);
+ int
+ xmlBufferAdd (xmlBufferPtr buf,
+ const xmlChar *str,
+ int len);
+ int
+ xmlBufferAddHead (xmlBufferPtr buf,
+ const xmlChar *str,
+ int len);
+ int
+ xmlBufferCat (xmlBufferPtr buf,
+ const xmlChar *str);
+ int
+ xmlBufferCCat (xmlBufferPtr buf,
+ const char *str);
+ int
+ xmlBufferShrink (xmlBufferPtr buf,
+ unsigned int len);
+ int
+ xmlBufferGrow (xmlBufferPtr buf,
+ unsigned int len);
+ void
+ xmlBufferEmpty (xmlBufferPtr buf);
+ const xmlChar*
+ xmlBufferContent (const xmlBufferPtr buf);
+ void
+ xmlBufferSetAllocationScheme(xmlBufferPtr buf,
+ xmlBufferAllocationScheme scheme);
+ int
+ xmlBufferLength (const xmlBufferPtr buf);
+ xmlDtdPtr
+ xmlCreateIntSubset (xmlDocPtr doc,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ xmlDtdPtr
+ xmlNewDtd (xmlDocPtr doc,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ xmlDtdPtr
+ xmlGetIntSubset (xmlDocPtr doc);
+ void
+ xmlFreeDtd (xmlDtdPtr cur);
+ xmlNsPtr
+ xmlNewGlobalNs (xmlDocPtr doc,
+ const xmlChar *href,
+ const xmlChar *prefix);
+ xmlNsPtr
+ xmlNewNs (xmlNodePtr node,
+ const xmlChar *href,
+ const xmlChar *prefix);
+ void
+ xmlFreeNs (xmlNsPtr cur);
+ void
+ xmlFreeNsList (xmlNsPtr cur);
+ xmlDocPtr
+ xmlNewDoc (const xmlChar *version);
+ void
+ xmlFreeDoc (xmlDocPtr cur);
+ xmlAttrPtr
+ xmlNewDocProp (xmlDocPtr doc,
+ const xmlChar *name,
+ const xmlChar *value);
+ xmlAttrPtr
+ xmlNewProp (xmlNodePtr node,
+ const xmlChar *name,
+ const xmlChar *value);
+ xmlAttrPtr
+ xmlNewNsProp (xmlNodePtr node,
+ xmlNsPtr ns,
+ const xmlChar *name,
+ const xmlChar *value);
+ xmlAttrPtr
+ xmlNewNsPropEatName (xmlNodePtr node,
+ xmlNsPtr ns,
+ xmlChar *name,
+ const xmlChar *value);
+ void
+ xmlFreePropList (xmlAttrPtr cur);
+ void
+ xmlFreeProp (xmlAttrPtr cur);
+ xmlAttrPtr
+ xmlCopyProp (xmlNodePtr target,
+ xmlAttrPtr cur);
+ xmlAttrPtr
+ xmlCopyPropList (xmlNodePtr target,
+ xmlAttrPtr cur);
+ xmlDtdPtr
+ xmlCopyDtd (xmlDtdPtr dtd);
+ xmlDocPtr
+ xmlCopyDoc (xmlDocPtr doc,
+ int recursive);
+ xmlNodePtr
+ xmlNewDocNode (xmlDocPtr doc,
+ xmlNsPtr ns,
+ const xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewDocNodeEatName (xmlDocPtr doc,
+ xmlNsPtr ns,
+ xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewNode (xmlNsPtr ns,
+ const xmlChar *name);
+ xmlNodePtr
+ xmlNewNodeEatName (xmlNsPtr ns,
+ xmlChar *name);
+ xmlNodePtr
+ xmlNewChild (xmlNodePtr parent,
+ xmlNsPtr ns,
+ const xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewDocText (xmlDocPtr doc,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewText (const xmlChar *content);
+ xmlNodePtr
+ xmlNewDocPI (xmlDocPtr doc,
+ const xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewPI (const xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewDocTextLen (xmlDocPtr doc,
+ const xmlChar *content,
+ int len);
+ xmlNodePtr
+ xmlNewTextLen (const xmlChar *content,
+ int len);
+ xmlNodePtr
+ xmlNewDocComment (xmlDocPtr doc,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewComment (const xmlChar *content);
+ xmlNodePtr
+ xmlNewCDataBlock (xmlDocPtr doc,
+ const xmlChar *content,
+ int len);
+ xmlNodePtr
+ xmlNewCharRef (xmlDocPtr doc,
+ const xmlChar *name);
+ xmlNodePtr
+ xmlNewReference (xmlDocPtr doc,
+ const xmlChar *name);
+ xmlNodePtr
+ xmlCopyNode (const xmlNodePtr node,
+ int recursive);
+ xmlNodePtr
+ xmlDocCopyNode (const xmlNodePtr node,
+ xmlDocPtr doc,
+ int recursive);
+ xmlNodePtr
+ xmlDocCopyNodeList (xmlDocPtr doc,
+ const xmlNodePtr node);
+ xmlNodePtr
+ xmlCopyNodeList (const xmlNodePtr node);
+ xmlNodePtr
+ xmlNewTextChild (xmlNodePtr parent,
+ xmlNsPtr ns,
+ const xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewDocRawNode (xmlDocPtr doc,
+ xmlNsPtr ns,
+ const xmlChar *name,
+ const xmlChar *content);
+ xmlNodePtr
+ xmlNewDocFragment (xmlDocPtr doc);
+ long
+ xmlGetLineNo (xmlNodePtr node);
+ xmlChar *
+ xmlGetNodePath (xmlNodePtr node);
+ xmlNodePtr
+ xmlDocGetRootElement (xmlDocPtr doc);
+ xmlNodePtr
+ xmlGetLastChild (xmlNodePtr parent);
+ int
+ xmlNodeIsText (xmlNodePtr node);
+ int
+ xmlIsBlankNode (xmlNodePtr node);
+ xmlNodePtr
+ xmlDocSetRootElement (xmlDocPtr doc,
+ xmlNodePtr root);
+ void
+ xmlNodeSetName (xmlNodePtr cur,
+ const xmlChar *name);
+ xmlNodePtr
+ xmlAddChild (xmlNodePtr parent,
+ xmlNodePtr cur);
+ xmlNodePtr
+ xmlAddChildList (xmlNodePtr parent,
+ xmlNodePtr cur);
+ xmlNodePtr
+ xmlReplaceNode (xmlNodePtr old,
+ xmlNodePtr cur);
+ xmlNodePtr
+ xmlAddPrevSibling (xmlNodePtr cur,
+ xmlNodePtr elem);
+ xmlNodePtr
+ xmlAddSibling (xmlNodePtr cur,
+ xmlNodePtr elem);
+ xmlNodePtr
+ xmlAddNextSibling (xmlNodePtr cur,
+ xmlNodePtr elem);
+ void
+ xmlUnlinkNode (xmlNodePtr cur);
+ xmlNodePtr
+ xmlTextMerge (xmlNodePtr first,
+ xmlNodePtr second);
+ int
+ xmlTextConcat (xmlNodePtr node,
+ const xmlChar *content,
+ int len);
+ void
+ xmlFreeNodeList (xmlNodePtr cur);
+ void
+ xmlFreeNode (xmlNodePtr cur);
+ void
+ xmlSetTreeDoc (xmlNodePtr tree,
+ xmlDocPtr doc);
+ void
+ xmlSetListDoc (xmlNodePtr list,
+ xmlDocPtr doc);
+ xmlNsPtr
+ xmlSearchNs (xmlDocPtr doc,
+ xmlNodePtr node,
+ const xmlChar *nameSpace);
+ xmlNsPtr
+ xmlSearchNsByHref (xmlDocPtr doc,
+ xmlNodePtr node,
+ const xmlChar *href);
+ xmlNsPtr *
+ xmlGetNsList (xmlDocPtr doc,
+ xmlNodePtr node);
+ void
+ xmlSetNs (xmlNodePtr node,
+ xmlNsPtr ns);
+ xmlNsPtr
+ xmlCopyNamespace (xmlNsPtr cur);
+ xmlNsPtr
+ xmlCopyNamespaceList (xmlNsPtr cur);
+ xmlAttrPtr
+ xmlSetProp (xmlNodePtr node,
+ const xmlChar *name,
+ const xmlChar *value);
+ xmlAttrPtr
+ xmlSetNsProp (xmlNodePtr node,
+ xmlNsPtr ns,
+ const xmlChar *name,
+ const xmlChar *value);
+ xmlChar *
+ xmlGetNoNsProp (xmlNodePtr node,
+ const xmlChar *name);
+ xmlChar *
+ xmlGetProp (xmlNodePtr node,
+ const xmlChar *name);
+ xmlAttrPtr
+ xmlHasProp (xmlNodePtr node,
+ const xmlChar *name);
+ xmlAttrPtr
+ xmlHasNsProp (xmlNodePtr node,
+ const xmlChar *name,
+ const xmlChar *nameSpace);
+ xmlChar *
+ xmlGetNsProp (xmlNodePtr node,
+ const xmlChar *name,
+ const xmlChar *nameSpace);
+ xmlNodePtr
+ xmlStringGetNodeList (xmlDocPtr doc,
+ const xmlChar *value);
+ xmlNodePtr
+ xmlStringLenGetNodeList (xmlDocPtr doc,
+ const xmlChar *value,
+ int len);
+ xmlChar *
+ xmlNodeListGetString (xmlDocPtr doc,
+ xmlNodePtr list,
+ int inLine);
+ xmlChar *
+ xmlNodeListGetRawString (xmlDocPtr doc,
+ xmlNodePtr list,
+ int inLine);
+ void
+ xmlNodeSetContent (xmlNodePtr cur,
+ const xmlChar *content);
+ void
+ xmlNodeSetContentLen (xmlNodePtr cur,
+ const xmlChar *content,
+ int len);
+ void
+ xmlNodeAddContent (xmlNodePtr cur,
+ const xmlChar *content);
+ void
+ xmlNodeAddContentLen (xmlNodePtr cur,
+ const xmlChar *content,
+ int len);
+ xmlChar *
+ xmlNodeGetContent (xmlNodePtr cur);
+ int
+ xmlNodeBufGetContent (xmlBufferPtr buffer,
+ xmlNodePtr cur);
+ xmlChar *
+ xmlNodeGetLang (xmlNodePtr cur);
+ int
+ xmlNodeGetSpacePreserve (xmlNodePtr cur);
+ void
+ xmlNodeSetLang (xmlNodePtr cur,
+ const xmlChar *lang);
+ void
+ xmlNodeSetSpacePreserve (xmlNodePtr cur,
+ int val);
+ xmlChar *
+ xmlNodeGetBase (xmlDocPtr doc,
+ xmlNodePtr cur);
+ void
+ xmlNodeSetBase (xmlNodePtr cur,
+ const xmlChar *uri);
+ int
+ xmlRemoveProp (xmlAttrPtr cur);
+ int
+ xmlUnsetNsProp (xmlNodePtr node,
+ xmlNsPtr ns,
+ const xmlChar *name);
+ int
+ xmlUnsetProp (xmlNodePtr node,
+ const xmlChar *name);
+ void
+ xmlBufferWriteCHAR (xmlBufferPtr buf,
+ const xmlChar *string);
+ void
+ xmlBufferWriteChar (xmlBufferPtr buf,
+ const char *string);
+ void
+ xmlBufferWriteQuotedString(xmlBufferPtr buf,
+ const xmlChar *string);
+ void xmlAttrSerializeTxtContent(xmlBufferPtr buf,
+ xmlDocPtr doc,
+ xmlAttrPtr attr,
+ const xmlChar *string);
+ int
+ xmlReconciliateNs (xmlDocPtr doc,
+ xmlNodePtr tree);
+ void
+ xmlDocDumpFormatMemory (xmlDocPtr cur,
+ xmlChar **mem,
+ int *size,
+ int format);
+ void
+ xmlDocDumpMemory (xmlDocPtr cur,
+ xmlChar **mem,
+ int *size);
+ void
+ xmlDocDumpMemoryEnc (xmlDocPtr out_doc,
+ xmlChar **doc_txt_ptr,
+ int * doc_txt_len,
+ const char *txt_encoding);
+ void
+ xmlDocDumpFormatMemoryEnc(xmlDocPtr out_doc,
+ xmlChar **doc_txt_ptr,
+ int * doc_txt_len,
+ const char *txt_encoding,
+ int format);
+ int
+ xmlDocFormatDump (FILE *f,
+ xmlDocPtr cur,
+ int format);
+ int
+ xmlDocDump (FILE *f,
+ xmlDocPtr cur);
+ void
+ xmlElemDump (FILE *f,
+ xmlDocPtr doc,
+ xmlNodePtr cur);
+ int
+ xmlSaveFile (const char *filename,
+ xmlDocPtr cur);
+ int
+ xmlSaveFormatFile (const char *filename,
+ xmlDocPtr cur,
+ int format);
+ int
+ xmlNodeDump (xmlBufferPtr buf,
+ xmlDocPtr doc,
+ xmlNodePtr cur,
+ int level,
+ int format);
+ int
+ xmlSaveFileTo (xmlOutputBufferPtr buf,
+ xmlDocPtr cur,
+ const char *encoding);
+ int
+ xmlSaveFormatFileTo (xmlOutputBufferPtr buf,
+ xmlDocPtr cur,
+ const char *encoding,
+ int format);
+ void
+ xmlNodeDumpOutput (xmlOutputBufferPtr buf,
+ xmlDocPtr doc,
+ xmlNodePtr cur,
+ int level,
+ int format,
+ const char *encoding);
+ int
+ xmlSaveFormatFileEnc (const char *filename,
+ xmlDocPtr cur,
+ const char *encoding,
+ int format);
+ int
+ xmlSaveFileEnc (const char *filename,
+ xmlDocPtr cur,
+ const char *encoding);
+ int
+ xmlIsXHTML (const xmlChar *systemID,
+ const xmlChar *publicID);
+ int
+ xmlGetDocCompressMode (xmlDocPtr doc);
+ void
+ xmlSetDocCompressMode (xmlDocPtr doc,
+ int mode);
+ int
+ xmlGetCompressMode (void);
+ void
+ xmlSetCompressMode (int mode);
+ xmlDOMWrapCtxtPtr
+ xmlDOMWrapNewCtxt (void);
+ void
+ xmlDOMWrapFreeCtxt (xmlDOMWrapCtxtPtr ctxt);
+ int
+ xmlDOMWrapReconcileNamespaces(xmlDOMWrapCtxtPtr ctxt,
+ xmlNodePtr elem,
+ int options);
+ int
+ xmlDOMWrapAdoptNode (xmlDOMWrapCtxtPtr ctxt,
+ xmlDocPtr sourceDoc,
+ xmlNodePtr node,
+ xmlDocPtr destDoc,
+ xmlNodePtr destParent,
+ int options);
+ int
+ xmlDOMWrapRemoveNode (xmlDOMWrapCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr node,
+ int options);
+ int
+ xmlDOMWrapCloneNode (xmlDOMWrapCtxtPtr ctxt,
+ xmlDocPtr sourceDoc,
+ xmlNodePtr node,
+ xmlNodePtr *clonedNode,
+ xmlDocPtr destDoc,
+ xmlNodePtr destParent,
+ int deep,
+ int options);
+ unsigned long
+ xmlChildElementCount (xmlNodePtr parent);
+ xmlNodePtr
+ xmlNextElementSibling (xmlNodePtr node);
+ xmlNodePtr
+ xmlFirstElementChild (xmlNodePtr parent);
+ xmlNodePtr
+ xmlLastElementChild (xmlNodePtr parent);
+ xmlNodePtr
+ xmlPreviousElementSibling (xmlNodePtr node);
+typedef struct _xmlHashTable xmlHashTable;
+typedef xmlHashTable *xmlHashTablePtr;
+typedef void (*xmlHashDeallocator)(void *payload, xmlChar *name);
+typedef void *(*xmlHashCopier)(void *payload, xmlChar *name);
+typedef void (*xmlHashScanner)(void *payload, void *data, xmlChar *name);
+typedef void (*xmlHashScannerFull)(void *payload, void *data,
+ const xmlChar *name, const xmlChar *name2,
+ const xmlChar *name3);
+ xmlHashTablePtr
+ xmlHashCreate (int size);
+ xmlHashTablePtr
+ xmlHashCreateDict(int size,
+ xmlDictPtr dict);
+ void
+ xmlHashFree (xmlHashTablePtr table,
+ xmlHashDeallocator f);
+ int
+ xmlHashAddEntry (xmlHashTablePtr table,
+ const xmlChar *name,
+ void *userdata);
+ int
+ xmlHashUpdateEntry(xmlHashTablePtr table,
+ const xmlChar *name,
+ void *userdata,
+ xmlHashDeallocator f);
+ int
+ xmlHashAddEntry2(xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ void *userdata);
+ int
+ xmlHashUpdateEntry2(xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ void *userdata,
+ xmlHashDeallocator f);
+ int
+ xmlHashAddEntry3(xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ const xmlChar *name3,
+ void *userdata);
+ int
+ xmlHashUpdateEntry3(xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ const xmlChar *name3,
+ void *userdata,
+ xmlHashDeallocator f);
+ int
+ xmlHashRemoveEntry(xmlHashTablePtr table, const xmlChar *name,
+ xmlHashDeallocator f);
+ int
+ xmlHashRemoveEntry2(xmlHashTablePtr table, const xmlChar *name,
+ const xmlChar *name2, xmlHashDeallocator f);
+ int
+ xmlHashRemoveEntry3(xmlHashTablePtr table, const xmlChar *name,
+ const xmlChar *name2, const xmlChar *name3,
+ xmlHashDeallocator f);
+ void *
+ xmlHashLookup (xmlHashTablePtr table,
+ const xmlChar *name);
+ void *
+ xmlHashLookup2 (xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2);
+ void *
+ xmlHashLookup3 (xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ const xmlChar *name3);
+ void *
+ xmlHashQLookup (xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *prefix);
+ void *
+ xmlHashQLookup2 (xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *prefix,
+ const xmlChar *name2,
+ const xmlChar *prefix2);
+ void *
+ xmlHashQLookup3 (xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *prefix,
+ const xmlChar *name2,
+ const xmlChar *prefix2,
+ const xmlChar *name3,
+ const xmlChar *prefix3);
+ xmlHashTablePtr
+ xmlHashCopy (xmlHashTablePtr table,
+ xmlHashCopier f);
+ int
+ xmlHashSize (xmlHashTablePtr table);
+ void
+ xmlHashScan (xmlHashTablePtr table,
+ xmlHashScanner f,
+ void *data);
+ void
+ xmlHashScan3 (xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ const xmlChar *name3,
+ xmlHashScanner f,
+ void *data);
+ void
+ xmlHashScanFull (xmlHashTablePtr table,
+ xmlHashScannerFull f,
+ void *data);
+ void
+ xmlHashScanFull3(xmlHashTablePtr table,
+ const xmlChar *name,
+ const xmlChar *name2,
+ const xmlChar *name3,
+ xmlHashScannerFull f,
+ void *data);
+typedef enum {
+ XML_ERR_NONE = 0,
+ XML_ERR_WARNING = 1,
+ XML_ERR_ERROR = 2,
+ XML_ERR_FATAL = 3
+} xmlErrorLevel;
+typedef enum {
+ XML_FROM_NONE = 0,
+ XML_FROM_PARSER,
+ XML_FROM_TREE,
+ XML_FROM_NAMESPACE,
+ XML_FROM_DTD,
+ XML_FROM_HTML,
+ XML_FROM_MEMORY,
+ XML_FROM_OUTPUT,
+ XML_FROM_IO,
+ XML_FROM_FTP,
+ XML_FROM_HTTP,
+ XML_FROM_XINCLUDE,
+ XML_FROM_XPATH,
+ XML_FROM_XPOINTER,
+ XML_FROM_REGEXP,
+ XML_FROM_DATATYPE,
+ XML_FROM_SCHEMASP,
+ XML_FROM_SCHEMASV,
+ XML_FROM_RELAXNGP,
+ XML_FROM_RELAXNGV,
+ XML_FROM_CATALOG,
+ XML_FROM_C14N,
+ XML_FROM_XSLT,
+ XML_FROM_VALID,
+ XML_FROM_CHECK,
+ XML_FROM_WRITER,
+ XML_FROM_MODULE,
+ XML_FROM_I18N,
+ XML_FROM_SCHEMATRONV
+} xmlErrorDomain;
+typedef struct _xmlError xmlError;
+typedef xmlError *xmlErrorPtr;
+struct _xmlError {
+ int domain;
+ int code;
+ char *message;
+ xmlErrorLevel level;
+ char *file;
+ int line;
+ char *str1;
+ char *str2;
+ char *str3;
+ int int1;
+ int int2;
+ void *ctxt;
+ void *node;
+};
+typedef enum {
+ XML_ERR_OK = 0,
+ XML_ERR_INTERNAL_ERROR,
+ XML_ERR_NO_MEMORY,
+ XML_ERR_DOCUMENT_START,
+ XML_ERR_DOCUMENT_EMPTY,
+ XML_ERR_DOCUMENT_END,
+ XML_ERR_INVALID_HEX_CHARREF,
+ XML_ERR_INVALID_DEC_CHARREF,
+ XML_ERR_INVALID_CHARREF,
+ XML_ERR_INVALID_CHAR,
+ XML_ERR_CHARREF_AT_EOF,
+ XML_ERR_CHARREF_IN_PROLOG,
+ XML_ERR_CHARREF_IN_EPILOG,
+ XML_ERR_CHARREF_IN_DTD,
+ XML_ERR_ENTITYREF_AT_EOF,
+ XML_ERR_ENTITYREF_IN_PROLOG,
+ XML_ERR_ENTITYREF_IN_EPILOG,
+ XML_ERR_ENTITYREF_IN_DTD,
+ XML_ERR_PEREF_AT_EOF,
+ XML_ERR_PEREF_IN_PROLOG,
+ XML_ERR_PEREF_IN_EPILOG,
+ XML_ERR_PEREF_IN_INT_SUBSET,
+ XML_ERR_ENTITYREF_NO_NAME,
+ XML_ERR_ENTITYREF_SEMICOL_MISSING,
+ XML_ERR_PEREF_NO_NAME,
+ XML_ERR_PEREF_SEMICOL_MISSING,
+ XML_ERR_UNDECLARED_ENTITY,
+ XML_WAR_UNDECLARED_ENTITY,
+ XML_ERR_UNPARSED_ENTITY,
+ XML_ERR_ENTITY_IS_EXTERNAL,
+ XML_ERR_ENTITY_IS_PARAMETER,
+ XML_ERR_UNKNOWN_ENCODING,
+ XML_ERR_UNSUPPORTED_ENCODING,
+ XML_ERR_STRING_NOT_STARTED,
+ XML_ERR_STRING_NOT_CLOSED,
+ XML_ERR_NS_DECL_ERROR,
+ XML_ERR_ENTITY_NOT_STARTED,
+ XML_ERR_ENTITY_NOT_FINISHED,
+ XML_ERR_LT_IN_ATTRIBUTE,
+ XML_ERR_ATTRIBUTE_NOT_STARTED,
+ XML_ERR_ATTRIBUTE_NOT_FINISHED,
+ XML_ERR_ATTRIBUTE_WITHOUT_VALUE,
+ XML_ERR_ATTRIBUTE_REDEFINED,
+ XML_ERR_LITERAL_NOT_STARTED,
+ XML_ERR_LITERAL_NOT_FINISHED,
+ XML_ERR_COMMENT_NOT_FINISHED,
+ XML_ERR_PI_NOT_STARTED,
+ XML_ERR_PI_NOT_FINISHED,
+ XML_ERR_NOTATION_NOT_STARTED,
+ XML_ERR_NOTATION_NOT_FINISHED,
+ XML_ERR_ATTLIST_NOT_STARTED,
+ XML_ERR_ATTLIST_NOT_FINISHED,
+ XML_ERR_MIXED_NOT_STARTED,
+ XML_ERR_MIXED_NOT_FINISHED,
+ XML_ERR_ELEMCONTENT_NOT_STARTED,
+ XML_ERR_ELEMCONTENT_NOT_FINISHED,
+ XML_ERR_XMLDECL_NOT_STARTED,
+ XML_ERR_XMLDECL_NOT_FINISHED,
+ XML_ERR_CONDSEC_NOT_STARTED,
+ XML_ERR_CONDSEC_NOT_FINISHED,
+ XML_ERR_EXT_SUBSET_NOT_FINISHED,
+ XML_ERR_DOCTYPE_NOT_FINISHED,
+ XML_ERR_MISPLACED_CDATA_END,
+ XML_ERR_CDATA_NOT_FINISHED,
+ XML_ERR_RESERVED_XML_NAME,
+ XML_ERR_SPACE_REQUIRED,
+ XML_ERR_SEPARATOR_REQUIRED,
+ XML_ERR_NMTOKEN_REQUIRED,
+ XML_ERR_NAME_REQUIRED,
+ XML_ERR_PCDATA_REQUIRED,
+ XML_ERR_URI_REQUIRED,
+ XML_ERR_PUBID_REQUIRED,
+ XML_ERR_LT_REQUIRED,
+ XML_ERR_GT_REQUIRED,
+ XML_ERR_LTSLASH_REQUIRED,
+ XML_ERR_EQUAL_REQUIRED,
+ XML_ERR_TAG_NAME_MISMATCH,
+ XML_ERR_TAG_NOT_FINISHED,
+ XML_ERR_STANDALONE_VALUE,
+ XML_ERR_ENCODING_NAME,
+ XML_ERR_HYPHEN_IN_COMMENT,
+ XML_ERR_INVALID_ENCODING,
+ XML_ERR_EXT_ENTITY_STANDALONE,
+ XML_ERR_CONDSEC_INVALID,
+ XML_ERR_VALUE_REQUIRED,
+ XML_ERR_NOT_WELL_BALANCED,
+ XML_ERR_EXTRA_CONTENT,
+ XML_ERR_ENTITY_CHAR_ERROR,
+ XML_ERR_ENTITY_PE_INTERNAL,
+ XML_ERR_ENTITY_LOOP,
+ XML_ERR_ENTITY_BOUNDARY,
+ XML_ERR_INVALID_URI,
+ XML_ERR_URI_FRAGMENT,
+ XML_WAR_CATALOG_PI,
+ XML_ERR_NO_DTD,
+ XML_ERR_CONDSEC_INVALID_KEYWORD,
+ XML_ERR_VERSION_MISSING,
+ XML_WAR_UNKNOWN_VERSION,
+ XML_WAR_LANG_VALUE,
+ XML_WAR_NS_URI,
+ XML_WAR_NS_URI_RELATIVE,
+ XML_ERR_MISSING_ENCODING,
+ XML_WAR_SPACE_VALUE,
+ XML_ERR_NOT_STANDALONE,
+ XML_ERR_ENTITY_PROCESSING,
+ XML_ERR_NOTATION_PROCESSING,
+ XML_WAR_NS_COLUMN,
+ XML_WAR_ENTITY_REDEFINED,
+ XML_ERR_UNKNOWN_VERSION,
+ XML_ERR_VERSION_MISMATCH,
+ XML_NS_ERR_XML_NAMESPACE = 200,
+ XML_NS_ERR_UNDEFINED_NAMESPACE,
+ XML_NS_ERR_QNAME,
+ XML_NS_ERR_ATTRIBUTE_REDEFINED,
+ XML_NS_ERR_EMPTY,
+ XML_NS_ERR_COLON,
+ XML_DTD_ATTRIBUTE_DEFAULT = 500,
+ XML_DTD_ATTRIBUTE_REDEFINED,
+ XML_DTD_ATTRIBUTE_VALUE,
+ XML_DTD_CONTENT_ERROR,
+ XML_DTD_CONTENT_MODEL,
+ XML_DTD_CONTENT_NOT_DETERMINIST,
+ XML_DTD_DIFFERENT_PREFIX,
+ XML_DTD_ELEM_DEFAULT_NAMESPACE,
+ XML_DTD_ELEM_NAMESPACE,
+ XML_DTD_ELEM_REDEFINED,
+ XML_DTD_EMPTY_NOTATION,
+ XML_DTD_ENTITY_TYPE,
+ XML_DTD_ID_FIXED,
+ XML_DTD_ID_REDEFINED,
+ XML_DTD_ID_SUBSET,
+ XML_DTD_INVALID_CHILD,
+ XML_DTD_INVALID_DEFAULT,
+ XML_DTD_LOAD_ERROR,
+ XML_DTD_MISSING_ATTRIBUTE,
+ XML_DTD_MIXED_CORRUPT,
+ XML_DTD_MULTIPLE_ID,
+ XML_DTD_NO_DOC,
+ XML_DTD_NO_DTD,
+ XML_DTD_NO_ELEM_NAME,
+ XML_DTD_NO_PREFIX,
+ XML_DTD_NO_ROOT,
+ XML_DTD_NOTATION_REDEFINED,
+ XML_DTD_NOTATION_VALUE,
+ XML_DTD_NOT_EMPTY,
+ XML_DTD_NOT_PCDATA,
+ XML_DTD_NOT_STANDALONE,
+ XML_DTD_ROOT_NAME,
+ XML_DTD_STANDALONE_WHITE_SPACE,
+ XML_DTD_UNKNOWN_ATTRIBUTE,
+ XML_DTD_UNKNOWN_ELEM,
+ XML_DTD_UNKNOWN_ENTITY,
+ XML_DTD_UNKNOWN_ID,
+ XML_DTD_UNKNOWN_NOTATION,
+ XML_DTD_STANDALONE_DEFAULTED,
+ XML_DTD_XMLID_VALUE,
+ XML_DTD_XMLID_TYPE,
+ XML_DTD_DUP_TOKEN,
+ XML_HTML_STRUCURE_ERROR = 800,
+ XML_HTML_UNKNOWN_TAG,
+ XML_RNGP_ANYNAME_ATTR_ANCESTOR = 1000,
+ XML_RNGP_ATTR_CONFLICT,
+ XML_RNGP_ATTRIBUTE_CHILDREN,
+ XML_RNGP_ATTRIBUTE_CONTENT,
+ XML_RNGP_ATTRIBUTE_EMPTY,
+ XML_RNGP_ATTRIBUTE_NOOP,
+ XML_RNGP_CHOICE_CONTENT,
+ XML_RNGP_CHOICE_EMPTY,
+ XML_RNGP_CREATE_FAILURE,
+ XML_RNGP_DATA_CONTENT,
+ XML_RNGP_DEF_CHOICE_AND_INTERLEAVE,
+ XML_RNGP_DEFINE_CREATE_FAILED,
+ XML_RNGP_DEFINE_EMPTY,
+ XML_RNGP_DEFINE_MISSING,
+ XML_RNGP_DEFINE_NAME_MISSING,
+ XML_RNGP_ELEM_CONTENT_EMPTY,
+ XML_RNGP_ELEM_CONTENT_ERROR,
+ XML_RNGP_ELEMENT_EMPTY,
+ XML_RNGP_ELEMENT_CONTENT,
+ XML_RNGP_ELEMENT_NAME,
+ XML_RNGP_ELEMENT_NO_CONTENT,
+ XML_RNGP_ELEM_TEXT_CONFLICT,
+ XML_RNGP_EMPTY,
+ XML_RNGP_EMPTY_CONSTRUCT,
+ XML_RNGP_EMPTY_CONTENT,
+ XML_RNGP_EMPTY_NOT_EMPTY,
+ XML_RNGP_ERROR_TYPE_LIB,
+ XML_RNGP_EXCEPT_EMPTY,
+ XML_RNGP_EXCEPT_MISSING,
+ XML_RNGP_EXCEPT_MULTIPLE,
+ XML_RNGP_EXCEPT_NO_CONTENT,
+ XML_RNGP_EXTERNALREF_EMTPY,
+ XML_RNGP_EXTERNAL_REF_FAILURE,
+ XML_RNGP_EXTERNALREF_RECURSE,
+ XML_RNGP_FORBIDDEN_ATTRIBUTE,
+ XML_RNGP_FOREIGN_ELEMENT,
+ XML_RNGP_GRAMMAR_CONTENT,
+ XML_RNGP_GRAMMAR_EMPTY,
+ XML_RNGP_GRAMMAR_MISSING,
+ XML_RNGP_GRAMMAR_NO_START,
+ XML_RNGP_GROUP_ATTR_CONFLICT,
+ XML_RNGP_HREF_ERROR,
+ XML_RNGP_INCLUDE_EMPTY,
+ XML_RNGP_INCLUDE_FAILURE,
+ XML_RNGP_INCLUDE_RECURSE,
+ XML_RNGP_INTERLEAVE_ADD,
+ XML_RNGP_INTERLEAVE_CREATE_FAILED,
+ XML_RNGP_INTERLEAVE_EMPTY,
+ XML_RNGP_INTERLEAVE_NO_CONTENT,
+ XML_RNGP_INVALID_DEFINE_NAME,
+ XML_RNGP_INVALID_URI,
+ XML_RNGP_INVALID_VALUE,
+ XML_RNGP_MISSING_HREF,
+ XML_RNGP_NAME_MISSING,
+ XML_RNGP_NEED_COMBINE,
+ XML_RNGP_NOTALLOWED_NOT_EMPTY,
+ XML_RNGP_NSNAME_ATTR_ANCESTOR,
+ XML_RNGP_NSNAME_NO_NS,
+ XML_RNGP_PARAM_FORBIDDEN,
+ XML_RNGP_PARAM_NAME_MISSING,
+ XML_RNGP_PARENTREF_CREATE_FAILED,
+ XML_RNGP_PARENTREF_NAME_INVALID,
+ XML_RNGP_PARENTREF_NO_NAME,
+ XML_RNGP_PARENTREF_NO_PARENT,
+ XML_RNGP_PARENTREF_NOT_EMPTY,
+ XML_RNGP_PARSE_ERROR,
+ XML_RNGP_PAT_ANYNAME_EXCEPT_ANYNAME,
+ XML_RNGP_PAT_ATTR_ATTR,
+ XML_RNGP_PAT_ATTR_ELEM,
+ XML_RNGP_PAT_DATA_EXCEPT_ATTR,
+ XML_RNGP_PAT_DATA_EXCEPT_ELEM,
+ XML_RNGP_PAT_DATA_EXCEPT_EMPTY,
+ XML_RNGP_PAT_DATA_EXCEPT_GROUP,
+ XML_RNGP_PAT_DATA_EXCEPT_INTERLEAVE,
+ XML_RNGP_PAT_DATA_EXCEPT_LIST,
+ XML_RNGP_PAT_DATA_EXCEPT_ONEMORE,
+ XML_RNGP_PAT_DATA_EXCEPT_REF,
+ XML_RNGP_PAT_DATA_EXCEPT_TEXT,
+ XML_RNGP_PAT_LIST_ATTR,
+ XML_RNGP_PAT_LIST_ELEM,
+ XML_RNGP_PAT_LIST_INTERLEAVE,
+ XML_RNGP_PAT_LIST_LIST,
+ XML_RNGP_PAT_LIST_REF,
+ XML_RNGP_PAT_LIST_TEXT,
+ XML_RNGP_PAT_NSNAME_EXCEPT_ANYNAME,
+ XML_RNGP_PAT_NSNAME_EXCEPT_NSNAME,
+ XML_RNGP_PAT_ONEMORE_GROUP_ATTR,
+ XML_RNGP_PAT_ONEMORE_INTERLEAVE_ATTR,
+ XML_RNGP_PAT_START_ATTR,
+ XML_RNGP_PAT_START_DATA,
+ XML_RNGP_PAT_START_EMPTY,
+ XML_RNGP_PAT_START_GROUP,
+ XML_RNGP_PAT_START_INTERLEAVE,
+ XML_RNGP_PAT_START_LIST,
+ XML_RNGP_PAT_START_ONEMORE,
+ XML_RNGP_PAT_START_TEXT,
+ XML_RNGP_PAT_START_VALUE,
+ XML_RNGP_PREFIX_UNDEFINED,
+ XML_RNGP_REF_CREATE_FAILED,
+ XML_RNGP_REF_CYCLE,
+ XML_RNGP_REF_NAME_INVALID,
+ XML_RNGP_REF_NO_DEF,
+ XML_RNGP_REF_NO_NAME,
+ XML_RNGP_REF_NOT_EMPTY,
+ XML_RNGP_START_CHOICE_AND_INTERLEAVE,
+ XML_RNGP_START_CONTENT,
+ XML_RNGP_START_EMPTY,
+ XML_RNGP_START_MISSING,
+ XML_RNGP_TEXT_EXPECTED,
+ XML_RNGP_TEXT_HAS_CHILD,
+ XML_RNGP_TYPE_MISSING,
+ XML_RNGP_TYPE_NOT_FOUND,
+ XML_RNGP_TYPE_VALUE,
+ XML_RNGP_UNKNOWN_ATTRIBUTE,
+ XML_RNGP_UNKNOWN_COMBINE,
+ XML_RNGP_UNKNOWN_CONSTRUCT,
+ XML_RNGP_UNKNOWN_TYPE_LIB,
+ XML_RNGP_URI_FRAGMENT,
+ XML_RNGP_URI_NOT_ABSOLUTE,
+ XML_RNGP_VALUE_EMPTY,
+ XML_RNGP_VALUE_NO_CONTENT,
+ XML_RNGP_XMLNS_NAME,
+ XML_RNGP_XML_NS,
+ XML_XPATH_EXPRESSION_OK = 1200,
+ XML_XPATH_NUMBER_ERROR,
+ XML_XPATH_UNFINISHED_LITERAL_ERROR,
+ XML_XPATH_START_LITERAL_ERROR,
+ XML_XPATH_VARIABLE_REF_ERROR,
+ XML_XPATH_UNDEF_VARIABLE_ERROR,
+ XML_XPATH_INVALID_PREDICATE_ERROR,
+ XML_XPATH_EXPR_ERROR,
+ XML_XPATH_UNCLOSED_ERROR,
+ XML_XPATH_UNKNOWN_FUNC_ERROR,
+ XML_XPATH_INVALID_OPERAND,
+ XML_XPATH_INVALID_TYPE,
+ XML_XPATH_INVALID_ARITY,
+ XML_XPATH_INVALID_CTXT_SIZE,
+ XML_XPATH_INVALID_CTXT_POSITION,
+ XML_XPATH_MEMORY_ERROR,
+ XML_XPTR_SYNTAX_ERROR,
+ XML_XPTR_RESOURCE_ERROR,
+ XML_XPTR_SUB_RESOURCE_ERROR,
+ XML_XPATH_UNDEF_PREFIX_ERROR,
+ XML_XPATH_ENCODING_ERROR,
+ XML_XPATH_INVALID_CHAR_ERROR,
+ XML_TREE_INVALID_HEX = 1300,
+ XML_TREE_INVALID_DEC,
+ XML_TREE_UNTERMINATED_ENTITY,
+ XML_TREE_NOT_UTF8,
+ XML_SAVE_NOT_UTF8 = 1400,
+ XML_SAVE_CHAR_INVALID,
+ XML_SAVE_NO_DOCTYPE,
+ XML_SAVE_UNKNOWN_ENCODING,
+ XML_REGEXP_COMPILE_ERROR = 1450,
+ XML_IO_UNKNOWN = 1500,
+ XML_IO_EACCES,
+ XML_IO_EAGAIN,
+ XML_IO_EBADF,
+ XML_IO_EBADMSG,
+ XML_IO_EBUSY,
+ XML_IO_ECANCELED,
+ XML_IO_ECHILD,
+ XML_IO_EDEADLK,
+ XML_IO_EDOM,
+ XML_IO_EEXIST,
+ XML_IO_EFAULT,
+ XML_IO_EFBIG,
+ XML_IO_EINPROGRESS,
+ XML_IO_EINTR,
+ XML_IO_EINVAL,
+ XML_IO_EIO,
+ XML_IO_EISDIR,
+ XML_IO_EMFILE,
+ XML_IO_EMLINK,
+ XML_IO_EMSGSIZE,
+ XML_IO_ENAMETOOLONG,
+ XML_IO_ENFILE,
+ XML_IO_ENODEV,
+ XML_IO_ENOENT,
+ XML_IO_ENOEXEC,
+ XML_IO_ENOLCK,
+ XML_IO_ENOMEM,
+ XML_IO_ENOSPC,
+ XML_IO_ENOSYS,
+ XML_IO_ENOTDIR,
+ XML_IO_ENOTEMPTY,
+ XML_IO_ENOTSUP,
+ XML_IO_ENOTTY,
+ XML_IO_ENXIO,
+ XML_IO_EPERM,
+ XML_IO_EPIPE,
+ XML_IO_ERANGE,
+ XML_IO_EROFS,
+ XML_IO_ESPIPE,
+ XML_IO_ESRCH,
+ XML_IO_ETIMEDOUT,
+ XML_IO_EXDEV,
+ XML_IO_NETWORK_ATTEMPT,
+ XML_IO_ENCODER,
+ XML_IO_FLUSH,
+ XML_IO_WRITE,
+ XML_IO_NO_INPUT,
+ XML_IO_BUFFER_FULL,
+ XML_IO_LOAD_ERROR,
+ XML_IO_ENOTSOCK,
+ XML_IO_EISCONN,
+ XML_IO_ECONNREFUSED,
+ XML_IO_ENETUNREACH,
+ XML_IO_EADDRINUSE,
+ XML_IO_EALREADY,
+ XML_IO_EAFNOSUPPORT,
+ XML_XINCLUDE_RECURSION=1600,
+ XML_XINCLUDE_PARSE_VALUE,
+ XML_XINCLUDE_ENTITY_DEF_MISMATCH,
+ XML_XINCLUDE_NO_HREF,
+ XML_XINCLUDE_NO_FALLBACK,
+ XML_XINCLUDE_HREF_URI,
+ XML_XINCLUDE_TEXT_FRAGMENT,
+ XML_XINCLUDE_TEXT_DOCUMENT,
+ XML_XINCLUDE_INVALID_CHAR,
+ XML_XINCLUDE_BUILD_FAILED,
+ XML_XINCLUDE_UNKNOWN_ENCODING,
+ XML_XINCLUDE_MULTIPLE_ROOT,
+ XML_XINCLUDE_XPTR_FAILED,
+ XML_XINCLUDE_XPTR_RESULT,
+ XML_XINCLUDE_INCLUDE_IN_INCLUDE,
+ XML_XINCLUDE_FALLBACKS_IN_INCLUDE,
+ XML_XINCLUDE_FALLBACK_NOT_IN_INCLUDE,
+ XML_XINCLUDE_DEPRECATED_NS,
+ XML_XINCLUDE_FRAGMENT_ID,
+ XML_CATALOG_MISSING_ATTR = 1650,
+ XML_CATALOG_ENTRY_BROKEN,
+ XML_CATALOG_PREFER_VALUE,
+ XML_CATALOG_NOT_CATALOG,
+ XML_CATALOG_RECURSION,
+ XML_SCHEMAP_PREFIX_UNDEFINED = 1700,
+ XML_SCHEMAP_ATTRFORMDEFAULT_VALUE,
+ XML_SCHEMAP_ATTRGRP_NONAME_NOREF,
+ XML_SCHEMAP_ATTR_NONAME_NOREF,
+ XML_SCHEMAP_COMPLEXTYPE_NONAME_NOREF,
+ XML_SCHEMAP_ELEMFORMDEFAULT_VALUE,
+ XML_SCHEMAP_ELEM_NONAME_NOREF,
+ XML_SCHEMAP_EXTENSION_NO_BASE,
+ XML_SCHEMAP_FACET_NO_VALUE,
+ XML_SCHEMAP_FAILED_BUILD_IMPORT,
+ XML_SCHEMAP_GROUP_NONAME_NOREF,
+ XML_SCHEMAP_IMPORT_NAMESPACE_NOT_URI,
+ XML_SCHEMAP_IMPORT_REDEFINE_NSNAME,
+ XML_SCHEMAP_IMPORT_SCHEMA_NOT_URI,
+ XML_SCHEMAP_INVALID_BOOLEAN,
+ XML_SCHEMAP_INVALID_ENUM,
+ XML_SCHEMAP_INVALID_FACET,
+ XML_SCHEMAP_INVALID_FACET_VALUE,
+ XML_SCHEMAP_INVALID_MAXOCCURS,
+ XML_SCHEMAP_INVALID_MINOCCURS,
+ XML_SCHEMAP_INVALID_REF_AND_SUBTYPE,
+ XML_SCHEMAP_INVALID_WHITE_SPACE,
+ XML_SCHEMAP_NOATTR_NOREF,
+ XML_SCHEMAP_NOTATION_NO_NAME,
+ XML_SCHEMAP_NOTYPE_NOREF,
+ XML_SCHEMAP_REF_AND_SUBTYPE,
+ XML_SCHEMAP_RESTRICTION_NONAME_NOREF,
+ XML_SCHEMAP_SIMPLETYPE_NONAME,
+ XML_SCHEMAP_TYPE_AND_SUBTYPE,
+ XML_SCHEMAP_UNKNOWN_ALL_CHILD,
+ XML_SCHEMAP_UNKNOWN_ANYATTRIBUTE_CHILD,
+ XML_SCHEMAP_UNKNOWN_ATTR_CHILD,
+ XML_SCHEMAP_UNKNOWN_ATTRGRP_CHILD,
+ XML_SCHEMAP_UNKNOWN_ATTRIBUTE_GROUP,
+ XML_SCHEMAP_UNKNOWN_BASE_TYPE,
+ XML_SCHEMAP_UNKNOWN_CHOICE_CHILD,
+ XML_SCHEMAP_UNKNOWN_COMPLEXCONTENT_CHILD,
+ XML_SCHEMAP_UNKNOWN_COMPLEXTYPE_CHILD,
+ XML_SCHEMAP_UNKNOWN_ELEM_CHILD,
+ XML_SCHEMAP_UNKNOWN_EXTENSION_CHILD,
+ XML_SCHEMAP_UNKNOWN_FACET_CHILD,
+ XML_SCHEMAP_UNKNOWN_FACET_TYPE,
+ XML_SCHEMAP_UNKNOWN_GROUP_CHILD,
+ XML_SCHEMAP_UNKNOWN_IMPORT_CHILD,
+ XML_SCHEMAP_UNKNOWN_LIST_CHILD,
+ XML_SCHEMAP_UNKNOWN_NOTATION_CHILD,
+ XML_SCHEMAP_UNKNOWN_PROCESSCONTENT_CHILD,
+ XML_SCHEMAP_UNKNOWN_REF,
+ XML_SCHEMAP_UNKNOWN_RESTRICTION_CHILD,
+ XML_SCHEMAP_UNKNOWN_SCHEMAS_CHILD,
+ XML_SCHEMAP_UNKNOWN_SEQUENCE_CHILD,
+ XML_SCHEMAP_UNKNOWN_SIMPLECONTENT_CHILD,
+ XML_SCHEMAP_UNKNOWN_SIMPLETYPE_CHILD,
+ XML_SCHEMAP_UNKNOWN_TYPE,
+ XML_SCHEMAP_UNKNOWN_UNION_CHILD,
+ XML_SCHEMAP_ELEM_DEFAULT_FIXED,
+ XML_SCHEMAP_REGEXP_INVALID,
+ XML_SCHEMAP_FAILED_LOAD,
+ XML_SCHEMAP_NOTHING_TO_PARSE,
+ XML_SCHEMAP_NOROOT,
+ XML_SCHEMAP_REDEFINED_GROUP,
+ XML_SCHEMAP_REDEFINED_TYPE,
+ XML_SCHEMAP_REDEFINED_ELEMENT,
+ XML_SCHEMAP_REDEFINED_ATTRGROUP,
+ XML_SCHEMAP_REDEFINED_ATTR,
+ XML_SCHEMAP_REDEFINED_NOTATION,
+ XML_SCHEMAP_FAILED_PARSE,
+ XML_SCHEMAP_UNKNOWN_PREFIX,
+ XML_SCHEMAP_DEF_AND_PREFIX,
+ XML_SCHEMAP_UNKNOWN_INCLUDE_CHILD,
+ XML_SCHEMAP_INCLUDE_SCHEMA_NOT_URI,
+ XML_SCHEMAP_INCLUDE_SCHEMA_NO_URI,
+ XML_SCHEMAP_NOT_SCHEMA,
+ XML_SCHEMAP_UNKNOWN_MEMBER_TYPE,
+ XML_SCHEMAP_INVALID_ATTR_USE,
+ XML_SCHEMAP_RECURSIVE,
+ XML_SCHEMAP_SUPERNUMEROUS_LIST_ITEM_TYPE,
+ XML_SCHEMAP_INVALID_ATTR_COMBINATION,
+ XML_SCHEMAP_INVALID_ATTR_INLINE_COMBINATION,
+ XML_SCHEMAP_MISSING_SIMPLETYPE_CHILD,
+ XML_SCHEMAP_INVALID_ATTR_NAME,
+ XML_SCHEMAP_REF_AND_CONTENT,
+ XML_SCHEMAP_CT_PROPS_CORRECT_1,
+ XML_SCHEMAP_CT_PROPS_CORRECT_2,
+ XML_SCHEMAP_CT_PROPS_CORRECT_3,
+ XML_SCHEMAP_CT_PROPS_CORRECT_4,
+ XML_SCHEMAP_CT_PROPS_CORRECT_5,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_1,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_1,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_2,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_2,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_3,
+ XML_SCHEMAP_WILDCARD_INVALID_NS_MEMBER,
+ XML_SCHEMAP_INTERSECTION_NOT_EXPRESSIBLE,
+ XML_SCHEMAP_UNION_NOT_EXPRESSIBLE,
+ XML_SCHEMAP_SRC_IMPORT_3_1,
+ XML_SCHEMAP_SRC_IMPORT_3_2,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_1,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_2,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_4_3,
+ XML_SCHEMAP_COS_CT_EXTENDS_1_3,
+ XML_SCHEMAV_NOROOT = 1801,
+ XML_SCHEMAV_UNDECLAREDELEM,
+ XML_SCHEMAV_NOTTOPLEVEL,
+ XML_SCHEMAV_MISSING,
+ XML_SCHEMAV_WRONGELEM,
+ XML_SCHEMAV_NOTYPE,
+ XML_SCHEMAV_NOROLLBACK,
+ XML_SCHEMAV_ISABSTRACT,
+ XML_SCHEMAV_NOTEMPTY,
+ XML_SCHEMAV_ELEMCONT,
+ XML_SCHEMAV_HAVEDEFAULT,
+ XML_SCHEMAV_NOTNILLABLE,
+ XML_SCHEMAV_EXTRACONTENT,
+ XML_SCHEMAV_INVALIDATTR,
+ XML_SCHEMAV_INVALIDELEM,
+ XML_SCHEMAV_NOTDETERMINIST,
+ XML_SCHEMAV_CONSTRUCT,
+ XML_SCHEMAV_INTERNAL,
+ XML_SCHEMAV_NOTSIMPLE,
+ XML_SCHEMAV_ATTRUNKNOWN,
+ XML_SCHEMAV_ATTRINVALID,
+ XML_SCHEMAV_VALUE,
+ XML_SCHEMAV_FACET,
+ XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_1,
+ XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_2,
+ XML_SCHEMAV_CVC_DATATYPE_VALID_1_2_3,
+ XML_SCHEMAV_CVC_TYPE_3_1_1,
+ XML_SCHEMAV_CVC_TYPE_3_1_2,
+ XML_SCHEMAV_CVC_FACET_VALID,
+ XML_SCHEMAV_CVC_LENGTH_VALID,
+ XML_SCHEMAV_CVC_MINLENGTH_VALID,
+ XML_SCHEMAV_CVC_MAXLENGTH_VALID,
+ XML_SCHEMAV_CVC_MININCLUSIVE_VALID,
+ XML_SCHEMAV_CVC_MAXINCLUSIVE_VALID,
+ XML_SCHEMAV_CVC_MINEXCLUSIVE_VALID,
+ XML_SCHEMAV_CVC_MAXEXCLUSIVE_VALID,
+ XML_SCHEMAV_CVC_TOTALDIGITS_VALID,
+ XML_SCHEMAV_CVC_FRACTIONDIGITS_VALID,
+ XML_SCHEMAV_CVC_PATTERN_VALID,
+ XML_SCHEMAV_CVC_ENUMERATION_VALID,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_2_1,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_2_2,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_2_3,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_2_4,
+ XML_SCHEMAV_CVC_ELT_1,
+ XML_SCHEMAV_CVC_ELT_2,
+ XML_SCHEMAV_CVC_ELT_3_1,
+ XML_SCHEMAV_CVC_ELT_3_2_1,
+ XML_SCHEMAV_CVC_ELT_3_2_2,
+ XML_SCHEMAV_CVC_ELT_4_1,
+ XML_SCHEMAV_CVC_ELT_4_2,
+ XML_SCHEMAV_CVC_ELT_4_3,
+ XML_SCHEMAV_CVC_ELT_5_1_1,
+ XML_SCHEMAV_CVC_ELT_5_1_2,
+ XML_SCHEMAV_CVC_ELT_5_2_1,
+ XML_SCHEMAV_CVC_ELT_5_2_2_1,
+ XML_SCHEMAV_CVC_ELT_5_2_2_2_1,
+ XML_SCHEMAV_CVC_ELT_5_2_2_2_2,
+ XML_SCHEMAV_CVC_ELT_6,
+ XML_SCHEMAV_CVC_ELT_7,
+ XML_SCHEMAV_CVC_ATTRIBUTE_1,
+ XML_SCHEMAV_CVC_ATTRIBUTE_2,
+ XML_SCHEMAV_CVC_ATTRIBUTE_3,
+ XML_SCHEMAV_CVC_ATTRIBUTE_4,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_3_1,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_1,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_3_2_2,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_4,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_5_1,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_5_2,
+ XML_SCHEMAV_ELEMENT_CONTENT,
+ XML_SCHEMAV_DOCUMENT_ELEMENT_MISSING,
+ XML_SCHEMAV_CVC_COMPLEX_TYPE_1,
+ XML_SCHEMAV_CVC_AU,
+ XML_SCHEMAV_CVC_TYPE_1,
+ XML_SCHEMAV_CVC_TYPE_2,
+ XML_SCHEMAV_CVC_IDC,
+ XML_SCHEMAV_CVC_WILDCARD,
+ XML_SCHEMAV_MISC,
+ XML_XPTR_UNKNOWN_SCHEME = 1900,
+ XML_XPTR_CHILDSEQ_START,
+ XML_XPTR_EVAL_FAILED,
+ XML_XPTR_EXTRA_OBJECTS,
+ XML_C14N_CREATE_CTXT = 1950,
+ XML_C14N_REQUIRES_UTF8,
+ XML_C14N_CREATE_STACK,
+ XML_C14N_INVALID_NODE,
+ XML_C14N_UNKNOW_NODE,
+ XML_C14N_RELATIVE_NAMESPACE,
+ XML_FTP_PASV_ANSWER = 2000,
+ XML_FTP_EPSV_ANSWER,
+ XML_FTP_ACCNT,
+ XML_FTP_URL_SYNTAX,
+ XML_HTTP_URL_SYNTAX = 2020,
+ XML_HTTP_USE_IP,
+ XML_HTTP_UNKNOWN_HOST,
+ XML_SCHEMAP_SRC_SIMPLE_TYPE_1 = 3000,
+ XML_SCHEMAP_SRC_SIMPLE_TYPE_2,
+ XML_SCHEMAP_SRC_SIMPLE_TYPE_3,
+ XML_SCHEMAP_SRC_SIMPLE_TYPE_4,
+ XML_SCHEMAP_SRC_RESOLVE,
+ XML_SCHEMAP_SRC_RESTRICTION_BASE_OR_SIMPLETYPE,
+ XML_SCHEMAP_SRC_LIST_ITEMTYPE_OR_SIMPLETYPE,
+ XML_SCHEMAP_SRC_UNION_MEMBERTYPES_OR_SIMPLETYPES,
+ XML_SCHEMAP_ST_PROPS_CORRECT_1,
+ XML_SCHEMAP_ST_PROPS_CORRECT_2,
+ XML_SCHEMAP_ST_PROPS_CORRECT_3,
+ XML_SCHEMAP_COS_ST_RESTRICTS_1_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_1_2,
+ XML_SCHEMAP_COS_ST_RESTRICTS_1_3_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_1_3_2,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_1_2,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_2,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_3,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_4,
+ XML_SCHEMAP_COS_ST_RESTRICTS_2_3_2_5,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_1_2,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_2,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_1,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_3,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_4,
+ XML_SCHEMAP_COS_ST_RESTRICTS_3_3_2_5,
+ XML_SCHEMAP_COS_ST_DERIVED_OK_2_1,
+ XML_SCHEMAP_COS_ST_DERIVED_OK_2_2,
+ XML_SCHEMAP_S4S_ELEM_NOT_ALLOWED,
+ XML_SCHEMAP_S4S_ELEM_MISSING,
+ XML_SCHEMAP_S4S_ATTR_NOT_ALLOWED,
+ XML_SCHEMAP_S4S_ATTR_MISSING,
+ XML_SCHEMAP_S4S_ATTR_INVALID_VALUE,
+ XML_SCHEMAP_SRC_ELEMENT_1,
+ XML_SCHEMAP_SRC_ELEMENT_2_1,
+ XML_SCHEMAP_SRC_ELEMENT_2_2,
+ XML_SCHEMAP_SRC_ELEMENT_3,
+ XML_SCHEMAP_P_PROPS_CORRECT_1,
+ XML_SCHEMAP_P_PROPS_CORRECT_2_1,
+ XML_SCHEMAP_P_PROPS_CORRECT_2_2,
+ XML_SCHEMAP_E_PROPS_CORRECT_2,
+ XML_SCHEMAP_E_PROPS_CORRECT_3,
+ XML_SCHEMAP_E_PROPS_CORRECT_4,
+ XML_SCHEMAP_E_PROPS_CORRECT_5,
+ XML_SCHEMAP_E_PROPS_CORRECT_6,
+ XML_SCHEMAP_SRC_INCLUDE,
+ XML_SCHEMAP_SRC_ATTRIBUTE_1,
+ XML_SCHEMAP_SRC_ATTRIBUTE_2,
+ XML_SCHEMAP_SRC_ATTRIBUTE_3_1,
+ XML_SCHEMAP_SRC_ATTRIBUTE_3_2,
+ XML_SCHEMAP_SRC_ATTRIBUTE_4,
+ XML_SCHEMAP_NO_XMLNS,
+ XML_SCHEMAP_NO_XSI,
+ XML_SCHEMAP_COS_VALID_DEFAULT_1,
+ XML_SCHEMAP_COS_VALID_DEFAULT_2_1,
+ XML_SCHEMAP_COS_VALID_DEFAULT_2_2_1,
+ XML_SCHEMAP_COS_VALID_DEFAULT_2_2_2,
+ XML_SCHEMAP_CVC_SIMPLE_TYPE,
+ XML_SCHEMAP_COS_CT_EXTENDS_1_1,
+ XML_SCHEMAP_SRC_IMPORT_1_1,
+ XML_SCHEMAP_SRC_IMPORT_1_2,
+ XML_SCHEMAP_SRC_IMPORT_2,
+ XML_SCHEMAP_SRC_IMPORT_2_1,
+ XML_SCHEMAP_SRC_IMPORT_2_2,
+ XML_SCHEMAP_INTERNAL,
+ XML_SCHEMAP_NOT_DETERMINISTIC,
+ XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_1,
+ XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_2,
+ XML_SCHEMAP_SRC_ATTRIBUTE_GROUP_3,
+ XML_SCHEMAP_MG_PROPS_CORRECT_1,
+ XML_SCHEMAP_MG_PROPS_CORRECT_2,
+ XML_SCHEMAP_SRC_CT_1,
+ XML_SCHEMAP_DERIVATION_OK_RESTRICTION_2_1_3,
+ XML_SCHEMAP_AU_PROPS_CORRECT_2,
+ XML_SCHEMAP_A_PROPS_CORRECT_2,
+ XML_SCHEMAP_C_PROPS_CORRECT,
+ XML_SCHEMAP_SRC_REDEFINE,
+ XML_SCHEMAP_SRC_IMPORT,
+ XML_SCHEMAP_WARN_SKIP_SCHEMA,
+ XML_SCHEMAP_WARN_UNLOCATED_SCHEMA,
+ XML_SCHEMAP_WARN_ATTR_REDECL_PROH,
+ XML_SCHEMAP_WARN_ATTR_POINTLESS_PROH,
+ XML_SCHEMAP_AG_PROPS_CORRECT,
+ XML_SCHEMAP_COS_CT_EXTENDS_1_2,
+ XML_SCHEMAP_AU_PROPS_CORRECT,
+ XML_SCHEMAP_A_PROPS_CORRECT_3,
+ XML_SCHEMAP_COS_ALL_LIMITED,
+ XML_SCHEMATRONV_ASSERT = 4000,
+ XML_SCHEMATRONV_REPORT,
+ XML_MODULE_OPEN = 4900,
+ XML_MODULE_CLOSE,
+ XML_CHECK_FOUND_ELEMENT = 5000,
+ XML_CHECK_FOUND_ATTRIBUTE,
+ XML_CHECK_FOUND_TEXT,
+ XML_CHECK_FOUND_CDATA,
+ XML_CHECK_FOUND_ENTITYREF,
+ XML_CHECK_FOUND_ENTITY,
+ XML_CHECK_FOUND_PI,
+ XML_CHECK_FOUND_COMMENT,
+ XML_CHECK_FOUND_DOCTYPE,
+ XML_CHECK_FOUND_FRAGMENT,
+ XML_CHECK_FOUND_NOTATION,
+ XML_CHECK_UNKNOWN_NODE,
+ XML_CHECK_ENTITY_TYPE,
+ XML_CHECK_NO_PARENT,
+ XML_CHECK_NO_DOC,
+ XML_CHECK_NO_NAME,
+ XML_CHECK_NO_ELEM,
+ XML_CHECK_WRONG_DOC,
+ XML_CHECK_NO_PREV,
+ XML_CHECK_WRONG_PREV,
+ XML_CHECK_NO_NEXT,
+ XML_CHECK_WRONG_NEXT,
+ XML_CHECK_NOT_DTD,
+ XML_CHECK_NOT_ATTR,
+ XML_CHECK_NOT_ATTR_DECL,
+ XML_CHECK_NOT_ELEM_DECL,
+ XML_CHECK_NOT_ENTITY_DECL,
+ XML_CHECK_NOT_NS_DECL,
+ XML_CHECK_NO_HREF,
+ XML_CHECK_WRONG_PARENT,
+ XML_CHECK_NS_SCOPE,
+ XML_CHECK_NS_ANCESTOR,
+ XML_CHECK_NOT_UTF8,
+ XML_CHECK_NO_DICT,
+ XML_CHECK_NOT_NCNAME,
+ XML_CHECK_OUTSIDE_DICT,
+ XML_CHECK_WRONG_NAME,
+ XML_CHECK_NAME_NOT_NULL,
+ XML_I18N_NO_NAME = 6000,
+ XML_I18N_NO_HANDLER,
+ XML_I18N_EXCESS_HANDLER,
+ XML_I18N_CONV_FAILED,
+ XML_I18N_NO_OUTPUT
+} xmlParserErrors;
+typedef void ( *xmlGenericErrorFunc) (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+typedef void ( *xmlStructuredErrorFunc) (void *userData, xmlErrorPtr error);
+ void
+ xmlSetGenericErrorFunc (void *ctx,
+ xmlGenericErrorFunc handler);
+ void
+ initGenericErrorDefaultFunc (xmlGenericErrorFunc *handler);
+ void
+ xmlSetStructuredErrorFunc (void *ctx,
+ xmlStructuredErrorFunc handler);
+ void
+ xmlParserError (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+ void
+ xmlParserWarning (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+ void
+ xmlParserValidityError (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+ void
+ xmlParserValidityWarning (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+ void
+ xmlParserPrintFileInfo (xmlParserInputPtr input);
+ void
+ xmlParserPrintFileContext (xmlParserInputPtr input);
+ xmlErrorPtr
+ xmlGetLastError (void);
+ void
+ xmlResetLastError (void);
+ xmlErrorPtr
+ xmlCtxtGetLastError (void *ctx);
+ void
+ xmlCtxtResetLastError (void *ctx);
+ void
+ xmlResetError (xmlErrorPtr err);
+ int
+ xmlCopyError (xmlErrorPtr from,
+ xmlErrorPtr to);
+typedef struct _xmlLink xmlLink;
+typedef xmlLink *xmlLinkPtr;
+typedef struct _xmlList xmlList;
+typedef xmlList *xmlListPtr;
+typedef void (*xmlListDeallocator) (xmlLinkPtr lk);
+typedef int (*xmlListDataCompare) (const void *data0, const void *data1);
+typedef int (*xmlListWalker) (const void *data, const void *user);
+ xmlListPtr
+ xmlListCreate (xmlListDeallocator deallocator,
+ xmlListDataCompare compare);
+ void
+ xmlListDelete (xmlListPtr l);
+ void *
+ xmlListSearch (xmlListPtr l,
+ void *data);
+ void *
+ xmlListReverseSearch (xmlListPtr l,
+ void *data);
+ int
+ xmlListInsert (xmlListPtr l,
+ void *data) ;
+ int
+ xmlListAppend (xmlListPtr l,
+ void *data) ;
+ int
+ xmlListRemoveFirst (xmlListPtr l,
+ void *data);
+ int
+ xmlListRemoveLast (xmlListPtr l,
+ void *data);
+ int
+ xmlListRemoveAll (xmlListPtr l,
+ void *data);
+ void
+ xmlListClear (xmlListPtr l);
+ int
+ xmlListEmpty (xmlListPtr l);
+ xmlLinkPtr
+ xmlListFront (xmlListPtr l);
+ xmlLinkPtr
+ xmlListEnd (xmlListPtr l);
+ int
+ xmlListSize (xmlListPtr l);
+ void
+ xmlListPopFront (xmlListPtr l);
+ void
+ xmlListPopBack (xmlListPtr l);
+ int
+ xmlListPushFront (xmlListPtr l,
+ void *data);
+ int
+ xmlListPushBack (xmlListPtr l,
+ void *data);
+ void
+ xmlListReverse (xmlListPtr l);
+ void
+ xmlListSort (xmlListPtr l);
+ void
+ xmlListWalk (xmlListPtr l,
+ xmlListWalker walker,
+ const void *user);
+ void
+ xmlListReverseWalk (xmlListPtr l,
+ xmlListWalker walker,
+ const void *user);
+ void
+ xmlListMerge (xmlListPtr l1,
+ xmlListPtr l2);
+ xmlListPtr
+ xmlListDup (const xmlListPtr old);
+ int
+ xmlListCopy (xmlListPtr cur,
+ const xmlListPtr old);
+ void *
+ xmlLinkGetData (xmlLinkPtr lk);
+typedef struct _xmlAutomata xmlAutomata;
+typedef xmlAutomata *xmlAutomataPtr;
+typedef struct _xmlAutomataState xmlAutomataState;
+typedef xmlAutomataState *xmlAutomataStatePtr;
+ xmlAutomataPtr
+ xmlNewAutomata (void);
+ void
+ xmlFreeAutomata (xmlAutomataPtr am);
+ xmlAutomataStatePtr
+ xmlAutomataGetInitState (xmlAutomataPtr am);
+ int
+ xmlAutomataSetFinalState (xmlAutomataPtr am,
+ xmlAutomataStatePtr state);
+ xmlAutomataStatePtr
+ xmlAutomataNewState (xmlAutomataPtr am);
+ xmlAutomataStatePtr
+ xmlAutomataNewTransition (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewTransition2 (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ const xmlChar *token2,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewNegTrans (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ const xmlChar *token2,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewCountTrans (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ int min,
+ int max,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewCountTrans2 (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ const xmlChar *token2,
+ int min,
+ int max,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewOnceTrans (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ int min,
+ int max,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewOnceTrans2 (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ const xmlChar *token,
+ const xmlChar *token2,
+ int min,
+ int max,
+ void *data);
+ xmlAutomataStatePtr
+ xmlAutomataNewAllTrans (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ int lax);
+ xmlAutomataStatePtr
+ xmlAutomataNewEpsilon (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to);
+ xmlAutomataStatePtr
+ xmlAutomataNewCountedTrans (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ int counter);
+ xmlAutomataStatePtr
+ xmlAutomataNewCounterTrans (xmlAutomataPtr am,
+ xmlAutomataStatePtr from,
+ xmlAutomataStatePtr to,
+ int counter);
+ int
+ xmlAutomataNewCounter (xmlAutomataPtr am,
+ int min,
+ int max);
+ xmlRegexpPtr
+ xmlAutomataCompile (xmlAutomataPtr am);
+ int
+ xmlAutomataIsDeterminist (xmlAutomataPtr am);
+typedef struct _xmlValidState xmlValidState;
+typedef xmlValidState *xmlValidStatePtr;
+typedef void ( *xmlValidityErrorFunc) (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+typedef void ( *xmlValidityWarningFunc) (void *ctx,
+ const char *msg,
+ ...) __attribute__((__format__(__printf__,2,3)));
+typedef struct _xmlValidCtxt xmlValidCtxt;
+typedef xmlValidCtxt *xmlValidCtxtPtr;
+struct _xmlValidCtxt {
+ void *userData;
+ xmlValidityErrorFunc error;
+ xmlValidityWarningFunc warning;
+ xmlNodePtr node;
+ int nodeNr;
+ int nodeMax;
+ xmlNodePtr *nodeTab;
+ unsigned int finishDtd;
+ xmlDocPtr doc;
+ int valid;
+ xmlValidState *vstate;
+ int vstateNr;
+ int vstateMax;
+ xmlValidState *vstateTab;
+ xmlAutomataPtr am;
+ xmlAutomataStatePtr state;
+};
+typedef struct _xmlHashTable xmlNotationTable;
+typedef xmlNotationTable *xmlNotationTablePtr;
+typedef struct _xmlHashTable xmlElementTable;
+typedef xmlElementTable *xmlElementTablePtr;
+typedef struct _xmlHashTable xmlAttributeTable;
+typedef xmlAttributeTable *xmlAttributeTablePtr;
+typedef struct _xmlHashTable xmlIDTable;
+typedef xmlIDTable *xmlIDTablePtr;
+typedef struct _xmlHashTable xmlRefTable;
+typedef xmlRefTable *xmlRefTablePtr;
+ xmlNotationPtr
+ xmlAddNotationDecl (xmlValidCtxtPtr ctxt,
+ xmlDtdPtr dtd,
+ const xmlChar *name,
+ const xmlChar *PublicID,
+ const xmlChar *SystemID);
+ xmlNotationTablePtr
+ xmlCopyNotationTable (xmlNotationTablePtr table);
+ void
+ xmlFreeNotationTable (xmlNotationTablePtr table);
+ void
+ xmlDumpNotationDecl (xmlBufferPtr buf,
+ xmlNotationPtr nota);
+ void
+ xmlDumpNotationTable (xmlBufferPtr buf,
+ xmlNotationTablePtr table);
+ xmlElementContentPtr
+ xmlNewElementContent (const xmlChar *name,
+ xmlElementContentType type);
+ xmlElementContentPtr
+ xmlCopyElementContent (xmlElementContentPtr content);
+ void
+ xmlFreeElementContent (xmlElementContentPtr cur);
+ xmlElementContentPtr
+ xmlNewDocElementContent (xmlDocPtr doc,
+ const xmlChar *name,
+ xmlElementContentType type);
+ xmlElementContentPtr
+ xmlCopyDocElementContent(xmlDocPtr doc,
+ xmlElementContentPtr content);
+ void
+ xmlFreeDocElementContent(xmlDocPtr doc,
+ xmlElementContentPtr cur);
+ void
+ xmlSnprintfElementContent(char *buf,
+ int size,
+ xmlElementContentPtr content,
+ int englob);
+ void
+ xmlSprintfElementContent(char *buf,
+ xmlElementContentPtr content,
+ int englob);
+ xmlElementPtr
+ xmlAddElementDecl (xmlValidCtxtPtr ctxt,
+ xmlDtdPtr dtd,
+ const xmlChar *name,
+ xmlElementTypeVal type,
+ xmlElementContentPtr content);
+ xmlElementTablePtr
+ xmlCopyElementTable (xmlElementTablePtr table);
+ void
+ xmlFreeElementTable (xmlElementTablePtr table);
+ void
+ xmlDumpElementTable (xmlBufferPtr buf,
+ xmlElementTablePtr table);
+ void
+ xmlDumpElementDecl (xmlBufferPtr buf,
+ xmlElementPtr elem);
+ xmlEnumerationPtr
+ xmlCreateEnumeration (const xmlChar *name);
+ void
+ xmlFreeEnumeration (xmlEnumerationPtr cur);
+ xmlEnumerationPtr
+ xmlCopyEnumeration (xmlEnumerationPtr cur);
+ xmlAttributePtr
+ xmlAddAttributeDecl (xmlValidCtxtPtr ctxt,
+ xmlDtdPtr dtd,
+ const xmlChar *elem,
+ const xmlChar *name,
+ const xmlChar *ns,
+ xmlAttributeType type,
+ xmlAttributeDefault def,
+ const xmlChar *defaultValue,
+ xmlEnumerationPtr tree);
+ xmlAttributeTablePtr
+ xmlCopyAttributeTable (xmlAttributeTablePtr table);
+ void
+ xmlFreeAttributeTable (xmlAttributeTablePtr table);
+ void
+ xmlDumpAttributeTable (xmlBufferPtr buf,
+ xmlAttributeTablePtr table);
+ void
+ xmlDumpAttributeDecl (xmlBufferPtr buf,
+ xmlAttributePtr attr);
+ xmlIDPtr
+ xmlAddID (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ const xmlChar *value,
+ xmlAttrPtr attr);
+ void
+ xmlFreeIDTable (xmlIDTablePtr table);
+ xmlAttrPtr
+ xmlGetID (xmlDocPtr doc,
+ const xmlChar *ID);
+ int
+ xmlIsID (xmlDocPtr doc,
+ xmlNodePtr elem,
+ xmlAttrPtr attr);
+ int
+ xmlRemoveID (xmlDocPtr doc,
+ xmlAttrPtr attr);
+ xmlRefPtr
+ xmlAddRef (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ const xmlChar *value,
+ xmlAttrPtr attr);
+ void
+ xmlFreeRefTable (xmlRefTablePtr table);
+ int
+ xmlIsRef (xmlDocPtr doc,
+ xmlNodePtr elem,
+ xmlAttrPtr attr);
+ int
+ xmlRemoveRef (xmlDocPtr doc,
+ xmlAttrPtr attr);
+ xmlListPtr
+ xmlGetRefs (xmlDocPtr doc,
+ const xmlChar *ID);
+ xmlValidCtxtPtr
+ xmlNewValidCtxt(void);
+ void
+ xmlFreeValidCtxt(xmlValidCtxtPtr);
+ int
+ xmlValidateRoot (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc);
+ int
+ xmlValidateElementDecl (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlElementPtr elem);
+ xmlChar *
+ xmlValidNormalizeAttributeValue(xmlDocPtr doc,
+ xmlNodePtr elem,
+ const xmlChar *name,
+ const xmlChar *value);
+ xmlChar *
+ xmlValidCtxtNormalizeAttributeValue(xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem,
+ const xmlChar *name,
+ const xmlChar *value);
+ int
+ xmlValidateAttributeDecl(xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlAttributePtr attr);
+ int
+ xmlValidateAttributeValue(xmlAttributeType type,
+ const xmlChar *value);
+ int
+ xmlValidateNotationDecl (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNotationPtr nota);
+ int
+ xmlValidateDtd (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlDtdPtr dtd);
+ int
+ xmlValidateDtdFinal (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc);
+ int
+ xmlValidateDocument (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc);
+ int
+ xmlValidateElement (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem);
+ int
+ xmlValidateOneElement (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem);
+ int
+ xmlValidateOneAttribute (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem,
+ xmlAttrPtr attr,
+ const xmlChar *value);
+ int
+ xmlValidateOneNamespace (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem,
+ const xmlChar *prefix,
+ xmlNsPtr ns,
+ const xmlChar *value);
+ int
+ xmlValidateDocumentFinal(xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc);
+ int
+ xmlValidateNotationUse (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ const xmlChar *notationName);
+ int
+ xmlIsMixedElement (xmlDocPtr doc,
+ const xmlChar *name);
+ xmlAttributePtr
+ xmlGetDtdAttrDesc (xmlDtdPtr dtd,
+ const xmlChar *elem,
+ const xmlChar *name);
+ xmlAttributePtr
+ xmlGetDtdQAttrDesc (xmlDtdPtr dtd,
+ const xmlChar *elem,
+ const xmlChar *name,
+ const xmlChar *prefix);
+ xmlNotationPtr
+ xmlGetDtdNotationDesc (xmlDtdPtr dtd,
+ const xmlChar *name);
+ xmlElementPtr
+ xmlGetDtdQElementDesc (xmlDtdPtr dtd,
+ const xmlChar *name,
+ const xmlChar *prefix);
+ xmlElementPtr
+ xmlGetDtdElementDesc (xmlDtdPtr dtd,
+ const xmlChar *name);
+ int
+ xmlValidGetPotentialChildren(xmlElementContent *ctree,
+ const xmlChar **names,
+ int *len,
+ int max);
+ int
+ xmlValidGetValidElements(xmlNode *prev,
+ xmlNode *next,
+ const xmlChar **names,
+ int max);
+ int
+ xmlValidateNameValue (const xmlChar *value);
+ int
+ xmlValidateNamesValue (const xmlChar *value);
+ int
+ xmlValidateNmtokenValue (const xmlChar *value);
+ int
+ xmlValidateNmtokensValue(const xmlChar *value);
+ int
+ xmlValidBuildContentModel(xmlValidCtxtPtr ctxt,
+ xmlElementPtr elem);
+ int
+ xmlValidatePushElement (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem,
+ const xmlChar *qname);
+ int
+ xmlValidatePushCData (xmlValidCtxtPtr ctxt,
+ const xmlChar *data,
+ int len);
+ int
+ xmlValidatePopElement (xmlValidCtxtPtr ctxt,
+ xmlDocPtr doc,
+ xmlNodePtr elem,
+ const xmlChar *qname);
+typedef enum {
+ XML_INTERNAL_GENERAL_ENTITY = 1,
+ XML_EXTERNAL_GENERAL_PARSED_ENTITY = 2,
+ XML_EXTERNAL_GENERAL_UNPARSED_ENTITY = 3,
+ XML_INTERNAL_PARAMETER_ENTITY = 4,
+ XML_EXTERNAL_PARAMETER_ENTITY = 5,
+ XML_INTERNAL_PREDEFINED_ENTITY = 6
+} xmlEntityType;
+struct _xmlEntity {
+ void *_private;
+ xmlElementType type;
+ const xmlChar *name;
+ struct _xmlNode *children;
+ struct _xmlNode *last;
+ struct _xmlDtd *parent;
+ struct _xmlNode *next;
+ struct _xmlNode *prev;
+ struct _xmlDoc *doc;
+ xmlChar *orig;
+ xmlChar *content;
+ int length;
+ xmlEntityType etype;
+ const xmlChar *ExternalID;
+ const xmlChar *SystemID;
+ struct _xmlEntity *nexte;
+ const xmlChar *URI;
+ int owner;
+ int checked;
+};
+typedef struct _xmlHashTable xmlEntitiesTable;
+typedef xmlEntitiesTable *xmlEntitiesTablePtr;
+ void
+ xmlInitializePredefinedEntities (void);
+ xmlEntityPtr
+ xmlNewEntity (xmlDocPtr doc,
+ const xmlChar *name,
+ int type,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID,
+ const xmlChar *content);
+ xmlEntityPtr
+ xmlAddDocEntity (xmlDocPtr doc,
+ const xmlChar *name,
+ int type,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID,
+ const xmlChar *content);
+ xmlEntityPtr
+ xmlAddDtdEntity (xmlDocPtr doc,
+ const xmlChar *name,
+ int type,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID,
+ const xmlChar *content);
+ xmlEntityPtr
+ xmlGetPredefinedEntity (const xmlChar *name);
+ xmlEntityPtr
+ xmlGetDocEntity (xmlDocPtr doc,
+ const xmlChar *name);
+ xmlEntityPtr
+ xmlGetDtdEntity (xmlDocPtr doc,
+ const xmlChar *name);
+ xmlEntityPtr
+ xmlGetParameterEntity (xmlDocPtr doc,
+ const xmlChar *name);
+ const xmlChar *
+ xmlEncodeEntities (xmlDocPtr doc,
+ const xmlChar *input);
+ xmlChar *
+ xmlEncodeEntitiesReentrant(xmlDocPtr doc,
+ const xmlChar *input);
+ xmlChar *
+ xmlEncodeSpecialChars (xmlDocPtr doc,
+ const xmlChar *input);
+ xmlEntitiesTablePtr
+ xmlCreateEntitiesTable (void);
+ xmlEntitiesTablePtr
+ xmlCopyEntitiesTable (xmlEntitiesTablePtr table);
+ void
+ xmlFreeEntitiesTable (xmlEntitiesTablePtr table);
+ void
+ xmlDumpEntitiesTable (xmlBufferPtr buf,
+ xmlEntitiesTablePtr table);
+ void
+ xmlDumpEntityDecl (xmlBufferPtr buf,
+ xmlEntityPtr ent);
+ void
+ xmlCleanupPredefinedEntities(void);
+typedef void (* xmlParserInputDeallocate)(xmlChar *str);
+struct _xmlParserInput {
+ xmlParserInputBufferPtr buf;
+ const char *filename;
+ const char *directory;
+ const xmlChar *base;
+ const xmlChar *cur;
+ const xmlChar *end;
+ int length;
+ int line;
+ int col;
+ unsigned long consumed;
+ xmlParserInputDeallocate free;
+ const xmlChar *encoding;
+ const xmlChar *version;
+ int standalone;
+ int id;
+};
+typedef struct _xmlParserNodeInfo xmlParserNodeInfo;
+typedef xmlParserNodeInfo *xmlParserNodeInfoPtr;
+struct _xmlParserNodeInfo {
+ const struct _xmlNode* node;
+ unsigned long begin_pos;
+ unsigned long begin_line;
+ unsigned long end_pos;
+ unsigned long end_line;
+};
+typedef struct _xmlParserNodeInfoSeq xmlParserNodeInfoSeq;
+typedef xmlParserNodeInfoSeq *xmlParserNodeInfoSeqPtr;
+struct _xmlParserNodeInfoSeq {
+ unsigned long maximum;
+ unsigned long length;
+ xmlParserNodeInfo* buffer;
+};
+typedef enum {
+ XML_PARSER_EOF = -1,
+ XML_PARSER_START = 0,
+ XML_PARSER_MISC,
+ XML_PARSER_PI,
+ XML_PARSER_DTD,
+ XML_PARSER_PROLOG,
+ XML_PARSER_COMMENT,
+ XML_PARSER_START_TAG,
+ XML_PARSER_CONTENT,
+ XML_PARSER_CDATA_SECTION,
+ XML_PARSER_END_TAG,
+ XML_PARSER_ENTITY_DECL,
+ XML_PARSER_ENTITY_VALUE,
+ XML_PARSER_ATTRIBUTE_VALUE,
+ XML_PARSER_SYSTEM_LITERAL,
+ XML_PARSER_EPILOG,
+ XML_PARSER_IGNORE,
+ XML_PARSER_PUBLIC_LITERAL
+} xmlParserInputState;
+typedef enum {
+ XML_PARSE_UNKNOWN = 0,
+ XML_PARSE_DOM = 1,
+ XML_PARSE_SAX = 2,
+ XML_PARSE_PUSH_DOM = 3,
+ XML_PARSE_PUSH_SAX = 4,
+ XML_PARSE_READER = 5
+} xmlParserMode;
+struct _xmlParserCtxt {
+ struct _xmlSAXHandler *sax;
+ void *userData;
+ xmlDocPtr myDoc;
+ int wellFormed;
+ int replaceEntities;
+ const xmlChar *version;
+ const xmlChar *encoding;
+ int standalone;
+ int html;
+ xmlParserInputPtr input;
+ int inputNr;
+ int inputMax;
+ xmlParserInputPtr *inputTab;
+ xmlNodePtr node;
+ int nodeNr;
+ int nodeMax;
+ xmlNodePtr *nodeTab;
+ int record_info;
+ xmlParserNodeInfoSeq node_seq;
+ int errNo;
+ int hasExternalSubset;
+ int hasPErefs;
+ int external;
+ int valid;
+ int validate;
+ xmlValidCtxt vctxt;
+ xmlParserInputState instate;
+ int token;
+ char *directory;
+ const xmlChar *name;
+ int nameNr;
+ int nameMax;
+ const xmlChar * *nameTab;
+ long nbChars;
+ long checkIndex;
+ int keepBlanks;
+ int disableSAX;
+ int inSubset;
+ const xmlChar * intSubName;
+ xmlChar * extSubURI;
+ xmlChar * extSubSystem;
+ int * space;
+ int spaceNr;
+ int spaceMax;
+ int * spaceTab;
+ int depth;
+ xmlParserInputPtr entity;
+ int charset;
+ int nodelen;
+ int nodemem;
+ int pedantic;
+ void *_private;
+ int loadsubset;
+ int linenumbers;
+ void *catalogs;
+ int recovery;
+ int progressive;
+ xmlDictPtr dict;
+ const xmlChar * *atts;
+ int maxatts;
+ int docdict;
+ const xmlChar *str_xml;
+ const xmlChar *str_xmlns;
+ const xmlChar *str_xml_ns;
+ int sax2;
+ int nsNr;
+ int nsMax;
+ const xmlChar * *nsTab;
+ int *attallocs;
+ void * *pushTab;
+ xmlHashTablePtr attsDefault;
+ xmlHashTablePtr attsSpecial;
+ int nsWellFormed;
+ int options;
+ int dictNames;
+ int freeElemsNr;
+ xmlNodePtr freeElems;
+ int freeAttrsNr;
+ xmlAttrPtr freeAttrs;
+ xmlError lastError;
+ xmlParserMode parseMode;
+ unsigned long nbentities;
+ unsigned long sizeentities;
+};
+struct _xmlSAXLocator {
+ const xmlChar *(*getPublicId)(void *ctx);
+ const xmlChar *(*getSystemId)(void *ctx);
+ int (*getLineNumber)(void *ctx);
+ int (*getColumnNumber)(void *ctx);
+};
+typedef xmlParserInputPtr (*resolveEntitySAXFunc) (void *ctx,
+ const xmlChar *publicId,
+ const xmlChar *systemId);
+typedef void (*internalSubsetSAXFunc) (void *ctx,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+typedef void (*externalSubsetSAXFunc) (void *ctx,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+typedef xmlEntityPtr (*getEntitySAXFunc) (void *ctx,
+ const xmlChar *name);
+typedef xmlEntityPtr (*getParameterEntitySAXFunc) (void *ctx,
+ const xmlChar *name);
+typedef void (*entityDeclSAXFunc) (void *ctx,
+ const xmlChar *name,
+ int type,
+ const xmlChar *publicId,
+ const xmlChar *systemId,
+ xmlChar *content);
+typedef void (*notationDeclSAXFunc)(void *ctx,
+ const xmlChar *name,
+ const xmlChar *publicId,
+ const xmlChar *systemId);
+typedef void (*attributeDeclSAXFunc)(void *ctx,
+ const xmlChar *elem,
+ const xmlChar *fullname,
+ int type,
+ int def,
+ const xmlChar *defaultValue,
+ xmlEnumerationPtr tree);
+typedef void (*elementDeclSAXFunc)(void *ctx,
+ const xmlChar *name,
+ int type,
+ xmlElementContentPtr content);
+typedef void (*unparsedEntityDeclSAXFunc)(void *ctx,
+ const xmlChar *name,
+ const xmlChar *publicId,
+ const xmlChar *systemId,
+ const xmlChar *notationName);
+typedef void (*setDocumentLocatorSAXFunc) (void *ctx,
+ xmlSAXLocatorPtr loc);
+typedef void (*startDocumentSAXFunc) (void *ctx);
+typedef void (*endDocumentSAXFunc) (void *ctx);
+typedef void (*startElementSAXFunc) (void *ctx,
+ const xmlChar *name,
+ const xmlChar **atts);
+typedef void (*endElementSAXFunc) (void *ctx,
+ const xmlChar *name);
+typedef void (*attributeSAXFunc) (void *ctx,
+ const xmlChar *name,
+ const xmlChar *value);
+typedef void (*referenceSAXFunc) (void *ctx,
+ const xmlChar *name);
+typedef void (*charactersSAXFunc) (void *ctx,
+ const xmlChar *ch,
+ int len);
+typedef void (*ignorableWhitespaceSAXFunc) (void *ctx,
+ const xmlChar *ch,
+ int len);
+typedef void (*processingInstructionSAXFunc) (void *ctx,
+ const xmlChar *target,
+ const xmlChar *data);
+typedef void (*commentSAXFunc) (void *ctx,
+ const xmlChar *value);
+typedef void (*cdataBlockSAXFunc) (
+ void *ctx,
+ const xmlChar *value,
+ int len);
+typedef void ( *warningSAXFunc) (void *ctx,
+ const char *msg, ...) __attribute__((__format__(__printf__,2,3)));
+typedef void ( *errorSAXFunc) (void *ctx,
+ const char *msg, ...) __attribute__((__format__(__printf__,2,3)));
+typedef void ( *fatalErrorSAXFunc) (void *ctx,
+ const char *msg, ...) __attribute__((__format__(__printf__,2,3)));
+typedef int (*isStandaloneSAXFunc) (void *ctx);
+typedef int (*hasInternalSubsetSAXFunc) (void *ctx);
+typedef int (*hasExternalSubsetSAXFunc) (void *ctx);
+typedef void (*startElementNsSAX2Func) (void *ctx,
+ const xmlChar *localname,
+ const xmlChar *prefix,
+ const xmlChar *URI,
+ int nb_namespaces,
+ const xmlChar **namespaces,
+ int nb_attributes,
+ int nb_defaulted,
+ const xmlChar **attributes);
+typedef void (*endElementNsSAX2Func) (void *ctx,
+ const xmlChar *localname,
+ const xmlChar *prefix,
+ const xmlChar *URI);
+struct _xmlSAXHandler {
+ internalSubsetSAXFunc internalSubset;
+ isStandaloneSAXFunc isStandalone;
+ hasInternalSubsetSAXFunc hasInternalSubset;
+ hasExternalSubsetSAXFunc hasExternalSubset;
+ resolveEntitySAXFunc resolveEntity;
+ getEntitySAXFunc getEntity;
+ entityDeclSAXFunc entityDecl;
+ notationDeclSAXFunc notationDecl;
+ attributeDeclSAXFunc attributeDecl;
+ elementDeclSAXFunc elementDecl;
+ unparsedEntityDeclSAXFunc unparsedEntityDecl;
+ setDocumentLocatorSAXFunc setDocumentLocator;
+ startDocumentSAXFunc startDocument;
+ endDocumentSAXFunc endDocument;
+ startElementSAXFunc startElement;
+ endElementSAXFunc endElement;
+ referenceSAXFunc reference;
+ charactersSAXFunc characters;
+ ignorableWhitespaceSAXFunc ignorableWhitespace;
+ processingInstructionSAXFunc processingInstruction;
+ commentSAXFunc comment;
+ warningSAXFunc warning;
+ errorSAXFunc error;
+ fatalErrorSAXFunc fatalError;
+ getParameterEntitySAXFunc getParameterEntity;
+ cdataBlockSAXFunc cdataBlock;
+ externalSubsetSAXFunc externalSubset;
+ unsigned int initialized;
+ void *_private;
+ startElementNsSAX2Func startElementNs;
+ endElementNsSAX2Func endElementNs;
+ xmlStructuredErrorFunc serror;
+};
+typedef struct _xmlSAXHandlerV1 xmlSAXHandlerV1;
+typedef xmlSAXHandlerV1 *xmlSAXHandlerV1Ptr;
+struct _xmlSAXHandlerV1 {
+ internalSubsetSAXFunc internalSubset;
+ isStandaloneSAXFunc isStandalone;
+ hasInternalSubsetSAXFunc hasInternalSubset;
+ hasExternalSubsetSAXFunc hasExternalSubset;
+ resolveEntitySAXFunc resolveEntity;
+ getEntitySAXFunc getEntity;
+ entityDeclSAXFunc entityDecl;
+ notationDeclSAXFunc notationDecl;
+ attributeDeclSAXFunc attributeDecl;
+ elementDeclSAXFunc elementDecl;
+ unparsedEntityDeclSAXFunc unparsedEntityDecl;
+ setDocumentLocatorSAXFunc setDocumentLocator;
+ startDocumentSAXFunc startDocument;
+ endDocumentSAXFunc endDocument;
+ startElementSAXFunc startElement;
+ endElementSAXFunc endElement;
+ referenceSAXFunc reference;
+ charactersSAXFunc characters;
+ ignorableWhitespaceSAXFunc ignorableWhitespace;
+ processingInstructionSAXFunc processingInstruction;
+ commentSAXFunc comment;
+ warningSAXFunc warning;
+ errorSAXFunc error;
+ fatalErrorSAXFunc fatalError;
+ getParameterEntitySAXFunc getParameterEntity;
+ cdataBlockSAXFunc cdataBlock;
+ externalSubsetSAXFunc externalSubset;
+ unsigned int initialized;
+};
+typedef xmlParserInputPtr (*xmlExternalEntityLoader) (const char *URL,
+ const char *ID,
+ xmlParserCtxtPtr context);
+typedef void *iconv_t;
+extern iconv_t iconv_open (__const char *__tocode, __const char *__fromcode);
+extern size_t iconv (iconv_t __cd, char **__restrict __inbuf,
+ size_t *__restrict __inbytesleft,
+ char **__restrict __outbuf,
+ size_t *__restrict __outbytesleft);
+extern int iconv_close (iconv_t __cd);
+typedef enum {
+ XML_CHAR_ENCODING_ERROR= -1,
+ XML_CHAR_ENCODING_NONE= 0,
+ XML_CHAR_ENCODING_UTF8= 1,
+ XML_CHAR_ENCODING_UTF16LE= 2,
+ XML_CHAR_ENCODING_UTF16BE= 3,
+ XML_CHAR_ENCODING_UCS4LE= 4,
+ XML_CHAR_ENCODING_UCS4BE= 5,
+ XML_CHAR_ENCODING_EBCDIC= 6,
+ XML_CHAR_ENCODING_UCS4_2143=7,
+ XML_CHAR_ENCODING_UCS4_3412=8,
+ XML_CHAR_ENCODING_UCS2= 9,
+ XML_CHAR_ENCODING_8859_1= 10,
+ XML_CHAR_ENCODING_8859_2= 11,
+ XML_CHAR_ENCODING_8859_3= 12,
+ XML_CHAR_ENCODING_8859_4= 13,
+ XML_CHAR_ENCODING_8859_5= 14,
+ XML_CHAR_ENCODING_8859_6= 15,
+ XML_CHAR_ENCODING_8859_7= 16,
+ XML_CHAR_ENCODING_8859_8= 17,
+ XML_CHAR_ENCODING_8859_9= 18,
+ XML_CHAR_ENCODING_2022_JP= 19,
+ XML_CHAR_ENCODING_SHIFT_JIS=20,
+ XML_CHAR_ENCODING_EUC_JP= 21,
+ XML_CHAR_ENCODING_ASCII= 22
+} xmlCharEncoding;
+typedef int (* xmlCharEncodingInputFunc)(unsigned char *out, int *outlen,
+ const unsigned char *in, int *inlen);
+typedef int (* xmlCharEncodingOutputFunc)(unsigned char *out, int *outlen,
+ const unsigned char *in, int *inlen);
+typedef struct _xmlCharEncodingHandler xmlCharEncodingHandler;
+typedef xmlCharEncodingHandler *xmlCharEncodingHandlerPtr;
+struct _xmlCharEncodingHandler {
+ char *name;
+ xmlCharEncodingInputFunc input;
+ xmlCharEncodingOutputFunc output;
+ iconv_t iconv_in;
+ iconv_t iconv_out;
+};
+ void
+ xmlInitCharEncodingHandlers (void);
+ void
+ xmlCleanupCharEncodingHandlers (void);
+ void
+ xmlRegisterCharEncodingHandler (xmlCharEncodingHandlerPtr handler);
+ xmlCharEncodingHandlerPtr
+ xmlGetCharEncodingHandler (xmlCharEncoding enc);
+ xmlCharEncodingHandlerPtr
+ xmlFindCharEncodingHandler (const char *name);
+ xmlCharEncodingHandlerPtr
+ xmlNewCharEncodingHandler (const char *name,
+ xmlCharEncodingInputFunc input,
+ xmlCharEncodingOutputFunc output);
+ int
+ xmlAddEncodingAlias (const char *name,
+ const char *alias);
+ int
+ xmlDelEncodingAlias (const char *alias);
+ const char *
+ xmlGetEncodingAlias (const char *alias);
+ void
+ xmlCleanupEncodingAliases (void);
+ xmlCharEncoding
+ xmlParseCharEncoding (const char *name);
+ const char *
+ xmlGetCharEncodingName (xmlCharEncoding enc);
+ xmlCharEncoding
+ xmlDetectCharEncoding (const unsigned char *in,
+ int len);
+ int
+ xmlCharEncOutFunc (xmlCharEncodingHandler *handler,
+ xmlBufferPtr out,
+ xmlBufferPtr in);
+ int
+ xmlCharEncInFunc (xmlCharEncodingHandler *handler,
+ xmlBufferPtr out,
+ xmlBufferPtr in);
+ int
+ xmlCharEncFirstLine (xmlCharEncodingHandler *handler,
+ xmlBufferPtr out,
+ xmlBufferPtr in);
+ int
+ xmlCharEncCloseFunc (xmlCharEncodingHandler *handler);
+ int
+ UTF8Toisolat1 (unsigned char *out,
+ int *outlen,
+ const unsigned char *in,
+ int *inlen);
+ int
+ isolat1ToUTF8 (unsigned char *out,
+ int *outlen,
+ const unsigned char *in,
+ int *inlen);
+typedef int ( *xmlInputMatchCallback) (char const *filename);
+typedef void * ( *xmlInputOpenCallback) (char const *filename);
+typedef int ( *xmlInputReadCallback) (void * context, char * buffer, int len);
+typedef int ( *xmlInputCloseCallback) (void * context);
+typedef int ( *xmlOutputMatchCallback) (char const *filename);
+typedef void * ( *xmlOutputOpenCallback) (char const *filename);
+typedef int ( *xmlOutputWriteCallback) (void * context, const char * buffer,
+ int len);
+typedef int ( *xmlOutputCloseCallback) (void * context);
+typedef xmlChar *xlinkHRef;
+typedef xmlChar *xlinkRole;
+typedef xmlChar *xlinkTitle;
+typedef enum {
+ XLINK_TYPE_NONE = 0,
+ XLINK_TYPE_SIMPLE,
+ XLINK_TYPE_EXTENDED,
+ XLINK_TYPE_EXTENDED_SET
+} xlinkType;
+typedef enum {
+ XLINK_SHOW_NONE = 0,
+ XLINK_SHOW_NEW,
+ XLINK_SHOW_EMBED,
+ XLINK_SHOW_REPLACE
+} xlinkShow;
+typedef enum {
+ XLINK_ACTUATE_NONE = 0,
+ XLINK_ACTUATE_AUTO,
+ XLINK_ACTUATE_ONREQUEST
+} xlinkActuate;
+typedef void (*xlinkNodeDetectFunc) (void *ctx, xmlNodePtr node);
+typedef void
+(*xlinkSimpleLinkFunk) (void *ctx,
+ xmlNodePtr node,
+ const xlinkHRef href,
+ const xlinkRole role,
+ const xlinkTitle title);
+typedef void
+(*xlinkExtendedLinkFunk)(void *ctx,
+ xmlNodePtr node,
+ int nbLocators,
+ const xlinkHRef *hrefs,
+ const xlinkRole *roles,
+ int nbArcs,
+ const xlinkRole *from,
+ const xlinkRole *to,
+ xlinkShow *show,
+ xlinkActuate *actuate,
+ int nbTitles,
+ const xlinkTitle *titles,
+ const xmlChar **langs);
+typedef void
+(*xlinkExtendedLinkSetFunk) (void *ctx,
+ xmlNodePtr node,
+ int nbLocators,
+ const xlinkHRef *hrefs,
+ const xlinkRole *roles,
+ int nbTitles,
+ const xlinkTitle *titles,
+ const xmlChar **langs);
+typedef struct _xlinkHandler xlinkHandler;
+typedef xlinkHandler *xlinkHandlerPtr;
+struct _xlinkHandler {
+ xlinkSimpleLinkFunk simple;
+ xlinkExtendedLinkFunk extended;
+ xlinkExtendedLinkSetFunk set;
+};
+ xlinkNodeDetectFunc
+ xlinkGetDefaultDetect (void);
+ void
+ xlinkSetDefaultDetect (xlinkNodeDetectFunc func);
+ xlinkHandlerPtr
+ xlinkGetDefaultHandler (void);
+ void
+ xlinkSetDefaultHandler (xlinkHandlerPtr handler);
+ xlinkType
+ xlinkIsLink (xmlDocPtr doc,
+ xmlNodePtr node);
+ const xmlChar *
+ getPublicId (void *ctx);
+ const xmlChar *
+ getSystemId (void *ctx);
+ void
+ setDocumentLocator (void *ctx,
+ xmlSAXLocatorPtr loc);
+ int
+ getLineNumber (void *ctx);
+ int
+ getColumnNumber (void *ctx);
+ int
+ isStandalone (void *ctx);
+ int
+ hasInternalSubset (void *ctx);
+ int
+ hasExternalSubset (void *ctx);
+ void
+ internalSubset (void *ctx,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ void
+ externalSubset (void *ctx,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ xmlEntityPtr
+ getEntity (void *ctx,
+ const xmlChar *name);
+ xmlEntityPtr
+ getParameterEntity (void *ctx,
+ const xmlChar *name);
+ xmlParserInputPtr
+ resolveEntity (void *ctx,
+ const xmlChar *publicId,
+ const xmlChar *systemId);
+ void
+ entityDecl (void *ctx,
+ const xmlChar *name,
+ int type,
+ const xmlChar *publicId,
+ const xmlChar *systemId,
+ xmlChar *content);
+ void
+ attributeDecl (void *ctx,
+ const xmlChar *elem,
+ const xmlChar *fullname,
+ int type,
+ int def,
+ const xmlChar *defaultValue,
+ xmlEnumerationPtr tree);
+ void
+ elementDecl (void *ctx,
+ const xmlChar *name,
+ int type,
+ xmlElementContentPtr content);
+ void
+ notationDecl (void *ctx,
+ const xmlChar *name,
+ const xmlChar *publicId,
+ const xmlChar *systemId);
+ void
+ unparsedEntityDecl (void *ctx,
+ const xmlChar *name,
+ const xmlChar *publicId,
+ const xmlChar *systemId,
+ const xmlChar *notationName);
+ void
+ startDocument (void *ctx);
+ void
+ endDocument (void *ctx);
+ void
+ attribute (void *ctx,
+ const xmlChar *fullname,
+ const xmlChar *value);
+ void
+ startElement (void *ctx,
+ const xmlChar *fullname,
+ const xmlChar **atts);
+ void
+ endElement (void *ctx,
+ const xmlChar *name);
+ void
+ reference (void *ctx,
+ const xmlChar *name);
+ void
+ characters (void *ctx,
+ const xmlChar *ch,
+ int len);
+ void
+ ignorableWhitespace (void *ctx,
+ const xmlChar *ch,
+ int len);
+ void
+ processingInstruction (void *ctx,
+ const xmlChar *target,
+ const xmlChar *data);
+ void
+ globalNamespace (void *ctx,
+ const xmlChar *href,
+ const xmlChar *prefix);
+ void
+ setNamespace (void *ctx,
+ const xmlChar *name);
+ xmlNsPtr
+ getNamespace (void *ctx);
+ int
+ checkNamespace (void *ctx,
+ xmlChar *nameSpace);
+ void
+ namespaceDecl (void *ctx,
+ const xmlChar *href,
+ const xmlChar *prefix);
+ void
+ comment (void *ctx,
+ const xmlChar *value);
+ void
+ cdataBlock (void *ctx,
+ const xmlChar *value,
+ int len);
+ void
+ initxmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr,
+ int warning);
+ void
+ inithtmlDefaultSAXHandler (xmlSAXHandlerV1 *hdlr);
+ void
+ initdocbDefaultSAXHandler (xmlSAXHandlerV1 *hdlr);
+ const xmlChar *
+ xmlSAX2GetPublicId (void *ctx);
+ const xmlChar *
+ xmlSAX2GetSystemId (void *ctx);
+ void
+ xmlSAX2SetDocumentLocator (void *ctx,
+ xmlSAXLocatorPtr loc);
+ int
+ xmlSAX2GetLineNumber (void *ctx);
+ int
+ xmlSAX2GetColumnNumber (void *ctx);
+ int
+ xmlSAX2IsStandalone (void *ctx);
+ int
+ xmlSAX2HasInternalSubset (void *ctx);
+ int
+ xmlSAX2HasExternalSubset (void *ctx);
+ void
+ xmlSAX2InternalSubset (void *ctx,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ void
+ xmlSAX2ExternalSubset (void *ctx,
+ const xmlChar *name,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ xmlEntityPtr
+ xmlSAX2GetEntity (void *ctx,
+ const xmlChar *name);
+ xmlEntityPtr
+ xmlSAX2GetParameterEntity (void *ctx,
+ const xmlChar *name);
+ xmlParserInputPtr
+ xmlSAX2ResolveEntity (void *ctx,
+ const xmlChar *publicId,
+ const xmlChar *systemId);
+ void
+ xmlSAX2EntityDecl (void *ctx,
+ const xmlChar *name,
+ int type,
+ const xmlChar *publicId,
+ const xmlChar *systemId,
+ xmlChar *content);
+ void
+ xmlSAX2AttributeDecl (void *ctx,
+ const xmlChar *elem,
+ const xmlChar *fullname,
+ int type,
+ int def,
+ const xmlChar *defaultValue,
+ xmlEnumerationPtr tree);
+ void
+ xmlSAX2ElementDecl (void *ctx,
+ const xmlChar *name,
+ int type,
+ xmlElementContentPtr content);
+ void
+ xmlSAX2NotationDecl (void *ctx,
+ const xmlChar *name,
+ const xmlChar *publicId,
+ const xmlChar *systemId);
+ void
+ xmlSAX2UnparsedEntityDecl (void *ctx,
+ const xmlChar *name,
+ const xmlChar *publicId,
+ const xmlChar *systemId,
+ const xmlChar *notationName);
+ void
+ xmlSAX2StartDocument (void *ctx);
+ void
+ xmlSAX2EndDocument (void *ctx);
+ void
+ xmlSAX2StartElement (void *ctx,
+ const xmlChar *fullname,
+ const xmlChar **atts);
+ void
+ xmlSAX2EndElement (void *ctx,
+ const xmlChar *name);
+ void
+ xmlSAX2StartElementNs (void *ctx,
+ const xmlChar *localname,
+ const xmlChar *prefix,
+ const xmlChar *URI,
+ int nb_namespaces,
+ const xmlChar **namespaces,
+ int nb_attributes,
+ int nb_defaulted,
+ const xmlChar **attributes);
+ void
+ xmlSAX2EndElementNs (void *ctx,
+ const xmlChar *localname,
+ const xmlChar *prefix,
+ const xmlChar *URI);
+ void
+ xmlSAX2Reference (void *ctx,
+ const xmlChar *name);
+ void
+ xmlSAX2Characters (void *ctx,
+ const xmlChar *ch,
+ int len);
+ void
+ xmlSAX2IgnorableWhitespace (void *ctx,
+ const xmlChar *ch,
+ int len);
+ void
+ xmlSAX2ProcessingInstruction (void *ctx,
+ const xmlChar *target,
+ const xmlChar *data);
+ void
+ xmlSAX2Comment (void *ctx,
+ const xmlChar *value);
+ void
+ xmlSAX2CDataBlock (void *ctx,
+ const xmlChar *value,
+ int len);
+ int
+ xmlSAXDefaultVersion (int version);
+ int
+ xmlSAXVersion (xmlSAXHandler *hdlr,
+ int version);
+ void
+ xmlSAX2InitDefaultSAXHandler (xmlSAXHandler *hdlr,
+ int warning);
+ void
+ xmlSAX2InitHtmlDefaultSAXHandler(xmlSAXHandler *hdlr);
+ void
+ htmlDefaultSAXHandlerInit (void);
+ void
+ xmlSAX2InitDocbDefaultSAXHandler(xmlSAXHandler *hdlr);
+ void
+ docbDefaultSAXHandlerInit (void);
+ void
+ xmlDefaultSAXHandlerInit (void);
+typedef void ( *xmlFreeFunc)(void *mem);
+typedef void *(__attribute__((alloc_size(1))) *xmlMallocFunc)(size_t size);
+typedef void *( *xmlReallocFunc)(void *mem, size_t size);
+typedef char *( *xmlStrdupFunc)(const char *str);
+ int
+ xmlMemSetup (xmlFreeFunc freeFunc,
+ xmlMallocFunc mallocFunc,
+ xmlReallocFunc reallocFunc,
+ xmlStrdupFunc strdupFunc);
+ int
+ xmlMemGet (xmlFreeFunc *freeFunc,
+ xmlMallocFunc *mallocFunc,
+ xmlReallocFunc *reallocFunc,
+ xmlStrdupFunc *strdupFunc);
+ int
+ xmlGcMemSetup (xmlFreeFunc freeFunc,
+ xmlMallocFunc mallocFunc,
+ xmlMallocFunc mallocAtomicFunc,
+ xmlReallocFunc reallocFunc,
+ xmlStrdupFunc strdupFunc);
+ int
+ xmlGcMemGet (xmlFreeFunc *freeFunc,
+ xmlMallocFunc *mallocFunc,
+ xmlMallocFunc *mallocAtomicFunc,
+ xmlReallocFunc *reallocFunc,
+ xmlStrdupFunc *strdupFunc);
+ int
+ xmlInitMemory (void);
+ void
+ xmlCleanupMemory (void);
+ int
+ xmlMemUsed (void);
+ int
+ xmlMemBlocks (void);
+ void
+ xmlMemDisplay (FILE *fp);
+ void
+ xmlMemDisplayLast(FILE *fp, long nbBytes);
+ void
+ xmlMemShow (FILE *fp, int nr);
+ void
+ xmlMemoryDump (void);
+ void *
+ xmlMemMalloc (size_t size) __attribute__((alloc_size(1)));
+ void *
+ xmlMemRealloc (void *ptr,size_t size);
+ void
+ xmlMemFree (void *ptr);
+ char *
+ xmlMemoryStrdup (const char *str);
+ void *
+ xmlMallocLoc (size_t size, const char *file, int line) __attribute__((alloc_size(1)));
+ void *
+ xmlReallocLoc (void *ptr, size_t size, const char *file, int line);
+ void *
+ xmlMallocAtomicLoc (size_t size, const char *file, int line) __attribute__((alloc_size(1)));
+ char *
+ xmlMemStrdupLoc (const char *str, const char *file, int line);
+ void xmlInitGlobals(void);
+ void xmlCleanupGlobals(void);
+typedef xmlParserInputBufferPtr (*xmlParserInputBufferCreateFilenameFunc) (const char *URI, xmlCharEncoding enc);
+typedef xmlOutputBufferPtr (*xmlOutputBufferCreateFilenameFunc) (const char *URI, xmlCharEncodingHandlerPtr encoder, int compression);
+ xmlParserInputBufferCreateFilenameFunc
+ xmlParserInputBufferCreateFilenameDefault (xmlParserInputBufferCreateFilenameFunc func);
+ xmlOutputBufferCreateFilenameFunc
+ xmlOutputBufferCreateFilenameDefault (xmlOutputBufferCreateFilenameFunc func);
+typedef void (*xmlRegisterNodeFunc) (xmlNodePtr node);
+typedef void (*xmlDeregisterNodeFunc) (xmlNodePtr node);
+typedef struct _xmlGlobalState xmlGlobalState;
+typedef xmlGlobalState *xmlGlobalStatePtr;
+struct _xmlGlobalState
+{
+ const char *xmlParserVersion;
+ xmlSAXLocator xmlDefaultSAXLocator;
+ xmlSAXHandlerV1 xmlDefaultSAXHandler;
+ xmlSAXHandlerV1 docbDefaultSAXHandler;
+ xmlSAXHandlerV1 htmlDefaultSAXHandler;
+ xmlFreeFunc xmlFree;
+ xmlMallocFunc xmlMalloc;
+ xmlStrdupFunc xmlMemStrdup;
+ xmlReallocFunc xmlRealloc;
+ xmlGenericErrorFunc xmlGenericError;
+ xmlStructuredErrorFunc xmlStructuredError;
+ void *xmlGenericErrorContext;
+ int oldXMLWDcompatibility;
+ xmlBufferAllocationScheme xmlBufferAllocScheme;
+ int xmlDefaultBufferSize;
+ int xmlSubstituteEntitiesDefaultValue;
+ int xmlDoValidityCheckingDefaultValue;
+ int xmlGetWarningsDefaultValue;
+ int xmlKeepBlanksDefaultValue;
+ int xmlLineNumbersDefaultValue;
+ int xmlLoadExtDtdDefaultValue;
+ int xmlParserDebugEntities;
+ int xmlPedanticParserDefaultValue;
+ int xmlSaveNoEmptyTags;
+ int xmlIndentTreeOutput;
+ const char *xmlTreeIndentString;
+ xmlRegisterNodeFunc xmlRegisterNodeDefaultValue;
+ xmlDeregisterNodeFunc xmlDeregisterNodeDefaultValue;
+ xmlMallocFunc xmlMallocAtomic;
+ xmlError xmlLastError;
+ xmlParserInputBufferCreateFilenameFunc xmlParserInputBufferCreateFilenameValue;
+ xmlOutputBufferCreateFilenameFunc xmlOutputBufferCreateFilenameValue;
+ void *xmlStructuredErrorContext;
+};
+typedef struct _xmlMutex xmlMutex;
+typedef xmlMutex *xmlMutexPtr;
+typedef struct _xmlRMutex xmlRMutex;
+typedef xmlRMutex *xmlRMutexPtr;
+ xmlMutexPtr
+ xmlNewMutex (void);
+ void
+ xmlMutexLock (xmlMutexPtr tok);
+ void
+ xmlMutexUnlock (xmlMutexPtr tok);
+ void
+ xmlFreeMutex (xmlMutexPtr tok);
+ xmlRMutexPtr
+ xmlNewRMutex (void);
+ void
+ xmlRMutexLock (xmlRMutexPtr tok);
+ void
+ xmlRMutexUnlock (xmlRMutexPtr tok);
+ void
+ xmlFreeRMutex (xmlRMutexPtr tok);
+ void
+ xmlInitThreads (void);
+ void
+ xmlLockLibrary (void);
+ void
+ xmlUnlockLibrary(void);
+ int
+ xmlGetThreadId (void);
+ int
+ xmlIsMainThread (void);
+ void
+ xmlCleanupThreads(void);
+ xmlGlobalStatePtr
+ xmlGetGlobalState(void);
+ void xmlInitializeGlobalState(xmlGlobalStatePtr gs);
+ void xmlThrDefSetGenericErrorFunc(void *ctx, xmlGenericErrorFunc handler);
+ void xmlThrDefSetStructuredErrorFunc(void *ctx, xmlStructuredErrorFunc handler);
+ xmlRegisterNodeFunc xmlRegisterNodeDefault(xmlRegisterNodeFunc func);
+ xmlRegisterNodeFunc xmlThrDefRegisterNodeDefault(xmlRegisterNodeFunc func);
+ xmlDeregisterNodeFunc xmlDeregisterNodeDefault(xmlDeregisterNodeFunc func);
+ xmlDeregisterNodeFunc xmlThrDefDeregisterNodeDefault(xmlDeregisterNodeFunc func);
+ xmlOutputBufferCreateFilenameFunc
+ xmlThrDefOutputBufferCreateFilenameDefault(xmlOutputBufferCreateFilenameFunc func);
+ xmlParserInputBufferCreateFilenameFunc
+ xmlThrDefParserInputBufferCreateFilenameDefault(xmlParserInputBufferCreateFilenameFunc func);
+extern xmlMallocFunc xmlMalloc;
+extern xmlMallocFunc xmlMallocAtomic;
+extern xmlReallocFunc xmlRealloc;
+extern xmlFreeFunc xmlFree;
+extern xmlStrdupFunc xmlMemStrdup;
+ xmlSAXHandlerV1 * __docbDefaultSAXHandler(void);
+ xmlSAXHandlerV1 * __htmlDefaultSAXHandler(void);
+ xmlError * __xmlLastError(void);
+ int * __oldXMLWDcompatibility(void);
+ xmlBufferAllocationScheme * __xmlBufferAllocScheme(void);
+ xmlBufferAllocationScheme xmlThrDefBufferAllocScheme(xmlBufferAllocationScheme v);
+ int * __xmlDefaultBufferSize(void);
+ int xmlThrDefDefaultBufferSize(int v);
+ xmlSAXHandlerV1 * __xmlDefaultSAXHandler(void);
+ xmlSAXLocator * __xmlDefaultSAXLocator(void);
+ int * __xmlDoValidityCheckingDefaultValue(void);
+ int xmlThrDefDoValidityCheckingDefaultValue(int v);
+ xmlGenericErrorFunc * __xmlGenericError(void);
+ xmlStructuredErrorFunc * __xmlStructuredError(void);
+ void * * __xmlGenericErrorContext(void);
+ void * * __xmlStructuredErrorContext(void);
+ int * __xmlGetWarningsDefaultValue(void);
+ int xmlThrDefGetWarningsDefaultValue(int v);
+ int * __xmlIndentTreeOutput(void);
+ int xmlThrDefIndentTreeOutput(int v);
+ const char * * __xmlTreeIndentString(void);
+ const char * xmlThrDefTreeIndentString(const char * v);
+ int * __xmlKeepBlanksDefaultValue(void);
+ int xmlThrDefKeepBlanksDefaultValue(int v);
+ int * __xmlLineNumbersDefaultValue(void);
+ int xmlThrDefLineNumbersDefaultValue(int v);
+ int * __xmlLoadExtDtdDefaultValue(void);
+ int xmlThrDefLoadExtDtdDefaultValue(int v);
+ int * __xmlParserDebugEntities(void);
+ int xmlThrDefParserDebugEntities(int v);
+ const char * * __xmlParserVersion(void);
+ int * __xmlPedanticParserDefaultValue(void);
+ int xmlThrDefPedanticParserDefaultValue(int v);
+ int * __xmlSaveNoEmptyTags(void);
+ int xmlThrDefSaveNoEmptyTags(int v);
+ int * __xmlSubstituteEntitiesDefaultValue(void);
+ int xmlThrDefSubstituteEntitiesDefaultValue(int v);
+ xmlRegisterNodeFunc * __xmlRegisterNodeDefaultValue(void);
+ xmlDeregisterNodeFunc * __xmlDeregisterNodeDefaultValue(void);
+ xmlParserInputBufferCreateFilenameFunc * __xmlParserInputBufferCreateFilenameValue(void);
+ xmlOutputBufferCreateFilenameFunc * __xmlOutputBufferCreateFilenameValue(void);
+struct _xmlParserInputBuffer {
+ void* context;
+ xmlInputReadCallback readcallback;
+ xmlInputCloseCallback closecallback;
+ xmlCharEncodingHandlerPtr encoder;
+ xmlBufferPtr buffer;
+ xmlBufferPtr raw;
+ int compressed;
+ int error;
+ unsigned long rawconsumed;
+};
+struct _xmlOutputBuffer {
+ void* context;
+ xmlOutputWriteCallback writecallback;
+ xmlOutputCloseCallback closecallback;
+ xmlCharEncodingHandlerPtr encoder;
+ xmlBufferPtr buffer;
+ xmlBufferPtr conv;
+ int written;
+ int error;
+};
+ void
+ xmlCleanupInputCallbacks (void);
+ int
+ xmlPopInputCallbacks (void);
+ void
+ xmlRegisterDefaultInputCallbacks (void);
+ xmlParserInputBufferPtr
+ xmlAllocParserInputBuffer (xmlCharEncoding enc);
+ xmlParserInputBufferPtr
+ xmlParserInputBufferCreateFilename (const char *URI,
+ xmlCharEncoding enc);
+ xmlParserInputBufferPtr
+ xmlParserInputBufferCreateFile (FILE *file,
+ xmlCharEncoding enc);
+ xmlParserInputBufferPtr
+ xmlParserInputBufferCreateFd (int fd,
+ xmlCharEncoding enc);
+ xmlParserInputBufferPtr
+ xmlParserInputBufferCreateMem (const char *mem, int size,
+ xmlCharEncoding enc);
+ xmlParserInputBufferPtr
+ xmlParserInputBufferCreateStatic (const char *mem, int size,
+ xmlCharEncoding enc);
+ xmlParserInputBufferPtr
+ xmlParserInputBufferCreateIO (xmlInputReadCallback ioread,
+ xmlInputCloseCallback ioclose,
+ void *ioctx,
+ xmlCharEncoding enc);
+ int
+ xmlParserInputBufferRead (xmlParserInputBufferPtr in,
+ int len);
+ int
+ xmlParserInputBufferGrow (xmlParserInputBufferPtr in,
+ int len);
+ int
+ xmlParserInputBufferPush (xmlParserInputBufferPtr in,
+ int len,
+ const char *buf);
+ void
+ xmlFreeParserInputBuffer (xmlParserInputBufferPtr in);
+ char *
+ xmlParserGetDirectory (const char *filename);
+ int
+ xmlRegisterInputCallbacks (xmlInputMatchCallback matchFunc,
+ xmlInputOpenCallback openFunc,
+ xmlInputReadCallback readFunc,
+ xmlInputCloseCallback closeFunc);
+xmlParserInputBufferPtr
+ __xmlParserInputBufferCreateFilename(const char *URI,
+ xmlCharEncoding enc);
+ void
+ xmlCleanupOutputCallbacks (void);
+ void
+ xmlRegisterDefaultOutputCallbacks(void);
+ xmlOutputBufferPtr
+ xmlAllocOutputBuffer (xmlCharEncodingHandlerPtr encoder);
+ xmlOutputBufferPtr
+ xmlOutputBufferCreateFilename (const char *URI,
+ xmlCharEncodingHandlerPtr encoder,
+ int compression);
+ xmlOutputBufferPtr
+ xmlOutputBufferCreateFile (FILE *file,
+ xmlCharEncodingHandlerPtr encoder);
+ xmlOutputBufferPtr
+ xmlOutputBufferCreateBuffer (xmlBufferPtr buffer,
+ xmlCharEncodingHandlerPtr encoder);
+ xmlOutputBufferPtr
+ xmlOutputBufferCreateFd (int fd,
+ xmlCharEncodingHandlerPtr encoder);
+ xmlOutputBufferPtr
+ xmlOutputBufferCreateIO (xmlOutputWriteCallback iowrite,
+ xmlOutputCloseCallback ioclose,
+ void *ioctx,
+ xmlCharEncodingHandlerPtr encoder);
+ int
+ xmlOutputBufferWrite (xmlOutputBufferPtr out,
+ int len,
+ const char *buf);
+ int
+ xmlOutputBufferWriteString (xmlOutputBufferPtr out,
+ const char *str);
+ int
+ xmlOutputBufferWriteEscape (xmlOutputBufferPtr out,
+ const xmlChar *str,
+ xmlCharEncodingOutputFunc escaping);
+ int
+ xmlOutputBufferFlush (xmlOutputBufferPtr out);
+ int
+ xmlOutputBufferClose (xmlOutputBufferPtr out);
+ int
+ xmlRegisterOutputCallbacks (xmlOutputMatchCallback matchFunc,
+ xmlOutputOpenCallback openFunc,
+ xmlOutputWriteCallback writeFunc,
+ xmlOutputCloseCallback closeFunc);
+xmlOutputBufferPtr
+ __xmlOutputBufferCreateFilename(const char *URI,
+ xmlCharEncodingHandlerPtr encoder,
+ int compression);
+ void
+ xmlRegisterHTTPPostCallbacks (void );
+ xmlParserInputPtr
+ xmlCheckHTTPInput (xmlParserCtxtPtr ctxt,
+ xmlParserInputPtr ret);
+ xmlParserInputPtr
+ xmlNoNetExternalEntityLoader (const char *URL,
+ const char *ID,
+ xmlParserCtxtPtr ctxt);
+ xmlChar *
+ xmlNormalizeWindowsPath (const xmlChar *path);
+ int
+ xmlCheckFilename (const char *path);
+ int
+ xmlFileMatch (const char *filename);
+ void *
+ xmlFileOpen (const char *filename);
+ int
+ xmlFileRead (void * context,
+ char * buffer,
+ int len);
+ int
+ xmlFileClose (void * context);
+ int
+ xmlIOHTTPMatch (const char *filename);
+ void *
+ xmlIOHTTPOpen (const char *filename);
+ void *
+ xmlIOHTTPOpenW (const char * post_uri,
+ int compression );
+ int
+ xmlIOHTTPRead (void * context,
+ char * buffer,
+ int len);
+ int
+ xmlIOHTTPClose (void * context);
+ int
+ xmlIOFTPMatch (const char *filename);
+ void *
+ xmlIOFTPOpen (const char *filename);
+ int
+ xmlIOFTPRead (void * context,
+ char * buffer,
+ int len);
+ int
+ xmlIOFTPClose (void * context);
+ void
+ xmlInitParser (void);
+ void
+ xmlCleanupParser (void);
+ int
+ xmlParserInputRead (xmlParserInputPtr in,
+ int len);
+ int
+ xmlParserInputGrow (xmlParserInputPtr in,
+ int len);
+ xmlDocPtr
+ xmlParseDoc (const xmlChar *cur);
+ xmlDocPtr
+ xmlParseFile (const char *filename);
+ xmlDocPtr
+ xmlParseMemory (const char *buffer,
+ int size);
+ int
+ xmlSubstituteEntitiesDefault(int val);
+ int
+ xmlKeepBlanksDefault (int val);
+ void
+ xmlStopParser (xmlParserCtxtPtr ctxt);
+ int
+ xmlPedanticParserDefault(int val);
+ int
+ xmlLineNumbersDefault (int val);
+ xmlDocPtr
+ xmlRecoverDoc (const xmlChar *cur);
+ xmlDocPtr
+ xmlRecoverMemory (const char *buffer,
+ int size);
+ xmlDocPtr
+ xmlRecoverFile (const char *filename);
+ int
+ xmlParseDocument (xmlParserCtxtPtr ctxt);
+ int
+ xmlParseExtParsedEnt (xmlParserCtxtPtr ctxt);
+ int
+ xmlSAXUserParseFile (xmlSAXHandlerPtr sax,
+ void *user_data,
+ const char *filename);
+ int
+ xmlSAXUserParseMemory (xmlSAXHandlerPtr sax,
+ void *user_data,
+ const char *buffer,
+ int size);
+ xmlDocPtr
+ xmlSAXParseDoc (xmlSAXHandlerPtr sax,
+ const xmlChar *cur,
+ int recovery);
+ xmlDocPtr
+ xmlSAXParseMemory (xmlSAXHandlerPtr sax,
+ const char *buffer,
+ int size,
+ int recovery);
+ xmlDocPtr
+ xmlSAXParseMemoryWithData (xmlSAXHandlerPtr sax,
+ const char *buffer,
+ int size,
+ int recovery,
+ void *data);
+ xmlDocPtr
+ xmlSAXParseFile (xmlSAXHandlerPtr sax,
+ const char *filename,
+ int recovery);
+ xmlDocPtr
+ xmlSAXParseFileWithData (xmlSAXHandlerPtr sax,
+ const char *filename,
+ int recovery,
+ void *data);
+ xmlDocPtr
+ xmlSAXParseEntity (xmlSAXHandlerPtr sax,
+ const char *filename);
+ xmlDocPtr
+ xmlParseEntity (const char *filename);
+ xmlDtdPtr
+ xmlSAXParseDTD (xmlSAXHandlerPtr sax,
+ const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ xmlDtdPtr
+ xmlParseDTD (const xmlChar *ExternalID,
+ const xmlChar *SystemID);
+ xmlDtdPtr
+ xmlIOParseDTD (xmlSAXHandlerPtr sax,
+ xmlParserInputBufferPtr input,
+ xmlCharEncoding enc);
+ int
+ xmlParseBalancedChunkMemory(xmlDocPtr doc,
+ xmlSAXHandlerPtr sax,
+ void *user_data,
+ int depth,
+ const xmlChar *string,
+ xmlNodePtr *lst);
+ xmlParserErrors
+ xmlParseInNodeContext (xmlNodePtr node,
+ const char *data,
+ int datalen,
+ int options,
+ xmlNodePtr *lst);
+ int
+ xmlParseBalancedChunkMemoryRecover(xmlDocPtr doc,
+ xmlSAXHandlerPtr sax,
+ void *user_data,
+ int depth,
+ const xmlChar *string,
+ xmlNodePtr *lst,
+ int recover);
+ int
+ xmlParseExternalEntity (xmlDocPtr doc,
+ xmlSAXHandlerPtr sax,
+ void *user_data,
+ int depth,
+ const xmlChar *URL,
+ const xmlChar *ID,
+ xmlNodePtr *lst);
+ int
+ xmlParseCtxtExternalEntity(xmlParserCtxtPtr ctx,
+ const xmlChar *URL,
+ const xmlChar *ID,
+ xmlNodePtr *lst);
+ xmlParserCtxtPtr
+ xmlNewParserCtxt (void);
+ int
+ xmlInitParserCtxt (xmlParserCtxtPtr ctxt);
+ void
+ xmlClearParserCtxt (xmlParserCtxtPtr ctxt);
+ void
+ xmlFreeParserCtxt (xmlParserCtxtPtr ctxt);
+ void
+ xmlSetupParserForBuffer (xmlParserCtxtPtr ctxt,
+ const xmlChar* buffer,
+ const char *filename);
+ xmlParserCtxtPtr
+ xmlCreateDocParserCtxt (const xmlChar *cur);
+ int
+ xmlGetFeaturesList (int *len,
+ const char **result);
+ int
+ xmlGetFeature (xmlParserCtxtPtr ctxt,
+ const char *name,
+ void *result);
+ int
+ xmlSetFeature (xmlParserCtxtPtr ctxt,
+ const char *name,
+ void *value);
+ xmlParserCtxtPtr
+ xmlCreatePushParserCtxt(xmlSAXHandlerPtr sax,
+ void *user_data,
+ const char *chunk,
+ int size,
+ const char *filename);
+ int
+ xmlParseChunk (xmlParserCtxtPtr ctxt,
+ const char *chunk,
+ int size,
+ int terminate);
+ xmlParserCtxtPtr
+ xmlCreateIOParserCtxt (xmlSAXHandlerPtr sax,
+ void *user_data,
+ xmlInputReadCallback ioread,
+ xmlInputCloseCallback ioclose,
+ void *ioctx,
+ xmlCharEncoding enc);
+ xmlParserInputPtr
+ xmlNewIOInputStream (xmlParserCtxtPtr ctxt,
+ xmlParserInputBufferPtr input,
+ xmlCharEncoding enc);
+ const xmlParserNodeInfo*
+ xmlParserFindNodeInfo (const xmlParserCtxtPtr ctxt,
+ const xmlNodePtr node);
+ void
+ xmlInitNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
+ void
+ xmlClearNodeInfoSeq (xmlParserNodeInfoSeqPtr seq);
+ unsigned long
+ xmlParserFindNodeInfoIndex(const xmlParserNodeInfoSeqPtr seq,
+ const xmlNodePtr node);
+ void
+ xmlParserAddNodeInfo (xmlParserCtxtPtr ctxt,
+ const xmlParserNodeInfoPtr info);
+ void
+ xmlSetExternalEntityLoader(xmlExternalEntityLoader f);
+ xmlExternalEntityLoader
+ xmlGetExternalEntityLoader(void);
+ xmlParserInputPtr
+ xmlLoadExternalEntity (const char *URL,
+ const char *ID,
+ xmlParserCtxtPtr ctxt);
+ long
+ xmlByteConsumed (xmlParserCtxtPtr ctxt);
+typedef enum {
+ XML_PARSE_RECOVER = 1<<0,
+ XML_PARSE_NOENT = 1<<1,
+ XML_PARSE_DTDLOAD = 1<<2,
+ XML_PARSE_DTDATTR = 1<<3,
+ XML_PARSE_DTDVALID = 1<<4,
+ XML_PARSE_NOERROR = 1<<5,
+ XML_PARSE_NOWARNING = 1<<6,
+ XML_PARSE_PEDANTIC = 1<<7,
+ XML_PARSE_NOBLANKS = 1<<8,
+ XML_PARSE_SAX1 = 1<<9,
+ XML_PARSE_XINCLUDE = 1<<10,
+ XML_PARSE_NONET = 1<<11,
+ XML_PARSE_NODICT = 1<<12,
+ XML_PARSE_NSCLEAN = 1<<13,
+ XML_PARSE_NOCDATA = 1<<14,
+ XML_PARSE_NOXINCNODE= 1<<15,
+ XML_PARSE_COMPACT = 1<<16,
+ XML_PARSE_OLD10 = 1<<17,
+ XML_PARSE_NOBASEFIX = 1<<18,
+ XML_PARSE_HUGE = 1<<19,
+ XML_PARSE_OLDSAX = 1<<20
+} xmlParserOption;
+ void
+ xmlCtxtReset (xmlParserCtxtPtr ctxt);
+ int
+ xmlCtxtResetPush (xmlParserCtxtPtr ctxt,
+ const char *chunk,
+ int size,
+ const char *filename,
+ const char *encoding);
+ int
+ xmlCtxtUseOptions (xmlParserCtxtPtr ctxt,
+ int options);
+ xmlDocPtr
+ xmlReadDoc (const xmlChar *cur,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlReadFile (const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlReadMemory (const char *buffer,
+ int size,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlReadFd (int fd,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlReadIO (xmlInputReadCallback ioread,
+ xmlInputCloseCallback ioclose,
+ void *ioctx,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlCtxtReadDoc (xmlParserCtxtPtr ctxt,
+ const xmlChar *cur,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlCtxtReadFile (xmlParserCtxtPtr ctxt,
+ const char *filename,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlCtxtReadMemory (xmlParserCtxtPtr ctxt,
+ const char *buffer,
+ int size,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlCtxtReadFd (xmlParserCtxtPtr ctxt,
+ int fd,
+ const char *URL,
+ const char *encoding,
+ int options);
+ xmlDocPtr
+ xmlCtxtReadIO (xmlParserCtxtPtr ctxt,
+ xmlInputReadCallback ioread,
+ xmlInputCloseCallback ioclose,
+ void *ioctx,
+ const char *URL,
+ const char *encoding,
+ int options);
+typedef enum {
+ XML_WITH_THREAD = 1,
+ XML_WITH_TREE = 2,
+ XML_WITH_OUTPUT = 3,
+ XML_WITH_PUSH = 4,
+ XML_WITH_READER = 5,
+ XML_WITH_PATTERN = 6,
+ XML_WITH_WRITER = 7,
+ XML_WITH_SAX1 = 8,
+ XML_WITH_FTP = 9,
+ XML_WITH_HTTP = 10,
+ XML_WITH_VALID = 11,
+ XML_WITH_HTML = 12,
+ XML_WITH_LEGACY = 13,
+ XML_WITH_C14N = 14,
+ XML_WITH_CATALOG = 15,
+ XML_WITH_XPATH = 16,
+ XML_WITH_XPTR = 17,
+ XML_WITH_XINCLUDE = 18,
+ XML_WITH_ICONV = 19,
+ XML_WITH_ISO8859X = 20,
+ XML_WITH_UNICODE = 21,
+ XML_WITH_REGEXP = 22,
+ XML_WITH_AUTOMATA = 23,
+ XML_WITH_EXPR = 24,
+ XML_WITH_SCHEMAS = 25,
+ XML_WITH_SCHEMATRON = 26,
+ XML_WITH_MODULES = 27,
+ XML_WITH_DEBUG = 28,
+ XML_WITH_DEBUG_MEM = 29,
+ XML_WITH_DEBUG_RUN = 30,
+ XML_WITH_ZLIB = 31,
+ XML_WITH_NONE = 99999
+} xmlFeature;
+ int
+ xmlHasFeature (xmlFeature feature);
+typedef enum
+{
+ GST_OBJECT_DISPOSING = (1<<0),
+ GST_OBJECT_FLOATING = (1<<1),
+ GST_OBJECT_FLAG_LAST = (1<<4)
+} GstObjectFlags;
+typedef struct _GstObject GstObject;
+typedef struct _GstObjectClass GstObjectClass;
+struct _GstObject {
+ GObject object;
+ gint refcount;
+ GMutex *lock;
+ gchar *name;
+ gchar *name_prefix;
+ GstObject *parent;
+ guint32 flags;
+ gpointer _gst_reserved;
+};
+struct _GstObjectClass {
+ GObjectClass parent_class;
+ gchar *path_string_separator;
+ GObject *signal_object;
+ GStaticRecMutex *lock;
+ void (*parent_set) (GstObject * object, GstObject * parent);
+ void (*parent_unset) (GstObject * object, GstObject * parent);
+ void (*object_saved) (GstObject * object, xmlNodePtr parent);
+ void (*deep_notify) (GstObject * object, GstObject * orig, GParamSpec * pspec);
+ xmlNodePtr (*save_thyself) (GstObject * object, xmlNodePtr parent);
+ void (*restore_thyself) (GstObject * object, xmlNodePtr self);
+ gpointer _gst_reserved[4];
+};
+GType gst_object_get_type (void);
+gboolean gst_object_set_name (GstObject *object, const gchar *name);
+gchar* gst_object_get_name (GstObject *object);
+void gst_object_set_name_prefix (GstObject *object, const gchar *name_prefix);
+gchar* gst_object_get_name_prefix (GstObject *object);
+gboolean gst_object_set_parent (GstObject *object, GstObject *parent);
+GstObject* gst_object_get_parent (GstObject *object);
+void gst_object_unparent (GstObject *object);
+gboolean gst_object_has_ancestor (GstObject *object, GstObject *ancestor);
+void gst_object_default_deep_notify (GObject *object, GstObject *orig,
+ GParamSpec *pspec, gchar **excluded_props);
+gpointer gst_object_ref (gpointer object);
+void gst_object_unref (gpointer object);
+void gst_object_ref_sink (gpointer object);
+void gst_object_sink (gpointer object);
+void gst_object_replace (GstObject **oldobj, GstObject *newobj);
+gchar * gst_object_get_path_string (GstObject *object);
+gboolean gst_object_check_uniqueness (GList *list, const gchar *name);
+xmlNodePtr gst_object_save_thyself (GstObject *object, xmlNodePtr parent);
+void gst_object_restore_thyself (GstObject *object, xmlNodePtr self);
+guint gst_class_signal_connect (GstObjectClass *klass,
+ const gchar *name,
+ gpointer func,
+ gpointer func_data);
+void gst_class_signal_emit_by_name (GstObject * object,
+ const gchar * name,
+ xmlNodePtr self);
+typedef struct _GstMiniObject GstMiniObject;
+typedef struct _GstMiniObjectClass GstMiniObjectClass;
+typedef GstMiniObject * (*GstMiniObjectCopyFunction) (const GstMiniObject *obj);
+typedef void (*GstMiniObjectFinalizeFunction) (GstMiniObject *obj);
+typedef enum
+{
+ GST_MINI_OBJECT_FLAG_READONLY = (1<<0),
+ GST_MINI_OBJECT_FLAG_LAST = (1<<4)
+} GstMiniObjectFlags;
+struct _GstMiniObject {
+ GTypeInstance instance;
+ gint refcount;
+ guint flags;
+ gpointer _gst_reserved;
+};
+struct _GstMiniObjectClass {
+ GTypeClass type_class;
+ GstMiniObjectCopyFunction copy;
+ GstMiniObjectFinalizeFunction finalize;
+ gpointer _gst_reserved;
+};
+GType gst_mini_object_get_type (void);
+GstMiniObject* gst_mini_object_new (GType type);
+GstMiniObject* gst_mini_object_copy (const GstMiniObject *mini_object);
+gboolean gst_mini_object_is_writable (const GstMiniObject *mini_object);
+GstMiniObject* gst_mini_object_make_writable (GstMiniObject *mini_object);
+GstMiniObject* gst_mini_object_ref (GstMiniObject *mini_object);
+void gst_mini_object_unref (GstMiniObject *mini_object);
+void gst_mini_object_replace (GstMiniObject **olddata, GstMiniObject *newdata);
+typedef struct _GstParamSpecMiniObject GstParamSpecMiniObject;
+struct _GstParamSpecMiniObject
+{
+ GParamSpec parent_instance;
+};
+GType gst_param_spec_mini_object_get_type (void);
+GParamSpec* gst_param_spec_mini_object (const char *name, const char *nick,
+ const char *blurb, GType object_type,
+ GParamFlags flags);
+void gst_value_set_mini_object (GValue *value, GstMiniObject *mini_object);
+void gst_value_take_mini_object (GValue *value, GstMiniObject *mini_object);
+GstMiniObject* gst_value_get_mini_object (const GValue *value);
+GstMiniObject* gst_value_dup_mini_object (const GValue *value);
+typedef guint64 GstClockTime;
+typedef gint64 GstClockTimeDiff;
+typedef gpointer GstClockID;
+typedef struct _GstClockEntry GstClockEntry;
+typedef struct _GstClock GstClock;
+typedef struct _GstClockClass GstClockClass;
+typedef struct _GstClockPrivate GstClockPrivate;
+typedef gboolean (*GstClockCallback) (GstClock *clock, GstClockTime time,
+ GstClockID id, gpointer user_data);
+typedef enum
+{
+ GST_CLOCK_OK = 0,
+ GST_CLOCK_EARLY = 1,
+ GST_CLOCK_UNSCHEDULED = 2,
+ GST_CLOCK_BUSY = 3,
+ GST_CLOCK_BADTIME = 4,
+ GST_CLOCK_ERROR = 5,
+ GST_CLOCK_UNSUPPORTED = 6
+} GstClockReturn;
+typedef enum {
+ GST_CLOCK_ENTRY_SINGLE,
+ GST_CLOCK_ENTRY_PERIODIC
+} GstClockEntryType;
+struct _GstClockEntry {
+ gint refcount;
+ GstClock *clock;
+ GstClockEntryType type;
+ GstClockTime time;
+ GstClockTime interval;
+ GstClockReturn status;
+ GstClockCallback func;
+ gpointer user_data;
+};
+typedef enum {
+ GST_CLOCK_FLAG_CAN_DO_SINGLE_SYNC = (GST_OBJECT_FLAG_LAST << 0),
+ GST_CLOCK_FLAG_CAN_DO_SINGLE_ASYNC = (GST_OBJECT_FLAG_LAST << 1),
+ GST_CLOCK_FLAG_CAN_DO_PERIODIC_SYNC = (GST_OBJECT_FLAG_LAST << 2),
+ GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC = (GST_OBJECT_FLAG_LAST << 3),
+ GST_CLOCK_FLAG_CAN_SET_RESOLUTION = (GST_OBJECT_FLAG_LAST << 4),
+ GST_CLOCK_FLAG_CAN_SET_MASTER = (GST_OBJECT_FLAG_LAST << 5),
+ GST_CLOCK_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 8)
+} GstClockFlags;
+struct _GstClock {
+ GstObject object;
+ GMutex *slave_lock;
+ GstClockTime internal_calibration;
+ GstClockTime external_calibration;
+ GstClockTime rate_numerator;
+ GstClockTime rate_denominator;
+ GstClockTime last_time;
+ GList *entries;
+ GCond *entries_changed;
+ GstClockTime resolution;
+ gboolean stats;
+ GstClock *master;
+ gboolean filling;
+ gint window_size;
+ gint window_threshold;
+ gint time_index;
+ GstClockTime timeout;
+ GstClockTime *times;
+ GstClockID clockid;
+ union {
+ GstClockPrivate *priv;
+ GstClockTime _gst_reserved[4];
+ } ABI;
+};
+struct _GstClockClass {
+ GstObjectClass parent_class;
+ GstClockTime (*change_resolution) (GstClock *clock,
+ GstClockTime old_resolution,
+ GstClockTime new_resolution);
+ GstClockTime (*get_resolution) (GstClock *clock);
+ GstClockTime (*get_internal_time) (GstClock *clock);
+ GstClockReturn (*wait) (GstClock *clock, GstClockEntry *entry);
+ GstClockReturn (*wait_async) (GstClock *clock, GstClockEntry *entry);
+ void (*unschedule) (GstClock *clock, GstClockEntry *entry);
+ GstClockReturn (*wait_jitter) (GstClock *clock, GstClockEntry *entry,
+ GstClockTimeDiff *jitter);
+ gpointer _gst_reserved[4 - 1];
+};
+GType gst_clock_get_type (void);
+GstClockTime gst_clock_set_resolution (GstClock *clock,
+ GstClockTime resolution);
+GstClockTime gst_clock_get_resolution (GstClock *clock);
+GstClockTime gst_clock_get_time (GstClock *clock);
+void gst_clock_set_calibration (GstClock *clock, GstClockTime internal,
+ GstClockTime external,
+ GstClockTime rate_num,
+ GstClockTime rate_denom);
+void gst_clock_get_calibration (GstClock *clock, GstClockTime *internal,
+ GstClockTime *external,
+ GstClockTime *rate_num,
+ GstClockTime *rate_denom);
+gboolean gst_clock_set_master (GstClock *clock, GstClock *master);
+GstClock* gst_clock_get_master (GstClock *clock);
+gboolean gst_clock_add_observation (GstClock *clock, GstClockTime slave,
+ GstClockTime master, gdouble *r_squared);
+GstClockTime gst_clock_get_internal_time (GstClock *clock);
+GstClockTime gst_clock_adjust_unlocked (GstClock *clock, GstClockTime internal);
+GstClockTime gst_clock_unadjust_unlocked (GstClock * clock, GstClockTime external);
+GstClockID gst_clock_new_single_shot_id (GstClock *clock,
+ GstClockTime time);
+GstClockID gst_clock_new_periodic_id (GstClock *clock,
+ GstClockTime start_time,
+ GstClockTime interval);
+GstClockID gst_clock_id_ref (GstClockID id);
+void gst_clock_id_unref (GstClockID id);
+gint gst_clock_id_compare_func (gconstpointer id1, gconstpointer id2);
+GstClockTime gst_clock_id_get_time (GstClockID id);
+GstClockReturn gst_clock_id_wait (GstClockID id,
+ GstClockTimeDiff *jitter);
+GstClockReturn gst_clock_id_wait_async (GstClockID id,
+ GstClockCallback func,
+ gpointer user_data);
+void gst_clock_id_unschedule (GstClockID id);
+typedef struct _GstStructure GstStructure;
+typedef gboolean (*GstStructureForeachFunc) (GQuark field_id,
+ const GValue * value,
+ gpointer user_data);
+typedef gboolean (*GstStructureMapFunc) (GQuark field_id,
+ GValue * value,
+ gpointer user_data);
+struct _GstStructure {
+ GType type;
+ GQuark name;
+ gint *parent_refcount;
+ GArray *fields;
+ gpointer _gst_reserved;
+};
+GType gst_structure_get_type (void);
+GstStructure * gst_structure_empty_new (const gchar * name);
+GstStructure * gst_structure_id_empty_new (GQuark quark);
+GstStructure * gst_structure_new (const gchar * name,
+ const gchar * firstfield,
+ ...);
+GstStructure * gst_structure_new_valist (const gchar * name,
+ const gchar * firstfield,
+ va_list varargs);
+GstStructure * gst_structure_id_new (GQuark name_quark,
+ GQuark field_quark,
+ ...);
+GstStructure * gst_structure_copy (const GstStructure *structure);
+void gst_structure_set_parent_refcount (GstStructure *structure,
+ gint *refcount);
+void gst_structure_free (GstStructure *structure);
+const gchar * gst_structure_get_name (const GstStructure *structure);
+GQuark gst_structure_get_name_id (const GstStructure *structure);
+gboolean gst_structure_has_name (const GstStructure *structure,
+ const gchar *name);
+void gst_structure_set_name (GstStructure *structure,
+ const gchar *name);
+void gst_structure_id_set_value (GstStructure *structure,
+ GQuark field,
+ const GValue *value);
+void gst_structure_set_value (GstStructure *structure,
+ const gchar *fieldname,
+ const GValue *value);
+void gst_structure_set (GstStructure *structure,
+ const gchar *fieldname,
+ ...) __attribute__((__sentinel__));
+void gst_structure_set_valist (GstStructure *structure,
+ const gchar *fieldname,
+ va_list varargs);
+void gst_structure_id_set (GstStructure *structure,
+ GQuark fieldname,
+ ...) __attribute__((__sentinel__));
+void gst_structure_id_set_valist (GstStructure *structure,
+ GQuark fieldname,
+ va_list varargs);
+gboolean gst_structure_get_valist (GstStructure *structure,
+ const char *first_fieldname,
+ va_list args);
+gboolean gst_structure_get (GstStructure *structure,
+ const char *first_fieldname,
+ ...) __attribute__((__sentinel__));
+gboolean gst_structure_id_get_valist (GstStructure *structure,
+ GQuark first_field_id,
+ va_list args);
+gboolean gst_structure_id_get (GstStructure *structure,
+ GQuark first_field_id,
+ ...) __attribute__((__sentinel__));
+const GValue * gst_structure_id_get_value (const GstStructure *structure,
+ GQuark field);
+const GValue * gst_structure_get_value (const GstStructure *structure,
+ const gchar *fieldname);
+void gst_structure_remove_field (GstStructure *structure,
+ const gchar *fieldname);
+void gst_structure_remove_fields (GstStructure *structure,
+ const gchar *fieldname,
+ ...) __attribute__((__sentinel__));
+void gst_structure_remove_fields_valist (GstStructure *structure,
+ const gchar *fieldname,
+ va_list varargs);
+void gst_structure_remove_all_fields (GstStructure *structure);
+GType gst_structure_get_field_type (const GstStructure *structure,
+ const gchar *fieldname);
+gboolean gst_structure_foreach (const GstStructure *structure,
+ GstStructureForeachFunc func,
+ gpointer user_data);
+gboolean gst_structure_map_in_place (GstStructure *structure,
+ GstStructureMapFunc func,
+ gpointer user_data);
+gint gst_structure_n_fields (const GstStructure *structure);
+const gchar * gst_structure_nth_field_name (const GstStructure *structure, guint index);
+gboolean gst_structure_has_field (const GstStructure *structure,
+ const gchar *fieldname);
+gboolean gst_structure_has_field_typed (const GstStructure *structure,
+ const gchar *fieldname,
+ GType type);
+gboolean gst_structure_get_boolean (const GstStructure *structure,
+ const gchar *fieldname,
+ gboolean *value);
+gboolean gst_structure_get_int (const GstStructure *structure,
+ const gchar *fieldname,
+ gint *value);
+gboolean gst_structure_get_uint (const GstStructure *structure,
+ const gchar *fieldname,
+ guint *value);
+gboolean gst_structure_get_fourcc (const GstStructure *structure,
+ const gchar *fieldname,
+ guint32 *value);
+gboolean gst_structure_get_double (const GstStructure *structure,
+ const gchar *fieldname,
+ gdouble *value);
+gboolean gst_structure_get_date (const GstStructure *structure,
+ const gchar *fieldname,
+ GDate **value);
+gboolean gst_structure_get_clock_time (const GstStructure *structure,
+ const gchar *fieldname,
+ GstClockTime *value);
+const gchar * gst_structure_get_string (const GstStructure *structure,
+ const gchar *fieldname);
+gboolean gst_structure_get_enum (const GstStructure *structure,
+ const gchar *fieldname,
+ GType enumtype,
+ gint *value);
+gboolean gst_structure_get_fraction (const GstStructure *structure,
+ const gchar *fieldname,
+ gint *value_numerator,
+ gint *value_denominator);
+gchar * gst_structure_to_string (const GstStructure *structure);
+GstStructure * gst_structure_from_string (const gchar *string,
+ gchar **end);
+gboolean gst_structure_fixate_field_nearest_int (GstStructure *structure,
+ const char *field_name,
+ int target);
+gboolean gst_structure_fixate_field_nearest_double (GstStructure *structure,
+ const char *field_name,
+ double target);
+gboolean gst_structure_fixate_field_boolean (GstStructure *structure,
+ const char *field_name,
+ gboolean target);
+gboolean gst_structure_fixate_field_nearest_fraction (GstStructure *structure,
+ const char *field_name,
+ const gint target_numerator,
+ const gint target_denominator);
+typedef enum {
+ GST_CAPS_FLAGS_ANY = (1 << 0)
+} GstCapsFlags;
+typedef struct _GstCaps GstCaps;
+typedef struct _GstStaticCaps GstStaticCaps;
+struct _GstCaps {
+ GType type;
+ gint refcount;
+ GstCapsFlags flags;
+ GPtrArray *structs;
+ gpointer _gst_reserved[4];
+};
+struct _GstStaticCaps {
+ GstCaps caps;
+ const char *string;
+ gpointer _gst_reserved[4];
+};
+GType gst_caps_get_type (void);
+GstCaps * gst_caps_new_empty (void);
+GstCaps * gst_caps_new_any (void);
+GstCaps * gst_caps_new_simple (const char *media_type,
+ const char *fieldname,
+ ...);
+GstCaps * gst_caps_new_full (GstStructure *struct1, ...);
+GstCaps * gst_caps_new_full_valist (GstStructure *structure,
+ va_list var_args);
+GstCaps * gst_caps_ref (GstCaps *caps);
+GstCaps * gst_caps_copy (const GstCaps *caps);
+GstCaps * gst_caps_make_writable (GstCaps *caps);
+void gst_caps_unref (GstCaps *caps);
+GType gst_static_caps_get_type (void);
+GstCaps * gst_static_caps_get (GstStaticCaps *static_caps);
+void gst_caps_append (GstCaps *caps1,
+ GstCaps *caps2);
+void gst_caps_merge (GstCaps *caps1,
+ GstCaps *caps2);
+void gst_caps_append_structure (GstCaps *caps,
+ GstStructure *structure);
+void gst_caps_remove_structure (GstCaps *caps, guint idx);
+void gst_caps_merge_structure (GstCaps *caps,
+ GstStructure *structure);
+guint gst_caps_get_size (const GstCaps *caps);
+GstStructure * gst_caps_get_structure (const GstCaps *caps,
+ guint index);
+GstCaps * gst_caps_copy_nth (const GstCaps *caps, guint nth);
+void gst_caps_truncate (GstCaps *caps);
+void gst_caps_set_simple (GstCaps *caps,
+ const char *field, ...) __attribute__((__sentinel__));
+void gst_caps_set_simple_valist (GstCaps *caps,
+ const char *field,
+ va_list varargs);
+gboolean gst_caps_is_any (const GstCaps *caps);
+gboolean gst_caps_is_empty (const GstCaps *caps);
+gboolean gst_caps_is_fixed (const GstCaps *caps);
+gboolean gst_caps_is_always_compatible (const GstCaps *caps1,
+ const GstCaps *caps2);
+gboolean gst_caps_is_subset (const GstCaps *subset,
+ const GstCaps *superset);
+gboolean gst_caps_is_equal (const GstCaps *caps1,
+ const GstCaps *caps2);
+gboolean gst_caps_is_equal_fixed (const GstCaps *caps1,
+ const GstCaps *caps2);
+GstCaps * gst_caps_intersect (const GstCaps *caps1,
+ const GstCaps *caps2);
+GstCaps * gst_caps_subtract (const GstCaps *minuend,
+ const GstCaps *subtrahend);
+GstCaps * gst_caps_union (const GstCaps *caps1,
+ const GstCaps *caps2);
+GstCaps * gst_caps_normalize (const GstCaps *caps);
+gboolean gst_caps_do_simplify (GstCaps *caps);
+xmlNodePtr gst_caps_save_thyself (const GstCaps *caps,
+ xmlNodePtr parent);
+GstCaps * gst_caps_load_thyself (xmlNodePtr parent);
+void gst_caps_replace (GstCaps **caps,
+ GstCaps *newcaps);
+gchar * gst_caps_to_string (const GstCaps *caps);
+GstCaps * gst_caps_from_string (const gchar *string);
+typedef struct _GstBuffer GstBuffer;
+typedef struct _GstBufferClass GstBufferClass;
+typedef enum {
+ GST_BUFFER_FLAG_READONLY = GST_MINI_OBJECT_FLAG_READONLY,
+ GST_BUFFER_FLAG_PREROLL = (GST_MINI_OBJECT_FLAG_LAST << 0),
+ GST_BUFFER_FLAG_DISCONT = (GST_MINI_OBJECT_FLAG_LAST << 1),
+ GST_BUFFER_FLAG_IN_CAPS = (GST_MINI_OBJECT_FLAG_LAST << 2),
+ GST_BUFFER_FLAG_GAP = (GST_MINI_OBJECT_FLAG_LAST << 3),
+ GST_BUFFER_FLAG_DELTA_UNIT = (GST_MINI_OBJECT_FLAG_LAST << 4),
+ GST_BUFFER_FLAG_MEDIA1 = (GST_MINI_OBJECT_FLAG_LAST << 5),
+ GST_BUFFER_FLAG_MEDIA2 = (GST_MINI_OBJECT_FLAG_LAST << 6),
+ GST_BUFFER_FLAG_MEDIA3 = (GST_MINI_OBJECT_FLAG_LAST << 7),
+ GST_BUFFER_FLAG_LAST = (GST_MINI_OBJECT_FLAG_LAST << 8)
+} GstBufferFlag;
+struct _GstBuffer {
+ GstMiniObject mini_object;
+ guint8 *data;
+ guint size;
+ GstClockTime timestamp;
+ GstClockTime duration;
+ GstCaps *caps;
+ guint64 offset;
+ guint64 offset_end;
+ guint8 *malloc_data;
+ GFreeFunc free_func;
+ gpointer _gst_reserved[4 - 1];
+};
+struct _GstBufferClass {
+ GstMiniObjectClass mini_object_class;
+};
+GType gst_buffer_get_type (void);
+GstBuffer * gst_buffer_new (void);
+GstBuffer * gst_buffer_new_and_alloc (guint size);
+GstBuffer * gst_buffer_try_new_and_alloc (guint size);
+static inline GstBuffer *
+gst_buffer_ref (GstBuffer * buf)
+{
+ return (GstBuffer *) gst_mini_object_ref (((GstMiniObject*)(buf)));
+}
+static inline void
+gst_buffer_unref (GstBuffer * buf)
+{
+ gst_mini_object_unref (((GstMiniObject*)(buf)));
+}
+static inline GstBuffer *
+gst_buffer_copy (const GstBuffer * buf)
+{
+ return ((((GstBuffer*) g_type_check_instance_cast ((GTypeInstance*) ((gst_mini_object_copy (((GstMiniObject*)(buf))))), ((gst_buffer_get_type()))))));
+}
+typedef enum {
+ GST_BUFFER_COPY_FLAGS = (1 << 0),
+ GST_BUFFER_COPY_TIMESTAMPS = (1 << 1),
+ GST_BUFFER_COPY_CAPS = (1 << 2)
+} GstBufferCopyFlags;
+void gst_buffer_copy_metadata (GstBuffer *dest, const GstBuffer *src,
+ GstBufferCopyFlags flags);
+gboolean gst_buffer_is_metadata_writable (GstBuffer *buf);
+GstBuffer* gst_buffer_make_metadata_writable (GstBuffer *buf);
+GstCaps* gst_buffer_get_caps (GstBuffer *buffer);
+void gst_buffer_set_caps (GstBuffer *buffer, GstCaps *caps);
+GstBuffer* gst_buffer_create_sub (GstBuffer *parent, guint offset, guint size);
+gboolean gst_buffer_is_span_fast (GstBuffer *buf1, GstBuffer *buf2);
+GstBuffer* gst_buffer_span (GstBuffer *buf1, guint32 offset, GstBuffer *buf2, guint32 len);
+typedef struct _GstBufferList GstBufferList;
+typedef struct _GstBufferListClass GstBufferListClass;
+typedef struct _GstBufferListIterator GstBufferListIterator;
+typedef GstBuffer* (*GstBufferListDoFunction) (GstBuffer * buffer, gpointer user_data);
+typedef enum {
+ GST_BUFFER_LIST_CONTINUE,
+ GST_BUFFER_LIST_SKIP_GROUP,
+ GST_BUFFER_LIST_END
+} GstBufferListItem;
+typedef GstBufferListItem (*GstBufferListFunc) (GstBuffer **buffer, guint group, guint idx,
+ gpointer user_data);
+GType gst_buffer_list_get_type (void);
+GstBufferList *gst_buffer_list_new (void);
+static inline GstBufferList *
+gst_buffer_list_ref (GstBufferList * list)
+{
+ return ((GstBufferList *)gst_mini_object_ref (((GstMiniObject*)(list))));
+}
+static inline void
+gst_buffer_list_unref (GstBufferList * list)
+{
+ gst_mini_object_unref (((GstMiniObject*)(list)));
+}
+static inline GstBufferList *
+gst_buffer_list_copy (const GstBufferList * list)
+{
+ return ((((GstBufferList*) g_type_check_instance_cast ((GTypeInstance*) ((gst_mini_object_copy (((GstMiniObject*)(list))))), ((gst_buffer_list_get_type ()))))));
+}
+guint gst_buffer_list_n_groups (GstBufferList *list);
+void gst_buffer_list_foreach (GstBufferList *list,
+ GstBufferListFunc func,
+ gpointer user_data);
+GstBuffer * gst_buffer_list_get (GstBufferList *list, guint group, guint idx);
+GstBufferListIterator * gst_buffer_list_iterate (GstBufferList *list);
+void gst_buffer_list_iterator_free (GstBufferListIterator *it);
+guint gst_buffer_list_iterator_n_buffers (const GstBufferListIterator *it);
+GstBuffer * gst_buffer_list_iterator_next (GstBufferListIterator *it);
+gboolean gst_buffer_list_iterator_next_group (GstBufferListIterator *it);
+void gst_buffer_list_iterator_add (GstBufferListIterator *it, GstBuffer *buffer);
+void gst_buffer_list_iterator_add_group (GstBufferListIterator *it);
+void gst_buffer_list_iterator_remove (GstBufferListIterator *it);
+GstBuffer * gst_buffer_list_iterator_steal (GstBufferListIterator *it);
+void gst_buffer_list_iterator_take (GstBufferListIterator *it, GstBuffer *buffer);
+GstBuffer * gst_buffer_list_iterator_do (GstBufferListIterator *it, GstBufferListDoFunction do_func,
+ gpointer user_data);
+GstBuffer * gst_buffer_list_iterator_merge_group (const GstBufferListIterator *it);
+typedef enum {
+ GST_ITERATOR_DONE = 0,
+ GST_ITERATOR_OK = 1,
+ GST_ITERATOR_RESYNC = 2,
+ GST_ITERATOR_ERROR = 3
+} GstIteratorResult;
+typedef struct _GstIterator GstIterator;
+typedef enum {
+ GST_ITERATOR_ITEM_SKIP = 0,
+ GST_ITERATOR_ITEM_PASS = 1,
+ GST_ITERATOR_ITEM_END = 2
+} GstIteratorItem;
+typedef void (*GstIteratorDisposeFunction) (gpointer owner);
+typedef GstIteratorResult (*GstIteratorNextFunction) (GstIterator *it, gpointer *result);
+typedef GstIteratorItem (*GstIteratorItemFunction) (GstIterator *it, gpointer item);
+typedef void (*GstIteratorResyncFunction) (GstIterator *it);
+typedef void (*GstIteratorFreeFunction) (GstIterator *it);
+typedef gboolean (*GstIteratorFoldFunction) (gpointer item, GValue *ret, gpointer user_data);
+struct _GstIterator {
+ GstIteratorNextFunction next;
+ GstIteratorItemFunction item;
+ GstIteratorResyncFunction resync;
+ GstIteratorFreeFunction free;
+ GstIterator *pushed;
+ GType type;
+ GMutex *lock;
+ guint32 cookie;
+ guint32 *master_cookie;
+ gpointer _gst_reserved[4];
+};
+GstIterator* gst_iterator_new (guint size,
+ GType type,
+ GMutex *lock,
+ guint32 *master_cookie,
+ GstIteratorNextFunction next,
+ GstIteratorItemFunction item,
+ GstIteratorResyncFunction resync,
+ GstIteratorFreeFunction free);
+GstIterator* gst_iterator_new_list (GType type,
+ GMutex *lock,
+ guint32 *master_cookie,
+ GList **list,
+ gpointer owner,
+ GstIteratorItemFunction item,
+ GstIteratorDisposeFunction free);
+GstIteratorResult gst_iterator_next (GstIterator *it, gpointer *elem);
+void gst_iterator_resync (GstIterator *it);
+void gst_iterator_free (GstIterator *it);
+void gst_iterator_push (GstIterator *it, GstIterator *other);
+GstIterator* gst_iterator_filter (GstIterator *it, GCompareFunc func,
+ gpointer user_data);
+GstIteratorResult gst_iterator_fold (GstIterator *it,
+ GstIteratorFoldFunction func,
+ GValue *ret, gpointer user_data);
+GstIteratorResult gst_iterator_foreach (GstIterator *it,
+ GFunc func, gpointer user_data);
+gpointer gst_iterator_find_custom (GstIterator *it, GCompareFunc func,
+ gpointer user_data);
+typedef enum {
+ GST_FORMAT_UNDEFINED = 0,
+ GST_FORMAT_DEFAULT = 1,
+ GST_FORMAT_BYTES = 2,
+ GST_FORMAT_TIME = 3,
+ GST_FORMAT_BUFFERS = 4,
+ GST_FORMAT_PERCENT = 5
+} GstFormat;
+typedef struct _GstFormatDefinition GstFormatDefinition;
+struct _GstFormatDefinition
+{
+ GstFormat value;
+ gchar *nick;
+ gchar *description;
+ GQuark quark;
+};
+const gchar* gst_format_get_name (GstFormat format);
+GQuark gst_format_to_quark (GstFormat format);
+GstFormat gst_format_register (const gchar *nick,
+ const gchar *description);
+GstFormat gst_format_get_by_nick (const gchar *nick);
+gboolean gst_formats_contains (const GstFormat *formats, GstFormat format);
+const GstFormatDefinition*
+ gst_format_get_details (GstFormat format);
+GstIterator* gst_format_iterate_definitions (void);
+typedef enum {
+ GST_TAG_MERGE_UNDEFINED,
+ GST_TAG_MERGE_REPLACE_ALL,
+ GST_TAG_MERGE_REPLACE,
+ GST_TAG_MERGE_APPEND,
+ GST_TAG_MERGE_PREPEND,
+ GST_TAG_MERGE_KEEP,
+ GST_TAG_MERGE_KEEP_ALL,
+ GST_TAG_MERGE_COUNT
+} GstTagMergeMode;
+typedef enum {
+ GST_TAG_FLAG_UNDEFINED,
+ GST_TAG_FLAG_META,
+ GST_TAG_FLAG_ENCODED,
+ GST_TAG_FLAG_DECODED,
+ GST_TAG_FLAG_COUNT
+} GstTagFlag;
+typedef GstStructure GstTagList;
+typedef void (*GstTagForeachFunc) (const GstTagList * list,
+ const gchar * tag,
+ gpointer user_data);
+typedef void (* GstTagMergeFunc) (GValue *dest, const GValue *src);
+GType gst_tag_list_get_type (void);
+void gst_tag_register (const gchar * name,
+ GstTagFlag flag,
+ GType type,
+ const gchar * nick,
+ const gchar * blurb,
+ GstTagMergeFunc func);
+void gst_tag_merge_use_first (GValue * dest, const GValue * src);
+void gst_tag_merge_strings_with_comma (GValue * dest, const GValue * src);
+gboolean gst_tag_exists (const gchar * tag);
+GType gst_tag_get_type (const gchar * tag);
+const gchar * gst_tag_get_nick (const gchar * tag);
+const gchar * gst_tag_get_description (const gchar * tag);
+GstTagFlag gst_tag_get_flag (const gchar * tag);
+gboolean gst_tag_is_fixed (const gchar * tag);
+GstTagList * gst_tag_list_new (void);
+GstTagList * gst_tag_list_new_full (const gchar * tag, ...);
+GstTagList * gst_tag_list_new_full_valist (va_list var_args);
+gboolean gst_is_tag_list (gconstpointer p);
+GstTagList * gst_tag_list_copy (const GstTagList * list);
+gboolean gst_tag_list_is_empty (const GstTagList * list);
+void gst_tag_list_insert (GstTagList * into,
+ const GstTagList * from,
+ GstTagMergeMode mode);
+GstTagList * gst_tag_list_merge (const GstTagList * list1,
+ const GstTagList * list2,
+ GstTagMergeMode mode);
+void gst_tag_list_free (GstTagList * list);
+guint gst_tag_list_get_tag_size (const GstTagList * list,
+ const gchar * tag);
+void gst_tag_list_add (GstTagList * list,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ ...) __attribute__((__sentinel__));
+void gst_tag_list_add_values (GstTagList * list,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ ...) __attribute__((__sentinel__));
+void gst_tag_list_add_valist (GstTagList * list,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ va_list var_args);
+void gst_tag_list_add_valist_values (GstTagList * list,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ va_list var_args);
+void gst_tag_list_add_value (GstTagList * list,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ const GValue * value);
+void gst_tag_list_remove_tag (GstTagList * list,
+ const gchar * tag);
+void gst_tag_list_foreach (const GstTagList * list,
+ GstTagForeachFunc func,
+ gpointer user_data);
+const GValue *
+ gst_tag_list_get_value_index (const GstTagList * list,
+ const gchar * tag,
+ guint index);
+gboolean gst_tag_list_copy_value (GValue * dest,
+ const GstTagList * list,
+ const gchar * tag);
+gboolean gst_tag_list_get_char (const GstTagList * list,
+ const gchar * tag,
+ gchar * value);
+gboolean gst_tag_list_get_char_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gchar * value);
+gboolean gst_tag_list_get_uchar (const GstTagList * list,
+ const gchar * tag,
+ guchar * value);
+gboolean gst_tag_list_get_uchar_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ guchar * value);
+gboolean gst_tag_list_get_boolean (const GstTagList * list,
+ const gchar * tag,
+ gboolean * value);
+gboolean gst_tag_list_get_boolean_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gboolean * value);
+gboolean gst_tag_list_get_int (const GstTagList * list,
+ const gchar * tag,
+ gint * value);
+gboolean gst_tag_list_get_int_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gint * value);
+gboolean gst_tag_list_get_uint (const GstTagList * list,
+ const gchar * tag,
+ guint * value);
+gboolean gst_tag_list_get_uint_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ guint * value);
+gboolean gst_tag_list_get_long (const GstTagList * list,
+ const gchar * tag,
+ glong * value);
+gboolean gst_tag_list_get_long_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ glong * value);
+gboolean gst_tag_list_get_ulong (const GstTagList * list,
+ const gchar * tag,
+ gulong * value);
+gboolean gst_tag_list_get_ulong_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gulong * value);
+gboolean gst_tag_list_get_int64 (const GstTagList * list,
+ const gchar * tag,
+ gint64 * value);
+gboolean gst_tag_list_get_int64_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gint64 * value);
+gboolean gst_tag_list_get_uint64 (const GstTagList * list,
+ const gchar * tag,
+ guint64 * value);
+gboolean gst_tag_list_get_uint64_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ guint64 * value);
+gboolean gst_tag_list_get_float (const GstTagList * list,
+ const gchar * tag,
+ gfloat * value);
+gboolean gst_tag_list_get_float_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gfloat * value);
+gboolean gst_tag_list_get_double (const GstTagList * list,
+ const gchar * tag,
+ gdouble * value);
+gboolean gst_tag_list_get_double_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gdouble * value);
+gboolean gst_tag_list_get_string (const GstTagList * list,
+ const gchar * tag,
+ gchar ** value);
+gboolean gst_tag_list_get_string_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gchar ** value);
+gboolean gst_tag_list_get_pointer (const GstTagList * list,
+ const gchar * tag,
+ gpointer * value);
+gboolean gst_tag_list_get_pointer_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ gpointer * value);
+gboolean gst_tag_list_get_date (const GstTagList * list,
+ const gchar * tag,
+ GDate ** value);
+gboolean gst_tag_list_get_date_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ GDate ** value);
+gboolean gst_tag_list_get_buffer (const GstTagList * list,
+ const gchar * tag,
+ GstBuffer ** value);
+gboolean gst_tag_list_get_buffer_index (const GstTagList * list,
+ const gchar * tag,
+ guint index,
+ GstBuffer ** value);
+typedef enum {
+ GST_EVENT_TYPE_UPSTREAM = 1 << 0,
+ GST_EVENT_TYPE_DOWNSTREAM = 1 << 1,
+ GST_EVENT_TYPE_SERIALIZED = 1 << 2
+} GstEventTypeFlags;
+typedef enum {
+ GST_EVENT_UNKNOWN = (((0) << 4) | (0)),
+ GST_EVENT_FLUSH_START = (((1) << 4) | ((GST_EVENT_TYPE_UPSTREAM | GST_EVENT_TYPE_DOWNSTREAM))),
+ GST_EVENT_FLUSH_STOP = (((2) << 4) | ((GST_EVENT_TYPE_UPSTREAM | GST_EVENT_TYPE_DOWNSTREAM) | GST_EVENT_TYPE_SERIALIZED)),
+ GST_EVENT_EOS = (((5) << 4) | (GST_EVENT_TYPE_DOWNSTREAM | GST_EVENT_TYPE_SERIALIZED)),
+ GST_EVENT_NEWSEGMENT = (((6) << 4) | (GST_EVENT_TYPE_DOWNSTREAM | GST_EVENT_TYPE_SERIALIZED)),
+ GST_EVENT_TAG = (((7) << 4) | (GST_EVENT_TYPE_DOWNSTREAM | GST_EVENT_TYPE_SERIALIZED)),
+ GST_EVENT_BUFFERSIZE = (((8) << 4) | (GST_EVENT_TYPE_DOWNSTREAM | GST_EVENT_TYPE_SERIALIZED)),
+ GST_EVENT_QOS = (((15) << 4) | (GST_EVENT_TYPE_UPSTREAM)),
+ GST_EVENT_SEEK = (((16) << 4) | (GST_EVENT_TYPE_UPSTREAM)),
+ GST_EVENT_NAVIGATION = (((17) << 4) | (GST_EVENT_TYPE_UPSTREAM)),
+ GST_EVENT_LATENCY = (((18) << 4) | (GST_EVENT_TYPE_UPSTREAM)),
+ GST_EVENT_STEP = (((19) << 4) | (GST_EVENT_TYPE_UPSTREAM)),
+ GST_EVENT_CUSTOM_UPSTREAM = (((32) << 4) | (GST_EVENT_TYPE_UPSTREAM)),
+ GST_EVENT_CUSTOM_DOWNSTREAM = (((32) << 4) | (GST_EVENT_TYPE_DOWNSTREAM | GST_EVENT_TYPE_SERIALIZED)),
+ GST_EVENT_CUSTOM_DOWNSTREAM_OOB = (((32) << 4) | (GST_EVENT_TYPE_DOWNSTREAM)),
+ GST_EVENT_CUSTOM_BOTH = (((32) << 4) | ((GST_EVENT_TYPE_UPSTREAM | GST_EVENT_TYPE_DOWNSTREAM) | GST_EVENT_TYPE_SERIALIZED)),
+ GST_EVENT_CUSTOM_BOTH_OOB = (((32) << 4) | ((GST_EVENT_TYPE_UPSTREAM | GST_EVENT_TYPE_DOWNSTREAM)))
+} GstEventType;
+typedef struct _GstEvent GstEvent;
+typedef struct _GstEventClass GstEventClass;
+typedef enum {
+ GST_SEEK_TYPE_NONE = 0,
+ GST_SEEK_TYPE_CUR = 1,
+ GST_SEEK_TYPE_SET = 2,
+ GST_SEEK_TYPE_END = 3
+} GstSeekType;
+typedef enum {
+ GST_SEEK_FLAG_NONE = 0,
+ GST_SEEK_FLAG_FLUSH = (1 << 0),
+ GST_SEEK_FLAG_ACCURATE = (1 << 1),
+ GST_SEEK_FLAG_KEY_UNIT = (1 << 2),
+ GST_SEEK_FLAG_SEGMENT = (1 << 3),
+ GST_SEEK_FLAG_SKIP = (1 << 4)
+} GstSeekFlags;
+struct _GstEvent {
+ GstMiniObject mini_object;
+ GstEventType type;
+ guint64 timestamp;
+ GstObject *src;
+ GstStructure *structure;
+ union {
+ guint32 seqnum;
+ gpointer _gst_reserved;
+ } abidata;
+};
+struct _GstEventClass {
+ GstMiniObjectClass mini_object_class;
+ gpointer _gst_reserved[4];
+};
+const gchar* gst_event_type_get_name (GstEventType type);
+GQuark gst_event_type_to_quark (GstEventType type);
+GstEventTypeFlags
+ gst_event_type_get_flags (GstEventType type);
+GType gst_event_get_type (void);
+static inline GstEvent *
+gst_event_ref (GstEvent * event)
+{
+ return (GstEvent *) gst_mini_object_ref (((((GstMiniObject*) g_type_check_instance_cast ((GTypeInstance*) ((event)), ((gst_mini_object_get_type())))))));
+}
+static inline void
+gst_event_unref (GstEvent * event)
+{
+ gst_mini_object_unref (((((GstMiniObject*) g_type_check_instance_cast ((GTypeInstance*) ((event)), ((gst_mini_object_get_type())))))));
+}
+static inline GstEvent *
+gst_event_copy (const GstEvent * event)
+{
+ return ((GstEvent *)(gst_mini_object_copy (((((GstMiniObject*) g_type_check_instance_cast ((GTypeInstance*) ((event)), ((gst_mini_object_get_type())))))))));
+}
+GstEvent* gst_event_new_custom (GstEventType type, GstStructure *structure);
+const GstStructure *
+ gst_event_get_structure (GstEvent *event);
+gboolean gst_event_has_name (GstEvent *event, const gchar *name);
+guint32 gst_event_get_seqnum (GstEvent *event);
+void gst_event_set_seqnum (GstEvent *event, guint32 seqnum);
+GstEvent * gst_event_new_flush_start (void);
+GstEvent * gst_event_new_flush_stop (void);
+GstEvent * gst_event_new_eos (void);
+GstEvent* gst_event_new_new_segment (gboolean update, gdouble rate,
+ GstFormat format,
+ gint64 start, gint64 stop,
+ gint64 position);
+GstEvent* gst_event_new_new_segment_full (gboolean update, gdouble rate,
+ gdouble applied_rate,
+ GstFormat format,
+ gint64 start, gint64 stop,
+ gint64 position);
+void gst_event_parse_new_segment (GstEvent *event,
+ gboolean *update,
+ gdouble *rate,
+ GstFormat *format,
+ gint64 *start, gint64 *stop,
+ gint64 *position);
+void gst_event_parse_new_segment_full (GstEvent *event,
+ gboolean *update,
+ gdouble *rate,
+ gdouble *applied_rate,
+ GstFormat *format,
+ gint64 *start, gint64 *stop,
+ gint64 *position);
+GstEvent* gst_event_new_tag (GstTagList *taglist);
+void gst_event_parse_tag (GstEvent *event, GstTagList **taglist);
+GstEvent * gst_event_new_buffer_size (GstFormat format, gint64 minsize, gint64 maxsize,
+ gboolean async);
+void gst_event_parse_buffer_size (GstEvent *event, GstFormat *format, gint64 *minsize,
+ gint64 *maxsize, gboolean *async);
+GstEvent* gst_event_new_qos (gdouble proportion, GstClockTimeDiff diff,
+ GstClockTime timestamp);
+void gst_event_parse_qos (GstEvent *event, gdouble *proportion, GstClockTimeDiff *diff,
+ GstClockTime *timestamp);
+GstEvent* gst_event_new_seek (gdouble rate, GstFormat format, GstSeekFlags flags,
+ GstSeekType start_type, gint64 start,
+ GstSeekType stop_type, gint64 stop);
+void gst_event_parse_seek (GstEvent *event, gdouble *rate, GstFormat *format,
+ GstSeekFlags *flags,
+ GstSeekType *start_type, gint64 *start,
+ GstSeekType *stop_type, gint64 *stop);
+GstEvent* gst_event_new_navigation (GstStructure *structure);
+GstEvent* gst_event_new_latency (GstClockTime latency);
+void gst_event_parse_latency (GstEvent *event, GstClockTime *latency);
+GstEvent* gst_event_new_step (GstFormat format, guint64 amount, gdouble rate,
+ gboolean flush, gboolean intermediate);
+void gst_event_parse_step (GstEvent *event, GstFormat *format, guint64 *amount,
+ gdouble *rate, gboolean *flush, gboolean *intermediate);
+typedef enum {
+ GST_QUERY_NONE = 0,
+ GST_QUERY_POSITION,
+ GST_QUERY_DURATION,
+ GST_QUERY_LATENCY,
+ GST_QUERY_JITTER,
+ GST_QUERY_RATE,
+ GST_QUERY_SEEKING,
+ GST_QUERY_SEGMENT,
+ GST_QUERY_CONVERT,
+ GST_QUERY_FORMATS,
+ GST_QUERY_BUFFERING,
+ GST_QUERY_CUSTOM,
+ GST_QUERY_URI
+} GstQueryType;
+typedef enum {
+ GST_BUFFERING_STREAM,
+ GST_BUFFERING_DOWNLOAD,
+ GST_BUFFERING_TIMESHIFT,
+ GST_BUFFERING_LIVE
+} GstBufferingMode;
+typedef struct _GstQueryTypeDefinition GstQueryTypeDefinition;
+typedef struct _GstQuery GstQuery;
+typedef struct _GstQueryClass GstQueryClass;
+struct _GstQueryTypeDefinition
+{
+ GstQueryType value;
+ gchar *nick;
+ gchar *description;
+ GQuark quark;
+};
+struct _GstQuery
+{
+ GstMiniObject mini_object;
+ GstQueryType type;
+ GstStructure *structure;
+ gpointer _gst_reserved;
+};
+struct _GstQueryClass {
+ GstMiniObjectClass mini_object_class;
+ gpointer _gst_reserved[4];
+};
+const gchar* gst_query_type_get_name (GstQueryType query);
+GQuark gst_query_type_to_quark (GstQueryType query);
+GType gst_query_get_type (void);
+GstQueryType gst_query_type_register (const gchar *nick,
+ const gchar *description);
+GstQueryType gst_query_type_get_by_nick (const gchar *nick);
+gboolean gst_query_types_contains (const GstQueryType *types,
+ GstQueryType type);
+const GstQueryTypeDefinition*
+ gst_query_type_get_details (GstQueryType type);
+GstIterator* gst_query_type_iterate_definitions (void);
+static inline GstQuery *
+gst_query_ref (GstQuery * q)
+{
+ return ((((GstQuery*) g_type_check_instance_cast ((GTypeInstance*) ((gst_mini_object_ref (((GstMiniObject*)(q))))), ((gst_query_get_type()))))));
+}
+static inline void
+gst_query_unref (GstQuery * q)
+{
+ gst_mini_object_unref (((GstMiniObject*)(q)));
+}
+static inline GstQuery *
+gst_query_copy (const GstQuery * q)
+{
+ return ((((GstQuery*) g_type_check_instance_cast ((GTypeInstance*) ((gst_mini_object_copy (((GstMiniObject*)(q))))), ((gst_query_get_type()))))));
+}
+GstQuery* gst_query_new_position (GstFormat format);
+void gst_query_set_position (GstQuery *query, GstFormat format, gint64 cur);
+void gst_query_parse_position (GstQuery *query, GstFormat *format, gint64 *cur);
+GstQuery* gst_query_new_duration (GstFormat format);
+void gst_query_set_duration (GstQuery *query, GstFormat format, gint64 duration);
+void gst_query_parse_duration (GstQuery *query, GstFormat *format, gint64 *duration);
+GstQuery* gst_query_new_latency (void);
+void gst_query_set_latency (GstQuery *query, gboolean live, GstClockTime min_latency,
+ GstClockTime max_latency);
+void gst_query_parse_latency (GstQuery *query, gboolean *live, GstClockTime *min_latency,
+ GstClockTime *max_latency);
+GstQuery* gst_query_new_convert (GstFormat src_format, gint64 value, GstFormat dest_format);
+void gst_query_set_convert (GstQuery *query, GstFormat src_format, gint64 src_value,
+ GstFormat dest_format, gint64 dest_value);
+void gst_query_parse_convert (GstQuery *query, GstFormat *src_format, gint64 *src_value,
+ GstFormat *dest_format, gint64 *dest_value);
+GstQuery* gst_query_new_segment (GstFormat format);
+void gst_query_set_segment (GstQuery *query, gdouble rate, GstFormat format,
+ gint64 start_value, gint64 stop_value);
+void gst_query_parse_segment (GstQuery *query, gdouble *rate, GstFormat *format,
+ gint64 *start_value, gint64 *stop_value);
+GstQuery * gst_query_new_application (GstQueryType type,
+ GstStructure *structure);
+GstStructure * gst_query_get_structure (GstQuery *query);
+GstQuery* gst_query_new_seeking (GstFormat format);
+void gst_query_set_seeking (GstQuery *query, GstFormat format,
+ gboolean seekable,
+ gint64 segment_start,
+ gint64 segment_end);
+void gst_query_parse_seeking (GstQuery *query, GstFormat *format,
+ gboolean *seekable,
+ gint64 *segment_start,
+ gint64 *segment_end);
+GstQuery* gst_query_new_formats (void);
+void gst_query_set_formats (GstQuery *query, gint n_formats, ...);
+void gst_query_set_formatsv (GstQuery *query, gint n_formats, GstFormat *formats);
+void gst_query_parse_formats_length (GstQuery *query, guint *n_formats);
+void gst_query_parse_formats_nth (GstQuery *query, guint nth, GstFormat *format);
+GstQuery* gst_query_new_buffering (GstFormat format);
+void gst_query_set_buffering_percent (GstQuery *query, gboolean busy, gint percent);
+void gst_query_parse_buffering_percent (GstQuery *query, gboolean *busy, gint *percent);
+void gst_query_set_buffering_stats (GstQuery *query, GstBufferingMode mode,
+ gint avg_in, gint avg_out,
+ gint64 buffering_left);
+void gst_query_parse_buffering_stats (GstQuery *query, GstBufferingMode *mode,
+ gint *avg_in, gint *avg_out,
+ gint64 *buffering_left);
+void gst_query_set_buffering_range (GstQuery *query, GstFormat format,
+ gint64 start, gint64 stop,
+ gint64 estimated_total);
+void gst_query_parse_buffering_range (GstQuery *query, GstFormat *format,
+ gint64 *start, gint64 *stop,
+ gint64 *estimated_total);
+GstQuery * gst_query_new_uri (void);
+void gst_query_parse_uri (GstQuery *query, gchar **uri);
+void gst_query_set_uri (GstQuery *query, const gchar *uri);
+typedef struct _GstTaskPool GstTaskPool;
+typedef struct _GstTaskPoolClass GstTaskPoolClass;
+typedef void (*GstTaskPoolFunction) (void *data);
+struct _GstTaskPool {
+ GstObject object;
+ GThreadPool *pool;
+ gpointer _gst_reserved[4];
+};
+struct _GstTaskPoolClass {
+ GstObjectClass parent_class;
+ void (*prepare) (GstTaskPool *pool, GError **error);
+ void (*cleanup) (GstTaskPool *pool);
+ gpointer (*push) (GstTaskPool *pool, GstTaskPoolFunction func,
+ gpointer user_data, GError **error);
+ void (*join) (GstTaskPool *pool, gpointer id);
+ gpointer _gst_reserved[4];
+};
+GType gst_task_pool_get_type (void);
+GstTaskPool * gst_task_pool_new (void);
+void gst_task_pool_prepare (GstTaskPool *pool, GError **error);
+gpointer gst_task_pool_push (GstTaskPool *pool, GstTaskPoolFunction func,
+ gpointer user_data, GError **error);
+void gst_task_pool_join (GstTaskPool *pool, gpointer id);
+void gst_task_pool_cleanup (GstTaskPool *pool);
+typedef void (*GstTaskFunction) (void *data);
+typedef struct _GstTask GstTask;
+typedef struct _GstTaskClass GstTaskClass;
+typedef struct _GstTaskPrivate GstTaskPrivate;
+typedef enum {
+ GST_TASK_STARTED,
+ GST_TASK_STOPPED,
+ GST_TASK_PAUSED
+} GstTaskState;
+typedef struct {
+ void (*enter_thread) (GstTask *task, GThread *thread, gpointer user_data);
+ void (*leave_thread) (GstTask *task, GThread *thread, gpointer user_data);
+ gpointer _gst_reserved[4];
+} GstTaskThreadCallbacks;
+struct _GstTask {
+ GstObject object;
+ GstTaskState state;
+ GCond *cond;
+ GStaticRecMutex *lock;
+ GstTaskFunction func;
+ gpointer data;
+ gboolean running;
+ union {
+ struct {
+ GThread *thread;
+ } ABI;
+ gpointer _gst_reserved[4 - 1];
+ } abidata;
+ GstTaskPrivate *priv;
+};
+struct _GstTaskClass {
+ GstObjectClass parent_class;
+ GstTaskPool *pool;
+ gpointer _gst_reserved[4];
+};
+void gst_task_cleanup_all (void);
+GType gst_task_get_type (void);
+GstTask* gst_task_create (GstTaskFunction func, gpointer data);
+void gst_task_set_lock (GstTask *task, GStaticRecMutex *mutex);
+void gst_task_set_priority (GstTask *task, GThreadPriority priority);
+GstTaskPool * gst_task_get_pool (GstTask *task);
+void gst_task_set_pool (GstTask *task, GstTaskPool *pool);
+void gst_task_set_thread_callbacks (GstTask *task,
+ GstTaskThreadCallbacks *callbacks,
+ gpointer user_data,
+ GDestroyNotify notify);
+GstTaskState gst_task_get_state (GstTask *task);
+gboolean gst_task_set_state (GstTask *task, GstTaskState state);
+gboolean gst_task_start (GstTask *task);
+gboolean gst_task_stop (GstTask *task);
+gboolean gst_task_pause (GstTask *task);
+gboolean gst_task_join (GstTask *task);
+typedef struct _GstPad GstPad;
+typedef struct _GstPadPrivate GstPadPrivate;
+typedef struct _GstPadClass GstPadClass;
+typedef enum {
+ GST_PAD_LINK_OK = 0,
+ GST_PAD_LINK_WRONG_HIERARCHY = -1,
+ GST_PAD_LINK_WAS_LINKED = -2,
+ GST_PAD_LINK_WRONG_DIRECTION = -3,
+ GST_PAD_LINK_NOFORMAT = -4,
+ GST_PAD_LINK_NOSCHED = -5,
+ GST_PAD_LINK_REFUSED = -6
+} GstPadLinkReturn;
+typedef enum {
+ GST_FLOW_CUSTOM_SUCCESS = 100,
+ GST_FLOW_RESEND = 1,
+ GST_FLOW_OK = 0,
+ GST_FLOW_NOT_LINKED = -1,
+ GST_FLOW_WRONG_STATE = -2,
+ GST_FLOW_UNEXPECTED = -3,
+ GST_FLOW_NOT_NEGOTIATED = -4,
+ GST_FLOW_ERROR = -5,
+ GST_FLOW_NOT_SUPPORTED = -6,
+ GST_FLOW_CUSTOM_ERROR = -100
+} GstFlowReturn;
+const gchar* gst_flow_get_name (GstFlowReturn ret);
+GQuark gst_flow_to_quark (GstFlowReturn ret);
+typedef enum {
+ GST_ACTIVATE_NONE,
+ GST_ACTIVATE_PUSH,
+ GST_ACTIVATE_PULL
+} GstActivateMode;
+typedef gboolean (*GstPadActivateFunction) (GstPad *pad);
+typedef gboolean (*GstPadActivateModeFunction) (GstPad *pad, gboolean active);
+typedef GstFlowReturn (*GstPadChainFunction) (GstPad *pad, GstBuffer *buffer);
+typedef GstFlowReturn (*GstPadChainListFunction) (GstPad *pad, GstBufferList *list);
+typedef GstFlowReturn (*GstPadGetRangeFunction) (GstPad *pad, guint64 offset,
+ guint length, GstBuffer **buffer);
+typedef gboolean (*GstPadEventFunction) (GstPad *pad, GstEvent *event);
+typedef gboolean (*GstPadCheckGetRangeFunction) (GstPad *pad);
+typedef GList* (*GstPadIntLinkFunction) (GstPad *pad);
+typedef GstIterator* (*GstPadIterIntLinkFunction) (GstPad *pad);
+typedef const GstQueryType* (*GstPadQueryTypeFunction) (GstPad *pad);
+typedef gboolean (*GstPadQueryFunction) (GstPad *pad, GstQuery *query);
+typedef GstPadLinkReturn (*GstPadLinkFunction) (GstPad *pad, GstPad *peer);
+typedef void (*GstPadUnlinkFunction) (GstPad *pad);
+typedef GstCaps* (*GstPadGetCapsFunction) (GstPad *pad);
+typedef gboolean (*GstPadSetCapsFunction) (GstPad *pad, GstCaps *caps);
+typedef gboolean (*GstPadAcceptCapsFunction) (GstPad *pad, GstCaps *caps);
+typedef void (*GstPadFixateCapsFunction) (GstPad *pad, GstCaps *caps);
+typedef GstFlowReturn (*GstPadBufferAllocFunction) (GstPad *pad, guint64 offset, guint size,
+ GstCaps *caps, GstBuffer **buf);
+typedef gboolean (*GstPadDispatcherFunction) (GstPad *pad, gpointer data);
+typedef void (*GstPadBlockCallback) (GstPad *pad, gboolean blocked, gpointer user_data);
+typedef enum {
+ GST_PAD_UNKNOWN,
+ GST_PAD_SRC,
+ GST_PAD_SINK
+} GstPadDirection;
+typedef enum {
+ GST_PAD_BLOCKED = (GST_OBJECT_FLAG_LAST << 0),
+ GST_PAD_FLUSHING = (GST_OBJECT_FLAG_LAST << 1),
+ GST_PAD_IN_GETCAPS = (GST_OBJECT_FLAG_LAST << 2),
+ GST_PAD_IN_SETCAPS = (GST_OBJECT_FLAG_LAST << 3),
+ GST_PAD_BLOCKING = (GST_OBJECT_FLAG_LAST << 4),
+ GST_PAD_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 8)
+} GstPadFlags;
+typedef struct _GstPadTemplate GstPadTemplate;
+struct _GstPad {
+ GstObject object;
+ gpointer element_private;
+ GstPadTemplate *padtemplate;
+ GstPadDirection direction;
+ GStaticRecMutex *stream_rec_lock;
+ GstTask *task;
+ GMutex *preroll_lock;
+ GCond *preroll_cond;
+ GCond *block_cond;
+ GstPadBlockCallback block_callback;
+ gpointer block_data;
+ GstCaps *caps;
+ GstPadGetCapsFunction getcapsfunc;
+ GstPadSetCapsFunction setcapsfunc;
+ GstPadAcceptCapsFunction acceptcapsfunc;
+ GstPadFixateCapsFunction fixatecapsfunc;
+ GstPadActivateFunction activatefunc;
+ GstPadActivateModeFunction activatepushfunc;
+ GstPadActivateModeFunction activatepullfunc;
+ GstPadLinkFunction linkfunc;
+ GstPadUnlinkFunction unlinkfunc;
+ GstPad *peer;
+ gpointer sched_private;
+ GstPadChainFunction chainfunc;
+ GstPadCheckGetRangeFunction checkgetrangefunc;
+ GstPadGetRangeFunction getrangefunc;
+ GstPadEventFunction eventfunc;
+ GstActivateMode mode;
+ GstPadQueryTypeFunction querytypefunc;
+ GstPadQueryFunction queryfunc;
+ GstPadIntLinkFunction intlinkfunc;
+ GstPadBufferAllocFunction bufferallocfunc;
+ gint do_buffer_signals;
+ gint do_event_signals;
+ GstPadIterIntLinkFunction iterintlinkfunc;
+ GDestroyNotify block_destroy_data;
+ union {
+ struct {
+ gboolean block_callback_called;
+ GstPadPrivate *priv;
+ } ABI;
+ gpointer _gst_reserved[4 - 2];
+ } abidata;
+};
+struct _GstPadClass {
+ GstObjectClass parent_class;
+ void (*linked) (GstPad *pad, GstPad *peer);
+ void (*unlinked) (GstPad *pad, GstPad *peer);
+ void (*request_link) (GstPad *pad);
+ gboolean (*have_data) (GstPad *pad, GstMiniObject *data);
+ gpointer _gst_reserved[4];
+};
+typedef struct _GstPadTemplateClass GstPadTemplateClass;
+typedef struct _GstStaticPadTemplate GstStaticPadTemplate;
+typedef enum {
+ GST_PAD_ALWAYS,
+ GST_PAD_SOMETIMES,
+ GST_PAD_REQUEST
+} GstPadPresence;
+typedef enum {
+ GST_PAD_TEMPLATE_FIXED = (GST_OBJECT_FLAG_LAST << 0),
+ GST_PAD_TEMPLATE_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 4)
+} GstPadTemplateFlags;
+struct _GstPadTemplate {
+ GstObject object;
+ gchar *name_template;
+ GstPadDirection direction;
+ GstPadPresence presence;
+ GstCaps *caps;
+ gpointer _gst_reserved[4];
+};
+struct _GstPadTemplateClass {
+ GstObjectClass parent_class;
+ void (*pad_created) (GstPadTemplate *templ, GstPad *pad);
+ gpointer _gst_reserved[4];
+};
+struct _GstStaticPadTemplate {
+ const gchar *name_template;
+ GstPadDirection direction;
+ GstPadPresence presence;
+ GstStaticCaps static_caps;
+};
+GType gst_pad_template_get_type (void);
+GType gst_static_pad_template_get_type (void);
+GstPadTemplate* gst_pad_template_new (const gchar *name_template,
+ GstPadDirection direction, GstPadPresence presence,
+ GstCaps *caps);
+GstPadTemplate * gst_static_pad_template_get (GstStaticPadTemplate *pad_template);
+GstCaps* gst_static_pad_template_get_caps (GstStaticPadTemplate *templ);
+GstCaps* gst_pad_template_get_caps (GstPadTemplate *templ);
+void gst_pad_template_pad_created (GstPadTemplate * templ, GstPad * pad);
+GType gst_pad_get_type (void);
+GstPad* gst_pad_new (const gchar *name, GstPadDirection direction);
+GstPad* gst_pad_new_from_template (GstPadTemplate *templ, const gchar *name);
+GstPad* gst_pad_new_from_static_template (GstStaticPadTemplate *templ, const gchar *name);
+GstPadDirection gst_pad_get_direction (GstPad *pad);
+gboolean gst_pad_set_active (GstPad *pad, gboolean active);
+gboolean gst_pad_is_active (GstPad *pad);
+gboolean gst_pad_activate_pull (GstPad *pad, gboolean active);
+gboolean gst_pad_activate_push (GstPad *pad, gboolean active);
+gboolean gst_pad_set_blocked (GstPad *pad, gboolean blocked);
+gboolean gst_pad_set_blocked_async (GstPad *pad, gboolean blocked,
+ GstPadBlockCallback callback, gpointer user_data);
+gboolean gst_pad_set_blocked_async_full (GstPad *pad, gboolean blocked,
+ GstPadBlockCallback callback, gpointer user_data,
+ GDestroyNotify destroy_data);
+gboolean gst_pad_is_blocked (GstPad *pad);
+gboolean gst_pad_is_blocking (GstPad *pad);
+void gst_pad_set_element_private (GstPad *pad, gpointer priv);
+gpointer gst_pad_get_element_private (GstPad *pad);
+GstPadTemplate* gst_pad_get_pad_template (GstPad *pad);
+void gst_pad_set_bufferalloc_function (GstPad *pad, GstPadBufferAllocFunction bufalloc);
+GstFlowReturn gst_pad_alloc_buffer (GstPad *pad, guint64 offset, gint size,
+ GstCaps *caps, GstBuffer **buf);
+GstFlowReturn gst_pad_alloc_buffer_and_set_caps (GstPad *pad, guint64 offset, gint size,
+ GstCaps *caps, GstBuffer **buf);
+void gst_pad_set_activate_function (GstPad *pad, GstPadActivateFunction activate);
+void gst_pad_set_activatepull_function (GstPad *pad, GstPadActivateModeFunction activatepull);
+void gst_pad_set_activatepush_function (GstPad *pad, GstPadActivateModeFunction activatepush);
+void gst_pad_set_chain_function (GstPad *pad, GstPadChainFunction chain);
+void gst_pad_set_chain_list_function (GstPad *pad, GstPadChainListFunction chainlist);
+void gst_pad_set_getrange_function (GstPad *pad, GstPadGetRangeFunction get);
+void gst_pad_set_checkgetrange_function (GstPad *pad, GstPadCheckGetRangeFunction check);
+void gst_pad_set_event_function (GstPad *pad, GstPadEventFunction event);
+void gst_pad_set_link_function (GstPad *pad, GstPadLinkFunction link);
+void gst_pad_set_unlink_function (GstPad *pad, GstPadUnlinkFunction unlink);
+gboolean gst_pad_can_link (GstPad *srcpad, GstPad *sinkpad);
+GstPadLinkReturn gst_pad_link (GstPad *srcpad, GstPad *sinkpad);
+gboolean gst_pad_unlink (GstPad *srcpad, GstPad *sinkpad);
+gboolean gst_pad_is_linked (GstPad *pad);
+GstPad* gst_pad_get_peer (GstPad *pad);
+void gst_pad_set_getcaps_function (GstPad *pad, GstPadGetCapsFunction getcaps);
+void gst_pad_set_acceptcaps_function (GstPad *pad, GstPadAcceptCapsFunction acceptcaps);
+void gst_pad_set_fixatecaps_function (GstPad *pad, GstPadFixateCapsFunction fixatecaps);
+void gst_pad_set_setcaps_function (GstPad *pad, GstPadSetCapsFunction setcaps);
+const GstCaps* gst_pad_get_pad_template_caps (GstPad *pad);
+GstCaps * gst_pad_get_caps (GstPad * pad);
+void gst_pad_fixate_caps (GstPad * pad, GstCaps *caps);
+gboolean gst_pad_accept_caps (GstPad * pad, GstCaps *caps);
+gboolean gst_pad_set_caps (GstPad * pad, GstCaps *caps);
+GstCaps * gst_pad_peer_get_caps (GstPad * pad);
+gboolean gst_pad_peer_accept_caps (GstPad * pad, GstCaps *caps);
+GstCaps * gst_pad_get_allowed_caps (GstPad * pad);
+GstCaps * gst_pad_get_negotiated_caps (GstPad * pad);
+GstFlowReturn gst_pad_push (GstPad *pad, GstBuffer *buffer);
+GstFlowReturn gst_pad_push_list (GstPad *pad, GstBufferList *list);
+gboolean gst_pad_check_pull_range (GstPad *pad);
+GstFlowReturn gst_pad_pull_range (GstPad *pad, guint64 offset, guint size,
+ GstBuffer **buffer);
+gboolean gst_pad_push_event (GstPad *pad, GstEvent *event);
+gboolean gst_pad_event_default (GstPad *pad, GstEvent *event);
+GstFlowReturn gst_pad_chain (GstPad *pad, GstBuffer *buffer);
+GstFlowReturn gst_pad_chain_list (GstPad *pad, GstBufferList *list);
+GstFlowReturn gst_pad_get_range (GstPad *pad, guint64 offset, guint size,
+ GstBuffer **buffer);
+gboolean gst_pad_send_event (GstPad *pad, GstEvent *event);
+gboolean gst_pad_start_task (GstPad *pad, GstTaskFunction func,
+ gpointer data);
+gboolean gst_pad_pause_task (GstPad *pad);
+gboolean gst_pad_stop_task (GstPad *pad);
+void gst_pad_set_internal_link_function (GstPad *pad, GstPadIntLinkFunction intlink);
+GList* gst_pad_get_internal_links (GstPad *pad);
+GList* gst_pad_get_internal_links_default (GstPad *pad);
+void gst_pad_set_iterate_internal_links_function (GstPad * pad,
+ GstPadIterIntLinkFunction iterintlink);
+GstIterator * gst_pad_iterate_internal_links (GstPad * pad);
+GstIterator * gst_pad_iterate_internal_links_default (GstPad * pad);
+void gst_pad_set_query_type_function (GstPad *pad, GstPadQueryTypeFunction type_func);
+const GstQueryType*
+ gst_pad_get_query_types (GstPad *pad);
+const GstQueryType*
+ gst_pad_get_query_types_default (GstPad *pad);
+gboolean gst_pad_query (GstPad *pad, GstQuery *query);
+gboolean gst_pad_peer_query (GstPad *pad, GstQuery *query);
+void gst_pad_set_query_function (GstPad *pad, GstPadQueryFunction query);
+gboolean gst_pad_query_default (GstPad *pad, GstQuery *query);
+gboolean gst_pad_dispatcher (GstPad *pad, GstPadDispatcherFunction dispatch,
+ gpointer data);
+void gst_pad_load_and_link (xmlNodePtr self, GstObject *parent);
+typedef struct _GstBus GstBus;
+typedef struct _GstBusPrivate GstBusPrivate;
+typedef struct _GstBusClass GstBusClass;
+typedef struct _GstMessage GstMessage;
+typedef struct _GstMessageClass GstMessageClass;
+typedef enum
+{
+ GST_MESSAGE_UNKNOWN = 0,
+ GST_MESSAGE_EOS = (1 << 0),
+ GST_MESSAGE_ERROR = (1 << 1),
+ GST_MESSAGE_WARNING = (1 << 2),
+ GST_MESSAGE_INFO = (1 << 3),
+ GST_MESSAGE_TAG = (1 << 4),
+ GST_MESSAGE_BUFFERING = (1 << 5),
+ GST_MESSAGE_STATE_CHANGED = (1 << 6),
+ GST_MESSAGE_STATE_DIRTY = (1 << 7),
+ GST_MESSAGE_STEP_DONE = (1 << 8),
+ GST_MESSAGE_CLOCK_PROVIDE = (1 << 9),
+ GST_MESSAGE_CLOCK_LOST = (1 << 10),
+ GST_MESSAGE_NEW_CLOCK = (1 << 11),
+ GST_MESSAGE_STRUCTURE_CHANGE = (1 << 12),
+ GST_MESSAGE_STREAM_STATUS = (1 << 13),
+ GST_MESSAGE_APPLICATION = (1 << 14),
+ GST_MESSAGE_ELEMENT = (1 << 15),
+ GST_MESSAGE_SEGMENT_START = (1 << 16),
+ GST_MESSAGE_SEGMENT_DONE = (1 << 17),
+ GST_MESSAGE_DURATION = (1 << 18),
+ GST_MESSAGE_LATENCY = (1 << 19),
+ GST_MESSAGE_ASYNC_START = (1 << 20),
+ GST_MESSAGE_ASYNC_DONE = (1 << 21),
+ GST_MESSAGE_REQUEST_STATE = (1 << 22),
+ GST_MESSAGE_STEP_START = (1 << 23),
+ GST_MESSAGE_ANY = ~0
+} GstMessageType;
+typedef enum {
+ GST_STRUCTURE_CHANGE_TYPE_PAD_LINK = 0,
+ GST_STRUCTURE_CHANGE_TYPE_PAD_UNLINK = 1
+} GstStructureChangeType;
+typedef enum {
+ GST_STREAM_STATUS_TYPE_CREATE = 0,
+ GST_STREAM_STATUS_TYPE_ENTER = 1,
+ GST_STREAM_STATUS_TYPE_LEAVE = 2,
+ GST_STREAM_STATUS_TYPE_DESTROY = 3,
+ GST_STREAM_STATUS_TYPE_START = 8,
+ GST_STREAM_STATUS_TYPE_PAUSE = 9,
+ GST_STREAM_STATUS_TYPE_STOP = 10
+} GstStreamStatusType;
+struct _GstMessage
+{
+ GstMiniObject mini_object;
+ GMutex *lock;
+ GCond *cond;
+ GstMessageType type;
+ guint64 timestamp;
+ GstObject *src;
+ GstStructure *structure;
+ union {
+ struct {
+ guint32 seqnum;
+ } ABI;
+ gpointer _gst_reserved[4 + 0];
+ } abidata;
+};
+struct _GstMessageClass {
+ GstMiniObjectClass mini_object_class;
+ gpointer _gst_reserved[4];
+};
+GType gst_message_get_type (void);
+const gchar* gst_message_type_get_name (GstMessageType type);
+GQuark gst_message_type_to_quark (GstMessageType type);
+static inline GstMessage *
+gst_message_ref (GstMessage * msg)
+{
+ return (GstMessage *) gst_mini_object_ref (((((GstMiniObject*) g_type_check_instance_cast ((GTypeInstance*) ((msg)), ((gst_mini_object_get_type())))))));
+}
+static inline void
+gst_message_unref (GstMessage * msg)
+{
+ gst_mini_object_unref (((GstMiniObject*)(msg)));
+}
+static inline GstMessage *
+gst_message_copy (const GstMessage * msg)
+{
+ return ((((GstMessage*) g_type_check_instance_cast ((GTypeInstance*) ((gst_mini_object_copy (((GstMiniObject*)(msg))))), ((gst_message_get_type()))))));
+}
+guint32 gst_message_get_seqnum (GstMessage *message);
+void gst_message_set_seqnum (GstMessage *message, guint32 seqnum);
+GstMessage * gst_message_new_eos (GstObject * src);
+GstMessage * gst_message_new_error (GstObject * src, GError * error, const gchar * debug);
+void gst_message_parse_error (GstMessage *message, GError **gerror, gchar **debug);
+GstMessage * gst_message_new_warning (GstObject * src, GError * error, const gchar * debug);
+void gst_message_parse_warning (GstMessage *message, GError **gerror, gchar **debug);
+GstMessage * gst_message_new_info (GstObject * src, GError * error, const gchar * debug);
+void gst_message_parse_info (GstMessage *message, GError **gerror, gchar **debug);
+GstMessage * gst_message_new_tag (GstObject * src, GstTagList * tag_list);
+GstMessage * gst_message_new_tag_full (GstObject * src, GstPad *pad, GstTagList * tag_list);
+void gst_message_parse_tag (GstMessage *message, GstTagList **tag_list);
+void gst_message_parse_tag_full (GstMessage *message, GstPad **pad, GstTagList **tag_list);
+GstMessage * gst_message_new_buffering (GstObject * src, gint percent);
+void gst_message_parse_buffering (GstMessage *message, gint *percent);
+void gst_message_set_buffering_stats (GstMessage *message, GstBufferingMode mode,
+ gint avg_in, gint avg_out,
+ gint64 buffering_left);
+void gst_message_parse_buffering_stats (GstMessage *message, GstBufferingMode *mode,
+ gint *avg_in, gint *avg_out,
+ gint64 *buffering_left);
+GstMessage * gst_message_new_state_changed (GstObject * src, GstState oldstate,
+ GstState newstate, GstState pending);
+void gst_message_parse_state_changed (GstMessage *message, GstState *oldstate,
+ GstState *newstate, GstState *pending);
+GstMessage * gst_message_new_state_dirty (GstObject * src);
+GstMessage * gst_message_new_step_done (GstObject * src, GstFormat format, guint64 amount,
+ gdouble rate, gboolean flush, gboolean intermediate,
+ guint64 duration, gboolean eos);
+void gst_message_parse_step_done (GstMessage * message, GstFormat *format, guint64 *amount,
+ gdouble *rate, gboolean *flush, gboolean *intermediate,
+ guint64 *duration, gboolean *eos);
+GstMessage * gst_message_new_clock_provide (GstObject * src, GstClock *clock, gboolean ready);
+void gst_message_parse_clock_provide (GstMessage *message, GstClock **clock,
+ gboolean *ready);
+GstMessage * gst_message_new_clock_lost (GstObject * src, GstClock *clock);
+void gst_message_parse_clock_lost (GstMessage *message, GstClock **clock);
+GstMessage * gst_message_new_new_clock (GstObject * src, GstClock *clock);
+void gst_message_parse_new_clock (GstMessage *message, GstClock **clock);
+GstMessage * gst_message_new_application (GstObject * src, GstStructure * structure);
+GstMessage * gst_message_new_element (GstObject * src, GstStructure * structure);
+GstMessage * gst_message_new_segment_start (GstObject * src, GstFormat format, gint64 position);
+void gst_message_parse_segment_start (GstMessage *message, GstFormat *format,
+ gint64 *position);
+GstMessage * gst_message_new_segment_done (GstObject * src, GstFormat format, gint64 position);
+void gst_message_parse_segment_done (GstMessage *message, GstFormat *format,
+ gint64 *position);
+GstMessage * gst_message_new_duration (GstObject * src, GstFormat format, gint64 duration);
+void gst_message_parse_duration (GstMessage *message, GstFormat *format,
+ gint64 *duration);
+GstMessage * gst_message_new_latency (GstObject * src);
+GstMessage * gst_message_new_async_start (GstObject * src, gboolean new_base_time);
+void gst_message_parse_async_start (GstMessage *message, gboolean *new_base_time);
+GstMessage * gst_message_new_async_done (GstObject * src);
+GstMessage * gst_message_new_structure_change (GstObject * src, GstStructureChangeType type,
+ GstElement *owner, gboolean busy);
+void gst_message_parse_structure_change (GstMessage *message, GstStructureChangeType *type,
+ GstElement **owner, gboolean *busy);
+GstMessage * gst_message_new_stream_status (GstObject * src, GstStreamStatusType type,
+ GstElement *owner);
+void gst_message_parse_stream_status (GstMessage *message, GstStreamStatusType *type,
+ GstElement **owner);
+void gst_message_set_stream_status_object (GstMessage *message, const GValue *object);
+const GValue * gst_message_get_stream_status_object (GstMessage *message);
+GstMessage * gst_message_new_request_state (GstObject * src, GstState state);
+void gst_message_parse_request_state (GstMessage * message, GstState *state);
+GstMessage * gst_message_new_step_start (GstObject * src, gboolean active, GstFormat format,
+ guint64 amount, gdouble rate, gboolean flush,
+ gboolean intermediate);
+void gst_message_parse_step_start (GstMessage * message, gboolean *active, GstFormat *format,
+ guint64 *amount, gdouble *rate, gboolean *flush,
+ gboolean *intermediate);
+GstMessage * gst_message_new_custom (GstMessageType type,
+ GstObject * src,
+ GstStructure * structure);
+const GstStructure * gst_message_get_structure (GstMessage *message);
+typedef enum {
+ GST_BUS_FLUSHING = (GST_OBJECT_FLAG_LAST << 0),
+ GST_BUS_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 1)
+} GstBusFlags;
+typedef enum
+{
+ GST_BUS_DROP = 0,
+ GST_BUS_PASS = 1,
+ GST_BUS_ASYNC = 2
+} GstBusSyncReply;
+typedef GstBusSyncReply (*GstBusSyncHandler) (GstBus * bus, GstMessage * message, gpointer data);
+typedef gboolean (*GstBusFunc) (GstBus * bus, GstMessage * message, gpointer data);
+struct _GstBus
+{
+ GstObject object;
+ GQueue *queue;
+ GMutex *queue_lock;
+ GstBusSyncHandler sync_handler;
+ gpointer sync_handler_data;
+ guint signal_watch_id;
+ guint num_signal_watchers;
+ GstBusPrivate *priv;
+ gpointer _gst_reserved[4 - 1];
+};
+struct _GstBusClass
+{
+ GstObjectClass parent_class;
+ void (*message) (GstBus *bus, GstMessage *message);
+ void (*sync_message) (GstBus *bus, GstMessage *message);
+ gpointer _gst_reserved[4];
+};
+GType gst_bus_get_type (void);
+GstBus* gst_bus_new (void);
+gboolean gst_bus_post (GstBus * bus, GstMessage * message);
+gboolean gst_bus_have_pending (GstBus * bus);
+GstMessage * gst_bus_peek (GstBus * bus);
+GstMessage * gst_bus_pop (GstBus * bus);
+GstMessage * gst_bus_pop_filtered (GstBus * bus, GstMessageType types);
+GstMessage * gst_bus_timed_pop (GstBus * bus, GstClockTime timeout);
+GstMessage * gst_bus_timed_pop_filtered (GstBus * bus, GstClockTime timeout, GstMessageType types);
+void gst_bus_set_flushing (GstBus * bus, gboolean flushing);
+void gst_bus_set_sync_handler (GstBus * bus, GstBusSyncHandler func,
+ gpointer data);
+GSource * gst_bus_create_watch (GstBus * bus);
+guint gst_bus_add_watch_full (GstBus * bus,
+ gint priority,
+ GstBusFunc func,
+ gpointer user_data,
+ GDestroyNotify notify);
+guint gst_bus_add_watch (GstBus * bus,
+ GstBusFunc func,
+ gpointer user_data);
+GstMessage* gst_bus_poll (GstBus *bus, GstMessageType events,
+ GstClockTimeDiff timeout);
+gboolean gst_bus_async_signal_func (GstBus *bus, GstMessage *message,
+ gpointer data);
+GstBusSyncReply gst_bus_sync_signal_handler (GstBus *bus, GstMessage *message,
+ gpointer data);
+void gst_bus_add_signal_watch (GstBus * bus);
+void gst_bus_add_signal_watch_full (GstBus * bus, gint priority);
+void gst_bus_remove_signal_watch (GstBus * bus);
+void gst_bus_enable_sync_message_emission (GstBus * bus);
+void gst_bus_disable_sync_message_emission (GstBus * bus);
+typedef struct _GstElementFactory GstElementFactory;
+typedef struct _GstElementFactoryClass GstElementFactoryClass;
+typedef enum
+{
+ G_MODULE_BIND_LAZY = 1 << 0,
+ G_MODULE_BIND_LOCAL = 1 << 1,
+ G_MODULE_BIND_MASK = 0x03
+} GModuleFlags;
+typedef struct _GModule GModule;
+typedef const gchar* (*GModuleCheckInit) (GModule *module);
+typedef void (*GModuleUnload) (GModule *module);
+gboolean g_module_supported (void) __attribute__((__const__));
+GModule* g_module_open (const gchar *file_name,
+ GModuleFlags flags);
+gboolean g_module_close (GModule *module);
+void g_module_make_resident (GModule *module);
+const gchar* g_module_error (void);
+gboolean g_module_symbol (GModule *module,
+ const gchar *symbol_name,
+ gpointer *symbol);
+const gchar* g_module_name (GModule *module);
+gchar* g_module_build_path (const gchar *directory,
+ const gchar *module_name);
+typedef struct _GstPlugin GstPlugin;
+typedef struct _GstPluginClass GstPluginClass;
+typedef struct _GstPluginPrivate GstPluginPrivate;
+typedef struct _GstPluginDesc GstPluginDesc;
+GQuark gst_plugin_error_quark (void);
+typedef enum
+{
+ GST_PLUGIN_ERROR_MODULE,
+ GST_PLUGIN_ERROR_DEPENDENCIES,
+ GST_PLUGIN_ERROR_NAME_MISMATCH
+} GstPluginError;
+typedef enum
+{
+ GST_PLUGIN_FLAG_CACHED = (1<<0)
+} GstPluginFlags;
+typedef enum {
+ GST_PLUGIN_DEPENDENCY_FLAG_NONE = 0,
+ GST_PLUGIN_DEPENDENCY_FLAG_RECURSE = (1 << 0),
+ GST_PLUGIN_DEPENDENCY_FLAG_PATHS_ARE_DEFAULT_ONLY = (1 << 1),
+ GST_PLUGIN_DEPENDENCY_FLAG_FILE_NAME_IS_SUFFIX = (1 << 2)
+} GstPluginDependencyFlags;
+typedef gboolean (*GstPluginInitFunc) (GstPlugin *plugin);
+typedef gboolean (*GstPluginInitFullFunc) (GstPlugin *plugin, gpointer user_data);
+struct _GstPluginDesc {
+ gint major_version;
+ gint minor_version;
+ const gchar *name;
+ gchar *description;
+ GstPluginInitFunc plugin_init;
+ const gchar *version;
+ const gchar *license;
+ const gchar *source;
+ const gchar *package;
+ const gchar *origin;
+ gpointer _gst_reserved[4];
+};
+struct _GstPlugin {
+ GstObject object;
+ GstPluginDesc desc;
+ GstPluginDesc *orig_desc;
+ unsigned int flags;
+ gchar * filename;
+ gchar * basename;
+ GModule * module;
+ off_t file_size;
+ time_t file_mtime;
+ gboolean registered;
+ GstPluginPrivate *priv;
+ gpointer _gst_reserved[4 - 1];
+};
+struct _GstPluginClass {
+ GstObjectClass object_class;
+ gpointer _gst_reserved[4];
+};
+typedef gboolean (*GstPluginFilter) (GstPlugin *plugin,
+ gpointer user_data);
+GType gst_plugin_get_type (void);
+void _gst_plugin_register_static (GstPluginDesc *desc);
+gboolean gst_plugin_register_static (gint major_version,
+ gint minor_version,
+ const gchar *name,
+ gchar *description,
+ GstPluginInitFunc init_func,
+ const gchar *version,
+ const gchar *license,
+ const gchar *source,
+ const gchar *package,
+ const gchar *origin);
+gboolean gst_plugin_register_static_full (gint major_version,
+ gint minor_version,
+ const gchar *name,
+ gchar *description,
+ GstPluginInitFullFunc init_full_func,
+ const gchar *version,
+ const gchar *license,
+ const gchar *source,
+ const gchar *package,
+ const gchar *origin,
+ gpointer user_data);
+const gchar* gst_plugin_get_name (GstPlugin *plugin);
+const gchar* gst_plugin_get_description (GstPlugin *plugin);
+const gchar* gst_plugin_get_filename (GstPlugin *plugin);
+const gchar* gst_plugin_get_version (GstPlugin *plugin);
+const gchar* gst_plugin_get_license (GstPlugin *plugin);
+const gchar* gst_plugin_get_source (GstPlugin *plugin);
+const gchar* gst_plugin_get_package (GstPlugin *plugin);
+const gchar* gst_plugin_get_origin (GstPlugin *plugin);
+const GstStructure* gst_plugin_get_cache_data (GstPlugin * plugin);
+void gst_plugin_set_cache_data (GstPlugin * plugin, GstStructure *cache_data);
+GModule * gst_plugin_get_module (GstPlugin *plugin);
+gboolean gst_plugin_is_loaded (GstPlugin *plugin);
+gboolean gst_plugin_name_filter (GstPlugin *plugin, const gchar *name);
+GstPlugin * gst_plugin_load_file (const gchar *filename, GError** error);
+GstPlugin * gst_plugin_load (GstPlugin *plugin);
+GstPlugin * gst_plugin_load_by_name (const gchar *name);
+void gst_plugin_add_dependency (GstPlugin * plugin,
+ const gchar ** env_vars,
+ const gchar ** paths,
+ const gchar ** names,
+ GstPluginDependencyFlags flags);
+void gst_plugin_add_dependency_simple (GstPlugin * plugin,
+ const gchar * env_vars,
+ const gchar * paths,
+ const gchar * names,
+ GstPluginDependencyFlags flags);
+void gst_plugin_list_free (GList *list);
+typedef struct _GstPluginFeature GstPluginFeature;
+typedef struct _GstPluginFeatureClass GstPluginFeatureClass;
+typedef enum {
+ GST_RANK_NONE = 0,
+ GST_RANK_MARGINAL = 64,
+ GST_RANK_SECONDARY = 128,
+ GST_RANK_PRIMARY = 256
+} GstRank;
+struct _GstPluginFeature {
+ GstObject object;
+ gboolean loaded;
+ gchar *name;
+ guint rank;
+ const gchar *plugin_name;
+ gpointer _gst_reserved[4];
+};
+struct _GstPluginFeatureClass {
+ GstObjectClass parent_class;
+ gpointer _gst_reserved[4];
+};
+typedef struct {
+ const gchar *name;
+ GType type;
+} GstTypeNameData;
+typedef gboolean (*GstPluginFeatureFilter) (GstPluginFeature *feature,
+ gpointer user_data);
+GType gst_plugin_feature_get_type (void);
+GstPluginFeature *
+ gst_plugin_feature_load (GstPluginFeature *feature);
+gboolean gst_plugin_feature_type_name_filter (GstPluginFeature *feature,
+ GstTypeNameData *data);
+void gst_plugin_feature_set_rank (GstPluginFeature *feature, guint rank);
+void gst_plugin_feature_set_name (GstPluginFeature *feature, const gchar *name);
+guint gst_plugin_feature_get_rank (GstPluginFeature *feature);
+const gchar *gst_plugin_feature_get_name (GstPluginFeature *feature);
+void gst_plugin_feature_list_free (GList *list);
+gboolean gst_plugin_feature_check_version (GstPluginFeature *feature,
+ guint min_major,
+ guint min_minor,
+ guint min_micro);
+typedef struct _GstElementDetails GstElementDetails;
+struct _GstElementDetails
+{
+ gchar *longname;
+ gchar *klass;
+ gchar *description;
+ gchar *author;
+ gpointer _gst_reserved[4];
+};
+struct _GstElementFactory {
+ GstPluginFeature parent;
+ GType type;
+ GstElementDetails details;
+ GList * staticpadtemplates;
+ guint numpadtemplates;
+ guint uri_type;
+ gchar ** uri_protocols;
+ GList * interfaces;
+ gpointer _gst_reserved[4];
+};
+struct _GstElementFactoryClass {
+ GstPluginFeatureClass parent_class;
+ gpointer _gst_reserved[4];
+};
+GType gst_element_factory_get_type (void);
+GstElementFactory * gst_element_factory_find (const gchar *name);
+GType gst_element_factory_get_element_type (GstElementFactory *factory);
+const gchar * gst_element_factory_get_longname (GstElementFactory *factory);
+const gchar * gst_element_factory_get_klass (GstElementFactory *factory);
+const gchar * gst_element_factory_get_description (GstElementFactory *factory);
+const gchar * gst_element_factory_get_author (GstElementFactory *factory);
+guint gst_element_factory_get_num_pad_templates (GstElementFactory *factory);
+const GList * gst_element_factory_get_static_pad_templates (GstElementFactory *factory);
+gint gst_element_factory_get_uri_type (GstElementFactory *factory);
+gchar ** gst_element_factory_get_uri_protocols (GstElementFactory *factory);
+gboolean gst_element_factory_has_interface (GstElementFactory *factory,
+ const gchar *interfacename);
+GstElement* gst_element_factory_create (GstElementFactory *factory,
+ const gchar *name);
+GstElement* gst_element_factory_make (const gchar *factoryname, const gchar *name);
+void __gst_element_factory_add_static_pad_template (GstElementFactory *elementfactory,
+ GstStaticPadTemplate *templ);
+void __gst_element_factory_add_interface (GstElementFactory *elementfactory,
+ const gchar *interfacename);
+gboolean gst_element_register (GstPlugin *plugin, const gchar *name,
+ guint rank, GType type);
+typedef struct _GstIndexEntry GstIndexEntry;
+typedef struct _GstIndexGroup GstIndexGroup;
+typedef struct _GstIndex GstIndex;
+typedef struct _GstIndexClass GstIndexClass;
+typedef enum {
+ GST_INDEX_UNKNOWN,
+ GST_INDEX_CERTAIN,
+ GST_INDEX_FUZZY
+} GstIndexCertainty;
+typedef enum {
+ GST_INDEX_ENTRY_ID,
+ GST_INDEX_ENTRY_ASSOCIATION,
+ GST_INDEX_ENTRY_OBJECT,
+ GST_INDEX_ENTRY_FORMAT
+} GstIndexEntryType;
+typedef enum {
+ GST_INDEX_LOOKUP_EXACT,
+ GST_INDEX_LOOKUP_BEFORE,
+ GST_INDEX_LOOKUP_AFTER
+} GstIndexLookupMethod;
+typedef struct _GstIndexAssociation GstIndexAssociation;
+struct _GstIndexAssociation {
+ GstFormat format;
+ gint64 value;
+};
+typedef enum {
+ GST_ASSOCIATION_FLAG_NONE = 0,
+ GST_ASSOCIATION_FLAG_KEY_UNIT = (1 << 0),
+ GST_ASSOCIATION_FLAG_DELTA_UNIT = (1 << 1),
+ GST_ASSOCIATION_FLAG_LAST = (1 << 8)
+} GstAssocFlags;
+struct _GstIndexEntry {
+ GstIndexEntryType type;
+ gint id;
+ union {
+ struct {
+ gchar *description;
+ } id;
+ struct {
+ gint nassocs;
+ GstIndexAssociation
+ *assocs;
+ GstAssocFlags flags;
+ } assoc;
+ struct {
+ gchar *key;
+ GType type;
+ gpointer object;
+ } object;
+ struct {
+ GstFormat format;
+ const gchar *key;
+ } format;
+ } data;
+};
+struct _GstIndexGroup {
+ gint groupnum;
+ GList *entries;
+ GstIndexCertainty certainty;
+ gint peergroup;
+};
+typedef gboolean (*GstIndexFilter) (GstIndex *index,
+ GstIndexEntry *entry,
+ gpointer user_data);
+typedef enum {
+ GST_INDEX_RESOLVER_CUSTOM,
+ GST_INDEX_RESOLVER_GTYPE,
+ GST_INDEX_RESOLVER_PATH
+} GstIndexResolverMethod;
+typedef gboolean (*GstIndexResolver) (GstIndex *index,
+ GstObject *writer,
+ gchar **writer_string,
+ gpointer user_data);
+typedef enum {
+ GST_INDEX_WRITABLE = (GST_OBJECT_FLAG_LAST << 0),
+ GST_INDEX_READABLE = (GST_OBJECT_FLAG_LAST << 1),
+ GST_INDEX_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 8)
+} GstIndexFlags;
+struct _GstIndex {
+ GstObject object;
+ GList *groups;
+ GstIndexGroup *curgroup;
+ gint maxgroup;
+ GstIndexResolverMethod method;
+ GstIndexResolver resolver;
+ gpointer resolver_user_data;
+ GstIndexFilter filter;
+ gpointer filter_user_data;
+ GDestroyNotify filter_user_data_destroy;
+ GHashTable *writers;
+ gint last_id;
+ GDestroyNotify resolver_user_data_destroy;
+ gpointer _gst_reserved[4 - 1];
+};
+struct _GstIndexClass {
+ GstObjectClass parent_class;
+ gboolean (*get_writer_id) (GstIndex *index, gint *writer_id, gchar *writer_string);
+ void (*commit) (GstIndex *index, gint id);
+ void (*add_entry) (GstIndex *index, GstIndexEntry *entry);
+ GstIndexEntry* (*get_assoc_entry) (GstIndex *index, gint id,
+ GstIndexLookupMethod method, GstAssocFlags flags,
+ GstFormat format, gint64 value,
+ GCompareDataFunc func,
+ gpointer user_data);
+ void (*entry_added) (GstIndex *index, GstIndexEntry *entry);
+ gpointer _gst_reserved[4];
+};
+GType gst_index_get_type (void);
+GstIndex* gst_index_new (void);
+void gst_index_commit (GstIndex *index, gint id);
+gint gst_index_get_group (GstIndex *index);
+gint gst_index_new_group (GstIndex *index);
+gboolean gst_index_set_group (GstIndex *index, gint groupnum);
+void gst_index_set_certainty (GstIndex *index,
+ GstIndexCertainty certainty);
+GstIndexCertainty gst_index_get_certainty (GstIndex *index);
+void gst_index_set_filter (GstIndex *index,
+ GstIndexFilter filter, gpointer user_data);
+void gst_index_set_filter_full (GstIndex *index,
+ GstIndexFilter filter, gpointer user_data,
+ GDestroyNotify user_data_destroy);
+void gst_index_set_resolver (GstIndex *index,
+ GstIndexResolver resolver, gpointer user_data);
+void gst_index_set_resolver_full (GstIndex *index, GstIndexResolver resolver,
+ gpointer user_data,
+ GDestroyNotify user_data_destroy);
+gboolean gst_index_get_writer_id (GstIndex *index, GstObject *writer, gint *id);
+GstIndexEntry* gst_index_add_format (GstIndex *index, gint id, GstFormat format);
+GstIndexEntry* gst_index_add_associationv (GstIndex * index, gint id, GstAssocFlags flags,
+ gint n, const GstIndexAssociation * list);
+GstIndexEntry* gst_index_add_association (GstIndex *index, gint id, GstAssocFlags flags,
+ GstFormat format, gint64 value, ...);
+GstIndexEntry* gst_index_add_object (GstIndex *index, gint id, gchar *key,
+ GType type, gpointer object);
+GstIndexEntry* gst_index_add_id (GstIndex *index, gint id,
+ gchar *description);
+GstIndexEntry* gst_index_get_assoc_entry (GstIndex *index, gint id,
+ GstIndexLookupMethod method, GstAssocFlags flags,
+ GstFormat format, gint64 value);
+GstIndexEntry* gst_index_get_assoc_entry_full (GstIndex *index, gint id,
+ GstIndexLookupMethod method, GstAssocFlags flags,
+ GstFormat format, gint64 value,
+ GCompareDataFunc func,
+ gpointer user_data);
+GType gst_index_entry_get_type (void);
+GstIndexEntry * gst_index_entry_copy (GstIndexEntry *entry);
+void gst_index_entry_free (GstIndexEntry *entry);
+gboolean gst_index_entry_assoc_map (GstIndexEntry *entry,
+ GstFormat format, gint64 *value);
+typedef struct _GstIndexFactory GstIndexFactory;
+typedef struct _GstIndexFactoryClass GstIndexFactoryClass;
+struct _GstIndexFactory {
+ GstPluginFeature feature;
+ gchar *longdesc;
+ GType type;
+ gpointer _gst_reserved[4];
+};
+struct _GstIndexFactoryClass {
+ GstPluginFeatureClass parent;
+ gpointer _gst_reserved[4];
+};
+GType gst_index_factory_get_type (void);
+GstIndexFactory* gst_index_factory_new (const gchar *name,
+ const gchar *longdesc, GType type);
+void gst_index_factory_destroy (GstIndexFactory *factory);
+GstIndexFactory* gst_index_factory_find (const gchar *name);
+GstIndex* gst_index_factory_create (GstIndexFactory *factory);
+GstIndex* gst_index_factory_make (const gchar *name);
+typedef enum {
+ GST_STATE_CHANGE_FAILURE = 0,
+ GST_STATE_CHANGE_SUCCESS = 1,
+ GST_STATE_CHANGE_ASYNC = 2,
+ GST_STATE_CHANGE_NO_PREROLL = 3
+} GstStateChangeReturn;
+typedef enum
+{
+ GST_STATE_CHANGE_NULL_TO_READY = (GST_STATE_NULL<<3) | GST_STATE_READY,
+ GST_STATE_CHANGE_READY_TO_PAUSED = (GST_STATE_READY<<3) | GST_STATE_PAUSED,
+ GST_STATE_CHANGE_PAUSED_TO_PLAYING = (GST_STATE_PAUSED<<3) | GST_STATE_PLAYING,
+ GST_STATE_CHANGE_PLAYING_TO_PAUSED = (GST_STATE_PLAYING<<3) | GST_STATE_PAUSED,
+ GST_STATE_CHANGE_PAUSED_TO_READY = (GST_STATE_PAUSED<<3) | GST_STATE_READY,
+ GST_STATE_CHANGE_READY_TO_NULL = (GST_STATE_READY<<3) | GST_STATE_NULL
+} GstStateChange;
+typedef enum
+{
+ GST_ELEMENT_LOCKED_STATE = (GST_OBJECT_FLAG_LAST << 0),
+ GST_ELEMENT_IS_SINK = (GST_OBJECT_FLAG_LAST << 1),
+ GST_ELEMENT_UNPARENTING = (GST_OBJECT_FLAG_LAST << 2),
+ GST_ELEMENT_FLAG_LAST = (GST_OBJECT_FLAG_LAST << 16)
+} GstElementFlags;
+struct _GstElement
+{
+ GstObject object;
+ GStaticRecMutex *state_lock;
+ GCond *state_cond;
+ guint32 state_cookie;
+ GstState current_state;
+ GstState next_state;
+ GstState pending_state;
+ GstStateChangeReturn last_return;
+ GstBus *bus;
+ GstClock *clock;
+ GstClockTimeDiff base_time;
+ guint16 numpads;
+ GList *pads;
+ guint16 numsrcpads;
+ GList *srcpads;
+ guint16 numsinkpads;
+ GList *sinkpads;
+ guint32 pads_cookie;
+ union {
+ struct {
+ GstState target_state;
+ GstClockTime start_time;
+ } ABI;
+ gpointer _gst_reserved[4 + 0];
+ } abidata;
+};
+struct _GstElementClass
+{
+ GstObjectClass parent_class;
+ GstElementDetails details;
+ GstElementFactory *elementfactory;
+ GList *padtemplates;
+ gint numpadtemplates;
+ guint32 pad_templ_cookie;
+ void (*pad_added) (GstElement *element, GstPad *pad);
+ void (*pad_removed) (GstElement *element, GstPad *pad);
+ void (*no_more_pads) (GstElement *element);
+ GstPad* (*request_new_pad) (GstElement *element, GstPadTemplate *templ, const gchar* name);
+ void (*release_pad) (GstElement *element, GstPad *pad);
+ GstStateChangeReturn (*get_state) (GstElement * element, GstState * state,
+ GstState * pending, GstClockTime timeout);
+ GstStateChangeReturn (*set_state) (GstElement *element, GstState state);
+ GstStateChangeReturn (*change_state) (GstElement *element, GstStateChange transition);
+ void (*set_bus) (GstElement * element, GstBus * bus);
+ GstClock* (*provide_clock) (GstElement *element);
+ gboolean (*set_clock) (GstElement *element, GstClock *clock);
+ GstIndex* (*get_index) (GstElement *element);
+ void (*set_index) (GstElement *element, GstIndex *index);
+ gboolean (*send_event) (GstElement *element, GstEvent *event);
+ const GstQueryType* (*get_query_types) (GstElement *element);
+ gboolean (*query) (GstElement *element, GstQuery *query);
+ gpointer _gst_reserved[4];
+};
+void gst_element_class_add_pad_template (GstElementClass *klass, GstPadTemplate *templ);
+GstPadTemplate* gst_element_class_get_pad_template (GstElementClass *element_class, const gchar *name);
+GList* gst_element_class_get_pad_template_list (GstElementClass *element_class);
+void gst_element_class_set_details (GstElementClass *klass, const GstElementDetails *details);
+void gst_element_class_set_details_simple (GstElementClass *klass,
+ const gchar *longname,
+ const gchar *classification,
+ const gchar *description,
+ const gchar *author);
+GType gst_element_get_type (void);
+gboolean gst_element_requires_clock (GstElement *element);
+gboolean gst_element_provides_clock (GstElement *element);
+GstClock* gst_element_provide_clock (GstElement *element);
+GstClock* gst_element_get_clock (GstElement *element);
+gboolean gst_element_set_clock (GstElement *element, GstClock *clock);
+void gst_element_set_base_time (GstElement *element, GstClockTime time);
+GstClockTime gst_element_get_base_time (GstElement *element);
+void gst_element_set_start_time (GstElement *element, GstClockTime time);
+GstClockTime gst_element_get_start_time (GstElement *element);
+gboolean gst_element_is_indexable (GstElement *element);
+void gst_element_set_index (GstElement *element, GstIndex *index);
+GstIndex* gst_element_get_index (GstElement *element);
+void gst_element_set_bus (GstElement * element, GstBus * bus);
+GstBus * gst_element_get_bus (GstElement * element);
+gboolean gst_element_add_pad (GstElement *element, GstPad *pad);
+gboolean gst_element_remove_pad (GstElement *element, GstPad *pad);
+void gst_element_no_more_pads (GstElement *element);
+GstPad* gst_element_get_pad (GstElement *element, const gchar *name);
+GstPad* gst_element_get_static_pad (GstElement *element, const gchar *name);
+GstPad* gst_element_get_request_pad (GstElement *element, const gchar *name);
+void gst_element_release_request_pad (GstElement *element, GstPad *pad);
+GstIterator * gst_element_iterate_pads (GstElement * element);
+GstIterator * gst_element_iterate_src_pads (GstElement * element);
+GstIterator * gst_element_iterate_sink_pads (GstElement * element);
+gboolean gst_element_send_event (GstElement *element, GstEvent *event);
+gboolean gst_element_seek (GstElement *element, gdouble rate,
+ GstFormat format, GstSeekFlags flags,
+ GstSeekType cur_type, gint64 cur,
+ GstSeekType stop_type, gint64 stop);
+const GstQueryType*
+ gst_element_get_query_types (GstElement *element);
+gboolean gst_element_query (GstElement *element, GstQuery *query);
+gboolean gst_element_post_message (GstElement * element, GstMessage * message);
+gchar * _gst_element_error_printf (const gchar *format, ...);
+void gst_element_message_full (GstElement * element, GstMessageType type,
+ GQuark domain, gint code, gchar * text,
+ gchar * debug, const gchar * file,
+ const gchar * function, gint line);
+gboolean gst_element_is_locked_state (GstElement *element);
+gboolean gst_element_set_locked_state (GstElement *element, gboolean locked_state);
+gboolean gst_element_sync_state_with_parent (GstElement *element);
+GstStateChangeReturn gst_element_get_state (GstElement * element,
+ GstState * state,
+ GstState * pending,
+ GstClockTime timeout);
+GstStateChangeReturn gst_element_set_state (GstElement *element, GstState state);
+void gst_element_abort_state (GstElement * element);
+GstStateChangeReturn gst_element_change_state (GstElement * element,
+ GstStateChange transition);
+GstStateChangeReturn gst_element_continue_state (GstElement * element,
+ GstStateChangeReturn ret);
+void gst_element_lost_state (GstElement * element);
+void gst_element_lost_state_full (GstElement * element, gboolean new_base_time);
+GstElementFactory* gst_element_get_factory (GstElement *element);
+typedef enum {
+ GST_BIN_FLAG_LAST = (GST_ELEMENT_FLAG_LAST << 5)
+} GstBinFlags;
+typedef struct _GstBin GstBin;
+typedef struct _GstBinClass GstBinClass;
+typedef struct _GstBinPrivate GstBinPrivate;
+struct _GstBin {
+ GstElement element;
+ gint numchildren;
+ GList *children;
+ guint32 children_cookie;
+ GstBus *child_bus;
+ GList *messages;
+ gboolean polling;
+ gboolean state_dirty;
+ gboolean clock_dirty;
+ GstClock *provided_clock;
+ GstElement *clock_provider;
+ GstBinPrivate *priv;
+ gpointer _gst_reserved[4 - 1];
+};
+struct _GstBinClass {
+ GstElementClass parent_class;
+ GThreadPool *pool;
+ void (*element_added) (GstBin *bin, GstElement *child);
+ void (*element_removed) (GstBin *bin, GstElement *child);
+ gboolean (*add_element) (GstBin *bin, GstElement *element);
+ gboolean (*remove_element) (GstBin *bin, GstElement *element);
+ void (*handle_message) (GstBin *bin, GstMessage *message);
+ gboolean (*do_latency) (GstBin *bin);
+ gpointer _gst_reserved[4 -1];
+};
+GType gst_bin_get_type (void);
+GstElement* gst_bin_new (const gchar *name);
+gboolean gst_bin_add (GstBin *bin, GstElement *element);
+gboolean gst_bin_remove (GstBin *bin, GstElement *element);
+GstElement* gst_bin_get_by_name (GstBin *bin, const gchar *name);
+GstElement* gst_bin_get_by_name_recurse_up (GstBin *bin, const gchar *name);
+GstElement* gst_bin_get_by_interface (GstBin *bin, GType iface);
+GstIterator* gst_bin_iterate_elements (GstBin *bin);
+GstIterator* gst_bin_iterate_sorted (GstBin *bin);
+GstIterator* gst_bin_iterate_recurse (GstBin *bin);
+GstIterator* gst_bin_iterate_sinks (GstBin *bin);
+GstIterator* gst_bin_iterate_sources (GstBin *bin);
+GstIterator* gst_bin_iterate_all_by_interface (GstBin *bin, GType iface);
+gboolean gst_bin_recalculate_latency (GstBin * bin);
+typedef struct _GstChildProxy GstChildProxy;
+typedef struct _GstChildProxyInterface GstChildProxyInterface;
+struct _GstChildProxyInterface
+{
+ GTypeInterface parent;
+ GstObject *(*get_child_by_index) (GstChildProxy * parent, guint index);
+ guint (*get_children_count) (GstChildProxy * parent);
+ void (*child_added) (GstChildProxy * parent, GstObject * child);
+ void (*child_removed) (GstChildProxy * parent, GstObject * child);
+ gpointer _gst_reserved[4];
+};
+GType gst_child_proxy_get_type (void);
+GstObject *gst_child_proxy_get_child_by_name (GstChildProxy * parent, const gchar * name);
+GstObject *gst_child_proxy_get_child_by_index (GstChildProxy * parent, guint index);
+guint gst_child_proxy_get_children_count (GstChildProxy * parent);
+gboolean gst_child_proxy_lookup (GstObject *object, const gchar *name,
+ GstObject **target, GParamSpec **pspec);
+void gst_child_proxy_get_property (GstObject * object, const gchar *name, GValue *value);
+void gst_child_proxy_get_valist (GstObject * object,
+ const gchar * first_property_name, va_list var_args);
+void gst_child_proxy_get (GstObject * object, const gchar * first_property_name,
+ ...) __attribute__((__sentinel__));
+void gst_child_proxy_set_property (GstObject * object, const gchar *name, const GValue *value);
+void gst_child_proxy_set_valist (GstObject* object,
+ const gchar * first_property_name, va_list var_args);
+void gst_child_proxy_set (GstObject * object, const gchar * first_property_name,
+ ...) __attribute__((__sentinel__));
+void gst_child_proxy_child_added (GstObject * object, GstObject * child);
+void gst_child_proxy_child_removed (GstObject * object, GstObject * child);
+typedef enum {
+ GST_DEBUG_GRAPH_SHOW_MEDIA_TYPE = (1<<0),
+ GST_DEBUG_GRAPH_SHOW_CAPS_DETAILS = (1<<1),
+ GST_DEBUG_GRAPH_SHOW_NON_DEFAULT_PARAMS = (1<<2),
+ GST_DEBUG_GRAPH_SHOW_STATES = (1<<3),
+ GST_DEBUG_GRAPH_SHOW_ALL = ((1<<4)-1)
+} GstDebugGraphDetails;
+void _gst_debug_bin_to_dot_file (GstBin *bin, GstDebugGraphDetails details, const gchar *file_name);
+void _gst_debug_bin_to_dot_file_with_ts (GstBin *bin, GstDebugGraphDetails details, const gchar *file_name);
+typedef enum
+{
+ GST_CORE_ERROR_FAILED = 1,
+ GST_CORE_ERROR_TOO_LAZY,
+ GST_CORE_ERROR_NOT_IMPLEMENTED,
+ GST_CORE_ERROR_STATE_CHANGE,
+ GST_CORE_ERROR_PAD,
+ GST_CORE_ERROR_THREAD,
+ GST_CORE_ERROR_NEGOTIATION,
+ GST_CORE_ERROR_EVENT,
+ GST_CORE_ERROR_SEEK,
+ GST_CORE_ERROR_CAPS,
+ GST_CORE_ERROR_TAG,
+ GST_CORE_ERROR_MISSING_PLUGIN,
+ GST_CORE_ERROR_CLOCK,
+ GST_CORE_ERROR_DISABLED,
+ GST_CORE_ERROR_NUM_ERRORS
+} GstCoreError;
+typedef enum
+{
+ GST_LIBRARY_ERROR_FAILED = 1,
+ GST_LIBRARY_ERROR_TOO_LAZY,
+ GST_LIBRARY_ERROR_INIT,
+ GST_LIBRARY_ERROR_SHUTDOWN,
+ GST_LIBRARY_ERROR_SETTINGS,
+ GST_LIBRARY_ERROR_ENCODE,
+ GST_LIBRARY_ERROR_NUM_ERRORS
+} GstLibraryError;
+typedef enum
+{
+ GST_RESOURCE_ERROR_FAILED = 1,
+ GST_RESOURCE_ERROR_TOO_LAZY,
+ GST_RESOURCE_ERROR_NOT_FOUND,
+ GST_RESOURCE_ERROR_BUSY,
+ GST_RESOURCE_ERROR_OPEN_READ,
+ GST_RESOURCE_ERROR_OPEN_WRITE,
+ GST_RESOURCE_ERROR_OPEN_READ_WRITE,
+ GST_RESOURCE_ERROR_CLOSE,
+ GST_RESOURCE_ERROR_READ,
+ GST_RESOURCE_ERROR_WRITE,
+ GST_RESOURCE_ERROR_SEEK,
+ GST_RESOURCE_ERROR_SYNC,
+ GST_RESOURCE_ERROR_SETTINGS,
+ GST_RESOURCE_ERROR_NO_SPACE_LEFT,
+ GST_RESOURCE_ERROR_NUM_ERRORS
+} GstResourceError;
+typedef enum
+{
+ GST_STREAM_ERROR_FAILED = 1,
+ GST_STREAM_ERROR_TOO_LAZY,
+ GST_STREAM_ERROR_NOT_IMPLEMENTED,
+ GST_STREAM_ERROR_TYPE_NOT_FOUND,
+ GST_STREAM_ERROR_WRONG_TYPE,
+ GST_STREAM_ERROR_CODEC_NOT_FOUND,
+ GST_STREAM_ERROR_DECODE,
+ GST_STREAM_ERROR_ENCODE,
+ GST_STREAM_ERROR_DEMUX,
+ GST_STREAM_ERROR_MUX,
+ GST_STREAM_ERROR_FORMAT,
+ GST_STREAM_ERROR_DECRYPT,
+ GST_STREAM_ERROR_DECRYPT_NOKEY,
+ GST_STREAM_ERROR_NUM_ERRORS
+} GstStreamError;
+GType gst_g_error_get_type (void);
+gchar *gst_error_get_message (GQuark domain, gint code);
+GQuark gst_stream_error_quark (void);
+GQuark gst_core_error_quark (void);
+GQuark gst_resource_error_quark (void);
+GQuark gst_library_error_quark (void);
+typedef struct _GstProxyPad GstProxyPad;
+typedef struct _GstProxyPadPrivate GstProxyPadPrivate;
+typedef struct _GstProxyPadClass GstProxyPadClass;
+struct _GstProxyPad
+{
+ GstPad pad;
+ GstProxyPadPrivate *priv;
+};
+struct _GstProxyPadClass
+{
+ GstPadClass parent_class;
+ gpointer _gst_reserved[1];
+};
+GType gst_proxy_pad_get_type (void);
+typedef struct _GstGhostPad GstGhostPad;
+typedef struct _GstGhostPadPrivate GstGhostPadPrivate;
+typedef struct _GstGhostPadClass GstGhostPadClass;
+struct _GstGhostPad
+{
+ GstProxyPad pad;
+ GstGhostPadPrivate *priv;
+};
+struct _GstGhostPadClass
+{
+ GstProxyPadClass parent_class;
+ gpointer _gst_reserved[4];
+};
+GType gst_ghost_pad_get_type (void);
+GstPad* gst_ghost_pad_new (const gchar *name, GstPad *target);
+GstPad* gst_ghost_pad_new_no_target (const gchar *name, GstPadDirection dir);
+GstPad* gst_ghost_pad_new_from_template (const gchar *name, GstPad * target, GstPadTemplate * templ);
+GstPad* gst_ghost_pad_new_no_target_from_template (const gchar *name, GstPadTemplate * templ);
+GstPad* gst_ghost_pad_get_target (GstGhostPad *gpad);
+gboolean gst_ghost_pad_set_target (GstGhostPad *gpad, GstPad *newtarget);
+gboolean gst_ghost_pad_construct (GstGhostPad *gpad);
+typedef enum {
+ GST_LEVEL_NONE = 0,
+ GST_LEVEL_ERROR,
+ GST_LEVEL_WARNING,
+ GST_LEVEL_INFO,
+ GST_LEVEL_DEBUG,
+ GST_LEVEL_LOG,
+ GST_LEVEL_FIXME = 6,
+ GST_LEVEL_MEMDUMP = 9,
+ GST_LEVEL_COUNT
+} GstDebugLevel;
+typedef enum {
+ GST_DEBUG_FG_BLACK = 0x0000,
+ GST_DEBUG_FG_RED = 0x0001,
+ GST_DEBUG_FG_GREEN = 0x0002,
+ GST_DEBUG_FG_YELLOW = 0x0003,
+ GST_DEBUG_FG_BLUE = 0x0004,
+ GST_DEBUG_FG_MAGENTA = 0x0005,
+ GST_DEBUG_FG_CYAN = 0x0006,
+ GST_DEBUG_FG_WHITE = 0x0007,
+ GST_DEBUG_BG_BLACK = 0x0000,
+ GST_DEBUG_BG_RED = 0x0010,
+ GST_DEBUG_BG_GREEN = 0x0020,
+ GST_DEBUG_BG_YELLOW = 0x0030,
+ GST_DEBUG_BG_BLUE = 0x0040,
+ GST_DEBUG_BG_MAGENTA = 0x0050,
+ GST_DEBUG_BG_CYAN = 0x0060,
+ GST_DEBUG_BG_WHITE = 0x0070,
+ GST_DEBUG_BOLD = 0x0100,
+ GST_DEBUG_UNDERLINE = 0x0200
+} GstDebugColorFlags;
+typedef struct _GstDebugCategory GstDebugCategory;
+struct _GstDebugCategory {
+ gint threshold;
+ guint color;
+ const gchar * name;
+ const gchar * description;
+};
+typedef struct _GstDebugMessage GstDebugMessage;
+typedef void (*GstLogFunction) (GstDebugCategory * category,
+ GstDebugLevel level,
+ const gchar * file,
+ const gchar * function,
+ gint line,
+ GObject * object,
+ GstDebugMessage * message,
+ gpointer data);
+void _gst_debug_init (void);
+void gst_debug_log (GstDebugCategory * category,
+ GstDebugLevel level,
+ const gchar * file,
+ const gchar * function,
+ gint line,
+ GObject * object,
+ const gchar * format,
+ ...) __attribute__((__no_instrument_function__));
+void gst_debug_log_valist (GstDebugCategory * category,
+ GstDebugLevel level,
+ const gchar * file,
+ const gchar * function,
+ gint line,
+ GObject * object,
+ const gchar * format,
+ va_list args) __attribute__((__no_instrument_function__));
+const gchar * gst_debug_message_get (GstDebugMessage * message);
+void gst_debug_log_default (GstDebugCategory * category,
+ GstDebugLevel level,
+ const gchar * file,
+ const gchar * function,
+ gint line,
+ GObject * object,
+ GstDebugMessage * message,
+ gpointer unused) __attribute__((__no_instrument_function__));
+const gchar *
+ gst_debug_level_get_name (GstDebugLevel level);
+void gst_debug_add_log_function (GstLogFunction func,
+ gpointer data);
+guint gst_debug_remove_log_function (GstLogFunction func);
+guint gst_debug_remove_log_function_by_data (gpointer data);
+void gst_debug_set_active (gboolean active);
+gboolean gst_debug_is_active (void);
+void gst_debug_set_colored (gboolean colored);
+gboolean gst_debug_is_colored (void);
+void gst_debug_set_default_threshold (GstDebugLevel level);
+GstDebugLevel gst_debug_get_default_threshold (void);
+void gst_debug_set_threshold_for_name (const gchar * name,
+ GstDebugLevel level);
+void gst_debug_unset_threshold_for_name (const gchar * name);
+GstDebugCategory *_gst_debug_category_new (const gchar * name,
+ guint color,
+ const gchar * description);
+void gst_debug_category_free (GstDebugCategory * category);
+void gst_debug_category_set_threshold (GstDebugCategory * category,
+ GstDebugLevel level);
+void gst_debug_category_reset_threshold(GstDebugCategory * category);
+GstDebugLevel
+ gst_debug_category_get_threshold (GstDebugCategory * category);
+const gchar *
+ gst_debug_category_get_name (GstDebugCategory * category);
+guint gst_debug_category_get_color (GstDebugCategory * category);
+const gchar *
+ gst_debug_category_get_description (GstDebugCategory * category);
+GSList *
+ gst_debug_get_all_categories (void);
+GstDebugCategory *_gst_debug_get_category (const gchar *name);
+gchar * gst_debug_construct_term_color (guint colorinfo);
+gint gst_debug_construct_win_color (guint colorinfo);
+extern GstDebugCategory * GST_CAT_DEFAULT;
+extern gboolean __gst_debug_enabled;
+extern GstDebugLevel __gst_debug_min;
+void _gst_debug_dump_mem (GstDebugCategory * cat, const gchar * file,
+ const gchar * func, gint line, GObject * obj, const gchar * msg,
+ const guint8 * data, guint length);
+typedef void (* GstDebugFuncPtr) (void);
+void _gst_debug_register_funcptr (GstDebugFuncPtr func,
+ const gchar * ptrname);
+const gchar *
+ _gst_debug_nameof_funcptr (GstDebugFuncPtr func);
+void gst_debug_print_stack_trace (void);
+typedef struct _GstImplementsInterface GstImplementsInterface;
+typedef struct _GstImplementsInterfaceClass GstImplementsInterfaceClass;
+struct _GstImplementsInterfaceClass {
+ GTypeInterface parent;
+ gboolean (* supported) (GstImplementsInterface *iface,
+ GType iface_type);
+ gpointer _gst_reserved[4];
+};
+GType gst_implements_interface_get_type (void);
+gboolean gst_element_implements_interface (GstElement *element,
+ GType iface_type);
+gpointer gst_implements_interface_cast (gpointer from,
+ GType type);
+gboolean gst_implements_interface_check (gpointer from,
+ GType type);
+extern void gst_marshal_VOID__BOXED_OBJECT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_VOID__POINTER_OBJECT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_VOID__OBJECT_OBJECT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_VOID__OBJECT_PARAM (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_VOID__OBJECT_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_VOID__OBJECT_BOXED (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_VOID__OBJECT_BOXED_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_VOID__OBJECT_OBJECT_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_VOID__OBJECT_STRING (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_VOID__INT_INT (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_VOID__INT64 (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_VOID__UINT_BOXED (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_BOOLEAN__VOID (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_BOOLEAN__POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_POINTER__POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+extern void gst_marshal_BOXED__BOXED (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+typedef gint (* GstValueCompareFunc) (const GValue *value1,
+ const GValue *value2);
+typedef gchar * (* GstValueSerializeFunc) (const GValue *value1);
+typedef gboolean (* GstValueDeserializeFunc) (GValue *dest,
+ const gchar *s);
+typedef gboolean (* GstValueUnionFunc) (GValue *dest,
+ const GValue *value1,
+ const GValue *value2);
+typedef gboolean (* GstValueIntersectFunc) (GValue *dest,
+ const GValue *value1,
+ const GValue *value2);
+typedef gboolean (* GstValueSubtractFunc) (GValue *dest,
+ const GValue *minuend,
+ const GValue *subtrahend);
+typedef struct _GstValueTable GstValueTable;
+struct _GstValueTable {
+ GType type;
+ GstValueCompareFunc compare;
+ GstValueSerializeFunc serialize;
+ GstValueDeserializeFunc deserialize;
+ void *_gst_reserved [4];
+};
+GType gst_int_range_get_type (void);
+GType gst_double_range_get_type (void);
+GType gst_fraction_range_get_type (void);
+GType gst_fourcc_get_type (void);
+GType gst_fraction_get_type (void);
+GType gst_value_list_get_type (void);
+GType gst_value_array_get_type (void);
+GType gst_date_get_type (void);
+void gst_value_register (const GstValueTable *table);
+void gst_value_init_and_copy (GValue *dest,
+ const GValue *src);
+gchar * gst_value_serialize (const GValue *value);
+gboolean gst_value_deserialize (GValue *dest,
+ const gchar *src);
+void gst_value_list_append_value (GValue *value,
+ const GValue *append_value);
+void gst_value_list_prepend_value (GValue *value,
+ const GValue *prepend_value);
+void gst_value_list_concat (GValue *dest,
+ const GValue *value1,
+ const GValue *value2);
+guint gst_value_list_get_size (const GValue *value);
+const GValue *
+ gst_value_list_get_value (const GValue *value,
+ guint index);
+void gst_value_array_append_value (GValue *value,
+ const GValue *append_value);
+void gst_value_array_prepend_value (GValue *value,
+ const GValue *prepend_value);
+guint gst_value_array_get_size (const GValue *value);
+const GValue *
+ gst_value_array_get_value (const GValue *value,
+ guint index);
+void gst_value_set_fourcc (GValue *value,
+ guint32 fourcc);
+guint32 gst_value_get_fourcc (const GValue *value);
+void gst_value_set_int_range (GValue *value,
+ gint start,
+ gint end);
+gint gst_value_get_int_range_min (const GValue *value);
+gint gst_value_get_int_range_max (const GValue *value);
+void gst_value_set_double_range (GValue *value,
+ gdouble start,
+ gdouble end);
+gdouble gst_value_get_double_range_min (const GValue *value);
+gdouble gst_value_get_double_range_max (const GValue *value);
+const GstCaps *
+ gst_value_get_caps (const GValue *value);
+void gst_value_set_caps (GValue *value,
+ const GstCaps *caps);
+const GstStructure *
+ gst_value_get_structure (const GValue *value);
+void gst_value_set_structure (GValue *value,
+ const GstStructure *structure);
+void gst_value_set_fraction (GValue *value,
+ gint numerator,
+ gint denominator);
+gint gst_value_get_fraction_numerator (const GValue *value);
+gint gst_value_get_fraction_denominator(const GValue *value);
+gboolean gst_value_fraction_multiply (GValue *product,
+ const GValue *factor1,
+ const GValue *factor2);
+gboolean gst_value_fraction_subtract (GValue * dest,
+ const GValue * minuend,
+ const GValue * subtrahend);
+void gst_value_set_fraction_range (GValue *value,
+ const GValue *start,
+ const GValue *end);
+void gst_value_set_fraction_range_full (GValue *value,
+ gint numerator_start,
+ gint denominator_start,
+ gint numerator_end,
+ gint denominator_end);
+const GValue *gst_value_get_fraction_range_min (const GValue *value);
+const GValue *gst_value_get_fraction_range_max (const GValue *value);
+const GDate *
+ gst_value_get_date (const GValue *value);
+void gst_value_set_date (GValue *value,
+ const GDate *date);
+gint gst_value_compare (const GValue *value1,
+ const GValue *value2);
+gboolean gst_value_can_compare (const GValue *value1,
+ const GValue *value2);
+gboolean gst_value_union (GValue *dest,
+ const GValue *value1,
+ const GValue *value2);
+gboolean gst_value_can_union (const GValue *value1,
+ const GValue *value2);
+void gst_value_register_union_func (GType type1,
+ GType type2,
+ GstValueUnionFunc func);
+gboolean gst_value_intersect (GValue *dest,
+ const GValue *value1,
+ const GValue *value2);
+gboolean gst_value_can_intersect (const GValue *value1,
+ const GValue *value2);
+void gst_value_register_intersect_func (GType type1,
+ GType type2,
+ GstValueIntersectFunc func);
+gboolean gst_value_subtract (GValue *dest,
+ const GValue *minuend,
+ const GValue *subtrahend);
+gboolean gst_value_can_subtract (const GValue *minuend,
+ const GValue *subtrahend);
+void gst_value_register_subtract_func (GType minuend_type,
+ GType subtrahend_type,
+ GstValueSubtractFunc func);
+gboolean gst_value_is_fixed (const GValue *value);
+GType gst_param_spec_fraction_get_type (void);
+typedef struct _GstParamSpecFraction GstParamSpecFraction;
+struct _GstParamSpecFraction {
+ GParamSpec parent_instance;
+ gint min_num, min_den;
+ gint max_num, max_den;
+ gint def_num, def_den;
+};
+GParamSpec * gst_param_spec_fraction (const gchar * name,
+ const gchar * nick,
+ const gchar * blurb,
+ gint min_num, gint min_denom,
+ gint max_num, gint max_denom,
+ gint default_num, gint default_denom,
+ GParamFlags flags);
+typedef struct _GstPipeline GstPipeline;
+typedef struct _GstPipelineClass GstPipelineClass;
+typedef struct _GstPipelinePrivate GstPipelinePrivate;
+typedef enum {
+ GST_PIPELINE_FLAG_FIXED_CLOCK = (GST_BIN_FLAG_LAST << 0),
+ GST_PIPELINE_FLAG_LAST = (GST_BIN_FLAG_LAST << 4)
+} GstPipelineFlags;
+struct _GstPipeline {
+ GstBin bin;
+ GstClock *fixed_clock;
+ GstClockTime stream_time;
+ GstClockTime delay;
+ GstPipelinePrivate *priv;
+ gpointer _gst_reserved[4 -1];
+};
+struct _GstPipelineClass {
+ GstBinClass parent_class;
+ gpointer _gst_reserved[4];
+};
+GType gst_pipeline_get_type (void);
+GstElement* gst_pipeline_new (const gchar *name);
+GstBus* gst_pipeline_get_bus (GstPipeline *pipeline);
+void gst_pipeline_set_new_stream_time (GstPipeline *pipeline, GstClockTime time);
+GstClockTime gst_pipeline_get_last_stream_time (GstPipeline *pipeline);
+void gst_pipeline_use_clock (GstPipeline *pipeline, GstClock *clock);
+gboolean gst_pipeline_set_clock (GstPipeline *pipeline, GstClock *clock);
+GstClock* gst_pipeline_get_clock (GstPipeline *pipeline);
+void gst_pipeline_auto_clock (GstPipeline *pipeline);
+void gst_pipeline_set_delay (GstPipeline *pipeline, GstClockTime delay);
+GstClockTime gst_pipeline_get_delay (GstPipeline *pipeline);
+void gst_pipeline_set_auto_flush_bus (GstPipeline *pipeline, gboolean auto_flush);
+gboolean gst_pipeline_get_auto_flush_bus (GstPipeline *pipeline);
+typedef struct _GstPoll GstPoll;
+typedef struct {
+ int fd;
+ gint idx;
+} GstPollFD;
+GstPoll* gst_poll_new (gboolean controllable);
+GstPoll* gst_poll_new_timer (void);
+void gst_poll_free (GstPoll *set);
+void gst_poll_fd_init (GstPollFD *fd);
+gboolean gst_poll_add_fd (GstPoll *set, GstPollFD *fd);
+gboolean gst_poll_remove_fd (GstPoll *set, GstPollFD *fd);
+gboolean gst_poll_fd_ctl_write (GstPoll *set, GstPollFD *fd, gboolean active);
+gboolean gst_poll_fd_ctl_read (GstPoll *set, GstPollFD *fd, gboolean active);
+void gst_poll_fd_ignored (GstPoll *set, GstPollFD *fd);
+gboolean gst_poll_fd_has_closed (const GstPoll *set, GstPollFD *fd);
+gboolean gst_poll_fd_has_error (const GstPoll *set, GstPollFD *fd);
+gboolean gst_poll_fd_can_read (const GstPoll *set, GstPollFD *fd);
+gboolean gst_poll_fd_can_write (const GstPoll *set, GstPollFD *fd);
+gint gst_poll_wait (GstPoll *set, GstClockTime timeout);
+gboolean gst_poll_set_controllable (GstPoll *set, gboolean controllable);
+void gst_poll_restart (GstPoll *set);
+void gst_poll_set_flushing (GstPoll *set, gboolean flushing);
+gboolean gst_poll_write_control (GstPoll *set);
+gboolean gst_poll_read_control (GstPoll *set);
+typedef struct _GstPreset GstPreset;
+typedef struct _GstPresetInterface GstPresetInterface;
+struct _GstPresetInterface
+{
+ GTypeInterface parent;
+ gchar** (*get_preset_names) (GstPreset *preset);
+ gchar** (*get_property_names) (GstPreset *preset);
+ gboolean (*load_preset) (GstPreset *preset, const gchar *name);
+ gboolean (*save_preset) (GstPreset *preset, const gchar *name);
+ gboolean (*rename_preset) (GstPreset *preset, const gchar *old_name,
+ const gchar *new_name);
+ gboolean (*delete_preset) (GstPreset *preset, const gchar *name);
+ gboolean (*set_meta) (GstPreset *preset, const gchar *name,
+ const gchar *tag, const gchar *value);
+ gboolean (*get_meta) (GstPreset *preset, const gchar *name,
+ const gchar *tag, gchar **value);
+ gpointer _gst_reserved[4];
+};
+GType gst_preset_get_type(void);
+gchar** gst_preset_get_preset_names (GstPreset *preset);
+gchar** gst_preset_get_property_names (GstPreset *preset);
+gboolean gst_preset_load_preset (GstPreset *preset, const gchar *name);
+gboolean gst_preset_save_preset (GstPreset *preset, const gchar *name);
+gboolean gst_preset_rename_preset (GstPreset *preset, const gchar *old_name,
+ const gchar *new_name);
+gboolean gst_preset_delete_preset (GstPreset *preset, const gchar *name);
+gboolean gst_preset_set_meta (GstPreset *preset, const gchar *name,
+ const gchar *tag, const gchar *value);
+gboolean gst_preset_get_meta (GstPreset *preset, const gchar *name,
+ const gchar *tag, gchar **value);
+typedef struct _GstRegistry GstRegistry;
+typedef struct _GstRegistryClass GstRegistryClass;
+struct _GstRegistry {
+ GstObject object;
+ GList *plugins;
+ GList *features;
+ GList *paths;
+ int cache_file;
+ GHashTable *feature_hash;
+ gpointer _gst_reserved[4 -1];
+};
+struct _GstRegistryClass {
+ GstObjectClass parent_class;
+ void (*plugin_added) (GstRegistry *registry, GstPlugin *plugin);
+ void (*feature_added) (GstRegistry *registry, GstPluginFeature *feature);
+ gpointer _gst_reserved[4];
+};
+GType gst_registry_get_type (void);
+GstRegistry * gst_registry_get_default (void);
+gboolean gst_registry_scan_path (GstRegistry *registry, const gchar *path);
+void gst_registry_add_path (GstRegistry * registry, const gchar * path);
+GList* gst_registry_get_path_list (GstRegistry *registry);
+gboolean gst_registry_add_plugin (GstRegistry *registry, GstPlugin *plugin);
+void gst_registry_remove_plugin (GstRegistry *registry, GstPlugin *plugin);
+gboolean gst_registry_add_feature (GstRegistry * registry, GstPluginFeature * feature);
+void gst_registry_remove_feature (GstRegistry * registry, GstPluginFeature * feature);
+GList* gst_registry_get_plugin_list (GstRegistry *registry);
+GList* gst_registry_plugin_filter (GstRegistry *registry,
+ GstPluginFilter filter,
+ gboolean first,
+ gpointer user_data);
+GList* gst_registry_feature_filter (GstRegistry *registry,
+ GstPluginFeatureFilter filter,
+ gboolean first,
+ gpointer user_data);
+GList * gst_registry_get_feature_list (GstRegistry *registry,
+ GType type);
+GList * gst_registry_get_feature_list_by_plugin (GstRegistry *registry, const gchar *name);
+GstPlugin* gst_registry_find_plugin (GstRegistry *registry, const gchar *name);
+GstPluginFeature* gst_registry_find_feature (GstRegistry *registry, const gchar *name, GType type);
+GstPlugin * gst_registry_lookup (GstRegistry *registry, const char *filename);
+GstPluginFeature * gst_registry_lookup_feature (GstRegistry *registry, const char *name);
+gboolean gst_registry_xml_read_cache (GstRegistry * registry, const char *location);
+gboolean gst_registry_xml_write_cache (GstRegistry * registry, const char *location);
+gboolean gst_default_registry_check_feature_version (const gchar *feature_name,
+ guint min_major,
+ guint min_minor,
+ guint min_micro);
+typedef struct _GstSegment GstSegment;
+struct _GstSegment {
+ gdouble rate;
+ gdouble abs_rate;
+ GstFormat format;
+ GstSeekFlags flags;
+ gint64 start;
+ gint64 stop;
+ gint64 time;
+ gint64 accum;
+ gint64 last_stop;
+ gint64 duration;
+ gdouble applied_rate;
+ guint8 _gst_reserved[(sizeof (gpointer) * 4) - sizeof (gdouble)];
+};
+GType gst_segment_get_type (void);
+GstSegment * gst_segment_new (void);
+GstSegment * gst_segment_copy (GstSegment *segment);
+void gst_segment_free (GstSegment *segment);
+void gst_segment_init (GstSegment *segment, GstFormat format);
+void gst_segment_set_duration (GstSegment *segment, GstFormat format, gint64 duration);
+void gst_segment_set_last_stop (GstSegment *segment, GstFormat format, gint64 position);
+void gst_segment_set_seek (GstSegment *segment, gdouble rate,
+ GstFormat format, GstSeekFlags flags,
+ GstSeekType start_type, gint64 start,
+ GstSeekType stop_type, gint64 stop,
+ gboolean *update);
+void gst_segment_set_newsegment (GstSegment *segment, gboolean update, gdouble rate,
+ GstFormat format, gint64 start, gint64 stop, gint64 time);
+void gst_segment_set_newsegment_full (GstSegment *segment, gboolean update, gdouble rate,
+ gdouble applied_rate, GstFormat format, gint64 start,
+ gint64 stop, gint64 time);
+gint64 gst_segment_to_stream_time (GstSegment *segment, GstFormat format, gint64 position);
+gint64 gst_segment_to_running_time (GstSegment *segment, GstFormat format, gint64 position);
+gint64 gst_segment_to_position (GstSegment *segment, GstFormat format, gint64 running_time);
+gboolean gst_segment_clip (GstSegment *segment, GstFormat format, gint64 start,
+ gint64 stop, gint64 *clip_start, gint64 *clip_stop);
+gboolean gst_segment_set_running_time (GstSegment *segment, GstFormat format, gint64 running_time);
+typedef struct _GstSystemClock GstSystemClock;
+typedef struct _GstSystemClockClass GstSystemClockClass;
+typedef struct _GstSystemClockPrivate GstSystemClockPrivate;
+typedef enum {
+ GST_CLOCK_TYPE_REALTIME = 0,
+ GST_CLOCK_TYPE_MONOTONIC = 1
+} GstClockType;
+struct _GstSystemClock {
+ GstClock clock;
+ GThread *thread;
+ gboolean stopping;
+ GstSystemClockPrivate *priv;
+ gpointer _gst_reserved[4 - 1];
+};
+struct _GstSystemClockClass {
+ GstClockClass parent_class;
+ gpointer _gst_reserved[4];
+};
+GType gst_system_clock_get_type (void);
+GstClock* gst_system_clock_obtain (void);
+typedef struct _GstTagSetter GstTagSetter;
+typedef struct _GstTagSetterIFace GstTagSetterIFace;
+struct _GstTagSetterIFace
+{
+ GTypeInterface g_iface;
+};
+GType gst_tag_setter_get_type (void);
+void gst_tag_setter_reset_tags (GstTagSetter * setter);
+void gst_tag_setter_merge_tags (GstTagSetter * setter,
+ const GstTagList * list,
+ GstTagMergeMode mode);
+void gst_tag_setter_add_tags (GstTagSetter * setter,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ ...) __attribute__((__sentinel__));
+void gst_tag_setter_add_tag_values (GstTagSetter * setter,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ ...) __attribute__((__sentinel__));
+void gst_tag_setter_add_tag_valist (GstTagSetter * setter,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ va_list var_args);
+void gst_tag_setter_add_tag_valist_values(GstTagSetter * setter,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ va_list var_args);
+void gst_tag_setter_add_tag_value (GstTagSetter * setter,
+ GstTagMergeMode mode,
+ const gchar * tag,
+ const GValue * value);
+const GstTagList *
+ gst_tag_setter_get_tag_list (GstTagSetter * setter);
+void gst_tag_setter_set_tag_merge_mode (GstTagSetter * setter,
+ GstTagMergeMode mode);
+GstTagMergeMode gst_tag_setter_get_tag_merge_mode (GstTagSetter * setter);
+typedef enum {
+ GST_ALLOC_TRACE_LIVE = (1 << 0),
+ GST_ALLOC_TRACE_MEM_LIVE = (1 << 1)
+} GstAllocTraceFlags;
+typedef struct _GstAllocTrace GstAllocTrace;
+struct _GstAllocTrace {
+ gchar *name;
+ gint flags;
+ gint live;
+ GSList *mem_live;
+};
+typedef struct _GstTrace GstTrace;
+typedef struct _GstTraceEntry GstTraceEntry;
+struct _GstTrace {
+ gchar *filename;
+ int fd;
+ GstTraceEntry *buf;
+ gint bufsize;
+ gint bufoffset;
+};
+struct _GstTraceEntry {
+ gint64 timestamp;
+ guint32 sequence;
+ guint32 data;
+ gchar message[112];
+};
+GstTrace* gst_trace_new (gchar *filename, gint size);
+void gst_trace_destroy (GstTrace *trace);
+void gst_trace_flush (GstTrace *trace);
+void gst_trace_text_flush (GstTrace *trace);
+void gst_trace_set_default (GstTrace *trace);
+void _gst_trace_add_entry (GstTrace *trace, guint32 seq,
+ guint32 data, gchar *msg);
+void gst_trace_read_tsc (gint64 *dst);
+extern GStaticMutex _gst_trace_mutex;
+gboolean gst_alloc_trace_available (void);
+const GList* gst_alloc_trace_list (void);
+GstAllocTrace* _gst_alloc_trace_register (const gchar *name);
+int gst_alloc_trace_live_all (void);
+void gst_alloc_trace_print_all (void);
+void gst_alloc_trace_print_live (void);
+void gst_alloc_trace_set_flags_all (GstAllocTraceFlags flags);
+GstAllocTrace* gst_alloc_trace_get (const gchar *name);
+void gst_alloc_trace_print (const GstAllocTrace *trace);
+void gst_alloc_trace_set_flags (GstAllocTrace *trace, GstAllocTraceFlags flags);
+extern gint _gst_trace_on;
+typedef struct _GstTypeFind GstTypeFind;
+typedef void (* GstTypeFindFunction) (GstTypeFind *find, gpointer data);
+typedef enum {
+ GST_TYPE_FIND_MINIMUM = 1,
+ GST_TYPE_FIND_POSSIBLE = 50,
+ GST_TYPE_FIND_LIKELY = 80,
+ GST_TYPE_FIND_NEARLY_CERTAIN = 99,
+ GST_TYPE_FIND_MAXIMUM = 100
+} GstTypeFindProbability;
+struct _GstTypeFind {
+ guint8 * (* peek) (gpointer data,
+ gint64 offset,
+ guint size);
+ void (* suggest) (gpointer data,
+ guint probability,
+ const GstCaps * caps);
+ gpointer data;
+ guint64 (* get_length) (gpointer data);
+ gpointer _gst_reserved[4];
+};
+GType gst_type_find_get_type (void);
+guint8 * gst_type_find_peek (GstTypeFind * find,
+ gint64 offset,
+ guint size);
+void gst_type_find_suggest (GstTypeFind * find,
+ guint probability,
+ const GstCaps * caps);
+void gst_type_find_suggest_simple (GstTypeFind * find,
+ guint probability,
+ const char * media_type,
+ const char * fieldname, ...);
+guint64 gst_type_find_get_length (GstTypeFind * find);
+gboolean gst_type_find_register (GstPlugin * plugin,
+ const gchar * name,
+ guint rank,
+ GstTypeFindFunction func,
+ gchar ** extensions,
+ const GstCaps * possible_caps,
+ gpointer data,
+ GDestroyNotify data_notify);
+typedef struct _GstTypeFindFactory GstTypeFindFactory;
+typedef struct _GstTypeFindFactoryClass GstTypeFindFactoryClass;
+struct _GstTypeFindFactory {
+ GstPluginFeature feature;
+ GstTypeFindFunction function;
+ gchar ** extensions;
+ GstCaps * caps;
+ gpointer user_data;
+ GDestroyNotify user_data_notify;
+ gpointer _gst_reserved[4];
+};
+struct _GstTypeFindFactoryClass {
+ GstPluginFeatureClass parent;
+ gpointer _gst_reserved[4];
+};
+GType gst_type_find_factory_get_type (void);
+GList * gst_type_find_factory_get_list (void);
+gchar ** gst_type_find_factory_get_extensions (GstTypeFindFactory *factory);
+GstCaps * gst_type_find_factory_get_caps (GstTypeFindFactory *factory);
+void gst_type_find_factory_call_function (GstTypeFindFactory *factory,
+ GstTypeFind *find);
+typedef enum {
+ GST_URI_UNKNOWN,
+ GST_URI_SINK,
+ GST_URI_SRC
+} GstURIType;
+typedef struct _GstURIHandler GstURIHandler;
+typedef struct _GstURIHandlerInterface GstURIHandlerInterface;
+struct _GstURIHandlerInterface {
+ GTypeInterface parent;
+ void (* new_uri) (GstURIHandler * handler,
+ const gchar * uri);
+ GstURIType (* get_type) (void);
+ gchar ** (* get_protocols) (void);
+ const gchar *(* get_uri) (GstURIHandler * handler);
+ gboolean (* set_uri) (GstURIHandler * handler,
+ const gchar * uri);
+ GstURIType (* get_type_full) (GType type);
+ gchar ** (* get_protocols_full) (GType type);
+ gpointer _gst_reserved[4 - 2];
+};
+gboolean gst_uri_protocol_is_valid (const gchar * protocol);
+gboolean gst_uri_protocol_is_supported (const GstURIType type,
+ const gchar *protocol);
+gboolean gst_uri_is_valid (const gchar * uri);
+gchar * gst_uri_get_protocol (const gchar * uri);
+gboolean gst_uri_has_protocol (const gchar * uri,
+ const gchar * protocol);
+gchar * gst_uri_get_location (const gchar * uri);
+gchar * gst_uri_construct (const gchar * protocol,
+ const gchar * location);
+GstElement * gst_element_make_from_uri (const GstURIType type,
+ const gchar * uri,
+ const gchar * elementname);
+GType gst_uri_handler_get_type (void);
+guint gst_uri_handler_get_uri_type (GstURIHandler * handler);
+gchar ** gst_uri_handler_get_protocols (GstURIHandler * handler);
+const
+gchar * gst_uri_handler_get_uri (GstURIHandler * handler);
+gboolean gst_uri_handler_set_uri (GstURIHandler * handler,
+ const gchar * uri);
+void gst_uri_handler_new_uri (GstURIHandler * handler,
+ const gchar * uri);
+GQuark gst_parse_error_quark (void);
+typedef enum
+{
+ GST_PARSE_ERROR_SYNTAX,
+ GST_PARSE_ERROR_NO_SUCH_ELEMENT,
+ GST_PARSE_ERROR_NO_SUCH_PROPERTY,
+ GST_PARSE_ERROR_LINK,
+ GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY,
+ GST_PARSE_ERROR_EMPTY_BIN,
+ GST_PARSE_ERROR_EMPTY
+} GstParseError;
+typedef enum
+{
+ GST_PARSE_FLAG_NONE = 0,
+ GST_PARSE_FLAG_FATAL_ERRORS = (1 << 0)
+} GstParseFlags;
+typedef struct _GstParseContext GstParseContext;
+GstParseContext * gst_parse_context_new (void);
+gchar ** gst_parse_context_get_missing_elements (GstParseContext * context);
+void gst_parse_context_free (GstParseContext * context);
+GstElement * gst_parse_launch (const gchar * pipeline_description,
+ GError ** error);
+GstElement * gst_parse_launchv (const gchar ** argv,
+ GError ** error);
+GstElement * gst_parse_launch_full (const gchar * pipeline_description,
+ GstParseContext * context,
+ GstParseFlags flags,
+ GError ** error);
+GstElement * gst_parse_launchv_full (const gchar ** argv,
+ GstParseContext * context,
+ GstParseFlags flags,
+ GError ** error);
+void gst_util_set_value_from_string (GValue *value, const gchar *value_str);
+void gst_util_set_object_arg (GObject *object, const gchar *name, const gchar *value);
+void gst_util_dump_mem (const guchar *mem, guint size);
+guint64 gst_util_gdouble_to_guint64 (gdouble value) __attribute__((__pure__));
+gdouble gst_util_guint64_to_gdouble (guint64 value) __attribute__((__pure__));
+guint64 gst_util_uint64_scale (guint64 val, guint64 num, guint64 denom) __attribute__((__pure__));
+guint64 gst_util_uint64_scale_int (guint64 val, gint num, gint denom) __attribute__((__pure__));
+guint32 gst_util_seqnum_next (void);
+gint32 gst_util_seqnum_compare (guint32 s1, guint32 s2);
+void gst_print_pad_caps (GString *buf, gint indent, GstPad *pad);
+void gst_print_element_args (GString *buf, gint indent, GstElement *element);
+GType gst_type_register_static_full (GType parent_type,
+ const gchar *type_name,
+ guint class_size,
+ GBaseInitFunc base_init,
+ GBaseFinalizeFunc base_finalize,
+ GClassInitFunc class_init,
+ GClassFinalizeFunc class_finalize,
+ gconstpointer class_data,
+ guint instance_size,
+ guint16 n_preallocs,
+ GInstanceInitFunc instance_init,
+ const GTypeValueTable *value_table,
+ GTypeFlags flags);
+inline static gfloat
+GFLOAT_SWAP_LE_BE(gfloat in)
+{
+ union
+ {
+ guint32 i;
+ gfloat f;
+ } u;
+ u.f = in;
+ u.i = (((guint32) ( (((guint32) (u.i) & (guint32) 0x000000ffU) << 24) | (((guint32) (u.i) & (guint32) 0x0000ff00U) << 8) | (((guint32) (u.i) & (guint32) 0x00ff0000U) >> 8) | (((guint32) (u.i) & (guint32) 0xff000000U) >> 24))));
+ return u.f;
+}
+inline static gdouble
+GDOUBLE_SWAP_LE_BE(gdouble in)
+{
+ union
+ {
+ guint64 i;
+ gdouble d;
+ } u;
+ u.d = in;
+ u.i = (((guint64) ( (((guint64) (u.i) & (guint64) (0x00000000000000ffUL)) << 56) | (((guint64) (u.i) & (guint64) (0x000000000000ff00UL)) << 40) | (((guint64) (u.i) & (guint64) (0x0000000000ff0000UL)) << 24) | (((guint64) (u.i) & (guint64) (0x00000000ff000000UL)) << 8) | (((guint64) (u.i) & (guint64) (0x000000ff00000000UL)) >> 8) | (((guint64) (u.i) & (guint64) (0x0000ff0000000000UL)) >> 24) | (((guint64) (u.i) & (guint64) (0x00ff000000000000UL)) >> 40) | (((guint64) (u.i) & (guint64) (0xff00000000000000UL)) >> 56))));
+ return u.d;
+}
+inline static gfloat
+GST_READ_FLOAT_LE(const guint8 *data)
+{
+ union
+ {
+ guint32 i;
+ gfloat f;
+ } u;
+ u.i = ((((guint32) (((guint8 *) (data))[3])) << (24)) | (((guint32) (((guint8 *) (data))[2])) << (16)) | (((guint32) (((guint8 *) (data))[1])) << (8)) | (((guint32) (((guint8 *) (data))[0])) << (0)));
+ return u.f;
+}
+inline static gfloat
+GST_READ_FLOAT_BE(const guint8 *data)
+{
+ union
+ {
+ guint32 i;
+ gfloat f;
+ } u;
+ u.i = ((((guint32) (((guint8 *) (data))[0])) << (24)) | (((guint32) (((guint8 *) (data))[1])) << (16)) | (((guint32) (((guint8 *) (data))[2])) << (8)) | (((guint32) (((guint8 *) (data))[3])) << (0)));
+ return u.f;
+}
+inline static gdouble
+GST_READ_DOUBLE_LE(const guint8 *data)
+{
+ union
+ {
+ guint64 i;
+ gdouble d;
+ } u;
+ u.i = ((((guint64) (((guint8 *) (data))[7])) << (56)) | (((guint64) (((guint8 *) (data))[6])) << (48)) | (((guint64) (((guint8 *) (data))[5])) << (40)) | (((guint64) (((guint8 *) (data))[4])) << (32)) | (((guint64) (((guint8 *) (data))[3])) << (24)) | (((guint64) (((guint8 *) (data))[2])) << (16)) | (((guint64) (((guint8 *) (data))[1])) << (8)) | (((guint64) (((guint8 *) (data))[0])) << (0)));
+ return u.d;
+}
+inline static gdouble
+GST_READ_DOUBLE_BE(const guint8 *data)
+{
+ union
+ {
+ guint64 i;
+ gdouble d;
+ } u;
+ u.i = ((((guint64) (((guint8 *) (data))[0])) << (56)) | (((guint64) (((guint8 *) (data))[1])) << (48)) | (((guint64) (((guint8 *) (data))[2])) << (40)) | (((guint64) (((guint8 *) (data))[3])) << (32)) | (((guint64) (((guint8 *) (data))[4])) << (24)) | (((guint64) (((guint8 *) (data))[5])) << (16)) | (((guint64) (((guint8 *) (data))[6])) << (8)) | (((guint64) (((guint8 *) (data))[7])) << (0)));
+ return u.d;
+}
+inline static void
+GST_WRITE_FLOAT_LE(guint8 *data, gfloat num)
+{
+ union
+ {
+ guint32 i;
+ gfloat f;
+ } u;
+ u.f = num;
+ do { (((guint8 *) (data))[0] = (((guint32) (u.i)) >> (0)) & 0xff); (((guint8 *) (data))[1] = (((guint32) (u.i)) >> (8)) & 0xff); (((guint8 *) (data))[2] = (((guint32) (u.i)) >> (16)) & 0xff); (((guint8 *) (data))[3] = (((guint32) (u.i)) >> (24)) & 0xff); } while (0);
+}
+inline static void
+GST_WRITE_FLOAT_BE(guint8 *data, gfloat num)
+{
+ union
+ {
+ guint32 i;
+ gfloat f;
+ } u;
+ u.f = num;
+ do { (((guint8 *) (data))[0] = (((guint32) (u.i)) >> (24)) & 0xff); (((guint8 *) (data))[1] = (((guint32) (u.i)) >> (16)) & 0xff); (((guint8 *) (data))[2] = (((guint32) (u.i)) >> (8)) & 0xff); (((guint8 *) (data))[3] = (((guint32) (u.i)) >> (0)) & 0xff); } while (0);
+}
+inline static void
+GST_WRITE_DOUBLE_LE(guint8 *data, gdouble num)
+{
+ union
+ {
+ guint64 i;
+ gdouble d;
+ } u;
+ u.d = num;
+ do { (((guint8 *) (data))[0] = (((guint64) (u.i)) >> (0)) & 0xff); (((guint8 *) (data))[1] = (((guint64) (u.i)) >> (8)) & 0xff); (((guint8 *) (data))[2] = (((guint64) (u.i)) >> (16)) & 0xff); (((guint8 *) (data))[3] = (((guint64) (u.i)) >> (24)) & 0xff); (((guint8 *) (data))[4] = (((guint64) (u.i)) >> (32)) & 0xff); (((guint8 *) (data))[5] = (((guint64) (u.i)) >> (40)) & 0xff); (((guint8 *) (data))[6] = (((guint64) (u.i)) >> (48)) & 0xff); (((guint8 *) (data))[7] = (((guint64) (u.i)) >> (56)) & 0xff); } while (0);
+}
+inline static void
+GST_WRITE_DOUBLE_BE(guint8 *data, gdouble num)
+{
+ union
+ {
+ guint64 i;
+ gdouble d;
+ } u;
+ u.d = num;
+ do { (((guint8 *) (data))[0] = (((guint64) (u.i)) >> (56)) & 0xff); (((guint8 *) (data))[1] = (((guint64) (u.i)) >> (48)) & 0xff); (((guint8 *) (data))[2] = (((guint64) (u.i)) >> (40)) & 0xff); (((guint8 *) (data))[3] = (((guint64) (u.i)) >> (32)) & 0xff); (((guint8 *) (data))[4] = (((guint64) (u.i)) >> (24)) & 0xff); (((guint8 *) (data))[5] = (((guint64) (u.i)) >> (16)) & 0xff); (((guint8 *) (data))[6] = (((guint64) (u.i)) >> (8)) & 0xff); (((guint8 *) (data))[7] = (((guint64) (u.i)) >> (0)) & 0xff); } while (0);
+}
+void gst_object_default_error (GstObject * source,
+ GError * error, gchar * debug);
+void gst_element_create_all_pads (GstElement *element);
+GstPad* gst_element_get_compatible_pad (GstElement *element, GstPad *pad,
+ const GstCaps *caps);
+GstPadTemplate* gst_element_get_compatible_pad_template (GstElement *element, GstPadTemplate *compattempl);
+const gchar* gst_element_state_get_name (GstState state);
+const gchar * gst_element_state_change_return_get_name (GstStateChangeReturn state_ret);
+gboolean gst_element_link (GstElement *src, GstElement *dest);
+gboolean gst_element_link_many (GstElement *element_1,
+ GstElement *element_2, ...) __attribute__((__sentinel__));
+gboolean gst_element_link_filtered (GstElement * src,
+ GstElement * dest,
+ GstCaps *filter);
+void gst_element_unlink (GstElement *src, GstElement *dest);
+void gst_element_unlink_many (GstElement *element_1,
+ GstElement *element_2, ...) __attribute__((__sentinel__));
+gboolean gst_element_link_pads (GstElement *src, const gchar *srcpadname,
+ GstElement *dest, const gchar *destpadname);
+void gst_element_unlink_pads (GstElement *src, const gchar *srcpadname,
+ GstElement *dest, const gchar *destpadname);
+gboolean gst_element_link_pads_filtered (GstElement * src, const gchar * srcpadname,
+ GstElement * dest, const gchar * destpadname,
+ GstCaps *filter);
+gboolean gst_element_seek_simple (GstElement *element,
+ GstFormat format,
+ GstSeekFlags seek_flags,
+ gint64 seek_pos);
+gboolean gst_element_factory_can_src_caps(GstElementFactory *factory, const GstCaps *caps);
+gboolean gst_element_factory_can_sink_caps(GstElementFactory *factory, const GstCaps *caps);
+gboolean gst_element_query_position (GstElement *element, GstFormat *format,
+ gint64 *cur);
+gboolean gst_element_query_duration (GstElement *element, GstFormat *format,
+ gint64 *duration);
+gboolean gst_element_query_convert (GstElement *element, GstFormat src_format, gint64 src_val,
+ GstFormat *dest_format, gint64 *dest_val);
+void gst_element_class_install_std_props (GstElementClass * klass,
+ const gchar * first_name, ...) __attribute__((__sentinel__));
+void gst_pad_use_fixed_caps (GstPad *pad);
+GstCaps* gst_pad_get_fixed_caps_func (GstPad *pad);
+GstCaps* gst_pad_proxy_getcaps (GstPad * pad);
+gboolean gst_pad_proxy_setcaps (GstPad * pad, GstCaps * caps);
+GstElement* gst_pad_get_parent_element (GstPad *pad);
+gboolean gst_pad_query_position (GstPad *pad, GstFormat *format,
+ gint64 *cur);
+gboolean gst_pad_query_duration (GstPad *pad, GstFormat *format,
+ gint64 *duration);
+gboolean gst_pad_query_convert (GstPad *pad, GstFormat src_format, gint64 src_val,
+ GstFormat *dest_format, gint64 *dest_val);
+gboolean gst_pad_query_peer_position (GstPad *pad, GstFormat *format,
+ gint64 *cur);
+gboolean gst_pad_query_peer_duration (GstPad *pad, GstFormat *format,
+ gint64 *duration);
+gboolean gst_pad_query_peer_convert (GstPad *pad, GstFormat src_format, gint64 src_val,
+ GstFormat *dest_format, gint64 *dest_val);
+void gst_bin_add_many (GstBin *bin, GstElement *element_1, ...) __attribute__((__sentinel__));
+void gst_bin_remove_many (GstBin *bin, GstElement *element_1, ...) __attribute__((__sentinel__));
+GstPad * gst_bin_find_unlinked_pad (GstBin *bin, GstPadDirection direction);
+GstPad * gst_bin_find_unconnected_pad (GstBin *bin, GstPadDirection direction);
+GstBuffer * gst_buffer_merge (GstBuffer * buf1, GstBuffer * buf2);
+GstBuffer * gst_buffer_join (GstBuffer * buf1, GstBuffer * buf2);
+void gst_buffer_stamp (GstBuffer * dest, const GstBuffer * src);
+void gst_atomic_int_set (gint * atomic_int, gint value);
+gulong gst_pad_add_data_probe (GstPad * pad,
+ GCallback handler,
+ gpointer data);
+gulong gst_pad_add_data_probe_full (GstPad * pad,
+ GCallback handler,
+ gpointer data,
+ GDestroyNotify notify);
+void gst_pad_remove_data_probe (GstPad * pad, guint handler_id);
+gulong gst_pad_add_event_probe (GstPad * pad,
+ GCallback handler,
+ gpointer data);
+gulong gst_pad_add_event_probe_full (GstPad * pad,
+ GCallback handler,
+ gpointer data,
+ GDestroyNotify notify);
+void gst_pad_remove_event_probe (GstPad * pad, guint handler_id);
+gulong gst_pad_add_buffer_probe (GstPad * pad,
+ GCallback handler,
+ gpointer data);
+gulong gst_pad_add_buffer_probe_full (GstPad * pad,
+ GCallback handler,
+ gpointer data,
+ GDestroyNotify notify);
+void gst_pad_remove_buffer_probe (GstPad * pad, guint handler_id);
+void gst_element_found_tags_for_pad (GstElement * element,
+ GstPad * pad,
+ GstTagList * list);
+void gst_element_found_tags (GstElement * element,
+ GstTagList * list);
+GstElement * gst_parse_bin_from_description (const gchar * bin_description,
+ gboolean ghost_unlinked_pads,
+ GError ** err);
+GstElement * gst_parse_bin_from_description_full (const gchar * bin_description,
+ gboolean ghost_unlinked_pads,
+ GstParseContext * context,
+ GstParseFlags flags,
+ GError ** err);
+GstClockTime gst_util_get_timestamp (void);
+typedef enum {
+ GST_SEARCH_MODE_EXACT = 0,
+ GST_SEARCH_MODE_BEFORE,
+ GST_SEARCH_MODE_AFTER
+} GstSearchMode;
+gpointer gst_util_array_binary_search (gpointer array, guint num_elements,
+ gsize element_size, GCompareDataFunc search_func,
+ GstSearchMode mode, gconstpointer search_data,
+ gpointer user_data);
+typedef struct _GstXML GstXML;
+typedef struct _GstXMLClass GstXMLClass;
+struct _GstXML {
+ GstObject object;
+ GList *topelements;
+ xmlNsPtr ns;
+ gpointer _gst_reserved[4];
+};
+struct _GstXMLClass {
+ GstObjectClass parent_class;
+ void (*object_loaded) (GstXML *xml, GstObject *object, xmlNodePtr self);
+ void (*object_saved) (GstXML *xml, GstObject *object, xmlNodePtr self);
+ gpointer _gst_reserved[4];
+};
+GType gst_xml_get_type (void);
+xmlDocPtr gst_xml_write (GstElement *element);
+gint gst_xml_write_file (GstElement *element, FILE *out);
+GstXML* gst_xml_new (void);
+gboolean gst_xml_parse_doc (GstXML *xml, xmlDocPtr doc, const guchar *root);
+gboolean gst_xml_parse_file (GstXML *xml, const guchar *fname, const guchar *root);
+gboolean gst_xml_parse_memory (GstXML *xml, guchar *buffer, guint size, const gchar *root);
+GstElement* gst_xml_get_element (GstXML *xml, const guchar *name);
+GList* gst_xml_get_topelements (GstXML *xml);
+GstElement* gst_xml_make_element (xmlNodePtr cur, GstObject *parent);
+void gst_init (int *argc, char **argv[]);
+gboolean gst_init_check (int *argc, char **argv[],
+ GError ** err);
+GOptionGroup * gst_init_get_option_group (void);
+void gst_deinit (void);
+void gst_version (guint *major, guint *minor,
+ guint *micro, guint *nano);
+gchar * gst_version_string (void);
+gboolean gst_segtrap_is_enabled (void);
+void gst_segtrap_set_enabled (gboolean enabled);
+gboolean gst_registry_fork_is_enabled (void);
+void gst_registry_fork_set_enabled (gboolean enabled);
+gboolean gst_update_registry (void);
+extern obj_t BGl_readz00zz__readerz00(obj_t, obj_t);
+extern obj_t BGl_mainz00zzrecettez00(obj_t);
+static obj_t BGl_cnstzd2initzd2zzrecettez00();
+extern obj_t BGl_exitz00zz__errorz00(obj_t);
+extern obj_t BGl_modulezd2initializa7ationz75zzrecettez00(long, char *);
+extern obj_t BGl_modulezd2initializa7ationz75zz__gstreamer_gstreamerz00(long, char *);
+extern obj_t BGl_modulezd2initializa7ationz75zz__pth_threadz00(long, char *);
+extern obj_t BGl_modulezd2initializa7ationz75zz__readerz00(long, char *);
+extern obj_t BGl_modulezd2initializa7ationz75zz__errorz00(long, char *);
+static obj_t BGl_toplevelzd2initzd2zzrecettez00();
+extern obj_t BGl_modulezd2initzd2errorz00zz__errorz00(char *, char *);
+extern obj_t bigloo_main(obj_t);
+static obj_t BGl_methodzd2initzd2zzrecettez00();
+static obj_t BGl__mainz00zzrecettez00(obj_t, obj_t);
+extern obj_t BGl_bigloozd2typezd2errorz00zz__errorz00(obj_t, obj_t, obj_t);
+static obj_t BGl_requirezd2initializa7ationz75zzrecettez00 = ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));
+static obj_t BGl_genericzd2initzd2zzrecettez00();
+extern obj_t BGl_bigloozd2initializa7edz12z67zz__paramz00();
+extern long BGl_bitzd2andzd2zz__bitz00(long, long);
+extern obj_t bgl_open_input_string(obj_t, int);
+extern bool_t BGl_zd3fxzd3zz__r4_numbers_6_5_fixnumz00(long, long);
+static obj_t BGl_libraryzd2moduleszd2initz00zzrecettez00();
+static obj_t __cnst[ 1 ] ;
+static struct { double _; int length; char string[11 +1]; } BgL_bgl_string2166za700za7za7r2189za7 = { 0.0, 11, "recette.scm" }; static obj_t BGl_string2166z00zzrecettez00 = ((obj_t)((long)&(BgL_bgl_string2166za700za7za7r2189za7.length) + 7));
+static struct { double _; int length; char string[4 +1]; } BgL_bgl_string2167za700za7za7r2190za7 = { 0.0, 4, "pair" }; static obj_t BGl_string2167z00zzrecettez00 = ((obj_t)((long)&(BgL_bgl_string2167za700za7za7r2190za7.length) + 7));
+static struct { double _; int length; char string[6 +1]; } BgL_bgl_string2168za700za7za7r2191za7 = { 0.0, 6, "_main " }; static obj_t BGl_string2168z00zzrecettez00 = ((obj_t)((long)&(BgL_bgl_string2168za700za7za7r2191za7.length) + 7));
+static struct { double _; header_t header; obj_t (*entry)(); obj_t (*va_entry)(); obj_t attr; int arity; } const BgL_bgl__mainza700za7za7recett2192za7 = { 0.0, ((header_t)((long)(((long)(3) << (3 + 16)) | 0<<3))), (obj_t (*)())BGl__mainz00zzrecettez00, (obj_t (*)())0L, ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2))), 1 }; const obj_t BGl_mainzd2envzd2zzrecettez00 = ((obj_t)(&(BgL_bgl__mainza700za7za7recett2192za7.header)));
+extern void bglpth_setup(int, char *[], char *[]);
+long bigloo_abort(long n) { return n; }
+int main(int argc, char *argv[], char *env[])
+{
+bglpth_setup(argc, argv, env);
+return _bigloo_main(argc, argv, env, &bigloo_main);}
+ obj_t BGl_modulezd2initializa7ationz75zzrecettez00(long BgL_checksumz00_509, char * BgL_fromz00_510)
+{ ;
+{
+{
+bool_t BgL_test2176z00_511;
+{
+obj_t BgL_arg2181z00_513;
+BgL_arg2181z00_513 =
+(obj_t)((long)(((long)(BGl_bitzd2andzd2zz__bitz00(BgL_checksumz00_509, ((long)67281932))) << 3) | 1));
+BgL_test2176z00_511 =
+BGl_zd3fxzd3zz__r4_numbers_6_5_fixnumz00(
+(long)(long)((long)((long)(BgL_arg2181z00_513) >> 3)), BgL_checksumz00_509); }
+if(BgL_test2176z00_511)
+{
+if(
+(BGl_requirezd2initializa7ationz75zzrecettez00 != ((obj_t)(obj_t)((long)(((long)(1) << 3) | 2)))))
+{
+BGl_requirezd2initializa7ationz75zzrecettez00 =
+(((bool_t)0) ? ((obj_t)(obj_t)((long)(((long)(2) << 3) | 2))) : ((obj_t)(obj_t)((long)(((long)(1) << 3) | 2))));
+BGl_libraryzd2moduleszd2initz00zzrecettez00();
+BGl_cnstzd2initzd2zzrecettez00();
+BGl_genericzd2initzd2zzrecettez00();
+BGl_methodzd2initzd2zzrecettez00();
+BGl_toplevelzd2initzd2zzrecettez00();
+return ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));} else
+{
+return ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));} } else
+{
+char * BgL_sz00_512;
+BgL_sz00_512 =
+"recette";
+return
+BGl_modulezd2initzd2errorz00zz__errorz00(BgL_sz00_512, BgL_fromz00_510);} } }
+}
+ obj_t bigloo_main(obj_t BgL_argvz00_514)
+{ ;
+{
+BGl_modulezd2initializa7ationz75zzrecettez00(((long)0), "recette");
+BGl_bigloozd2initializa7edz12z67zz__paramz00();
+{
+obj_t BgL_arg2188z00_515;
+BgL_arg2188z00_515 =
+BGl_mainz00zzrecettez00(BgL_argvz00_514);
+return
+bigloo_exit(BgL_arg2188z00_515);} }
+}
+obj_t BGl_libraryzd2moduleszd2initz00zzrecettez00()
+{ ;
+{
+BGl_modulezd2initializa7ationz75zz__readerz00(((long)0), "recette");
+BGl_modulezd2initializa7ationz75zz__errorz00(((long)0), "recette");
+BGl_modulezd2initializa7ationz75zz__gstreamer_gstreamerz00(((long)0), "recette");
+BGl_modulezd2initializa7ationz75zz__pth_threadz00(((long)0), "recette");
+return ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));}
+}
+obj_t BGl_cnstzd2initzd2zzrecettez00()
+{ ;
+{
+{
+obj_t BgL_cportz00_501;
+BgL_cportz00_501 =
+bgl_open_input_string(BGl_string2168z00zzrecettez00,
+(int)(((long)0)));
+{
+long BgL_iz00_502;
+BgL_iz00_502 = ((long)0);
+BgL_loopz00_503:
+{
+bool_t BgL_test2169z00_504;
+BgL_test2169z00_504 =
+(BgL_iz00_502==((long)-1));
+if(BgL_test2169z00_504)
+{
+return ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));} else
+{
+{
+obj_t BgL_arg2175z00_505;
+{
+{
+obj_t BgL_iportz00_506;
+BgL_iportz00_506 = BgL_cportz00_501;
+{
+obj_t BgL_locationz00_507;
+BgL_locationz00_507 =
+(((bool_t)0) ? ((obj_t)(obj_t)((long)(((long)(2) << 3) | 2))) : ((obj_t)(obj_t)((long)(((long)(1) << 3) | 2))));
+{
+BgL_arg2175z00_505 =
+BGl_readz00zz__readerz00(BgL_iportz00_506, BgL_locationz00_507); } } } }
+{
+int BgL_auxz00_545;
+BgL_auxz00_545 =
+(int)(BgL_iz00_502);
+( __cnst[ BgL_auxz00_545 ] = BgL_arg2175z00_505, ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2))) ); } }
+{
+int BgL_auxz00_508;
+BgL_auxz00_508 =
+(int)(
+(BgL_iz00_502-((long)1)));
+{
+long BgL_iz00_550;
+BgL_iz00_550 =
+(long)(BgL_auxz00_508);
+BgL_iz00_502 = BgL_iz00_550;
+goto BgL_loopz00_503;} } } } } } }
+}
+obj_t BGl_toplevelzd2initzd2zzrecettez00()
+{ ;
+{
+BGl_modulezd2initializa7ationz75zz__gstreamer_gstreamerz00(((long)0),
+((char *)(&((((obj_t)((long)BGl_string2166z00zzrecettez00 - 7))->string_t).char0))));
+BGl_modulezd2initializa7ationz75zz__pth_threadz00(((long)0),
+((char *)(&((((obj_t)((long)BGl_string2166z00zzrecettez00 - 7))->string_t).char0))));
+return ((obj_t)(obj_t)((long)(((long)(1) << 3) | 2)));}
+}
+ obj_t BGl_mainz00zzrecettez00(obj_t BgL_argvz00_1)
+{ ;
+{
+{
+obj_t BgL_list2163z00_496;
+BgL_list2163z00_496 =
+({ obj_t an_object; an_object = (obj_t)GC_malloc( (sizeof( struct pair )) ); an_object->pair_t.car = (obj_t)((long)(((long)(((long)0)) << 3) | 1)); an_object->pair_t.cdr = ((obj_t)(obj_t)((long)(((long)(0) << 3) | 2))); ( ((obj_t)((long)an_object | 3)) ); });
+return
+BGl_exitz00zz__errorz00(BgL_list2163z00_496);} }
+}
+obj_t BGl__mainz00zzrecettez00(obj_t BgL_envz00_497, obj_t BgL_argvz00_498)
+{ ;
+{
+{
+obj_t BgL_auxz00_559;
+{
+obj_t BgL_aux2164z00_499;
+BgL_aux2164z00_499 = BgL_argvz00_498;
+{
+bool_t BgL_test2165z00_500;
+BgL_test2165z00_500 =
+((((long)BgL_aux2164z00_499) & ((1 << 3) - 1)) == 3);
+if(BgL_test2165z00_500)
+{
+BgL_auxz00_559 = BgL_aux2164z00_499
+; } else
+{
+BGl_bigloozd2typezd2errorz00zz__errorz00(
+__cnst[ ((long)0) ], BGl_string2167z00zzrecettez00, BgL_aux2164z00_499);
+exit( -1 );} } }
+return
+BGl_mainz00zzrecettez00(BgL_auxz00_559);} }
+}
+obj_t BGl_genericzd2initzd2zzrecettez00()
+{ ;
+{
+return ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));}
+}
+obj_t BGl_methodzd2initzd2zzrecettez00()
+{ ;
+{
+return ((obj_t)(obj_t)((long)(((long)(3) << 3) | 2)));}
+}
--- /dev/null
+typedef int bool_t;
+typedef union scmobj {
+} *obj_t;
+extern obj_t bigloo_main(obj_t);
+static obj_t BGl_requirezd2initializa7ationz75zzrecettez00 =
+ ((obj_t) (obj_t) ((long)(((long)(3) << 3) | 2)));
+static obj_t BGl_libraryzd2moduleszd2initz00zzrecettez00();
+int main(int argc, char *argv[], char *env[])
+{
+ bglpth_setup(argc, argv, env);
+ return _bigloo_main(argc, argv, env, &bigloo_main);
+}
+
+obj_t BGl_modulezd2initializa7ationz75zzrecettez00(long BgL_checksumz00_509,
+ char *BgL_fromz00_510)
+{
+ {
+ {
+ bool_t BgL_test2176z00_511;
+ if (BgL_test2176z00_511) {
+ if ((BGl_requirezd2initializa7ationz75zzrecettez00 != ((obj_t) (obj_t) ((long)(((long)(1) << 3) | 2))))) {
+ BGl_libraryzd2moduleszd2initz00zzrecettez00
+ ();
+ }
+ }
+ }
+ }
+}
+obj_t bigloo_main(obj_t BgL_argvz00_514)
+{
+ {
+ BGl_modulezd2initializa7ationz75zzrecettez00(((long)0),
+ "recette");
+ }
+}
+obj_t BGl_libraryzd2moduleszd2initz00zzrecettez00()
+{
+ {
+ BGl_modulezd2initializa7ationz75zz__gstreamer_gstreamerz00(((long)0), "recette");
+ }
+}
--- /dev/null
+bigloo_main() { BGl_modulezd2initializa7ationz75zz__gstreamer_gstreamerz00(); }
+main() {
+ char *argv[] = { "a.out", 0 };
+ bglpth_setup(1, argv, 0);
+ _bigloo_main(1, argv, 0, &bigloo_main);
+}
+
--- /dev/null
+#!/bin/bash
+#
+# Run like:
+# multidelta -level=# ./reduce-ice $FILE
+# levels: 0 0 1 1 2 2 10 10
+#
+
+FILE=bigloo.i
+CC=gcc
+FLAGS="-L/usr/lib64/bigloo/3.2b -L/usr/lib -lbigloopth_s-3.2b -lbigloogstreamer_s-3.2b -lbigloomultimedia_s-3.2b -lbigloo_s-3.2b -lgc -ldl -lm -lgmp -ldl -lbigloopth_s-3.2b -lbigloogstreamer_s-3.2b -lbigloomultimedia_s-3.2b -lpthread -pthread -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lxml2 -lglib-2.0 -lgstaudio-0.10"
+
+$CC -pipe $FILE $FLAGS || exit 1
+./a.out || exit 1
+expect -c 'spawn sandbox ./a.out; expect;' |& grep 'glibc detected .*: free..: invalid pointer:'
--- /dev/null
+typedef enum {
+ CINFO_UNKNOWN_SEP_LIN
+} color_enc_sep_lin_t;
+struct device_color_info_s {
+ int max_components;
+ int text_bits;
+ int graphics_bits;
+ color_enc_sep_lin_t separable_and_linear;
+ char comp_shift[64];
+ char comp_bits[64];
+ int black_component;
+};
+struct device_procs_s {
+ int (*open_device) ();
+ void (*get_initial_matrix) ();
+ int (*sync_output) ();
+ int (*output_page) ();
+ int (*close_device) ();
+ long long (*map_rgb_color) ();
+ int (*map_color_rgb) ();
+ void *(*ret_devn_params) ();
+};
+typedef struct inferno_device_s {
+ int retained;
+ int is_open;
+ struct device_color_info_s color_info;
+ struct device_procs_s orig_procs;
+ int ldepth;
+ int cmapcall;
+} inferno_device;
+long long inferno_rgb2cmap(void *dev)
+{
+ inferno_device *bdev;
+ bdev = (inferno_device *) dev;
+ int mask;
+ int red;
+ if (red == mask)
+ bdev->ldepth = 3;
+ bdev->cmapcall = 1;
+ return mask;
+}
--- /dev/null
+typedef unsigned char __u_char;
+typedef unsigned short int __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long int __u_long;
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+__extension__ typedef signed long long int __int64_t;
+__extension__ typedef unsigned long long int __uint64_t;
+__extension__ typedef long long int __quad_t;
+__extension__ typedef unsigned long long int __u_quad_t;
+__extension__ typedef __u_quad_t __dev_t;
+__extension__ typedef unsigned int __uid_t;
+__extension__ typedef unsigned int __gid_t;
+__extension__ typedef unsigned long int __ino_t;
+__extension__ typedef __u_quad_t __ino64_t;
+__extension__ typedef unsigned int __mode_t;
+__extension__ typedef unsigned int __nlink_t;
+__extension__ typedef long int __off_t;
+__extension__ typedef __quad_t __off64_t;
+__extension__ typedef int __pid_t;
+__extension__ typedef struct { int __val[2]; } __fsid_t;
+__extension__ typedef long int __clock_t;
+__extension__ typedef unsigned long int __rlim_t;
+__extension__ typedef __u_quad_t __rlim64_t;
+__extension__ typedef unsigned int __id_t;
+__extension__ typedef long int __time_t;
+__extension__ typedef unsigned int __useconds_t;
+__extension__ typedef long int __suseconds_t;
+__extension__ typedef int __daddr_t;
+__extension__ typedef long int __swblk_t;
+__extension__ typedef int __key_t;
+__extension__ typedef int __clockid_t;
+__extension__ typedef void * __timer_t;
+__extension__ typedef long int __blksize_t;
+__extension__ typedef long int __blkcnt_t;
+__extension__ typedef __quad_t __blkcnt64_t;
+__extension__ typedef unsigned long int __fsblkcnt_t;
+__extension__ typedef __u_quad_t __fsblkcnt64_t;
+__extension__ typedef unsigned long int __fsfilcnt_t;
+__extension__ typedef __u_quad_t __fsfilcnt64_t;
+__extension__ typedef int __ssize_t;
+typedef __off64_t __loff_t;
+typedef __quad_t *__qaddr_t;
+typedef char *__caddr_t;
+__extension__ typedef int __intptr_t;
+__extension__ typedef unsigned int __socklen_t;
+typedef __u_char u_char;
+typedef __u_short u_short;
+typedef __u_int u_int;
+typedef __u_long u_long;
+typedef __quad_t quad_t;
+typedef __u_quad_t u_quad_t;
+typedef __fsid_t fsid_t;
+typedef __loff_t loff_t;
+typedef __ino_t ino_t;
+typedef __ino64_t ino64_t;
+typedef __dev_t dev_t;
+typedef __gid_t gid_t;
+typedef __mode_t mode_t;
+typedef __nlink_t nlink_t;
+typedef __uid_t uid_t;
+typedef __off_t off_t;
+typedef __off64_t off64_t;
+typedef __pid_t pid_t;
+typedef __id_t id_t;
+typedef __ssize_t ssize_t;
+typedef __daddr_t daddr_t;
+typedef __caddr_t caddr_t;
+typedef __key_t key_t;
+typedef __time_t time_t;
+typedef __clockid_t clockid_t;
+typedef __timer_t timer_t;
+typedef unsigned int size_t;
+typedef unsigned long int ulong_;
+typedef unsigned short int ushort_;
+typedef unsigned int uint_;
+typedef int int8_t __attribute__ ((__mode__ (__QI__)));
+typedef int int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int int32_t __attribute__ ((__mode__ (__SI__)));
+typedef int int64_t __attribute__ ((__mode__ (__DI__)));
+typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__)));
+typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));
+typedef int register_t __attribute__ ((__mode__ (__word__)));
+typedef int __sig_atomic_t;
+typedef struct
+ {
+ unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
+ } __sigset_t;
+typedef __sigset_t sigset_t;
+struct timespec
+ {
+ __time_t tv_sec;
+ long int tv_nsec;
+ };
+struct timeval
+ {
+ __time_t tv_sec;
+ __suseconds_t tv_usec;
+ };
+typedef __suseconds_t suseconds_t;
+typedef long int __fd_mask;
+typedef struct
+ {
+ __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];
+ } fd_set;
+typedef __fd_mask fd_mask;
+extern int select (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ struct timeval *__restrict __timeout);
+extern int pselect (int __nfds, fd_set *__restrict __readfds,
+ fd_set *__restrict __writefds,
+ fd_set *__restrict __exceptfds,
+ const struct timespec *__restrict __timeout,
+ const __sigset_t *__restrict __sigmask);
+__extension__
+extern unsigned int gnu_dev_major (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned int gnu_dev_minor (unsigned long long int __dev)
+ __attribute__ ((__nothrow__));
+__extension__
+extern unsigned long long int gnu_dev_makedev (unsigned int __major,
+ unsigned int __minor)
+ __attribute__ ((__nothrow__));
+__extension__ extern __inline unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_major (unsigned long long int __dev)
+{
+ return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
+}
+__extension__ extern __inline unsigned int
+__attribute__ ((__nothrow__)) gnu_dev_minor (unsigned long long int __dev)
+{
+ return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
+}
+__extension__ extern __inline unsigned long long int
+__attribute__ ((__nothrow__)) gnu_dev_makedev (unsigned int __major, unsigned int __minor)
+{
+ return ((__minor & 0xff) | ((__major & 0xfff) << 8)
+ | (((unsigned long long int) (__minor & ~0xff)) << 12)
+ | (((unsigned long long int) (__major & ~0xfff)) << 32));
+}
+typedef __blkcnt_t blkcnt_t;
+typedef __fsblkcnt_t fsblkcnt_t;
+typedef __fsfilcnt_t fsfilcnt_t;
+typedef __blkcnt64_t blkcnt64_t;
+typedef __fsblkcnt64_t fsblkcnt64_t;
+typedef __fsfilcnt64_t fsfilcnt64_t;
+typedef unsigned long int pthread_t;
+typedef union
+{
+ char __size[36];
+ long int __align;
+} pthread_attr_t;
+typedef struct __pthread_internal_slist
+{
+ struct __pthread_internal_slist *__next;
+} __pthread_slist_t;
+typedef union
+{
+ struct __pthread_mutex_s
+ {
+ int __lock;
+ unsigned int __count;
+ int __owner;
+ int __kind;
+ unsigned int __nusers;
+ __extension__ union
+ {
+ int __spins;
+ __pthread_slist_t __list;
+ };
+ } __data;
+ char __size[24];
+ long int __align;
+} pthread_mutex_t;
+typedef union
+{
+ char __size[4];
+ long int __align;
+} pthread_mutexattr_t;
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __futex;
+ __extension__ unsigned long long int __total_seq;
+ __extension__ unsigned long long int __wakeup_seq;
+ __extension__ unsigned long long int __woken_seq;
+ void *__mutex;
+ unsigned int __nwaiters;
+ unsigned int __broadcast_seq;
+ } __data;
+ char __size[48];
+ __extension__ long long int __align;
+} pthread_cond_t;
+typedef union
+{
+ char __size[4];
+ long int __align;
+} pthread_condattr_t;
+typedef unsigned int pthread_key_t;
+typedef int pthread_once_t;
+typedef union
+{
+ struct
+ {
+ int __lock;
+ unsigned int __nr_readers;
+ unsigned int __readers_wakeup;
+ unsigned int __writer_wakeup;
+ unsigned int __nr_readers_queued;
+ unsigned int __nr_writers_queued;
+ unsigned char __flags;
+ unsigned char __shared;
+ unsigned char __pad1;
+ unsigned char __pad2;
+ pthread_t __writer;
+ } __data;
+ char __size[32];
+ long int __align;
+} pthread_rwlock_t;
+typedef union
+{
+ char __size[8];
+ long int __align;
+} pthread_rwlockattr_t;
+typedef volatile int pthread_spinlock_t;
+typedef union
+{
+ char __size[20];
+ long int __align;
+} pthread_barrier_t;
+typedef union
+{
+ char __size[4];
+ int __align;
+} pthread_barrierattr_t;
+typedef int bool;
+typedef const char *ptr_ord_t;
+typedef double floatp;
+typedef const char *client_name_t;
+typedef unsigned short bits16;
+typedef unsigned int bits32;
+struct _IO_FILE;
+typedef struct _IO_FILE FILE;
+typedef struct _IO_FILE __FILE;
+typedef struct
+{
+ int __count;
+ union
+ {
+ unsigned int __wch;
+ char __wchb[4];
+ } __value;
+} __mbstate_t;
+typedef struct
+{
+ __off_t __pos;
+ __mbstate_t __state;
+} _G_fpos_t;
+typedef struct
+{
+ __off64_t __pos;
+ __mbstate_t __state;
+} _G_fpos64_t;
+typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
+typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
+typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
+typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
+typedef __builtin_va_list __gnuc_va_list;
+struct _IO_jump_t; struct _IO_FILE;
+typedef void _IO_lock_t;
+struct _IO_marker {
+ struct _IO_marker *_next;
+ struct _IO_FILE *_sbuf;
+ int _pos;
+};
+enum __codecvt_result
+{
+ __codecvt_ok,
+ __codecvt_partial,
+ __codecvt_error,
+ __codecvt_noconv
+};
+struct _IO_FILE {
+ int _flags;
+ char* _IO_read_ptr;
+ char* _IO_read_end;
+ char* _IO_read_base;
+ char* _IO_write_base;
+ char* _IO_write_ptr;
+ char* _IO_write_end;
+ char* _IO_buf_base;
+ char* _IO_buf_end;
+ char *_IO_save_base;
+ char *_IO_backup_base;
+ char *_IO_save_end;
+ struct _IO_marker *_markers;
+ struct _IO_FILE *_chain;
+ int _fileno;
+ int _flags2;
+ __off_t _old_offset;
+ unsigned short _cur_column;
+ signed char _vtable_offset;
+ char _shortbuf[1];
+ _IO_lock_t *_lock;
+ __off64_t _offset;
+ void *__pad1;
+ void *__pad2;
+ void *__pad3;
+ void *__pad4;
+ size_t __pad5;
+ int _mode;
+ char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
+};
+typedef struct _IO_FILE _IO_FILE;
+struct _IO_FILE_plus;
+extern struct _IO_FILE_plus _IO_2_1_stdin_;
+extern struct _IO_FILE_plus _IO_2_1_stdout_;
+extern struct _IO_FILE_plus _IO_2_1_stderr_;
+typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
+typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
+ size_t __n);
+typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
+typedef int __io_close_fn (void *__cookie);
+extern int __underflow (_IO_FILE *);
+extern int __uflow (_IO_FILE *);
+extern int __overflow (_IO_FILE *, int);
+extern int _IO_getc (_IO_FILE *__fp);
+extern int _IO_putc (int __c, _IO_FILE *__fp);
+extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
+extern int _IO_peekc_locked (_IO_FILE *__fp);
+extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
+extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
+ __gnuc_va_list, int *__restrict);
+extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
+ __gnuc_va_list);
+extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t);
+extern size_t _IO_sgetn (_IO_FILE *, void *, size_t);
+extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int);
+extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int);
+extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
+typedef _G_fpos_t fpos_t;
+typedef _G_fpos64_t fpos64_t;
+extern struct _IO_FILE *stdin;
+extern struct _IO_FILE *stdout;
+extern struct _IO_FILE *stderr;
+extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
+extern int rename (__const char *__old, __const char *__new) __attribute__ ((__nothrow__));
+extern FILE *tmpfile (void) ;
+extern FILE *tmpfile64 (void) ;
+extern char *tmpnam (char *__s) __attribute__ ((__nothrow__)) ;
+extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__)) ;
+extern char *tempnam (__const char *__dir, __const char *__pfx)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern int fclose (FILE *__stream);
+extern int fflush (FILE *__stream);
+extern int fflush_unlocked (FILE *__stream);
+extern FILE *fopen (__const char *__restrict __filename,
+ __const char *__restrict __modes) ;
+extern FILE *freopen (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) ;
+extern FILE *fopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes) ;
+extern FILE *freopen64 (__const char *__restrict __filename,
+ __const char *__restrict __modes,
+ FILE *__restrict __stream) ;
+extern FILE *fdopen (int __fd, __const char *__modes) __attribute__ ((__nothrow__)) ;
+extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __attribute__ ((__nothrow__));
+extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
+ int __modes, size_t __n) __attribute__ ((__nothrow__));
+extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
+ size_t __size) __attribute__ ((__nothrow__));
+extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
+extern int fprintf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...);
+extern int printf (__const char *__restrict __format, ...);
+extern int sprintf (char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg);
+extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
+extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
+ __gnuc_va_list __arg) __attribute__ ((__nothrow__));
+extern int snprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, ...)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 4)));
+extern int vsnprintf (char *__restrict __s, size_t __maxlen,
+ __const char *__restrict __format, __gnuc_va_list __arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3, 0)));
+extern int fscanf (FILE *__restrict __stream,
+ __const char *__restrict __format, ...) ;
+extern int scanf (__const char *__restrict __format, ...) ;
+extern int sscanf (__const char *__restrict __s,
+ __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
+extern int fgetc (FILE *__stream);
+extern int getc (FILE *__stream);
+extern int getchar (void);
+extern int getc_unlocked (FILE *__stream);
+extern int getchar_unlocked (void);
+extern int fgetc_unlocked (FILE *__stream);
+extern int fputc (int __c, FILE *__stream);
+extern int putc (int __c, FILE *__stream);
+extern int putchar (int __c);
+extern int fputc_unlocked (int __c, FILE *__stream);
+extern int putc_unlocked (int __c, FILE *__stream);
+extern int putchar_unlocked (int __c);
+extern int getw (FILE *__stream);
+extern int putw (int __w, FILE *__stream);
+extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
+ ;
+extern char *gets (char *__s) ;
+extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
+extern int puts (__const char *__s);
+extern int ungetc (int __c, FILE *__stream);
+extern size_t fread (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __s) ;
+extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
+ size_t __n, FILE *__restrict __stream) ;
+extern int fseek (FILE *__stream, long int __off, int __whence);
+extern long int ftell (FILE *__stream) ;
+extern void rewind (FILE *__stream);
+extern int fseeko (FILE *__stream, __off_t __off, int __whence);
+extern __off_t ftello (FILE *__stream) ;
+extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);
+extern int fsetpos (FILE *__stream, __const fpos_t *__pos);
+extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
+extern __off64_t ftello64 (FILE *__stream) ;
+extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
+extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
+extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int ferror (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
+extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern void perror (__const char *__s);
+extern int sys_nerr;
+extern __const char *__const sys_errlist[];
+extern int fileno (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern FILE *popen (__const char *__command, __const char *__modes) ;
+extern int pclose (FILE *__stream);
+extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
+extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
+extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__)) ;
+extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
+extern __inline int
+vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
+{
+ return vfprintf (stdout, __fmt, __arg);
+}
+extern __inline int
+getchar (void)
+{
+ return _IO_getc (stdin);
+}
+extern __inline int
+fgetc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+extern __inline int
+getc_unlocked (FILE *__fp)
+{
+ return (__builtin_expect (((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end), 0) ? __uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
+}
+extern __inline int
+getchar_unlocked (void)
+{
+ return (__builtin_expect (((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end), 0) ? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
+}
+extern __inline int
+putchar (int __c)
+{
+ return _IO_putc (__c, stdout);
+}
+extern __inline int
+fputc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+extern __inline int
+putc_unlocked (int __c, FILE *__stream)
+{
+ return (__builtin_expect (((__stream)->_IO_write_ptr >= (__stream)->_IO_write_end), 0) ? __overflow (__stream, (unsigned char) (__c)) : (unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
+}
+extern __inline int
+putchar_unlocked (int __c)
+{
+ return (__builtin_expect (((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end), 0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char) (*(stdout)->_IO_write_ptr++ = (__c)));
+}
+extern __inline int
+__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x10) != 0);
+}
+extern __inline int
+__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
+{
+ return (((__stream)->_flags & 0x20) != 0);
+}
+typedef struct gs_memory_s gs_memory_t;
+int outwrite(const gs_memory_t *mem, const char *str, int len);
+int errwrite(const char *str, int len);
+void outflush(const gs_memory_t *mem);
+void errflush(void);
+int outprintf(const gs_memory_t *mem, const char *fmt, ...) __attribute__((__format__ (__printf__, 2, 3)));
+int errprintf(const char *fmt, ...) __attribute__((__format__ (__printf__, 1, 2)));
+void dprintf_file_and_line(const char *, int);
+void dflush(void);
+void printf_program_ident(const gs_memory_t *mem, const char *program_name, long revision_number);
+void eprintf_program_ident(const char *program_name, long revision_number);
+const char *gs_program_name(void);
+long gs_revision_number(void);
+void lprintf_file_and_line(const char *, int);
+extern void *memcpy (void *__restrict __dest,
+ __const void *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memmove (void *__dest, __const void *__src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
+ int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memset (void *__s, int __c, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *memchr (__const void *__s, int __c, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strncpy (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
+ size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strcmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strcoll (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strxfrm (char *__restrict __dest,
+ __const char *__restrict __src, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *strdup (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));
+extern char *strchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strrchr (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern size_t strcspn (__const char *__s, __const char *__reject)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern size_t strspn (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strpbrk (__const char *__s, __const char *__accept)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strstr (__const char *__haystack, __const char *__needle)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *__strtok_r (char *__restrict __s,
+ __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
+ char **__restrict __save_ptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
+extern size_t strlen (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
+extern int strerror_r (int __errnum, char *__buf, size_t __buflen) __asm__ ("" "__xpg_strerror_r") __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void bcopy (__const void *__src, void *__dest, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *index (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern char *rindex (__const char *__s, int __c)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));
+extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__ ((__const__));
+extern int strcasecmp (__const char *__s1, __const char *__s2)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));
+extern char *strsep (char **__restrict __stringp,
+ __const char *__restrict __delim)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+typedef struct { unsigned char __arr[2]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR2;
+typedef struct { unsigned char __arr[3]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR3;
+typedef struct { unsigned char __arr[4]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR4;
+typedef struct { unsigned char __arr[5]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR5;
+typedef struct { unsigned char __arr[6]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR6;
+typedef struct { unsigned char __arr[7]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR7;
+typedef struct { unsigned char __arr[8]; } __attribute__ ((__packed__)) __STRING2_COPY_ARR8;
+extern void *__rawmemchr (const void *__s, int __c);
+extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
+extern __inline size_t
+__strcspn_c1 (__const char *__s, int __reject)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
+ int __reject2);
+extern __inline size_t
+__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
+ int __reject2, int __reject3);
+extern __inline size_t
+__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
+ int __reject3)
+{
+ register size_t __result = 0;
+ while (__s[__result] != '\0' && __s[__result] != __reject1
+ && __s[__result] != __reject2 && __s[__result] != __reject3)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
+extern __inline size_t
+__strspn_c1 (__const char *__s, int __accept)
+{
+ register size_t __result = 0;
+ while (__s[__result] == __accept)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline size_t
+__strspn_c2 (__const char *__s, int __accept1, int __accept2)
+{
+ register size_t __result = 0;
+ while (__s[__result] == __accept1 || __s[__result] == __accept2)
+ ++__result;
+ return __result;
+}
+extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline size_t
+__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
+{
+ register size_t __result = 0;
+ while (__s[__result] == __accept1 || __s[__result] == __accept2
+ || __s[__result] == __accept3)
+ ++__result;
+ return __result;
+}
+extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
+ int __accept2);
+extern __inline char *
+__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
+{
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
+ int __accept2, int __accept3);
+extern __inline char *
+__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
+ int __accept3)
+{
+ while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
+ && *__s != __accept3)
+ ++__s;
+ return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
+}
+extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
+extern __inline char *
+__strtok_r_1c (char *__s, char __sep, char **__nextp)
+{
+ char *__result;
+ if (__s == ((void *)0))
+ __s = *__nextp;
+ while (*__s == __sep)
+ ++__s;
+ __result = ((void *)0);
+ if (*__s != '\0')
+ {
+ __result = __s++;
+ while (*__s != '\0')
+ if (*__s++ == __sep)
+ {
+ __s[-1] = '\0';
+ break;
+ }
+ *__nextp = __s;
+ }
+ return __result;
+}
+extern char *__strsep_g (char **__stringp, __const char *__delim);
+extern __inline char *__strsep_1c (char **__s, char __reject);
+extern __inline char *
+__strsep_1c (char **__s, char __reject)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p (__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *) __rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) != ((void *)0))
+ *(*__s)++ = '\0';
+ return __retval;
+}
+extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
+extern __inline char *
+__strsep_2c (char **__s, char __reject1, char __reject2)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
+ char __reject3);
+extern __inline char *
+__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
+{
+ register char *__retval = *__s;
+ if (__retval != ((void *)0))
+ {
+ register char *__cp = __retval;
+ while (1)
+ {
+ if (*__cp == '\0')
+ {
+ __cp = ((void *)0);
+ break;
+ }
+ if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
+ {
+ *__cp++ = '\0';
+ break;
+ }
+ ++__cp;
+ }
+ *__s = __cp;
+ }
+ return __retval;
+}
+extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern void *calloc (size_t __nmemb, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+extern char *__strndup (__const char *__string, size_t __n)
+ __attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
+int unlink(const char *);
+int gs_log_error(int, const char *, int);
+const char *gs_errstr(int code);
+int gs_throw_imp(const char *func, const char *file, int line,
+ int op, int code, const char *fmt, ...) __attribute__((__format__ (__printf__, 6, 7)));
+typedef unsigned long gs_id;
+typedef struct gs_string_s {
+ unsigned char *data; unsigned int size;
+} gs_string;
+typedef struct gs_const_string_s {
+ const unsigned char *data; unsigned int size;
+} gs_const_string;
+typedef struct gs_param_string_s {
+ const unsigned char *data; unsigned int size;
+ bool persistent;
+} gs_param_string;
+typedef struct gs_bytestring_s {
+ unsigned char *data; unsigned int size;
+ unsigned char *bytes;
+} gs_bytestring;
+typedef struct gs_const_bytestring_s {
+ const unsigned char *data; unsigned int size;
+ const unsigned char *bytes;
+} gs_const_bytestring;
+typedef struct gs_point_s {
+ double x, y;
+} gs_point;
+typedef struct gs_int_point_s {
+ int x, y;
+} gs_int_point;
+typedef struct gs_log2_scale_point_s {
+ int x, y;
+} gs_log2_scale_point;
+typedef struct gs_rect_s {
+ gs_point p, q;
+} gs_rect;
+typedef struct gs_int_rect_s {
+ gs_int_point p, q;
+} gs_int_rect;
+typedef struct gs_range_s {
+ float rmin, rmax;
+} gs_range_t;
+typedef struct name_table_s *name_table_ptr;
+typedef struct gs_lib_ctx_s
+{
+ gs_memory_t *memory;
+ FILE *fstdin;
+ FILE *fstdout;
+ FILE *fstderr;
+ FILE *fstdout2;
+ bool stdout_is_redirected;
+ bool stdout_to_stderr;
+ bool stdin_is_interactive;
+ void *caller_handle;
+ void *custom_color_callback;
+ int ( *stdin_fn)(void *caller_handle, char *buf, int len);
+ int ( *stdout_fn)(void *caller_handle, const char *str, int len);
+ int ( *stderr_fn)(void *caller_handle, const char *str, int len);
+ int ( *poll_fn)(void *caller_handle);
+ unsigned long gs_next_id;
+ void *top_of_system;
+ name_table_ptr gs_name_table;
+ bool dict_auto_expand;
+} gs_lib_ctx_t;
+int gs_lib_ctx_init( gs_memory_t *mem );
+void *gs_lib_ctx_get_interp_instance( gs_memory_t *mem );
+gs_memory_t * gs_lib_ctx_get_non_gc_memory_t(void);
+typedef struct gs_memory_struct_type_s gs_memory_struct_type_t;
+typedef const gs_memory_struct_type_t *gs_memory_type_ptr_t;
+typedef struct gs_ptr_procs_s gs_ptr_procs_t;
+typedef const gs_ptr_procs_t *gs_ptr_type_t;
+typedef struct gs_gc_root_s gs_gc_root_t;
+typedef client_name_t struct_name_t;
+unsigned int gs_struct_type_size(gs_memory_type_ptr_t);
+struct_name_t gs_struct_type_name(gs_memory_type_ptr_t);
+typedef struct gs_memory_status_s {
+ unsigned long allocated;
+ unsigned long used;
+} gs_memory_status_t;
+typedef struct gs_memory_procs_s {
+ unsigned char *(*alloc_bytes_immovable)(gs_memory_t *mem, unsigned int nbytes, client_name_t cname); void *(*resize_object)(gs_memory_t *mem, void *obj, unsigned int new_num_elements, client_name_t cname); void (*free_object)(gs_memory_t *mem, void *data, client_name_t cname); gs_memory_t *(*stable)(gs_memory_t *mem); void (*status)(gs_memory_t *mem, gs_memory_status_t *status); void (*free_all)(gs_memory_t *mem, unsigned int free_mask, client_name_t cname); void (*consolidate_free)(gs_memory_t *mem);
+ unsigned char *(*alloc_bytes)(gs_memory_t *mem, unsigned int nbytes, client_name_t cname);
+ void *(*alloc_struct)(gs_memory_t *mem, gs_memory_type_ptr_t pstype, client_name_t cname);
+ void *(*alloc_struct_immovable)(gs_memory_t *mem, gs_memory_type_ptr_t pstype, client_name_t cname);
+ unsigned char *(*alloc_byte_array)(gs_memory_t *mem, unsigned int num_elements, unsigned int elt_size, client_name_t cname);
+ unsigned char *(*alloc_byte_array_immovable)(gs_memory_t *mem, unsigned int num_elements, unsigned int elt_size, client_name_t cname);
+ void *(*alloc_struct_array)(gs_memory_t *mem, unsigned int num_elements, gs_memory_type_ptr_t pstype, client_name_t cname);
+ void *(*alloc_struct_array_immovable)(gs_memory_t *mem, unsigned int num_elements, gs_memory_type_ptr_t pstype, client_name_t cname);
+ unsigned int (*object_size)(gs_memory_t *mem, const void *obj);
+ gs_memory_type_ptr_t (*object_type)(const gs_memory_t *mem, const void *obj);
+ unsigned char *(*alloc_string)(gs_memory_t *mem, unsigned int nbytes, client_name_t cname);
+ unsigned char *(*alloc_string_immovable)(gs_memory_t *mem, unsigned int nbytes, client_name_t cname);
+ unsigned char *(*resize_string)(gs_memory_t *mem, unsigned char *data, unsigned int old_num, unsigned int new_num, client_name_t cname);
+ void (*free_string)(gs_memory_t *mem, unsigned char *data, unsigned int nbytes, client_name_t cname);
+ int (*register_root)(gs_memory_t *mem, gs_gc_root_t *root, gs_ptr_type_t ptype, void **pp, client_name_t cname);
+ void (*unregister_root)(gs_memory_t *mem, gs_gc_root_t *root, client_name_t cname);
+ void (*enable_free)(gs_memory_t *mem, bool enable);
+} gs_memory_procs_t;
+void gs_free_const_object(gs_memory_t *mem, const void *data,
+ client_name_t cname);
+void gs_free_const_string(gs_memory_t *mem, const unsigned char *data, unsigned int nbytes,
+ client_name_t cname);
+void gs_free_bytestring(gs_memory_t *mem, gs_bytestring *pbs,
+ client_name_t cname);
+void gs_free_const_bytestring(gs_memory_t *mem, gs_const_bytestring *pbs,
+ client_name_t cname);
+void *gs_resize_struct_array(gs_memory_t *mem, void *obj, unsigned int num_elements,
+ gs_memory_type_ptr_t pstype,
+ client_name_t cname);
+int gs_register_struct_root(gs_memory_t *mem, gs_gc_root_t *root,
+ void **pp, client_name_t cname);
+void gs_ignore_free_object(gs_memory_t *mem, void *data, client_name_t cname);
+void gs_ignore_free_string(gs_memory_t *mem, unsigned char *data, unsigned int nbytes, client_name_t cname);
+void gs_ignore_consolidate_free(gs_memory_t *mem);
+void *gs_raw_alloc_struct_immovable(gs_memory_t * rmem,
+ gs_memory_type_ptr_t pstype,
+ client_name_t cname);
+typedef struct pl_mem_node_s pl_mem_node_t;
+struct gs_memory_s {
+ gs_memory_t *stable_memory; gs_memory_procs_t procs; gs_lib_ctx_t *gs_lib_ctx; pl_mem_node_t *head; gs_memory_t *non_gc_memory;
+};
+extern char gs_debug[128];
+bool gs_debug_c(int );
+extern FILE *gs_debug_out;
+void debug_dump_bytes(const unsigned char * from, const unsigned char * to,
+ const char *msg);
+void debug_dump_bitmap(const unsigned char * from, unsigned int raster, unsigned int height,
+ const char *msg);
+void debug_print_string(const unsigned char * str, unsigned int len);
+void debug_print_string_hex(const unsigned char * str, unsigned int len);
+typedef struct gs_imager_state_s gs_imager_state;
+typedef struct gs_state_s gs_state;
+int gp_getenv(const char *key, char *ptr, int *plen);
+typedef struct stream_s stream;
+extern int sreadline(stream *s_in, stream *s_out, void *readline_data, gs_const_string *prompt, gs_string *buf, gs_memory_t *bufmem, unsigned int *pcount, bool *pin_eol, bool (*is_stdin)(const stream *));
+typedef unsigned char uint8_t;
+typedef unsigned short int uint16_t;
+typedef unsigned int uint32_t;
+__extension__
+typedef unsigned long long int uint64_t;
+typedef signed char int_least8_t;
+typedef short int int_least16_t;
+typedef int int_least32_t;
+__extension__
+typedef long long int int_least64_t;
+typedef unsigned char uint_least8_t;
+typedef unsigned short int uint_least16_t;
+typedef unsigned int uint_least32_t;
+__extension__
+typedef unsigned long long int uint_least64_t;
+typedef signed char int_fast8_t;
+typedef int int_fast16_t;
+typedef int int_fast32_t;
+__extension__
+typedef long long int int_fast64_t;
+typedef unsigned char uint_fast8_t;
+typedef unsigned int uint_fast16_t;
+typedef unsigned int uint_fast32_t;
+__extension__
+typedef unsigned long long int uint_fast64_t;
+typedef int intptr_t;
+typedef unsigned int uintptr_t;
+__extension__
+typedef long long int intmax_t;
+__extension__
+typedef unsigned long long int uintmax_t;
+void gp_init(void);
+void gp_exit(int exit_status, int code);
+void gp_do_exit(int exit_status);
+const char *gp_strerror(int);
+void gp_get_realtime(long ptm[2]);
+void gp_get_usertime(long ptm[2]);
+int gp_readline_init(void **preadline_data, gs_memory_t *mem);
+int gp_readline(stream *s_in, stream *s_out, void *readline_data,
+ gs_const_string *prompt, gs_string *buf,
+ gs_memory_t *bufmem, unsigned int *pcount, bool *pin_eol,
+ bool (*is_stdin)(const stream *));
+void gp_readline_finit(void *readline_data);
+int gp_stdin_read(char *buf, int len, int interactive, FILE *f);
+const char *gp_getenv_display(void);
+extern const char gp_file_name_list_separator;
+extern const char gp_scratch_file_name_prefix[];
+extern const char gp_null_file_name[];
+extern const char gp_current_directory_name[];
+extern const char gp_fmode_binary_suffix[];
+extern const char gp_fmode_rb[];
+extern const char gp_fmode_wb[];
+FILE *gp_open_scratch_file(const char *prefix,
+ char fname[260],
+ const char *mode);
+FILE *gp_fopen(const char *fname, const char *mode);
+int gp_setmode_binary(FILE * pfile, bool mode);
+typedef enum {
+ gp_combine_small_buffer = -1,
+ gp_combine_cant_handle = 0,
+ gp_combine_success = 1
+} gp_file_name_combine_result;
+gp_file_name_combine_result gp_file_name_combine(const char *prefix, unsigned int plen,
+ const char *fname, unsigned int flen, bool no_sibling, char *buffer, unsigned int *blen);
+unsigned int gp_file_name_root(const char *fname, unsigned int len);
+unsigned int gs_file_name_check_separator(const char *fname, int len, const char *item);
+bool gp_file_name_is_parent(const char *fname, unsigned int len);
+bool gp_file_name_is_current(const char *fname, unsigned int len);
+const char *gp_file_name_current(void);
+const char *gp_file_name_separator(void);
+const char *gp_file_name_directory_separator(void);
+const char *gp_file_name_parent(void);
+bool gp_file_name_is_partent_allowed(void);
+bool gp_file_name_is_empty_item_meanful(void);
+int gp_read_macresource(unsigned char *buf, const char *fname,
+ const unsigned int type, const unsigned short id);
+int gp_cache_insert(int type, unsigned char *key, int keylen, void *buffer, int buflen);
+typedef void *(*gp_cache_alloc)(void *userdata, int bytes);
+int gp_cache_query(int type, unsigned char* key, int keylen, void **buffer,
+ gp_cache_alloc alloc, void *userdata);
+FILE *gp_open_printer(char fname[260], int binary_mode);
+void gp_close_printer(FILE * pfile, const char *fname);
+typedef struct file_enum_s file_enum;
+file_enum *gp_enumerate_files_init(const char *pat, unsigned int patlen,
+ gs_memory_t * memory);
+unsigned int gp_enumerate_files_next(file_enum * pfen, char *ptr, unsigned int maxlen);
+void gp_enumerate_files_close(file_enum * pfen);
+void *gp_enumerate_fonts_init(gs_memory_t *mem);
+int gp_enumerate_fonts_next(void *enum_state, char **fontname, char **path);
+void gp_enumerate_fonts_free(void *enum_state);
+FILE *gp_fopen_64(const char *filename, const char *mode);
+FILE *gp_open_scratch_file_64(const char *prefix,
+ char fname[260],
+ const char *mode);
+FILE *gp_open_printer_64(char fname[260], int binary_mode);
+int64_t gp_ftell_64(FILE *strm);
+int gp_fseek_64(FILE *strm, int64_t offset, int origin);
+struct gs_matrix_s {
+ float xx, xy, yx, yy, tx, ty;
+};
+struct gs_matrix_double_s {
+ double xx, xy, yx, yy, tx, ty;
+};
+typedef struct gs_matrix_s gs_matrix;
+typedef struct gs_matrix_double_s gs_matrix_double;
+void gs_make_identity(gs_matrix *);
+int gs_make_translation(floatp, floatp, gs_matrix *),
+ gs_make_scaling(floatp, floatp, gs_matrix *),
+ gs_make_rotation(floatp, gs_matrix *);
+int gs_matrix_multiply(const gs_matrix *, const gs_matrix *, gs_matrix *),
+ gs_matrix_multiply_double(const gs_matrix_double *, const gs_matrix *, gs_matrix_double *),
+ gs_matrix_invert(const gs_matrix *, gs_matrix *),
+ gs_matrix_invert_to_double(const gs_matrix *, gs_matrix_double *),
+ gs_matrix_translate(const gs_matrix *, floatp, floatp, gs_matrix *),
+ gs_matrix_scale(const gs_matrix *, floatp, floatp, gs_matrix *),
+ gs_matrix_rotate(const gs_matrix *, floatp, gs_matrix *);
+int gs_point_transform(floatp, floatp, const gs_matrix *, gs_point *),
+ gs_point_transform_inverse(floatp, floatp, const gs_matrix *, gs_point *),
+ gs_distance_transform(floatp, floatp, const gs_matrix *, gs_point *),
+ gs_distance_transform_inverse(floatp, floatp, const gs_matrix *, gs_point *),
+ gs_points_bbox(const gs_point[4], gs_rect *),
+ gs_bbox_transform_only(const gs_rect *, const gs_matrix *, gs_point[4]),
+ gs_bbox_transform(const gs_rect *, const gs_matrix *, gs_rect *),
+ gs_bbox_transform_inverse(const gs_rect *, const gs_matrix *, gs_rect *);
+int sget_matrix(stream *, gs_matrix *);
+int sput_matrix(stream *, const gs_matrix *);
+gs_id gs_next_ids(const gs_memory_t *mem, unsigned int count);
+void memflip8x8(const unsigned char * inp, int line_size, unsigned char * outp, int dist);
+unsigned long get_u32_msb(const unsigned char *p);
+int bytes_compare(const unsigned char * str1, unsigned int len1,
+ const unsigned char * str2, unsigned int len2);
+typedef struct string_match_params_s {
+ int any_substring;
+ int any_char;
+ int quote_next;
+ bool ignore_case;
+ bool slash_equiv;
+} string_match_params;
+extern const string_match_params string_match_params_default;
+bool string_match(const unsigned char * str, unsigned int len,
+ const unsigned char * pstr, unsigned int plen,
+ const string_match_params * psmp);
+typedef enum {
+ GS_DEVICE_DOESNT_SUPPORT_TAGS = 0,
+ GS_UNKNOWN_TAG = 0x1,
+ GS_TEXT_TAG = 0x2,
+ GS_IMAGE_TAG = 0x4,
+ GS_PATH_TAG = 0x8,
+ GS_UNTOUCHED_TAG = 0x10
+} gs_object_tag_type_t;
+gs_object_tag_type_t gs_current_object_tag(void);
+typedef struct gc_state_s gc_state_t;
+typedef struct enum_ptr_s {
+ const void *ptr;
+ unsigned int size;
+} enum_ptr_t;
+typedef struct struct_shared_procs_s struct_shared_procs_t;
+struct gs_memory_struct_type_s {
+ unsigned int ssize;
+ struct_name_t sname;
+ const struct_shared_procs_t *shared;
+ void (*clear_marks)(const gs_memory_t *cmem, void *pre, unsigned int size, const gs_memory_struct_type_t *pstype);
+ gs_ptr_type_t (*enum_ptrs)(const gs_memory_t *mem, const void *ptr, unsigned int size, int index, enum_ptr_t *pep, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
+ void (*reloc_ptrs)(void *ptr, unsigned int size, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
+ void (*finalize)(void *ptr);
+ const void *proc_data;
+};
+typedef struct gs_pattern_instance_s gs_pattern_instance_t;
+typedef struct gs_paint_color_s {
+ float values[(8)];
+} gs_paint_color;
+typedef struct gs_client_color_s gs_client_color;
+struct gs_client_color_s {
+ gs_pattern_instance_t *pattern;
+ gs_paint_color paint;
+};
+extern const gs_memory_struct_type_t st_client_color;
+typedef struct gx_image_type_s gx_image_type_t;
+typedef struct gs_image_common_s {
+ const gx_image_type_t *type; gs_matrix ImageMatrix;
+} gs_image_common_t;
+typedef struct gs_data_image_s {
+ const gx_image_type_t *type; gs_matrix ImageMatrix; int Width; int Height; int BitsPerComponent; float Decode[((8) + 1) * 2]; bool Interpolate;
+} gs_data_image_t;
+typedef enum {
+ gs_image_format_chunky = 0,
+ gs_image_format_component_planar = 1,
+ gs_image_format_bit_planar = 2
+} gs_image_format_t;
+typedef struct gs_color_space_s gs_color_space;
+typedef struct gs_pixel_image_s {
+ const gx_image_type_t *type; gs_matrix ImageMatrix; int Width; int Height; int BitsPerComponent; float Decode[((8) + 1) * 2]; bool Interpolate; gs_image_format_t format; bool CombineWithColor; gs_color_space *ColorSpace;
+} gs_pixel_image_t;
+extern const gs_memory_struct_type_t st_gs_pixel_image;
+typedef enum {
+ gs_image_alpha_none = 0,
+ gs_image_alpha_first,
+ gs_image_alpha_last
+} gs_image_alpha_t;
+typedef struct gs_image1_s {
+ const gx_image_type_t *type; gs_matrix ImageMatrix; int Width; int Height; int BitsPerComponent; float Decode[((8) + 1) * 2]; bool Interpolate; gs_image_format_t format; bool CombineWithColor; gs_color_space *ColorSpace;
+ bool ImageMask;
+ bool adjust;
+ gs_image_alpha_t Alpha;
+} gs_image1_t;
+extern const gs_memory_struct_type_t st_gs_image1;
+typedef gs_image1_t gs_image_t;
+void
+ gs_image_common_t_init(gs_image_common_t * pic),
+ gs_data_image_t_init(gs_data_image_t * pim, int num_components),
+ gs_pixel_image_t_init(gs_pixel_image_t * pim,
+ gs_color_space * color_space);
+void gs_image_t_init_adjust(gs_image_t * pim, gs_color_space * pcs,
+ bool adjust);
+void gs_image_t_init_mask_adjust(gs_image_t * pim, bool write_1s,
+ bool adjust);
+typedef struct rc_header_s rc_header;
+struct rc_header_s {
+ long ref_count;
+ gs_memory_t *memory;
+ void (*free)(gs_memory_t *, void *, client_name_t);
+};
+void rc_free_struct_only(gs_memory_t *, void *, client_name_t);
+typedef enum {
+ gs_color_space_index_DeviceGray = 0,
+ gs_color_space_index_DeviceRGB,
+ gs_color_space_index_DeviceCMYK,
+ gs_color_space_index_DevicePixel,
+ gs_color_space_index_DeviceN,
+ gs_color_space_index_CIEDEFG,
+ gs_color_space_index_CIEDEF,
+ gs_color_space_index_CIEABC,
+ gs_color_space_index_CIEA,
+ gs_color_space_index_Separation,
+ gs_color_space_index_Indexed,
+ gs_color_space_index_Pattern,
+ gs_color_space_index_CIEICC
+} gs_color_space_index;
+typedef struct gs_color_space_type_s gs_color_space_type;
+typedef struct gs_device_pixel_params_s {
+ int depth;
+} gs_device_pixel_params;
+typedef struct gs_cie_a_s gs_cie_a;
+typedef struct gs_cie_abc_s gs_cie_abc;
+typedef struct gs_cie_def_s gs_cie_def;
+typedef struct gs_cie_defg_s gs_cie_defg;
+typedef struct gs_cie_icc_s gs_cie_icc;
+typedef struct gs_cieicc_params_s {
+ gs_cie_icc * picc_info;
+} gs_icc_params;
+typedef struct gs_device_n_map_s gs_device_n_map;
+typedef struct gs_device_n_attributes_s gs_device_n_attributes;
+typedef unsigned long gs_separation_name;
+typedef int (gs_callback_func_get_colorname_string)
+ (const gs_memory_t *mem, gs_separation_name colorname, unsigned char **ppstr, unsigned int *plen);
+typedef enum { SEP_NONE, SEP_ALL, SEP_OTHER } separation_type;
+typedef struct gs_separation_params_s {
+ gs_separation_name sep_name;
+ gs_device_n_map *map;
+ separation_type sep_type;
+ bool use_alt_cspace;
+ gs_callback_func_get_colorname_string *get_colorname_string;
+} gs_separation_params;
+typedef struct gs_device_n_params_s {
+ gs_separation_name *names;
+ unsigned int num_components;
+ gs_device_n_map *map;
+ gs_device_n_attributes *colorants;
+ bool use_alt_cspace;
+ gs_callback_func_get_colorname_string *get_colorname_string;
+} gs_device_n_params;
+typedef struct client_color_space_data_s client_color_space_data_t;
+typedef struct gs_indexed_map_s gs_indexed_map;
+typedef struct gs_indexed_params_s {
+ int hival;
+ int n_comps;
+ union {
+ gs_const_string table;
+ gs_indexed_map *map;
+ } lookup;
+ bool use_proc;
+} gs_indexed_params;
+typedef struct gs_pattern_params_s {
+ bool has_base_space;
+} gs_pattern_params;
+struct gs_color_space_s {
+ const gs_color_space_type *type;
+ rc_header rc;
+ gs_id id;
+ gs_color_space *base_space;
+ client_color_space_data_t *pclient_color_space_data;
+ union {
+ gs_device_pixel_params pixel;
+ gs_cie_defg * defg;
+ gs_cie_def * def;
+ gs_cie_abc * abc;
+ gs_cie_a * a;
+ gs_separation_params separation;
+ gs_device_n_params device_n;
+ gs_indexed_params indexed;
+ gs_pattern_params pattern;
+ gs_icc_params icc;
+ } params;
+};
+gs_color_space *gs_cspace_new_DeviceGray(gs_memory_t *mem);
+gs_color_space *gs_cspace_new_DeviceRGB(gs_memory_t *mem);
+gs_color_space *gs_cspace_new_DeviceCMYK(gs_memory_t *mem);
+gs_color_space_index gs_color_space_get_index(const gs_color_space *);
+int gs_color_space_num_components(const gs_color_space *);
+bool gs_color_space_equal(const gs_color_space *pcs1,
+ const gs_color_space *pcs2);
+void gs_color_space_restrict_color(gs_client_color *, const gs_color_space *);
+const gs_color_space *gs_cspace_base_space(const gs_color_space * pcspace);
+gs_memory_t *gs_state_memory(const gs_state *);
+gs_state *gs_state_saved(const gs_state *);
+gs_state *gs_state_swap_saved(gs_state *, gs_state *);
+gs_memory_t *gs_state_swap_memory(gs_state *, gs_memory_t *);
+typedef void *(*gs_state_alloc_proc_t) (gs_memory_t * mem);
+typedef int (*gs_state_copy_proc_t) (void *to, const void *from);
+typedef void (*gs_state_free_proc_t) (void *old, gs_memory_t * mem);
+typedef enum {
+ copy_for_gsave,
+ copy_for_grestore,
+ copy_for_gstate,
+ copy_for_setgstate,
+ copy_for_copygstate,
+ copy_for_currentgstate
+} gs_state_copy_reason_t;
+typedef int (*gs_state_copy_for_proc_t) (void *to, void *from,
+ gs_state_copy_reason_t reason);
+typedef struct gs_state_client_procs_s {
+ gs_state_alloc_proc_t alloc;
+ gs_state_copy_proc_t copy;
+ gs_state_free_proc_t free;
+ gs_state_copy_for_proc_t copy_for;
+} gs_state_client_procs;
+void gs_state_set_client(gs_state *, void *, const gs_state_client_procs *,
+ bool client_has_pattern_streams);
+void *gs_state_client_data(const gs_state *);
+gs_id gx_get_clip_path_id(gs_state *);
+void gs_set_object_tag(gs_state * pgs, const gs_object_tag_type_t tag);
+void gs_enable_object_tagging(void);
+typedef struct gs_composite_s gs_composite_t;
+gs_id gs_composite_id(const gs_composite_t * pcte);
+int imod(int m, int n);
+int igcd(int x, int y);
+int idivmod(int a, int b, int m);
+int ilog2(int n);
+typedef gs_id gs_bitmap_id;
+typedef struct gs_bitmap_s {
+ unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id;
+} gs_bitmap;
+typedef struct gs_const_bitmap_s {
+ const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id;
+} gs_const_bitmap;
+typedef struct gs_tile_bitmap_s {
+ unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height;
+} gs_tile_bitmap;
+typedef struct gs_const_tile_bitmap_s {
+ const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height;
+} gs_const_tile_bitmap;
+typedef struct gs_depth_bitmap_s {
+ unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned char pix_depth; unsigned char num_comps;
+} gs_depth_bitmap;
+typedef struct gs_const_depth_bitmap_s {
+ const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned char pix_depth; unsigned char num_comps;
+} gs_const_depth_bitmap;
+typedef struct gs_tile_depth_bitmap_s {
+ unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height; unsigned char pix_depth; unsigned char num_comps;
+} gs_tile_depth_bitmap;
+typedef struct gs_const_tile_depth_bitmap_s {
+ const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height; unsigned char pix_depth; unsigned char num_comps;
+} gs_const_tile_depth_bitmap;
+extern const gs_memory_struct_type_t st_gs_bitmap;
+extern const gs_memory_struct_type_t st_gs_tile_bitmap;
+extern const gs_memory_struct_type_t st_gs_depth_bitmap;
+extern const gs_memory_struct_type_t st_gs_tile_depth_bitmap;
+typedef gs_bitmap_id gx_bitmap_id;
+typedef struct gx_bitmap_s {
+ unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id;
+} gx_bitmap;
+typedef struct gx_const_bitmap_s {
+ const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id;
+} gx_const_bitmap;
+typedef struct gx_tile_bitmap_s {
+ unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height;
+} gx_tile_bitmap;
+typedef struct gx_const_tile_bitmap_s {
+ const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height;
+} gx_const_tile_bitmap;
+typedef struct gx_strip_bitmap_s {
+ unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height; unsigned short rep_shift; unsigned short shift;
+} gx_strip_bitmap;
+typedef struct gx_const_strip_bitmap_s {
+ const unsigned char * data; int raster; gs_int_point size; gs_bitmap_id id; unsigned short rep_width, rep_height; unsigned short rep_shift; unsigned short shift;
+} gx_const_strip_bitmap;
+extern const gs_memory_struct_type_t st_gx_strip_bitmap;
+typedef struct gx_ht_tile_s gx_ht_tile;
+struct gx_ht_tile_s {
+ gx_strip_bitmap tiles;
+ int level;
+ unsigned int index;
+};
+void bits_fill_rectangle(unsigned char * dest, int dest_bit, unsigned int raster,
+ unsigned int pattern, int width_bits, int height);
+void bits_fill_rectangle_masked(unsigned char * dest, int dest_bit, unsigned int raster,
+ unsigned int pattern, unsigned int src_mask,
+ int width_bits, int height);
+void bits_replicate_horizontally(unsigned char * data, unsigned int width, unsigned int height,
+ unsigned int raster, unsigned int replicated_width, unsigned int replicated_raster);
+void bits_replicate_vertically(unsigned char * data, unsigned int height, unsigned int raster,
+ unsigned int replicated_height);
+void bits_bounding_box(const unsigned char * data, unsigned int height, unsigned int raster,
+ gs_int_rect * pbox);
+void bits_compress_scaled(const unsigned char * src, int srcx, unsigned int width,
+ unsigned int height, unsigned int sraster, unsigned char * dest, unsigned int draster,
+ const gs_log2_scale_point * plog2_scale, int log2_out_bits);
+typedef struct bits_plane_s {
+ union bpd_ {
+ unsigned char *write;
+ const unsigned char *read;
+ } data;
+ int raster;
+ int depth;
+ int x;
+} bits_plane_t;
+int bits_extract_plane(const bits_plane_t *dest ,
+ const bits_plane_t *source , int shift, int width, int height);
+int bits_expand_plane(const bits_plane_t *dest ,
+ const bits_plane_t *source , int shift, int width, int height);
+void bytes_fill_rectangle(unsigned char * dest, unsigned int raster,
+ unsigned char value, int width_bytes, int height);
+void bytes_copy_rectangle(unsigned char * dest, unsigned int dest_raster,
+ const unsigned char * src, unsigned int src_raster, int width_bytes, int height);
+typedef unsigned long long gx_color_index_data;
+typedef gx_color_index_data gx_color_index;
+typedef bits16 wts_screen_sample_t;
+typedef struct wts_screen_s wts_screen_t;
+typedef enum {
+ WTS_SCREEN_RAT,
+ WTS_SCREEN_J,
+ WTS_SCREEN_H
+} wts_screen_type;
+struct wts_screen_s {
+ wts_screen_type type;
+ int cell_width;
+ int cell_height;
+ int cell_shift;
+ wts_screen_sample_t *samples;
+};
+typedef struct {
+ int tag;
+ int x;
+ int y;
+ int nsamples;
+} wts_j_cache_el;
+typedef struct {
+ wts_screen_t base;
+ int pa;
+ int pb;
+ int pc;
+ int pd;
+ int XA;
+ int YA;
+ int XB;
+ int YB;
+ int XC;
+ int YC;
+ int XD;
+ int YD;
+ wts_j_cache_el xcache[512];
+ wts_j_cache_el ycache[512];
+} wts_screen_j_t;
+typedef struct {
+ wts_screen_t base;
+ double px;
+ double py;
+ int x1;
+ int y1;
+} wts_screen_h_t;
+int
+wts_get_samples(wts_screen_t *ws, int x, int y,
+ int *pcellx, int *pcelly, int *p_nsamples);
+typedef struct gx_device_color_s gx_device_color;
+typedef struct gx_device_color_saved_s gx_device_color_saved;
+typedef struct gx_device_halftone_s gx_device_halftone;
+bool gx_device_color_equal(const gx_device_color *pdevc1,
+ const gx_device_color *pdevc2);
+void gx_complete_halftone(gx_device_color *pdevc, int num_comps,
+ gx_device_halftone *pdht);
+typedef struct gx_color_tile_s gx_color_tile;
+typedef struct gx_device_color_type_s gx_device_color_type_t;
+typedef const gx_device_color_type_t *gx_device_color_type;
+struct gx_device_color_s {
+ gx_device_color_type type;
+ union _c {
+ gx_color_index pure;
+ struct _bin {
+ const gx_device_halftone *b_ht;
+ gx_color_index color[2];
+ unsigned int b_level;
+ int b_index;
+ gx_ht_tile *b_tile;
+ } binary;
+ struct _col {
+ gx_device_halftone *c_ht;
+ unsigned short num_components;
+ unsigned char c_base[(8 * 8)];
+ unsigned int c_level[(8 * 8)];
+ unsigned short alpha;
+ gx_color_index plane_mask;
+ } colored;
+ struct _wts {
+ const gx_device_halftone *w_ht;
+ wts_screen_sample_t levels[(8 * 8)];
+ unsigned short num_components;
+ gx_color_index plane_vector[(8 * 8)];
+ } wts;
+ struct _pat {
+ gx_color_tile *p_tile;
+ } pattern;
+ } colors;
+ gs_int_point phase;
+ bool ccolor_valid;
+ gs_client_color ccolor;
+ struct _mask {
+ struct mp_ {
+ short x, y;
+ } m_phase;
+ gx_bitmap_id id;
+ gx_color_tile *m_tile;
+ } mask;
+};
+struct gx_device_color_saved_s {
+ gx_device_color_type type;
+ union _svc {
+ gx_color_index pure;
+ struct _svbin {
+ gx_color_index b_color[2];
+ unsigned int b_level;
+ int b_index;
+ } binary;
+ struct _svcol {
+ unsigned char c_base[(8 * 8)];
+ unsigned int c_level[(8 * 8)];
+ unsigned short alpha;
+ } colored;
+ struct _swts {
+ wts_screen_sample_t levels[(8 * 8)];
+ } wts;
+ struct _pattern {
+ gs_id id;
+ gs_int_point phase;
+ } pattern;
+ struct _pattern2 {
+ gs_id id;
+ bool shfill;
+ } pattern2;
+ } colors;
+ gs_int_point phase;
+};
+extern const gx_device_color_type_t *const gx_dc_type_none;
+extern const gx_device_color_type_t *const gx_dc_type_null;
+extern const gx_device_color_type_t *const gx_dc_type_pure;
+extern const gx_device_color_type_t *const gx_dc_type_ht_binary;
+extern const gx_device_color_type_t *const gx_dc_type_ht_colored;
+extern const gx_device_color_type_t *const gx_dc_type_wts;
+typedef enum {
+ rop2_0 = 0,
+ rop2_S = 0xc,
+ rop2_D = 0xa,
+ rop2_1 = 0xf,
+ rop2_default = rop2_S
+} gs_rop2_t;
+typedef enum {
+ rop3_0 = 0,
+ rop3_T = 0xf0,
+ rop3_S = 0xcc,
+ rop3_D = 0xaa,
+ rop3_1 = 0xff,
+ rop3_default = rop3_T | rop3_S
+} gs_rop3_t;
+typedef unsigned int gs_logical_operation_t;
+typedef unsigned long rop_operand;
+typedef rop_operand (*rop_proc)(rop_operand D, rop_operand S, rop_operand T);
+typedef enum {
+ rop_usage_none = 0,
+ rop_usage_D = 1,
+ rop_usage_S = 2,
+ rop_usage_DS = 3,
+ rop_usage_T = 4,
+ rop_usage_DT = 5,
+ rop_usage_ST = 6,
+ rop_usage_DST = 7
+} rop_usage_t;
+extern const rop_proc rop_proc_table[256];
+extern const unsigned char rop_usage_table[256];
+typedef struct obj_header_s obj_header_t;
+struct gs_ptr_procs_s {
+ void (*unmark)(enum_ptr_t *, gc_state_t *);
+ bool (*mark)(enum_ptr_t *, gc_state_t *);
+ void *(*reloc)(const void *, gc_state_t *);
+};
+extern const gs_ptr_procs_t ptr_struct_procs;
+extern const gs_ptr_procs_t ptr_string_procs;
+extern const gs_ptr_procs_t ptr_const_string_procs;
+struct gs_gc_root_s {
+ gs_gc_root_t *next;
+ gs_ptr_type_t ptype;
+ void **p;
+ bool free_on_unregister;
+};
+typedef struct gc_procs_common_s {
+ void *(*reloc_struct_ptr)(const void *, gc_state_t *); void (*reloc_string)(gs_string *, gc_state_t *); void (*reloc_const_string)(gs_const_string *, gc_state_t *); void (*reloc_param_string)(gs_param_string *, gc_state_t *);
+} gc_procs_common_t;
+gs_ptr_type_t gs_no_struct_enum_ptrs(const gs_memory_t *mem, const void *ptr, unsigned int size, int index, enum_ptr_t *pep, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
+void gs_no_struct_reloc_ptrs(void *ptr, unsigned int size, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
+extern const gs_memory_struct_type_t st_free;
+extern const gs_memory_struct_type_t st_bytes;
+extern const gs_memory_struct_type_t st_gc_root_t;
+extern const gs_memory_struct_type_t st_const_string_element;
+typedef enum {
+ GC_ELT_OBJ,
+ GC_ELT_STRING,
+ GC_ELT_CONST_STRING
+} gc_ptr_type_index_t;
+typedef struct gc_ptr_element_s {
+ unsigned short type;
+ unsigned short offset;
+} gc_ptr_element_t;
+typedef struct gc_struct_data_s {
+ unsigned short num_ptrs;
+ unsigned short super_offset;
+ const gs_memory_struct_type_t *super_type;
+ const gc_ptr_element_t *ptrs;
+} gc_struct_data_t;
+gs_ptr_type_t basic_enum_ptrs(const gs_memory_t *mem, const void *ptr, unsigned int size, int index, enum_ptr_t *pep, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
+void basic_reloc_ptrs(void *ptr, unsigned int size, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
+extern gs_ptr_type_t
+ enum_bytestring(enum_ptr_t *pep, const gs_bytestring *pbs);
+extern gs_ptr_type_t
+ enum_const_bytestring(enum_ptr_t *pep, const gs_const_bytestring *pbs);
+extern void reloc_bytestring(gs_bytestring *pbs, gc_state_t *gcst);
+extern void reloc_const_bytestring(gs_const_bytestring *pbs, gc_state_t *gcst);
+typedef enum {
+ BLEND_MODE_Compatible,
+ BLEND_MODE_Normal,
+ BLEND_MODE_Multiply,
+ BLEND_MODE_Screen,
+ BLEND_MODE_Difference,
+ BLEND_MODE_Darken,
+ BLEND_MODE_Lighten,
+ BLEND_MODE_ColorDodge,
+ BLEND_MODE_ColorBurn,
+ BLEND_MODE_Exclusion,
+ BLEND_MODE_HardLight,
+ BLEND_MODE_Overlay,
+ BLEND_MODE_SoftLight,
+ BLEND_MODE_Luminosity,
+ BLEND_MODE_Hue,
+ BLEND_MODE_Saturation,
+ BLEND_MODE_Color
+} gs_blend_mode_t;
+typedef enum {
+ TRANSPARENCY_STATE_Group = 1,
+ TRANSPARENCY_STATE_Mask
+} gs_transparency_state_type_t;
+typedef struct gs_transparency_state_s gs_transparency_state_t;
+struct gs_transparency_state_s {
+ gs_transparency_state_t *saved; gs_transparency_state_type_t type;
+};
+typedef struct gs_transparency_mask_s {
+ rc_header rc;
+} gs_transparency_mask_t;
+typedef struct gs_function_s gs_function_t;
+typedef struct gs_transparency_group_params_s {
+ const gs_color_space *ColorSpace;
+ bool Isolated;
+ bool Knockout;
+ bool image_with_SMask;
+ bool idle;
+ unsigned int mask_id;
+} gs_transparency_group_params_t;
+typedef enum {
+ TRANSPARENCY_MASK_Alpha,
+ TRANSPARENCY_MASK_Luminosity
+} gs_transparency_mask_subtype_t;
+typedef struct gs_transparency_mask_params_s {
+ gs_transparency_mask_subtype_t subtype;
+ int Background_components;
+ float Background[(8)];
+ float GrayBackground;
+ int (*TransferFunction)(floatp in, float *out, void *proc_data);
+ gs_function_t *TransferFunction_data;
+ bool replacing;
+} gs_transparency_mask_params_t;
+typedef struct gx_transparency_mask_params_s {
+ gs_transparency_mask_subtype_t subtype;
+ int Background_components;
+ float Background[(8)];
+ float GrayBackground;
+ bool function_is_identity;
+ bool idle;
+ bool replacing;
+ unsigned int mask_id;
+ unsigned char transfer_fn[256];
+} gx_transparency_mask_params_t;
+typedef enum {
+ TRANSPARENCY_CHANNEL_Opacity = 0,
+ TRANSPARENCY_CHANNEL_Shape = 1
+} gs_transparency_channel_selector_t;
+typedef unsigned long gx_xglyph;
+struct gx_xfont_procs_s;
+typedef struct gx_xfont_procs_s gx_xfont_procs;
+struct gx_xfont_s;
+typedef struct gx_xfont_s gx_xfont;
+typedef unsigned short gx_color_value;
+typedef long fixed;
+typedef unsigned long ufixed;
+fixed fixed_mult_quo(fixed A, fixed B, fixed C);
+bool
+gx_intersect_small_bars(fixed q0x, fixed q0y, fixed q1x, fixed q1y, fixed q2x, fixed q2y,
+ fixed q3x, fixed q3y, fixed *ry, fixed *ey);
+typedef struct gs_fixed_point_s {
+ fixed x, y;
+} gs_fixed_point;
+typedef struct gs_fixed_rect_s {
+ gs_fixed_point p, q;
+} gs_fixed_rect;
+typedef unsigned long gs_char;
+typedef unsigned long gs_glyph;
+typedef bool (*gs_glyph_mark_proc_t)(const gs_memory_t *mem, gs_glyph glyph, void *proc_data);
+typedef enum {
+ ENCODING_INDEX_UNKNOWN = -1,
+ ENCODING_INDEX_STANDARD = 0,
+ ENCODING_INDEX_ISOLATIN1,
+ ENCODING_INDEX_SYMBOL,
+ ENCODING_INDEX_DINGBATS,
+ ENCODING_INDEX_WINANSI,
+ ENCODING_INDEX_MACROMAN,
+ ENCODING_INDEX_MACEXPERT,
+ ENCODING_INDEX_MACGLYPH,
+ ENCODING_INDEX_ALOGLYPH,
+ ENCODING_INDEX_ALXGLYPH,
+ ENCODING_INDEX_CFFSTRINGS
+} gs_encoding_index_t;
+typedef enum gs_glyph_space_s {
+ GLYPH_SPACE_NAME,
+ GLYPH_SPACE_INDEX,
+ GLYPH_SPACE_NOGEN
+} gs_glyph_space_t;
+typedef int (*gs_glyph_name_proc_t)(const gs_memory_t *mem,
+ gs_glyph glyph, gs_const_string *pstr,
+ void *proc_data);
+typedef enum {
+ cpm_show,
+ cpm_charwidth,
+ cpm_false_charpath,
+ cpm_true_charpath,
+ cpm_false_charboxpath,
+ cpm_true_charboxpath
+} gs_char_path_mode;
+typedef enum {
+ CACHE_DEVICE_NONE = 0,
+ CACHE_DEVICE_NOT_CACHING,
+ CACHE_DEVICE_NONE_AND_CLIP,
+ CACHE_DEVICE_CACHING
+} gs_in_cache_device_t;
+typedef struct gs_text_params_s {
+ unsigned int operation;
+ union sd_ {
+ const unsigned char *bytes;
+ const gs_char *chars;
+ const gs_glyph *glyphs;
+ gs_char d_char;
+ gs_glyph d_glyph;
+ } data;
+ unsigned int size;
+ gs_point delta_all;
+ gs_point delta_space;
+ union s_ {
+ gs_char s_char;
+ gs_glyph s_glyph;
+ } space;
+ const float *x_widths;
+ const float *y_widths;
+ unsigned int widths_size;
+} gs_text_params_t;
+int gs_text_replaced_width(const gs_text_params_t *text, unsigned int index,
+ gs_point *pwidth);
+typedef struct gs_text_enum_s gs_text_enum_t;
+typedef struct gx_device_s gx_device;
+typedef struct gs_font_s gs_font;
+typedef struct gx_path_s gx_path;
+typedef struct gx_clip_path_s gx_clip_path;
+int gx_device_text_begin(gx_device *dev, gs_imager_state *pis, const gs_text_params_t *text, gs_font *font, gx_path *path, const gx_device_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gs_text_enum_t **ppte);
+int gs_text_begin(gs_state * pgs, const gs_text_params_t * text,
+ gs_memory_t * mem, gs_text_enum_t ** ppenum);
+int gs_text_update_dev_color(gs_state * pgs, gs_text_enum_t * pte);
+int
+gs_show_begin(gs_state *, const unsigned char *, unsigned int,
+ gs_memory_t *, gs_text_enum_t **),
+ gs_ashow_begin(gs_state *, floatp, floatp, const unsigned char *, unsigned int,
+ gs_memory_t *, gs_text_enum_t **),
+ gs_widthshow_begin(gs_state *, floatp, floatp, gs_char,
+ const unsigned char *, unsigned int,
+ gs_memory_t *, gs_text_enum_t **),
+ gs_awidthshow_begin(gs_state *, floatp, floatp, gs_char,
+ floatp, floatp, const unsigned char *, unsigned int,
+ gs_memory_t *, gs_text_enum_t **),
+ gs_kshow_begin(gs_state *, const unsigned char *, unsigned int,
+ gs_memory_t *, gs_text_enum_t **),
+ gs_xyshow_begin(gs_state *, const unsigned char *, unsigned int,
+ const float *, const float *, unsigned int,
+ gs_memory_t *, gs_text_enum_t **),
+ gs_glyphshow_begin(gs_state *, gs_glyph,
+ gs_memory_t *, gs_text_enum_t **),
+ gs_cshow_begin(gs_state *, const unsigned char *, unsigned int,
+ gs_memory_t *, gs_text_enum_t **),
+ gs_stringwidth_begin(gs_state *, const unsigned char *, unsigned int,
+ gs_memory_t *, gs_text_enum_t **),
+ gs_charpath_begin(gs_state *, const unsigned char *, unsigned int, bool,
+ gs_memory_t *, gs_text_enum_t **),
+ gs_glyphpath_begin(gs_state *, gs_glyph, bool,
+ gs_memory_t *, gs_text_enum_t **),
+ gs_glyphwidth_begin(gs_state *, gs_glyph,
+ gs_memory_t *, gs_text_enum_t **),
+ gs_charboxpath_begin(gs_state *, const unsigned char *, unsigned int, bool,
+ gs_memory_t *, gs_text_enum_t **);
+int gs_text_size(gs_state * pgs, gs_text_params_t *text, gs_memory_t * mem);
+gs_text_params_t *gs_get_text_params(gs_text_enum_t *pte);
+int gs_text_restart(gs_text_enum_t *pte, const gs_text_params_t *text);
+int gs_text_resync(gs_text_enum_t *pte, const gs_text_enum_t *pfrom);
+int gs_text_process(gs_text_enum_t *pte);
+gs_font *gs_text_current_font(const gs_text_enum_t *pte);
+gs_char gs_text_current_char(const gs_text_enum_t *pte);
+gs_char gs_text_next_char(const gs_text_enum_t *pte);
+gs_glyph gs_text_current_glyph(const gs_text_enum_t *pte);
+int gs_text_total_width(const gs_text_enum_t *pte, gs_point *pwidth);
+bool gs_text_is_width_only(const gs_text_enum_t *pte);
+int gs_text_current_width(const gs_text_enum_t *pte, gs_point *pwidth);
+typedef enum {
+ TEXT_SET_CHAR_WIDTH,
+ TEXT_SET_CACHE_DEVICE,
+ TEXT_SET_CACHE_DEVICE2
+} gs_text_cache_control_t;
+int
+ gs_text_set_cache(gs_text_enum_t *pte, const double *values,
+ gs_text_cache_control_t control),
+ gs_text_setcharwidth(gs_text_enum_t *pte, const double wxy[2]),
+ gs_text_setcachedevice(gs_text_enum_t *pte, const double wbox[6]),
+ gs_text_setcachedevice2(gs_text_enum_t *pte, const double wbox2[10]);
+int gs_text_retry(gs_text_enum_t *pte);
+void gs_text_release(gs_text_enum_t *pte, client_name_t cname);
+int gs_text_count_chars(gs_state * pgs, gs_text_params_t *text, gs_memory_t * mem);
+typedef struct gs_text_enum_procs_s gs_text_enum_procs_t;
+typedef struct cached_fm_pair_s cached_fm_pair;
+typedef struct gs_text_returned_s {
+ gs_char current_char;
+ gs_glyph current_glyph;
+ gs_point total_width;
+} gs_text_returned_t;
+typedef struct gx_font_stack_item_s {
+ gs_font *font;
+ unsigned int index;
+} gx_font_stack_item_t;
+typedef struct gx_font_stack_s {
+ int depth;
+ gx_font_stack_item_t items[1 + 5];
+} gx_font_stack_t;
+void rc_free_text_enum(gs_memory_t *, void *, client_name_t);
+struct gs_text_enum_s {
+ gs_text_params_t text; gx_device *dev; gx_device *imaging_dev; gs_imager_state *pis; gs_font *orig_font; gx_path *path; const gx_device_color *pdcolor; const gx_clip_path *pcpath; gs_memory_t *memory; const gs_text_enum_procs_t *procs; rc_header rc; void *enum_client_data; gs_font *current_font; gs_glyph outer_CID; bool is_pure_color; gs_log2_scale_point log2_scale; cached_fm_pair *pair; unsigned int index; unsigned int xy_index; gx_font_stack_t fstack; int cmap_code; gs_point FontBBox_as_Metrics2; unsigned long text_enum_id; bool device_disabled_grid_fitting; gs_text_returned_t returned;
+};
+int gs_text_enum_init(gs_text_enum_t *pte,
+ const gs_text_enum_procs_t *procs,
+ gx_device *dev, gs_imager_state *pis,
+ const gs_text_params_t *text,
+ gs_font *font, gx_path *path,
+ const gx_device_color *pdcolor,
+ const gx_clip_path *pcpath,
+ gs_memory_t *mem);
+void gs_text_enum_copy_dynamic(gs_text_enum_t *pto,
+ const gs_text_enum_t *pfrom,
+ bool for_return);
+struct gs_text_enum_procs_s {
+ int (*resync)(gs_text_enum_t *pte, const gs_text_enum_t *pfrom);
+ int (*process)(gs_text_enum_t *pte);
+ bool (*is_width_only)(const gs_text_enum_t *pte);
+ int (*current_width)(const gs_text_enum_t *pte, gs_point *pwidth);
+ int (*set_cache)(gs_text_enum_t *pte, const double *values, gs_text_cache_control_t control);
+ int (*retry)(gs_text_enum_t *pte);
+ void (*release)(gs_text_enum_t *pte, client_name_t cname);
+};
+void gx_default_text_release(gs_text_enum_t *pte, client_name_t cname);
+typedef enum {
+ gs_color_select_all = -1,
+ gs_color_select_texture = 0,
+ gs_color_select_source = 1
+} gs_color_select_t;
+typedef short frac;
+typedef short signed_frac;
+typedef struct gx_transfer_map_s gx_transfer_map;
+typedef float (*gs_mapping_proc) (floatp, const gx_transfer_map *);
+typedef float (*gs_mapping_closure_proc_t) (floatp value,
+ const gx_transfer_map * pmap,
+ const void *proc_data);
+typedef struct gs_mapping_closure_s {
+ gs_mapping_closure_proc_t proc;
+ const void *data;
+} gs_mapping_closure_t;
+struct gx_transfer_map_s {
+ rc_header rc;
+ gs_mapping_proc proc;
+ gs_mapping_closure_t closure;
+ gs_id id;
+ frac values[(1 << 8)];
+};
+extern const gs_memory_struct_type_t st_transfer_map;
+void gx_set_identity_transfer(gx_transfer_map *);
+frac gx_color_frac_map(frac, const frac *);
+float gs_mapped_transfer(floatp, const gx_transfer_map *);
+float gs_identity_transfer(floatp, const gx_transfer_map *);
+struct gx_cm_color_map_procs_s {
+ void (*map_gray) (gx_device * dev, frac gray, frac * out);
+ void (*map_rgb) (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
+ void (*map_cmyk) (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
+};
+typedef struct gx_cm_color_map_procs_s gx_cm_color_map_procs;
+void gray_cs_to_gray_cm (gx_device * dev, frac gray, frac * out);
+void rgb_cs_to_rgb_cm (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
+void cmyk_cs_to_cmyk_cm (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
+struct gx_color_map_procs_s {
+ void (*map_gray)(frac, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+ void (*map_rgb)(frac, frac, frac, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+ void (*map_cmyk)(frac, frac, frac, frac, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+ void (*map_rgb_alpha)(frac, frac, frac, frac, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+ void (*map_separation)(frac, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+ void (*map_devicen)(const frac *, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+ bool (*is_halftoned)(const gs_imager_state *, gx_device *);
+};
+typedef struct gx_color_map_procs_s gx_color_map_procs;
+const gx_color_map_procs *
+ gx_get_cmap_procs(const gs_imager_state *, const gx_device *);
+const gx_color_map_procs *
+ gx_default_get_cmap_procs(const gs_imager_state *, const gx_device *);
+void gx_set_cmap_procs(gs_imager_state *, const gx_device *);
+extern void gx_default_gray_cs_to_gray_cm (gx_device * dev, frac gray, frac * out);
+extern void gx_default_rgb_cs_to_gray_cm (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
+extern void gx_default_cmyk_cs_to_gray_cm (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
+extern void gx_default_gray_cs_to_rgb_cm (gx_device * dev, frac gray, frac * out);
+extern void gx_default_rgb_cs_to_rgb_cm (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
+extern void gx_default_cmyk_cs_to_rgb_cm (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
+extern void gx_default_gray_cs_to_cmyk_cm (gx_device * dev, frac gray, frac * out);
+extern void gx_default_rgb_cs_to_cmyk_cm (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
+extern void gx_default_cmyk_cs_to_cmyk_cm (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
+extern void gx_default_gray_cs_to_cmyk_cm (gx_device * dev, frac gray, frac * out);
+extern void gx_default_rgb_cs_to_cmyk_cm (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
+extern void gx_default_cmyk_cs_to_cmyk_cm (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
+extern void gx_error_gray_cs_to_cmyk_cm (gx_device * dev, frac gray, frac * out);
+extern void gx_error_rgb_cs_to_cmyk_cm (gx_device * dev, const gs_imager_state *pis, frac r, frac g, frac b, frac * out);
+extern void gx_error_cmyk_cs_to_cmyk_cm (gx_device * dev, frac c, frac m, frac y, frac k, frac * out);
+int (gx_error_get_color_comp_index)(gx_device * dev, const char * pname, int name_size, int component_type);
+int (gx_default_DevGray_get_color_comp_index)(gx_device * dev, const char * pname, int name_size, int component_type);
+int (gx_default_DevRGB_get_color_comp_index)(gx_device * dev, const char * pname, int name_size, int component_type);
+int (gx_default_DevCMYK_get_color_comp_index)(gx_device * dev, const char * pname, int name_size, int component_type);
+int (gx_default_DevRGBK_get_color_comp_index)(gx_device * dev, const char * pname, int name_size, int component_type);
+const gx_cm_color_map_procs * (gx_error_get_color_mapping_procs)(const gx_device * dev);
+const gx_cm_color_map_procs * (gx_default_DevGray_get_color_mapping_procs)(const gx_device * dev);
+const gx_cm_color_map_procs * (gx_default_DevRGB_get_color_mapping_procs)(const gx_device * dev);
+const gx_cm_color_map_procs * (gx_default_DevCMYK_get_color_mapping_procs)(const gx_device * dev);
+const gx_cm_color_map_procs * (gx_default_DevRGBK_get_color_mapping_procs)(const gx_device * dev);
+gx_color_index (gx_error_encode_color)(gx_device * dev, const gx_color_value colors[]);
+gx_color_index (gx_default_encode_color)(gx_device * dev, const gx_color_value colors[]);
+gx_color_index (gx_default_gray_fast_encode)(gx_device * dev, const gx_color_value colors[]);
+gx_color_index (gx_default_gray_encode)(gx_device * dev, const gx_color_value colors[]);
+gx_color_index (gx_backwards_compatible_gray_encode)(gx_device * dev, const gx_color_value colors[]);
+int (gx_error_decode_color)(gx_device * dev, gx_color_index cindex, gx_color_value colors[]);
+int (gx_default_decode_color)(gx_device * dev, gx_color_index cindex, gx_color_value colors[]);
+frac gx_unit_frac(float fvalue);
+struct gs_color_space_type_s {
+ gs_color_space_index index;
+ bool can_be_base_space;
+ bool can_be_alt_space;
+ gs_memory_type_ptr_t stype;
+ int (*num_components)(const gs_color_space *);
+ void (*init_color)(gs_client_color *, const gs_color_space *);
+ void (*restrict_color)(gs_client_color *, const gs_color_space *);
+ const gs_color_space *(*concrete_space)(const gs_color_space *, const gs_imager_state *);
+ int (*concretize_color)(const gs_client_color *, const gs_color_space *, frac *, const gs_imager_state *);
+ int (*remap_concrete_color)(const frac *, const gs_color_space * pcs, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+ int (*remap_color)(const gs_client_color *, const gs_color_space *, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+ int (*install_cspace)(gs_color_space *, gs_state *);
+ int (*set_overprint)(const gs_color_space *, gs_state *);
+ void (*final)(const gs_color_space *);
+ void (*adjust_color_count)(const gs_client_color *, const gs_color_space *, int);
+ int (*serialize)(const gs_color_space *, stream *);
+ int (*is_linear)(const gs_color_space *cs, const gs_imager_state * pis, gx_device *dev, const gs_client_color *c0, const gs_client_color *c1, const gs_client_color *c2, const gs_client_color *c3, float smoothness);
+};
+extern const gs_memory_struct_type_t st_base_color_space;
+int gx_num_components_1(const gs_color_space *);
+int gx_num_components_3(const gs_color_space *);
+int gx_num_components_4(const gs_color_space *);
+void gx_init_paint_1(gs_client_color *, const gs_color_space *);
+void gx_init_paint_3(gs_client_color *, const gs_color_space *);
+void gx_init_paint_4(gs_client_color *, const gs_color_space *);
+void gx_restrict01_paint_1(gs_client_color *, const gs_color_space *);
+void gx_restrict01_paint_3(gs_client_color *, const gs_color_space *);
+void gx_restrict01_paint_4(gs_client_color *, const gs_color_space *);
+const gs_color_space *gx_no_concrete_space(const gs_color_space *, const gs_imager_state *);
+const gs_color_space *gx_same_concrete_space(const gs_color_space *, const gs_imager_state *);
+int gx_no_concretize_color(const gs_client_color *, const gs_color_space *, frac *, const gs_imager_state *);
+int gx_default_remap_color(const gs_client_color *, const gs_color_space *, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+int gx_no_install_cspace(gs_color_space *, gs_state *);
+int gx_spot_colors_set_overprint(const gs_color_space *, gs_state *);
+void gx_no_adjust_color_count(const gs_client_color *, const gs_color_space *, int);
+int gx_serialize_cspace_type(const gs_color_space *, stream *);
+int gx_cspace_no_linear(const gs_color_space *cs, const gs_imager_state * pis, gx_device *dev, const gs_client_color *c0, const gs_client_color *c1, const gs_client_color *c2, const gs_client_color *c3, float smoothness);
+int gx_cspace_is_linear_default(const gs_color_space *cs, const gs_imager_state * pis, gx_device *dev, const gs_client_color *c0, const gs_client_color *c1, const gs_client_color *c2, const gs_client_color *c3, float smoothness);
+int gx_remap_DeviceGray(const gs_client_color *, const gs_color_space *, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+int gx_concretize_DeviceGray(const gs_client_color *, const gs_color_space *, frac *, const gs_imager_state *);
+int gx_remap_concrete_DGray(const frac *, const gs_color_space * pcs, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+int gx_remap_DeviceRGB(const gs_client_color *, const gs_color_space *, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+int gx_concretize_DeviceRGB(const gs_client_color *, const gs_color_space *, frac *, const gs_imager_state *);
+int gx_remap_concrete_DRGB(const frac *, const gs_color_space * pcs, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+int gx_remap_DeviceCMYK(const gs_client_color *, const gs_color_space *, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+int gx_concretize_DeviceCMYK(const gs_client_color *, const gs_color_space *, frac *, const gs_imager_state *);
+int gx_remap_concrete_DCMYK(const frac *, const gs_color_space * pcs, gx_device_color *, const gs_imager_state *, gx_device *, gs_color_select_t);
+extern const gs_memory_struct_type_t st_color_space;
+gs_color_space *
+gs_cspace_alloc(gs_memory_t *mem, const gs_color_space_type *pcstype);
+gx_color_index check_cmyk_color_model_comps(gx_device * dev);
+typedef struct gs_context_state_s i_ctx_t;
+typedef struct gs_param_list_s gs_param_list;
+int custom_color_callback_put_params(gs_state * pgs, gs_param_list * plist);
+int custom_color_callback_get_params(gs_state * pgs, gs_param_list * plist);
+bool custom_color_callback_install_Separation(gs_color_space * pcs,
+ gs_state * pgs);
+bool custom_color_callback_install_DeviceN(gs_color_space * pcs, gs_state * pgs);
+int gx_remap_concrete_custom_color_Separation(const frac * pconc,
+ const gs_color_space * pcs, gx_device_color * pdc,
+ const gs_imager_state * pis, gx_device * dev, gs_color_select_t select);
+int gx_remap_concrete_custom_color_DeviceN(const frac * pconc,
+ const gs_color_space * pcs, gx_device_color * pdc,
+ const gs_imager_state * pis, gx_device * dev, gs_color_select_t select);
+typedef struct client_custom_color_params_s {
+ struct client_custom_color_procs_s * client_procs;
+ void * data;
+} client_custom_color_params_t;
+typedef struct client_color_space_data_s {
+ void (*client_adjust_cspace_count)(const gs_color_space *, int);
+} client_color_space__data_t;
+typedef struct client_custom_color_procs_s {
+ bool (* install_DeviceGray)(client_custom_color_params_t * pparams,
+ gs_color_space * pcs, gs_state * pgs);
+ int (* remap_DeviceGray)(client_custom_color_params_t * pparams,
+ const frac * pconc, const gs_color_space * pcs,
+ gx_device_color * pdc, const gs_imager_state * pis,
+ gx_device * dev, gs_color_select_t select);
+ bool (* install_DeviceRGB)(client_custom_color_params_t * pparams,
+ gs_color_space * pcs, gs_state * pgs);
+ int (* remap_DeviceRGB)(client_custom_color_params_t * pparams,
+ const frac * pconc, const gs_color_space * pcs,
+ gx_device_color * pdc, const gs_imager_state * pis,
+ gx_device * dev, gs_color_select_t select);
+ bool (* install_DeviceCMYK)(client_custom_color_params_t * pparams,
+ gs_color_space * pcs, gs_state * pgs);
+ int (* remap_DeviceCMYK)(client_custom_color_params_t * pparams,
+ const frac * pconc, const gs_color_space * pcs,
+ gx_device_color * pdc, const gs_imager_state * pis,
+ gx_device * dev, gs_color_select_t select);
+ bool (* install_Separation)(client_custom_color_params_t * pparams,
+ gs_color_space * pcs, gs_state * pgs);
+ int (* remap_Separation)(client_custom_color_params_t * pparams,
+ const frac * pconc, const gs_color_space * pcs,
+ gx_device_color * pdc, const gs_imager_state * pis,
+ gx_device * dev, gs_color_select_t select);
+ bool (* install_DeviceN)(client_custom_color_params_t * pparams,
+ gs_color_space * pcs, gs_state * pgs);
+ int (* remap_DeviceN)(client_custom_color_params_t * pparams,
+ const frac * pconc, const gs_color_space * pcs,
+ gx_device_color * pdc, const gs_imager_state * pis,
+ gx_device * dev, gs_color_select_t select);
+ bool (* install_CIEBasedA)(client_custom_color_params_t * pparams,
+ gs_color_space * pcs, gs_state * pgs);
+ int (* remap_CIEBasedA)(client_custom_color_params_t * pparams,
+ const gs_client_color * pc, const gs_color_space * pcs,
+ gx_device_color * pdc, const gs_imager_state * pis,
+ gx_device * dev, gs_color_select_t select);
+ bool (* install_CIEBasedABC)(client_custom_color_params_t * pparams,
+ gs_color_space * pcs, gs_state * pgs);
+ int (* remap_CIEBasedABC)(client_custom_color_params_t * pparams,
+ const gs_client_color * pc, const gs_color_space * pcs,
+ gx_device_color * pdc, const gs_imager_state * pis,
+ gx_device * dev, gs_color_select_t select);
+ bool (* install_CIEBasedDEF)(client_custom_color_params_t * pparams,
+ gs_color_space * pcs, gs_state * pgs);
+ int (* remap_CIEBasedDEF)(client_custom_color_params_t * pparams,
+ const gs_client_color * pc, const gs_color_space * pcs,
+ gx_device_color * pdc, const gs_imager_state * pis,
+ gx_device * dev, gs_color_select_t select);
+ bool (* install_CIEBasedDEFG)(client_custom_color_params_t * pparams,
+ gs_color_space * pcs, gs_state * pgs);
+ int (* remap_CIEBasedDEFG)(client_custom_color_params_t * pparams,
+ const gs_client_color * pc, const gs_color_space * pcs,
+ gx_device_color * pdc, const gs_imager_state * pis,
+ gx_device * dev, gs_color_select_t select);
+ bool (* install_ICCBased)(client_custom_color_params_t * pparams,
+ gs_color_space * pcs, gs_state * pgs);
+ int (* remap_ICCBased)(client_custom_color_params_t * pparams,
+ const gs_client_color * pc, const gs_color_space * pcs,
+ gx_device_color * pdc, const gs_imager_state * pis,
+ gx_device * dev, gs_color_select_t select);
+} client_custom_color_procs_t;
+typedef struct gx_fill_params_s gx_fill_params;
+typedef struct gx_stroke_params_s gx_stroke_params;
+typedef struct patch_fill_state_s patch_fill_state_t;
+typedef struct gx_image_enum_common_s gx_image_enum_common_t;
+typedef struct gs_pattern1_instance_s gs_pattern1_instance_t;
+typedef gx_device_color gx_drawing_color;
+typedef enum {
+ go_text,
+ go_graphics
+} graphics_object_type;
+typedef struct gs_fixed_edge_s {
+ gs_fixed_point start;
+ gs_fixed_point end;
+} gs_fixed_edge;
+typedef struct gs_get_bits_params_s gs_get_bits_params_t;
+typedef struct gx_device_anti_alias_info_s {
+ int text_bits;
+ int graphics_bits;
+} gx_device_anti_alias_info;
+typedef int32_t frac31;
+typedef struct gs_linear_color_edge_s {
+ gs_fixed_point start;
+ gs_fixed_point end;
+ const frac31 *c0, *c1;
+ fixed clip_x;
+} gs_linear_color_edge;
+typedef enum {
+ GX_CINFO_UNKNOWN_SEP_LIN = -1,
+ GX_CINFO_SEP_LIN_NONE = 0,
+ GX_CINFO_SEP_LIN
+} gx_color_enc_sep_lin_t;
+typedef enum {
+ GX_CINFO_POLARITY_UNKNOWN = -1,
+ GX_CINFO_POLARITY_SUBTRACTIVE = 0,
+ GX_CINFO_POLARITY_ADDITIVE
+} gx_color_polarity_t;
+typedef enum {
+ GX_CINFO_OPMODE_UNKNOWN = -1,
+ GX_CINFO_OPMODE_NOT = 0,
+ GX_CINFO_OPMODE
+} gx_cm_opmode_t;
+typedef struct gx_device_color_info_s {
+ int max_components;
+ int num_components;
+ gx_color_polarity_t polarity;
+ unsigned char depth;
+ unsigned char gray_index;
+ unsigned int max_gray;
+ unsigned int max_color;
+ unsigned int dither_grays;
+ unsigned int dither_colors;
+ gx_device_anti_alias_info anti_alias;
+ gx_color_enc_sep_lin_t separable_and_linear;
+ unsigned char comp_shift[(8 * 8)];
+ unsigned char comp_bits[(8 * 8)];
+ gx_color_index comp_mask[(8 * 8)];
+ const char * cm_name;
+ gx_cm_opmode_t opmode;
+ gx_color_index process_comps;
+ int black_component;
+} gx_device_color_info;
+typedef struct gx_device_procs_s gx_device_procs;
+typedef struct gx_page_device_procs_s {
+ int (*install)(gx_device *dev, gs_state *pgs);
+ int (*begin_page)(gx_device *dev, gs_state *pgs);
+ int (*end_page)(gx_device *dev, int reason, gs_state *pgs);
+} gx_page_device_procs;
+int gx_default_install(gx_device *dev, gs_state *pgs);
+int gx_default_begin_page(gx_device *dev, gs_state *pgs);
+int gx_default_end_page(gx_device *dev, int reason, gs_state *pgs);
+typedef struct gx_stroked_gradient_recognizer_s {
+ bool stroke_stored;
+ gs_fixed_point orig[4], adjusted[4];
+} gx_stroked_gradient_recognizer_t;
+typedef struct gx_device_cached_colors_s {
+ gx_color_index black, white;
+} gx_device_cached_colors_t;
+typedef enum {
+ pattern_manage__can_accum,
+ pattern_manage__start_accum,
+ pattern_manage__finish_accum,
+ pattern_manage__load,
+ pattern_manage__shading_area,
+ pattern_manage__is_cpath_accum,
+ pattern_manage__shfill_doesnt_need_path,
+ pattern_manage__handles_clip_path
+} pattern_manage_t;
+typedef struct gs_fill_attributes_s {
+ const gs_fixed_rect *clip;
+ bool swap_axes;
+ const gx_device_halftone *ht;
+ gs_logical_operation_t lop;
+ fixed ystart, yend;
+ patch_fill_state_t *pfs;
+} gs_fill_attributes;
+typedef struct gs_devn_params_s gs_devn_params;
+typedef struct gx_image_plane_s {
+ const unsigned char *data;
+ int data_x;
+ unsigned int raster;
+} gx_image_plane_t;
+int gx_image_data(gx_image_enum_common_t *info, const unsigned char **planes,
+ int data_x, unsigned int raster, int height);
+int gx_image_plane_data(gx_image_enum_common_t *info,
+ const gx_image_plane_t *planes, int height);
+int gx_image_plane_data_rows(gx_image_enum_common_t *info,
+ const gx_image_plane_t *planes, int height,
+ int *rows_used);
+int gx_image_flush(gx_image_enum_common_t *info);
+bool gx_image_planes_wanted(const gx_image_enum_common_t *info, unsigned char *wanted);
+int gx_image_end(gx_image_enum_common_t *info, bool draw_last);
+struct gx_device_procs_s { int (*open_device)(gx_device *dev); void (*get_initial_matrix)(gx_device *dev, gs_matrix *pmat); int (*sync_output)(gx_device *dev); int (*output_page)(gx_device *dev, int num_copies, int flush); int (*close_device)(gx_device *dev); gx_color_index (*map_rgb_color)(gx_device *dev, const gx_color_value cv[]); int (*map_color_rgb)(gx_device *dev, gx_color_index color, gx_color_value rgb[3]); int (*fill_rectangle)(gx_device *dev, int x, int y, int width, int height, gx_color_index color); int (*tile_rectangle)(gx_device *dev, const gx_tile_bitmap *tile, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y); int (*copy_mono)(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1); int (*copy_color)(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height); int (*obsolete_draw_line)(gx_device *dev, int x0, int y0, int x1, int y1, gx_color_index color); int (*get_bits)(gx_device *dev, int y, unsigned char *data, unsigned char **actual_data); int (*get_params)(gx_device *dev, gs_param_list *plist); int (*put_params)(gx_device *dev, gs_param_list *plist); gx_color_index (*map_cmyk_color)(gx_device *dev, const gx_color_value cv[]); const gx_xfont_procs *(*get_xfont_procs)(gx_device *dev); gx_device *(*get_xfont_device)(gx_device *dev); gx_color_index (*map_rgb_alpha_color)(gx_device *dev, gx_color_value red, gx_color_value green, gx_color_value blue, gx_color_value alpha); gx_device *(*get_page_device)(gx_device *dev); int (*get_alpha_bits)(gx_device *dev, graphics_object_type type); int (*copy_alpha)(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color, int depth); int (*get_band)(gx_device *dev, int y, int *band_start); int (*copy_rop)(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_tile_bitmap *texture, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop); int (*fill_path)(gx_device *dev, const gs_imager_state *pis, gx_path *ppath, const gx_fill_params *params, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath); int (*stroke_path)(gx_device *dev, const gs_imager_state *pis, gx_path *ppath, const gx_stroke_params *params, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath); int (*fill_mask)(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, const gx_drawing_color *pdcolor, int depth, gs_logical_operation_t lop, const gx_clip_path *pcpath); int (*fill_trapezoid)(gx_device *dev, const gs_fixed_edge *left, const gs_fixed_edge *right, fixed ybot, fixed ytop, bool swap_axes, const gx_drawing_color *pdcolor, gs_logical_operation_t lop); int (*fill_parallelogram)(gx_device *dev, fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by, const gx_drawing_color *pdcolor, gs_logical_operation_t lop); int (*fill_triangle)(gx_device *dev, fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by, const gx_drawing_color *pdcolor, gs_logical_operation_t lop); int (*draw_thin_line)(gx_device *dev, fixed fx0, fixed fy0, fixed fx1, fixed fy1, const gx_drawing_color *pdcolor, gs_logical_operation_t lop); int (*begin_image)(gx_device *dev, const gs_imager_state *pis, const gs_image_t *pim, gs_image_format_t format, const gs_int_rect *prect, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gx_image_enum_common_t **pinfo); int (*image_data)(gx_device *dev, gx_image_enum_common_t *info, const unsigned char **planes, int data_x, unsigned int raster, int height); int (*end_image)(gx_device *dev, gx_image_enum_common_t *info, bool draw_last); int (*strip_tile_rectangle)(gx_device *dev, const gx_strip_bitmap *tiles, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y); int (*strip_copy_rop)(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_strip_bitmap *textures, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop); void (*get_clipping_box)(gx_device *dev, gs_fixed_rect *pbox); int (*begin_typed_image)(gx_device *dev, const gs_imager_state *pis, const gs_matrix *pmat, const gs_image_common_t *pim, const gs_int_rect *prect, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gx_image_enum_common_t **pinfo); int (*get_bits_rectangle)(gx_device *dev, const gs_int_rect *prect, gs_get_bits_params_t *params, gs_int_rect **unread); int (*map_color_rgb_alpha)(gx_device *dev, gx_color_index color, gx_color_value rgba[4]); int (*create_compositor)(gx_device *dev, gx_device **pcdev, const gs_composite_t *pcte, gs_imager_state *pis, gs_memory_t *memory); int (*get_hardware_params)(gx_device *dev, gs_param_list *plist); int (*text_begin)(gx_device *dev, gs_imager_state *pis, const gs_text_params_t *text, gs_font *font, gx_path *path, const gx_device_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gs_text_enum_t **ppte); int (*finish_copydevice)(gx_device *dev, const gx_device *from_dev); int (*begin_transparency_group)(gx_device *dev, const gs_transparency_group_params_t *ptgp, const gs_rect *pbbox, gs_imager_state *pis, gs_transparency_state_t **ppts, gs_memory_t *mem); int (*end_transparency_group)(gx_device *dev, gs_imager_state *pis, gs_transparency_state_t **ppts); int (*begin_transparency_mask)(gx_device *dev, const gx_transparency_mask_params_t *ptmp, const gs_rect *pbbox, gs_imager_state *pis, gs_transparency_state_t **ppts, gs_memory_t *mem); int (*end_transparency_mask)(gx_device *dev, gs_transparency_mask_t **pptm); int (*discard_transparency_layer)(gx_device *dev, gs_transparency_state_t **ppts); const gx_cm_color_map_procs * ((*get_color_mapping_procs))(const gx_device * dev); int ((*get_color_comp_index))(gx_device * dev, const char * pname, int name_size, int component_type); gx_color_index ((*encode_color))(gx_device * dev, const gx_color_value colors[]); int ((*decode_color))(gx_device * dev, gx_color_index cindex, gx_color_value colors[]); int (*pattern_manage)(gx_device *pdev, gx_bitmap_id id, gs_pattern1_instance_t *pinst, pattern_manage_t function); int (*fill_rectangle_hl_color)(gx_device *dev, const gs_fixed_rect *rect, const gs_imager_state *pis, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath); int (*include_color_space)(gx_device *dev, gs_color_space *cspace, const unsigned char *res_name, int name_length); int (*fill_linear_color_scanline)(gx_device *dev, const gs_fill_attributes *fa, int i, int j, int w, const frac31 *c0, const int32_t *c0_f, const int32_t *cg_num, int32_t cg_den ); int (*fill_linear_color_trapezoid)(gx_device *dev, const gs_fill_attributes *fa, const gs_fixed_point *p0, const gs_fixed_point *p1, const gs_fixed_point *p2, const gs_fixed_point *p3, const frac31 *c0, const frac31 *c1, const frac31 *c2, const frac31 *c3); int (*fill_linear_color_triangle)(gx_device *dev, const gs_fill_attributes *fa, const gs_fixed_point *p0, const gs_fixed_point *p1, const gs_fixed_point *p2, const frac31 *c0, const frac31 *c1, const frac31 *c2); int (*update_spot_equivalent_colors)(gx_device *dev, const gs_state * pgs); gs_devn_params * (*ret_devn_params)(gx_device *dev); };
+int gx_copy_mono_unaligned(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1);
+int gx_copy_color_unaligned(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height);
+int gx_copy_alpha_unaligned(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color, int depth);
+struct gx_device_s {
+ int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs;
+};
+extern const gs_memory_struct_type_t st_device;
+void gx_device_finalize(void *ptr);
+gx_device *gx_device_enum_ptr(gx_device *);
+gx_device *gx_device_reloc_ptr(gx_device *, gc_state_t *);
+typedef gx_color_index (*dev_proc_map_rgb_color_t)(gx_device *dev, const gx_color_value cv[]);
+typedef int (*dev_proc_map_color_rgb_t)(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
+typedef struct gx_device_forward_s {
+ int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs; gx_device *target;
+} gx_device_forward;
+extern const gs_memory_struct_type_t st_device_forward;
+typedef struct gx_device_null_s gx_device_null;
+struct gx_device_null_s {
+ int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs; gx_device *target;
+};
+extern const gx_device_null gs_null_device;
+extern const gs_memory_struct_type_t st_device_null;
+void gx_device_init(gx_device * dev, const gx_device * proto,
+ gs_memory_t * mem, bool internal);
+void gs_make_null_device(gx_device_null *dev_null, gx_device *target,
+ gs_memory_t *mem);
+bool gs_is_null_device(gx_device *dev);
+void gx_device_set_target(gx_device_forward *fdev, gx_device *target);
+void gx_device_retain(gx_device *dev, bool retained);
+unsigned int gx_device_raster(const gx_device * dev, bool pad_to_word);
+int gx_device_adjust_resolution(gx_device * dev, int actual_width, int actual_height, int fit);
+void gx_device_set_margins(gx_device * dev, const float *margins ,
+ bool move_origin);
+void gx_device_set_width_height(gx_device * dev, int width, int height);
+void gx_device_set_resolution(gx_device * dev, floatp x_dpi, floatp y_dpi);
+void gx_device_set_media_size(gx_device * dev, floatp media_width, floatp media_height);
+void gx_set_device_only(gs_state *, gx_device *);
+int gs_closedevice(gx_device *);
+void gx_device_free_local(gx_device *);
+typedef struct gx_device_type_s {
+ gs_memory_type_ptr_t stype;
+ int (*initialize)(gx_device *);
+} gx_device_type;
+typedef struct gx_io_device_s gx_io_device;
+typedef struct gs_parsed_file_name_s {
+ gs_memory_t *memory;
+ gx_io_device *iodev;
+ const char *fname;
+ unsigned int len;
+} gs_parsed_file_name_t;
+int gs_parse_file_name(gs_parsed_file_name_t *, const char *, unsigned int);
+int gs_parse_real_file_name(gs_parsed_file_name_t *, const char *, unsigned int,
+ gs_memory_t *, client_name_t);
+int gs_terminate_file_name(gs_parsed_file_name_t *, gs_memory_t *,
+ client_name_t);
+void gs_free_file_name(gs_parsed_file_name_t *, client_name_t);
+typedef const char *gs_param_name;
+typedef enum {
+ gs_param_type_null, gs_param_type_bool, gs_param_type_int,
+ gs_param_type_long, gs_param_type_float,
+ gs_param_type_string, gs_param_type_name,
+ gs_param_type_int_array, gs_param_type_float_array,
+ gs_param_type_string_array, gs_param_type_name_array,
+ gs_param_type_dict, gs_param_type_dict_int_keys, gs_param_type_array
+} gs_param_type;
+typedef struct gs_param_int_array_s { const int *data; unsigned int size; bool persistent; } gs_param_int_array;
+typedef struct gs_param_float_array_s { const float *data; unsigned int size; bool persistent; } gs_param_float_array;
+typedef struct gs_param_string_array_s { const gs_param_string *data; unsigned int size; bool persistent; } gs_param_string_array;
+typedef struct gs_param_collection_s {
+ gs_param_list *list;
+ unsigned int size;
+} gs_param_collection;
+typedef gs_param_collection gs_param_dict;
+typedef gs_param_collection gs_param_array;
+extern const unsigned char gs_param_type_sizes[];
+extern const unsigned char gs_param_type_base_sizes[];
+typedef union gs_param_value_s {
+ bool b; int i; long l; float f; gs_param_string s; gs_param_string n; gs_param_int_array ia; gs_param_float_array fa; gs_param_string_array sa; gs_param_string_array na; gs_param_collection d;
+} gs_param_value;
+typedef struct gs_param_typed_value_s {
+ gs_param_value value;
+ gs_param_type type;
+} gs_param_typed_value;
+gs_ptr_type_t gs_param_typed_value_enum_ptrs(const gs_memory_t *mem, const void *ptr, unsigned int size, int index, enum_ptr_t *pep, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
+void gs_param_typed_value_reloc_ptrs(void *ptr, unsigned int size, const gs_memory_struct_type_t *pstype, gc_state_t *gcst);
+typedef enum {
+ gs_param_collection_dict_any = 0,
+ gs_param_collection_dict_int_keys = 1,
+ gs_param_collection_array = 2
+} gs_param_collection_type_t;
+typedef union gs_param_enumerator_s {
+ int intval;
+ long longval;
+ void *pvoid;
+ char *pchar;
+} gs_param_enumerator_t;
+typedef gs_param_string gs_param_key_t;
+typedef struct gs_param_list_procs_s {
+ int (*xmit_typed)(gs_param_list *, gs_param_name, gs_param_typed_value *);
+ int (*begin_xmit_collection)(gs_param_list *, gs_param_name, gs_param_dict *, gs_param_collection_type_t);
+ int (*end_xmit_collection)(gs_param_list *, gs_param_name, gs_param_dict *);
+ int (*next_key)(gs_param_list *, gs_param_enumerator_t *, gs_param_key_t *);
+ int (*request)(gs_param_list *, gs_param_name);
+ int (*requested)(const gs_param_list *, gs_param_name);
+ int (*get_policy)(gs_param_list *, gs_param_name);
+ int (*signal_error)(gs_param_list *, gs_param_name, int);
+ int (*commit)(gs_param_list *);
+} gs_param_list_procs;
+int param_read_requested_typed(gs_param_list *, gs_param_name,
+ gs_param_typed_value *);
+int param_read_null(gs_param_list *, gs_param_name);
+int param_write_null(gs_param_list *, gs_param_name);
+int param_read_bool(gs_param_list *, gs_param_name, bool *);
+int param_write_bool(gs_param_list *, gs_param_name, const bool *);
+int param_read_int(gs_param_list *, gs_param_name, int *);
+int param_write_int(gs_param_list *, gs_param_name, const int *);
+int param_read_long(gs_param_list *, gs_param_name, long *);
+int param_write_long(gs_param_list *, gs_param_name, const long *);
+int param_read_float(gs_param_list *, gs_param_name, float *);
+int param_write_float(gs_param_list *, gs_param_name, const float *);
+int param_read_string(gs_param_list *, gs_param_name, gs_param_string *);
+int param_write_string(gs_param_list *, gs_param_name,
+ const gs_param_string *);
+int param_read_name(gs_param_list *, gs_param_name, gs_param_string *);
+int param_write_name(gs_param_list *, gs_param_name,
+ const gs_param_string *);
+int param_read_int_array(gs_param_list *, gs_param_name,
+ gs_param_int_array *);
+int param_write_int_array(gs_param_list *, gs_param_name,
+ const gs_param_int_array *);
+int param_write_int_values(gs_param_list *, gs_param_name,
+ const int *, unsigned int, bool);
+int param_read_float_array(gs_param_list *, gs_param_name,
+ gs_param_float_array *);
+int param_write_float_array(gs_param_list *, gs_param_name,
+ const gs_param_float_array *);
+int param_write_float_values(gs_param_list *, gs_param_name,
+ const float *, unsigned int, bool);
+int param_read_string_array(gs_param_list *, gs_param_name,
+ gs_param_string_array *);
+int param_write_string_array(gs_param_list *, gs_param_name,
+ const gs_param_string_array *);
+int param_read_name_array(gs_param_list *, gs_param_name,
+ gs_param_string_array *);
+int param_write_name_array(gs_param_list *, gs_param_name,
+ const gs_param_string_array *);
+struct gs_param_list_s {
+ const gs_param_list_procs *procs; gs_memory_t *memory; bool persistent_keys;
+};
+void gs_param_list_set_persist_keys(gs_param_list *, bool);
+void param_init_enumerator(gs_param_enumerator_t * penum);
+typedef struct gs_param_item_s {
+ const char *key;
+ unsigned char type;
+ short offset;
+} gs_param_item_t;
+int gs_param_read_items(gs_param_list * plist, void *obj,
+ const gs_param_item_t * items);
+int gs_param_write_items(gs_param_list * plist, const void *obj,
+ const void *default_obj,
+ const gs_param_item_t * items);
+void gs_param_list_init(gs_param_list *, const gs_param_list_procs *,
+ gs_memory_t *);
+int param_coerce_typed(gs_param_typed_value * pvalue,
+ gs_param_type req_type, gs_memory_t * mem);
+int gs_param_request_default(gs_param_list *, gs_param_name);
+int gs_param_requested_default(const gs_param_list *, gs_param_name);
+typedef struct gs_c_param_s gs_c_param;
+typedef struct gs_c_param_list_s {
+ const gs_param_list_procs *procs; gs_memory_t *memory; bool persistent_keys;
+ gs_c_param *head;
+ gs_param_list *target;
+ unsigned int count;
+ bool any_requested;
+ gs_param_collection_type_t coll_type;
+} gs_c_param_list;
+void gs_c_param_list_set_target(gs_c_param_list *, gs_param_list *);
+gs_c_param_list *gs_c_param_list_alloc(gs_memory_t *, client_name_t);
+void gs_c_param_list_write(gs_c_param_list *, gs_memory_t *);
+void gs_c_param_list_write_more(gs_c_param_list *);
+void gs_c_param_list_read(gs_c_param_list *);
+void gs_c_param_list_release(gs_c_param_list *);
+typedef struct {
+ void *dummy_;
+} gp_semaphore;
+unsigned int gp_semaphore_sizeof(void);
+int gp_semaphore_open(gp_semaphore * sema);
+int gp_semaphore_close(gp_semaphore * sema);
+int gp_semaphore_wait(gp_semaphore * sema);
+int gp_semaphore_signal(gp_semaphore * sema);
+typedef struct {
+ void *dummy_;
+} gp_monitor;
+unsigned int gp_monitor_sizeof(void);
+int gp_monitor_open(gp_monitor * mon);
+int gp_monitor_close(gp_monitor * mon);
+int gp_monitor_enter(gp_monitor * mon);
+int gp_monitor_leave(gp_monitor * mon);
+typedef void (*gp_thread_creation_callback_t) (void *);
+int gp_create_thread(gp_thread_creation_callback_t, void *);
+typedef struct gx_semaphore_s {
+ gs_memory_t *memory;
+ gp_semaphore native;
+} gx_semaphore_t;
+gx_semaphore_t *
+ gx_semaphore_alloc(
+ gs_memory_t * memory
+ );
+void
+ gx_semaphore_free(
+ gx_semaphore_t * sema
+ );
+typedef struct gx_monitor_s {
+ gs_memory_t *memory;
+ gp_monitor native;
+} gx_monitor_t;
+gx_monitor_t *
+ gx_monitor_alloc(
+ gs_memory_t * memory
+ );
+void
+ gx_monitor_free(
+ gx_monitor_t * mon
+ );
+typedef struct gs_malloc_block_s gs_malloc_block_t;
+typedef struct gs_malloc_memory_s {
+ gs_memory_t *stable_memory; gs_memory_procs_t procs; gs_lib_ctx_t *gs_lib_ctx; pl_mem_node_t *head; gs_memory_t *non_gc_memory;
+ gs_malloc_block_t *allocated;
+ long limit;
+ long used;
+ long max_used;
+ gx_monitor_t *monitor;
+} gs_malloc_memory_t;
+gs_malloc_memory_t *gs_malloc_memory_init(void);
+gs_memory_t * gs_malloc_init(const gs_memory_t *parent);
+void gs_malloc_release(gs_memory_t *mem);
+int gs_malloc_wrap(gs_memory_t **wrapped, gs_malloc_memory_t *contents);
+gs_malloc_memory_t *gs_malloc_wrapped_contents(gs_memory_t *wrapped);
+gs_malloc_memory_t *gs_malloc_unwrap(gs_memory_t *wrapped);
+int gx_default_open_device(gx_device *dev);
+void gx_default_get_initial_matrix(gx_device *dev, gs_matrix *pmat);
+void gx_upright_get_initial_matrix(gx_device *dev, gs_matrix *pmat);
+int gx_default_sync_output(gx_device *dev);
+int gx_default_output_page(gx_device *dev, int num_copies, int flush);
+int gx_default_close_device(gx_device *dev);
+gx_color_index gx_default_w_b_map_rgb_color(gx_device *dev, const gx_color_value cv[]);
+int gx_default_w_b_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
+int gx_default_tile_rectangle(gx_device *dev, const gx_tile_bitmap *tile, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y);
+int gx_default_copy_mono(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1);
+int gx_default_copy_color(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height);
+int gx_default_draw_line(gx_device *dev, int x0, int y0, int x1, int y1, gx_color_index color);
+int gx_no_get_bits(gx_device *dev, int y, unsigned char *data, unsigned char **actual_data);
+int gx_default_get_bits(gx_device *dev, int y, unsigned char *data, unsigned char **actual_data);
+int gx_default_get_params(gx_device *dev, gs_param_list *plist);
+int gx_default_put_params(gx_device *dev, gs_param_list *plist);
+gx_color_index gx_default_map_cmyk_color(gx_device *dev, const gx_color_value cv[]);
+const gx_xfont_procs *gx_default_get_xfont_procs(gx_device *dev);
+gx_device *gx_default_get_xfont_device(gx_device *dev);
+gx_color_index gx_default_map_rgb_alpha_color(gx_device *dev, gx_color_value red, gx_color_value green, gx_color_value blue, gx_color_value alpha);
+gx_device *gx_default_get_page_device(gx_device *dev);
+gx_device *gx_page_device_get_page_device(gx_device *dev);
+int gx_default_get_alpha_bits(gx_device *dev, graphics_object_type type);
+int gx_no_copy_alpha(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color, int depth);
+int gx_default_copy_alpha(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color, int depth);
+int gx_default_get_band(gx_device *dev, int y, int *band_start);
+int gx_no_copy_rop(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_tile_bitmap *texture, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop);
+int gx_default_copy_rop(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_tile_bitmap *texture, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop);
+int gx_default_fill_path(gx_device *dev, const gs_imager_state *pis, gx_path *ppath, const gx_fill_params *params, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath);
+int gx_default_stroke_path(gx_device *dev, const gs_imager_state *pis, gx_path *ppath, const gx_stroke_params *params, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath);
+int gx_default_fill_mask(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, const gx_drawing_color *pdcolor, int depth, gs_logical_operation_t lop, const gx_clip_path *pcpath);
+int gx_default_fill_trapezoid(gx_device *dev, const gs_fixed_edge *left, const gs_fixed_edge *right, fixed ybot, fixed ytop, bool swap_axes, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
+int gx_default_fill_parallelogram(gx_device *dev, fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
+int gx_default_fill_triangle(gx_device *dev, fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
+int gx_default_draw_thin_line(gx_device *dev, fixed fx0, fixed fy0, fixed fx1, fixed fy1, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
+int gx_default_begin_image(gx_device *dev, const gs_imager_state *pis, const gs_image_t *pim, gs_image_format_t format, const gs_int_rect *prect, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gx_image_enum_common_t **pinfo);
+int gx_default_image_data(gx_device *dev, gx_image_enum_common_t *info, const unsigned char **planes, int data_x, unsigned int raster, int height);
+int gx_default_end_image(gx_device *dev, gx_image_enum_common_t *info, bool draw_last);
+int gx_default_strip_tile_rectangle(gx_device *dev, const gx_strip_bitmap *tiles, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y);
+int gx_no_strip_copy_rop(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_strip_bitmap *textures, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop);
+int gx_default_strip_copy_rop(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_strip_bitmap *textures, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop);
+void gx_default_get_clipping_box(gx_device *dev, gs_fixed_rect *pbox);
+void gx_get_largest_clipping_box(gx_device *dev, gs_fixed_rect *pbox);
+int gx_default_begin_typed_image(gx_device *dev, const gs_imager_state *pis, const gs_matrix *pmat, const gs_image_common_t *pim, const gs_int_rect *prect, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gx_image_enum_common_t **pinfo);
+int gx_no_get_bits_rectangle(gx_device *dev, const gs_int_rect *prect, gs_get_bits_params_t *params, gs_int_rect **unread);
+int gx_default_get_bits_rectangle(gx_device *dev, const gs_int_rect *prect, gs_get_bits_params_t *params, gs_int_rect **unread);
+int gx_default_map_color_rgb_alpha(gx_device *dev, gx_color_index color, gx_color_value rgba[4]);
+int gx_no_create_compositor(gx_device *dev, gx_device **pcdev, const gs_composite_t *pcte, gs_imager_state *pis, gs_memory_t *memory);
+int gx_default_create_compositor(gx_device *dev, gx_device **pcdev, const gs_composite_t *pcte, gs_imager_state *pis, gs_memory_t *memory);
+int gx_null_create_compositor(gx_device *dev, gx_device **pcdev, const gs_composite_t *pcte, gs_imager_state *pis, gs_memory_t *memory);
+int gx_default_get_hardware_params(gx_device *dev, gs_param_list *plist);
+int gx_default_text_begin(gx_device *dev, gs_imager_state *pis, const gs_text_params_t *text, gs_font *font, gx_path *path, const gx_device_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gs_text_enum_t **ppte);
+int gx_default_finish_copydevice(gx_device *dev, const gx_device *from_dev);
+int gx_default_pattern_manage(gx_device *pdev, gx_bitmap_id id, gs_pattern1_instance_t *pinst, pattern_manage_t function);
+int gx_default_fill_rectangle_hl_color(gx_device *dev, const gs_fixed_rect *rect, const gs_imager_state *pis, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath);
+int gx_default_include_color_space(gx_device *dev, gs_color_space *cspace, const unsigned char *res_name, int name_length);
+int gx_default_fill_linear_color_scanline(gx_device *dev, const gs_fill_attributes *fa, int i, int j, int w, const frac31 *c0, const int32_t *c0_f, const int32_t *cg_num, int32_t cg_den );
+int gx_default_fill_linear_color_trapezoid(gx_device *dev, const gs_fill_attributes *fa, const gs_fixed_point *p0, const gs_fixed_point *p1, const gs_fixed_point *p2, const gs_fixed_point *p3, const frac31 *c0, const frac31 *c1, const frac31 *c2, const frac31 *c3);
+int gx_default_fill_linear_color_triangle(gx_device *dev, const gs_fill_attributes *fa, const gs_fixed_point *p0, const gs_fixed_point *p1, const gs_fixed_point *p2, const frac31 *c0, const frac31 *c1, const frac31 *c2);
+int gx_default_update_spot_equivalent_colors(gx_device *dev, const gs_state * pgs);
+gs_devn_params * gx_default_ret_devn_params(gx_device *dev);
+gx_color_index gx_default_b_w_map_rgb_color(gx_device *dev, const gx_color_value cv[]);
+int gx_default_b_w_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
+gx_color_index gx_default_gray_map_rgb_color(gx_device *dev, const gx_color_value cv[]);
+int gx_default_gray_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
+int gx_default_rgb_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
+gx_color_index gx_default_rgb_map_rgb_color(gx_device *dev, const gx_color_value cv[]);
+gx_color_index cmyk_1bit_map_cmyk_color(gx_device *dev, const gx_color_value cv[]);
+int cmyk_1bit_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
+int (cmyk_1bit_map_color_cmyk)(gx_device * dev, gx_color_index cindex, gx_color_value colors[]);
+gx_color_index cmyk_8bit_map_cmyk_color(gx_device *dev, const gx_color_value cv[]);
+int cmyk_8bit_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
+int (cmyk_8bit_map_color_cmyk)(gx_device * dev, gx_color_index cindex, gx_color_value colors[]);
+gx_color_index (gx_default_8bit_map_gray_color)(gx_device * dev, const gx_color_value colors[]);
+int (gx_default_8bit_map_color_gray)(gx_device * dev, gx_color_index cindex, gx_color_value colors[]);
+int gx_forward_close_device(gx_device *dev);
+void gx_forward_get_initial_matrix(gx_device *dev, gs_matrix *pmat);
+int gx_forward_sync_output(gx_device *dev);
+int gx_forward_output_page(gx_device *dev, int num_copies, int flush);
+gx_color_index gx_forward_map_rgb_color(gx_device *dev, const gx_color_value cv[]);
+int gx_forward_map_color_rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
+int gx_forward_fill_rectangle(gx_device *dev, int x, int y, int width, int height, gx_color_index color);
+int gx_forward_tile_rectangle(gx_device *dev, const gx_tile_bitmap *tile, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y);
+int gx_forward_copy_mono(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1);
+int gx_forward_copy_color(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height);
+int gx_forward_get_bits(gx_device *dev, int y, unsigned char *data, unsigned char **actual_data);
+int gx_forward_get_params(gx_device *dev, gs_param_list *plist);
+int gx_forward_put_params(gx_device *dev, gs_param_list *plist);
+gx_color_index gx_forward_map_cmyk_color(gx_device *dev, const gx_color_value cv[]);
+const gx_xfont_procs *gx_forward_get_xfont_procs(gx_device *dev);
+gx_device *gx_forward_get_xfont_device(gx_device *dev);
+gx_color_index gx_forward_map_rgb_alpha_color(gx_device *dev, gx_color_value red, gx_color_value green, gx_color_value blue, gx_color_value alpha);
+gx_device *gx_forward_get_page_device(gx_device *dev);
+int gx_forward_copy_alpha(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, gx_color_index color, int depth);
+int gx_forward_get_band(gx_device *dev, int y, int *band_start);
+int gx_forward_copy_rop(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_tile_bitmap *texture, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop);
+int gx_forward_fill_path(gx_device *dev, const gs_imager_state *pis, gx_path *ppath, const gx_fill_params *params, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath);
+int gx_forward_stroke_path(gx_device *dev, const gs_imager_state *pis, gx_path *ppath, const gx_stroke_params *params, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath);
+int gx_forward_fill_mask(gx_device *dev, const unsigned char *data, int data_x, int raster, gx_bitmap_id id, int x, int y, int width, int height, const gx_drawing_color *pdcolor, int depth, gs_logical_operation_t lop, const gx_clip_path *pcpath);
+int gx_forward_fill_trapezoid(gx_device *dev, const gs_fixed_edge *left, const gs_fixed_edge *right, fixed ybot, fixed ytop, bool swap_axes, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
+int gx_forward_fill_parallelogram(gx_device *dev, fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
+int gx_forward_fill_triangle(gx_device *dev, fixed px, fixed py, fixed ax, fixed ay, fixed bx, fixed by, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
+int gx_forward_draw_thin_line(gx_device *dev, fixed fx0, fixed fy0, fixed fx1, fixed fy1, const gx_drawing_color *pdcolor, gs_logical_operation_t lop);
+int gx_forward_begin_image(gx_device *dev, const gs_imager_state *pis, const gs_image_t *pim, gs_image_format_t format, const gs_int_rect *prect, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gx_image_enum_common_t **pinfo);
+int gx_forward_strip_tile_rectangle(gx_device *dev, const gx_strip_bitmap *tiles, int x, int y, int width, int height, gx_color_index color0, gx_color_index color1, int phase_x, int phase_y);
+int gx_forward_strip_copy_rop(gx_device *dev, const unsigned char *sdata, int sourcex, unsigned int sraster, gx_bitmap_id id, const gx_color_index *scolors, const gx_strip_bitmap *textures, const gx_color_index *tcolors, int x, int y, int width, int height, int phase_x, int phase_y, gs_logical_operation_t lop);
+void gx_forward_get_clipping_box(gx_device *dev, gs_fixed_rect *pbox);
+int gx_forward_begin_typed_image(gx_device *dev, const gs_imager_state *pis, const gs_matrix *pmat, const gs_image_common_t *pim, const gs_int_rect *prect, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gx_image_enum_common_t **pinfo);
+int gx_forward_get_bits_rectangle(gx_device *dev, const gs_int_rect *prect, gs_get_bits_params_t *params, gs_int_rect **unread);
+int gx_forward_map_color_rgb_alpha(gx_device *dev, gx_color_index color, gx_color_value rgba[4]);
+int gx_forward_get_hardware_params(gx_device *dev, gs_param_list *plist);
+int gx_forward_text_begin(gx_device *dev, gs_imager_state *pis, const gs_text_params_t *text, gs_font *font, gx_path *path, const gx_device_color *pdcolor, const gx_clip_path *pcpath, gs_memory_t *memory, gs_text_enum_t **ppte);
+const gx_cm_color_map_procs * (gx_forward_get_color_mapping_procs)(const gx_device * dev);
+int (gx_forward_get_color_comp_index)(gx_device * dev, const char * pname, int name_size, int component_type);
+gx_color_index (gx_forward_encode_color)(gx_device * dev, const gx_color_value colors[]);
+int (gx_forward_decode_color)(gx_device * dev, gx_color_index cindex, gx_color_value colors[]);
+int gx_forward_pattern_manage(gx_device *pdev, gx_bitmap_id id, gs_pattern1_instance_t *pinst, pattern_manage_t function);
+int gx_forward_fill_rectangle_hl_color(gx_device *dev, const gs_fixed_rect *rect, const gs_imager_state *pis, const gx_drawing_color *pdcolor, const gx_clip_path *pcpath);
+int gx_forward_include_color_space(gx_device *dev, gs_color_space *cspace, const unsigned char *res_name, int name_length);
+int gx_forward_fill_linear_color_scanline(gx_device *dev, const gs_fill_attributes *fa, int i, int j, int w, const frac31 *c0, const int32_t *c0_f, const int32_t *cg_num, int32_t cg_den );
+int gx_forward_fill_linear_color_trapezoid(gx_device *dev, const gs_fill_attributes *fa, const gs_fixed_point *p0, const gs_fixed_point *p1, const gs_fixed_point *p2, const gs_fixed_point *p3, const frac31 *c0, const frac31 *c1, const frac31 *c2, const frac31 *c3);
+int gx_forward_fill_linear_color_triangle(gx_device *dev, const gs_fill_attributes *fa, const gs_fixed_point *p0, const gs_fixed_point *p1, const gs_fixed_point *p2, const frac31 *c0, const frac31 *c1, const frac31 *c2);
+int gx_forward_update_spot_equivalent_colors(gx_device *dev, const gs_state * pgs);
+gs_devn_params * gx_forward_ret_devn_params(gx_device *dev);
+void gx_device_set_procs(gx_device *);
+void gx_device_fill_in_procs(gx_device *);
+void gx_device_forward_fill_in_procs(gx_device_forward *);
+void gx_device_forward_color_procs(gx_device_forward *);
+void check_device_separable(gx_device * dev);
+void set_linear_color_bits_mask_shift(gx_device * dev);
+void gx_device_copy_color_procs(gx_device *dev, const gx_device *target);
+gx_color_index gx_device_black(gx_device *dev);
+gx_color_index gx_device_white(gx_device *dev);
+void gx_device_decache_colors(gx_device *dev);
+void gx_device_copy_color_params(gx_device *dev, const gx_device *target);
+void gx_device_copy_params(gx_device *dev, const gx_device *target);
+int gx_parse_output_file_name(gs_parsed_file_name_t *pfn,
+ const char **pfmt, const char *fname,
+ unsigned int len);
+int gx_device_open_output_file(const gx_device * dev, char *fname,
+ bool binary, bool positionable,
+ FILE ** pfile);
+int gx_device_close_output_file(const gx_device * dev, const char *fname,
+ FILE *file);
+int gx_finish_output_page(gx_device *dev, int num_copies, int flush);
+typedef struct gdev_input_media_s {
+ float PageSize[4];
+ const char *MediaColor;
+ float MediaWeight;
+ const char *MediaType;
+} gdev_input_media_t;
+extern const gdev_input_media_t gdev_input_media_default;
+void gdev_input_media_init(gdev_input_media_t * pim);
+int gdev_begin_input_media(gs_param_list * mlist, gs_param_dict * pdict,
+ int count);
+int gdev_write_input_page_size(int index, gs_param_dict * pdict,
+ floatp width_points, floatp height_points);
+int gdev_write_input_media(int index, gs_param_dict * pdict,
+ const gdev_input_media_t * pim);
+int gdev_end_input_media(gs_param_list * mlist, gs_param_dict * pdict);
+typedef struct gdev_output_media_s {
+ const char *OutputType;
+} gdev_output_media_t;
+extern const gdev_output_media_t gdev_output_media_default;
+int gdev_begin_output_media(gs_param_list * mlist, gs_param_dict * pdict,
+ int count);
+int gdev_write_output_media(int index, gs_param_dict * pdict,
+ const gdev_output_media_t * pom);
+int gdev_end_output_media(gs_param_list * mlist, gs_param_dict * pdict);
+void gx_device_request_leadingedge(gx_device *dev, int le_req);
+typedef struct gx_render_plane_s {
+ int depth;
+ int shift;
+ int index;
+} gx_render_plane_t;
+int gx_render_plane_init(gx_render_plane_t *render_plane,
+ const gx_device *dev, int index);
+typedef struct gx_device_memory_s gx_device_memory;
+struct gx_device_memory_s {
+ int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs; gx_device *target;
+ unsigned int raster;
+ unsigned char *base;
+ gs_memory_t *bitmap_memory;
+ bool foreign_bits;
+ gs_memory_t *line_pointer_memory;
+ bool foreign_line_pointers;
+ int num_planes;
+ gx_render_plane_t planes[(8 * 8)];
+ gs_matrix initial_matrix;
+ unsigned char **line_ptrs;
+ gs_const_string palette;
+ struct _c24 {
+ gx_color_index rgb;
+ bits32 rgbr, gbrg, brgb;
+ } color24;
+ struct _c40 {
+ gx_color_index abcde;
+ bits32 abcd, bcde, cdea, deab, eabc;
+ } color40;
+ struct _c48 {
+ gx_color_index abcdef;
+ bits32 abcd, cdef, efab;
+ } color48;
+ struct _c56 {
+ gx_color_index abcdefg;
+ bits32 abcd, bcde, cdef, defg, efga, fgab, gabc;
+ } color56;
+ struct _c64 {
+ gx_color_index abcdefgh;
+ bits32 abcd, efgh;
+ } color64;
+ gs_log2_scale_point log2_scale;
+ int log2_alpha_bits;
+ int mapped_x;
+ int mapped_y;
+ int mapped_height;
+ int mapped_start;
+ gx_color_index save_color;
+ int plane_depth;
+ int band_y;
+};
+extern const gs_memory_struct_type_t st_device_memory;
+int gdev_mem_bits_size(const gx_device_memory *mdev, int width,
+ int height, unsigned long *size);
+unsigned long gdev_mem_line_ptrs_size(const gx_device_memory *mdev, int width,
+ int height);
+int gdev_mem_data_size(const gx_device_memory *mdev, int width,
+ int height, unsigned long *size);
+int gdev_mem_max_height(const gx_device_memory * dev, int width, unsigned long size,
+ bool page_uses_transparency);
+const gx_device_memory *gdev_mem_device_for_bits(int);
+const gx_device_memory *gdev_mem_word_device_for_bits(int);
+void gs_make_mem_mono_device(gx_device_memory * mdev, gs_memory_t * mem,
+ gx_device * target);
+void gs_make_mem_device(gx_device_memory * mdev,
+ const gx_device_memory * mdproto,
+ gs_memory_t * mem, int page_device,
+ gx_device * target);
+void gs_make_mem_abuf_device(gx_device_memory * adev, gs_memory_t * mem,
+ gx_device * target,
+ const gs_log2_scale_point * pscale,
+ int alpha_bits, int mapped_x);
+void gs_make_mem_alpha_device(gx_device_memory * adev, gs_memory_t * mem,
+ gx_device * target, int alpha_bits);
+int gdev_mem_open_scan_lines(gx_device_memory *mdev, int setup_height);
+int gdev_mem_set_line_ptrs(gx_device_memory *mdev,
+ unsigned char *base, int raster, unsigned char **line_ptrs,
+ int setup_height);
+void gdev_mem_mono_set_inverted(gx_device_memory * mdev, bool black_is_1);
+bool gs_device_is_memory(const gx_device *);
+bool gs_device_is_abuf(const gx_device *);
+typedef void *clist_file_ptr;
+struct clist_io_procs_s {
+ int (*fopen)(char fname[260], const char *fmode,
+ clist_file_ptr * pcf,
+ gs_memory_t * mem, gs_memory_t *data_mem,
+ bool ok_to_compress);
+ int (*fclose)(clist_file_ptr cf, const char *fname, bool delete);
+ int (*unlink)(const char *fname);
+ int (*fwrite_chars)(const void *data, unsigned int len, clist_file_ptr cf);
+ int (*fread_chars)(void *data, unsigned int len, clist_file_ptr cf);
+ int (*set_memory_warning)(clist_file_ptr cf, int bytes_left);
+ int (*ferror_code)(clist_file_ptr cf);
+ int64_t (*ftell)(clist_file_ptr cf);
+ void (*rewind)(clist_file_ptr cf, bool discard_data, const char *fname);
+ int (*fseek)(clist_file_ptr cf, int64_t offset, int mode, const char *fname);
+};
+typedef struct clist_io_procs_s clist_io_procs_t;
+extern const clist_io_procs_t *clist_io_procs_file_global;
+extern const clist_io_procs_t *clist_io_procs_memory_global;
+typedef struct gx_band_params_s {
+ bool page_uses_transparency;
+ int BandWidth;
+ int BandHeight;
+ long BandBufferSpace;
+} gx_band_params_t;
+typedef struct gx_colors_used_s {
+ gx_color_index or;
+ bool slow_rop;
+} gx_colors_used_t;
+typedef struct gx_band_page_info_s {
+ char cfname[260];
+ clist_file_ptr cfile;
+ char bfname[260];
+ clist_file_ptr bfile;
+ const clist_io_procs_t *io_procs;
+ unsigned int tile_cache_size;
+ int64_t bfile_end_pos;
+ gx_band_params_t band_params;
+ int scan_lines_per_colors_used;
+ gx_colors_used_t band_colors_used[50];
+} gx_band_page_info_t;
+typedef struct gx_cached_bits_head_s {
+ unsigned int size;
+ unsigned int depth;
+} gx_cached_bits_head;
+typedef struct gx_cached_bits_s {
+ gx_cached_bits_head head; unsigned short width, height, shift; unsigned short raster; gx_bitmap_id id;
+} gx_cached_bits;
+typedef struct gx_bits_cache_chunk_s gx_bits_cache_chunk;
+struct gx_bits_cache_chunk_s {
+ gx_bits_cache_chunk *next;
+ unsigned char *data;
+ unsigned int size;
+ unsigned int allocated;
+};
+typedef struct gx_bits_cache_s {
+ gx_bits_cache_chunk *chunks; unsigned int cnext; unsigned int bsize; unsigned int csize;
+} gx_bits_cache;
+void gx_bits_cache_init(gx_bits_cache *, gx_bits_cache_chunk *);
+void gx_bits_cache_chunk_init(gx_bits_cache_chunk *, unsigned char *, unsigned int);
+int gx_bits_cache_alloc(gx_bits_cache *, unsigned long, gx_cached_bits_head **);
+void gx_bits_cache_shorten(gx_bits_cache *, gx_cached_bits_head *,
+ unsigned int, gx_bits_cache_chunk *);
+void gx_bits_cache_free(gx_bits_cache *, gx_cached_bits_head *,
+ gx_bits_cache_chunk *);
+typedef struct gx_device_buf_space_s {
+ unsigned long bits;
+ unsigned long line_ptrs;
+ unsigned int raster;
+} gx_device_buf_space_t;
+typedef struct gx_band_complexity_s {
+ bool uses_color;
+ bool nontrivial_rops;
+} gx_band_complexity_t;
+typedef struct gx_device_buf_procs_s {
+ int (*create_buf_device)(gx_device **pbdev, gx_device *target, int y, const gx_render_plane_t *render_plane, gs_memory_t *mem, gx_band_complexity_t *band_complexity);
+ int (*size_buf_device)(gx_device_buf_space_t *space, gx_device *target, const gx_render_plane_t *render_plane, int height, bool for_band);
+ int (*setup_buf_device)(gx_device *bdev, unsigned char *buffer, int bytes_per_line, unsigned char **line_ptrs , int y, int setup_height, int full_height);
+ void (*destroy_buf_device)(gx_device *bdev);
+} gx_device_buf_procs_t;
+int gx_default_create_buf_device(gx_device **pbdev, gx_device *target, int y, const gx_render_plane_t *render_plane, gs_memory_t *mem, gx_band_complexity_t *band_complexity);
+int gx_default_size_buf_device(gx_device_buf_space_t *space, gx_device *target, const gx_render_plane_t *render_plane, int height, bool for_band);
+int gx_default_setup_buf_device(gx_device *bdev, unsigned char *buffer, int bytes_per_line, unsigned char **line_ptrs , int y, int setup_height, int full_height);
+void gx_default_destroy_buf_device(gx_device *bdev);
+typedef enum {
+ gs_cap_butt = 0,
+ gs_cap_round = 1,
+ gs_cap_square = 2,
+ gs_cap_triangle = 3,
+ gs_cap_unknown = 4
+} gs_line_cap;
+typedef enum {
+ gs_join_miter = 0,
+ gs_join_round = 1,
+ gs_join_bevel = 2,
+ gs_join_none = 3,
+ gs_join_triangle = 4,
+ gs_join_unknown = 5
+} gs_line_join;
+typedef struct gx_dash_params_s {
+ float *pattern;
+ unsigned int pattern_size;
+ float offset;
+ bool adapt;
+ float pattern_length;
+ bool init_ink_on;
+ int init_index;
+ float init_dist_left;
+} gx_dash_params;
+typedef struct gx_line_params_s {
+ float half_width;
+ gs_line_cap cap;
+ gs_line_join join;
+ int curve_join;
+ float miter_limit;
+ float miter_check;
+ float dot_length;
+ bool dot_length_absolute;
+ gs_matrix dot_orientation;
+ gx_dash_params dash;
+} gx_line_params;
+int gx_set_miter_limit(gx_line_params *, floatp);
+int gx_set_dash(gx_dash_params *, const float *, unsigned int, floatp, gs_memory_t *);
+int gx_set_dot_length(gx_line_params *, floatp, bool);
+struct gs_matrix_fixed_s {
+ float xx, xy, yx, yy, tx, ty;
+ fixed tx_fixed, ty_fixed;
+ bool txy_fixed_valid;
+};
+typedef struct gs_matrix_fixed_s gs_matrix_fixed;
+int gs_matrix_fixed_from_matrix(gs_matrix_fixed *, const gs_matrix *);
+int gs_point_transform2fixed(const gs_matrix_fixed *, floatp, floatp,
+ gs_fixed_point *);
+int gs_distance_transform2fixed(const gs_matrix_fixed *, floatp, floatp,
+ gs_fixed_point *);
+int gs_point_transform2fixed_rounding(const gs_matrix_fixed * pmat,
+ floatp x, floatp y, gs_fixed_point * ppt);
+typedef struct {
+ long xx, xy, yx, yy;
+ int skewed;
+ int shift;
+ int max_bits;
+ fixed round;
+} fixed_coeff;
+fixed fixed_coeff_mult(fixed, long, const fixed_coeff *, int);
+typedef unsigned long gx_bitmap_format_t;
+typedef struct gx_device_clist_writer_s gx_device_clist_writer;
+typedef struct gs_composite_type_procs_s {
+ int (*create_default_compositor)(const gs_composite_t *pcte, gx_device **pcdev, gx_device *dev, gs_imager_state *pis, gs_memory_t *mem);
+ bool (*equal)(const gs_composite_t *pcte, const gs_composite_t *pcte2);
+ int (*write)(const gs_composite_t *pcte, unsigned char *data, unsigned int *psize, gx_device_clist_writer *cdev);
+ int (*read)(gs_composite_t **ppcte, const unsigned char *data, unsigned int size, gs_memory_t *mem);
+ int (*adjust_ctm)(gs_composite_t *pcte, int x0, int y0, gs_imager_state *pis);
+ int (*is_closing)(const gs_composite_t *this, gs_composite_t **pcte, gx_device *dev);
+ bool (*is_friendly)(const gs_composite_t *this, unsigned char cmd0, unsigned char cmd1);
+ int (*clist_compositor_write_update)(const gs_composite_t * pcte, gx_device * dev, gx_device ** pcdev, gs_imager_state * pis, gs_memory_t * mem);
+ int (*clist_compositor_read_update)(gs_composite_t * pcte, gx_device * cdev, gx_device * tdev, gs_imager_state * pis, gs_memory_t * mem);
+ int (*get_cropping)(const gs_composite_t * pcte, int *ry, int *rheight);
+} gs_composite_type_procs_t;
+typedef struct gs_composite_type_s {
+ unsigned char comp_id;
+ gs_composite_type_procs_t procs;
+} gs_composite_type_t;
+int gx_default_composite_clist_write_update(const gs_composite_t * pcte, gx_device * dev, gx_device ** pcdev, gs_imager_state * pis, gs_memory_t * mem);
+int gx_default_composite_adjust_ctm(gs_composite_t *pcte, int x0, int y0, gs_imager_state *pis);
+int gx_default_composite_is_closing(const gs_composite_t *this, gs_composite_t **pcte, gx_device *dev);
+bool gx_default_composite_is_friendly(const gs_composite_t *this, unsigned char cmd0, unsigned char cmd1);
+int gx_default_composite_clist_read_update(gs_composite_t * pcte, gx_device * cdev, gx_device * tdev, gs_imager_state * pis, gs_memory_t * mem);
+int gx_default_composite_get_cropping(const gs_composite_t * pcte, int *ry, int *rheight);
+struct gs_composite_s {
+ const gs_composite_type_t *type; gs_id id; bool idle; struct gs_composite_s *prev, *next;
+};
+typedef enum {
+ PDF14_PUSH_DEVICE,
+ PDF14_POP_DEVICE,
+ PDF14_BEGIN_TRANS_GROUP,
+ PDF14_END_TRANS_GROUP,
+ PDF14_BEGIN_TRANS_MASK,
+ PDF14_END_TRANS_MASK,
+ PDF14_SET_BLEND_PARAMS
+} pdf14_compositor_operations;
+typedef struct gs_transparency_source_s {
+ float alpha;
+} gs_transparency_source_t;
+struct gs_pdf14trans_params_s {
+ pdf14_compositor_operations pdf14_op;
+ int num_spot_colors;
+ int changed;
+ bool Isolated;
+ bool Knockout;
+ bool image_with_SMask;
+ gs_rect bbox;
+ gs_transparency_channel_selector_t csel;
+ gs_transparency_mask_subtype_t subtype;
+ int Background_components;
+ bool function_is_identity;
+ float Background[(8)];
+ float GrayBackground;
+ gs_function_t *transfer_function;
+ unsigned char transfer_fn[256];
+ gs_blend_mode_t blend_mode;
+ bool text_knockout;
+ gs_transparency_source_t opacity;
+ gs_transparency_source_t shape;
+ bool mask_is_image;
+ gs_matrix ctm;
+ bool replacing;
+ bool idle;
+ unsigned int mask_id;
+};
+typedef struct gs_pdf14trans_params_s gs_pdf14trans_params_t;
+typedef struct gs_pdf14trans_s {
+ const gs_composite_type_t *type; gs_id id; bool idle; struct gs_composite_s *prev, *next;
+ gs_pdf14trans_params_t params;
+} gs_pdf14trans_t;
+int gs_setblendmode(gs_state *, gs_blend_mode_t);
+gs_blend_mode_t gs_currentblendmode(const gs_state *);
+int gs_setopacityalpha(gs_state *, floatp);
+float gs_currentopacityalpha(const gs_state *);
+int gs_setshapealpha(gs_state *, floatp);
+float gs_currentshapealpha(const gs_state *);
+int gs_settextknockout(gs_state *, bool);
+bool gs_currenttextknockout(const gs_state *);
+gs_transparency_state_type_t
+ gs_current_transparency_type(const gs_state *pgs);
+int gs_push_pdf14trans_device(gs_state * pgs);
+int gs_pop_pdf14trans_device(gs_state * pgs);
+void gs_trans_group_params_init(gs_transparency_group_params_t *ptgp);
+int gs_begin_transparency_group(gs_state * pgs,
+ const gs_transparency_group_params_t *ptgp,
+ const gs_rect *pbbox);
+int gs_end_transparency_group(gs_state *pgs);
+void gs_trans_mask_params_init(gs_transparency_mask_params_t *ptmp,
+ gs_transparency_mask_subtype_t subtype);
+int gs_begin_transparency_mask(gs_state *pgs,
+ const gs_transparency_mask_params_t *ptmp,
+ const gs_rect *pbbox, bool mask_is_image);
+int gs_end_transparency_mask(gs_state *pgs,
+ gs_transparency_channel_selector_t csel);
+int gs_discard_transparency_layer(gs_state *pgs);
+int gx_begin_transparency_group(gs_imager_state * pis, gx_device * pdev,
+ const gs_pdf14trans_params_t * pparams);
+int gx_end_transparency_group(gs_imager_state * pis, gx_device * pdev);
+int gx_begin_transparency_mask(gs_imager_state * pis, gx_device * pdev,
+ const gs_pdf14trans_params_t * pparams);
+int gx_end_transparency_mask(gs_imager_state * pis, gx_device * pdev,
+ const gs_pdf14trans_params_t * pparams);
+int gx_discard_transparency_layer(gs_imager_state *pis);
+int gs_is_pdf14trans_compositor(const gs_composite_t * pct);
+typedef struct gs_halftone_s gs_halftone;
+typedef struct gx_transfer_s {
+ int red_component_num;
+ gx_transfer_map *red;
+ int green_component_num;
+ gx_transfer_map *green;
+ int blue_component_num;
+ gx_transfer_map *blue;
+ int gray_component_num;
+ gx_transfer_map *gray;
+} gx_transfer;
+typedef struct gs_devicen_color_map_s {
+ bool use_alt_cspace;
+ separation_type sep_type;
+ unsigned int num_components;
+ unsigned int num_colorants;
+ gs_id cspace_id;
+ int color_map[(8)];
+} gs_devicen_color_map;
+struct gs_imager_state_s {
+ gs_memory_t *memory; void *client_data; gx_line_params line_params; gs_matrix_fixed ctm; bool current_point_valid; gs_point current_point; gs_point subpath_start; bool clamp_coordinates; gs_logical_operation_t log_op; gx_color_value alpha; gs_blend_mode_t blend_mode; gs_transparency_source_t opacity, shape; gs_id soft_mask_id; bool text_knockout; unsigned int text_rendering_mode; gs_transparency_state_t *transparency_stack; bool overprint; int overprint_mode; int effective_overprint_mode; float flatness; gs_fixed_point fill_adjust; bool stroke_adjust; bool accurate_curves; bool have_pattern_streams; float smoothness; int renderingintent; const gx_color_map_procs * (*get_cmap_procs)(const gs_imager_state *, const gx_device *); gs_halftone *halftone; gs_int_point screen_phase[2]; gx_device_halftone *dev_ht; struct gs_cie_render_s *cie_render; bool cie_to_xyz; gx_transfer_map *black_generation; gx_transfer_map *undercolor_removal; gx_transfer set_transfer; gx_transfer_map *effective_transfer[(8 * 8)]; int object_tag; struct gx_cie_joint_caches_s *cie_joint_caches; const struct gx_color_map_procs_s *cmap_procs; gs_devicen_color_map color_component_map; struct gx_pattern_cache_s *pattern_cache; gs_color_space *devicergb_cs; gs_color_space *devicecmyk_cs;
+};
+int gs_imager_state_initialize(gs_imager_state * pis, gs_memory_t * mem);
+gs_imager_state *
+ gs_imager_state_copy(const gs_imager_state * pis, gs_memory_t * mem);
+void gs_imager_state_copied(gs_imager_state * pis);
+void gs_imager_state_pre_assign(gs_imager_state *to,
+ const gs_imager_state *from);
+void gs_imager_state_release(gs_imager_state * pis);
+int gs_currentscreenphase_pis(const gs_imager_state *, gs_int_point *, gs_color_select_t);
+typedef struct gx_saved_page_s {
+ gx_device device;
+ char dname[8 + 1];
+ gx_band_page_info_t info;
+ int num_copies;
+} gx_saved_page;
+typedef struct gx_placed_page_s {
+ gx_saved_page *page;
+ gs_int_point offset;
+} gx_placed_page;
+typedef struct {
+ unsigned long offset;
+} tile_hash;
+typedef struct {
+ gx_cached_bits_head head; unsigned short width, height, shift; unsigned short raster; gx_bitmap_id id;
+ unsigned char x_reps, y_reps;
+ unsigned short rep_shift;
+ unsigned short index;
+ unsigned short num_bands;
+} tile_slot;
+typedef struct cmd_prefix_s cmd_prefix;
+struct cmd_prefix_s {
+ cmd_prefix *next;
+ unsigned int size;
+ unsigned long id;
+};
+typedef struct cmd_list_s {
+ cmd_prefix *head, *tail;
+} cmd_list;
+extern const gs_imager_state clist_imager_state_initial;
+typedef struct gx_clist_state_s gx_clist_state;
+typedef struct gx_device_clist_common_s {
+ int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs; gx_device *target; gx_device_buf_procs_t buf_procs; gs_memory_t *bandlist_memory; unsigned char *data; unsigned int data_size; gx_band_params_t band_params; bool do_not_open_or_close_bandfiles; bool page_uses_transparency; gx_bits_cache_chunk chunk; gx_bits_cache bits; unsigned int tile_hash_mask; unsigned int tile_band_mask_size; tile_hash *tile_table; int ymin, ymax; gx_band_page_info_t page_info; int nbands;
+} gx_device_clist_common;
+typedef struct clist_writer_cropping_buffer_s clist_writer_cropping_buffer_t;
+struct clist_writer_cropping_buffer_s {
+ int cropping_min, cropping_max;
+ unsigned int mask_id, temp_mask_id;
+ clist_writer_cropping_buffer_t *next;
+};
+typedef struct clist_color_space_s {
+ unsigned char byte1;
+ gs_id id;
+ const gs_color_space *space;
+} clist_color_space_t;
+struct gx_device_clist_writer_s {
+ int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs; gx_device *target; gx_device_buf_procs_t buf_procs; gs_memory_t *bandlist_memory; unsigned char *data; unsigned int data_size; gx_band_params_t band_params; bool do_not_open_or_close_bandfiles; bool page_uses_transparency; gx_bits_cache_chunk chunk; gx_bits_cache bits; unsigned int tile_hash_mask; unsigned int tile_band_mask_size; tile_hash *tile_table; int ymin, ymax; gx_band_page_info_t page_info; int nbands;
+ int error_code;
+ gx_clist_state *states;
+ unsigned char *cbuf;
+ unsigned char *cnext;
+ unsigned char *cend;
+ cmd_list *ccl;
+ cmd_list band_range_list;
+ int band_range_min, band_range_max;
+ unsigned int tile_max_size;
+ unsigned int tile_max_count;
+ gx_strip_bitmap tile_params;
+ int tile_depth;
+ int tile_known_min, tile_known_max;
+ gs_imager_state imager_state;
+ float dash_pattern[11];
+ const gx_clip_path *clip_path;
+ gs_id clip_path_id;
+ clist_color_space_t color_space;
+ gs_id transfer_ids[4];
+ gs_id black_generation_id;
+ gs_id undercolor_removal_id;
+ gs_id device_halftone_id;
+ gs_id image_enum_id;
+ int error_is_retryable;
+ int permanent_error;
+ int driver_call_nesting;
+ int ignore_lo_mem_warnings;
+ int (*free_up_bandlist_memory)(gx_device *dev, bool flush_current);
+ int disable_mask;
+ gs_pattern1_instance_t *pinst;
+ int cropping_min, cropping_max;
+ int save_cropping_min, save_cropping_max;
+ int cropping_level;
+ clist_writer_cropping_buffer_t *cropping_stack;
+ unsigned long ins_count;
+ unsigned int mask_id_count;
+ unsigned int mask_id;
+ unsigned int temp_mask_id;
+};
+typedef struct clist_render_thread_control_s clist_render_thread_control_t;
+typedef struct gx_device_clist_reader_s {
+ int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs; gx_device *target; gx_device_buf_procs_t buf_procs; gs_memory_t *bandlist_memory; unsigned char *data; unsigned int data_size; gx_band_params_t band_params; bool do_not_open_or_close_bandfiles; bool page_uses_transparency; gx_bits_cache_chunk chunk; gx_bits_cache bits; unsigned int tile_hash_mask; unsigned int tile_band_mask_size; tile_hash *tile_table; int ymin, ymax; gx_band_page_info_t page_info; int nbands;
+ gx_render_plane_t yplane;
+ const gx_placed_page *pages;
+ int num_pages;
+ gx_band_complexity_t *band_complexity_array;
+ void *offset_map;
+ int num_render_threads;
+ clist_render_thread_control_t *render_threads;
+ unsigned char *main_thread_data;
+ int curr_render_thread;
+ int thread_lookahead_direction;
+} gx_device_clist_reader;
+union gx_device_clist_s {
+ gx_device_clist_common common;
+ gx_device_clist_reader reader;
+ gx_device_clist_writer writer;
+};
+typedef union gx_device_clist_s gx_device_clist;
+extern const gs_memory_struct_type_t st_device_clist;
+extern const gx_device_procs gs_clist_device_procs;
+void clist_init_io_procs(gx_device_clist *pclist_dev, bool in_memory);
+int clist_finish_page(gx_device * dev, bool flush);
+int clist_close_output_file(gx_device *dev);
+int clist_close_page_info(gx_band_page_info_t *ppi);
+void clist_compute_colors_used(gx_device_clist_writer *cldev);
+typedef struct gx_device_printer_s gx_device_printer;
+int clist_setup_params(gx_device *dev);
+int clist_render_rectangle(gx_device_clist *cdev,
+ const gs_int_rect *prect, gx_device *bdev,
+ const gx_render_plane_t *render_plane,
+ bool clear);
+gx_band_complexity_t *
+clist_get_band_complexity(gx_device *dev, int y);
+void gx_clist_reader_free_band_complexity_array(gx_device_clist *cldev);
+void
+clist_copy_band_complexity(gx_band_complexity_t *this, const gx_band_complexity_t *from);
+int clist_data_size(const gx_device_clist *cdev, int select);
+int clist_get_data(const gx_device_clist *cdev, int select, int offset, unsigned char *buf, int length);
+int clist_put_data(const gx_device_clist *cdev, int select, int offset, const unsigned char *buf, int length);
+int clist_render_init(gx_device_clist *dev);
+int
+clist_close_writer_and_init_reader(gx_device_clist *cldev);
+void
+clist_select_render_plane(gx_device *dev, int y, int height,
+ gx_render_plane_t *render_plane, int index);
+int clist_rasterize_lines(gx_device *dev, int y, int lineCount,
+ gx_device *bdev,
+ const gx_render_plane_t *render_plane,
+ int *pmy);
+int
+clist_enable_multi_thread_render(gx_device *dev);
+void
+clist_teardown_render_threads(gx_device *dev);
+typedef struct gdev_prn_start_render_params_s gdev_prn_start_render_params;
+typedef struct gx_page_queue_s gx_page_queue_t;
+typedef struct gdev_prn_space_params_s gdev_prn_space_params;
+typedef struct gx_printer_device_procs_s {
+ int (*print_page)(gx_device_printer *, FILE *);
+ int (*print_page_copies)(gx_device_printer *, FILE *, int);
+ gx_device_buf_procs_t buf_procs;
+ void (*get_space_params)(const gx_device_printer *, gdev_prn_space_params *);
+ int (*start_render_thread)(gdev_prn_start_render_params *);
+ int (*open_render_device)(gx_device_printer *);
+ int (*close_render_device)(gx_device_printer *);
+ int (*buffer_page)(gx_device_printer *, FILE *, int);
+} gx_printer_device_procs;
+typedef enum {
+ BandingAuto = 0,
+ BandingAlways,
+ BandingNever
+} gdev_prn_banding_type;
+struct gdev_prn_space_params_s {
+ long MaxBitmap;
+ long BufferSpace;
+ gx_band_params_t band;
+ bool params_are_read_only;
+ gdev_prn_banding_type banding_type;
+};
+struct gx_device_printer_s {
+ int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs;
+ unsigned char skip[(((sizeof(gx_device_memory)) > (sizeof(gx_device_clist))) ? (sizeof(gx_device_memory)) : (sizeof(gx_device_clist))) - sizeof(gx_device) + sizeof(double) ]; gx_printer_device_procs printer_procs; gdev_prn_space_params space_params; char fname[260]; bool OpenOutputFile; bool ReopenPerPage; bool page_uses_transparency; bool Duplex; int Duplex_set; bool file_is_new; FILE *file; long buffer_space; unsigned char *buf; gs_memory_t *buffer_memory; gs_memory_t *bandlist_memory; int (*free_up_bandlist_memory)(gx_device *dev, bool flush_current); gx_page_queue_t *page_queue; bool is_async_renderer; gx_device_printer *async_renderer; unsigned int clist_disable_mask; int num_render_threads_requested; gx_device_procs orig_procs;
+};
+extern const gs_memory_struct_type_t st_device_printer;
+typedef int (*dev_proc_print_page_t)(gx_device_printer *, FILE *);
+int gdev_prn_open(gx_device *dev);
+int gdev_prn_output_page(gx_device *dev, int num_copies, int flush);
+int gdev_prn_close(gx_device *dev);
+int gdev_prn_get_params(gx_device *dev, gs_param_list *plist);
+int gdev_prn_put_params(gx_device *dev, gs_param_list *plist);
+void gx_default_get_space_params(const gx_device_printer *, gdev_prn_space_params *);
+int gx_default_start_render_thread(gdev_prn_start_render_params *);
+int gx_default_open_render_device(gx_device_printer *);
+int gx_default_close_render_device(gx_device_printer *);
+int gx_default_buffer_page(gx_device_printer *, FILE *, int);
+extern const gx_device_procs prn_std_procs;
+int gdev_prn_open_printer_seekable(gx_device *dev, bool binary_mode,
+ bool seekable);
+int gdev_prn_open_printer(gx_device * dev, bool binary_mode);
+bool gdev_prn_file_is_new(const gx_device_printer *pdev);
+int gdev_prn_colors_used(gx_device *dev, int y, int height,
+ gx_colors_used_t *colors_used,
+ int *range_start);
+int gx_page_info_colors_used(const gx_device *dev,
+ const gx_band_page_info_t *page_info,
+ int y, int height,
+ gx_colors_used_t *colors_used,
+ int *range_start);
+int gdev_prn_render_rectangle(gx_device_printer *pdev,
+ const gs_int_rect *prect,
+ gx_device *target,
+ const gx_render_plane_t *render_plane,
+ bool clear);
+int gdev_prn_get_lines(gx_device_printer *pdev, int y, int height,
+ unsigned char *buffer, unsigned int bytes_per_line,
+ unsigned char **actual_buffer, unsigned int *actual_bytes_per_line,
+ const gx_render_plane_t *render_plane);
+int gdev_prn_get_bits(gx_device_printer *pdev, int y, unsigned char *buffer,
+ unsigned char **actual_buffer);
+int gdev_prn_copy_scan_lines(gx_device_printer *, int, unsigned char *, unsigned int);
+void gdev_prn_clear_trailing_bits(unsigned char *data, unsigned int raster, int height,
+ const gx_device *dev);
+int gdev_prn_close_printer(gx_device *);
+int gx_print_page_single_copy(gx_device_printer *, FILE *);
+int gx_default_print_page_copies(gx_device_printer *, FILE *, int);
+int gdev_prn_print_scan_lines(gx_device *);
+int gdev_prn_allocate_memory(gx_device *pdev,
+ gdev_prn_space_params *space,
+ int new_width, int new_height);
+int gdev_prn_reallocate_memory(gx_device *pdev,
+ gdev_prn_space_params *space,
+ int new_width, int new_height);
+int gdev_prn_free_memory(gx_device *pdev);
+typedef int (*create_buf_device_proc_t)(gx_device **pbdev, gx_device *target, int y, const gx_render_plane_t *render_plane, gs_memory_t *mem, gx_band_complexity_t *band_complexity);
+int gdev_create_buf_device(create_buf_device_proc_t cbd_proc,
+ gx_device **pbdev, gx_device *target, int y,
+ const gx_render_plane_t *render_plane,
+ gs_memory_t *mem, gx_band_complexity_t *band_complexity);
+int gdev_prn_initialize(gx_device *, const char *, int (*)(gx_device_printer *, FILE *));
+void gdev_prn_init_color(gx_device *, int, gx_color_index (*)(gx_device *dev, const gx_color_value cv[]), int (*)(gx_device *dev, gx_color_index color, gx_color_value rgb[3]));
+typedef long int wchar_t;
+typedef struct
+ {
+ int quot;
+ int rem;
+ } div_t;
+typedef struct
+ {
+ long int quot;
+ long int rem;
+ } ldiv_t;
+extern size_t __ctype_get_mb_cur_max (void) __attribute__ ((__nothrow__)) ;
+extern double atof (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern int atoi (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern long int atol (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__ extern long long int atoll (__const char *__nptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern double strtod (__const char *__restrict __nptr,
+ char **__restrict __endptr)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern long int strtol (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern unsigned long int strtoul (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern long long int strtoq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern unsigned long long int strtouq (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern long long int strtoll (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+__extension__
+extern unsigned long long int strtoull (__const char *__restrict __nptr,
+ char **__restrict __endptr, int __base)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern __inline double
+__attribute__ ((__nothrow__)) atof (__const char *__nptr)
+{
+ return strtod (__nptr, (char **) ((void *)0));
+}
+extern __inline int
+__attribute__ ((__nothrow__)) atoi (__const char *__nptr)
+{
+ return (int) strtol (__nptr, (char **) ((void *)0), 10);
+}
+extern __inline long int
+__attribute__ ((__nothrow__)) atol (__const char *__nptr)
+{
+ return strtol (__nptr, (char **) ((void *)0), 10);
+}
+__extension__ extern __inline long long int
+__attribute__ ((__nothrow__)) atoll (__const char *__nptr)
+{
+ return strtoll (__nptr, (char **) ((void *)0), 10);
+}
+extern char *l64a (long int __n) __attribute__ ((__nothrow__)) ;
+extern long int a64l (__const char *__s)
+ __attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1))) ;
+extern long int random (void) __attribute__ ((__nothrow__));
+extern void srandom (unsigned int __seed) __attribute__ ((__nothrow__));
+extern char *initstate (unsigned int __seed, char *__statebuf,
+ size_t __statelen) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern char *setstate (char *__statebuf) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+struct random_data
+ {
+ int32_t *fptr;
+ int32_t *rptr;
+ int32_t *state;
+ int rand_type;
+ int rand_deg;
+ int rand_sep;
+ int32_t *end_ptr;
+ };
+extern int random_r (struct random_data *__restrict __buf,
+ int32_t *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int srandom_r (unsigned int __seed, struct random_data *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int initstate_r (unsigned int __seed, char *__restrict __statebuf,
+ size_t __statelen,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 4)));
+extern int setstate_r (char *__restrict __statebuf,
+ struct random_data *__restrict __buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int rand (void) __attribute__ ((__nothrow__));
+extern void srand (unsigned int __seed) __attribute__ ((__nothrow__));
+extern int rand_r (unsigned int *__seed) __attribute__ ((__nothrow__));
+extern double drand48 (void) __attribute__ ((__nothrow__));
+extern double erand48 (unsigned short int __xsubi[3]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern long int lrand48 (void) __attribute__ ((__nothrow__));
+extern long int nrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern long int mrand48 (void) __attribute__ ((__nothrow__));
+extern long int jrand48 (unsigned short int __xsubi[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void srand48 (long int __seedval) __attribute__ ((__nothrow__));
+extern unsigned short int *seed48 (unsigned short int __seed16v[3])
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void lcong48 (unsigned short int __param[7]) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+struct drand48_data
+ {
+ unsigned short int __x[3];
+ unsigned short int __old_x[3];
+ unsigned short int __c;
+ unsigned short int __init;
+ unsigned long long int __a;
+ };
+extern int drand48_r (struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int erand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ double *__restrict __result) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int lrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int nrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int mrand48_r (struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int jrand48_r (unsigned short int __xsubi[3],
+ struct drand48_data *__restrict __buffer,
+ long int *__restrict __result)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int srand48_r (long int __seedval, struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int seed48_r (unsigned short int __seed16v[3],
+ struct drand48_data *__buffer) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern int lcong48_r (unsigned short int __param[7],
+ struct drand48_data *__buffer)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
+extern void *realloc (void *__ptr, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__warn_unused_result__));
+extern void free (void *__ptr) __attribute__ ((__nothrow__));
+extern void cfree (void *__ptr) __attribute__ ((__nothrow__));
+extern void *alloca (size_t __size) __attribute__ ((__nothrow__));
+extern void *valloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) ;
+extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern void abort (void) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern int atexit (void (*__func) (void)) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern void exit (int __status) __attribute__ ((__nothrow__)) __attribute__ ((__noreturn__));
+extern char *getenv (__const char *__name) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern char *__secure_getenv (__const char *__name)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int putenv (char *__string) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+extern int setenv (__const char *__name, __const char *__value, int __replace)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
+extern int unsetenv (__const char *__name) __attribute__ ((__nothrow__));
+extern int clearenv (void) __attribute__ ((__nothrow__));
+extern char *mktemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int mkstemp (char *__template) __attribute__ ((__nonnull__ (1))) ;
+extern int mkstemp64 (char *__template) __attribute__ ((__nonnull__ (1))) ;
+extern char *mkdtemp (char *__template) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int system (__const char *__command) ;
+extern char *realpath (__const char *__restrict __name,
+ char *__restrict __resolved) __attribute__ ((__nothrow__)) ;
+typedef int (*__compar_fn_t) (__const void *, __const void *);
+extern void *bsearch (__const void *__key, __const void *__base,
+ size_t __nmemb, size_t __size, __compar_fn_t __compar)
+ __attribute__ ((__nonnull__ (1, 2, 5))) ;
+extern void qsort (void *__base, size_t __nmemb, size_t __size,
+ __compar_fn_t __compar) __attribute__ ((__nonnull__ (1, 4)));
+extern int abs (int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern long int labs (long int __x) __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern div_t div (int __numer, int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern ldiv_t ldiv (long int __numer, long int __denom)
+ __attribute__ ((__nothrow__)) __attribute__ ((__const__)) ;
+extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *gcvt (double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+extern char *qecvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *qfcvt (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4))) ;
+extern char *qgcvt (long double __value, int __ndigit, char *__buf)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3))) ;
+extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt,
+ int *__restrict __sign, char *__restrict __buf,
+ size_t __len) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qecvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int qfcvt_r (long double __value, int __ndigit,
+ int *__restrict __decpt, int *__restrict __sign,
+ char *__restrict __buf, size_t __len)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (3, 4, 5)));
+extern int mblen (__const char *__s, size_t __n) __attribute__ ((__nothrow__)) ;
+extern int mbtowc (wchar_t *__restrict __pwc,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__)) ;
+extern int wctomb (char *__s, wchar_t __wchar) __attribute__ ((__nothrow__)) ;
+extern size_t mbstowcs (wchar_t *__restrict __pwcs,
+ __const char *__restrict __s, size_t __n) __attribute__ ((__nothrow__));
+extern size_t wcstombs (char *__restrict __s,
+ __const wchar_t *__restrict __pwcs, size_t __n)
+ __attribute__ ((__nothrow__));
+extern int rpmatch (__const char *__response) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1))) ;
+extern int posix_openpt (int __oflag) ;
+extern int getloadavg (double __loadavg[], int __nelem)
+ __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1)));
+typedef struct WImage WImage;
+typedef struct Rectangle Rectangle;
+typedef struct Point Point;
+struct Point {
+ int x;
+ int y;
+};
+struct Rectangle {
+ Point min;
+ Point max;
+};
+static Point ZP = { 0, 0 };
+static WImage* initwriteimage(FILE *f, Rectangle r, int ldepth);
+static int writeimageblock(WImage *w, unsigned char *data, int ndata);
+static int bytesperline(Rectangle, int);
+static int rgb2cmap(int, int, int);
+static long cmap2rgb(int);
+static gx_color_index inferno_rgb2cmap(gx_device *dev, const gx_color_value cv[]);
+static int inferno_cmap2rgb(gx_device *dev, gx_color_index color, gx_color_value rgb[3]);
+static int inferno_open(gx_device *dev);
+static int inferno_close(gx_device *dev);
+static int inferno_print_page(gx_device_printer *, FILE *);
+typedef struct inferno_device_s {
+ int params_size; const gx_device_procs *static_procs; const char *dname; gs_memory_t *memory; gs_memory_type_ptr_t stype; bool stype_is_dynamic; void (*finalize)(gx_device *); rc_header rc; bool retained; bool is_open; int max_fill_band; gx_device_color_info color_info; gx_device_cached_colors_t cached_colors; int width; int height; int LeadingEdge; float MediaSize[2]; float ImagingBBox[4]; bool ImagingBBox_set; float HWResolution[2]; float MarginsHWResolution[2]; float Margins[2]; float HWMargins[4]; long PageCount; long ShowpageCount; int NumCopies; bool NumCopies_set; bool IgnoreNumCopies; bool UseCIEColor; bool LockSafetyParams; long band_offset_x; long band_offset_y; gx_stroked_gradient_recognizer_t sgr; gx_page_device_procs page_procs; gx_device_procs procs;
+ unsigned char skip[(((sizeof(gx_device_memory)) > (sizeof(gx_device_clist))) ? (sizeof(gx_device_memory)) : (sizeof(gx_device_clist))) - sizeof(gx_device) + sizeof(double) ]; gx_printer_device_procs printer_procs; gdev_prn_space_params space_params; char fname[260]; bool OpenOutputFile; bool ReopenPerPage; bool page_uses_transparency; bool Duplex; int Duplex_set; bool file_is_new; FILE *file; long buffer_space; unsigned char *buf; gs_memory_t *buffer_memory; gs_memory_t *bandlist_memory; int (*free_up_bandlist_memory)(gx_device *dev, bool flush_current); gx_page_queue_t *page_queue; bool is_async_renderer; gx_device_printer *async_renderer; unsigned int clist_disable_mask; int num_render_threads_requested; gx_device_procs orig_procs;
+ int ldepth;
+ int lastldepth;
+ int color, gray;
+ int cmapcall;
+ int nbits;
+} inferno_device;
+static const gx_device_procs inferno_procs =
+ { inferno_open, ((void *)0), ((void *)0), gdev_prn_output_page, inferno_close, inferno_rgb2cmap, inferno_cmap2rgb, ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), gdev_prn_get_params, gdev_prn_put_params, ((void *)0), ((void *)0), ((void *)0), ((void *)0), gx_page_device_get_page_device, ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0), ((void *)0) };
+inferno_device gs_inferno_device =
+{ sizeof(gx_device_printer), &inferno_procs, "inferno", 0 , &st_device_printer, 0 , 0 , { 0 } , 0 , 0 , 0, {3 , 3 , ( (3) >= 4 ? GX_CINFO_POLARITY_SUBTRACTIVE : GX_CINFO_POLARITY_ADDITIVE ) , 16 , ((3) == 3 ? 0xff : (3) - 1) , 255 , 255 , 0 , 0 , { 1, 1 } , GX_CINFO_UNKNOWN_SEP_LIN , { 0 } , { 0 } , { 0 } , ( (3) == 1 ? "DeviceGray" : ((3) == 3 ? "DeviceRGB" : "DeviceCMYK") ) , GX_CINFO_OPMODE_UNKNOWN , 0 }, { ((gx_color_index)(~0)), ((gx_color_index)(~0)) }, (int)((float)(85) * (100) / 10 + 0.5), (int)((float)(110) * (100) / 10 + 0.5), 0 , { (float)(((((int)((float)(85) * (100) / 10 + 0.5)) * 72.0 + 0.5) - 0.5) / (100)) , (float)(((((int)((float)(110) * (100) / 10 + 0.5)) * 72.0 + 0.5) - 0.5) / (100)) }, { 0, 0, 0, 0 } , 0 , { 100, 100 } , { 100, 100 }, {(float)(-(0) * (100)), (float)(-(0) * (100))}, {(float)((0) * 72.0), (float)((0) * 72.0), (float)((0) * 72.0), (float)((0) * 72.0)}, 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , {((bool)0)} , { gx_default_install, gx_default_begin_page, gx_default_end_page }, { 0 }, { 0 }, { inferno_print_page, gx_default_print_page_copies, { gx_default_create_buf_device, gx_default_size_buf_device, gx_default_setup_buf_device, gx_default_destroy_buf_device }, gx_default_get_space_params, gx_default_start_render_thread, gx_default_open_render_device, gx_default_close_render_device, gx_default_buffer_page }, { 10000000L, 4000000L, { 0, 0, 0 }, 0 , BandingAuto }, { 0 }, 0 , 0 , 0 , 0 , -1, 0 , 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, { 0 }
+};
+static gx_color_index
+inferno_rgb2cmap(gx_device *dev, const gx_color_value cv[]) {
+ int shift;
+ inferno_device *bdev = (inferno_device*) dev;
+ int nbits = bdev->nbits;
+ int mask = (1<<nbits)-1;
+ gx_color_value red, green, blue;
+ red = cv[0]; green = cv[1]; blue = cv[2];
+ if((sizeof(gx_color_value) * 8) > nbits) {
+ shift = (sizeof(gx_color_value) * 8) - nbits;
+ red >>= shift;
+ green >>= shift;
+ blue >>= shift;
+ } else if((sizeof(gx_color_value) * 8) < nbits) {
+ shift = nbits - (sizeof(gx_color_value) * 8);
+ red <<= shift;
+ green <<= shift;
+ blue <<= shift;
+ }
+ red &= mask;
+ green &= mask;
+ blue &= mask;
+ if(red == green && green == blue && red != 0 && red != mask) {
+ if(red == 5 || red == 10) {
+ if(bdev->ldepth < 1)
+ bdev->ldepth = 1;
+ } else {
+ if(bdev->ldepth < 2)
+ bdev->ldepth = 2;
+ }
+ } else
+ bdev->ldepth = 3;
+ bdev->cmapcall = 1;
+ return ((((blue<<4)|green)<<4)|red);
+}
--- /dev/null
+typedef struct gs_memory_struct_type_s gs_memory_struct_type_t;
+typedef struct gs_matrix_s gs_matrix;
+typedef unsigned long long gx_color_index_data;
+typedef gx_color_index_data gx_color_index;
+typedef unsigned short gx_color_value;
+typedef struct gx_device_s gx_device;
+typedef struct gs_param_list_s gs_param_list;
+typedef struct gx_device_anti_alias_info_s
+{
+ int text_bits;
+ int graphics_bits;
+}
+gx_device_anti_alias_info;
+typedef enum
+{
+ GX_CINFO_UNKNOWN_SEP_LIN = -1, GX_CINFO_SEP_LIN_NONE = 0, GX_CINFO_SEP_LIN
+}
+gx_color_enc_sep_lin_t;
+typedef struct gx_device_color_info_s
+{
+ int max_components;
+ gx_device_anti_alias_info anti_alias;
+ gx_color_enc_sep_lin_t separable_and_linear;
+ unsigned char comp_shift[(8 * 8)];
+ unsigned char comp_bits[(8 * 8)];
+ int black_component;
+}
+gx_device_color_info;
+typedef struct gx_device_procs_s gx_device_procs;
+typedef struct gs_devn_params_s gs_devn_params;
+struct gx_device_procs_s
+{
+ int (*open_device) (gx_device * dev);
+ void (*get_initial_matrix) (gx_device * dev, gs_matrix * pmat);
+ int (*sync_output) (gx_device * dev);
+ int (*output_page) (gx_device * dev, int num_copies, int flush);
+ int (*close_device) (gx_device * dev);
+ gx_color_index (*map_rgb_color) (gx_device * dev,
+ const gx_color_value cv[]);
+ int (*map_color_rgb) (gx_device * dev, gx_color_index color,
+ gx_color_value rgb[3]);
+ gs_devn_params *(*ret_devn_params) (gx_device * dev);
+};
+gx_device *gx_page_device_get_page_device (gx_device * dev);
+typedef struct gx_device_printer_s gx_device_printer;
+struct gx_device_printer_s
+{
+};
+extern const gs_memory_struct_type_t st_device_printer;
+int gdev_prn_output_page (gx_device * dev, int num_copies, int flush);
+int gdev_prn_get_params (gx_device * dev, gs_param_list * plist);
+int gdev_prn_put_params (gx_device * dev, gs_param_list * plist);
+static gx_color_index inferno_rgb2cmap (gx_device * dev,
+ const gx_color_value cv[]);
+static int inferno_cmap2rgb (gx_device * dev, gx_color_index color,
+ gx_color_value rgb[3]);
+static int inferno_open (gx_device * dev);
+static int inferno_close (gx_device * dev);
+typedef struct inferno_device_s
+{
+ int retained;
+ int is_open;
+ gx_device_color_info color_info;
+ gx_device_procs orig_procs;
+ int ldepth;
+ int cmapcall;
+ int nbits;
+}
+inferno_device;
+static const gx_device_procs inferno_procs = {
+ inferno_open, ((void *) 0), ((void *) 0), gdev_prn_output_page,
+ inferno_close, inferno_rgb2cmap, inferno_cmap2rgb, ((void *) 0),
+ ((void *) 0), ((void *) 0), ((void *) 0), ((void *) 0), ((void *) 0),
+ gdev_prn_get_params, gdev_prn_put_params, ((void *) 0), ((void *) 0),
+ ((void *) 0), ((void *) 0), gx_page_device_get_page_device, ((void *) 0),
+ ((void *) 0), ((void *) 0), ((void *) 0), ((void *) 0), ((void *) 0),
+ ((void *) 0), ((void *) 0), ((void *) 0), ((void *) 0), ((void *) 0),
+ ((void *) 0), ((void *) 0), ((void *) 0), ((void *) 0), ((void *) 0),
+ ((void *) 0), ((void *) 0), ((void *) 0), ((void *) 0), ((void *) 0),
+ ((void *) 0), ((void *) 0), ((void *) 0)
+};
+inferno_device gs_inferno_device = {
+ sizeof (gx_device_printer), &inferno_procs, "inferno", 0,
+ &st_device_printer, 0, 0, {
+ 0}
+};
+static gx_color_index
+inferno_rgb2cmap (gx_device * dev, const gx_color_value cv[])
+{
+ inferno_device *bdev = (inferno_device *) dev;
+ int nbits = bdev->nbits;
+ int mask = (1 << nbits) - 1;
+ gx_color_value red, green, blue;
+ if (red == green && green == blue && red != 0 && red != mask)
+ {
+ }
+ else
+ bdev->ldepth = 3;
+ bdev->cmapcall = 1;
+ return ((((blue << 4) | green) << 4) | red);
+}
--- /dev/null
+typedef struct gs_memory_struct_type_s gs_memory_struct_type_t;
+typedef struct gs_matrix_s gs_matrix;
+typedef unsigned long long gx_color_index_data;
+typedef gx_color_index_data gx_color_index;
+typedef unsigned short gx_color_value;
+typedef struct gx_device_s gx_device;
+typedef struct gs_param_list_s gs_param_list;
+typedef struct gx_device_anti_alias_info_s {
+ int text_bits;
+ int graphics_bits;
+} gx_device_anti_alias_info;
+typedef enum {
+ GX_CINFO_UNKNOWN_SEP_LIN = -1
+} gx_color_enc_sep_lin_t;
+typedef struct gx_device_color_info_s {
+ int max_components;
+ gx_device_anti_alias_info anti_alias;
+ gx_color_enc_sep_lin_t separable_and_linear;
+ unsigned char comp_shift[(8 * 8)];
+ unsigned char comp_bits[(8 * 8)];
+ int black_component;
+} gx_device_color_info;
+typedef struct gx_device_procs_s gx_device_procs;
+typedef struct gs_devn_params_s gs_devn_params;
+struct gx_device_procs_s {
+ int (*open_device) (gx_device * dev);
+ void (*get_initial_matrix) (gx_device * dev, gs_matrix * pmat);
+ int (*sync_output) (gx_device * dev);
+ int (*output_page) (gx_device * dev, int num_copies, int flush);
+ int (*close_device) (gx_device * dev);
+ gx_color_index(*map_rgb_color) (gx_device * dev,
+ const gx_color_value cv[]);
+ int (*map_color_rgb) (gx_device * dev, gx_color_index color,
+ gx_color_value rgb[3]);
+ gs_devn_params *(*ret_devn_params) (gx_device * dev);
+};
+gx_device *gx_page_device_get_page_device(gx_device * dev);
+typedef struct gx_device_printer_s gx_device_printer;
+struct gx_device_printer_s {
+};
+extern const gs_memory_struct_type_t st_device_printer;
+int gdev_prn_output_page(gx_device * dev, int num_copies, int flush);
+int gdev_prn_get_params(gx_device * dev, gs_param_list * plist);
+int gdev_prn_put_params(gx_device * dev, gs_param_list * plist);
+static int inferno_cmap2rgb(gx_device * dev, gx_color_index color,
+ gx_color_value rgb[3]);
+static int inferno_open(gx_device * dev);
+static int inferno_close(gx_device * dev);
+typedef struct inferno_device_s {
+ int retained;
+ int is_open;
+ gx_device_color_info color_info;
+ gx_device_procs orig_procs;
+ int ldepth;
+ int cmapcall;
+} inferno_device;
+static gx_color_index inferno_rgb2cmap(void *dev)
+{
+ inferno_device *bdev;
+ bdev = (inferno_device *) dev;
+ int mask;
+ gx_color_value red;
+ gx_color_value green;
+ gx_color_value blue;
+ if (red == mask)
+ bdev->ldepth = 3;
+ bdev->cmapcall = 1;
+ return mask;
+}
+static const gx_device_procs inferno_procs = {
+inferno_rgb2cmap
+};
+inferno_device gs_inferno_device = {
+&inferno_procs
+};
--- /dev/null
+#!/bin/bash
+#
+# Run like:
+# multidelta -level=# ./reduce-ice $FILE
+# levels: 0 0 1 1 2 2 10 10
+#
+
+FILE=gdevifno.i
+CC=sh4-unknown-linux-gnu-gcc
+CFLAGS="-O2 -pipe"
+STRING="unable to find a register to spill in class .R0_REGS"
+
+$CC -pipe -c $CFLAGS $FILE 2>&1 | grep "$STRING"